KRİPTOLOJİ Kriptografi, kriptoloji, kriptanaliz nedir ? ve kriptolojinin tarihçesi: Yunanca Kryptos Logos (Gizli kelime) tamlamasından gelen Kriptoloji, toplumda bir haberleşmenin gizli tutulabilmesi üzerinde çalışan bilim olarak düşünülse de aslında anlamı daha geniştir, çözülebilmesi çok zor matematik problemleri ve mekanizmaları inceleyen Kriptografiyi ve bu problemleri ve mekanizmaları çözmeyi hedefleyen ve saldırıları belirleyen Kriptoanalizi içerir. Şifreleme (Encryption), Veriyi bir anahtarla şifrelemeye verilen addır. Hedef, veriyi, gerekli anahtar olmadan çözülebilmesi imkansıza mümkün olduğunca yakın şekilde kodlamaktır. Şifre Çözme ise (Decryption) şifrelenmiş veriyi çözüp eski haline getirme işlemidir. Kriptolojide en çok kullanılan kelimelerden olan anahtar ise bir metni şifrelemekte veya açmakta kullanılan veri parçasına (sayı, kelime veya herhangi bir sayısal veri parçası) verilen isimdir. Başlangıcı itibariyle daha çok askeri uygulamalarda kullanıl¬mış. Günümüzde ise İnternet uygulama¬larının hız kazanması kriptografinin Web güvenliği alanında uygulanabilirliğini kanıtladı. Özellikle elektronik ticaret, online banka işlemleri gibi birçok dina¬mik uygulamada bilginin saklanması şart. Kriptografi bu anlamda en uygun teknikleri öneriyor. Verinin şifrelenmesi nasıl yapılıyor? Ori¬jinal verinizin şifrelenmesi için bir algorit¬maya, bir de anahtara ihtiyacınız var. Al¬goritma aslında hangi şifreleme yöntemi¬ni kullandığınızı gösteriyor. Kriptografi al¬goritmaları kabaca iki grupta toplanabilir: Kısıtlı algoritmalar, anahtar tabanlı algo¬ritmalar. Kısıtlı algoritmaların güvenilirliği algoritmanın kendisi saklı kaldığı müddetçe geçerli. Anahtar tabanlı algoritmalarda ise tam tersine algoritmanın yapısı saklı değil. Herkes tarafından bilinebilir. Saklı olan şifreleme için kullanılan anahtarın kendisi. Algoritma açıkça bilinse de anah¬tar gizli olduğu için algoritma çıktısı (şif¬relenmiş veri) gizli olmuş oluyor. Kısıtlı al¬goritmalar büyük işletmeler için uygun bir şifreleme yöntemi değil. Kullanılan algo¬ritmayı bilen birinin işten ayrılması veya kazara algoritmanın açığa çıkması duru¬munda sistemin yeni bir algoritmaya göre yeniden güvenliğinin sağlanması gerekli. Bu da işletmenin büyüklüğüyle orantılı olarak artan, başlı başına hacimli bir iş. Bu nedenle işletmeler güvenliğin sağlan¬masında anahtar tabanlı algoritmaları ter¬cih etmekteler. Anahtar tabanlı algoritmalarda bir veri şifreleneceği zaman şifreleme anahtarı kullanılır. Şifre çözüleceği zaman ise kar¬şılık gelen şifre çözücü anahtar kullanılır. Bu anahtarın gizli tutulması son derece kritik çünkü bu anahtarı eline geçiren her¬hangi biri bütün verileri/mesajları çözebi¬lecektir. Esasen şifreleme ve şifre çözme işlemleri oldukça kolay. Zor olan ise anahtarların güvenli bir şekilde saklanıp, gerekli olduğunda yine güvenli bir şekilde ilgili şahıslara gönderilmesi. Kriptografi literatüründe değişik şifre¬leme algoritmaları mevcut. Bunla¬r: SİMETRİK ANAHTAR ALGORİTMALARI Bu tür şifrelemede şifreleme ve şifre çözme için aynı anahtar kullanılır. Anahtarın saklı tutulmasından ötürü bu tür algoritmalara "gizli anahtar" algo¬ritmaları da denilmekte. Bu algoritma¬ların avantajı basit ve kolay uygulana¬bilir oluşu. Aynı zamanda bunlar hızlı ve verimli. Ancak bu algoritmaların en zayıf tarafı şifreleme ve şifre çözme için aynı anahtarın kullanılıyor olması. Tek bir anahtarın güvenliği nasıl sağlanabi¬lir? Diğer şahıslara bu anahtar güvenli olarak nasıl gönderilebilir? Kendi içinde tekrar eden bir durum, ilaveten diğer şahısların anahtarı gizli tutacağından nasıl emin olabilirsiniz? Dolayısıyla bu algoritmalar daha çok paylaşımın ol¬madığı durumlarda uygun. Bilgisayarı¬nızdaki dosyaların veya sabit diskinizin şifrelenmesi gerektiğinde rahatlıkla kullanılabilir. Literatürde bilinen bazı simetrik anah¬tar algoritmaları şunlar: DES (Data Encryption Standard): IBM tarafından geliştirilen DES 1977 yılında Amerikan hükümeti tarafından resmi bir standart olarak kabul edildi. En meşhur kriptografi algoritmalarından olan DEŞ yayınlandığı günden itibaren sayısız sal¬dırılara uğradı. Bu girişimlerden bir kıs¬mı başarılı oldu. Şifreleme için DEŞ 56 bit anahtar kullanıyor. Kaynak kodu üc¬retsiz olarak temin edilebilir. IDEA (International Data Encryption Algorithm): Bu yöntem DES’e kıyasla iki kat daha hızlı ve oldukça yüksek güven¬lik sağlıyor. Şimdiye dek üretilen en hızlı ve en güvenilir algoritma olduğu düşünü¬lüyor. 128 bit anahtar kullanıyor. Kaynak kodu ücretsiz olmasına rağmen ticari amaçlı kullanımlar için lisans gerekiyor. RC5 (Rivest Cypher version 5): RSA gru¬bu tarafından geliştirilmiş anahtar uzun¬luğu değişken bir yöntem. Anahtar uzun¬luğu 56, 64 veya 128 bit olabilir. Kaynak kodu ücretsiz olmasına rağmen ticari amaçlı kullanımlar için lisans gerekiyor. Blowfish: Bruce Schneier tarafından yazılmış algoritma orta düzeyde hıza sa¬hip. Güvenilirliği ise yüksek. Anahtar uzunluğu 32 ile 448 bit arasında değişi¬yor. Ücretsiz olarak kullanılabilir. ASİMETRİK ANAHTAR ALGORİTMALARI Bu algoritmalara "açık anahtar algoritma¬ları" da deniliyor. Anahtarın güvenlik problemi bu algoritma sayesinde çözülü¬yor. Çünkü şifreleme için ve şifre çözme için iki ayrı anahtar kullanılıyor. Şifreleme için kullanılan anahtar açık, alenen bili¬nen bir anahtar (public key). Ancak şifre çözmede kullanılan anahtar ise gizli (pri-vate key). Gizli anahtar kimseye verilmi¬yor. Açık anahtar ise bilakis rahatlıkla herkese dağıtılabiliyor. Her iki anahtar da ne kadar uzun olursa şifrenin kırılma ih¬timali o kadar zayıflıyor. Algoritmanın bir kısıtlayıcı yönü fazla CPU işlemi gerektir¬mesi. CPU yoğun başka işlerin tamamlan¬ması gerektiği zamanlarda ciddi perfor¬mans problemlerine sebebiyet verebilir. Asimetrik anahtar algoritmaları daha çok verinin paylaşılması veya verinin netvvork üzerinde dolaşması gereken ortamlarda veriyi şifreleme amacıyla kulla¬nılmakta. Algoritmanın ardında yatan şif¬releme mantığına bir örnekle bakalım: Varsayalım bir iş yerinde bu tür bir şifre¬leme uygulanmakta. Bu durumda herke¬sin kendine ait bir açık ve gizli anahtarı olacaktır. Ayrıca herkes başkalarının açık anahtarlarını da bilecek. Hattâ bu, liste halinde ellerinin altında olacak. Diyelim ki Bay X, Bay Y’ ye bir mesaj göndermek istiyor. Bu durumda X, Y'nin açık anahta¬rına listeden bakacak, mesajı Y'nin açık anahtarıyla şifreleyecek ve gönderecek. Mesaj Y'nin eline ulaştığında Y, kendi gizli anahtarını kullanarak mesajı açabi¬lecek. Bu, son derece güvenli bir yön¬tem. Çünkü Y'nin gizli anahtarı sadece Y'de bulunduğundan başkalarının mesa¬jı açması mümkün değil. Tabii Y gizli anahtarını kaybetmediği sürece... En meşhur asimetrik anahtar algorit¬ması Ron Rivest, Adi Shamir ve Len Adleman tarafından tasarlanmış ve i977'de patenti alınmış olan RSA. Algo¬ritma, tasarımcılarının ismini taşıyor. KARIŞIK ALGORİTMALAR Açık anahtar algoritmalarının nispeten yavaş olduklarından bahsetmiştik. Özellikle büyük dosyaların bu yöntemle şifrelenmesi söz konusuysa, iş içinden çıkılmaz bir hal alabiliyor. Öyle ki, yazılım açısından bakıldığında DEŞ, RSA'den yaklaşık 100 kat; donanım açısından 1000 kat daha hızlı. Karışık algoritmalar her iki yöntemin artı yönlerinden yararlanmayı hedefli¬yor. Orijinal veri simetrik anahtar kulla¬nılarak şifreleniyor. Daha sonra simetrik anahtarın kendisi alıcının açık anahtarı kullanılarak şifreleniyor ve mesajın so¬nuna ekleniyor. Şifre çözme işlemi sıra¬sında alıcının gizli anahtarı kullanılarak öncelikle simetrik anahtar elde ediliyor. Ardından simetrik anahtarla mesajın kendisi çözülüyor. Bu yöntemi kullanan tekniklerden biri PGP (Pretty Good Privacy). PGP işin simetrik kısmı için IDEA, asimetrik kısmı için RSA algoritması kullanıyor. Gizli anahtarları güvenli bir şekilde dağıtan bir diğer teknik ise Diffie-Hellman protokolü. İletişim Ortamı: İletişim kurmak isteyen iki kişi, bunu bir ortamın fiziksel değişkenlerini belli kurallara göre değiştirerek yaparlar. Örneğin iki kişi yüz yüze konuştuğunda, ortam hava, fiziksel değişken ise basınçtır. Çoğu zaman, iletişim ortamına uyguladığımız değişikliklerin hangi alıcılar tarafından dinlendiğini bilemeyiz. Birisinden mektup aldığımızda, mektubun açılıp başkaları tarafından okunup okunmadığından emin olamayız. Elektronik mektuplar ise hedeflerine ulaşmak için onlarca bilgisayardan geçtiğine göre, mektuplarımızın gizliliği bu bilgisayardan sorumlu kişilerin insafına kalmıştır. Doğal olarak bilgisayar ortamındaki verilerin okunup okunmadığına dair hiç bir şey bilmemiz mümkün değildir. Ve daha da önemlisi, aldığımız bir elektronik mektubun gerçekte kimden geldiğini ve yolda değiştirilip değiştirilmediğini öğrenmemiz de son derece zordur. Dolayısıyla iletişimin gizliliğini ve güvenliğini sağlamak için tek çare, bu işlerini ciddiye alan bütün kurum ve kuruluşlar gibi şifreleme kullanmaktır. Şifre yazım ile ilgili çoğu yazılarda olduğu gibi, Ayşe ve Burak isimli iki kişinin (A ve B) gizli iletişim kurmak istediklerini varsayalım, ve temel şifreleme yöntemlerini inceleyelim. Olayı basitleştirmek için, Ayşe'nin Burak'a elektronik posta aracılığı ile bir metin ulaştırmak istediğini düşüneceğiz. Gizli Yöntem Anlaşması: A ve B mektuplarını diğerleri için anlaşılmaz kılacak bir yöntem üzerine gizlice anlaşırlar. Örneğin, bütün kelimelerin tersten yazılacağına (AHMET yerine TEMHA), veya her harften sonra rasgele bir harf konulacağı kararlaştırılabilir (AHMET yerine AZHIMPENTC). Yöntemin bulunması durumunda bütün iletişimler çözülecektir. Farklı kişilerle iletişim kurmak istenirse, her kişi ile farklı yöntemler üzerinde anlaşılması gerekir. Bir çok kişinin şifreyi bilmesi gerekiyorsa, güvenlik için sık sık yöntemin değiştirilmesi gerekebilir. Yeni yöntemler bulmak ise sanıldığından daha zordur. Bu aşamada, temel işleyişi sabit olan ama parametrelenebilir bir yöntem gerekir. Artık birden fazla kişi ile temel mekanizma üzerinde, gizliliğe gerek duymadan anlaşabilirsiniz; gizli olarak anlaşmanız gereken tek kısım, şifreleme yönteminin değişken kısmıdır. Bu değişken kısmı belirleyen şeye şifreleme anahtarı denir. Bu çeşit yöntemlere Gizli Anahtar Anlaşmalı Açık Yöntemler tanımı getirilebilir. Bunlara simetrik şifre diyeceğiz. Bir benzetme yapacak olursak, Gizli Yöntem Anlaşması şifresi fabrikada sabitleştirilmiş bir kasaya; Gizli Anahtar Anlaşmalı şifreler ise şifresi sahibi tarafından değiştirilebilen daha gelişmiş kasalara benzetilebilir. Simetrik Şifreler (Açık Yöntemli Gizli Anahtar Anlaşmalı Şifreler): Düşünülebilecek en basit simetrik şifrelerden biri Sezar Şifresidir. Eski Roma İmparatoru Sezar'ın kullandığı bu şifre bütün kriptolojiye giriş yazılarının standart örneğidir. Sezar Şifresini kullanmanın basit bir yolu, alfabenin bütün harflerini bir kağıt şeridi üzerine yazıp, şeridin başını sonuna yapıştırmaktır. Gizli Anahtar olarak (veya şifrenin değişkeni) olarak, bir ile alfabemizdeki harf sayısı eksi bir arasında bir n sayısı seçilir. Metinimizi şifrelemek için, harfleri teker teker alırız; şeridin üzerinde o harfin yerini bulup, sağa doğru n tane harf atlarız; şifreli metinimizde ise o harfin yerine bulduğumuz yeni harfi buluruz. Şifreyi çözmek için, aynı işlemi, şeridi aksi yönde çevirerek gerçekleştiririz. Tabi şifreyi çözebilmek için, Ayşe ile Burak’ın birbirlerine gizlice n sayısını iletmeleri gerekir. Örnek olarak latin alfabesiyle, n=13 parametresiyle şifrelenmiş bir Sezar Şifresini şekil’de görebilirsiniz. 0 1 2 01234567890123456789012345 | ABCDEFGHIJKLMNOPQRSTUVWXYZ ^ çözme yönü şifreleme yönü v NOPQRSTUVWXYZABCDEFGHIJKLM | | n=13 Açık Metin: "SEZAR MEZAR TURK POLISI YAKALAR" Şifrelenmiş Metin: "FRMNE ZRMNE GHEX CBYVFV LNXNYNE" Şekil. Örnek Sezar şifresi uygulaması Sezar Şifresi tek alfabeli yer değiştirme veya permütasyon şifreleri arasında değerlendirir (ing. monoalphabetic substitution cipher); Vigenere şifresi onun çok alfabeli bir çeşididir. Kullanılan simetrik şifrelerin çoğu parametrelenebilir bir permütasyon olarak değerlendirilebilir. Anahtarı Bulmak: Sezar Şifresini çözmek için tek yol kullanılan n sayısını bulmak olsaydı, işimiz yine de pek zor olmazdı, çünkü n sayısının alabileceği farklı değerler çok, çok küçük: alfabemizdeki harf sayısından bir daha eksik. Hepsini teker teker elle deneyebiliriz. Bilgisayara çözdürmek sadece bir kaç mikro saniye alır. Simetrik bir şifreyi çözmek için anahtar değerlerini teker teker deneme yöntemine, İngilizce "Brute Force Search", Fransızca "Recherche Exhaustive" denir. Türkçe buna Deneme-Yanılma yöntemi diyebiliriz. Deneme-Yanılma yönteminde, n değer alabilen anahtarlar arıyorsak, bir tanesi bulabilmek için ortalama n/2 değer denememiz gerekir. Anahtar Uzunluğu: Simetrik Şifreleri değerlendirirken en önemli değişkenlerden biri Anahtar Uzunluğu, veya anahtarın alabileceği farklı değerlerin sayısı. Anahtarımız n farklı değer alabiliyorsa, 0 ile n-1 arasında bir sayıyla eşdeş olduğunu düşünmek işimizi kolaylaştıracaktır. Sezar Şifresini için (Türk alfabesini kullanırsak) n=28 olacaktır. Anahtar uzunluğu ifade edilirken n sayısı doğrudan kullanılmaz, onun yerine o tamsayıyı bilgisayar belleğinde saklayabilmek için gerekli olan bit sayısı kullanılır. Bu o sayının 2 tabanındaki logaritmasına eşittir. Eklenen her bit, n sayısını iki ile çarpar. Örneğin, 16 bitlik bir anahtar, 216=65536 değer alabilir. ABD, anahtar uzunluğu 40 bit'i geçen şifreleme algoritmaları içeren yazılımların ihracını yasaklamıştır. 40 bitlik bir anahtar için n=240 veya n=1 099 511 627 776 (bir trilyon doksan dokuz milyar beş yüz on bir milyon altı yüz yirmi yedi bin yedi yüz yetmiş altı). Bu sayı size çok gelebilir ama 1995'de yapılan bir yarışmada RC4 algoritması ile 40 bitlik bir anahtarla şifrelenmiş WWW üzerinden yapılan bir (boş) kredi kartı işlemi elinde sadece mütevazı bir bilgisayar laboratuarı olan bir öğrenci tarafından 3 buçuk saatte bulundu. Kaç bitlik bir anahtar güvenlidir ?: Anahtarın deneme-yanılma yöntemiyle bulunmasını engellemek için, bugünkü süper bilgisayarlardan milyonlarca kat daha hızlı çalışan bir bilgisayarla bile milyarlarca yıl sürmesi için, yaklaşık 100 bitlik bir anahtar uzunluğunun uygun olduğu düşünülüyor. PGP'nin de kullandığı IDEA şifreleme algoritması, 128 bitlik anahtar uzunluğu kullanıyor. Aşağıdaki tabloda farklı anahtar boyları için, saniyede bir milyon, bir milyar ve bir trilyon şifre deneyebilen bilgisayarlar için kırma zamanları verilmiştir. Anahtar Uzunluğu n 2n 106 şifre/s hızında ortalama çözme süresi 109 şifre/s hızında 1012 şifre/s hızında 32 bit ~4x109 36 dak 2.16 s 2.16 ms 40 bit ~1012 6 gün 9 dak 1 s 56 bit ~7.2x1016 1142 yıl 1 yıl 2 ay 10 saat 64 bit 1.8x1019 292 000 yıl 292 yıl 3.5 ay 128 bit 1.7x1038 5.4x1024 yıl 5.4x1021 yıl 5.4x1018 yıl Kriptanaliz, veya "Anahtarı Bulmadan Şifre Nasıl Çözülür ?" : Türkçe şifre çözüm diyebileceğimiz kriptanaliz, şifre bilimin (kriptolojinin) temel etkenlik alanıdır. Şifre yazımda, şifre çözümde 1940-1944 Dünya Paylaşım Savaşında oldukça gelişmiştir. Temel olarak, şifre çözümün amacı, kullanılan şifrenin zayıflıklarından ve şifrelenen metin hakkındaki bilgilerden yola çıkarak bütün anahtarları deneme zahmetinden kurtulmaktır. Kriptanalist, veya şifre çözücü düşmanın şifrelerini çözmekle uğraşan teknisyendir. Kriptolog ise şifre bilimcidir. Nazilerin 1940-1944 savaşında kullandıkları ünlü Enigma şifreleme makinesi. 116 bitlik bir anahtar uzunluğuna sahipti. Yani bugünün sağlan şifrelerinin kullandıkları boyda idi. Buna rağmen, savaşta şifre bilimcilik yapan bilgisayar biliminin babası İngiliz Alan Turing, Enigma şifresinin yapısal zayıflıklarını kullanarak, Colossus isimli ilk tüplü bilgisayar yardımıyla da Nazilerin iletişimlerini çözmeyi başardı (Colossus'ün bugünün adi dört işlemli hesap makinelerinden bile kat kat daha yavaş olduğunu göz ardı etmemek gerek). Sezar Şifresi Nasıl Çözülür: Sezar şifresi basit bir alfabe değiştirme (ing. substitution) şifresidir. Alfabedeki harflerin yerlerini rasgele değiştirerek daha güçlü bir şifre yapılabilir. Bu durumda n alfabedeki harf sayısı ise, n! yani 28! ~= 3x1029 değişik şifre alfabesi olur. Bu alfabelerden bir tanesini seçecek bir anahtarın uzunluğu ise log2 28! ~= 98 bit olması gerekir. Yani deneme-yanılma yöntemiyle hangi alfabenin kullanıldığını bulmak hemen hemen olanaksızdır. Buna rağmen, "alfabe değiştirme şifresinin şifre çözümü, özellikle harf sayısı görece az olan Latin alfabelerinde çok basittir. Herhangi bir Türkçe, Fransızca veya İngilizce (veya Almanca veya İtalyanca) metin alıp hangi harfin ne kadar kullanıldığına bakarsak, harf kullanım dağılımının çok eşitsiz olduğunu görürüz. Latin alfabesine çevrilmiş bir Türkçe metinden çıkartılan istatistiklere göre: Harf Adet Sıklık (%) Boşluk 5373 16.88 i (ı, î) 4024 12.64 e (ê) 3201 10.06 a (â) 2805 8.81 l 2258 7.09 n 2112 6.63 r 2023 6.35 m 1298 4.08 s (ş) 1237 3.88 u (ü) 1217 3.82 t 1216 3.82 k 1140 3.58 o (ö) 899 2.82 d 881 2.77 g (ğ) 802 2.52 y 680 2.14 Diğer 666 2.09 Toplam 31382 100.00 Tablo. Türkçe harf frekansları. Elimize alfabe değiştirme yöntemiyle şifrelenmiş bir metin gelirse, yapacağımız ilk iş metnin içerdiği bütün harflerin (veya şekillerin) kullanım istatistiğini hesaplamak olmalı. Ondan sonra, metnin hangi dilde yazıldığına dair tahminler yürütüp, o dilin harf kullanım sıklıklarını hesaplayıp, ikisini karşılaştırarak ve biraz tahmin yürüterek kolayca şifreyi çözebiliriz. Simetrik Şifreleme Algoritmalarının Güvenilirliği: Simetrik şifreleme algoritmaların tasarımı hala önemli ölçüde deneyseldir. Bu konuda yapılan çalışmalar grup teorisi çerçevesinde ilerlemektedir; iyi bir şifrenin göstermesi gerektiği düşünülen özellikler saptanmaya çalışılmaktadır. Öte yandan Şifre çözüm konusundaki araştırmaların büyük çoğunluğu devletler tarafından yapılıyor. Örnek olarak ABD'nin şifre bilim üniversitesi denilebilecek NSA (National Security Agency veya Ulusal Güvenlik Kurumu) dünyanın en çok matematikçi istihdam eden kurumu. Devletler, matematikçilerinin şifre çözüm ve şifre tasarımı hakkında bulduklarını, üstünlüklerini koruyabilmek için saklı tutuyorlar (bu elbette bütün teknolojiler için geçerli). Dolayısıyla kamuda bilinen şifreleme algoritmalarının güvenilirliğini değerlendirmek için sivil şifre bilimcilerin sınırlı kaynaklarla yaptıkları çözme girişimlerinden başka bilgi kaynağımız yok. Şifre bilimciler bir algoritmanın güvenilirliği hakkında 10 yıldan daha uzun bir süre için tahmin yürütmenin epey zor olduğunu ifade ediyorlar. Sonuçta şifre bilim matematiktir ve matematikte beklenmedik sonuçlar yok değildir. Tek Kullanımlık Şerit: Bütün bunlara rağmen kesin güvenilirliğinin kanıtı çok basit olan bir şifreleme yöntemi vardır. Bu şifreleme yönteminin kullanımını epey zorlaştıran şey aynı zamanda onun güvenliğinin de teminatıdır. İngilizcesi "One-Time Pad" olan tek kullanımlık şerit, yollanacak mesaj kadar uzun olan bir anahtardır. Bu şeritteki harflerin rasgele seçilmiş olması gerekmektedir. Şifreleme işleminde, mesajdaki her harf ve o harfin şeritteki karşı gelen harfi sayıya çevirilip toplanılır. Harfler sayıya çevirilirken alfabedeki sıra numaraları kullanılabilir. Toplam alfabedeki harf sayısını aşarsa alfabedeki harf sayısı toplamdan çıkartılır. Elde edilen sayı ya doğrudan yazılır veya bir harfe çevrilir. Şifreyi çözmek için, aynı anahtar şerit ile işlem tersinden yapılır; bu sefer şeritteki harfler şifreli mesajdaki harflerden çıkartılır, toplam sıfırın altına düşerse alfabedeki harf sayısı eklenir. Yani matematiksel olarak n alfabedeki harf sayısı ise modulo n çıkarma ve toplama işlemleri gerçekleştirilir. Şifresiz Metin: BUMESAJTEKKULLANIMLIKSERITILESIFRELENMISTIR Şerit: DOKPEZRHOCVSVMLNDTKBJTSDSULEPLSSZCHEBZMQCHJ + (mod 26) Şifreli Metin: EIWTWZAASMFMGXLALFVJTLWUANTPTDAXQGSIOLUIVPA = Şekil. Örnek Tek Kullanımlık Şerit şifresi uygulaması Şeritteki harflerin rasgele seçilmiş olması çok önemlidir. Harfleri rasgele seçilmiş bir şerite, harfleri düzenli olan bir mesaj eklersek, elde edeceğimiz harfler gene rasgele olacaktır. Dolayısıyla bu şifreli mesajı çözmek için hangi şeridin kullanıldığını tahmin etmekten başka çaremiz yoktur. Şerit ile mesaj aynı uzunlukta olduğuna göre (bu da bir şeridin sadece bir kere kullanılmasını gerektirir) bütün şeritleri denersek, o uzunluktaki bütün mesajları da elde ederiz. Dolayısıyla tek kullanımlık şeridin güvenilirliği kanıtlanmıştır. Şeritle şifrelenmiş mesajdan sızan tek bilgi, onun varlığı ve uzunluğudur. Bu tür şeritler eskiden tehlike anında hızlıca yakılabilmek için selülozdan imal edilirmiş. Elçilikler ülkeleri ile iletişimlerinde güvenilirliği sağlayabilmek için bu yöntemleri kullanırlarmış; şeritler diplomatik kurye ile getirilirmiş. Tek Kullanımlık Şeritin oldukça hantal bir kullanıma sahip olduğunu görüyoruz. Açık Anahtar Kriptografisi: Tek Kullanımlık Şerit, simetrik şifrelerin temel aksaklığını yoğunlaştırarak sunmaktadır: anahtar yönetimi. Bütün simetrik şifrelerde anahtarların gizli ve güvenli bir kanaldan iletilmesi gerekmektedir. Bunun nedeni şifreleme anahtarının çözme anahtarıyla aynı olmasıdır. 1978 yılında Diffie ve Hellman'ın ilk asimetrik şifreleme yöntemini çıkarmalarıyla beraber şifreyazım'da yeni bir dönem başlamıştır. Asimetrik şifreleme yöntemiyle artık şifreleme ve çözme anahtarları farklıdır. Anahtarlardan birinin şifrelediğini sadece diğeri çözebilir. Anahtarlardan birine açık anahtar, diğerine gizli anahtar adı verilir; açık anahtar herkese açıklanır. Ayşe Burak'a bir mektup yollamak istiyorsa, önce Burak'ın açık anahtarını temin edip, mesajını onunla şifreleyip Burak’a yollaması gerekir. Burak aldığı mesajı kendi gizli anahtarıyla açar. Ayşe'nin dikkat etmesi gereken tek nokta aldığı açık anahtarın gerçekten Burak'a ait olup olmadığıdır. Açık anahtar rahatça dağıtılabildiğinden, bunu sağlamanın kolay bir yolu, anahtarı bağımsız çeşitli noktalara dağıtmaktır; böylece Ayşe birden fazla yerden Burak’ın anahtarını temin edip doğrulayabilir. Sayısal İmzalar: Açık Anahtar Kriptografi’sinin (ing. Public Key Cryptography) sağladığı başka bir olanak ise sayısal imzalardır. Burak'ın aldığı mektubun gerçekten Ayşe'den gelip gelmediğini öğrenebilmesi için, Ayşe'nin mektubu imzalaması gerekir: Ayşe, mektubu yollarken, kendi gizli anahtarıyla şifreler. Burak Ayşe'nin gizli anahtarıyla şifrelediği kopyayı Ayşe'nin açık anahtarıyla çözer. Böylece mektubun Ayşe'den geldiğini ve değiştirilmediğini anlar. Çünkü Ayşe'nin açık anahtarıyla çözülebilen bir mektup sadece Ayşe'nin gizli anahtarıyla şifrelenmiş olabilir. Neden asimetrik ?: Günümüzde pek çok açık anahtar algoritması tasarlanmıştır; en ünlüleri arasında ElGamal ve Diffie-Hellman kripto sistemleri ile yaygın olarak kullanılan ve adını tasarımcıları Rivest, Shamir ve Adleman'ın adlarının baş harflerinden alan ünlü RSA’ dır. Bunların dışında eliptik eğriler, kombinatuardaki altküme toplamı sorunu (ing. knapsack/subset sum problems) ve çeşitli modüler aritmetik problemleri üzerine kurulmuş algoritmalar bilinmektedir. Açık anahtar algoritmalarının tümü çok büyük sayılarla yapılan bazı işlemlerin bir yönde çok kolay, aksi yönde ise (en azından bugünkü matematik bilgimizle) çok zor olmasını kullanmaktadırlar. Asimetrik kriptografi terimi bu dengesizlikten gelmektedir. Örneğin RSA, çok büyük asal sayıları yaratmanın kolaylığına karşın büyük sayıların asal bileşenlerinin bulunmasının zor olduğu varsayımına dayanır. Bu varsayımı destekleyen tek şey, uzun süredir matematikçilerin tamsayıları asal bileşenlerine ayırmanın hızlı bir yolunu bulmamış olmalarıdır. Kapan İşlemler : Asimetrik denebilecek bir başka işlemler sınıfı ise "kapan" işlemlerdir (ing. One-Way Hash Functions or Trapdoor Functions). Kapan işlemler değişebilir uzunluktaki bir metini alıp sabit uzunlukta bir değer üretirler; esasen kriptografik hata sezim kodlarıdır (ing. Error Detection Codes): 1 gigabaytlık bir dosyayı 128 bitlik sonuç veren bir kapan işleminden geçirirsek, o dosyanın her bitine bağımlı bir parmak izi elde ederiz. Dosyadaki herhangi bir kasıtlı veya kasıtsız değişiklik (bir bitlik bile olsa) kapan değerine yansır. Ayrıca parmak izinden metinin içeriği hakkında herhangi bir bilgi elde edilemediğinden kapan işlemler tek yönlü olarak nitelenir. Güvenli bir kapan işlemi ile, belli bir parmak izini verecek bir dosya yaratmak veya parmak izleri aynı olan iki dosya yaratmak çok zordur. Hibrid Kripto sistemler : Açık anahtar kriptografisi büyüklükleri 500 ile 2000 bit arasında değişen geniş sayıların işlenmesini gerektirdiğinden, simetrik şifreleme yöntemlerine göre çok daha yavaştır. Simetrik şifrelerin hızını asimetrik kripto sistemlerin sunduğu anahtar yönetimi kolaylığı ile birleştirmek için, genellikle melez şifreleme sistemleri kullanılır. Ayşe, Burak'a yollayacağı mesaj için rasgele ve geçici bir simetrik şifre anahtarı seçer. Mesajı böylece hızlı olan simetrik şifreyle kilitler. Kısa olan anahtarı ise Burak'ın açık anahtarıyla şifreleyip, ikisini beraber yollar. Böylece Ayşe, uzun olabilecek mesajı hızlı olan simetrik şifreyle, kısa olan geçici simetrik şifre anahtarını ise yavaş olan asimetrik kriptografiyle şifrelemiş olur. PGP'nin kullandığı yöntem de budur. Aynı şekilde, sayısal imza için, Ayşe'nin bütün mesajı kendi gizli anahtarıyla şifrelemesi yerine, kısa olan mesajın parmak izini imzalaması çok daha hızlı olacaktır. Ekler Algoritmanın Adı Geliştiren Tarihi Tipi (Blok Uzunluğu) Anahtar Uzunluğu Döngü Sayısı Çözülme Durumu Kullanım Koşulları DES (Data Encryption Standard) IBM (ABD) 1977 Feistel Blok (64 bit) 56 bit (parity ile 64 bit) 16 Sağlam; 8 döngülü çeşidi çözülebiliyor; 16 zayıf anahtar Serbest IDEA (International Data Encryption Algorithm) Lai-Massey, ETH Zurich (İsviçre) 1992 Blok (64 bit) 128 bit 8 Sağlam; 251 zayıf anahtar Ticari faaliyetler hariç serbest RC2 (Rivest's Cipher veya Ron's Code 2) Rivest, RSA Data Security (ABD) 1992 Katar 2048 bite kadar Bilinmiyor Zayıflık bulunmadı Algoritma RSA tarafından saklı tutuluyor RC5 (Rivest's Cipher veya Ron's Code 5) Rivest, RSA Data Security (ABD) 1995 Blok (32, 64 veya 128 bit) 2048 bite kadar 255'e kadar 64 bit blok ve 12 döngü ile diferansiyel ve doğrusal şifreçözüme dayanıklı Serbest Blowfish Bruce Schneier, Counterpane Systems (ABD) 1993 Feistel Blok (64 bit) 448 bite kadar 16 3 döngülü çeşidi diferansiyel şifreçözüme hassas Ticari faaliyetler hariç serbest FEAL (Fast Data Encipherment Algorithm) Shimizu ve Miyaguchi (Japonya) 1988 Blok FEAL-4 64 bit; FEAL-N 128 bit FEAL-4 4 döngü; FEAL-N 31 döngü Güvensiz; çeşitleri başarıyla çözümlendi SAFER (Secure and Fast Encryption Routine) Massey, Cylink Corporation (ABD) 1993 Blok (64 bit) 64 bit; 128 bit 10 döngüye kadar İlk sürümlerinin anahtar açılımında zayıflıklar vardı Skipjack (Clipper Chip) NSA (ABD) 1993 Blok (64 bit) 80 bit 32 Algoritma gizli Sadece özel entegre devre olarak bulunuyor Lucifer IBM (ABD) 1970? Feistel Blok (64 bit) 128 bit 16 DES'in prototipi olduğundan zayıflıklar içermesi olasıdır GOST 28147-89 I.A.Zabotin, G.P.Glazkov, V.B.Isaeva (Sovyetler Birliği) 1989 Feistel Blok (64 bit) 256 bit; 512 bit tanımlanabilir sübsitüsyon; 610 bit etken gizli bilgi 32 SSCB tarafından bütün gizlilik derecelerindeki bilgiler için uygun görülmüştür Serbest ASEKAL-21 Aselsan (Türkiye) - Doğrusal olmayan katar 57 bit ? - Ulusal olarak onaylanmış algoritma Aselsan 2101, 2010 Veri ve Ses şifreleme birimlerinde kullanılıyor Kriptografi Terimleri Sözlüğü Bu tanımlarwww.linux.org.tr'daki Türkçe Bilgisayar Terimleri dosyalarından filtreleşmiştir. Tanımlar Dizin anahtar üretimi (Fra. Géneration de clès, ing. key generation) Kriptografide kullanılan anahtarların yaratılma süreci. anahtar yönetimi (Fra. gestion des clès, ing. key management) Bir güvenlik politikası gereği kripto anahtarlarının üretimi, saklatımı, dağıtımı, ortadan kaldırılması, arşivlenmesi ve uygulanması. bağdan bağa kriptolama (Fra. chiffrement de liasion, ing. link-by-link encipherment) Bir iletişim sisteminin her bir bağında ayrı ayrı yürütülen kriptolama. çevrimdışı kriptolama (Fra. chiffrement hors ligne, ing. off-line encipherment) ‹letim hattına bağlı olunmadan yürütülen kriptolama. çevrimiçi kriptolama (Fra. chiffrement en ligne, ing. on-line encryption) Belirli bir iletim sisteminde verilerin kriptolanıp hemen iletilmesi, ve alıcı tarafta da gelen verilerin hemen kriptolarının çözülmesi. donanımla kriptolama (Fra. codage par matériel, ing. hardware encryption) Geleneksel yazılımla yapılan kriptolamaya göre çok daha hızlı gerçekleştirilen donanım aygıtlarını kullanan kriptolama. kamusal anahtar (Fra. clè publique, ing. public key) Bir kamusal şifreleme sisteminde sadece kriptolama kısmı için kullanılan, kripto çözmekte kullanılamayan anahtar. karılmalı kripto (Fra. cryptage par transposition, ing. transposition cipher) Açık bir metnin harflerinin olağan sırasında değiştirerek, kararak elde edilen kripto. kripto anahtarı (Fra. clé de cryptage, ing. cryptographic key) Kriptolama ve kripto çözme işlemlerinde kullanılan simge dizisi. kripto analizi (Fra. analyse cryptographique; cryptanalyse, ing. codebreaking, cryptanalysis) Bir kriptografik sistemin girdi ve/veya çıktılarını inceleyerek tasnifli verilere, şifresiz bilgilere ulaşmayı amaçlayan yasadışı analiz. kripto(grafik) güvenlik (Fra. cryptosecurité, ing. cryptographic security) Teknik açıdan yeterli ve doğru kullanılan kripto sistemleri sayesinde elde edilen iletişim güvenliği. kriptografi (Fra. cryptographie, ing. cryptography) Sadece alıcısının kodunu açabileceği şekilde düzenlenmiş ve mesajların içeriğini gizlemeyi amaçlayan gizli dönüşümler bilimi. kriptografik kimlik kanıtlanma (Fra. authentication cryptographique, ing. cryptographic authentication) Kimlik kanıtlamasının kripto sistemlerine dayanarak yürütülmesi. ornatımla kriptolama (Fra. cryptage par substitution, ing. substitution cipher) Açık metnin herbir harfinin belirli bir kurala göre başka bir harfle değiştirildiği kriptolama yöntemi. şifresiz metin (Fra. texte en clair, ing. plaintext) Kriptografide iletilerin şifrelenmemiş, normal, okunabilir halleri. TEMPEST güvenliği (Fra. securité d'emission, TEMPEST, ing. emission security, TEMPEST) Teleiletişim sistemlerinden, bilgiişlem donatımından, kripto donatımından salımlanan elektromanyetik dalgalardan yetkisiz kişilerin bilgi çıkarsamalarını engelleyici güvenlik önlemlerinin tümü. trafik dolgulaması (Fra. bourrage, ing. traffic padding) Yapay iletimlerle düşman tarafının trafik analizini yapması ve kriptoyu çözmesini zorlaştırmak. uçtan uca kriptolama (Fra. chiffrement de bout en bout, ing. end-to-end encipherment) Bir iletişim ağının bir ucunda kriptolanan bilginin, ancak alıcı uçta kriptosunun çözüldüğü sistem. ciphering şifreleme, kriptolama codebreaking kripto analizi cryptanalysis kripto analizi crypto key kripto anahtarı cryptogram kriptolu metin cryptographic algorithm kriptolama algoritması cryptographic analysis kripto analizi cryptographic authentication kriptolu kimlik kanıtlama cryptographic security kriptolu güvenlik cryptographic system şifreleme sistemi, kriptolama sistemi cryptographically protected kriptoyla korunmuş cryptography kriptografi cryptosecurity kriptolu güvenlik cryptosystem şifre sistemi, kripto sistemi decipher, to kripto çözmek decipherment kripto çözme decryption şifre çözme, kripto çözme encipher, to şifrelemek, kriptolamak encrypted text şifreli metin, kriptolu metin encryption (of data) verinin kriptolanması encryption algorithm kriptolama algoritması endto end encryption uçtan uca kriptolama hardwareencryption donanımla kriptolama linkby link encipherment bağdan bağa kriptolama off-lineencrypting çevrimdışı kriptolama on-lineencrypting çevrimiçi kriptolama public key data encryption system kamusal anahtarlı veri kriptolama substitution cipher ornatımla kriptolama transposition cipher karılmaya dayalı kripto ABD'nin Küresel Gözetim Sistemi: İkinci Dünya Savaşından sonra Sovyetler Birliği ile "Soğuk Savaş" döneminin başlamasıyla ABD dünya çapında istihbarat faaliyetlere ağırlık verdi. ABD'nin gözetim sistemiyle ilgili aşağıdaki bilgiler, farklı ülkelerden çeşitli yazarlar tarafından ortaya konmuştur, ve İnternet'te de kolayca bulunabilir. Bunlarla ilgili olarak oldukça ayrıntılı bilgiler içeren Faruk Bildirici'nin İletişim yayınlarında çıkan "Gizli Kulaklar Ülkesi" isimli kitabından aşağıdaki bölümleri: Amerika nasıl dinliyor ?: Amerika'da dinleme faaliyetlerini yürüten üç ayrı kuruluş bulunuyor; NSA (Ulusal Güvenlik Ajansı), FBI (Federal Araştırma Bürosu) ve CIA. ABD'nin 'en büyük kulağı' olan NSA, Başkan Harry S. Truman'ın 24 Ekim 1952'de imzaladığı 'çok gizli' genelgeyle kuruldu. Kuruluştan, ne ABD Kongresi'nin haberi oldu, ne de kamuoyunun. Truman bu yeni kuruluşa, dünya çapında iletişim istihbaratı görevi verdi. Önceleri diplomatların ve askerlerin şifreli telsiz görüşmelerini dinleyen NSA, daha sonraları uluslararası sivil telefon görüşmelerini dinleyen NSA, daha sonraları uluslararası sivil telefon görüşmelerini de hedefleri arasına aldı. 1960'lı ve 70'li yıllarda ortaya çıkan yönlü telsiz haberleşme ve uydu teknolojisi NSA'nın işini daha da kolaylaştırdı. Artık havaya çıkan hiçbir radyo sinyali, hiçbir telefon görüşmesi NSA'nın dünya yüzeyine dağılmış binlerce uzmanının eline düşmekten kurtulamıyordu. NSA, 1952'de kurulduktan hemen sonra, gizli bir iç yönetmelik çıkararak CIA ile işbölümü yaptı. CIA de bir yıl sonra, kendi sınırlarının belirlemek amacıyla FBI ile pazarlığa oturdu. CIA'nin ülke içindeki faaliyet alanı çizildi. CIA, Aynı kitapta "Gözetim Teknolojisi" bölümü altında, ABD'nin meşhur "ECHELON" sistemi açıklanıyor: Elektronik postadaki yeni avcı: Bilgi güvenliği tartışmaları gürültüsü sürerken, istihbarat örgütleri bilgisayar ağlarına sızma teknolojisinde epeyce yol kat etmişlerdi bile. Neredeyse sızamayacakları bilgisayar ağı kalmadı. Telefon görüşmelerinde hedef sözcükleri tarayabilen sistemleri 1970'lerden itibaren kullanmaya başlayan NSA, 1980'lerin sonuna doğru, bilgisayarları da kapsayan yeni bir sistem geliştirdi. 'Global bir network sistemi' olarak tanımlanan 'ECHELON', telefonların yanı sıra teleks, faks ve internette 'hedef sözcükleri' tanıyabiliyor. Milyonlarca mesaj arasından aranan sözcüklerin kullanıldığı elektronik mesajları tespit edebiliyor. 'ECHELON sözlüğünde bulunan hedef sözcükleri tarayan bilgisayarlar, aynı anda gelen mesajları sıraya koyarak taramayı sürdürebiliyor. 'ECHELON' haberleşme ağı, Kuzey Amerika'da üç, İngiltere'de iki, Almanya, Japonya ve Yeni Zelanda'da birer, Avustralya'da iki üsden oluşuyor. Eskiden tüm dünyaya yayılan yüzlerce üsden yapılan dünyayı dinleme faaliyeti, artık sadece 10 üs ile dünyanın etrafında dönen yüzlerce uyduların ortak faaliyetiyle sürdürülüyor. Çeşitli ülkelerin haberleşme uyduları da ECHELON'un hedefleri arasında yer alıyor. Kuantum Bilgisayarlar ve Kriptoloji: KUANTUM BİLGİSAYARLAR: Bilgisayarlarımız gün geçtikçe hızlanıyor, ancak geleneksel yöntemlerle ulaşabileceğimiz cpu saat hızı sınırına oldukça yaklaştık. Bu günkü işlemciler sıradan bir kullanıcı için aslında yeterli. Ancak kripto çözme, atom altı parçacık mekaniği gibi çok büyük verilerin işlendiği ya da çok uzun döngülerin kurulduğu durumlarda normal PCler bu yükü taşıyamamaktadır. Kuantum bilgisayarlar işte bu noktada karşımıza çıkıyor. KUANTUMNEDİR?: Kuantum kavramı, atom düzeyindeki, hatta daha küçük parçacıkların fizik kurallarını tanımlar. Kuantum mekaniği, burada anlatılmayacak kadar karmaşıktır. Bilmeniz gereken, bu boyutta her şeyin "belirsiz" olduğudur. Kuantum dünyasının kurallarına göre örneğin, bir elektronun atom etrafındaki yörüngesini ya da belirli bir anda bu yörüngenin neresinde olduğunu tespit etmek olanaksız. Yapabileceğiniz en iyimser şey, elektronun olası yörüngelerini bulmaktır. Yukarıdaki açıklamadan biraz daha karışık olacak ama, kuantum dünyasında madde (elektronlar, fotonlar, vs.) yapılan gözleme göre bazen parçacık, bazen de dalga gibi davranır. Anlaşılır bir dille söylemek gerekirse gerçek dünya dediğimiz şey üst üste binmiş bir dizi gerçekten gözlem alanımıza giren bir tanesi. KUANTUM BİTLER: Geleneksel bilgisayarın en temel işlem birimi "bit" tir. Bir bit 0 ya da 1 değerini alır. Kuantum bilgisayarın temel işlem birimi "kubit" ise aynı anda hem 0 hem de 1 olabiliyor. Bunun sağladığı avantajı bir örnekle anlatalım: Bir pizzacı A mahallesinden gelen bir siparişi götürüyor. Tam mahalleye ulaştığında fark ediyor ki, adresin yazılı olduğu kağıt kayıp. Bu durumda siparişin teslim edilebilmesi için pizzacının yapacağı tek şey mahalledeki tüm evlere tek tek uğrayıp siparişin verilip verilmediğini sormak. Yani bir bilgisayar gibi adım adım ilerlemek. Eğer bizim pizzacının bir kaç arkadaşı varsa, arama biraz daha hızlanabilir. her arkadaş bir sokağı dolaşır ve siparişin verildiği evi bulan geri dönüp pizzacıya haber verir. Bilgisayar dünyasında buna paralel işleme (parallel processing) denir. Paralel işleme zor ve pahalı bir işlemdir. Şimdi, bizim pizzacının kuantum fiziği kurallarına tabi olduğunu düşünelim. Kendi kendini mahalledeki ev sayısı kadar bölen pizzacı (dalgacık) aynı anda tüm evlere birden uğruyor, doğru adresi bulan pizzacı dışındaki kopyalar kayboluyor. İşte kuantum bilgisayarların yapabildiği şey de bu. Burada, söylememiz gereken bir şey daha var. Kuantum bilgisayarlardan beklenen, aynı anda olası tüm durumları deneyip sistemin tek bir noktaya (doğru sonuca) doğru "çökmesi". Haliyle bu yapı bildiğimiz programlama yöntemlerinin tamamen tersi bir programlama mantığı gerektiriyor. NE İŞE YARAYACAK?: En başta Amerikan Ulusal Güvenlik Konseyi'nin (NSC) işine yarayacak kuantum bilgisayarlar. Bu örgüt düşman haberleşmesini dinlemek ve şifrelerini kırmak gibi ulvi bir işleve sahip. Eh, kırılacak şifreler en az 250 rakamlı sayı dizileri içerince "normal" bilgisayarlar pes ediyor. Ancak bu türden bir şifre kırıcı kuantum bilgisayarın en azından 100 000 kubit lik olması gerekli. Bu da neresinden bakarsanız bakın 22. yüzyıla kadar gerçeklenebilir gözükmüyor. Kuantum bilgisayarlar kuantum fiziği problemlerinin çözümünde de kullanılabilirler. Masa üstü için en iyimser tahminle bir iki yüz yıl daha beklememiz gerekli. Bu günkü teknolojiyle iki kubitlik bir yapı bile bir laboratuarın önemli bir kısmını kaplıyor. |
arkadaşlar umarım beğinirsiniz sizin için bi kitap yayınlıyorum sadece Visual basic aradığınız herşey emin olun fazlası var. Eğer elinde benim gibi bi kitabı olan varsa bi zahmet özellikle delphi, flash, dreamweaver.... Hadi Allah kolaylık versin MS VISUAL BASIC DERS NOTLARI VB’de program yazmak demek, nesnelerin olaylar sonucunda verdikleri tepkilerin belirlenmesi demektir. Bu tepki, nesnenin herhangi bir özelliğinin değiştirilmesi, nesneye bir metodun uygulanması ya da bir fonksiyonun çalıştırılması olabilir. Örneğin, bir düğme nesnesine fare ile tıklanması olayı sonucunda, mesaj kutusu fonksiyonunun çalıştırılıp, kullanıcıya bir mesaj verilmesi gibi. Bu şekilde tasarlanan tüm olay-tepki ilişkileri, bir VB programının temelini oluşturur. Genel olarak bir VB programı aşağıdaki bileşenlerden oluşur: Project : Programın bütününe verilen isimdir. Form : Programın sahip olduğu tüm pencerelere (ekranlara) birer form adı verilir. Her VB programı en az bir forma sahip olmalıdır. MDI (Multiple Document Interface) Form : Birden fazla pencerenin aynı anda açık tutularak çalıştırılabilmesine olanak veren formlardır. Module: Tüm program dahilinde kullanılacak global tanımlamaları içeren bileşendir. VB dilinin bileşenlerini ise aşağıdaki gibi sıralayabiliriz: • Nesneler (Objects) • Özellikler (Properties) • Fonksiyonlar (Functions) • Metotlar (Methods) • Olaylar ( Events) • Deyimler (Statements) • Sabitler (Constants) FORMLAR Formların Özellikleri Appearance - Görünüm Özellikleri Appearance Formun çalışma anında (runtime) düz ya da 3 boyutlu görüntülenmesi için kullanılır. Sözdizimi: form.Appearance Değerler: 0 Düz. Form görsel efektler olmadan boyanır. 1 (Varsayılan) 3B. Form, üç-boyut efekti ile boyanır. BackColor Formun arkafon rengini belirler. Sözdizimi: form.BackColor [=renk] BorderStyle Formun kenar çizgilerinin tipini belirler. Sözdizimi: form.BorderStyle = [değer] Değerler: 0 Kenar çizgisi yok. 1 Tekli sabit. Konumu değiştirilebilir. Boyutları ise yalnızca max.ve min. düğmeleri kullanılarak değiştirilebilir. 2 (Varsayılan) Boyutları değiştirilebilir. 3 Sabit Dialog. max. ve min düğmeleri yoktur. Boyutları değiştirilemez. 4 Sabit Araç Penceresi. Boyutları değiştirilemez, Kapat düğmesi ve küçük yazılı başlık çubuğu olan form. Form Windows Görev Çubuğunda gösterilmez. 5 Araç Penceresi. Boyutları değiştirilebilen, Kapat düğmesi ve küçük yazılı başlık çubuğu olan form. Form Windows Görev Çubuğunda gösterilmez. Caption Formun başlığını belirler. Sözdizimi: form.Caption [= string] FillColor Form üzerinde Circle ve Line metotları ile yaratılan grafiklerin doldurma renklerini belirler. Sözdizimi: form.FillColor [ = renk] FillStyle Form üzerinde Circle ve Line metotları ile yaratılan grafiklerin doldurma desen tipini belirler. Sözdizimi: form.FillColor [ = değer] Değerler: 0 Dolgulu 1 (Varsayılan) Saydam 2 Yatay doğru 3 Dikey doğru 4 Artan köşegen 5 Azalan köşegen 6 Çapraz 7 Köşegen çapraz FontTransparent Form metninin saydamlık özelliğini belirler. Sözdizimi: form.FontTransparent [= boolean] ForeColor Form üzerinde yer alan grafiklerin rengini belirler. Sözdizimi: form.ForeColor [=renk] Palette Form tarafından kullanılacak bir palet dosyası atar. Sözdizimi: form.Palette = path Picture Formun arkafonuna bir resim ekler. Sözdizimi: form.Picture [= resim] Örnek: Private Sub Form_Load () Form1.Picture = LoadPicture("C:\PICS\AUTO\PORSCHE.BMP") End Sub Behavior - Davranış Özellikleri AutoRedraw Otomatik yeniden-resimleme özelliğini aktif hale getirir. Sözdizimi: form.AutoRedraw [= boolean] ClipControls Boyama olaylarında, değişkenlik gösteren durumlarda tüm nesnenin ya da yenilenen alanların boyanmasına karar verir. Sözdizimi: form.ClipControls Örnek: Aşağıdaki kodu formun declerations bölümüne kopyalayın ve çalıştırıp formun büyüklüğünü değiştirin. Daha sonra aynı işlemi formun ClipControls özelliğini False yapıp tekrar edin. Private Sub Form_Paint () ' Arkafon için rastgele bir renk seçer: BackColor = &HFFFFFF * Rnd End Sub DrawMode Shape ve Line kontrollerinin çizim tipini belirler. Sözdizimi: form.DrawMode [= değer] Değerler: 1 Siyah. 2 15’in tersi. 3 Arkafon rengi ile kalem ters-renginin kombinasyonu 4 13’ün tersi. 5 Kalem rengi ile görüntülenen rengin tersinin eşzamanlı kombinasyonu 6 Görüntülenen rengin tersi 7 Kalem rengi ile görüntülenen rengin kombinasyonu 8 9’un tersi. 9 Kalem rengi ile görüntülenen rengin eşzamanlı kombinasyonu. 10 7’nin tersi. 11 Çizim modunu sonlandırır. 12 Kalem renginin tersi ile görüntülenen rengin kombinasyonu. 13 (Varsayılan) ForeColor özelliği ile belirlenen renk. 14 Kalem rengi ile görüntülenen rengin tersinin kombinasyonu. 15 Kalem rengi ile görüntülenen rengin kombinasyonu. 16 Beyaz. DrawStyle Grafik metotlarında çizgi tipini belirler. Sözdizimi: form.DrawStyle [= değer] Değerler: 0 (Varsayılan) Dolgulu 1 Kesik çizgili 2 Noktalı 3 Kesik çizgi - Nokta 4 Kesik çizgi - Nokta - Nokta 5 Saydam 6 İç dolgulu DrawWidth Grafik metotlarında çizgi kalınlığını belirler. Sözdizimi: form.DrawWidth [= büyüklük] Enabled Formun kullanılabilir ya da kullanılamaz olmasını belirler. Sözdizimi: form.Enabled [= boolean] OLEDropMode Forma ait hedef bileşenin OLE-bırakma işlemlerini ayarlar. Sözdizimi: form.OLEDropMode [= mode] 0 (Varsayılan) Hedef bileşen OLE-bırakmasını kabul etmez. 1 El ile. OLE-bırakması programatik olarak gerçekleştirilebilir. 2 Otomatik. OLE-bırakması, eğer tanımlanabilirse hedef bileşen tarafından otomatik olarak algılanır vr kabul edilir. PaletteMode Yüklü paletin renk yelpazesi modunu ayarlar. Sözdizimi: form.PaletteMode = tamsayı Değerler: 0 (Varsayılan) Yarımton palet. 1 Üstten-artmalı palet. 2 Palette özelliğinde belirlenen palet kullanılır. RightToLeft Metin yazım yönünü belirler. Sözdizimi: form.RightToLeft Visible Formun görünüp görünmeme durumunu ayarlar. Sözdizimi: form.Visible [= boolean] DDE - Dinamik Veri Değişimi (Dynamic Data Exchange) Özellikleri LinkMode DDE alışverişi için link türünü belirler ve bağlantıyı aktif hale getirir. Sözdizimi: form.LinkMode [= değer] Değerler: 0 (Varsayılan) Hiçbirisi - DDE kapalı. 1 Otomatik - Bağlantılı veri her değiştiğinde hedef kontrol güncellenir. 2 El ile - Hedef kontrol LinkRequest metodu çalıştırıldığında güncellenir. 3 Bildirimli - Bağlantılı veri her değiştiğinde LinkNotify olayı gerçekleşir, ancak, hedef kontrol yine LinkRequest metodu çalıştırıldığında güncellenir. LinkTopic Form için kaynak uygulama ve konuyu belirler. Sözdizimi: form.LinkTopic [= değer] Örnek: Private Sub Form_Load () Form1.LinkMode = 0 'Bağlantının aktif olmadığına emin olmak için. Form1.LinkTopic = "Excel|Sheet1" 'Uygulama ve konu belirleniyor. Form1.LinkMode = 1 'Bağlantı sağlanıyor. End Sub Font - Yazıtipi Özellikleri Font Form metni için yazıtipi özelliklerini belirler. Sözdizimi: form.Font NOT: Font özelliğini ona yeni özellikler kazandırabileceğimiz bir nesne gibi kullanabiliriz: Form1.Font.Bold = True Misc - Diğer Özellikler Name Formun kodlarda kullanılacak adını belirler. Sözdizimi: form.Name ControlBox Formun pencere kontrol düğmelerini açar ya da kaldırır. Sözdizimi: form.ControlBox HelpContextID Formun yardım dosyasındaki indeks numarasını belirler. Sözdizimi: form.HelpContextID [= sayı] Aşağıdaki kodu üzerinde textbox olan formun declerations bölümüne kopyalayın ve çalıştırıp fokus formda iken ve textbox’da iken F1 tuşuna basın: Private Sub Form_Load () Text1.HelpContextID = 21001 Form1.HelpContextID = 21005 End Sub Icon Forma bir simge dosyası atar. Sözdizimi: form.Icon [= picture] KeyPreview Klavye olaylarını aktif hale getirir. Sözdizimi: form.KeyPreview [= boolean] Aşağıdaki kodu formun declerations bölümüne kopyalayın ve çalıştırıp F1, F2 ve F3 tuşlarına basın. Private Sub Form_Load () KeyPreview = True End Sub Private Sub Form_KeyDown (KeyCode As Integer, Shift As Integer) Select Case KeyCode Case vbKeyF1: MsgBox "F1 yardım içindir" Case vbKeyF2: MsgBox "F2 metni kopyalar" Case vbKeyF3: MsgBox "F3 kopyalanan metni yapıştırır" End Select End Sub MaxButton Ekranı kapla düğmesini aktif hale getirir. Sözdizimi: form.MaxButton MDIChild Formun, bir MDI form içinde MDI Child form olarak görüntülenip görüntülenmeyeceğini belirler. Sözdizimi: form.MDIChild MinButton Simge durumuna küçült düğmesini aktif hale getirir. Sözdizimi: form.MinButton MouseIcon Fare imlecinin simgesini belirleyen bir .ico dosyası atar. Sözdizimi: form.MouseIcon = LoadPicture(pathname), form.MouseIcon [= picture] MousePointer Fare imlecinin türünü belirler. Form.MousePointer [= değer] 0 (Varsayılan) Form tarafından belirlenir. 1 Ok. 2 Çarpı. 3 I işareti. 4 Simge. 5 Dört yönlü ok. 6 İki yönlü ok.(KuzeyDoğu-GüneyBatı) 7 İki yönlü ok.(Kuzey-Güney). 8 İki yönlü ok.(GüneyDoğu-KuzeyBatı). 9 İki yönlü ok.(Doğu-Batı). 10 Yukarı Ok. 11 Kumsaati. 12 Normal. 13 Ok ve Kumsaati. 14 Ok ve Soru işareti. 15 Boyut değiştirme. 99 MouseIcon özelliği ile belirlenen simge. NegotiateMenus Form üzerinde yer alan bir nesneye ait menünün otomatik olarak görüntülenip görüntülenmeyeceğini belirler. ShowInTaskbar Formun Windows’un görev çubuğunda yer alıp almayacağını. Sözdizimi: form.ShowInTaskbar Tag Nesneye, VB tarafından kullanılmayacak özel amaçlı bir bilgi ya da yorum atamak için kullanılır. Sözdizimi: form.Tag [= ifade] WhatsThisButton Formun başlık çubuğunda bu nedir düğmesinin yer alıp almayacağını belirler. Sözdizimi: form.WhatsThisButton NOT: Bu özelliğin çalışması için aşağıdaki atamalar yapılmalıdır: ControlBox=True BorderStyle=Fixed Single ya da Sizable | BorderStyle=FixedDialog MinButton, MaxButton=False WhatsThisHelp Windows’un help sistemini aktif hale getirir. Sözdizimi: form.WhatsThisHelp [= boolean] WindowState Form penceresinin çalışma anındaki (runtime) görünümünü belirler. Sözdizimi: form.WindowState [= değer] Değerler: 0 (Varsayılan) Normal. 1 Simge durumunda. 2 Ekranı kaplamış. Position – Konum Özellikleri Height, Width Formun yükseklik ve genişlik ölçülerini belirlerler. Sözdizimi: form.Height [= sayı], form.Width [= sayı] Left, Top Formun Sol ve Üst kenardan sonra bırakılacak boşluklarını belirler. Sözdizimi: form.Left [= değer], form.Top [= değer] Moveable Formun taşınabilir olup olmadığını belirler. Sözdizimi: form.Moveable = boolean StartUpPosition Formun açıldığı andaki görünümünü belirler. Sözdizimi: form.StartUpPosition = position Değerler: 0 Başlangıç koşulu yok. 1 Üzerinde bulunulan nesneye göre merkez. 2 Ekrana göre merkez. 3 Ekranın sol-üst köşesi. Scale – Ölçek Özellikleri ScaleHeight, ScaleWidth Formun üzerindeki grafik metodu kullanılarak yaratılan nesneler için sırasıyla dikey ve yatay ölçek tanımlarlar. Sözdizimi: form.ScaleHeight [= değer], form.ScaleWidth [= değer] Örnek: Aşağıdaki kodu üzerinde textbox olan formun declerations bölümüne kopyalayın ve çalıştırıp formun üzerine tıklayın. Sonra formun büyüklüğünü değiştirip tekrar tıklayın. Private Sub Form_Click () Dim Radius As Integer ' Değişken tanımları. ScaleHeight = 100 ' Yükseklik büyüklüğü. ScaleWidth = 100 ' Genişlik büyüklüğü. For Radius = 5 to 50 Step 5 FillStyle = 1 Circle (50, 50), Radius ' Çember çiziliyor. Next Radius End Sub ScaleLeft, ScaleTop Formun üzerindeki grafik metodu kullanılarak yaratılan nesnelerin sırasıyla sol ve üst köşeleri için koordinatları belirlerler. Sözdizimi: form.ScaleLeft [= değer], form.ScaleTop [= değer] ScaleMode Ölçek birimini belirler. Sözdizimi: form.ScaleMode [= değer] Değerler: 0 ScaleHeight, ScaleWidth, ScaleLeft, ve ScaleTop özelliklerinin sahip oldukları değerlere göre ayarlanır. 1 (Varsayılan) Twip (inç başına 1440 twip, santimetre başına 567 twip). 2 Nokta (inç başına 72 nokta). 3 Piksel (Monitör veya yazıcının çözünürlüğüne göre ayarlanır). 4 Karakter (Yatay = birim başına 120 twip; Dikey = birim başına 240 twip). 5 Inç. 6 Milimetre. 7 Santimetre. Formlara Uygulanan Olaylar Activate Form, aktif pencere olduğu anda oluşur. Sözdizimi: Private Sub Form_Activate( ) Deactivate Form, deaktif pencere olduğu anda oluşur. Sözdizimi: Private Sub Form_Deactivate( ) Örnek: Private Sub MDIForm_Load () Form1.Caption = "Form #1" ' Form1 için pencere başlığı atanıyor. Dim NewForm As New Form1 ' Yeni bir child form oluşturuluyor. Load NewForm NewForm.Caption = "Form #2" ' Form2 için pencere başlığı atanıyor. NewForm.Show ' Yeni form görüntüleniyor. End Sub Private Sub Form_Activate () ' Durum çubuğu metni atanıyor: MDIForm1.Label1.Caption = "Current form: " & Me.Caption End Sub Click Form üzerinde fare tıklaması sırasında oluşur. Sözdizimi: Private Sub Form_Click( ) DblClick Form üzerinde çift fare tıklaması sırasında oluşur. Sözdizimi: Private Sub Form_DblClick( ) Örnek: Private Sub Form_Load () List1.AddItem "Nalan" ' Liste kutusunun girişleri belirleniyor. List1.AddItem "Cüneyt" List1.AddItem "Murat" List1.AddItem "Ferit" End Sub Private Sub List1_DblClick () Command1.Value = True ' Click olayı tetikleniyor. End Sub Private Sub Command1_Click () Text1.Text = List1.Text ' Seçilen seçenek Text1 nesnesine metin olarak aktarılıyor. End Sub DragDrop Sürükle-Bırak işlemi tamamlandığında oluşur. Sözdizimi: Private Sub Form_DragDrop(source As Control, x As Single, y As Single) x,y : Sürüklenen formun bırakıldığı konumdaki yatay ve dikey koordinatı. DragOver Sürükle-Bırak işlemi gerçekleştiğinde oluşur. Sözdizimi: Private Sub Form_DragOver(source As Control, x As Single, y As Single, state As Integer) x,y : Sürüklenen formun yatay ve dikey koordinatı. state : Formun o anki durumu. 0: form, hedefe bırakıldı; 1: form hedefe sürüklenmekte; 2: form hedef dışında bir noktaya bırakıldı. GotFocus Form fokusu aldığı anda oluşur. Sözdizimi: Private Sub Form_GotFocus( ) Initialize Form çalışma anında yaratıldığı anda oluşur. Sözdizimi: Private Sub form_Initialize( ) KeyDown, KeyUp Form üzerinde herhangi bir tuşa basıldığı anda (KeyDown) ve tuş bırakıldığı anda (KeyUp) oluşurlar. Sözdizimi: Private Sub Form_KeyDown(keycode As Integer, shift As Integer), Private Sub Form_KeyUp(keycode As Integer, shift As Integer) keycode: VB nesne kütüphanesinde (VB-object library) yer alan düğme kodlarından birisi. shift: SHIFT, CTRL, ve ALT düğmelerinin durumunu verir. Bu tuşların sırasıyla 1,2 ve 4 bitlik değerleri vardır. Toplam değer kullanılır. KeyPress Form üzerinde herhangi bir tuşa basıldığı anda oluşur. Basılan tuşun ANSI kodunu verir. Sözdizimi: Private Sub Form_KeyPress(keyascii As Integer) keyascii: Basılan tuşun ANSI kodu. LinkClose DDE alışverişi kesildiği anda oluşur. Sözdizimi: Private Sub Form_LinkClose( ) LinkError DDE alışverişi sırasında hata olduğu anda oluşur. Sözdizimi: Private Sub Form_LinkError(linkerr As Integer) linkerr: Oluşan hata kodu. (Bkz: VbHelp) LinkExecute DDE alışverişi sırasında, hedef uygulama tarafından bir komut gönderildiği anda oluşur. Sözdizimi: Private Sub Form_LinkExecute(cmdstr As String, cancel As Integer) cmdstr : Hedef uygulama tarafından gönderilen komut stringi. cancel : Gönderilen komutun kabul parametresi. False: Kabul edildi; True: reddedildi. Örnek: Private Sub Form_LinkExecute (CmdStr As String, Cancel As Integer) Cancel = False Select Case LCase(CmdStr) Case "{big}" WindowState = 2 ' Ekranı kapla. Case "{little}" WindowState = 1 ' Simge durumu. Case "{hide}" Visible = False ' Formu gizle. Case "{view}" Visible = True ' Formu göster. Case Else Cancel = True ' Komut kabul edilmedi. End Select End Sub LinkOpen DDE alışverişi başlatıldğı anda oluşur. Sözdizimi: Private Sub Form_LinkOpen(cancel As Integer) cancel: 0: Alışveriş gerçekleştirilir, 0 dışında herhangi bir değer alışverişi durdurur. Load Form yüklendiği anda oluşur. Sözdizimi: Private Sub Form_Load() LostFocus Form fokusu kaybettiği anda oluşur. Sözdizimi: Private Sub Form_LostFocus( ) MouseDown MouseUp Form üzerinde fare düğmesine basıldığında (MouseDown) ve bırakıldığında (MouseUp) oluşurlar. Sözdizimi: Private Sub Form_MouseDown(button As Integer, shift As Integer, x As Single, y As Single) Private Sub Form_MouseUp(button As Integer, shift As Integer, x As Single, y As Single) button: Sol, Sağ ve Orta tultan hangisine basıldığını verir. Bu tuşların sırasıyla 1,2 ve 4 bitlik değerleri vardır. Toplam değer kullanılır. shift: SHIFT, CTRL, ve ALT düğmelerinin durumunu verir. Bu tuşların sırasıyla 1,2 ve 4 bitlik değerleri vardır. Toplam değer kullanılır. x,y: Fare imlecinin o anki konumunu verir. Örnek: Dim PaintNow As Boolean Private Sub Form_MouseDown (Button As Integer, Shift As Integer, X As Single, Y As Single) PaintNow = True ' Boyamayı aktif hale getirir. End Sub Private Sub Form_MouseUp (Button As Integer, Shift As Integer, X As Single, Y As Single) PaintNow = False ' Boyamayı kapatır. End Sub Private Sub Form_MouseMove (Button As Integer, Shift As Integer, X As Single, Y As Single) If PaintNow Then PSet (X, Y) ' Belirlenen koordinatlara nokta koyar. End If End Sub Private Sub Form_Load () DrawWidth = 10 ' Geniş fırça kullan. ForeColor = RGB(0, 0, 255) ' Çizim rengini ata. End Sub MouseMove Fare imleci form üzerinde hareket ettirildiği anda oluşur. Sözdizimi: Private Sub Form_MouseMove(button As Integer, shift As Integer, x As Single, y As Single) button: Sol, Sağ ve Orta tultan hangisine basıldığını verir. Bu tuşların sırasıyla 1,2 ve 4 bitlik değerleri vardır. Toplam değer kullanılır. shift: SHIFT, CTRL, ve ALT düğmelerinin durumunu verir. Bu tuşların sırasıyla 1,2 ve 4 bitlik değerleri vardır. Toplam değer kullanılır. x,y: Fare imlecinin o anki konumunu verir. Örnek: Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Line -(X, Y) End Sub Paint Form üzerinde yer alan bir grafik nesnesinin, taşıma ya da boyut değiştirme eylemlerinden sonra tekrar yenilendiği anda oluşur. Sözdizimi: Private Sub Form_Paint( ) Örnek: Çalıştırıp formun boyutlarını değiştirin. Private Sub Form_Paint () Dim HalfX, HalfY ' Değişken tanımları. HalfX = ScaleLeft + ScaleWidth / 2 ' Genişliğin orta noktası. HalfY = ScaleTop + ScaleHeight / 2 ' Yüksekliğin orta noktası. Line (ScaleLeft, HalfY) - (HalfX, ScaleTop) ' Karo çiz. Line -(ScaleWidth + ScaleLeft, HalfY) Line -(HalfX, ScaleHeight + ScaleTop) Line -(ScaleLeft, HalfY) End Sub Private Sub Form_Resize Refresh End Sub Resize Form boyutu değiştirildiği anda oluşur. Sözdizimi: Private Sub Form_Resize( ) Örnek: Çalıştırıp formun boyutlarını değiştirin. Private Sub Form_Load () Text1.Text = "" ' Text1 kutusunun metnini temizle. End Sub Private Sub Form_Resize () Text1.Move 0,0, ScaleWidth, ScaleHeight End Sub Terminate Formun çalışması, çalışma anında sonlandığı anda oluşur. Sözdizimi: Private Sub object_Terminate( ) Unload Form, bellekten boşaltıldığı anda oluşur. Sözdizimi: Private Sub Form_Unload(Cancel As Integer) İLK UYGULAMA : ÇİZİM PROGRAMI Aşağıdaki kesit ile verilen genel görünüme sahip bir çizim programı uygulaması geliştireceğiz: Önbilgiler 1. Fonksiyonlar Çift yönlü veri alış-verişi gerçekleştiren prosedürlerdir. – Diğer prosedür çeşitleri: Sub (yordamlar) ve Property (Özellikler) – Genel sözdizimleri aşağıda açıklanmıştır: [Public | Private | Friend] [Static] Function <Fonksiyon Adı> [(parametreler)] [As tür] [deyimler] [Fonksiyon adı = ifade] [Exit Function] [deyimler] [Fonksiyon adı = ifade] End Function Public Opsiyonel-Fonksiyona tüm modüllerde yer alan tüm diğer prosedürler tarafından erişilebilir. Private Opsiyonel-Fonksiyona sadece kendisinin tanımlı olduğu modüldeki prosedürlerden erişilebilir. Friend Opsiyonel-Sadece Class-Modüllerde tanımlanır. (Bkz: VB Help Reference) Static Opsiyonel-Fonksiyon tarafından kullanılan lokal değişkenler çağrılar arasında korunurlar. Fonksiyon adı Standart değişken isimlendirme kuralları kullanılarak belirlenen ad. parametreler Opsiyonel-Fonksiyona çağrıldığı anda veri aktaracak parametre değişkenleri. Bir ya da daha fazlası birbirlerinden virgülle ayrılarak tanımlanabilir: parametre-1 As tür-1, parametre-2 As tür-2,..., parametre-N As tür-N tür Opsiyonel-Fonksiyon tarafından geri döndürülecek değerin veri türü. Aşağıdakilerden birisi olabilir: Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal, Date, String, Object, Variant ya da kullanıcı-tanımlı bir tür. deyimler Fonksiyon tarafından çalıştırılacak program deyimleri. ifade Opsiyonel-Fonksiyon tarafından geri döndürülecek değer. 2. CommandButton (Komut Düğmesi) İşlemleri başlatmak, kesmek ya da sonlandırmak için kullanılan kontrollerdir. Önemli özellikleri ve algıladığı bazı olaylar aşağıda açıklanmıştır: Özellikler Cancel : Butonun iptal düğmesi olup olmadığını belirler. Bir formda sadece bir iptal düğmesi yer alabilir. İptal düğmesi, form üzerinde yapılan son işlemi iptal eder. Caption : Buton üzerinde yer alacak yazıyı belirler. Style : Standart ya da Grafiksel olarak butonun türünü belirler. Arka fon renginin değiştirilmesi veya resim eklenmesi için grafiksel bir buton kullanılmalıdır. Olaylar Click : Butona basıldığı anda oluşur. Diğer olayların bir çoğu formlar tarafından algılanan olaylarla aynı şekilde çalışırlar. 3. ComboBox (Açılan Kutu) Açılan kutu biçiminde seçenekler sunan kontrollerdir. Önemli özellikleri ve algıladığı bazı olaylar aşağıda açıklanmıştır: Özellikler ItemData : ComboBox içinde yer alacak seçenekleri belirler. Bu işlem, örnek uygulamada yaptığımız gibi kod içersinde de gerçekleştirilebilir. Sorted : Seçeneklerin alfabetik olarak sıralanıp sıralanmayacağını belirler. Style : ComboBox’ın türünü belirler. Olaylar Click : ComboBox’tan bir seçenek seçildiği anda oluşur. Change : ComboBox’ta yer alan bir seçenek değiştirildiği anda oluşur. 4. Label (Etiket) Etiket bilgisi eklemek için kullanılır. 5. TextBox (Metin Kutusu) Tasarım anında veya kod ya da kullanıcı denetimli olarak bilgi gösteriminde kullanılan kontrollerdir. Önemli özellikleri ve algıladığı bazı olaylar aşağıda açıklanmıştır: Özellikler PasswordChar : TextBox’a girilecek bilginin belirlenen karakterle gizlenmesini (Şifre girişi gibi) sağlar. Text : TextBox içinde yer alan bilgiyi taşır. Olaylar Click : TextBox’a tıklandığı anda oluşur. Change : TextBox’ta yer alan bilgi değiştirildiği anda oluşur. 6. OptionButton (Seçenek Düğmesi) Açık ya da kapalı konuma ayarlanabilen seçenek kontrolüdür. Önemli özellikleri ve algıladığı bazı olaylar aşağıda açıklanmıştır: Özellikler Caption : Buton yanında yer alacak yazıyı belirler. Style : OptionButton’ın türünü belirler. Value : OptionButton’ın çalışma anında seçili olup olmadığını belirler. Olaylar Click : TextBox’a tıklandığı anda oluşur. 7. Frame (Çerçeve) Form alanında bir kontrol bölgesi yaratmak için kullanılan kontrollerdir. CurrentX, CurrentY Çizim metotlarında, en son çizim konumunun koordinatlarını verir. Bu koordinatların hangi metot için hangi konum olarak belirlendiği aşağıda listelenmiştir: Circle Merkez noktası. Cls 0, 0. (Ekranın sol-üst köşesi) Line Doğrunun son noktası. NewPage 0, 0. (Ekranın sol-üst köşesi) Print Bir sonraki basım pozisyonu. PSet Konulan noktanın kendisi. Uygulama İçin Yapılan Design-Time Ayarlamaları Uygulamada kullanılan nesnelerin tasarımda değiştirilen özellikleri aşağıda listelenmiştir: FrmAna : Form Name = FrmAna Appeareance = 0-Flat BackColor = &H80000005& BorderStyle = 1-Fixed Single Caption = Çizim V1.1 MaxButton = False StartUpPosition = 2-CenterScreen BtnTemizle : CommandButton Name = BtnTemizle Caption = TEMİZLE BtnCikis : CommandButton Name = BtnCikis Caption = ÇIKIŞ BtnKalem : CommandButton Name = BtnKalem BackColor = &H80000018& Caption = KALEM Style = 1-Graphical BtnSilgi : CommandButton Name = BtnSilgi BackColor = &H8000000F& Caption = SİLGİ Style = 1-Graphical CmbRenk : ComboBox Name = CmbRenk Text = Siyah CmbKalinlik : ComboBox Name = CmbKalinlik Text = Orta OptDolgulu : OptionButton Name = OptDolgulu Caption = Dolgulu Value = True OptDolgusuz : OptionButton Name = OptDolgusuz Caption = Dolgusuz Value = False Açıklamalı Kodlar 1. Değişken ve Fonksiyon Tanımlamaları Dim RenkKodu As Integer Dim CizimModu As Byte Function KodaCevir(GelenText As String) As Integer If GelenText = "Siyah" Then KodaCevir = 0 If GelenText = "Kırmızı" Then KodaCevir = 12 If GelenText = "Yeşil" Then KodaCevir = 10 If GelenText = "Mavi" Then KodaCevir = 9 If GelenText = "Sarı" Then KodaCevir = 14 If GelenText = "Çok İnce" Then KodaCevir = 1 If GelenText = "İnce" Then KodaCevir = 2 If GelenText = "Orta" Then KodaCevir = 3 If GelenText = "Kalın" Then KodaCevir = 4 If GelenText = "Çok Kalın" Then KodaCevir = 5 End Function RenkKodu, ilgili ComboBox’tan seçilen rengin kodunu tutar. CizimModu ise Kalem ya da Silgi düğmelerinden hangisinin aktif olduğunu belirler. (1=Kalem,0=Silgi) KodaCevir fonksiyonu, text olarak gelen bilgiye karşılık gelen kodu geri döndürür. 2. Olay Kodları Private Sub Form_Load() CizimModu = 1 Me.DrawWidth = 2 TxtCemberYrcp.Text = "20" CmbRenk.AddItem "Siyah" CmbRenk.AddItem "Kırmızı" CmbRenk.AddItem "Mavi" CmbRenk.AddItem "Yeşil" CmbRenk.AddItem "Sarı" CmbKalinlik.AddItem "Çok İnce" CmbKalinlik.AddItem "İnce" CmbKalinlik.AddItem "Orta" CmbKalinlik.AddItem "Kalın" CmbKalinlik.AddItem "Çok Kalın" End Sub Form yükleniyor. Çizim modu kaleme göre ayarlanıyor. Formun DrawWidth özelliğine (çizgi kalınlığı) 2 değeri veriliyor. TxtCemberYrcp TextBox’unun text özelliğine 20 değeri veriliyor ve sırasıyla CmbRenk ve CmbKalinlik ComboBox’ları dolduruluyor. Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) If Button = 1 Then Line -(X, Y), QBColor(RenkKodu) End Sub Fare imleci yer değiştiriyor. Eğer bu sırada basılan düğme sol fare düğmesi ise imlecin son çizim konumundan (CurrentX,CurrentY) o anki konumuna (X,Y) RenkKodu ile bir çizgi parçası çiziliyor. Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) If Button = 2 Then Line -(X, Y), QBColor(RenkKodu) End Sub Fare düğmesi bırakılıyor. Eğer bırakılan düğme sağ fare düğmesi ise imlecin son çizim konumundan (CurrentX,CurrentY) o anki konumuna (X,Y) RenkKodu ile bir çizgi parçası çiziliyor. Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) CurrentX = X CurrentY = Y End Sub Fare düğmesine basılıyor. Son çizim konumunu fare düğmelerinden herhangi birisine basılan konum olarak atar. Private Sub Form_DblClick() If CizimModu = 1 Then FillColor = QBColor(RenkKodu) If OptDolgulu.Value = True Then FillStyle = 0 Else FillStyle = 1 Circle(CurrentX, CurrentY),Val(TxtCemberYrcp.Text) * 10 End If End Sub Form üzerinde çift-tıklama yapılıyor. Eğer çizim modu 1 ise, yani kalem butonu basılı ise formun doldurma rengi özelliği RenkKodu değişkeninin taşıdığı değere karşılık gelen renk kodunu alıyor ve OptDolgulu OptionButton’ın Value özelliğinin True ya da aksi olması durumuna göre (Bu seçenek seçili ya da değil) formun FillStyle özelliği belirleniyor. Circle metodu kullanılarak son çizim konumu merkezli ve TxtCemberYrcp TextBox’ında yer alan değerin 10 katı yarıçaplı bir çember çiziliyor. Private Sub CmbRenk_Click() RenkKodu = KodaCevir(CmbRenk.Text) End Sub CmbRenk ComboBox’ında seçilen rengin kod karşılığını RenkKodu değişkenine aktarır. Private Sub CmbKalinlik_Click() Me.DrawWidth = KodaCevir(CmbKalinlik.Text) End Sub CmbKalinlik ComboBox’ında seçilen çizgi kalınlığını kod karşılığını formun DrawWidth özelliğine aktarır. Private Sub BtnTemizle_Click() Me.Cls End Sub BtnTemizle butonuna basılıyor. Form temizleniyor. Private Sub BtnCikis_Click() End End Sub BtnCikis butonuna basılıyor. Program sonlanıyor. Private Sub BtnSilgi_Click() CizimModu = 0 Me.DrawWidth = 15 RenkKodu = 15 BtnSilgi.BackColor = &H80000018 'Sarı renk kodu BtnKalem.BackColor = &H8000000F 'Gri renk kodu End Sub BtnSilgi butonuna basılıyor. Çizim modu silgi olarak belirleniyor ve kalınlık 15’e, renk kodu 15’e (beyaz) ayarlanıyor. BtnSilgi butonunun arka fon rengi sarı, BtnKalem butonunun arka fon rengi griye dönüştürülüyor. Private Sub BtnKalem_Click() CizimModu = 1 Me.DrawWidth = KodaCevir(CmbKalinlik.Text) RenkKodu = KodaCevir(CmbRenk.Text) BtnKalem.BackColor = &H80000018 'Sarı renk kodu BtnSilgi.BackColor = &H8000000F 'Gri renk kodu End Sub BtnKalem butonuna basılıyor. Çizim modu kalem olarak belirleniyor ve kalınlık CmbKalinlik ComboBox’ının textinin kod değerine, renk kodu CmbRenk ComboBox’ının textinin kod değerine ayarlanıyor. BtnSilgi butonunun arka fon rengi gri, BtnKalem butonunun arka fon rengi sarıya dönüştürülüyor. DEĞİŞKEN TANIMLAMALARI (DIM) Değişken tanımlamaları genel olarak üç farklı biçimde yapılabilir: Global, Yarı-global ve Lokal. Lokal tanımlamalar bir nesneye ait altprogramlar içersinde gerçekleştirilen tanımlamalardır. Yarı-global tanımlamalar ise söz konusu nesnenin declarations kesiminde gerçekleştirilen ve nesneye ait tüm kodlarda geçerlilik sağlayan tanımlamalardır. Global tanımlamalar, projenin module bileşeninde gerçekleştirilirler ve tüm proje kapsamında geçerlilik sağlarlar. Değişken tanımlamalarında kullanılan Dim deyiminin genel sözdizimi aşağıdaki gibidir: Dim <Değişken adı>[([indisler])] [As [New] tür] Açıklamalar: <Değişken adı> Standart değişken isimlendirme kurallarına bağlı kalarak (Türkçe harfler, aritmetik işlem ya da mantıksal bağlaç operatörleri kullanılmayacak) verilecek herhangi bir isim. indisler Dizi türü değişken tanımlamalarında kullanılan indis alt ve üst sınırı. Genel olarak şu şekilde tanımlanırlar: AltSınır To ÜstSınır New Belirtildiği takdirde daha önceden tanımlanmış olan değişken, reset yapılarak yeniden tanımlanır. tür Belirtme zorunluluğu yoktur. (Belirtilmediği takdirde Variant olarak algılanır) Genel olarak kullanılabilecek değişken türleri: Byte (Küçük tamsayı), Boolean (Doğru/Yanlış), Integer (Tamsayı), Long (Büyük tamsayı), Currency (Para birimi), Single (Küçük gerçel sayı), Double (Büyük gerçel sayı), Decimal (10’un kuvvetleri), Date (tarih), String (metin), String*uzunluk (sabit-uzunluklu metinler için), Object (Nesne), Variant (Nümerik, string ya da tarih türlerinin hepsini kapsayan bir tür.) ya da kullanıcı-tanımlı bir tür. Örnek: Dim Deger1, Deger2 ‘Her ikisi de Variant Dim Sayi As Integer Dim Bulundu, Secim As Boolean, DogumTrh As Date Dim Dizi(50) ’51 elemanlı Variant dizisi Dim Matris(3, 4) As Integer ’12 elemanlı tamsayı matrisi Dim Matris3d(1 To 5, 4 To 9, 3 To 5) As Double ’90 elemanlı gerçel sayı matrisi Dim Trh(1 To 10) As Date ‘1 den 10 a kadar indekslenmiş tarih dizisi Dim MyArray() ‘Dinamik bir Variant dizisi (Belirli bir indeksleme yok) KOŞULLU İFADELER 1. If..Then..Else Tek-satırlı kullanım: If <koşul ifadesi> Then deyimler [Else deyimler] Blok kullanımı: If <koşul ifadesi> Then deyimler [ElseIf <koşul ifadesi> Then deyimler] [Else deyimler] End If Açıklamalar: <koşul ifadesi> True(Doğru) ya da False(Yanlış) olarak değerlendirilebilecek sayısal ya da sayısal olmayan bir ifade. Eğer koşul boş ise (Null), False olarak değerlendirilir. deyimler Tek-satırlı kullanımda birbirlerinden “:” işareti ile ayrılmış çalıştırılabilir kod deyimleri. Örneğin; If A > 10 Then A = A + 1 : B = B + A : C = C + B gibi. Blok kullanımda her biri ayrı satırlara yazılmış çalıştırılabilir kod deyimleri. Örnek: Dim Sayi, Basamak, Sonuc Sayi = 53 ' Değişkenin ilk değeri atanıyor. ‘ Blok kullanımı: If Sayi < 10 Then Basamak = 1 ElseIf Sayi < 100 Then Basamak = 2 Else Basamak = 3 End If ' Tek-satırlı kullanım: If Basamak = 1 Then Sonuc = "Tek basamaklı" Else Sonuc = "Birden çok basamaklı" 2. Select Case Select Case <ifade> [Case <ifade-1> [<deyimler-1>] [Case <ifade-2> [<deyimler-2>] . . . [Case <ifade-n> [<deyimler-n>] [Case Else [deyimler] End Select Örnek: Private Sub Command1_Click() Select Case Val(Text1.Text) Case 0 To 49 MsgBox "Notunuz:D" Case 50 To 69 MsgBox "Notunuz:C" Case 70 To 89 MsgBox "Notunuz:B" Case 90 To 100 MsgBox "Notunuz:A" Case Else MsgBox "Notunuz Alfabetik Sistemde Hesaplanamadı" End Select End Sub DÖNGÜLER 1. Do..Loop İki farklı kullanımı olan döngü deyimidir. Bunlardan ilki; Do [{While | Until} <koşul ifadesi>] [deyimler] [Exit Do] [deyimler] Loop Diğeri ise; Do [deyimler] [Exit Do] [deyimler] Loop [{While | Until} <koşul ifadesi>] biçimindedir. İki kullanım arasındaki fark, ilkinde koşulun işlemlere başlanmadan önce, ikincisinde ise işlemler en az bir defa gerçekleştirildikten sonra denetleniyor olmasıdır. Exit Do ifadesi deyimler arasında istenilen bir noktada döngüyü kırmak için kullanılır. Örnek: Dim Denetle, Sayac Denetle = True: Sayac = 0 ' Değişkenlerin ilk değerleri atanıyor. Do ' Dıştaki döngü başlıyor. Do While Sayac < 20 ' İçteki döngü. Sayac = Sayac + 1 ' Sayac birer birer artıyor. If Sayac = 10 Then Denetle = False Exit Do ' İçteki döngüden çıkılıyor. End If Loop Loop Until Denetle = False ' Dıştaki döngü için sonlanma koşulu. 2. For Each..Next For Each <eleman> In <grup> [deyimler] [Exit For] [deyimler] Next [eleman] Örnek: Verilen örnekte Nesne, text özelliğine sahip bir nesneyi temsil eden değişkendir. Koleksiyon ise bir nesneler koleksiyonudur. Dim Bulundu, Nesne, Koleksiyon Bulundu = False For Each Nesne In Koleksiyon If Nesne.Text = "Merhaba" Then Bulundu = True Exit For End If Next 3. For..Next En çok kullanılan döngü biçimidir. Başlangıç ve bitiş değerleri sayısal ya da sayısal olmayan ifadeler, basamak ise döngü sıçrama değeridir. For <sayaç> = <başlangıç değeri> To <bitiş değeri> [Step <basamak>] [deyimler] [Exit For] [deyimler] Next [<sayaç>] Örnek: Dim Kelimeler, Karakterler, YeniText For Kelimeler = 10 To 1 Step -1 ' 10’dan başlayarak azalan döngü. For Karakterler = 0 To 9 ' 0’dan başlayarak artan döngü. YeniText = YeniText & Karakterler ' YeniText stringi oluşturuluyor. Next Karakterler YeniText = YeniText & " " ' Kelimeler arası bir boşluk ekleniyor. Next Kelimeler 4. While..Wend Ön-denetimli bir koşullu döngü biçimidir: While <koşul ifadesi> [deyimler] Wend Örnek: Dim Sayac Sayac = 0 While Sayac < 20 Sayac = Sayac + 1 Wend SUB PROSEDÜRLER Sadece veri girişi yapılabilen altprogramlardır. Genel sözdizimleri aşağıdaki gibidir: [Private | Public | Friend] [Static] Sub <Prosedür Adı> [(parametreler)] [deyimler] [Exit Sub] [deyimler] End Sub Hazırlanan bir sub prosedürü sadece adı ve parametreleri kullanılarak ya da Call <Prosedür Adı> (parametreler) bildirimi ile çağrılabilir. NOT : Sözdizimde yer alan öntakılar için bakınız: Fonksiyonlar. Örnek: ‘Dikdörtgenin alanı hesaplanıyor: Sub DikdörtgenAlan(Uzunluk, Yukseklik) Dim Alan As Double ' Lokal değişken. If Uzunluk = 0 Or Yukseklik = 0 Then Exit Sub End If Alan = Yukseklik * Uzunluk MsgBox Alan End Sub ‘Formu ekrana göre ortalayan altprogram: Sub CenterForm(frm as Form) ‘Parametre olarak Form nesnesi türünde tanımlanmış ‘frm değişkeni kullanılıyor. frm.left=(screen.Width-frm.Width)/2 ‘Formun sol kenar konumu, ekran genişliği ile ‘formun genişliğinin farkının yarısı oluyor. (form, ‘ekranın yatay-ortasına göre ortalanıyor) frm.top=(screen.Height-frm. Height)/2 ‘Formun üst kenar konumu,ekran yüksekliği ile ‘formun yüksekliğinin farkının yarısı oluyor. ‘(form,ekranın dikey-ortasına göre ortalanıyor) End Sub HESAP MAKİNESİ V1.0 Bu kesimde genel bir hesap makinesi uygulaması geliştireceğiz. Bu uygulamada amaç, TextBox ve CommandButton kontrollerinin etkin olarak kullanımları üzerinde daha fazla pratik yapmaktır. Uygulamamız, genel görünümü aşağıda verilen bir tek forma sahip olacaktır: Önbilgiler String İşlemleri String türü bilgiler üzerinde çeşitli işlemler gerçekleştiren bazı önemli fonksiyonlar aşağıda verilmiştir: LSet stringvar = string; varname1 = varname2 : String değişkenler arasında sola dayalı olarak aktarma yapar. Örnek: Dim DnmStr DnmStr = "0123456789" ' String değişkenin ilk değeri. Lset DnmStr = "<-Sola" RSet stringvar = string; varname1 = varname2 : String değişkenler arasında sağa dayalı olarak aktarma yapar. InStr([başlangıç, ]string1, string2[, AramaModu]) : string1 içersinde string2 nin ilk bulunuş pozisyonunu verir. Örnek: Dim ArananString, ArananKarakter, Pozisyon ArananString ="XXpXXpXXPXXP" . ArananKarakter = "P" Pozisyon = Instr(4, ArananString, ArananKarakter, 1) ‘4 ten itibaren metinsel (textual) arama yapar. Sonuç:6 Pozisyon = Instr(1, ArananString, ArananKarakter, 0) ‘1 den itibaren ikili (binary) arama yapar. Sonuç :9 Pozisyon = Instr(ArananString, ArananKarakter) ' Varsayılan arama modu ikili aramadır. Sonuç:9. Pozisyon = Instr(1, ArananString, "W") ' Sonuç: 0. & Operatörü : İki stringin birleştirilmesinde kullanılır. Asc(string) : Eğer string birden çok karakterden oluşuyorsa ilk karakterin ASCII değerini verir. Örnek: Dim Sayi Sayi = Asc("A") ' Sonuç: 65. Sayi = Asc("a") ' Sonuç: 97. Sayi = Asc("Alfabe") ' Sonuç: 65. Chr(kod) : Koda karşılık gelen karakteri verir. Str(sayı) : Sayıyı string türüne dönüştürür. Val(string) : String bilgiyi sayısal bilgiye dönüştürür. Left(string, uzunluk) : stringin soldan uzunluk sayıda karakterin oluşturduğu parçasını verir. Örnek: Dim String1, String2 String1 = "Merhaba Dünya" String2 = Left(String1, 1) ' Sonuç: "M". String2 = Left(String1, 7) ' Sonuç: "Merhaba". String2 = Left(String1, 20) ' Sonuç: "Merhaba Dünya". Right(string, uzunluk) : stringin sağdan uzunluk sayıda karakterin oluşturduğu parçasını verir. Len(string) : stringin karakter sayısını verir. LTrim(string), RTrim(string), Trim(string) : Sırasıyla string içersinde yer alan boşluklardan soldakileri, sağdakileri, sol ve sağdakileri elimine ederler. Mid(string, başlangıç[, uzunluk]) : string içersinden, başlangıç pozisyonundan itibaren uzunluk sayıda karakterin oluşturduğu stringi verir. Mid(string1, başlangıç[, uzunluk]) = string2 : string1 içersinde, başlangıç pozisyonundan itibaren uzunluk sayıda karakterin yerine string2 yi aktarır. Örnek: Dim yazi yazi = "Duvardan köpek atladı" Mid(yazi, 10, 5) = "tilki" ' yazi = "Duvardan tilki atladı". Space(sayı) : Belirtilen sayı kadar boşluk karakteri içeren boş string üretir. String(sayı, karakter) : Belirtilen karakteri belirtilen sayı kadar tekrarlı olarak içeren string üretir. Örnek: Dim Str1 Str1 = String(5, "*") ' Sonuç: "*****". Str1 = String(5, 42) ' Sonuç: "*****". Str1 = String(10, "ABC") ' Sonuç: "AAAAAAAAAA". Veri Türleri Dönüşüm Fonksiyonları CBool(ifade) CByte(ifade) CCur(ifade) CDate(ifade) CDbl(ifade) CDec(ifade) CInt(ifade) CLng(ifade) CSng(ifade) CVar(ifade) CStr(ifade) Açıklamalı Kodlar Dim sayi, Bellek1, Bellek2, Bellek3, Bellek4 As Double Dim TusaBasildi As Byte Dim Arti, Eksi, Carpi, Bol, Kuvvet, Ondalik As Boolean Değişken tanımlamaları. Private Sub Btn0_Click() If TusaBasildi = 0 Then If CDbl(TxtEkran.Text) <> 0 Or Ondalik Then TxtEkran.Text = TxtEkran.Text & "0" Else TxtEkran.Text = "0" End If Else TusaBasildi = 0 If Ondalik Then TxtEkran.Text = TxtEkran.Text & "0" Else sayi = CDbl(TxtEkran.Text) TxtEkran.Text = "0" End If End If If LbBilgiEkr.Caption="E" Then LbBilgiEkr.Caption="" End Sub 0 (Sıfır) butonuna basılıyor. TusaBasildi değişkeni herhangi bir aritmetik işlem butonuna basılıp basılmadığını belirliyor. (0=basılmamış, 1=basılmış) Ondalik boolean değişkeni ise ondalık düğmesine basılıp basılmadığını belirliyor. (T=basılmış, F=basılmamış) Kod iki ana durum altında inceleniyor: Arit.işlem tuşuna basılmış ya da basılmamış. Eğer basılmamışsa ondalık tuşunun da durumuna göre ekrana yeni bir 0 ekleniyor veya doğrudan 0 aktarılıyor. Eğer basılmışsa yine ondalık tuşunun durumuna göre ekrana yeni bir 0 ekleniyor veya ekrandaki mevcut sayı sayi değişkenine alınarak ekrana doğrudan 0 aktarılıyor. Son olarak, eğer bilgi ekranında E (Hata) varsa bu kaldırılıyor. Private Sub BtnAE_Click() TxtEkran.Text = -1 * CDbl(TxtEkran.Text) If LbBilgiEkr.Caption="E" Then LbBilgiEkr.Caption="" End Sub Art-Eksi butonuna basılıyor. Ekrandaki değer –1 ile çarpılıyor ve eğer bilgi ekranında E (Hata) varsa bu kaldırılıyor. Private Sub BtnAl1_Click() If CDbl(TxtEkran.Text) <> 0 Then Bellek1 = CDbl(TxtEkran.Text) BtnAl1.BackColor = QBColor(12) End If End Sub İlk bellek hücresine veri giriş butonuna basılıyor. Eğer ekrandaki değer sıfırdan farklıysa Bellek1 değişkenine ekrandaki string değer double türüne dönüştürülerek yerleştiriliyor. Bunun ardından butonun rengi kırmızı yapılıyor. Private Sub BtnBellekTmz_Click() Bellek1 = 0 Bellek2 = 0 Bellek3 = 0 Bellek4 = 0 BtnAl1.BackColor = QBColor(10) BtnAl2.BackColor = QBColor(10) BtnAl3.BackColor = QBColor(10) BtnAl4.BackColor = QBColor(10) End Sub Bellek temizleme butonuna basılıyor. Tüm bellek değişkenleri sıfırlanıyor ve veri giriş butonları tekrar ilk renklerine (yeşil) dönüştürülüyor. Private Sub BtnTopla_Click() TusaBasildi = 1 Arti = True Ondalik = False LbBilgiEkr.Caption = "+" End Sub Aritmetik işlem butonlarına basılıyor. Her tuş için kendisine ait boolean değişken True oluyor, bilgi ekranına basılan tuşun etiketi aktarılıyor ve TusaBasildi ile Ondalik değişkenleri uygun değerleri alıyor. Private Sub BtnC_Click() TxtEkran.Text = 0 TusaBasildi = 0 Ondalik = False LbBilgiEkr.Caption = "" End Sub Tam Silme butonuna basılıyor. Tüm değerler sıfırlanıyor. Private Sub BtnCE_Click() TxtEkran.Text = 0 Ondalik = False LbBilgiEkr.Caption = "" End Sub Kısmi Silme butonuna basılıyor. TusaBasildi hariç tüm değerler sıfırlanıyor. Dolayısıyla işlem ve işlemden önceki sayı korunmuş oluyor. Private Sub BtnDel_Click() If CDbl(TxtEkran.Text) <> 0 Then If Len(TxtEkran.Text) = 1 Or (Len(TxtEkran.Text) = 2 And Left(TxtEkran.Text, 1) = "-") Then TxtEkran.Text = 0 Else TxtEkran.Text = Left(TxtEkran.Text, Len(TxtEkran.Text) - 1) End If End If LbBilgiEkr.Caption = "" End Sub Sağdan-Silme butonuna basılıyor. Kod eğer ekrandaki text sıfırdan farklıysa çalışıyor. İki durumda inceleniyor: Eğer ekranda tek karakter kaldıysa ya da tek karakterli negatif bir sayı kaldıysa (-3 gibi) doğrudan sıfıra indirgeniyor. Aksi durumlarda ekrandaki karakterler sağdan birer birer siliniyor. Private Sub BtnEsit_Click() If Arti Then TxtEkran.Text = sayi + CDbl(TxtEkran.Text) Arti = False ElseIf Eksi Then TxtEkran.Text = sayi - CDbl(TxtEkran.Text) Eksi = False ElseIf Carpi Then TxtEkran.Text = sayi * CDbl(TxtEkran.Text) Carpi = False ElseIf Bol Then If CDbl(TxtEkran.Text) = 0 Then LbBilgiEkr.Caption = "E" Else TxtEkran.Text = sayi / CDbl(TxtEkran.Text) End If Bol = False ElseIf Kuvvet Then TxtEkran.Text = sayi ^ CDbl(TxtEkran.Text) Kuvvet = False End If TusaBasildi = 1 Ondalik = False LbBilgiEkr.Caption = "" End Sub Eşittir butonuna basılıyor. Daha önce basılan arit.işlem butonuna göre işlemden önceki sayı ve o an ekranda bulunan sayı işleme sokuluyor. Bölme işleminde, sıfıra bölünme hatası algılanıyor ve bilgi ekranına hata işareti (E) basılıyor. Private Sub BtnOff_Click() Unload Me End Sub Off butonuna basılıyor. Form geri-yükleniyor. Private Sub BtnOndlk_Click() If Not Ondalik Then Ondalik = True If TusaBasildi = 0 Then TxtEkran.Text = TxtEkran.Text & "," Else sayi = CDbl(TxtEkran.Text) TxtEkran.Text = "0," End If End If End Sub Ondalık butonuna basılıyor. Kod eğer daha önce bu butona basılmadıysa çalışıyor. Aritmetik işlem butonuna basılmışsa sayı ekrandan alınıyor (işlemde kullanılmak üzere) ve ekrana “0,” basılıyor. Aksi durumda ekrandaki değer “,” ekleniyor. Private Sub BtnSqrt_Click() TusaBasildi = 1 If CDbl(TxtEkran.Text) < 0 Then LbBilgiEkr.Caption = "E" Else TxtEkran.Text = Sqr(CDbl(TxtEkran.Text)) End If If LbBilgiEkr.Caption<>"E" Then LbBilgiEkr.Caption="" End Sub Karekök butonuna basılıyor. Eğer ekrandaki sayı negatifse bilgi ekranına hata işareti basılıyor. Aksi durumda ekrandaki sayının karekökü hesaplanıp yine ekrana aktarılıyor. Private Sub BtnVer1_Click() If Bellek1 <> 0 Then If TusaBasildi = 0 Then TxtEkran.Text = Bellek1 Else sayi = CDbl(TxtEkran.Text) TusaBasildi = 0 TxtEkran.Text = Bellek1 End If End If TusaBasildi = 1 End Sub İlk bellek hücresine veri çıkış butonuna basılıyor. Kod, hücredeki değer sıfırdan farklıysa iki durumda çalışıyor: Eğer aritmetik işlem tuşuna basılmamıisa ekrana Bellek1 değişkenindeki değer yerleştiriliyor. Aksi durumda ekrandaki değer sayı değişkenine alınıyor ve ekrana Bellek1 değişkenindeki değer yerleştiriliyor. Private Sub BtnX_Click() TusaBasildi = 1 If CDbl(TxtEkran.Text) = 0 Then LbBilgiEkr.Caption = "E" Else TxtEkran.Text = 1 / CDbl(TxtEkran.Text) End If If LbBilgiEkr.Caption<>"E" Then LbBilgiEkr.Caption="" End Sub 1/x butonuna basılıyor. Ekrandaki değer sıfırdan farklıysa 1/değer hesaplanıp tekrar ekrana aktarılıyor. Aksi durumda bilgi ekranına hata işareti (E) basılıyor. Private Sub BtnX2_Click() TusaBasildi = 1 TxtEkran.Text = CDbl(TxtEkran.Text) ^ 2 LbBilgiEkr.Caption = "" End Sub x^2 butonuna basılıyor. Ekrandaki değerin karesi hesaplanıp tekrar ekrana aktarılıyor. Kodun Tamamı Dim sayi, Bellek1, Bellek2, Bellek3, Bellek4 As Double Dim TusaBasildi As Byte Dim Arti, Eksi, Carpi, Bol, Kuvvet, Ondalik As Boolean Private Sub Btn0_Click() If TusaBasildi = 0 Then If CDbl(TxtEkran.Text) <> 0 Or Ondalik Then TxtEkran.Text = TxtEkran.Text & "0" Else TxtEkran.Text = "0" End If Else TusaBasildi = 0 If Ondalik Then TxtEkran.Text = TxtEkran.Text & "0" Else sayi = CDbl(TxtEkran.Text) TxtEkran.Text = "0" End If End If If LbBilgiEkr.Caption = "E" Then LbBilgiEkr.Caption = "" End Sub Private Sub Btn1_Click() If TusaBasildi = 0 Then If CDbl(TxtEkran.Text) <> 0 Or Ondalik Then TxtEkran.Text = TxtEkran.Text & "1" Else TxtEkran.Text = "1" End If Else TusaBasildi = 0 If Ondalik Then TxtEkran.Text = TxtEkran.Text & "1" Else sayi = CDbl(TxtEkran.Text) TxtEkran.Text = "1" End If End If If LbBilgiEkr.Caption = "E" Then LbBilgiEkr.Caption = "" End Sub Private Sub Btn2_Click() If TusaBasildi = 0 Then If CDbl(TxtEkran.Text) <> 0 Or Ondalik Then TxtEkran.Text = TxtEkran.Text & "2" Else TxtEkran.Text = "2" End If Else TusaBasildi = 0 If Ondalik Then TxtEkran.Text = TxtEkran.Text & "2" Else sayi = CDbl(TxtEkran.Text) TxtEkran.Text = "2" End If End If If LbBilgiEkr.Caption = "E" Then LbBilgiEkr.Caption = "" End Sub Private Sub Btn3_Click() If TusaBasildi = 0 Then If CDbl(TxtEkran.Text) <> 0 Or Ondalik Then TxtEkran.Text = TxtEkran.Text & "3" Else TxtEkran.Text = "3" End If Else TusaBasildi = 0 If Ondalik Then TxtEkran.Text = TxtEkran.Text & "3" Else sayi = CDbl(TxtEkran.Text) TxtEkran.Text = "3" End If End If If LbBilgiEkr.Caption = "E" Then LbBilgiEkr.Caption = "" End Sub Private Sub Btn4_Click() If TusaBasildi = 0 Then If CDbl(TxtEkran.Text) <> 0 Or Ondalik Then TxtEkran.Text = TxtEkran.Text & "4" Else TxtEkran.Text = "4" End If Else TusaBasildi = 0 If Ondalik Then TxtEkran.Text = TxtEkran.Text & "4" Else sayi = CDbl(TxtEkran.Text) TxtEkran.Text = "4" End If End If If LbBilgiEkr.Caption = "E" Then LbBilgiEkr.Caption = "" End Sub Private Sub Btn5_Click() If TusaBasildi = 0 Then If CDbl(TxtEkran.Text) <> 0 Or Ondalik Then TxtEkran.Text = TxtEkran.Text & "5" Else TxtEkran.Text = "5" End If Else TusaBasildi = 0 If Ondalik Then TxtEkran.Text = TxtEkran.Text & "5" Else sayi = CDbl(TxtEkran.Text) TxtEkran.Text = "5" End If End If If LbBilgiEkr.Caption = "E" Then LbBilgiEkr.Caption = "" End Sub Private Sub Btn6_Click() If TusaBasildi = 0 Then If CDbl(TxtEkran.Text) <> 0 Or Ondalik Then TxtEkran.Text = TxtEkran.Text & "6" Else TxtEkran.Text = "6" End If Else TusaBasildi = 0 If Ondalik Then TxtEkran.Text = TxtEkran.Text & "6" Else sayi = CDbl(TxtEkran.Text) TxtEkran.Text = "6" End If End If If LbBilgiEkr.Caption = "E" Then LbBilgiEkr.Caption = "" End Sub Private Sub Btn7_Click() If TusaBasildi = 0 Then If CDbl(TxtEkran.Text) <> 0 Or Ondalik Then TxtEkran.Text = TxtEkran.Text & "7" Else TxtEkran.Text = "7" End If Else TusaBasildi = 0 If Ondalik Then TxtEkran.Text = TxtEkran.Text & "7" Else sayi = CDbl(TxtEkran.Text) TxtEkran.Text = "7" End If End If If LbBilgiEkr.Caption = "E" Then LbBilgiEkr.Caption = "" End Sub Private Sub Btn8_Click() If TusaBasildi = 0 Then If CDbl(TxtEkran.Text) <> 0 Or Ondalik Then TxtEkran.Text = TxtEkran.Text & "8" Else TxtEkran.Text = "8" End If Else TusaBasildi = 0 If Ondalik Then TxtEkran.Text = TxtEkran.Text & "8" Else sayi = CDbl(TxtEkran.Text) TxtEkran.Text = "8" End If End If If LbBilgiEkr.Caption = "E" Then LbBilgiEkr.Caption = "" End Sub Private Sub Btn9_Click() If TusaBasildi = 0 Then If CDbl(TxtEkran.Text) <> 0 Or Ondalik Then TxtEkran.Text = TxtEkran.Text & "9" Else TxtEkran.Text = "9" End If Else TusaBasildi = 0 If Ondalik Then TxtEkran.Text = TxtEkran.Text & "9" Else sayi = CDbl(TxtEkran.Text) TxtEkran.Text = "9" End If End If If LbBilgiEkr.Caption = "E" Then LbBilgiEkr.Caption = "" End Sub Private Sub BtnAE_Click() TxtEkran.Text = -1 * CDbl(TxtEkran.Text) If LbBilgiEkr.Caption = "E" Then LbBilgiEkr.Caption = "" End Sub Private Sub BtnAl1_Click() If CDbl(TxtEkran.Text) <> 0 Then Bellek1 = CDbl(TxtEkran.Text) BtnAl1.BackColor = QBColor(12) End If End Sub Private Sub BtnAl2_Click() If CDbl(TxtEkran.Text) <> 0 Then Bellek2 = CDbl(TxtEkran.Text) BtnAl2.BackColor = QBColor(12) End If End Sub Private Sub BtnAl3_Click() If CDbl(TxtEkran.Text) <> 0 Then Bellek3 = CDbl(TxtEkran.Text) BtnAl3.BackColor = QBColor(12) End If End Sub Private Sub BtnAl4_Click() If CDbl(TxtEkran.Text) <> 0 Then Bellek4 = CDbl(TxtEkran.Text) BtnAl4.BackColor = QBColor(12) End If End Sub Private Sub BtnBellekTmz_Click() Bellek1 = 0 Bellek2 = 0 Bellek3 = 0 Bellek4 = 0 BtnAl1.BackColor = QBColor(10) BtnAl2.BackColor = QBColor(10) BtnAl3.BackColor = QBColor(10) BtnAl4.BackColor = QBColor(10) End Sub Private Sub BtnBol_Click() TusaBasildi = 1 Bol = True Ondalik = False LbBilgiEkr.Caption = "/" End Sub Private Sub BtnC_Click() TxtEkran.Text = 0 TusaBasildi = 0 Ondalik = False LbBilgiEkr.Caption = "" End Sub Private Sub BtnCarp_Click() TusaBasildi = 1 Carpi = True Ondalik = False LbBilgiEkr.Caption = "x" End Sub Private Sub BtnCikar_Click() TusaBasildi = 1 Eksi = True Ondalik = False LbBilgiEkr.Caption = "-" End Sub Private Sub BtnDel_Click() If CDbl(TxtEkran.Text) <> 0 Then If Len(TxtEkran.Text) = 1 Or (Len(TxtEkran.Text) = 2 And Left(TxtEkran.Text, 1) = "-") Then TxtEkran.Text = 0 Else TxtEkran.Text = Left(TxtEkran.Text, Len(TxtEkran.Text) - 1) End If End If LbBilgiEkr.Caption = "" End Sub Private Sub BtnEsit_Click() If Arti Then TxtEkran.Text = sayi + CDbl(TxtEkran.Text) Arti = False ElseIf Eksi Then TxtEkran.Text = sayi - CDbl(TxtEkran.Text) Eksi = False ElseIf Carpi Then TxtEkran.Text = sayi * CDbl(TxtEkran.Text) Carpi = False ElseIf Bol Then If CDbl(TxtEkran.Text) = 0 Then LbBilgiEkr.Caption = "E" Else TxtEkran.Text = sayi / CDbl(TxtEkran.Text) End If Bol = False ElseIf Kuvvet Then TxtEkran.Text = sayi ^ CDbl(TxtEkran.Text) Kuvvet = False End If TusaBasildi = 1 Ondalik = False LbBilgiEkr.Caption = "" End Sub Private Sub BtnOff_Click() Unload Me End Sub Private Sub BtnOndlk_Click() If Not Ondalik Then Ondalik = True If TusaBasildi = 0 Then TxtEkran.Text = TxtEkran.Text & "," Else sayi = CDbl(TxtEkran.Text) TxtEkran.Text = "0," End If End If End Sub Private Sub BtnSqrt_Click() TusaBasildi = 1 If CDbl(TxtEkran.Text) < 0 Then LbBilgiEkr.Caption = "E" Else TxtEkran.Text = Sqr(CDbl(TxtEkran.Text)) End If If LbBilgiEkr.Caption <> "E" Then LbBilgiEkr.Caption = "" End Sub Private Sub BtnTopla_Click() TusaBasildi = 1 Arti = True Ondalik = False LbBilgiEkr.Caption = "+" End Sub Private Sub BtnCE_Click() TxtEkran.Text = 0 Ondalik = False LbBilgiEkr.Caption = "" End Sub Private Sub BtnVer1_Click() If Bellek1 <> 0 Then If TusaBasildi = 0 Then TxtEkran.Text = Bellek1 Else sayi = CDbl(TxtEkran.Text) TxtEkran.Text = 0 TusaBasildi = 0 TxtEkran.Text = Bellek1 End If End If TusaBasildi = 1 End Sub Private Sub BtnVer2_Click() If Bellek2 <> 0 Then If TusaBasildi = 0 Then TxtEkran.Text = Bellek2 Else sayi = CDbl(TxtEkran.Text) TxtEkran.Text = 0 TusaBasildi = 0 TxtEkran.Text = Bellek2 End If End If TusaBasildi = 1 End Sub Private Sub BtnVer3_Click() If Bellek3 <> 0 Then If TusaBasildi = 0 Then TxtEkran.Text = Bellek3 Else sayi = CDbl(TxtEkran.Text) TxtEkran.Text = 0 TusaBasildi = 0 TxtEkran.Text = Bellek3 End If End If TusaBasildi = 1 End Sub Private Sub BtnVer4_Click() If Bellek4 <> 0 Then If TusaBasildi = 0 Then TxtEkran.Text = Bellek4 Else sayi = CDbl(TxtEkran.Text) TxtEkran.Text = 0 TusaBasildi = 0 TxtEkran.Text = Bellek4 End If End If TusaBasildi = 1 End Sub Private Sub BtnX_Click() TusaBasildi = 1 If CDbl(TxtEkran.Text) = 0 Then LbBilgiEkr.Caption = "E" Else TxtEkran.Text = 1 / CDbl(TxtEkran.Text) End If If LbBilgiEkr.Caption <> "E" Then LbBilgiEkr.Caption = "" End Sub Private Sub BtnX2_Click() TusaBasildi = 1 TxtEkran.Text = CDbl(TxtEkran.Text) ^ 2 LbBilgiEkr.Caption = "" End Sub Private Sub BtnXY_Click() TusaBasildi = 1 Kuvvet = True LbBilgiEkr.Caption = "^" Ondalik = False End Sub Private Sub Form_Load() TxtEkran.Text = 0 TusaBasildi = 0 Arti = False Eksi = False Carpi = False Bol = False Ondalik = False Bellek1 = 0 Bellek2 = 0 Bellek3 = 0 Bellek4 = 0 End Sub HESAP MAKİNESİ V1.1 : HESAPLAMADA HIZIN YENİ ADI ! Hesap makinemizin bu yeni versiyonunda görünüm ve işlev olarak önemli bir değişiklik yapmıyoruz. Ancak sloganımıza da uygun olarak kodlarda oldukça kısalık sağlayacak, dolayısıyla çalışabilir program kodunu (exe) önemli ölçüde küçültecek ve çalışma-zamanı hızını artıracak bazı modifikasyonlar yapacağız. Bunlar iki grupta toplayabiliriz: • Kontrol Dizileri (Control Arrays) • Hata Algılayıcı (On Error .. GoTo) Kontrol Dizileri (Control Arrays) Kontrol dizileri, benzer koda sahip kontrol nesnelerinin bir sayı ile indekslenerek, olay kodlarının tek bir sub içersinde verilmesine olanak sağlarlar. Bu sayı, Index adlı ilk değeri sıfır olan bir değişkende tutulur. Örneğin BtnSayilar adlı bir CommandButton kontrol nesnesi eğer bir kontrol dizisi haline getirilirse, BtnSayilar(0), BtnSayilar(1), ..., BtnSayilar(n) biçiminde n-tane kontrol nesnesi elde ederiz. Bir Kontrol Dizisini Nasıl Yaratırım? Kontrol dizilerini yaratmanın en pratik yöntemi, dizi haline getirilecek kontrol nesnesinin kopyalanıp tekrar yapıştırılmasıdır. Bu yapıldığında aşağıdaki mesajı içeren bir mesaj kutusu ile karşılaşırız: You already have a control named ‘BtnSayilar’. Do you want to create a control array? Bize, BtnSayilar adlı bir kontrol nesnemizin zaten varolduğu ve bir kontrol dizisi yaratmak isteyip istemediğimiz sorulmaktadır. Eğer cevabımız hayır ise yapıştırılan, BtnSayilar kontrolünden bağımsız yeni bir nesne olacaktır. Aksi durumda ise BtnSayilar otomatik olarak indekslenerek BtnSayilar(0), yapıştırılan yeni nesne de BtnSayilar(1) olarak adlandırılacaktır. Gelelim bizim uygulamamıza... Hesap makinemizin aşağıda verilen butonları, birbirlerine oldukça benzer olay kodlarına sahiptirler: • Sayı butonları. (Btn0, Btn1, ..., Btn9) • Aritmetik işlem butonları (BtnTopla, BtnCikar, BtnCarp, BtnBol, BtnXY) • Fonksiyon butonları (BtnSqrt, BtnX, BtnX2) • Bellek Giriş butonları (BtnAl1, ..., BtnAl4) • Bellek Çıkış butonları (BtnVer1, ..., BtnVer4) Dolayısıyla bu buton gruplarının her birini birer kontrol dizisi hailen getirebiliriz. Aşağıdaki resimde bu kontrol dizileri gösterilmiştir: Kontrol dizilerinde yer alan her bir buton birbirinden Index değişkeni ile ayrılmaktadır. Örneğin, BtnSayi(2)_Click olayı 2 butonuna basıldığı anda, BtnFonk(2)_Click olayı ise 1/x butonuna basıldığı anda oluşacaktır. On Error .. GoTo Bir prosedür içersinde herhangi bir hata oluştuğunda programın davranışını belirlemek için kullanılır. Üç farklı sözdizimi vardır: On Error GoTo <satır adı> : Hata durumunda kodun akışını belirtilen satıra yönlendirir. On Error Resume Next : Hata durumunda kodun akışını hatanın oluştuğu deyimden sonraki deyime geçirir. On Error GoTo 0 : Söz konusu prosedür için hata algılayıcısını kapatır. On Error ile yakalanan hata, Err nesnesi kullanılarak saptanabilir. Hata oluştuğunda Err nesnesinin Number özelliği hatanın kodunu gösteren sayısal bir değer alır. Biz uygulamamızda iki tip hatayı bu yöntemleri kullanarak yakaladık ve bilgi ekranımızda hata mesajı (E) verdirdik: sıfıra bölme ve negatif sayıların karekökü. (Bu hataların kodları sırasıyla 11 ve 5’tir.) Böylece her durum için (paydanın sıfır olup olmadığı, karekökü alıncak sayının negatif olup olmadığı gibi) gereksiz denetimler yapmaktan kurtulmuş olduk. Uyarılar&Açıklamalar “On Error Resume Next” her nekadar çoğunlukla programcının sihirli değneği konumunda da olsa aslında oldukça tehlikeli bir komuttur. Koda “hata ne olursa olsun sen bir sonraki deyimden devam et” demek, sizin de takdir edeceğiniz gibi pekte profesyonel bir yaklaşım olmasa gerek...! Oluşan hatanın kodunu öğrenmenin pratik bir yolu vardır. Hatanın oluştuğu görüldükten ve hataya sebep olan prosedür belirlendikten sonra o prosedürün başına yerleştirilecek On Error GoTo ile yönlendirme yapılan satırda şu fonksiyonu yazmak yeterli olacaktır: MsgBox Err.Number Hesap Makinesi V1.1 - Kodun Tamamı Dim sayi, Bellek(3) As Double Dim TusaBasildi As Byte Dim Arti, Eksi, Carpi, Bol, Kuvvet, Ondalik As Boolean Private Sub BtnAE_Click() TxtEkran.Text = -1 * CDbl(TxtEkran.Text) If LbBilgiEkr.Caption = "E" Then LbBilgiEkr.Caption = "" End Sub Private Sub BtnBellekTmz_Click() For j = 0 To 3 Bellek(j) = 0 BtnGirdi(j).BackColor = QBColor(10) Next j End Sub Private Sub BtnC_Click() TxtEkran.Text = 0 TusaBasildi = 0 Ondalik = False LbBilgiEkr.Caption = "" End Sub Private Sub BtnCikti_Click(Index As Integer) If Bellek(Index) <> 0 Then If TusaBasildi = 0 Then TxtEkran.Text = Bellek(Index) Else sayi = CDbl(TxtEkran.Text) TxtEkran.Text = 0 TusaBasildi = 0 TxtEkran.Text = Bellek(Index) End If End If TusaBasildi = 1 End Sub Private Sub BtnDel_Click() If CDbl(TxtEkran.Text) <> 0 Then If Len(TxtEkran.Text) = 1 Or (Len(TxtEkran.Text) = 2 And Left(TxtEkran.Text, 1) = "-") Then TxtEkran.Text = 0 Else TxtEkran.Text = Left(TxtEkran.Text, Len(TxtEkran.Text) - 1) End If End If LbBilgiEkr.Caption = "" End Sub Private Sub BtnEsit_Click() On Error GoTo HATA If Arti Then TxtEkran.Text = sayi + CDbl(TxtEkran.Text) Arti = False ElseIf Eksi Then TxtEkran.Text = sayi - CDbl(TxtEkran.Text) Eksi = False ElseIf Carpi Then TxtEkran.Text = sayi * CDbl(TxtEkran.Text) Carpi = False ElseIf Bol Then TxtEkran.Text = sayi / CDbl(TxtEkran.Text) Bol = False ElseIf Kuvvet Then TxtEkran.Text = sayi ^ CDbl(TxtEkran.Text) Kuvvet = False End If TusaBasildi = 1 Ondalik = False LbBilgiEkr.Caption = "" HATA: If Err.Number = 11 Then LbBilgiEkr.Caption = "E" End Sub Private Sub BtnFonk_Click(Index As Integer) On Error GoTo HATA TusaBasildi = 1 If LbBilgiEkr.Caption <> "E" Then LbBilgiEkr.Caption = "" Select Case Index Case 0: TxtEkran.Text = Sqr(CDbl(TxtEkran.Text)) Case 1: TxtEkran.Text = CDbl(TxtEkran.Text) ^ 2 Case 2: TxtEkran.Text = 1 / CDbl(TxtEkran.Text) End Select HATA: If Err.Number = 11 Or Err.Number = 5 Then LbBilgiEkr.Caption = "E" ' 11 :Sıfıra bölme, 5: negatif karekök. End Sub Private Sub BtnGirdi_Click(Index As Integer) If CDbl(TxtEkran.Text) <> 0 Then Bellek(Index) = CDbl(TxtEkran.Text) BtnGirdi(Index).BackColor = QBColor(12) End If End Sub Private Sub BtnIslem_Click(Index As Integer) TusaBasildi = 1 Ondalik = False Select Case Index Case 0: Arti = True LbBilgiEkr.Caption = "+" Case 1: Eksi = True LbBilgiEkr.Caption = "-" Case 2: Carpi = True LbBilgiEkr.Caption = "x" Case 3: Bol = True LbBilgiEkr.Caption = "/" Case 4: Kuvvet = True LbBilgiEkr.Caption = "^" End Select End Sub Private Sub BtnOff_Click() Unload Me End Sub Private Sub BtnOndlk_Click() If Not Ondalik Then Ondalik = True If TusaBasildi = 0 Then TxtEkran.Text = TxtEkran.Text & "," Else sayi = CDbl(TxtEkran.Text) TxtEkran.Text = "0," End If End If End Sub Private Sub BtnSayi_Click(Index As Integer) If TusaBasildi = 0 Then If CDbl(TxtEkran.Text) <> 0 Or Ondalik Then TxtEkran.Text = TxtEkran.Text & Index Else TxtEkran.Text = Index End If Else TusaBasildi = 0 If Ondalik Then TxtEkran.Text = TxtEkran.Text & Index Else sayi = CDbl(TxtEkran.Text) TxtEkran.Text = Index End If End If If LbBilgiEkr.Caption = "E" Then LbBilgiEkr.Caption = "" End Sub Private Sub BtnCE_Click() TxtEkran.Text = 0 Ondalik = False LbBilgiEkr.Caption = "" End Sub Private Sub Form_Load() TxtEkran.Text = 0 TusaBasildi = 0 Arti = False Eksi = False Carpi = False Bol = False Ondalik = False For j = 0 To 3 Bellek(j) = 0 Next j End Sub MESAJ KUTUSU FONKSİYONU (MsgBox) Kullanıcıya bir diyalog penceresi ile bir mesaj iletir, kullanıcı pencerede yer alan ilgili butona basıncaya kadar bekler ve kullanıcının hangi butona bastığını bize sayısal bir değerle geri döndürür. İki türlü kullanılabilir: 1. Basit Kullanım: MsgBox “Mesaj metni” Üzerinde sadece Tamam butonu olan ve bizim yazdığımız mesaj metnini kullanıcıya ileten diyalog penceresini açar. 2. İleri Düzeyde Kullanım: MsgBox(“mesaj metni”[,butonlar][,“başlık metni”][,yardım dosyası,indeks]) “mesaj metni” : Yazılması zorunlu. Mesajın içeriğini belirten max. 1024 karakter string ifade. butonlar : Zorunlu değil. Pencerede yer alacak butonlar ve pencere resmi gibi görsel ve işlevsel detayları belirten sabitler toplamı. “başlık metni” : Zorunlu değil. Pencere başlığına yazılacak metni belirleyen string ifade. yardım dosyası: Zorunlu değil. Pencere aktif iken F1 tuşuna basıldığında açılacak indeksli yardım dosyasının yolu ve adı. indeks : Açılan yardım dosyasında ilgili yardımın indeks numarası. butonlar Parametresi için Sabit Tanımları Sabit Değer Açıklama vbOKOnly 0 Sadece TAMAM butonu görüntülenir. vbOKCancel 1 TAMAM ve İPTAL butonları görüntülenir. vbAbortRetryIgnore 2 VAZGEÇ, TEKRAR DENE ve ATLA butonları görüntülenir. vbYesNoCancel 3 EVET, HAYIR ve İPTAL butonları görüntülenir. vbYesNo 4 EVET ve HAYIR butonları görüntülenir. vbRetryCancel 5 TEKRAR DENE ve İPTAL butonları görüntülenir. vbCritical 16 Hata simgesi görüntülenir. vbQuestion 32 Soru işareti simgesi görüntülenir. vbExclamation 48 Uyarı simgesi görüntülenir. vbInformation 64 Bilgi simgesi görüntülenir. vbDefaultButton1 0 İlk buton geçerli. (Seçili durumda) vbDefaultButton2 256 İkinci buton geçerli. vbDefaultButton3 512 Üçüncü buton geçerli. vbDefaultButton4 768 Dördüncü buton geçerli. vbApplicationModal 0 Uygulama modeli; Kullanıcı o an kullanmakta olduğu uygulamaya devam edebilmek için mesaj kutusunu yanıtlamalı. vbSystemModal 4096 Sistem modeli; Kullanıcı mesaj kutusunu yanıtlayıncaya kadar çalışır durumda olan tüm uygulamalar durdurulur. vbMsgBoxHelpButton 16384 Mesaj kutusuna Yardım butonu ekler. VbMsgBoxSetForeground 65536 Mesaj kutusu penceresini ön cephe (foreground) penceresi olarak belirler. vbMsgBoxRight 524288 Mesaj metni sağa dayalı. vbMsgBoxRtlReading 1048576 Mesaj metni sağdan sola doğru yazılır. (Arabik sistem) Örnek Uygulama : Kimlik Bilgileri Veri Giriş Ekranı Bu uygulamada nüfus cüzdanı bilgilerinin girilebileceği bir veri giriş formu tasarlayacağız. Bazı alanlar bilgi girilmesi zorunlu alanlar olarak belirlenecek. Henüz veritabanı bilgimiz olmadığından kaydetme işlemi yapmayacağız. Ama formumuzda yer alan Kaydet ve Kapat düğmelerine yazacağımız kodlar, aşağıdaki işlemleri gerçekleştirecek: Kaydet Düğmesi : Basıldığında ilk olarak zorunlu alanlar denetlenecek ve eğer bunlardan en az birisi boş bırakılmış ise kullanıcı, üzerinde hata simgesi ve Tamam butonu bulunan bir mesaj kutusu ile uyarılacak. Eğer zorunlu alanların hepsi dolu ise kaydetme işleminin gerçekleştirildiğine dair, üzerinde bilgi simgesi ve Tamam butonu bulunan bir mesaj kutusu açılacak ve kullanıcı Tamam’a basınca formdaki tüm alanlar ilk haline getirilecek. (Form bir sonraki bilgi girişine hazırlanacak.) Kapat Düğmesi : Eğer zorunlu alanlar doldurulmuş ve Kaydet düğmesine basılmadan Kapat’a basılmış ise kullanıcıya, üzerinde uyarı simgesi ile Evet ve Hayır butonları bulunan, bilgileri kaydetmeden formu kapatmaya çalıştığını belirten ve kaydetmeyi isteyip istemediğini soran bir mesaj kutusu açılacak. Kullanıcının verdiği cevap evet ise yine kaydetme işleminin gerçekleştirildiğine dair, üzerinde bilgi simgesi ve Tamam butonu bulunan bir mesaj kutusu açılacak ve kullanıcı Tamam’a bastığında form kapanacak. Hayır ise hiçbir mesaj gelmeden form doğrudan kapanacak. Aksi durumda, yani zorunlu alanların hepsi doldurulmamış ya da Kaydet düğmesine zaten basılmış ise form doğrudan kapanacak. Alanlarla İlgili Açıklamalar : Form üzerinde yer alan Ad, Soyad, Baba adı gibi alanlar TextBox olabilir. Ancak Medeni hal, Kan grubu vb. alanlar çoktan seçimli alan tiplerinden (ComboBox, ListBox, OptionButton) seçilmelidir. Tarih alanı ise formatta bütünlük sağlamak açısından kullanıcıyı sınırlayacak şekilde (Gün, Ay ve Yıl ayrı alanlar şeklinde gibi) düşünülmelidir. Nüfusa kayıtlı olduğu il bir çoktan seçimli alandan seçildikten sonra ilçeye ait çoktan seçimli alan, o ilin ilçe adları ile doldurulacaktır. ÖNEMLİ NOT : Birbirleriyle uyumlu olarak çalışan OptionButton’lar yaratmak için. bunlar birbirleri ile gruplandırılmalıdır. Bunu yapmanın en pratik yolu, önce ortak bir Frame yaratıp sonra gruplamak istediğimiz OptonButton’ları bu Frame’in içinde yaratmaktır. Tasarlayacağımız formun genel görünümü aşağıda verilmiştir: Şimdi, bu uygulama ile ilk defa kullandığımız iki nesneden bahsedelim: ListBox ve CheckBox. Formumuzda yer alan Veriliş Nedeni alanı bir ListBox, Sabıka Kaydı ve Askerlik Yapamaz Belgesi alanları ise birer CheckBox’tır. ListBox ComboBox ile aynı gruptadır. Yani kullanıcıya birçok seçenek içinden istediğini seçtirmek için kullanırız. Ancak bazı özellikleri ile ComboBox’dan ayrılır. Bunlar: 1. ComboBox’dakinin aksine ListBox’da kullanıcı, oluşturulan kutunun büyüklüğü ölçüsünde bir çok seçeneği aynı anda görür. 2. ListBox, MultiSelect özelliği sayesinde birden çok seçeneğin aynı anda seçilmesine olanak tanır. Yani, ListBox.MutiSelect=0 ise Sadece bir seçenek seçilebilir. ListBox.MutiSelect=1 ise Birden çok seçenek seçilebilir. ListBox.MutiSelect=2 ise Birden çok seçenek, klavyeden Ctrl tuşuna basılı iken seçilebilir. CheckBox OptionButton ile aynı gruptadır. Ancak OptionButton gruplarında sadece bir seçenek seçilmesine izin verilirken, CheckBox kontrollerinde kullanıcı birden çok seçeneği aynı anda işaretleyebilir. Kod Dim kaydedildi As Boolean Private Sub CmbIL_Click() CmbILCE.Clear Select Case CmbIL.Text Case "Ankara": CmbILCE.AddItem "Merkez" CmbILCE.AddItem "Altındağ" CmbILCE.AddItem "Keçiören" CmbILCE.AddItem "Mamak" CmbILCE.AddItem "Çankaya" CmbILCE.AddItem "Yeni Mahalle" CmbILCE.AddItem "Polatlı" CmbILCE.AddItem "Beypazarı" Case "Adana": CmbILCE.AddItem "Merkez" CmbILCE.AddItem "Seyhan" CmbILCE.AddItem "Kozan" CmbILCE.AddItem "Pozantı" CmbILCE.AddItem "Aladağ" Case "Artvin": CmbILCE.AddItem "Merkez" CmbILCE.AddItem "Ardanuç" CmbILCE.AddItem "Arhavi" CmbILCE.AddItem "Şavşat" CmbILCE.AddItem "Hopa" Case "Bolu": CmbILCE.AddItem "Merkez" CmbILCE.AddItem "Gerede" CmbILCE.AddItem "Mengen" CmbILCE.AddItem "Mudurnu" CmbILCE.AddItem "Seben" Case "Bursa": CmbILCE.AddItem "Merkez" CmbILCE.AddItem "Osmangazi" CmbILCE.AddItem "İnegöl" CmbILCE.AddItem "İznik" Case "İstanbul": CmbILCE.AddItem "Merkez" CmbILCE.AddItem "Adalar" CmbILCE.AddItem "Bakırköy" CmbILCE.AddItem "Beykoz" CmbILCE.AddItem "Beyoğlu" CmbILCE.AddItem "Beşiktaş" CmbILCE.AddItem "Kadıköy" CmbILCE.AddItem "Üsküdar" CmbILCE.AddItem "Zeytinburnu" CmbILCE.AddItem "Şişli" CmbILCE.AddItem "Çatalca" CmbILCE.AddItem "Sarıyer" End Select End Sub Private Sub CmdKapat_Click() Dim cvp As Integer If Not kaydedildi And TxtSyd.Text <> "" And TxtAd.Text <> "" And TxtBAd.Text <> "" And TxtAAd.Text <> "" Then cvp = MsgBox("Değişiklikleri kaydetmek istiyor musunuz?", vbYesNo + vbExclamation, "DİKKAT") If cvp = 6 Then MsgBox "Bilgiler kaydedilmiştir...", vbInformation, "" Unload Me Else Unload Me End If Else Unload Me End If End Sub Private Sub CmdKaydet_Click() Dim msj As String kaydedildi = True If TxtSyd.Text = "" Or TxtAd.Text = "" Or TxtBAd.Text = "" Or TxtAAd.Text = "" Then msj = "Zorunlu alanlarda bilgi eksikliği saptanmıştır." msj = msj & Chr(13) & "Lütfen bu bilgileri tamamlayınız." MsgBox msj, vbCritical, "UYARI" kaydedildi = False Else MsgBox "Bilgiler kaydedilmiştir...", vbInformation, "" TxtSyd.Text = "" TxtAd.Text = "" TxtBAd.Text = "" TxtAAd.Text = "" TxtAileNo.Text = "" TxtCiltNo.Text = "" TxtSiraNo.Text = "" TxtDYer.Text = "" TxtDYil.Text = "" TxtKayNo.Text = "" TxtKNo.Text = "" TxtKSeri.Text = "" TxtMah.Text = "" TxtVerYer.Text = "" OptEvli.Value = False OptBekar.Value = False OptDul.Value = False OptBosan.Value = False OptRhPoz.Value = False OptRhNeg.Value = False LstVerNed.Text = "" CmbDAy.Text = "" CmbDGun.Text = "" CmbIL.Text = "" CmbILCE.Text = "" CmbKanGr.Text = "" ChckAsk.Value = False ChckSab.Value = False TxtKSeri.SetFocus kaydedildi = False End If End Sub Private Sub Form_Load() kaydedildi = False End Sub ÇOK FORMLU UYGULAMALAR Birden çok formla çalışan bir uygulama tasarlamak, tek formla çalışan bir uygulama tasarlamaktan daha zor değildir. Bu işlem, ana formu yaptıktan sonra Project menüsünden Add Form seçeneği kullanılarak yeni formlar eklemek suretiyle gerçekleştirilebilir. Birden çok form bulunduran uygulamalarda, aksi belirtilmediği sürece ilk yapılan form ana form olur ve uygulama çalıştırıldığında ilk olarak bu form yüklenir. Bu sıralama, Project menüsünden <Proje Adı> Properties seçeneği kullanılarak değiştirilebilir. Herhangi bir formu çalışma-anında (runtime) görüntülemek için Show metodu kullanılır. Metodun ayrıntıları aşağıda verilmiştir: Show Metodu Herhangi bir formu ya da MDI formu görüntüler. Sözdizimi aşağıdaki gibidir: <Form Adı>.Show <Mod> <Mod>, görüntülenen formun aktif durumdaki davranışını belirleyen bir parametredir. İki değer alabilir: 0-Modeless (Geçerli durum) ve 1-Modal. Modeless durumunda form aktif durumda iken, yani fokus form üzerinde iken kullanıcı, açık durumda olan diğer formlara geçiş yapmak gibi başka aktiviteleri gerçekleştirebilir. Modal durumunda ise açık kaldığı sürece sadece görüntülenen form üzerinde işleme izin verilir. Şimdi, bir ana form ve bu form tarafından çağrılan ikinci bir forma sahip örnek bir uygulama üzerinde, aynı zamanda üç yeni kontrol nesnesinin kullanılışını göreceğiz: DirListBox, DriveListBox ve FileListBox. DirListBox Disk içinde yer alan klasör haritasını görüntüler ve kullanıcıya bu harita üzerinde istediği klasörü çift-tıklama yolu ile seçme olanağı tanır. Seçilen klasörün yolu, bu kontrol nesnesinin Path özelliğine aktarılır. Diğer bir deyişle DirListBox nesnemizin adı Dir1 ise Dir1.Path bize Dir1 içinde seçilen klasörün tam yolunu verecektir. DriveListBox Bilgisayarda tanımlı olan tüm disk sürücülerini görüntüler ve kullanıcıya istediği sürücüyü seçme olanağı sağlar. Seçilen sürücü bu kontrol nesnesinin Drive özelliğine aktarılır. FileListBox Kendisine ait Path özelliği tarafından belirlenen klasördeki dosyaları görüntüler ve kullanıcıya bunlardan seçim yapma olanağı tanır. Çalışma-anında değiştirilmediği sürece bu yol geçerli klasörü (VB kurulum klasörü) gösterecektir. Seçilen dosya ise kontrolün File özelliğinde saklanır. Örnek uygulamamızda bu kontroller yazılan kodlarla ilişkilendirilerek eş güdümlü (senkronize) çalışmaları sağlanmıştır. Uygulamada yer alan ana form bir metin kutusu ve üç buton içermektedir: Tamam, İptal ve Gözat. Tamam ve İptal butonlarının her ikisi de formu kapatmaktadır. (Çünkü bu örnek büyük bir uygulamanın bir parçası olarak düşüünülmüştür.) Gözat düğmesine basıldığında, üzerinde yukarıda anlatılan kontrol nesnelerini ilişkilendirilmiş bir biçimde taşıyan ikinci formumuz Modal modunda görüntülenmektedir. Bu kontroller kullanılarak belirlenen dosya adı ve yolu, eğer Tamam butonuna basılırsa ana formumuzun dosya adı metin kutusuna aktarılarak form kapanmakta, aksi halde, yani İptal butonuna basılırsa ikinci formumuz doğrudan kapatılmaktadır. Şimdi, FrmBul formuna aranan dosyanın türünü de seçebileceğimiz bir ComboBox ekleyeceğiz ve böylece dosya listemizde sadece istediğimiz türden dosyaların görüntülenmesini sağlayacağız. Bunun için ilk olarak, dosya türünü seçebileceğimiz CmbDosyaTur adlı bir ComboBox yaratacağız ve tasarım-anında (design-time) bu ComboBox’ımızın liste özelliğine uygun seçenekleri gireceğiz. Daha sonra FileListBox’ımızı gizleyeceğiz ve onun yerine LstDosyalar adlı sıradan bir ListBox yerleştireceğiz. Bunu yapmaktaki amacımız, FileListBox’ta yer alan dosya adlarından sadece CmbDosyaTur’de seçilen uzantıya sahip olan dosya adlarını buradan seçip, ListBox’a aktarmaktır. Diğer bir deyişle, LstDosyalar adlı liste kutumuz, File1 adlı dosya liste kutumuzdan dosya türü kriterine uygun olarak süzülen dosyaları gösterecektir. FrmBul formunun yeni şekli ve bu forma ait kodlar aşağıda verilmiştir: Private Sub CmbDosyaTur_Click() LstDosyalar.Clear For j = 0 To File1.ListCount - 1 If Right(File1.List(j), 3) = Right(CmbDosyaTur.Text, 3) Then LstDosyalar.AddItem File1.List(j) End If Next j End Sub Private Sub CmdBulIptal_Click() Unload Me End Sub Private Sub CmdBulTamam_Click() FrmAna.TxtDosAd.Text = File1.Path & "\" & LstDosyalar.Text Unload Me End Sub Private Sub Dir1_Change() File1.Path = Dir1.Path LstDosyalar.Clear For j = 0 To File1.ListCount - 1 If Right(File1.List(j), 3) = Right(CmbDosyaTur.Text, 3) Then LstDosyalar.AddItem File1.List(j) End If Next j End Sub RESİM İLİŞTİRME (PICTURE CLIP) Bu kesimde, hazırlayacağımız bir sayı tutmaca oyunu ile PictureBox ve Image kontrollerinin etkin kullanımını öğreneceğiz. Uygulama iki formdan oluşmaktadır. Ana form (FrmSor) ve program hakkında penceresi (FrmAbout). Ana formumuzda bir Image, Program Hakkında formunda ise bir PictureBox nesnesi kullandık. Image, PictureBox ile aynı işlevi taşır, ancak PictureBox’ın özelliklerinin bir altkümesini içerir. Buna karşın runtime’da PicturBox’tan daha hızlı çalışır. Program hakkında formumuzda, üç adet PictueBox kullanılmıştır. Bunlardan sadece biri kullanıcıya gösterilmektedir. Diğer ikisi sabit olarak iki resim dosyası iliştirilmiş olarak (tasarım-anında Picture özelliği kullanılarak atanan resim dosyaları) formun görünmeyen yüzünde yer almaktadır. Aşağıda, formun kullanıcıya gösterilmeyen bölümü işaretlenmiştir: Bu bölümde PictureBox nesneleri ile birlikte yine ilk defa bu uygulamamızda kullandığımız Timer kontrolü de yer almaktadır. Şimdi bu kontrolleri daha yakından tanıyalım: PictureBox Bitmap (*.bmp), ikon (*.ico), metafile (*.wmf), gelişmiş metafile (*.emf), JPEG (*.jpg) ya da GIF dosyalarını görüntülemek için kullanılır. En önemli özellikleri tasarım-anında veya LoadPicture fonksiyonunu kullanarak kod içersinde resim atamak için kullanacağımız Picture özelliği ile, PictureBox’ın boyutunu atanan resmin boyutuna göre genişletip genişletmeyeceğini belirleyen (True ya da False) AutoResize özelliğidir. Image PictureBox ile aynı amaçlarla kullanılır ama sistem kaynaklarını daha ekonomik kullanır ve yeniden resimlendirme hızı daha fazladır. En önemli özellikleri yine Picture özelliği ile, atanan resmin Image’in boyutuna göre ayarlanıp (daraltma ya da genişletme) ayarlanmayacağını belirleyen Stretch (True ya da False) özelliğidir. Timer Timer kontrolü, belirli bir kodu düzenli zaman aralıkları ile çalıştırmak için kullanılır. Çalıştırılacak kod, kontrolün Timer olayına yazılır ve zaman aralığı kontrolün Interval özelliği ile belirlenir. Bizim uygulamamızda, görünen bölümde yer alan PictrueBox’ta diğer iki PictureBox’ın resimlerinin uygun bir periyotla görüntülenebilmesi için bir Timer kontrolü kullanılmıştır. Bu şekilde, Tolga Güyer yazısına konan kelebeğin kanat çırpması sağlanmıştır. LoadPicture Fonksiyonu Genel Sözdizimi : LoadPicture([string ifade]) [string ifade] atanacak resim dosyasının yolunu (path) ve tam dosya adını belirtir. Dosya, Bitmap (*.bmp), ikon (*.ico), metafile (*.wmf), gelişmiş metafile (*.emf), run-length encoded (.rle), JPEG (*.jpg) ya da GIF türünde olmalıdır. Ana formun ilk çalıştığı andaki hali (PictureBox’ın resmi uygulama içinde değiştiriliyor) ve açıklamalı kodlar aşağıda verilmiştir: FrmSor Dim syc As Byte 'Kart resimlerinin sayaç değişkeni Dim RsmYol As String 'Resim dosyalarının path stringi Dim tutulansayi, sayilar(7) As Integer Private Sub CmdAbout_Click() FrmAbout.Show 1 'Program hakkında formunu görüntüle End Sub Private Sub CmdKapat_Click() End End Sub Private Sub CmdTuttum_Click() RsmYol = App.Path & "\images\kartsor1.bmp" 'İlk kartın path ve dosya adı Image1.Picture = LoadPicture(RsmYol) 'İlk kartı göster CmdTuttum.Visible = False CmdVar.Visible = True CmdYok.Visible = True End Sub Private Sub CmdVar_Click() tutulansayi = tutulansayi + sayilar(syc) 'Tutulan sayıyı hesapla syc = syc + 1 'Kart dosyalarının sayacını artır If syc < 8 Then 'Sadece 7 tane kart dosyası var RsmYol = App.Path & "\images\kartsor" & syc & ".bmp" 'Uygulamanın yolu+dosya adı+sayaç stringi oluşturuluyor Else Image1.Picture = LoadPicture("") 'Son resim de gösterildi, sıra finalde Image1.Left = 1800 'Final resmi daha küçük olduğundan soldan ortalanıyor BackColor = &H8000000E 'Arka fon beyaz RsmYol = App.Path & "\images\final.bmp" Label1.Visible = True Label1.Caption = tutulansayi 'Ve işte tutlan sayı CmdVar.Visible = False CmdYok.Visible = False End If Image1.Picture = LoadPicture(RsmYol) End Sub Private Sub CmdYeni_Click() Image1.Picture = LoadPicture("") sifirla 'Değişkenleri baştaki değerlerine döndür RsmYol = App.Path & "\images\grfsor.bmp" 'Tekrar ilk resim Image1.Picture = LoadPicture(RsmYol) End Sub Private Sub CmdYok_Click() 'Var düğmesi ile aynı, tek fark tablo sayısı tutlansayi'ya eklenmiyor. syc = syc + 1 If syc < 8 Then RsmYol = App.Path & "\images\kartsor" & syc & ".bmp" Else Image1.Picture = LoadPicture("") Image1.Left = 1800 BackColor = &H8000000E RsmYol = App.Path & "\images\final.bmp" Label1.Visible = True Label1.Caption = tutulansayi CmdVar.Visible = False CmdYok.Visible = False End If Image1.Picture = LoadPicture(RsmYol) End Sub Private Sub Form_Load() sayilar(1) = 1 'Tablo sayıları dizisi oluşturuluyor sayilar(2) = 2 sayilar(3) = 4 sayilar(4) = 8 sayilar(5) = 16 sayilar(6) = 32 sayilar(7) = 64 sifirla End Sub Private Sub sifirla() 'Değişkenlere ve kontrollere ilk değerleri atanıyor syc = 1 tutulansayi = 0 Label1.Visible = False CmdVar.Visible = False CmdYok.Visible = False CmdTuttum.Visible = True BackColor = &H8000000F Image1.Left = 0 End Sub FrmAbout Dim kontrol As Byte 'Sıralamayı belirleyen bayrak değişkeni Private Sub kelebek() 'Sıraya göre uygun resim atanıyor: If kontrol = 0 Then PicKlbk.Picture = PicKlbk1.Picture kontrol = 1 Else PicKlbk.Picture = PicKlbk2.Picture kontrol = 0 End If End Sub Private Sub BtnTamam_Click() Unload Me End Sub Private Sub Timer1_Timer() ‘Tasarımda Interval özelliği 200 olarak belirlenmiştir. kelebek 'Ve kelebeğimiz kanat çırpıyor End Sub MENÜLER Caption, menümüzde yer alacak ilk seçeneğin etiketidir. Name alanına ise o menü seçeneğine ait (kodlarda kullanılacak) bir isim verilmelidir. Index her menü seçeneğini, aynı kontrol dizilerinde olduğu gibi sayısal bir değerle numaralandırmak suretiyle, gerektiğinde kodlarda kolaylık sağlamak amacıyla kullanılır. Ancak bu sayının seçeneğin menüdeki pozisyonu ile bir ilgisi yoktur. Menü seçeneğinin görünümü ile ilgili opsiyonlar (Checked=İşretli, Enabled=Aktif, Visible=Görünür, WindowList=MDI formları gösteren pencere listesi) işaretlenerek, menü seçeneklerinin pozisyonları ve altmenüler ise alt kısımda yer alan ok resimli butonlar kullanılarak ayarlanabilir. Next : Seçili seçeneğin altına yeni seçenek eklemek için yer açar. Insert : Seçili seçeneğin üzerine yeni seçenek eklemek için yer açar. Delete : Seçili seçeneği siler. Sol Ok : Seçileni bir seviye yukarı çıkartır. (Bir üst menü seçeneği olur) Sağ Ok : Seçileni bir seviye aşağı indirir. (Kendisinden önceki seçeneğin bir altmenü seçeneği olur) Yukarı Ok : Seçileni menü sıralamasında bir yukarı çıkartır. (Soldan sağa sıralamada sola geçirir.) Aşağı Ok : Seçileni menü sıralamasında bir aşağı indirir. (Soldan sağa sıralamada sağa geçirir.) Aşağıda menü editörü kullanılarak hazırlanan bir menü örneği görsel olarak açıklanmıştır. Editörde yapılan ayarlamaların uygulamadaki yansımalarına dikkat edin: Ayrıca ShortCut ComboBox’ı kullanılarak her menü seçeneği için bir kısayol atanabilir. Menü Seçeneklerinin Adlandırılması Her menü seçeneğinin (Caption’ın dışında) bir adı olmalıdır. Bu ad, değişken isimlendirme kurallarına uygun olarak verilmelidir. Kodların anlaşılabilir olması açısından, menü seçenekleri adlandırılırken şu kurala uyulması yararlı olacaktır: Bir menünün bir seçeneği ya da alt menüsü, o menünün adı ile başlayan bir isimle adlandırılmalıdır. Örneğimizde MnDosya menüsünde yer alan Aç seçeneği, MnDosyaAc olarak adlandırılmıştır. Aynı şekilde, MnArac menüsünde yer alan Çizim Araçları seçeneği MnAracCiz, bunun altında yer alan Çember seçeneği ise MnAracCizCember olarak adlandırılmıştır. MODÜLLER Modüller, proje kapsamında kullanılacak tanımlamaların (değişken, prosedür ya da fonksiyonlar) yer aldığı bileşenlerdir. Bir proje, içerdiği formlardan bağımsız olarak bir ya da daha çok sayıda modül içerebilir. Projeye bir modül eklemek için Project menüsünden Add Module seçeneğinin seçilmesi yeterlidir. Bu yapıldığında ekrana gelen pencereden yeni bir modül seçilebilir ya da önceden hazırlanmış bir modül projeye dahil edilebilir. Bir modül sadece bir kod bölümünden oluşur: tüm tanımlamaların yapılacağı General Declarations bölümü. Aşağıda örnek bir modülün kod penceresi verilmiştir: Burada TusaBasildi, C1 ve C2 değişkenleri global olarak tanımlanmışlardır. Dolayısıyla tüm proje kapsamında kullanılabilirler. Ancak katsayi değişkeni lokal olarak tanımlandığından sadece ilgili modül içersinde kullanılabilir. Diğer yandan hesapla fonksiyonu da proje dahilinde kullanılabilecektir. Şimdi geliştireceğimiz örnek uygulamada son olarak öğrendiğimiz iki yeni kavramı da kullanacağız: Menü ve Modül. BİR HAFIZA OYUNU: ResimBUL V1.0 Oyun oldukça basit bir amaca sahiptir: Arkaları dönük durumda olan 10 çift resimli kartı, her bir çifti art arda açmak suretiyle tümüyle açmaya çalışmak. Ancak her kart üzerinde tıklandığında sadece 1-2 saniye gözüküyor ve sonra tekrar geri dönüyor. Böylece fotoğrafik hafızamızın gücü ölçüsünde bu amaca en kısa sürede ve en az tıklama sayısı ile ulaşmaya çalışıyoruz. Sonuçta program bize uygun bir formül kullanarak performansımız doğrultusunda bir puan hesaplıyor. Projenin en önemli özelliklerinden birisi, her oyunun başında kartların (PictureBox’ların) rasgele (random) olarak program tarafından karıştırılmasıdır. Bu işlemde, VB’nin rasgele sayı üreten Rnd fonksiyonu kullanılmıştır. Bu fonksiyonun özellikleri aşağıda açıklanmıştır: Rnd Fonksiyonu Genel Sözdizimi : Rnd[(sayı)] Single türünde (32 bit ondalık sayı) rasgele sayı üretir. Bu işlemi, Rastgele Sayı Üreteci (Random Number Generator) adlı, sistem saatini kullanan bir algoritma kullanarak gerçekleştirir. Ancak bu algoritma program çalıştığında başlatıldığından (initialize), eğer üreteç her sayı üretilmeden önce başlatılmazsa sürekli aynı sayıyı üretecektir. Bu yüzden her sayı için Randomize deyimi kullanılarak üreteç yeniden başlatılmalıdır. sayı parametresi zorunlu değildir. Bu parametrenin aldığı değerler aşağıdaki tabloda verilmiştir: sayı Rnd tarafından üretilen rasgele sayı Sıfırdan küçük Her seferinde aynı sayı üretilir Sıfırdan büyük Her seferinde farklı sayı üretilir Sıfıra eşit En sık üretilen rasgele sayı üretilir Belirtilmezse Her seferinde farklı sayı üretilir Rnd fonksiyonunun kullanım örneği için verilen uygulamanın ana formuna ait kodu inceleyiniz. Projemiz beş adet formdan ve bir adet modülden oluşmaktadır. Ana form (FrmAna), üzerinde bir menü ve 20 adet PictureBox’ın yer aldığı (kartlar için) bir formdur. Ayrıca süreyi tutmakta kullanılan bir Timer nesnesi, süre ve oyun sonunda hesaplanan puanın basılacağı label’lar ve oyunla ilgili tüm ayarlamaların yapılacağı birde menü içermektedir. Diğer formlar ise Program Hakkında Formu (FrmAbout), Kart Seçimi Formu (FrmKartSec), oyun seviyesinin ayarlandığı Ayarlar Formu (FrmSeviye) ve oyunun kurallarının açıklandığı Yardım Formudur (FrmYardim). Formların genel görünümleri ve çalıştırdıkları kodlar aşağıda verilmiştir: FrmAna Dim c, ilk, TiklamaSayaci, EslemeSayaci, ZamanSayaci Private Sub Form_Load() c = 0 EslemeSayaci = 0 ZamanSayaci = 0 TiklamaSayaci = 0 Timer1.Enabled = False MnOyunStop.Visible = False ‘Oyun henüz başlamadığından oyunu durdurma menü seçeneği gizli seviye = 2 ‘Default oyun seviyesi surekli = True ‘Default oyun ayarı fondosya = "fon1.jpg" ‘Default kart arkafon resmi End Sub Private Sub MnAboutAbout_Click() FrmAbout.Show 1 End Sub Private Sub MnAboutYard_Click() FrmYardim.Show 1 End Sub Private Sub MnOyunCikis_Click() End End Sub Private Sub MnOyunStop_Click() Timer1.Enabled = False For j = 0 To 19 ‘Oyun bitirildi, tüm kartları aç Picture1(j).Picture = LoadPicture(App.Path & "\images" & "\resim" & j & ".wmf") Picture1(j).Enabled = False Next j MnOyunYeni.Visible = True ‘Yeni oyun menü seçeneği tekrar göründü MnOyunStop.Visible = False ‘Oyunu bitir menü seçeneği kayboldu MnSec.Enabled = True ‘Oyun sırasında Disable olan menü seçenekleri tekrar Enable oldu MnAbout.Enabled = True End Sub Private Sub MnOyunYeni_Click() Karistir ‘Karistir prosedürü çağrılıyor (Kartları rasgele karıştırır) For j = 0 To 19 ‘Kartların arkafon resimleri yükleniyor ve PitureBox’lar Enable oluyor Picture1(j).Picture = LoadPicture(App.Path & "\images\" & fondosya) Picture1(j).Enabled = True Next j c = 0 EslemeSayaci = 0 ‘Yeni oyun için sayaçlar sıfırlandı ZamanSayaci = 0 TiklamaSayaci = 0 Timer1.Enabled = True Label4.Caption = "" MnSec.Enabled = False ‘Menü seçenekleri oyun sırasındaki ayarlarına getiriliyor MnAbout.Enabled = False MnOyunYeni.Visible = False MnOyunStop.Visible = True End Sub Private Sub MnSecAyar_Click() FrmSeviye.Show 1 End Sub Private Sub MnSecKart_Click() FrmKartSec.Show 1 End Sub Private Sub Picture1_Click(Index As Integer) TiklamaSayaci = TiklamaSayaci + 1 ‘Her tıklama sayılıyor If c = 0 Then 'Oyun tipi sürekli seçildi ise sadece ilk hamlede çalışacak resimkoy (Index) bekle (seviye / 10) Picture1(Index).Picture = LoadPicture(App.Path & "\images\" & fondosya) c = 1 ilk = Index Else If Not surekli Then c = 0 ‘Oyunu her turda (her iki kart açıldığında) başa döndürüyor.(turlu oyun) If (Abs(ilk - Index) = 5 And ilk < 10 And Index < 10) Or (Abs(ilk - Index) = 5 And ilk > 9 And Index > 9) Then 'Eşleme yapılmış (açıklama için kodların sonuna bakınız) resimkoy (Index) 'Yeni bulunan resim resimkoy (ilk) 'İlk tıkladığı resim Picture1(Index).Enabled = False ‘Bulanan resimleri PictureBox larını disable yapalım ki bir daha ‘tıklayamasın Picture1(ilk).Enabled = False EslemeSayaci = EslemeSayaci + 1 ‘Doğru tıklamaları sayıyoruz If EslemeSayaci = 10 Then OyunBitti ’10 eşleme demek resimlerin hepsi açılmış demek Else ‘Eğer doğru resmi bulamadıysa göster-bekle-kapat resimkoy (Index) ‘Göster bekle (seviye / 10) ‘Bekle Picture1(Index).Picture = LoadPicture(App.Path & "\images\" & fondosya) ‘Ve kapat End If ilk = Index End If End Sub Private Sub resimkoy(idx) Dim yol yol = App.Path & "\images" & "\resim" & idx & ".wmf" ‘Gelen indekste (idx) bulunan PicturBox’a Picture1(idx).Picture = LoadPicture(yol) ‘resim&idx.wmf dosyası yükleniyor End Sub Private Sub bekle(sure) Dim basla basla = Timer ‘ basla ya sistem sayıcısının o anki değeri aktarılıyor. Do While Timer < basla + sure ‘Sistem sayıcısı (Timer fonksiyonu) sure kadar saydırılıyor (bekleme için) Loop End Sub Private Sub Timer1_Timer() ZamanSayaci = ZamanSayaci + 1 ‘Oyun sırasında süreyi tutan Timer kontrolü Label2.Caption = ZamanSayaci End Sub Private Sub OyunBitti() Dim puan, mesaj Timer1.Enabled = False puan = CInt((1 / ZamanSayaci) * 1000 + (1 / TiklamaSayaci) * 1000) ‘Puan hesaplayan bu formül, ne kadar az tıklama ile ne kadar az sürede oyun tamamlanırsa o kadar ‘yüksek puan değeri veriyor mesaj = "OYUN BİTTİ" & Chr(13) & "PUANINIZ : " & puan MsgBox mesaj Label4.Caption = puan MnSec.Enabled = True MnAbout.Enabled = True MnOyunYeni.Visible = True MnOyunStop.Visible = False End Sub Private Sub Karistir() Dim Rsayi(19), sayi, h, j, k, T, L Randomize ‘Bu prosedür her çağırıldığında rasgele sayı üreteci yeniden başlatılacak Rsayi(0) = Int(20 * Rnd) ’20 adet rasgele sayıdan oluşan bir dizi oluşturuluyor For j = 1 To 19 Do sayi = Int(20 * Rnd) h = 0 For k = 1 To j If sayi <> Rsayi(k - 1) Then h = h + 1 ‘Bu dizide hiçbir sayı tekrarlanmamalı Next k Loop Until h = j Rsayi(j) = sayi Next j T = 120 ‘PictureBox ların ilk Top pozisyonu L = 120 ‘PictureBox ların ilk Left pozisyonu For j = 0 To 19 Picture1(Rsayi(j)).Top = T ‘Rasgele indeksli PictureBox ların Top ve Left pozisyonları ayarlanıyor Picture1(Rsayi(j)).Left = L L = L + 1200 If L = 6120 Then T = T + 1320 L = 120 End If Next j End Sub FrmSeviye FrmAbout FrmYardim FrmKartSec Private Sub CmdIptal_Click() Unload Me End Sub Private Sub CmdTamam_Click() If Shape1(0).Visible Then ‘Hangi dikdörtgen (Shape) görünür durumda ise o arkafon seçilmiş demektir fondosya = "fon1.jpg" ElseIf Shape1(1).Visible Then fondosya = "fon2.jpg" ElseIf Shape1(2).Visible Then fondosya = "fon3.jpg" ElseIf Shape1(3).Visible Then fondosya = "fon4.jpg" End If Unload Me End Sub Private Sub Form_Load() Select Case fondosya Case "fon1.jpg": Shape1(0).Visible = True Case "fon2.jpg": Shape1(1).Visible = True Case "fon3.jpg": Shape1(2).Visible = True Case "fon4.jpg": Shape1(3).Visible = True End Select End Sub Private Sub Image1_Click(Index As Integer) For j = 0 To 3 ‘Hangi Image e tıklandı ise o resme ait Shape görünür oluyor If j = Index Then ‘Amaç kullanıcıya resim seçildi etkisi yaratmak Shape1(j).Visible = True Else Shape1(j).Visible = False End If Next j End Sub Program Eş Kartları Nasıl Anlıyor? Birbiri ile eş olan resimleri içeren PictureBox’lar aşağıdaki gösterilmiştir: Yani, 1. Indeks farkı = 5 olan (6-1=5 gibi) ve Indeks değeri 10’dan küçük olan kartlar eş resimleri taşır. (0-9 arası kartlar) 2. Indeks farkı = 5 olan (16-11=5 gibi) ve Indeks değeri 10’dan büyük olan kartlar eş resimleri taşır. (10-19 arası kartlar) PictureBox’lara ait resimler bu şekilde belirlendikten sonra Karistir prosedürü PictureBox’ların yerlerini rasgele değiştiriyor. Böylece oyunu oynayan eşleri bilemiyor (Programcı da buna dahil), ancak program biliyor. TOOLBAR (ARAÇ ÇUBUĞU) Programlarımıza, menünün yanı sıra bir araç çubuğu da ekleyebiliriz. Bunu, VB’nin ToolBar ve ImageList kontrollerini kullanarak gerçekleştiriyoruz. Aşağıda klasik bir araç çubuğu gösterilmiştir: ImageList ve ToolBar Kontrolleri ImageList ve ToolBar kontrolleri VB’nin standart bileşenleri içersinde yer almazlar. Bu kontrolleri içeren bileşen (component) Microsoft Windows Common Controls adlı bileşendir. Bu ve benzeri harici bileşenleri projemize dahil etmek için aşağıdaki yol izlenmelidir: 1. Project Menüsü-Components seçeneğini seç. 2. Açılan pencerede istediğin bileşen(ler)in yanına işaret koy ve Tamam düğmesine bas. Bu işlemleri yapıldığında, eklenen bileşenin içerdiği kontrollerin simgelerinin, VB’nin standart araç çubuğuna eklendiği görülür. Bir ToolBar kontrolü yaratmak için öncelikle forma toolbarın resimlerini sağlayacak bir ImageList yerleştirilmelidir. ImageList nesnesi de Timer kontrolü gibi çalışma anında otomatik olarak görünmez olur. Yerleştirilen ImageList’in özellikler-properties penceresinde (sağ tuş menüsünden açılan), listeye dahil edilecek resim dosyaları belirlenir ve her resim 0’dan başlayan tamsayılarla indekslenir. Form üzerine yerleştirilecek ToolBar kontrolü de, şekilde gösterildiği gibi daha önce yerleştirilmiş olan ImageList kontrolü ile ilişkilendirilir ve Insert tuşu kullanılarak butonlar eklenir. Her bir butona, ImageList’te indekslenen sayı ile bir resim atanır. ImageList’in Properties penceresinin Images sekmesinde yer alan bazı özellikler aşağıda açıklanmıştır: Index : Seçilen resme ait indeks numarası (Toolbarda kullanılacak) Insert Picture : Resim listesine yeni resim ekler. Remove Picture: Listeden seçilen resmi kaldırır. Image Count : Listedeki resimlerin toplam sayısını gösterir. Tag : Programcı bilgi alanı. (İşlevsiz) Key : Seçilen resme ait anahtar ad. (Kodlarda kullanılır) ToolBar’ın Properties penceresinin Buttons sekmesinde yer alan bazı özellikler aşağıda açıklanmıştır: Indeks : Seçilen butona ait indeks numarası. Caption : Seçilen butonun yazısı. Key : Seçilen butona ait anahtar ad. (Kodlarda kullanılır) Style : Seçilen butonun görünüm tipi. Tag : Programcı bilgi alanı. (İşlevsiz) ToolTipText : Seçilen butona ait balon yardım metni. Image : Butona ait resmin ImageList’teki indeks numarası. ÖRNEK UYGULAMA : SLAYT GÖSTERİCİSİ Bu örnek uygulamamız, manyetik ortamda kayıtlı (Disk, Disket ya da CD) çeşitli formatlardaki resim dosyalarını derleyerek slayt düzeninde görüntülemekte, bunların söz konusu ortamdaki adreslerinden (yollarından) bir slayt dosyası oluşturmakta ve bu dosyayı istenildiğinde açmaktadır. Uygulama, üzerinde bir menü ve toolbar bulunan bir ana form ve bunun dışında dört adet formdan ve bir modülden oluşmaktadır. Toolbar, menü ile aynı fonksiyonları gerçekleştiren butonları içerir. Ana formun haricindeki formlar, uygulamaya ait ayarlamaların yapıldığı bir form, manyetik ortamda yer alan resim dosyalarını derleyebileceğimiz bir form, program hakkında formu ve yardım formudur. Dosya açma ve dosya kaydetme işlemleri dışında uygulama, şu ana kadar kazanılan bilgi birikimi ile rahatlıkla anlaşılabilir. Bu işlemleri, Windows’un kendisine ait “Yeni adla kaydet” (Save as) ve “Aç” (Open) DialogBox’larını kullanarak gerçekleştiriyoruz. Bu DialogBox’ları, VB’nin Microsoft Common Dialog Control bileşeninde yer alan (ki bu bileşen standart araç çubuğunda yer almaz, bir önceki bölümde anlatıldığı gibi eklenir) CommonDialog nesnesini kullanılarak kontrol ederiz. Bu kontrolle uyumlu olarak çalışacak diğer bir nesne, Microsoft Rich Text Box Control bileşeninde yer alan RichTextBox nesnesidir. Form üzerine yerleştirilecek bir CommonDialog, çalışma anında görünmez olur. İşlevi, Windows’a ait DialogBox’ları açmak ve bu pencerelerle veri alışverişi gerçekleştirmektir. Bizim uygulamamızda, Aç penceresinde seçilen dosyanın içeriği, form üzerinde yer alan RichTextBox’a metin olarak aktarılır ve programımız bu veriyi işleyerek kendisi için anlamlı bir biçime getirir. Kaydet penceresi de bunun tam tersi mantıkla, RichTextBox içersindeki bilgiyi kullanıcının isimlendireceği bir dosyaya kaydeder. Elbette bu bilgi de programımız tarafından kaydetme işleminden önce anlamlı bir biçime getirilmiştir. Diğer bir deyişle, işletim sistemi ile programımız arasındaki köprü RichTextBox, bu köprü üzerinde veriyi her iki taraf taşıyan kontrol ise CommonDialog’dur. Aşağıda, formların genel görünümleri ile her bir forma ait kodlar verilmiştir: FrmAna Dim yol, sol, sag Private Sub MnuCikis_Click() End End Sub Private Sub CmdGeri_Click() rsyc = rsyc - 1 If rsyc = -1 Then If devirli Then rsyc = LstGelenPath.ListCount - 1 Else rsyc = 0 End If End If yol = LstGelenPath.List(rsyc) & "\" & LstGelenFile.List(rsyc) If yol <> "\" Then Image1.Picture = LoadPicture(yol) End If End Sub Private Sub Cmdileri_Click() rsyc = rsyc + 1 If rsyc = LstGelenPath.ListCount Then If devirli Then rsyc = 0 Else rsyc = LstGelenPath.ListCount - 1 End If End If yol = LstGelenPath.List(rsyc) & "\" & LstGelenFile.List(rsyc) If yol <> "\" Then Image1.Picture = LoadPicture(yol) End If End Sub Private Sub Form_Load() isyc = 0 gsyc = 0 devirli = True boyut = True End Sub Private Sub MnuDosyaAc_Click() DosyaAc End Sub Private Sub MnuDosyaExit_Click() End End Sub Private Sub MnuDosyaKaydet_Click() DosyaKaydet End Sub Private Sub MnuDosyaYeni_Click() YeniKaset End Sub Private Sub MnuSecAyr_Click() FrmSecenek.Show 1 End Sub Private Sub MnuSecTlb_Click() If MnuSecTlb.Checked = True Then MnuSecTlb.Checked = False Toolbar1.Visible = False Else MnuSecTlb.Checked = True Toolbar1.Visible = True End If End Sub Private Sub MnuSlaytEkle_Click() SlaytEkle End Sub Private Sub MnuYardimAbout_Click() FrmAbout.Show 1 End Sub Private Sub Toolbar1_ButtonClick(ByVal Button As ComctlLib.Button) Select Case Button.Key Case "BtnYeni" YeniKaset Case "BtnAc" DosyaAc Case "BtnKaydet" DosyaKaydet Case "BtnYazdir" Case "BtnEkle" SlaytEkle Case "BtnScnk" FrmSecenek.Show 1 Case "BtnYardim" Case "BtnCikis" End End Select End Sub Private Sub SlaytEkle() FrmBul.Caption = "Slayt Ekle" For j = 0 To LstGelenPath.ListCount - 1 FrmBul.LstPath.AddItem LstGelenPath.List(j) FrmBul.LstSecilen.AddItem LstGelenFile.List(j) Next j FrmBul.Show 1 End Sub Private Sub YeniKaset() LstGelenPath.Clear LstGelenFile.Clear FrmBul.Caption = "Yeni Slayt Kaseti" FrmBul.Show 1 End Sub Private Sub DosyaAc() CommonDialog1.Filter = "Slayt Dosyaları|*.sly" CommonDialog1.ShowOpen RichTextBox1.LoadFile CommonDialog1.filename, rtfRTF dosya = RichTextBox1.Text Do p = InStr(1, dosya, "/") If p <> 0 Then parca = Left(dosya, p - 1) Mid(dosya, 1) = Space(p) dosya = Trim(dosya) Else parca = dosya End If Parcala (parca) LstGelenPath.AddItem Trim(sol) LstGelenFile.AddItem sag Loop Until p = 0 End Sub Private Sub DosyaKaydet() Dim dosya As String dosya = LstGelenPath.List(0) & "\" & LstGelenFile.List(0) For j = 1 To LstGelenPath.ListCount - 1 dosya = dosya & "/" & LstGelenPath.List(j) & "\" & LstGelenFile.List(j) Next j RichTextBox1.Text = dosya CommonDialog1.Filter = "Slayt Dosyaları|*.sly" CommonDialog1.ShowSave RichTextBox1.SaveFile CommonDialog1.filename, rtfRTF End Sub Private Sub Parcala(GelenStr As String) sol = " " sag = " " Do p = InStr(1, GelenStr, "\") If p <> 0 Then sol = sol & Left(GelenStr, p) Mid(GelenStr, 1) = Space(p) GelenStr = Trim(GelenStr) Else sag = GelenStr End If Loop Until p = 0 sol = Left(sol, Len(sol) - 1) End Sub FrmBul Dim j Private Sub CmdEkle_Click() Dim syc, k syc = 0 For j = 0 To File1.ListCount - 1 If File1.Selected(j) Then For k = 0 To LstSecilen.ListCount - 1 If LstSecilen.List(k) <> File1.List(j) Then syc = syc + 1 Next k If syc = LstSecilen.ListCount Then LstSecilen.AddItem File1.List(j) LstPath.AddItem File1.Path End If syc = 0 End If Next j End Sub Private Sub CmdIptal_Click() Unload Me End Sub Private Sub CmdSil_Click() For j = 0 To LstSecilen.ListCount - 1 If LstSecilen.Selected(j) Then LstSecilen.RemoveItem (j) LstPath.RemoveItem (j) Exit For End If Next j End Sub Private Sub CmdTamam_Click() FrmAna.LstGelenFile.Clear FrmAna.LstGelenPath.Clear If LstSecilen.ListCount <> 0 Then For j = 0 To LstSecilen.ListCount - 1 FrmAna.LstGelenPath.AddItem LstPath.List(j) FrmAna.LstGelenFile.AddItem LstSecilen.List(j) Next j FrmAna.Image1.Picture = LoadPicture(LstPath.List(0) & "\" & LstSecilen.List(0)) End If rsyc = 0 Unload Me End Sub Private Sub CmdTemizle_Click() LstSecilen.Clear LstPath.Clear End Sub Private Sub Dir1_Change() File1.Path = Dir1.Path End Sub Private Sub Drive1_Change() Dir1.Path = Drive1.Drive End Sub Private Sub File1_Click() Image1.Picture = LoadPicture(Dir1.Path & "\" & File1.filename) End Sub FrmSecenek Private Sub CmdIptal_Click() Unload Me End Sub Private Sub CmdTamam_Click() If OptDevirli.Value Then devirli = True Else devirli = False End If If Check1.Value = 1 Then FrmAna.Image1.Stretch = True FrmAna.Image1.Width = 5385 FrmAna.Image1.Height = 3255 Else FrmAna.Image1.Stretch = False End If Unload Me End Sub Private Sub Form_Load() If devirli Then OptDevirli.Value = True Else OptDevirsiz.Value = True End If If FrmAna.Image1.Stretch Then Check1.Value = 1 Else Check1.Value = 0 End If End Sub RANDOM (RASGELE) ERİŞİMLİ DOSYALAR Şu ana kadar yaptığımız bütün uygulamalarda, bilgiyi sadece değişkenlerde sakladık. Oysa amacı veri depolamak ve gerektiğinde bu veriyi işleyerek bilgiye dönüştürmek olan bir uygulamanın, bundan daha gelişmiş bir veri saklama yöntemine gereksinimi vardır. Bunlardan ilki, rasgele erişimli dosyalardır. “Rasgele” sözcüğü, VB’nin kullandığı erişim yönteminden gelmektedir. Bu dosya tipinde her kayıt, otomatik olarak bir kayıt numarası ile numaralandırılır. Herhangi bir kayda bu kayıt numarası ile doğrudan ulaşabiliriz. Ancak bir kayda başka bir alan kullanılarak ancak sıradan erişilebilir. Bu da kayıt sayısı arttığında çok ta pratik bir yöntem değildir. Ama az sayıda kayıt ile işlem yapıyorsak ya da binary dosyalar üzerinde çalışıyorsak, bu dosyalama türünü rahatlıkla kullanabiliriz. Şimdi kullanacağımız bazı komut ve deyimleri açıklayalım: Open Deyimi Dosya açmak/yaratmak için kullanılır. İlk açıldığında dosya yaratılır. Daha sonraki her açılışında ise belirlenen moda uygun olarak açılır. Genel sözdizimi: Open <dosya> For mod [Access erişim] [kilit] As [#]DosyaNumarası [Len=KayıtUzunluğu] <dosya> : Açılacak dosyanın yolu ve tam adını belirleyen string. Eğer yol belirtilmez ve sadece dosya adı (uzantısı ile) verilirse dosya, uygulamanın çalıştığı konumda aranır. mod : Dosyanın açılma modunu belirleyen anahtar. Append, Binary, Input, Output ya da Random. Eğer belirtilmezse dosya Random (Rasgele) modda açılır. Append, Input ve Output Sequential (Sıralı) dosyalar içindir. Bu tür dosyalar, kayıt mantığı olmayan metin tabanlı dosyalardır. Append bu dosyaya veri ekleme, Input girdi Output ise veri okuma modunda açar. Binary ise ikili (makine koduna dönüştürülmüş) dosya açmak için kullanılır. erişim : Erişim biçimi. Read, Write, ya da Read Write anahtarlarından birisi kullanılır. Belirtilme zorunluluğu yoktur. kilit : Dosyanın kilit modunu belirten anahtar. Shared, Lock Read, Lock Write ya da Lock Read Write. Bunlar sırasıyla dosyayı paylaşılan, okumaya kilitli, yazmaya kilitli ve hem okumaya hem yazmaya kilitli yapar. Belirtilme zorunluluğu yoktur. DosyaNumarası: Kodlarda açılan dosyayı temsil edecek 1-511 arası bir dosya numarası. Sıradaki boş dosya numarasını FreeFile fonksiyonunu kullanarak saptayabilirsiniz. KayıtUzunluğu : 32,767 byte ile sınırlı bir değer. Dosya random açıldı ise bu değer kayıt uzunluğudur. Eğer sequential dosya söz konusu ise bu değer dosyadaki karakter sayısı olacaktır. Örnekler: Sequential bir dosyayı Girdi amaçlı açalım: Open "TESTFILE" For Input As #1 ' Başka bir modda açmadan önce dosyayı kapatalım: Close #1 ' Bu örnekte binary bir dosya sadece yazma amaçlı açılıyor: Open "TESTFILE" For Binary Access Write As #1 Close #1 ' Dosya, Kayitlar adlı bir kayıt adı ile rasgele erişimli olarak açılıyor: Open "TESTFILE" For Random As #1 Len = Len(Kayitlar) Close #1 ' Sequential dosya Çıktı amaçlı olarak okuma ya da yazma yapılabilecek biçimde açılıyor: Open "TESTFILE" For Output Shared As #1 Close #1 ' Binary bir dosya okuma amaçlı olarak açılıyor. Ancak okuma kilidi konduğundan dosya açıkken başka bir uygulama tarafından kullanılamaz. Open “TESTFILE” For Binary Access Read Lock Read As #1 Close Deyimi Open deyimi kullanılarak açılan bir dosyayı kapatmak için kullanılır. Genel sözdizimi: Close [DosyaNumarası] DosyaNumarası belirtilmezse o an açık durumda olan tüm dosyalar kapatılır. Get Deyimi Random ya da Binary bir dosyadan okuma amaçlı olarak kullanılır. Genel sözdizimi: Get [#]DosyaNumarası, [KayıtNumarası], Değişken DosyaNumarası : Hangi dosyadan okuma yapıldığını belirtir. KayıtNumarası : Random dosyada kaydın sıra numarası, Binary dosyada ise byte numarası olarak algılanır. Değişken : Okutulan kaydın aktarılacağı değişken. Random dosyada kayıt türünde olmalıdır. Put Deyimi Random ya da Binary bir dosyaya yazma amaçlı olarak kullanılır. Genel sözdizimi: Put [#]DosyaNumarası, [KayıtNumarası], Değişken DosyaNumarası : Hangi dosyaya yazma yapılacağını belirtir. KayıtNumarası : Random dosyada kaydın sıra numarası, Binary dosyada ise byte numarası olarak algılanır. Değişken : Okutulan kaydın aktarılacağı değişken. Random dosyada kayıt türünde olmalıdır. Len Fonksiyonu Bir stringin karakter sayısını ya da bir kaydın byte uzunluğunu verir. Genel sözdizimi: Len(string | değişken) LOF Fonksiyonu Open deyimi ile açılan dosyanın byte uzunluğunu verir. Genel sözdizimi: LOF(DosyaNumarası) EOF Fonksiyonu Open deyimi ile Random ya da Sequential modunda açılan dosyanın sonuna ulaşılıp ulaşılmadığını belirten boolean değer döndürür. Genel sözdizimi: EOF(DosyaNumarası) FreeFile Fonksiyonu Open deyimi ile kullanılmak üzere, sıradaki boş dosya numarasını verir. Genel sözdizimi: FreeFile[(Aralık)] Aralık : 0 (default) verilirse boş dosya numarası 1 – 255, 1 verilirse 256 – 511 arasında aranacaktır. Type Bildirimi Modül seviyesinde kullanıcı-tanımlı veri türleri yaratmak için kullanılır. Random bir dosyayı oluşturacak kayıtların türü, modülde Type bildirimi kullanılarak belirlenir. Genel sözdizimi: [Private | Public] Type <değişken> <bileşen> As type [<bileşen> As type] . . . End Type ÖRNEK UYGULAMA Hazırlayacağımız uygulama Random (Rasgele) bir dosya üzerinde çalışacak ve aşağıdaki özelliklere sahip olacaktır: • Kayıt Girişi • Kayıt Arama • Kayıt Düzeltme • Kayıt Silme Bu özelliklerin hepsi uygulamamızda bir ana form tarafından çağrılan birer form olarak tasarlanmıştır. Aşağıda her bir form ve bu formlara ait kodlar verilmiştir: Module1 Type kayitturu Ad As String * 10 Soyad As String * 15 Adres As String * 50 Tel As String * 10 End Type Global Kayit As kayitturu Global Yeni As Boolean FrmAna FrmGiris Private Sub CmdKaydet_Click() If TxtAd.Text <> "" And TxtSoyad.Text <> "" Then Kayit.Ad = Trim(UCase(TxtAd.Text)) Kayit.Soyad = Trim(UCase(TxtSoyad.Text)) Kayit.Adres = TxtAdres.Text Kayit.Tel = TxtTel.Text cevap = MsgBox("Bilgiler dosyaya yazılsın mı?", 4) If cevap = 6 Then Put #1, TxtKayitNo.Text, Kayit TxtKayitNo.Text = TxtKayitNo.Text + 1 TxtAd.Text = "" TxtSoyad.Text = "" TxtAdres.Text = "" TxtTel.Text = "" TxtAd.SetFocus End If Else MsgBox "ADI ve SOYADI alanlarının doldurulması zorunludur." End If End Sub Private Sub Form_Load() Open "Rehber.dat" For Random As #1 Len = Len(Kayit) TxtKayitNo.Text = LOF(1) / Len(Kayit) TxtKayitNo.Text = TxtKayitNo.Text + 1 End Sub FrmBul Private Sub CmdAra_Click() Dim bulundu As Boolean bulundu = False If TxtAd.Text = "" Or TxtSoyad.Text = "" Then MsgBox "Lütfen ADI ve SOYADI alanlarını doldurunuz" Else For i = 1 To LOF(1) / Len(Kayit) Get #1, i, Kayit If Trim(UCase(TxtAd.Text)) = Trim(Kayit.Ad) And Trim(UCase(TxtSoyad.Text)) = Trim(Kayit.Soyad) Then TxtKayitNo.Text = i TxtAd.Text = Kayit.Ad TxtSoyad.Text = Kayit.Soyad TxtAdres.Text = Kayit.Adres TxtTel.Text = Kayit.Tel bulundu = True End If Next i If Not bulundu Then MsgBox "Aranan kayıt bulunamamıştır..." End If End If End Sub Private Sub TxtKayitNo_KeyPress(KeyAscii As Integer) If TxtKayitNo <> "" Then If KeyAscii = 13 Then Get #1, TxtKayitNo.Text, Kayit TxtAd.Text = Kayit.Ad TxtSoyad.Text = Kayit.Soyad TxtAdres.Text = Kayit.Adres TxtTel.Text = Kayit.Tel End If End If End Sub FrmDuzelt Private Sub CmdAra_Click() Dim bulundu As Boolean bulundu = False If TxtAd.Text = "" Or TxtSoyad.Text = "" Then MsgBox "Lütfen ADI ve SOYADI alanlarını doldurunuz" Else For i = 1 To LOF(1) / Len(Kayit) Get #1, i, Kayit If Trim(UCase(TxtAd.Text)) = Trim(Kayit.Ad) And Trim(UCase(TxtSoyad.Text)) = Trim(Kayit.Soyad) Then TxtKayitNo.Text = i TxtAd.Text = Kayit.Ad TxtSoyad.Text = Kayit.Soyad TxtAdres.Text = Kayit.Adres TxtTel.Text = Kayit.Tel bulundu = True End If Next i If Not bulundu Then MsgBox "Aranan kayıt bulunamamıştır..." End If End If End Sub Private Sub CmdDuzelt_Click() If TxtAd.Text <> "" And TxtSoyad.Text <> "" Then Kayit.Ad = Trim(UCase(TxtAd.Text)) Kayit.Soyad = Trim(UCase(TxtSoyad.Text)) Kayit.Tel = TxtTel.Text Kayit.Adres = TxtAdres.Text FrmSor.Show 1 If TxtAd.Text <> Kayit.Ad Or TxtSoyad.Text <> Kayit.Soyad Then If Yeni Then Put #1, LOF(1) / Len(Kayit) + 1, Kayit Else Put #1, TxtKayitNo.Text, Kayit End If End If Close #1 Unload Me End If End Sub Private Sub CmdKapat_Click() Close #1 Unload Me End Sub FrmSor FrmSil Private Sub CmdAra_Click() Dim bulundu As Boolean bulundu = False If TxtAd.Text = "" Or TxtSoyad.Text = "" Then MsgBox "Lütfen ADI ve SOYADI alanlarını doldurunuz" Else For i = 1 To LOF(1) / Len(Kayit) Get #1, i, Kayit If Trim(UCase(TxtAd.Text)) = Trim(Kayit.Ad) And Trim(UCase(TxtSoyad.Text)) = Trim(Kayit.Soyad) Then TxtKayitNo.Text = i TxtAd.Text = Kayit.Ad TxtSoyad.Text = Kayit.Soyad TxtAdres.Text = Kayit.Adres TxtTel.Text = Kayit.Tel bulundu = True End If Next i If Not bulundu Then MsgBox "Aranan kayıt bulunamamıştır..." End If End If End Sub Private Sub CmdKapat_Click() Close #1 Unload Me End Sub Private Sub CmdSil_Click() For i = TxtKayitNo.Text To LOF(1) / Len(Kayit) - 1 Get #1, i + 1, Kayit Put #1, i, Kayit Next i Open "Rehber.tmp" For Random As #2 Len = Len(Kayit) For i = 1 To LOF(1) / Len(Kayit) - 1 Get #1, i, Kayit Put #2, i, Kayit Next i Close FileCopy "Rehber.tmp", "Rehber.dat" Kill "Rehber.tmp" MsgBox "Kayıt silinmiştir..." Unload Me End Sub DOSYA VE KLASÖRLER ÜZERİNDE İŞLEMLER Bu bölümde, uygulamanın kendisi dışındaki dosyalara ve klasörlere müdahale etmesini sağlayacak bazı özel VB deyimlerini ve fonksiyonlarını tanıtacağız. CurDir : Geçerli klasörü verir. Eğer değiştirilmedi ise bu klasör, uygulamanın çalıştığı klasördür. ChDir() : Geçerli klasörü değiştirir. Örnek : ChDir “C:\Belgelerim” ChDrive() : Geçerli sürücüyü değiştirir. Örnek : ChDrive “D” MkDir() : Geçerli sürücü ve klasör altında bir klasör yaratır. Örnek : MkDir “Oyunlar” RmDir() : Geçerli sürücü ve klasör altında belirlenen klasörü siler. Örnek : RmDir “Oyunlar” FileCopy() : Belirli bir klasörde yer alan bir dosyayı belirlenen bir klasöre yeni adla kopyalar. Birden çok sayıda dosya üzerinde işlem yapmak için Joker karakterlerden yararlanılabilir. (*,?) Örnek : FileCopy “A:\Bulutlar.bmp” “C:\Windows\YeniBulutlar.bmp” Kill() : Belirli bir klasörde yer alan bir dosyayı silmek için kullanılır. Yine Joker karakterlerden yararlanılabilir. Örnek : Kill “C:\Windows\Gereksiz.doc” Name() : Bir dosya ya da klasörün adını değiştirmek için kullanılır. Örnek : Name “C:\Rehber.dat” “C:\Rehber.Tmp” FileLen() : Dosyanın byte olarak uzunluğunu verir. Örnek: FileLen “A:\deneme.exe” GetAttr()/SetAttr() : Dosyanın özniteliklerini değiştirir/verir. Parametreler aşağıda verilmiştir: vbNormal 0 Normal (geçerli) vbReadOnly 1 Salt-okunur vbHidden 2 Gizli vbSystem 4 Sistem dosyası vbDirectory 16 Klasör vbArchive 32 Arşiv dosyası Örnekler: GetAttr("C:\TEST.DAT") SetAttr "C:\TEST.DAT", vbHidden + vbReadOnly neyse yeterince örnekli sayfalardan vermeye çalıştım açıklamalarla beraber... unutmayın eğer kitap gibi bişey varsa elinizde paylaşın bizimle. |
değişkenler beni çok uğraştırıyor o yüzden belki benim gibi uğraşanlar için... DEĞİŞKEN TANIMLAMALARI (DIM) Değişken tanımlamaları genel olarak üç farklı biçimde yapılabilir: Global, Yarı-global ve Lokal. Lokal tanımlamalar bir nesneye ait altprogramlar içersinde gerçekleştirilen tanımlamalardır. Yarı-global tanımlamalar ise söz konusu nesnenin declarations kesiminde gerçekleştirilen ve nesneye ait tüm kodlarda geçerlilik sağlayan tanımlamalardır. Global tanımlamalar, projenin module bileşeninde gerçekleştirilirler ve tüm proje kapsamında geçerlilik sağlarlar. Değişken tanımlamalarında kullanılan Dim deyiminin genel sözdizimi aşağıdaki gibidir: Dim <Değişken adı>[([indisler])] [As [New] tür] Açıklamalar: <Değişken adı> Standart değişken isimlendirme kurallarına bağlı kalarak (Türkçe harfler, aritmetik işlem ya da mantıksal bağlaç operatörleri kullanılmayacak) verilecek herhangi bir isim. indisler Dizi türü değişken tanımlamalarında kullanılan indis alt ve üst sınırı. Genel olarak şu şekilde tanımlanırlar: AltSınır To ÜstSınır New Belirtildiği takdirde daha önceden tanımlanmış olan değişken, reset yapılarak yeniden tanımlanır. tür Belirtme zorunluluğu yoktur. (Belirtilmediği takdirde Variant olarak algılanır) Genel olarak kullanılabilecek değişken türleri: Byte (Küçük tamsayı), Boolean (Doğru/Yanlış), Integer (Tamsayı), Long (Büyük tamsayı), Currency (Para birimi), Single (Küçük gerçel sayı), Double (Büyük gerçel sayı), Decimal (10’un kuvvetleri), Date (tarih), String (metin), String*uzunluk (sabit-uzunluklu metinler için), Object (Nesne), Variant (Nümerik, string ya da tarih türlerinin hepsini kapsayan bir tür.) ya da kullanıcı-tanımlı bir tür. Örnek: Dim Deger1, Deger2 ‘Her ikisi de Variant Dim Sayi As Integer Dim Bulundu, Secim As Boolean, DogumTrh As Date Dim Dizi(50) ’51 elemanlı Variant dizisi Dim Matris(3, 4) As Integer ’12 elemanlı tamsayı matrisi Dim Matris3d(1 To 5, 4 To 9, 3 To 5) As Double ’90 elemanlı gerçel sayı matrisi Dim Trh(1 To 10) As Date ‘1 den 10 a kadar indekslenmiş tarih dizisi Dim MyArray() ‘Dinamik bir Variant dizisi (Belirli bir indeksleme yok) |
Yazıları Şifrelemek Kodun yazıldığı sistem..: Pentium II 333Mhz, 64Mb ram İşletim Sistemi.............: MS WindowsNT 4.0, Service Pack 5 Version.......................: MS Visual Basic 6.0 Enterprise Bu activex örneğinde verilen bir textin şifrelenmesini sağlıyacak bir OCX yapacağız. Bir Activex Kontrol projesi başlatarak aşağıdaki kodu User kontrol içine yapıştırın. Private Result As String Private Code As Integer Private AssRes As String Public Function Encrypt(StrEnc As String, IntVal As Integer) As String If inval > 128 Then IntVal = 128 AssRes = "" For i = 1 To Len(StrEnc) Result = Mid$(StrEnc, i, 1) Code = Asc(Result) Code = Code + Int(IntVal) If Code > 255 Then Code = Code - 255 End If AssRes = AssRes & Chr$(Code) Next i Encrypt = AssRes End Function Public Function Decrypt(StrEnc As String, IntVal As Integer) As String If inval > 128 Then IntVal = 128 AssRes = "" For i = 1 To Len(StrEnc) Result = Mid$(StrEnc, i, 1) Code = Asc(Result) Code = Code - Int(IntVal) If Code > 255 Then Code = Code - 255 End If AssRes = AssRes & Chr$(Code) Next i Decrypt = AssRes End Function Görüldüğü gibi sadece 2 adet fonksiyonumuz var ve bunlar textleri şifrelemek için kullanılıyor. Şimdi File menüsünden make XXXXXX.ocx seçeneği ile ocx dosyamızı oluşturalım. Güzel bir isimde vermeyi unutmayın. Ocx oluştuktan sonra yeni bir exe projesi açın ve yarattığınız OCX dosyasını components kısmına ekleyin. Formun üzerine 3 adet edit box ve 2 adet buton koyun. Tabii ki yarattığınız OCX dosyasınıda koymayı unutmayın. Şimdi ilk text box'a yazacağımız text 1. buton ile şifrelenerek 2. text box'a gelecek ve şifreyi açmak içinde diğre butonu kullanıcaz. O zamanda şifrelenmiş text eski hali ile 3. text box'da görünecek. Kolay gelsin ![]() |
![]() pc sözlüğü Microsoft Windows Terimleri x86. Intel 8086, 8088, 80188, 80186, 80286, 80386, 80486 ve Pentium yongaları. Bkz. microprocessor. access control (erişim kontrolü). Windows NT ve Windows 2000'de yer alan güvenlik mekanizması. Bu mekanizma ile nesnelerin kim tarafından kullanılacağı belirlenir. access control entry (ACE). Kullanıcılar ve gruplar için güvenlik numarası (security ID) içeren bir listedir. Bu listede kullanıc ve grupların hangi işlemleri için izni olduğu yer alır. access privileges (erişim izni). Dosya ve klasörler üzerinde işlem yapma izni. account (kullanıcı adı). Bir ağa giriş için gerekli kullanıcı bilgisi. Bkz. User account. account domain (kullanıcı domaini). Kullanıcı kayıtlarının yaratıldığı domain. account policy (kullanıcı kaydı politikası). Kullanıcı kayıtlarının kullanımının kontrol edilmesi düzenlemeleri. active (aktif). Kullanılmakta olan bir pencere, nesne ya da seçilmiş bir simge. Aktif pencerede çalışırken diğer pencereler art alanda kalırlar. Active Directory (aktif rehber). Active Directory, ağ kaynaklarını yönetmek için geliştirilmiş bir sistemdir. Windows 2000 Server'ın kuruluşunun ardından Active Directory kurularak kullanıcılar, gruplar, bilgisayarlar ve kaynakların yönetimi sağlanır. Active Directory kuruluşu ile birlikte başlıca üç ana program da bilgisayara yüklenir. Daha sonra bu programlar aracılığıyla Active Directory nesneleri yaratılır ve yönetilir. Active Directory Service Interfaces (ADSI). Active Directory'ye erişimi sağlayan standart bir programlama arabirimi. active partition (aktif disk bölümü). Bilgisayarın açılış yaptığı disk bölümü. Bir basic disk üzerinde aktif disk bölümü primary partititon olmalıdır. Address Resolution Protocol (ARP). Broadcast trafiğini kullanarak IP adresini ve network adaptörünün fiziksel MAC adresini bulan bir protokol. administrative template (.adm file). Group Policy düzenlemeleri için kullanılacak metin dosyası. address book (adres kitabı). Kullanıcı bilgilerini kayıt etmek için kullanılan mesaj sisteminde kullanılan bir veritabanı. Add-in (İçine-Ekle). Yazılıma özel komutlar ya da özellikler ekleyen ek programlardır. Örneğin, Word içinden ulaşılamayan bir uygulamadan, çizimleri almanızı sağlayan bir içine-ekle programı yazabilirsiniz. adress space (adres alanı). Bakınız. virtual virtual address space (sanal adres alanı). agent (servis). Simple Network Management Protocol (SNMP) üzerinde çalışan bir uygulama. aggregate functions (toplama fonksiyonları). SUM, AVG gibi veriler üzerinde işlem yapan fonksiyonlar. Aggregate fonksiyonlara örnek olarak: AVG, COUNT, COUNT(*), MAX, MIN, SUM, STDEV, STDEVP, VAR, ve VARP. alert (mesaj). Bir olaya karşı kullanıcı tanımlı bir tepki. Alert'ler bir işi çalıştırır ya da belirtilen bir operatöre e-mail gönderir. alerter service (mesaj servisi). Bir ya da daha çok kullanıcıya (bilgisayara) mesaj göndermeyi sağlayan servis. alias (öteki ad). Bir tabloya verilen geçici ad. Birçok Login ID tarafından paylaşılan bir veritabanı kullanıcısı adı. answer file (yanıt dosyası). Windows 2000 kuruluşu sırasında kullanılan ve kuruluş bilgilerini içererek otomatik kuruluş sağlayan bir dosya. application programming interface (API). Uygulamaların alt-düzey işlemleri yerine getirmek için kullandıkları rutinler. application event log (uygulama olayları logu). Windows NT ve Windows 2000 Event Viewer içinde olayları tutan bölüm/dosya. Uygulamalar hataları düzenlenerek bu loga kayıt yazarlar. application role (uygulama rolü). Bir uygulamanın güvenlik gereksinimi için yaratılan bir rol. application window (uygulama penceresi). Çalışmakta olan bir uygulamayı içeren alan. Uygulama pencereleri standart kontrollere, mönü ve başlık çubuklarına, araç çubuklarına sahiptir. architecture (mimari). Donanım ve yazılım sistemlerinin yapısı. argument (argüman). Procedure'lar arasında alıp-verilen (geçen) bir değişken, sabit ya da bir ifade. arithmetic operators (aritmetik işleçler / aritmetik operatörler). Toplama, çarpma, çıkarma ve bölme gibi işlemleri yerine getiren +,*,-,/ gibi işaretler. assigned applications (atanan uygulamalar). Uygulamaların assign (atama) edilmesi işlemi kullanıcıların bir uygulamayı kullanmalarını sağlanmasıdır. Böylece kullanıcılar uygulamayı kullandığında ya da bilgisayarını açtığında yazılım otomatik olarak kurulabilir. Bir OU içindeki kullanıcılara bir program assign edildiğinde program hemen kurulmaz. Sadece programın simgesi bilgisayarda görülür. Start mönüsü ve masaüstünden programı görmek ve başlatarak kurmak mümkündür. O programla ilgili bir dosyanın çağırılması (üzerinde çift tıklama) durumunda da program kurulur. Diğer bir deyişle bir uygulamayı assign etmek o uygulamanın her zaman kullanılabilir olmasını sağlar. Ancak fiziksel kuruluş işlemi yapılmaz. associate (ilişkilendirme). Dosya adından (uzantısından) dosyanın açılarak çalıştırılması. asynchronous event packet (zaman uyumsuz olay paketi). Bir olayın oluşumunu bir alt düzeye bildiren ve dosyalama sisteminde kullanılan bir veri yapısı. attribute (özellik). Bir nesnenin belli bir niceliği ya da niteliği. audit policy (denetim politikası). Domain ya da bir bilgisayar için yapılan işlemlerin kayıtlarının (log) tutulmasını sağlar. auditing (denetim). Belli kullanıcı işlemlerinin takip edilmesi sistemi. Dikkat!!:Bu doküman faruk çubukçu tarafından hazırlanmıştır. Dokümanlar "beta" olarak hazırlanmıştır. Bir kitap olarak hazırlanıp yayınlamamıştır. Daha fazla bilgi için: Farukcubukcu.com, authentication (kimlik denetimi). Kullanıcının sisteme giriş bilgisinin kontrol edilmesi. Temel bir kriptografi servisi. Kimlik denetimi ağ üzerinde güvenlik sağlar. Kullanıcıların adlarının sistem tarafından doğrulanması bir kimlik denetim işlemidir. automatic recovery (otomatik kurtarma). Sistemin açılışında tamamlanmayan işlemlerin geri alınması (roll back) ve diğer bakım işlemleri. AutoText (Otomatik Metin). Yeniden kullanmak istediğiniz metin ve grafikler için kayıt yeridir. Örneğin, sık kullandığınız bir yazışma adresi, standart bir anlaşma paragrafı ya da uzun bir iç yazışma dağıtım listesi yeri olabilir. Her metin ya da grafik seçimi, bir AutoText (Otomatik Metin) girdisi olarak kaydedilir ve her birine ayrı bir ad verilir. backup set (yedek seti). Bir ya da daha çok teyp üzerinde yedeklenen dosya ve klasörlerin toplam seti. bandwidth (bant genişliği). Sayısal iletişimde verilerin gönderilme hızı (bps). basic disk (temel diskler). Windows 2000 iki tür sabit disk kullanımını destekler. Basic diskler ve dinamik diskler. Basic diskler daha önceki Windows işletim sistemlerinde bulunan disk partitionlarından oluşur. Dinamik diskler ise gelişmiş disk kullanımını ifade eder. Bir ya da daha çok disk üzerinde oluşturulan volümleri destekler. Disk kullanım türleri disk üzerindeki alanların kullanımını belirler. Dinamik diskler sadece Windows 2000 tarafından kullanılır. basic input/output system (BIOS). Bir ROM üzerinde saklanan ve sistemin açılmasıyla birlikte işletilen yazılım. basic volume (temel volüm). Bir basic disk üzerindeki bir volüm. backup (yedek). Verilerin çeşitli risklere karşı yedek setleri halinde teyp birimine kopyalanması. backup device (yedekleme aygıtı). Backup ya da Restore işleminde kullanılan bir teyp, bir disk dosyası ya da named pipe. backup domain controller (yedek domain kontrol birimi). BDC. Windows NT Server'ın ana domain kontrol biriminin yedeği olarak kurulduğu bilgisayar. Domain ana kontrol biriminde yer alan kullanıcı veritabanını yedeğini zaman uyumlu olarak taşır. Kullanıcılar BDC'ye logon olabilirler. backup file (yedek dosyası). Full ya da partial database, transaction log ya da dosya/dosya gruplarının yedeğini içeren dosya. backup media (yedekleme ortamı). Yedek setini saklamak için kullanılan disk, teyp ya da diğer bir aygıt. backup set (yedek seti). Bir yedek işleminin çıktısı. background (artalan). Aktif pencerenin arkası ya da arka alanda yürütülen işlem. base data type (temel data tipi). Char, varchar, binary gibi, kullanıcı-tanımlı data tiplerinin yaratıldığı sistem-tarafından yaratılmış temel data tipleri. base tables (taban tablolar). Bir görünümün (view) üzerine kurulduğu tablo. batch (toplu iş). Bir ya da daha çok deyiminin yer aldığı dosya. batch program (toplu iş dosyası). Bir ya da daha çok NT komutunu içeren bir ASCII dosya. Toplu iş dosyaları genellikle .BAT uzantısına sahiptir. bcp files (bcp dosyaları). Zaman uyumlaştırma (synchronization) sırasında tabloları saklayan dosya. Berkeley Internet Name Domain (BIND). UNIX işletim sistemlerindeki Domain Name System (DNS) standardı. bit. Sayısal bilginin en küçük hali. 0 ya da 1 sayısı. Bookmark (Yerimi). Daha sonradan kolay erişmek amacıyla, başvuru olarak atanan seçim alanı ya da metin içindeki belli konumlardır. Yer imleri, gerçek hayatta, özellikle uzun bir kitap okurken kullandığınız, kaldığınız yeri unutmamak için yerleştirdiğiniz işaretlerdir. Word, sizin seçiminize göre, bulunduğunuz yeri işaretler ve aynı noktaya çabuk ve kolay erişimi sağlar. Books Online. Online kitap. Yardım ve araştırma amaçlı kullanılır. boot loader (önyükleyici). Sistemin başlatılmasını sağlayan ve yöneten program. boot partition (önyükleme bölümü). Windows NT ve Windows 2000 işletim sistemini ve dosyalarını içeren bölüm. Önyükleme bölümü sistem bölümü ile aynı olabilir ya da olmayabilir. Bkz. System Partition.boot partition (boot edilen disk bölümü). İşletim sisteminin bulunduğu disk bölümü. Boot bölümü ve sistem bölümü aynı olabilir. briefcase (çanta). Aynı dosyanın farklı uyarlamalarını uyumlaştırmayı sağlayan özel bir klasör. My Briefcase uygulaması ile network ortamında bir dosyaya güncel durumda sahip olmayı sağlar. Windows 2000'de bu sistem offline folder kullanımı olarak yenilenmiştir. Bkz. Offline Folder. bridgehead server. Active Directory replikasyon işleminde siteler arasındaki replikasyonu yönetmek için kullanılan bir server. browser (tarayıcı). Tarayıcı program. Bkz. Web browser. Internet ve intranet üzerindeki dosyalara erişmek için kullanılan bir client aracı. Örnein Microsoft Internet Explorer. browsing (göz atma, tarama). Ağ üzerindeki dosyalara, dizinlere, programlara ve aygıtlara erişme. Erişilecek kaynakların listesini elde etme işlemi. built-in functions (hazır fonksiyonlar). Uygulamalar tarafından sağlanan fonksiyonlar. Örneğin datetime gibi. built-in group (hazır grup). Windows NT işletim sisteminde otomatik olarak tanımlanan (var olan) gruplar. bulk copy program (bcp). Komut satırından yazılarak verileri kopyalamayı (yedeklemeyi) sağlayan program. byte (bayt). Bilgisayarda bir birim olarak tanınan bilgi birimi. Bir bayt genellikle sekiz bitten oluşur. cache (ön bellek). Ana bellekte daha önce (sık sık) erişilen bilgilere daha kısa zamanda erişmeyi sağlayan bir yardımcı bellek. DNS ve WINS için çok bilgilerin yerel olarak saklandığı yer. cached pages (ön belleğe alınan sayfalar). Cache içinde yer alan 8 K kapasiteli sayfalar. cascade (basamaklamak). Pencerelerin başlık çubukları görünecek biçimde alt alta dizilmesi. Bunun dışında veritabanı işlemi olarak yapılan bir işlemin; ilişkili olan diğer tablolarda da yapılması işlemi. Bkz. cascade delete. cascading delete (basamaklı silme). Bir silme işleminin ilgili tablolardaki diğer satırları da silmesi. cascading update (basamaklı güncelleme). Bir güncelleme işleminin ilgili tablolardaki diğer satırları da güncellemesi. case sensitive (büyük/küçük harf ayrımı). Büyük/küçük harf ayrımının yapılması. cell (hücre). Tablolarda verilerin girildiği satırların ve kolonların kesiştiği alanlar. certificate (sertifika). Internet üzerinde kimlik denetimi ve veri güvenliği için kullanılan sayısal bir belge. character (karakter). Bir birim anlamlı veri. Harf ya da rakam. character format (karakter formatı). Verilerin text karakterleri ile saklanması. character set (karakter seti). Uygulamaların kullandıkları char, varchar ve text data tiplerinde tanıdığı karakter seti. Bir karakter seti 256 harften oluşur. İlk 128 karakter genelde bütün karakter setlerinde aynıdır. İkinci 128 karakter ise ek karakterler (extended character set) olarak tanımlanır. character string (karakter dizgisi). Belli işaretlerle birbirinden ayrılmış karakter grupları. chart (grafik). Form ya da rapor üzerinde verilerin grafik olarak gösterildiği alanlar. check box (onay kutusu / kontrol kutusu). Bir seçeneğin seçildiğini gösteren kontrol. Diyalog kutularında yer alan ve X işaretini fare ya da ara çubuğuna basılarak seçilen seçenekler. checkpoint (kontrol noktası). Verilerdeki değişikliklerin database'e kayıt edildiğinin garanti edildiği gösteren yer. child domain (alt domain). DNS ve Active Directory içinde bir domain'in altında yer alan bir domain. class (sınıf). Ortak özellikleri olan nesneler kategorisi. Active Directory içinde her nesne şema içindeki bir ya da daha fazla sınıftan oluşur. client (istemci). Ağ üzerinde genellikle ağ kaynaklarından yararlanan kullanıcı (bilgisayar). Server tarafından paylaştırılan kaynaklara erişen bilgisayar. client cursor (istemci gösterici). Client üzerinde gerçekleştirilen bir cursor. Client cursor, bütün sonuç setinin client'a transfer edilmesini ve client API yazılımının (örneğin ADO) cursor'ın fonksiyonelliğini saklanan sonuç seti üzerinde gerçekleştirmesini sağlar. Client cursor'lar bütün corsor'ları desteklemezler. Sadece statik ve forward-only cursor'lar desteklenir. client-server network (istemci/sunucu ağ). Ağ kaynaklarının bir hizmet birimi (server) tarafından yönetildiği ve genellikle masa üstü uygulamaları için ağ üzerinde çok sayıda kullanıcıya (client) hizmet verildiği ağ ortamı. clipboard (pano). Uygulamalar arasında bilgi alışverişi yapmayı sağlayan bellekte geçici saklama alanı. cluster (küme). Node ya da host olarak bilinen bir grup bilgisayar. Küme içindeki bilgisayarlar özellikle mission-critical uygulamalarda kullanılırlar. Kümeleme Network Load Balancing ve kesintisiz işletim sağlar. Dikkat!!:Bu doküman faruk çubukçu tarafından hazırlanmıştır. Dokümanlar "beta" olarak hazırlanmıştır. Bir kitap olarak hazırlanıp yayınlamamıştır. Daha fazla bilgi için: Farukcubukcu.com, clustered index (kümelenmiş indeks). Fiziksel ve mantıksal veri düzeninin aynı olduğu indeks sistemi. column (kolon). Bütün satırların ortak olarak adlandırıldığı yer. command (komut). Bir işlemin yerine getirilmesini sağlayan sözcük. command button (komut düğmesi). Diyalog kutularında belli bir işlemi yerine getiren düğme. comparison (karşılaştırma operatörü). İki değeri ya da ifadeyi karşılaştırmak için kullanılan operatör (işleç). Örneğin büyüktür, küçüktür, eşittir gibi. composite index (birleşik indeks). Birden çok kolonu kullanan bir indeks. composite key (birleşik anahtar). İki ya da daha fazla kolondan oluşan bir anahtar. Özellikle iki ya da daha fazla join bulunan sorgularda gereksinim duyulur. computer browser service (bilgisayar göz atma servisi). Bilgisayarların ve kaynakların güncel listesini sağlayan servis. computer name (bilgisayar adı). Network ortamında ve işletim sistemi kuruluşunda bir bilgisayarı tek başına tanımlayan 15 karakterlik bilgi. concurrent access (aynı anda / birlikte erişim). Aynı datayı aynı anda birden çok kişi erişip güncellediğinde oluşur. configuration (konfigürasyon / görünüm). Bir bilgisayarın özellikleri. Ana bellek, işlemci, yan birimler ve yazılımlar olmak üzere tüm özellikleri . configuration manager (görünüm yöneticisi). Plug-and-Play teknolojisinde yazılımların görünümlerin (configuration) düzenleyen birim. connection (bağlantı). Bilgisayarlar arası ya da bir bilgisayar ile diğer bir bilgisayarın ya da aygıtın ilişki kurması. connection object (bağlantı nesneleri). Domain Controller arasında Active Directory replikasyon nesnelerini temsil eden nesne. Connection nesneleri Knowledge Consistency Checker tarafından otomatik olarak yaratılır. connectivity (bağlanabilirlik). Farklı bilgisayarların birbirleriyle iletişim kurması. copy to (kopyala). Seçilen metin ya da çizimin işaretlenerek (silinmeden) panoya atılması. cryptography (kriptografi). Güvenlik alanında yapılan çalışmalar. Genelde dört alanda işlemleri gerçekleştirir: confidentiality, integrity, authentication ve nonrepudiation. cursor (cursor). Uygulamaların dataları satır satır işlemesiyle ilgili database nesnesi. Cursor'ler sayesinde sonuç seti üzerinde birçok işlem satır satır yerine getirilebilir. cut (kesme). Bir metin ya da çizim parçasının işaretlenerek (silinerek) panoya atılması. cyclical redundancy check (CRC). Veri iletişiminde hata kontrolü. data (veri). Bilgisayarda kullanılan verilerin kodlanmış temsili. data definition (veri tanımlama). Veritabanı nesnelerinin düzenlenmesi ve veri tabanının yaratılması. data dictionary (data sözlüğü). Database nesneleri hakkında bilgi içere sistem tabloları. Data Field (Veri Alanı). Bir veri kaynağındaki veri kategorisidir. Veri alanı, verilerin kaynağındaki sütunlara bağlıdır. Her veri alanın kaynağı, o veri sütununun ilk satırında listelenir. Örneğin, MüşteriAdı, Posta Kodu birer veri alanıdır. data file (data dosyası). Tablo, satır ve stored procedure gibi dataları içeren dosya. data integrity (data bütünlüğü). Dataların güvenilirliğini ve doğruluğunu ifade eden bir terim. İlişkisel database sistemlerinde tablolar arasındaki tutarlılığı ifade eder. data mart. Bir data warehouse'ın subseti. Bir data mart, departman düzeyindeki verileri saklar. data pump. Heterojen ortamlar arasında verileri dönüştürmeyi sağlayan bir OLE DB servis provider'ıdır. Data Record (Veri Kaydı). Veri kaynağındaki ilgili satırlar için kullanılır. Bir müşteri listesindeki, o müşteriyle ilgili her şey bir veri kaydı için örnek olabilir. data transfer (data transferi). İki bilgisayar arasında veri kopyalama. data transformation (data dönüştürme). Kaynak verinin çeşitli işlemler yapılarak hedef alana kopyalanması. data type (data türü/ data tipi). Bir kolon ya da değişken içinde saklanan verinin tipini (türünü) belirleyen özellik. data warehouse. Bir organizasyonun bilgi gereksinimlerin karşılamak için geliştirilmiş bir karar-destek sistemi. data modification (veri değiştirme). Veri tabanındaki verilerin değiştirilmesi; ekleme, silme vb. işlemler. INSERT, DELETE ve UPDATE deyimleri. database (veritabanı). Belli bir amaç için bir araya gelmiş (toplanmış) veriler. Tablolar, sorgular, formlar, raporlar ve modüller. database catalog (database katalog). Bir database'in sistem tabloları. database diagram (database diyagramı). Bir database şemasının herhangi bir kısmının grafiksel temsili. database engine (veritabanı motoru). Uygulama ya da veritabanı yönetim sistemi ile veri arasında ilişki kuran program. database file (database dosyası). Database'in saklandığı dosya. database name (database adı). Database için tanımlayıcı bir ad. Maksimum 30 karakter. database object (database nesnesi). Bir database'in bileşenlerinden birisi. Bir tablo, bir indeks, bir trigger, bir key vb. database object owner (database nesne sahibi). Bir database nesnesini yaratan kullanıcı. database statistics (veritabanı istatistikleri). Sorguları optimize etmek için veritabanında tutulan bilgiler. database owner (veritabanı sahibi). Veritabanını yaratan kullanıcı. database window (veritabanı penceresi). Access veritabanının yönetimini sağlayan pencere. datagram. Ağ üzerinde gönderilen verinin doğrulama paketi. Karşı taraf LAN ya da WAN üzerinde olabilir. datasheet (çalışma tablosu). Tablolar, formlar ve sorguların satırlar ve kolonlar olarak gösterildiği alanlar. deadlock (çıkmaz). İki kullanıcının (ikisinin birden) bir data birimi üzerinde kilitleme konu olması durumunda; Birbirlerinin kilitlerine erişmeye çalışırlar. Böylece birbirlerini bekleyen iki kullanıcı çıkmazı oluşturur. default (varsayım). İlişkisel database sistemlerinde her kolonun bir varsayım değeri vardır. Bu değer, herhangi bir değer ya da NULL olabilir. Hazır olarak tanımlanan veri. default database (varsayım database). Kullanıcının logon olur olmaz otomatik olarak kullandığı database. default gateway (varsayılan geçit). Yerel ağ üzerindeki ara network birimi. Yerel ağın diğer ağlarla bağlantısı için kullanılır. default language (varsayım dil). Kullanıcının logon olur olmaz otomatik olarak kullandığı dil. default printer (varsayım yazıcı). Print (yazdır) komutu ile doğrudan yollanan yazıcı. default subnet mask. Ağ üzerindeki bölümü gösteren bilgiler. Class A için 255.0.0.0. Class B için 255.255.0.0. ve Class C için 255.255.255.0. default value (hazır değer). Alanlara otomatik olarak gelen değerler. defragmentation (birleştirme). Disk üzerinde dağılmış parçaların bir araya getirilerek performansın artırılması. Bunun dışında Windows 2000'de Active Directory defragmentation işleminde ise directory database dosyalarındaki bilgiler birleştirilir. delegation (atama, delege etme). Bir Active Directory yönetim biriminin domain ya da ou, yönetiminin sorumluluğunun bir kullanıcıya verilmesi. delimiter (sonlandırıcı). Bir liste içindeki elemanları ayıran karakter. deny (iptal). Bir kullanıcının izninin kaldırması. Belli bir kullanıcının ya da rolün izninin kısıtlanması gerekebilir. Bu durumda deny işlemi yapılır. Bir kullanıcının ya da rolün deny edilmesi Kullanıcının ya da rolün izinlerini ortadan kaldırır. Diğer bir rolden (miras olarak) gelen izinleri de pasifleştirir. desktop (masaüstü). Bilgisayarın çalışma ekranı. Kullanıcının sistemi kontrol ettiği işletim sisteminin arayüzü. Pencereler, simgeler, vb. bütün işlemlerin yapıldığı toplam ekran alanı. destination directory (hedef dizin). Kopyalama ya da taşıma yapılacak dizin. destination table (hedef tablo). Yayınlanan (published) bir tablonun replikasyonu olarak yaratılan üye tablo. device (aygıt). Bilgisayar sisteminin bir parçası. Bir yazıcı, bir kart, fare, vb. device driver (aygıt sürücüsü). Belli bir aygıtın kullanımını sağlayan program. Bir aygıtın Windows 2000 ile iletişim kurmasını sağlar. Örneğin bir yazıcı sürücü gibi DHCP Manager (DHCP Yöneticisi). DHCP serverlarını yönetmek için kullanılan araç. Dikkat!!:Bu doküman faruk çubukçu tarafından hazırlanmıştır. Dokümanlar "beta" olarak hazırlanmıştır. Bir kitap olarak hazırlanıp yayınlamamıştır. Daha fazla bilgi için: Farukcubukcu.com, dialog box (iletişim kutusu). Kullanıcıdan bir bilgi alınacağı zaman ekrana gelen mesaj kutusu. Tamam ve İptal düğmeleri ve çeşitli seçenekleri içeren diyalog kutularının bazıları ortak iletişim kutusudur (Open gibi) . Her uygulamada aynısı ekrana gelir. directory (dizin). Bilgisayarlar, kullanıcılar ve diğer nesneler hakkında bilgi içeren bir kaynak. Windows 2000 directory sistemi yazıcılar, uygulamalar, kullanıcılar vb nesneler hakkında bilgi içerir. directory service (directory servisi). Directory bilgilerinin kullanıcılar tarafından kullanılmasını sağlayan bir hizmet. directory tree (directory ağacı). Bir directory içindeki hiyerarşik biçimde yer alan nesneler ve konteynırlar. directory (dizin). Sabit disk ya da disket üzerinde bilgi ve program dosyalarını içeren bir bölüm. directory partition (directory bölümü). Active Directory, Windows 2000 domain controller bilgisayarları arasında replike edilirken üç directory bölümü replike edilir: şema, configuration ve domain bilgisi. directory tree (dizin ağacı). Disk üzerinde yer alan dizinlerin ağaç biçiminde gösterilmesi. directory window (dizin penceresi). Windows 3.1'de Dosya Yöneticisinde, Windows 95 'te ve Windows NT'de Explorer'da mevcut dizin düzenini, alt dizinleri ve dosyaları gösteren pencere. dirty pages (değiştirilmiş sayfalar). Son checkpoint işleminden sonra değiştirilen ön belleğe alınan (cached) sayfalar. dirty read (değiştirilmiş sayfaları okuma). Uncommitted dataların okunması. Genellikle birden çok transaction ile aynı satırı okumasıyla oluşur. disable (kullanılamaz, geçersiz). Olmaması ya da çalışmaması şeklindeki bir düzenleme. discretionary access control list (DACL). Nesnelerin güvenlik açıklamalarının bulunduğu liste. diskette (disket). Küçük boyutlarda, belli bir kapasitede bilgi saklayan ortamlar. disk duplexing (disk çoğaltma). Bir diskin diğer bir disk kontrol aracılığıyla ayna kopyasının düzenlenmesi. disk mirroring (disk aynalama). Bir diskin bir bölümünün aynısının diğer bir fiziksel diske kopyalanmasıdır. disk quota (disk kotası). Bir kullanıcı tarafından kullanılabilecek maksimum disk alanı miktarı. disk striping (disk şeritleme). Verilerin 64 KB'lık bloklara bölünüp 2 ila 32 diskten oluşan disk dizisi (disk array) üzerinde düzenlenmesi işlemi. distinguished name. Relative distinguished adını kullanarak bir nesneyi tek (unique) olarak tanımlayan ad. Active Directory içindeki her nesne bir distinguished ada sahiptir. distributed file system (Dfs). Paylaştırılan klasörlerin merkezi olarak yönetildiği bir Windows 2000 servisi. distinguished name. Relative distinguished adını kullanarak bir nesneyi tek (unique) olarak tanımlayan ad. Active Directory içindeki her nesne bir distinguished ada sahiptir. Distributed file system (Dfs). Paylaştırılan klasörlerin merkezi olarak yönetildiği bir Windows 2000 servisi. distributed processing (dağıtılmış işlem). Data işleme aşamalarının farklı yerlerde bulunması. distributed query (dağıtılmış sorgu). Verilere farklı (heterojen) ortamlardan erişen bir sorgu. distribution database (dağıtım database). Replikasyon işleminde verileri alıp üyelere (subscriber) dağıtan database. Distributor. Distribution database'i içeren server. Distributor yayınlanan verileri alır, saklar ve üyelere (subscriber) dağıtır. document (belge). Yazılan ya da kullanılan bir veri dosyası. Örneğin WordPad ile yazılan belge. document-centric (doküman merkezli). Ortamın uygulamalarla değil de kullanıcının geliştirdiği dokümanlarla kullanılması. Windows 95, Windows NT ve Cario işletim sistemleri ilk doküman-merkezli işletim sistemleridir. domain (etki alanı). Windows 2000 ve Active Directory ağı içinde ortak directory veritabanını kullanan bir dizi bilgisayarın oluşturduğu ağ alanı. Bir domain merkezi olarak kaynakların yönetimini sağlar. Windows 2000 ağı içinde domain adları hiyerarşik olarak düzenlenir. domain controller (domain kontrolör). Domain içinde kullanıcıların kimlik denetimi yapan bilgisayar. domain controller (domain kontrol birimi). Ana domain kontrol biriminin yerine kullanıcıların logon olabileceği ikinci bir NT Server. Domain Name System (DNS). Domain adlarının bulunmasını sağlayan hiyerarşik adlandırma sistemidir. DNS, domain adlarına karşılık gelen IP adreslerinin bulunmasını sağlayan bir servis sağlar. domain namespace (domain ad alanı). DNS tarafından kullanılan veritabanı yapısı. double click (çift tıklamak). Farenin düğmesine ard arda iki kez basılması. Genellikle bir simge üzerine fare ile çift tıklanarak simgenin bağlı olduğu program çalıştırılır. drag (sürüklemek). Bir nesnenin fare ile taşınması. Bu işlemde nesne fare tuşuna basılarak bir yerden bir yere sürüklenir. driver (sürücü). Bilgisayarın bir kaynağı. A, B, C gibi disk ortamları ve ağ kaynakları. dynamic cursor (dinamik cursor). Açık olmasına rağmen altındaki verilerin değiştirilmesini etkileyen cursor. dynamic disk (dinamik disk). Windows 2000 iki tür sabit disk kullanımını destekler. Basic diskler ve dinamik diskler. Basic diskler daha önceki Windows işletim sistemlerinde bulunan disk partitionlarından oluşur. Dinamik diskler ise gelişmiş disk kullanımını ifade eder. Bir ya da daha çok disk üzerinde oluşturulan volümleri destekler. Disk kullanım türleri disk üzerindeki alanların kullanımını belirler. Dinamik diskler sadece Windows 2000 tarafından kullanılır. Dinamik diskler ise basit volümler, spanned volümler, mirror volümler, striped volümler ve RAID-5 volümlerinden oluşur. Dinamik disk kullanımının üstünlükleri şunlardır: Dynamic Host Configuration Protocol (DHCP). IP adreslerinin dinamik olarak yapılandırılmasını sağlayan bir network protokolü. dynamic recovery (dinamik kurtarma). Yazılım sorunlarını ve data bütünlüğünü kontrol etmek ve onarma işlemi. dynamic update (dinamik güncelleme). DNS sisteminde bilgisayar adlarının dinamik olarak kaydedilmesiyle ilgili düzenleme. dynamic volume (dinamik volüm). Windows 2000 içinde Disk Management aracı ile yaratılmış bir disk alanı. Bir dinamik volüm, simple, spanned, striped, mirrored, ve RAID-5 volümlerinden oluşabilir. emergency repair disk (ERD). Backup programı tarafından yaratılan ve %SystemRoot%/Repair klasöründeki üç dosyayı içeren bir disket. Bu disket sistemin açıladığı durumlarda kurtarma işlemi sırasında kullanılır. embed (katmak). Bir uygulamada yaratılmış bir bilgi öğesinin (bir resim, bir ses, metin) diğer bir uygulamaya eklenmesi. embedded object (katılmış nesne). Diğer bir uygulamadan kesilerek yapıştırılmış nesne. encryption (şifreleme). Verilerin okunmasını engellemek için uygulanan bir güvenlik yöntemi. Encrypting File System (EFS). Windows 2000'le gelen ve NTFS disk üzerindeki bilgileri korumayı amaçlayan bir düzenleme. encryption (işaretleme). Verilerin yeniden düzenlenerek korunası . enumarate (tanıma). İlgili nesnelerin listelenmesi ve tanımlanması. entity integrity (birim bütünlüğü). Bir tablodaki bir satırın tek bir birim olarak tanımlanmasını; böylece çift değer (duplicate) almamasını sağlayan özellik. Bu özellik genellikle UNIQUE ve PRIMARY KEY kısıtlamalarıyla sağlanır. exclusive lock (özel kilit). Serbest kalıncaya kadar diğer kilitler tarafından etkilenmeyen bir kilit. INSERT, UPDATE ya da DELETE işlemlerinde mutlaka bir özel kilit uygulanır. explicit trust relationship (açık güven ilişkisi). Windows 2000 domainleri arasında açık olarak tek yönlü (windows NT türü) bir güven ilişkisi ya da Windows 2000 ile bir Windows NT domaini arasında yaratılan güven ilişkisi. expression (ifade). Bir query içinde yer alan bir kolon adı, değişken, sabit ya da fonksiyon. extended memory (eklenmiş bellek). Ana bellek içinde 1 Mb. klasik bellek alanının üzerindeki bellek alanı. Windows 3.1eklenmiş belleği kullanarak kullanıcının bellek sorunu olmamasını sağlar. Sanal bellek de burada yer alır. Windows 95 ve NT bellek yönetiminde böyle bir kavram yoktur. Explorer (Windows Explorer). Windows 95 ve NT arabiriminde yer alan bir program. Dosyaları, klasörleri ve programları düzenlemek, bulmak vb işlemler için kullanılır. fault tolerance (hata toleransı). Donanım hatalarına karşı verilerin bütünlüğünün korunması. field (alan). Bir satır içindeki bir elaman. Bir kolon. Field (Alan). Metin, grafik, sayfa numaraları, tarih ve diğer bilgileri belgeye otomatik eklemek için kullanılan bir kod parçasıdır. Örneğin, Date (Tarih) alanı o anki tarihi belgeye ekler. Alanlar, ayrıca Mail Merge (Adres Mektup Birleştirme) işlemi içinde, alanları asıl belgeye bağlamak için kullanılır. file (dosya). Bir birim bilgi. Bir belge ya da bir programın adı, uzunluğu ve diğer özellikleri ile yapısı. Program dosyaları (.exe, .com, .bat, .pif) çalıştırılabilir. .DOC, .XLS gibi uzantılara sahip dosyalar ise kullanıcıların yarattığı veri dosyalarıdır. file name (dosya adı Bir dosyanın adı. Disk alanı üzerine kaydedildiği ad. Dosya adı iki kısımdan oluşur; dosya adı ve uzantısı. filegroup (dosya grubu). Bir birim olarak yönetilebilen bir ya da daha çok dosya. fixed database role (sabit database rolü). Her bir için belli görevleri tanımlayan rol. fixed server role (sabit server rolü). Database'lerin dışında server düzeyinde görevleri içeren roller. focus (odaklanma). Kullanıcı girişi için hazır olma. Bir kontrolün aktif hale gelerek kullanım için hazır olması (seçilmesi). Dikkat!!:Bu doküman faruk çubukçu tarafından hazırlanmıştır. Dokümanlar "beta" olarak hazırlanmıştır. Bir kitap olarak hazırlanıp yayınlamamıştır. Daha fazla bilgi için: Farukcubukcu.com, folder (klasör). Mantıksal bir depo alanı. İçinde dosyaları, programları ve dokümanları içeren klasörler masaüstünde yer alırlar ve Windows 95 ve NT kullanıcı arabiriminin ana birimini oluştururlar. Font Formatting (Karakter Biçimlendirme). İstediğiniz sayıda seçili karaktere uygulanabilecek biçimlendirme. Karakter biçimlerini uygulamak için, Format (Biçim) menüsünde Font (Yazıtipi) komutunu, Formatting (Biçimlendirme) araç çubuğunu ve klavye kısayollarını kullanabilirsiniz. foreground (önalan). ekranda aktif pencerenin kapladığı alan. foreign key (yabancı anahtar). Ana tablodan gelen ana anahtara karşılık ilgili alt tablolardaki alan. İlişkisel bütünlük kuralı gereği her yabancı anahtar diğer tabloda bir ana anahtarı işaret eder. forest (orman). Bir ya da daha çok Active Directory ağacının yer aldığı alan. Forest içindeki bütün domainler ortak veritabanını kullanırlar. format (biçim). Bir metnin renk, yazı tipi, paragraf düzeni vb. özelliklerle düzenlenmesi. free space (boş alan). Diskte yeni bölümler (partition) yaratmak için kullanılan kullanılmayan ve formasız alanlar. foreign key (yabancı anahtar). FK. Aynı ya da diğer bir tablodaki primary key değeri ile eşleşen kolon ya da kolon bileşeni. fully qualified domain name (FQDN). Domain içindeki yeri itibariyle tam olarak bir domaini belirten domain adı. Örneğin. Bilgisayar1.sirket.com, bir bilgisayarı gösteren tam bir domain adıdır. function (fonksiyon). Bir birim olarak işletilen komut kümesi. Bir ad ile ve gerekirse giriş parametreleriyle çalıştırılan fonksiyonlar belli bir işlemi yerine getirirler. global group (global grup). Domain'in tüm üyelerinde geçerli olan gruplar. Global Catalog (global katalog). Her domainden bir kısım kendi domaininin de bütün nesnelerini içeren Windows 2000 için özel bir domain controller. Active Directory sistemi içinde domain controller olan ilk server global katalog olur. globally unique identifier (GUID). Tek olarak üretilen 16-bayt bir değer. Zamanı ve bir sıra numarasını içerir ve belli bir aygıtı ya da nesneyi tanımlamak için kullanılır. Group Policy (grup politikaları). Programların, network kaynaklarının ve işletim sisteminin çalışmasını kontrol altına alan düzenlemeler. Grup politikaları bir kullanıcıya, gruba, OU'ya ya da domaine uygulanırlar. Group Policy object (grup politikası nesnesi). Grup politikalarını oluşturmak için kullanılan ve birden çok grup politikası düzenlemesini içeren düzenleme. grant (izin vermek). Kullanıcıya bir işlemi yapmak için izin vermek. group (grup). Belli sayıda kullanıcıdan oluşan bir grup. Yerel ve global olmak üzere belli işlemleri yapmak için gruplar tanımlanır. Program ya da dokümanlardan oluşmuş bir küme. hard disk (sabit disk). Sistem içinde yerleştirilmiş ve kendi sürücüsü içinde sabit olarak yer alan disk. hardware (donanım). Bilgisayarın fiziksel kısımları. Klavye, monitör, kartlar, kablolar vb. Hidden Text (Gizli Metin). Seçilen metni görüntülemenize ya da gizlemenize izin veren bir karakter biçimidir. Bu işlem, gizlenecek alan seçildikten sonra, Format (Biçim) menüsündeki, Font (Yazıtipi) komutu, Hidden Text (Gizli Metin) onay kutusu ile gerçekleştirilir. Word gizli metnin altını, noktalı çizgi ile çizer. hierarchical namespace (hiyerarşik ad alanı). DNS ad alanı gibi nesnelerin bir biriyle ilgili oldukları ya da bağlı oldukları adlandırma sistemi. home directory (kendi dizini). Bir kullanıcın kendi dosyalarına sahip olduğu dizini. icon (simge). Program, uygulama, disk sürücü, grup vb. öğelerin küçük çizimsel biçimleri. import computer (alan bilgisayar). Bir export server'dan bilgilerin ana kopyalarını alan bilgisayar. identifier (tanımlayıcı). Bir database nesnesinin adı. Bir tanımlayıcı 128 karakter uzunluğunda olabilir. identity column (identity kolonu). Değeri otomatik olarak artan bir kolon. Infrared Data Association (IrDA). Infrared aygıtlar arasında veri transferi için kullanılan ağ protokolü. infrared device (infrared aygıt). Infrared ışıkla çalışan aygıtlar. Yazıcı vb. inheritance (miras, etkilenme). Bir nesnenin mevcut (üst) nesnelerden etkilenmesi. Nesneler yaratırken ve yönetimini delege ederken göz önünde bulundurulacak şeylerden birisi de inheritance (miras ya da üst düzeyden otomatik olarak alına haklar ya da düzenlemeler) dir. Bir OU içinde bir OU yaratırsanız, yeni OU bütün özelliklerini üst seviyeden alır. İşte bu işleme inheritance (miras) denir. Bu etkilenme yönetim amacına uygun olarak kullanılmalıdır. Örneğin merkezi politikaları yukarıdan aşağıya uygulamak gibi. insertion point (ekleme noktası). Yazı ortamında metne ekleme yapılacak yer. installable filesystem (yüklenebilir dosya sistemi). Windows 95 ve Windows NT tarafından desteklenen dosyalama sistemi. interface (arabirim, arayüz). İki ayrı sistem arasında ilişki kuran birim. interrupt (kesme). Bir işlemin yapılmasını sağlayan donanım sinyali. Internet. Genel amaçlı ve uluslararası bir bilgisayar ağı. 1960'lı yıllarda geliştirilen Internet ağı bugün milyonlarca kişinin kullandığı yaygın bir ağdır. Firmalar ve şahıslar eğitim, ticari, bilgi verme, bilimsel ve genel alanlarda kullanılır. Intranet. Internet teknolojilerinin şirket ya da organizasyon içinde etkin iletişim ve bilgi akışı için kullanımıdır. IntelliMirror. Windows 2000 özelliği. Kullanıcıların kendi masaüstü ve yazılım düzenlemelerini her yerde ve her zaman kullanmalarını sağlayan teknoloji. Internet Information Services (IIS). Microsoft Windows 2000 Server içinde hazır olarak yer alan bir Web server yazılımdır. Web sitesi, Web uygulaması ve Web kümeleri (cluster) yaratmayı sağlar. Belgeleri paylaştırmak ya da belgelere intranet ya da Internet yoluyla ulaşmak için kullanılan bir üründür. IP address (ip adresi). Ağ üzerinde bir bilgisayarı ya da aygıtı tanımlamak için kullanılan 32-bit adres. job (iş). Bir ya da daha fazla adımdan oluşan yönetim eyleminin yapılması. join (bağlantı). İki ya da daha fazla tablo arasında bir bağlantı oluşturularak bir sonuç setinin oluşturulması. kernel (çekirdek). İşletim sisteminin temeli. En alt düzey fonksiyonlar ve bellek yönetiminin yapıldığı yer. key (anahtar). Bir tablo içinde bir satırı tek olarak (unique) tanımlayan bir kolon. Bakınız: Primary key. latency (gecikme). Değişikliğin karşı tarafa yansıması için geçen süre. legacy (diğer). Kullanılmakta olan tüm (diğer) donanım birimlerini gösterir. Plag-and-Play teknolojisine uymayan bütün donanım birimleri (eski) legacy olarak adlandırılırlar. linked server (bağlanılan server). Diğer bir server gibi kullanılan bir OLE DB data kaynağı. list box (liste kutusu). Genellikle dizin ve dosya adlarını içeren listeleyen kontrol. local group (yerel grup). Bir ya da daha çok bilgisayardan oluşan ve kendi bilgisayarının kaynaklarının yönetiminde kullanılan gruplar. local printer (yerel yazıcı). Bilgisayarın çıkışına doğrudan bağlanan yazıcı. local variable (yerel değişken). Atanmış bir değeri olan kullanıcı-tanımlı bir değişken. Yerel bir değişken DECLARE deyim ile tanımlanır. İlk değeri de SELECT ya da SET deyim ile verilir. lock (kilit). Çok kullanıcılı ortamda aynı kaynağa erişimin kısıtlanması. logical operators (mantıksal operatörler). WHERE deyimiyle arama işlemlerinde kullanılan AND, OR ve NOT gibi operatörler. login-ID. Server'a giriş yapan kullanıcı. logon script. Kullanıcının sisteme girmesiyle birlikte otomatik olarak işletilen dosyalar. Main Document (Ana Belge). Main Document (Ana Belge), Mail Merge (Adres-Mektup Birleştirme) birleştirme işleminde, birleştirilmiş belgenin her kopyasında aynı kalan metin ya da grafikleri içerir. Örneğin, yılbaşında göndereceğiniz tebriklerde metin içeriği hep aynı kalır, bunun yanında kişiler ve adresler (veriler) değişir. Burada aynı kalan metinler Main Document (Ana Belge) oluşturur. main directory (ana dizin). Sabit disk içinde bütün dizinleri içeren dizin (kök). main memory (ana bellek). Programların ve verilerin geçici olarak yer aldığı ve işlemlerin yapıldığı bellek alanı. mandatory user profile (zorunlu kullanıcı profili). Kullanıcıların zorunlu olarak uyacakları profil dosyaları. Master Boot Record (MBR). Bir sabit disk üzerindeki ilk sektör. MBR disk için partition tablosunu içerir. maximize (ekranı kaplama). Pencerenin masaüstünü kaplayacak biçimde en büyük boyutlarına getirilmesi. memory(bellek). Bilgi ve programlar için geçici saklama alanı. menu (menü). Uygulama pencerelerinde yapılacak işlemleri tanımlayan işlem grupları. menu bar (menü çubuğu). Mönü adlarının dizili olduğu ve genellikle pencerelerin ikinci çubuğu. Merge Fields (Birleştirme Alanları). Mail Merge (Adres mektup birleştirme), Main Document (Asıl Belge) içine eklediğiniz birleştirme alanları, seçilmiş veri kaynağından alınan bilginin nereye ekleneceği konusunda Word'e yol gösterir. Birleştirme alanları eklemek için, Mail Merge (Adres Mektup Birleştirme) araç çubuğunda, Insert Merge Field (Birleştirme Alanı Ekle) düğmesini tıklamalısınız. Microsoft Repository. Automation nesnelerine erişim sağlayan sistemi. Microsoft Repository, TDS paketlerinin saklanması için ilişkisel database bileşenleri içerir. Microsoft Management Console. Yönetim araçlarını bir araya getiren bir araçtır. MMC içindeki bu araçlar konsol olarak adlandırılır. Konsollar snap-in olarak adlandırılan araçları içerirler. Microsoft Network. The Microsoft Network (MSN), dünya çapındaki bilgisayar kullanıcıları birliğine kolay ve ucuz erişim sağlayan çevrimiçi bir hizmettir. MSN'e erişim bir Windows 95 özelliğidir MSN, işletim sistemiyle mükemmel biçimde birleştirilmiştir. MSN'i kullanarak, dünya üzerinde insanlarla haberleşebilir; son haberleri, spor, hava ve parasal bilgileri okuyabilir; teknik sorularınıza yanıt bulabilir; binlerce program arasından istediklerinizi yükleyebilir; Internet'e bağlanabilir ve diğer işlemleri yapabilirsiniz. mirror set (ikiz set). Windows NT 4.0 ve diğer eski işletim sistemlerinde mirror (disk ikizleme) işlemi mirror setlerle yapılmaktaydı. Windows 2000'de mirror setler yerini mirrored volüme bıraktı. Mirrored volümler bir sabit diskin diğer bir sabit disk ile yedeklenmesidir. Diğer bir deyişle veriler iki diske birden yazılarak, disklerden birisinin arızalanması durumunda diğer diskin kullanılmasını sağlar. mirrored volume (ikiz volüm). Windows 2000 Server üzerinde mirrored volüm yaratmak için en azından iki dinamik disk kullanılır. Mirrored volümler hata toleransına sahiptir. Bu arada mirrored volümler extended ya da striped olamazlar. Mirrored volüm yaratıldıktan sonra iki disk tek bir sürücü harfi ile kullanılır. microprocessor (mikroişlemci). Bilgisayarın ana işlem birimi. Aritmetik, mantık işlemlerini ve belli sayıda komutu yerine getiren yongalar. minimize (simge durumuna getirme). Pencerenin masaüstünde görünmeden görev çubuğunda yer alması. MMC. Microsoft Management Console. Yönetim araçlarını bir araya getiren bir araçtır. MMC içindeki bu araçlar konsol olarak adlandırılır. Konsollar snap-in olarak adlandırılan araçları içerirler. MMC snap-in. MMC içine eklenen araçlar. Örneğin Active Directory Users and Computers aracı MMC içine eklenerek gerek durulduğunda bir MMC ortamından diğer yardımcı programlarla birlikte kullanılır. mode (kip). İşletim sistemi, sürücü ya da bir yazılımın çalışma biçimi. Yazılımın çalışma kipi işletim sistemi kaynaklarını, bellek ve işlemci kullanımı ile ilgilidir. Bkz. Protected mode. modem. Bilgisayarın telefon hatları üzerinden birbirlerine bilgi iletmesini sağlayan aygıt. mouse (fare). İşaretleme aygıtı. Düğmelerine basarak nesneleri seçer. Fare bir nesneyi bir yerden bir yere de sürükleyebilir. multimedia (çoklu ortam). Ses, çizim ve video gibi değişik ortamlardaki verilerin birlikte kullanılması. Windows 95 multimedya özelliklerine sahip bir işletim sistemidir. multimaster replication (çok asıllı replikayon). Bürün domain kontroller bilgisayarların directory bilgisini güncelleyebildiği replikasyon. Windows 2000 Active Directory replikasyonu bu şekilde çok asıllı bir replikasyon işlemidir. Dikkat!!:Bu doküman faruk çubukçu tarafından hazırlanmıştır. Dokümanlar "beta" olarak hazırlanmıştır. Bir kitap olarak hazırlanıp yayınlamamıştır. Daha fazla bilgi için: Farukcubukcu.com, multi-tasking (çok-görevlilik). Bir çok uygulamanın (programın) aynı anda çalıştırılması. Windows NT öncelikli çok görevliliğe sahip bir işletim sistemidir. Bkz. pre-emptive multitasking. mutex. Mutual Exclusion Service. mutual exclusion service. Bir komut sürecinde sadece bir iş parçacığının (thread) çalışmasını sağlayan bir yazılım tasarım tekniği. named pipe. İşlemler arası iletişim mekanizması. name resolution (ad çözümleme). Sayısal IP adresi değerlerinin karşılığı olan domain adlarını bulmak ay da tam tersi. network (ağ). Birden çok bilgisayar ve çevre biriminin ortak kullanımını sağlayan işletim biçimi. network adapter (ağ kartı). Bilgisayarı kablo ile diğer bilgisayara fiziksel olarak bağlanmasını sağlar. network driver (ağ sürücüsü). Ağın içinde yer alan bir sabit disk ya da dizin. network printer (ağ yazıcısı). Ağ içine bütün kullanıcılar tarafından kullanılabilen ortak yazıcı. non-windows application (Windows dışı uygulamalar). Bellek yönetimi, sanal bellek vb. özelliklere sahip olmayan ancak Windows ortamında çalışan programlar. Normal Template (Normal Şablon). Normal Template (Normal Şablon), herhangi bir belge için genel amaçlı bir şablondur. Word'ü başlattığınızda ya da standart araç çubuğundan New (Yeni) düğmesine bastığınızda, Word Normal şablona dayalı yeni ve boş bir belge yaratır. Varsayılan belge biçimlendirmesini ya da içeriğini değiştirmek için bu şablonu değiştirebilirsiniz. object (nesne). Bir veri ya da masaüstünde herhangi bir şey için kullanılan genel terim. Bir Active Directory bileşeni. Kullanıcılar, gruplar vb. Nesne temelli ortamda bütün bileşenler birer nesne olarak yer alırlar. Programlanırlar ya da yönetilirler. Offline folder (çevrim dışı klasör). Çevrimiçi klasör kullanımı teknolojisi ise Windows 2000'in tanıtımlarında vurgulandığı gibi özellikle hareketli (tek başına ve şirket ağına bağlı olarak notebook bilgisayar kullanan kullanıcılar) kullanıcıların verilerini online ve offline durumdayken kullanmalarını sağlar. operator. Aritmetik ya da mantıksal işlemler yapmak için kullanılan özel simgeler (karakterler). open (açmak). Bir belgeyi ya da tabloyu yükleyerek pencereye getirmek. Bir pencereyi aktif duruma getirmek. page (sayfa). Bellekte belli bir kapasitedeki alan. Paragraph Mark (Paragraf İmi) ((). Paragrafı bitirmek için ENTER tuşuna bastığınızda Word'ün eklediği yazıcıdan basılamaz (¶) karakterdir. Paragraph Mark (Paragraf İmi), sizin paragrafa uyguladığınız biçimlendirmeyi de içerir. Standart araç çubuğundaki düğme ile ekranda görünmesi sağlanır. partition (bölüm). Sabit disk üzerinde ayrı bir bölüm. password (parola / şifre). Kullanıcı için programa giriş izni. path (yol). Sürücü ve dosya adlarına ulaşmada kullanılan terim. peer-to-peer (eşler arası). Bilgisayarlar arasında uygulama ve dosya paylaşımını sağlayan network şekli. peripheral unit (çevre birimi). Bir bilgisayar sisteminde ana bilgisayarın yanında yer alan yazıcı, modem, vb. yan birimler. permission (izin). Bir dizin, dosya ya da bir aygıtla ilgili olarak kullanıcılara verilen yetkiler. parameter (parametre). Bir query ya da stored procedure çalıştırıldığında kullanılan bir bilgi. Parametreler sayesinde aynı query ya da stored procedure, farklı değerlerle birlikte birçok kez kullanılabilir. physical name (fiziksel ad). Bir dosyanı yer aldığı yol (path). Plug-and-Play. Donanım birimlerinin otomatik olarak tanınması ve yazılımların kuruluşlarının otomatik olarak yapılmasını sağlayan donanım ve yazılım tasarım teknolojisi. port (çıkış). Bilgisayardan çıkış ve bir aygının takıldığı bağlantı yerleri. pre-emptive multitasking (öncelikli çok görevlilik). Kullanıcıya en iyi şekilde yanıt vermeyi amaçlayan ve buna göre işlemcinin kontrolünü programın aldığı işletim biçimi. primary domain controller (ana domain kontrol birimi). Primary Domain Controller. NT Server'ın bir domain'inde merkezi yönetim amaçlı kurulması. Ana domain kontrol birimi kullanıcı veritabanına sahiptir. Domain kullanıcılarının sisteme girişi ana kontrol birimi üzerinden kontrol edilir. primary partition (ana bölüm). Diskin işletim sistemi tarafından işaretlenen bölümü Bir diskte maksimum dört bölüm bulunur. Eğer ek bir bölüm varsa bu üç olur. process (program). Çalışmakta olan bir uygulama, program. program. Belli bir işlevi olan komut dizisi. primary key (ana anahtar). PK. Bir tablo içindeki bir satırı tek olarak (unique) tanımlayan kolon ya da kolonlar bileşimi. property (özellik). Bir nesnenin renk, yer vb. durumlarını açıklayan bilgileri. protected mode (korumalı kip). Intel 386 mikroişlemcinin bellek kontrolü yaparak adresleri, giriş/çıkış kapılarını, fonksiyon çağırmalarını yönettiği bir işletim biçimi. Bir uygulamanın korumalı kipte çalışması; uygulamanın sanal bellek alanlarından yararlanması anlamına gelir. protocol (protokol). İki (yazılım) biriminin birbiriyle iletişiminin tanımlanması. Ağ üzeride iki bilgisayarın kullandığı dil. publish (yayınlama). Verilerin replikasyon için hazırlanması. Windows 2000 Server ve Internet Information servisleri belgelerin Intranet ve Internet ortamında yayınlanması sağlar. Windows 2000 yayınlama için WebDAV (HTTP/1.1 için yeni bir ekleme), Microsoft FrontPage Server Extensions ve FTP teknolojilerine sahiptir. query (sorgu). Tablolardaki saklı verilerin üzerine kurulmuş sorgular. Sorgular tablolarda yer alan verilerden istenilen verilerin seçilmesini sağlarlar. recordset. Sorgu sonucunu içere nesne. redirector (gönderici). İstemci tarafından bir dosya istediğini kabul eden ve dosyayı ağ içinde istenilen yere gönderen yazılım. registry (sistem veritabanı). Sistem bilgilerinin yer aldığı ve Windows NT tarafından kullanılan, donanım ve yazılım birimleri hakkında bilgi içeren veri tabanı. real mode (gerçek kip). Uygulamaların bellekte tek başına (global) olarak çalışması biçimi. Bkz. Protected-mode. relational database (ilişkisel veritabanı). Tabloların aralarındaki ilişkiler temelinde kullanıldığı bir veritabanı sistemi. relationship (ilişki). İki tablonun ortak kolonları arasındaki bağlantı. remote proceduer call (uzak işlem çağrısı) . Dağıtılmış uygulamaların network ortamındaki bilgisayarlarda çalışmasını sağlayan mesaj-geçirme sistemi. Replication (replikasyon). Verilerin çok sayıda bilgisayar arasında senkronize edilmesi. Windows 2000 replikasyon işleminde Active Directory veritabanı domain kontroller arasında kopyalanır. Dikkat!!:Bu doküman faruk çubukçu tarafından hazırlanmıştır. Dokümanlar "beta" olarak hazırlanmıştır. Bir kitap olarak hazırlanıp yayınlamamıştır. Daha fazla bilgi için: Farukcubukcu.com, Repository. Microsoft Repository. Automation nesnelerine erişim sağlayan sistemi. Microsoft Repository, TDS paketlerinin saklanması için ilişkisel database bileşenleri içerir. resource (kaynak). Ağ üzerinden yararlanılabilen bir nesne. resource arbitrator (kaynak tanımlayıcı). Plug-and-Play teknolojisinde donanım birimlerinin gereksim duydukları kaynakları yöneten birim. result set (sonuç seti). Bir SELECT deyim ile elde edilen bilgiler. rule (kural). Sütuna ne tür veri girişi yapılacağını belirten tanımlamalar. Alfabetik veri girişi ya da sıfırdan büyük veri girişi gibi. revoke (izini almak). Verilmiş bir izini almak. row (satır). Bir tabloda yer alan ve bir birim (kayıt) olarak işlenen veriler. rule (kural). Bir kolona ya da kullanıcı-tanımlı data tipine bağlı olarak kullanılan ve veri girişini kontrol eden tanımlamalar. screen saver (ekran koruyucusu). Belli bir süre klavyeye ya da fareye dokunulmadığı zaman aktif hale geçerek ekranda bir resmin ya da şeklin hareket ettirilmesi. script. Windows 2000 ortamında kod yazma. Windows 2000, Windows Script Host ile Visual Basic Scripting Edition (VBScript) ya da Jscript ile yazılan scriptleri destekler. Script çalıştırıldığında önce kendisini script engine'e kaydeder. VBScript, Visual Basic gibi bir programlama dilir. Visual Basic® Scripting Edition (VBScript) olarak bilinir. Windows Script Host üzerinde çalışır ve yönetim işlemleri için kullanılır. Notepad gibi ortamlarda yazılan scriptler .vbs uzantılı olur ve üzerine çift tıklanarak çalıştırılır. scroll (kaydırma). Pencereye sığmayan belgenin aşağı/yukarı ve sağa/sola kaydırılarak tamamının görüntülenmesi. scroll bar (kaydırma çubuğu). Pencerelerin sağında ve altında bulunan ve üzerindeki oklar yardımıyla pencere alanından büyük olan belgelerin görüntülenmesini sağlayan araçlar. schema (şema). Nesne kümesi. Windows 2000'de Active Directory şeması nesne class bilgilerini içerir. Active Directory şema bilgileri dinamik olarak güncellenir. Section (Bölüm). İçinde belirli sayfa biçimlendirmelerini ayarlayabileceğiniz, belge parçasıdır. Satır numaralandırma, sütun sayısı, üstbilgi ve altbilgi gibi özellikleri, belli bir metin alanı için değiştirmek istediğinizde, yeni bir Section (Bölüm) yaratmanız gerekir. Siz Section (Bölüm) sonları belirlemediğiniz sürece, Word, belgeyi tek bir Section (Bölüm) olarak oluşturur. security log (güvenlik defteri). Kullanıcıların Audit düzenlemeleri temelinde güvenlik ile ilgili işlemlerin takip edildiği kayıtlar. server (hizmet birimi). Ağın yöneten ve ağ kaynaklarını diğer bilgisayarlara (client) sunan ana bilgisayar. server manager. Domain, workgroup ve bilgisayarların kontrolünü sağlayan program. service (servis). Dosya ve aygıt paylaşımları için gerekli hizmetleri yükleyen yazılımlar. Özel fonksiyonları olan API'ler. share (paylaşım). Kaynakların (dizin, yazıcı, vb) network'ün kullanımına açılması. shortcut (kısayol). Bir nesneye ulaşmanın alternatif (kısa) yolu. shortcut key (kısayol tuşu). Bir komut ya da işlemin yerine getirilmesini sağlayan tuşlar. site (site). Active Directory serverlarının yer aldığı bir ağ ortamı. Active Directory tasarımında bir site aralarında hızlı bir bağlantı olan bir TCP/IP subneti anlamına gelir. site link. Siteler arasındaki iletişimi temsil eden nesne. software (yazılım). Program, işletim sistemi gibi bilgisayarların çalışmasını sağlayan ve kullanıcıların belli sorunlarını çözen elemanlar. Source Document (Kaynak Dosya). Bir nesnenin geldiği ya da bir uygulamanın nesneyi yaratmak için kullandığı dosyadır. Bir kaynak dosyadaki bilgileri değiştirdiğinizde, nesnenin bağlı olduğu dosyada bilgiler de otomatik olarak güncellenir. status bar (durum çubuğu). Genellikle pencerelerin en alt satırında bulunan ve o anki duruma ilişkin bilgileri içeren alan. stored procedure. Transact-SQL dilinde ve SQL Server'da komut satırlarından kullanılmak üzere hazırlanmış deyimler. subdirectory (altdizin). Bir dizinin içinde yer alan dizin. subnet (alt network). Birbiriyle doğrudan iletişim kurabilen bilgisayarlardan oluşan bir yerel bilgisayar ağı. synchronize (zaman uyumlaştırma). Domain veritabanının diğer domain kontrol birimlerine çoğaltılması. system partition (sistem bölümü). NT'nin yüklenmesi için donanıma özel dosyaları içeren disk bölümü. taskbar (görev çubuğu). Açılmış (aktifleştirilmiş) uygulamaları gösteren alan. text file (metin dosya). Sayıları ve karakter bilgileri içeren bir ASCII dosya. thread (iş parçacığı). Bir programın işletilebilir bir parçası. tile (döşeme). Pencerelerin her birinin ekranda yer alacak biçimde yan yana dizilmesi. title bar (başlık çubuğu). Pencerelerin en üstünde ve pencere uygulamasının adını yazılı olduğu satır. transaction (işlem bilgisi). Bir grup olarak bir işlemi yerine getiren database işlemleri. transaction log. Değişikliklerin kayıtlarının yapıldığı database dosyası. Transaction log dosyası otomatik kurtarma işlemi için kullanılır. tree (ağaç). Hiyerarşik gösterim biçimi. Sabit diskte yer alan dizinlerin hiyeyarşik biçime (iç içe) gösterilmesi. trigger (tetikleyici). Bir tabloya belli bir değer girildiğinde işletilecek deyimlerini kapsar. Örneğin bir fatura kaydının girilmesi sonucunda stok ve cari hesap güncellemelerinin yapılaması gibi. Unicode. Harfler, rakamlar ve simgelerden oluşan ve 65000 olası değer alabilen karakter seti. user account (kullanıcı kaydı). Kullanıcı hakkında bütün bilgileri içeren kayıt. Kullanıcının adı, parolası vb bilgileri içerir. user profile (kullanıcı profil dosyası). Kullanıcı temelli ortam bilgilerini içeren dosya. view (görünüm). Bir ya da daha çok tablodan gelen verilerin görünümü. virtual address space (sanal adres alanı). Belli bir iş parçacığına (thread) atanan toplam bellek alanını gösteren adres toplamı. virtual machine (sanal makina). İşletim sistemi tarafından yaratılan bir ortamdır. Sanal makine, bilgisayarın tüm işlevlerini (bellek, işlemci) benzetir. virtual machine manager (sanal makine yöneticisi). İşletim sistemi kaynaklarının atanmasını ve yönetilmesini yöneten sistem. virtual memory (sanal bellek). Ana bellek alanının yanı sıra sabit disk alanın belli bir kısmının ana bellek alanı gibi kullanılması. wall paper (duvar kağıdı). Masaüstünde artalanın deseni. web browser (web tarayıcı). Web server üzerindeki web sayfalarını tarayan (arayan ve bulan) program. Örneğin Internet Explorer. window (pencere). Bir uygulamanın yer aldığı sınırlı alan. Windows'ta her uygulama bir pencere ile yer alır. volume. Bir ya da daha çok disk bölümünden (partition) oluşan bir birim disk alanı. word processing (sözcük işlem). Metin yazma, düzenleme ve kağıda baskı işlemlerini yapan programlara verilen ad. workgroup. Aralarında bağlantı bulunan ve kaynak paylaşımının mümkün olduğu bir grup bilgisayar. zone (alan) . DNS veritabanında DNS ağacının bitişik olan bir kısmıdır. Zon kendi içinde yer alan kaynakların kayıtlarını (resource records) tutar. Dikkat!!:Bu doküman faruk çubukçu tarafından hazırlanmıştır. Dokümanlar "beta" olarak hazırlanmıştır. Bir kitap olarak hazırlanıp yayınlamamıştır. Daha fazla bilgi için: Farukcubukcu.com, zone transfer (zon transferi). DNS serverların verilerini uyumlaştırma işlemi. Kısa Adlar ADO ActiveX Data Objecs. Microsoft'un bütün verilere erişimde geliştirmiş olduğu bir üst düzey arabirimdir. ADO verilere hızlı biçimde erişim sağlar. Uç database uygulamaları (front-end) ve client/server database uygulamaları geliştirmek için kullanılır. AEP . Asynchronous Event Package (Zaman uyumsuz olay paketi). Bir olayın oluşumunu bir alt düzeye bildiren ve dosyalama sisteminde kullanılan bir veri yapısı. ANSI (American National Standards Institute). Bilgisayar dünyasında standartlarını belirleyen örgüt. ANSI. American National Standards Instute. ANSI karakter seti; 8-bitlik bir karakter seti sağlar. 0-255 arasında toplam 256 karakteri temsil eder. İlk 128 karakter alfabetik karakterleri, ikinci 128 karakter ise özel karakterleri temsil eder. API. Application Programming Interface (Uygulama Programı Arabirimi). İşletim sistemi tarafından uygulama programına sunulan fonksiyonlar kütüphanesi. ASCII. American Standard Cod for Information Interchange. metin (text) karakterlerin temsili için geliştirilmiş bir kodlama yöntemi. 256 tane tanımlı karakterden oluşan dosya tipi. BIND. Berkeley Internet Name Domain. UNIX işletim sistemlerideki Domain Name System (DNS) standardı. BIOS. Basic Input and Output System. Bir sistemin en alt düzey düzenlemelerin (saat, görüntü, sabit disk vb.) yapan program. BDC. Backup Domain Controller. NT Server'ın ana domain kontrol biriminin yedeği olarak kurulduğu bilgisayar. Domain ana kontrol biriminde yer alan kullanıcı veritabanını yedeğini zaman uyumlu olarak taşır. Kullanıcılar BDC'ye logon olabilirler. CDFS. CD-ROM dosyalama sistemi. COM. Component Object Model. Kod birimlerinin birbirini çağırması ile ilgili Windows'un bileşenler teknolojisi. DBCC. Database Consistency Checker. Bir database'in mantıksal ve fiziksel tutarlılığını kontrol etmek için kullanılan bir deyim. DBMS. Database Management System. Verilerin saklandığı, üzerinde işlemlerin yapıldığı bir dosya saklama sistemi. DCL. Data Control Language. Database nesneleri üzerindeki izinleri düzenlemeyi sağlayan SQL deyimleri. DDE. Dynamic Data Exchange (Dinamik Veri Alışverişi). İki uygulama (program) arasında veri alışverişi. Örneğin: ACCESS'in bir EXCEL tablosunu doğrudan kendi içine alabilmesi. DDL. Data Definition Language. Bir database yapısını modellemek için kullanılan SQL deyimleri. DDL ile uzak database'ler yaratılır, değiştirilir ve silinebilirler. Dfs. Distributed File System. Windows 2000'de şirket içinde paylaşılan dizinlerin merkezi olarak yönetilmesini sağlayan yeni bir disk yönetim aracı. DLL. Dynamic Link Library. Çalışma zamanında kullanılan fonksiyon kütüphanesi. DML. Data Manipulation Language. Bir veritanına erişim ve işlem yapmak için kullanılan dil. DNS. Domain Name System. Domain adlarının karşılığın IP adresini bulmayı sağlayan bir servis. Örneğin sirket.com domain adına karşılık 151.122.12.1 IP adresinin çözülmesini sağlar. DOS. Disk Operating System (Disk İşletim Sistemi). Kişisel bilgisayarların işletim sistemini ifade eder. Genellikle MS-DOS ya da diğer firmaların kişisel bilgisayar işletim sistemleri için kullanılır. DSN. Data Source Name. Bir ODBC veritabanının adı. EGA. Enhanced Graphics Adapter. Görüntü kartı teknolojisi. (Windows 95 'te desteklenmiyor). EISA. Extended Industry Standard Architecture. 32-bit veri yolunu ve otomatik tanımayı destekleyen bir veri yolu tasarımı. FAT. File Allocation Table. MS-DOS dosyalama sistemi. GDI. Graphical Device Interface. Windows'un çizim, renk gibi grafik fonksiyonlarını düzenleyen ve DLL'lerden oluşan özel program kütüphanesi. GUI. Graphical User Interface. Kullanıcı ile işletim sistemi arasındaki arabirim. GUID. Globally unique identifier . Tek olarak üretilen 16-bayt bir değer. Zamanı ve bir sıra numarasını içerir ve belli bir aygıtı ya da nesneyi tanımlamak için kullanılır. HAL. Hardware Abstraction Layer. NT işletim sistemini (çekirdeğini) diğer sürücülerden korumak için geliştirilmiş bir katman yazılım. HTML (Hyper Text Markup Language). ise bir işaretleme dilidir. Web dokümanları HTML dili ile yazılırlar. HTTP (HyperText Transport Protocol). HTML dokümanlarının taşınmasını ve gösterimini sağlayan protokol. IFS. Installable File System. Windows 95 ve Windows NT tarafından desteklenen dosyalama sistemi. Windows 95 , yüklenebilir dosyalama sisteminin dinamik olarak kullanılmasını sağlar. IPX/SPX. Novell firmasının ağ protokolü. IRQ. Interrupt Request Level. İşlemcinin donanım birimlerine ayırdığı servis numaraları (1-15). ISA. Industry Standard Architecture. IBM PC AT uyumlu bilgisayarların ortak mimarisi. ISO. International Standards Organizations. Veri iletişimi standartlarını belirleyen örgüt. ISP. (Internet Service Provider). Internet Servis Sağlayıcı kuruluş. Çok sayıda yerel kullanıcıya Internet hizmeti veren özel kuruluşlar. LAN. Local Area Network. Sınırlı sayıda bilgisayardan oluşan yerel bilgisayar ağı. LRU. Least Recently Used Technique. Kullanılan bilgilerin en eskisinin bellekte tutulması ile ilgili bir bellek yönetim tekniği. MAC. Media Access Control. Network kartının Ethernet adresi. MAPI. Messaging API. (Bkz. API). Uygulamaların mesaj-ilişkili olarak iletişim kurmalarını sağlayan kütüphane. MDI. Multiple Document Interface (Çok Dokümanlı Arabirim). Bir uygulamanın çok sayıda dokümanla birlikte çalışabilmesi tekniği. MIDI. Musical Instrumental Digital Interface (Müzikal Enstrümantel Sayısal Arabirim). Müzik aletleri ile bilgisayar arasında iletişimde kullanılan standart yöntem. Mutex. Mutual Exclusion Service. Bir komut sürecinde sadece bir işlemin (thread) çalışmasını sağlayan bir yazılım tasarım tekniği. NDIS. Network Driver Interface Specification. Ağdaki iletişimi sağlayan yazılımın özellikleri. NETBEUI. NetBIOS Extended User Interface. Microsoft ağlarında kullanılan bir protokol. NTFS. New Technology File System. NT işletim sisteminde kullanıcı ve dosya bazında güvenlik tanımlamalarının yapıldığı dosya sistemi. ODBC. Open Data Base Connectivity (Açık Veri Tabanı Bağlanabilirliği). Bir veri tabanı ile onu kullanan programlar arasında kalan standart bir katmandır. Bu standart sayesinde programlar diğer veri tabanlarıyla ilişki kurabilirler. OLAP. Online Analytical Processing. Karar destek sistemlerini tasarlamak için kullanılan bir database yönetim sistemi. OLE. Object Linking and Embedding (Nesne Bağlama ve Gömme). Bir programdan diğerine ses, grafik ya da metin parçası olan bir nesnenin aktarımı. Nesnenin taşınması iki yöntemle olur. Nesne bağlanırsa, o nesne kaynağı ile her zaman bağlantılı olur. Nesne gömülürse asıl kaynağı olan bağlantısı kopar. Nesne tümüyle yeni uygulamanın malı olur. OLE DB. Verilere erişim sağlayan bir COM ortamı. OLE DB Provider ile oluşturulan OLE DB arabirimi aracılığıyla client uygulamalar server üzerindeki verilere erişirler. OLTP. Online Transaction Processing. Uçlarda aynı anca çok sayıda işlemin (transaction) yapıldığı veritabanı uygulamaları. Özellikle ticari alanlarda kullanılır. PCI. Peripheral Component Interconnect. 32-bit ve 64-bit olarak kullanılabilen ve özellikle görüntü birimleri için tasarlanmış veri yolu. PCMCIA. Personal Computer Memory Card International Association. Özellikle eklenen kartlar için kullanılan özel bir veri yolu. PDC. Primary Domain Controller. NT Server'ın bir domain'inde merkezi yönetim amaçlı kurulması. Ana domain kontrol birimi kullanıcı veritabanına sahiptir. Domain kullanıcılarının sisteme girişi ana kontrol birimi üzerinden kontrol edilir. PIF. Program Information File (Program Bilgi Dosyası). Windows dışı bir uygulamanın, Windows'ta çalışmasını denetleyen özel bir dosya. PPP. Point-to-Point Protocol. RAS iletişimde kullanılan bir protokoldür. TCP/IP, IPX, NetBEUI, AppleTalk gibi çok sayıda protokolü destekler. PPTP. Point-to-Point Protocol. Internet üzerinden RAS server'a erişimi sağlayan protokoldür. RAM. Random Access Memory (Rastgele Erişimli Bellek). Bilgi ve programların geçici olarak saklandığı ve işlediği bilgisayarın ana belleği. RAS. Remote Network Access. Telefonla iletişimi sağlayan fonksiyonlar. RDBMS. Relational Database Management System. İlişkisel olarak kurulmuş bir veritabanı yönetim sistemi. RNA. Remote Network Access. Uzak kaynaklara ağ üzerinden erişim. RPC. Remote Procedure Call. Bir fonksiyon aracılığı ile ağ üzerindeki programın çalıştırılması tekniği. SAM. Security Accounts Manager. Kullanıcıcı veritabanını ve uygulama programı arabirimi sağlayan bir alt sistem. SCSI. Small Computer System Interface. Endüstri standardı bir veri yolu teknolojisi. SLIP. Serial Line Internet Protocol. Seri hatlar üzerinde TCP/IP ile kullanılan bir protokoldür. Internet'e bağlanmak için kullanılır. SMP. Symmetric Multiprocessing. İşletim sistemi kodunun boş bir işlemci üzerinde çalışmasına izin veren işletim biçimi. SQL. Structured Query Language (Yapısal Sorgu Dili). Veri tabanlarını sorgulamak için geliştirilmiş standart bir dil. TAPI. Telephony API. Telefonla iletişim için program kütüphanesi. TCP/IP. Transmission Control Protocol/Internet Protocol. Büyük ağlarda kullanılan bir protokol. Windows 95 ve Windows NT tarafından kullanılır. UNC. Universal Naming Convention). \\ ile başlayarak dosyaların belirtmek için kullanılan tam yol. UPS. Bilgisayara kesintisiz güç sağlayan bir donanım. URL. Uniform Resource Locator. Internet adresileri. Örneğin;http://www.microsoft.com./home.htm. TCP/IP (Transmission Control Protocol/Internet Protocol). İletişim protokolü. Özellikle farklı tipteki bilgisayar arasında iletişim kurmayı sağlar. VBA. Visual Basic Applications. Microsoft Access ve diğer uygulamalar tarafından kullanılan Visual Basic programlama dilini gösterir. VESA. Video Electronics Standard Association. Bir tür yerel yol (Local bus) mimarisi. VGA. Video Graphics Array. Yaygın kullanılan görüntü sistemi. 640X480 çözüünürlüğe ve 16 renge sahiptir. SVGA (Süper VGA) ise 1024X768 çözünürlüğe sahiptir. Grafik kartının belleğine göre 16 milyona kadar görüntü sağlar. Windows 95 için varsayılan görüntü tipi. VM. Virtual Machine. İşletim sistemi tarafından yaratılan bir ortamdır. Sanal makina, bilgisayarın tüm işlevlerini (bellek, işlemci) benzetir. Bütün Windows 95 uygulamaları bir sanal makina olarak çalıştırılırlar. VxD. Herhangi bir sanal sürücü. 32-bir korumalı kipte çalışan (protected mode) sürücüler. WAN. Wide Area Network. Geniş alanlarda kurulu network. Bir ya da çok alt networklerden oluşan büyük bilgisayar ağı. WSH. Herhangi bir programlama dilinden bağımsız 32-bit bir Windows platformudur. Microsoft WHS içinde hem Visual Basic® Scripting Edition (VBScript) hem de JScript® için scripting ile programlama desteği verir. WOSA. Windows Open Systems Architecture (Windows Açık Sistemler Mimarisi). Windows'un açık sistemler özelliği için geliştirilen standartlar. WYSIWYG. What You See Is What You Get. Ekranda ne görülürse yazıcıdan aynen çıkacaktır. Windows bu olanağı destekler. Dikkat!!:Bu doküman Mehmet karaca tarafından hazırlanmıştır. Dokümanlar "beta" olarak hazırlanmıştır. Bir kitap olarak hazırlanıp yayınlamamıştır. Daha fazla bilgi için: karacamehmet2@hotmail.com |
GÜZEL KOD ARŞİVİ YAPALIM HEP BİRLİKTE İLK AÇILIŞ BENDEN AMA HER DİLDEN KOD EKLEYEBİLİRİZ EKLEDİĞİMİZ KODLARIN HANGİ DİLE AİT OLDUĞUNU YADA HANGİ PROGRAMDA KULLANILDIĞINI YAZALIM LÜTFEN Delphi 6 ile haırlanmış Analog Saat Örnegidir. Tray için geliştirildi. Form Üzerine 1 Adet Timer Bileşeni 1 Adet Shape Bileşeni (Şeklini Circle Seçin) 5 Adet Label Bileşeni (12,3,6 ve 9 yerine koyun) Bir Adet popu menü bileşeni unit Saat; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, Menus, shellapi; type TForm1 = class(TForm) Timer1: TTimer; Shape1: TShape; Image1: TImage; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; PopupMenu1: TPopupMenu; Kapat1: TMenuItem; Label5: TLabel; raydaBekle1: TMenuItem; procedure Timer1Timer(Sender: TObject); procedure FormCreate(Sender: TObject); procedure Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure Image1DblClick(Sender: TObject); procedure Kapat1Click(Sender: TObject); procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure raydaBekle1Click(Sender: TObject); procedure Image1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; stray:NOTIFYICONDATA; implementation {$R *.dfm} function modulal(x:Integer):Integer; begin while x < 0 do begin x := x + 360; end; Result := x; end; function kactane(x:Integer; y: Integer):Integer; var times: Integer; begin times := 0; while x >= y do begin x := x - y; times := times + 1; end; Result := times; end; procedure TForm1.Timer1Timer(Sender: TObject); var sn: Integer; dk: Integer; st: Integer; x: String; y: String; z: String; dg: Extended; dg2: Extended; dg3: Extended; linex: Integer; liney: Integer; linex2: Integer; liney2: Integer; linex3: Integer; liney3: Integer; begin x := TimeToStr(Time); y := TimeToStr(Time); z := TimeToStr(Time); Delete(x, 1,6); Delete(y, 1, 3); Delete(y, 3, 3); Delete(z, 3,6); sn := StrToInt(x); dk := StrToInt(y); st := StrToInt(z); dg := ((modulal((90 - (sn * 6))) * pi ) / 180); dg2 := ((modulal((90 - (dk * 6))) * pi ) / 180); dg3 := ((modulal((90 - (st * 30) - (kactane(dk, 6)*3) )) * pi ) / 180); linex := 110 + Round(90 * cos(dg)); liney := 110 - Round(90 * sin(dg)); linex2 := 110 + Round(90 * cos(dg2)); liney2 := 110 - Round(90 * sin(dg2)); linex3 := 110 + Round(55 * cos(dg3)); liney3 := 110 - Round(55 * sin(dg3)); Form1.Refresh; with Form1.Canvas do begin Pen.Width := 1; MoveTo(110,110); Pen.Color := clRed; LineTo(linex, liney); MoveTo(110,110); Pen.Width := 2; Pen.Color := clblue; LineTo(linex2, liney2); MoveTo(110,110); Pen.Width := 3; LineTo(linex3, liney3); end; end; procedure TForm1.FormCreate(Sender: TObject); begin SetWindowLong(Application.Handle, GWL_EXSTYLE, WS_EX_TOOLWINDOW); with stray do begin cbsize:=sizeof(stray); wnd:=form1.handle; hicon:=Application.icon.Handle; uID:=0; sztip:=Program Tray Üzerinde; uflags:=7; uCallBackMessage:=$200;//icon üzerine tıklama kontrolu için end; Shell_NotifyIcon(0,@stray); Brush.Style:=bsClear; end; procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if Button = mbLeft then begin ReleaseCapture; SendMessage(Handle,WM_SYSCOMMAND,SC_MOVE+1,0); end; end; procedure TForm1.Image1DblClick(Sender: TObject); begin close; end; procedure TForm1.Kapat1Click(Sender: TObject); begin close; end; procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); var nokta:TPoint; begin getCursorPos(nokta); if (x=$205) then PopupMenu1.Popup(nokta.x,nokta.y); end; procedure TForm1.raydaBekle1Click(Sender: TObject); begin if form1.Visible=false then form1.Visible:=true else form1.Visible:=false; end; end. aslında bu saat güzel istediğiniz başka bi program varsa sadece delphi değil yardım etmek isterim |
Yapay Zekanın Tanımı:
Bilgisayar,metamatik,mühendislik,biyoloji,dilbilim ve psikoloji bilimlerinin ortak etkileşiminden oluşan yani bir bilim dalının yaratmayı tasarladığı yapay beyine, yapay zeka adı verilmektedir.
Yapay zekayı oluşturan bileşenleri ortak bir şemada toplayabiliriz:
Yönetim bilimleri, yapay zeka alanındaki gelişmelerden hızla etkilenmektedir. Bu etkileşimin bir sonucu olarak, doğal dil arabirimleri, endüstriyel robotlar, uzman sistemler ve zeki yazılımlar gibi uygulamalar ortaya çıkmıştır. Her seviyeden yöneticiler ve çalışanlar, direk veya dolaylı da olsa son kullanıcı olarak bu gelişmelerden haberdar olmak durumundadır. Çünkü bir çok işyeri ve organizasyonda, gittikçe artan bir oranda yapay zeka teknikleri kullanılmakta ve bu yolla verimlilik artışı sağlanmaya çalışılmaktadır.
Şekilde yapay zekanın yönetim bilimlerindeki farklı uygulama alanları gösterilmektedir. Şimdi kısaca bazı yapay zeka teknikleri ve uygulama alanlarından bahsedilecektir.
Bilgisayar Bilimleri:
Uygulamaların bu alanı bilgisayar yazılım ve donanımı üzerine odaklanmıştır. Çünkü yapay zeka uygulamalarının çoğu için, çok güçlü süper bilgisayarların üretilmesine gereksinim duyulmaktadır. Bunun ilk aşamasını beşinci nesil olarak anılan zeki bilgisayarlar oluşturmaktadır. Bu bilgisayarlar optimum seviyede mantıksal anlam çıkarma işlemi için tasarlanmaktadırlar. Bu anlam çıkarma, geleneksel bilgisayarlardaki nümerik işlem yerine sembolik işlemin kullanılması anlamına gelmektedir. Diğer çalışma ise, sinirsel ağların geliştirilmesi için yapılmaktadır. Neurocomputer sistemleri, insan beynindeki nöronların ağ yapılarına göre şekillendirilmiş bir yapıdadır Bu bilgisayarlar bilginin bir çok farklı kısmını aynı anda işleyebilirler. Sinirsel ağ yazılımlarının, basit problem ve çözümleri gösterilerek öğrenmesi sağlanabilmektedir. Örneğin resimleri tanıyabilmekte ve problemleri çözmek için program yapabilmektedirler.
Robotik :
Yapay zeka, mühendislik ve psikoloji robotiğin temel disiplinleridir. Robotik teknolojisi, insan gibi fiziksel kapasitelere sahip, bilgisayar kontrollü robot üretiminin gerçekleştirilmesi için geliştirilmiştir ve yapay zeka alanındaki gelişmelere paralel olarak ilerlemektedir. Bu alandaki uygulamalar robotlara, görme yeteneği veya görsel algılama, dokunsal algılama, idare etmede beceri ve hüner, hareket kabiliyeti ve yol bulabilme zekası kazandırmaktadır. Bazı uygulama örnekleri aşağıda verilmiştir.
Stuttgart Üniversitesinde bir çalışma grubu Aramis (adını monte edilmiş olan kolundan alıyor), Porthos (yük taşıyıcısı) ve Athos (bir stereo kameraya sahip ve gurubun gözcüsü) isimli üç robot üretmiştir. Bu robotlar küçük sorunlarını tekbaşlarına çözebilmektedir. Fakat bu robotlarda diğerlerinde olmayan bir özellik vardır, kooperasyon yeteneği. Şöyleki; kimin hangi görevi hangi sırayla yapacağını aralarında kararlaştırıyorlar. Aslında makineler bit ve byte’lar düzleminde anlaşmalarına rağmen, çalışma esnasında kadın ve erkek sesleriyle gerçekleşen sözlü diyaloglar ortaya çıkmaktadır.
Bir başka örnek ise MIT’den Rodney Brooks’un tasarladığı ATTİLA isimli böcek robot. 30 cm. boyutundaki bu robot üzerinde 23 motor, 10 mikro işlemci ve 150 adet algılayıcı bulunuyor. Her bacağın üç bağımsız hareketi sayesinde engellerin üstüne tırmanıyor, dik inişler yapıyor ve tutunarak kendisini 25 cm. yüksekliğe çekebiliyor. Brooks’un yapay zeka anlayışında izleme, avlanma, ileri gitme ve gerileme gibi bir takım ilkel içgüdü ve refleksler yer alıyor. Öte yandan onun robotlarında bunları seçen ve bu basit hareketleri yönlendiren bir beyin modeli yer almıyor. Bunun yerine, her davranış, robotun kontrolünde yarışan bireysel zekalar olarak işliyor. Kazananı, robotun alıcılarının o anda ne hissettiği belirliyor ve bu noktada diğer tüm davranışlar geçici olarak bastırılıyor. Kurulan mantıkta, “gerile” gibi tehlikeden sakınma davranışları, “avı izle” gibi daha üst seviyedeki fonksiyonları bastırıyor. Davranış hiyerarşisindeki her seviyenin gerçekleşmesi için bir alttakinin aşılması gerekiyor. Böylece bir böcek robot, örneğin “odadaki en uzak köşeyi belirle ve oraya git” gibi yüksek düzeyde bir komutu, bir yerlere çarpıp başına kaza gelme korkusu olmadan yerine getirebiliyor.
Robotlar gelecekte yalnızca basit ve monoton görevlerle sınırlanmayıp, insanlara karmaşık ve tehlikeli görevlerde de yardımcı olacakları için, akıllı ve daha esnek kullanımlı bir kavrama sisteminin geliştirilmesine yönelik olarak , DLR (Alman Hava ve Uzay Uçuşları Araştırma Kurumu) tarafından insan elini örnek alan üç parmaklı ve çok sensörlü bir robot el geliştirilmiştir.
Doğal Arabirimler :
Doğal arabirimlerin gelişimi yapay zekanın önemli bir alanını göz önüne alır. Doğal arabirimlerin gelişimi, insan tarafından bilgisayarların daha doğal kullanımına yönelik bir kolaylık sağlar. Bu alanda yapay zeka araştırmacılarının en büyük amacı, insan konuşma dilinde bilgisayar ve robotların konuşmaya başlaması ve bizim onları anladığımız gibi onların da bizi anlayabilmesidir. Uygulamalar dil bilim, psikoloji, bilgisayar bilimleri gibi disiplinleri içine alan bir kollektif çalışma alanı içinde yapılmaktadır. Bazı uygulama alanları olarak insan dilini anlama, konuşmayı tanıma, beden hareketlerinin şekillerini kullanan çok algılayıcılı cihazların geliştirilmesi gösterilebilir.
Bilgisayar ile ilişki kurmak için bir anadilin kullanılması aslında yapay zekanın en kuvvetli yanlarından birini temsil eder. Yazılı anadilin işlenmesi uygulamaları ise çok sayıda bulunmaktadır. Bu konudaki başlıca uygulamalar şunlardır:
• Bilgisayar yardımıyla tercüme,
• Metin özetlerinin otomatik olarak hazırlanması,
• Metinlerin otomatik olarak üretilmesi (anlamlı bir sözdizimsel form olarak),
• Dökümanların hazırlanmasına yardım (hataların ve tutarsızlıkların bulunması ve gerektiğinde düzeltilmesi, örnek: MSWord programı).
İnsan sesini algılayan bir uygulama örneği olarak da, NaturallySpeaking isimli bir program seti verilebilir. Program erkek/bayan ayrımı yapmamak için ses girişlerini nötr sinyallere çevirir. Bir batch işlemi, konuşmaları konuşmacıdan bağımsız olarak kendi iç modeliyle karşılaştırarak, süreklilik ve vurgulama gibi ince ayarları yapar. Farklı kullanıcıların telaffuz farklılıklarındaki tutarlılık bu sayede sağlanır. Program ayrıca zaman kaybetmemek için, söylenen bir kelimenin ardından gelebilecek kelimeleri tahmin eder ve tarama alanını daraltır. Mesela, sayın kelimesinden sonra, büyük bir ihtimalle isim gelecektir, tarama alanı buna göre isim alanına yönlendirilir. Bunun ötesinde tüm cümlenin anlamına bakılarak, kelimenin cümlede uygun yerde olup olmadığı da kontrol edilir. Programın elindeki bilgiler arttıkça eskisine göre farklı kararlar verdiği görülmektedir. Gündelik konuşmalarda rastlanan cümlelerde program mükemmel bir performans sergilemektedir. Bir günlük düzenli bir çalışma sonrasında doğruluk oranı %95’lere ulaşmaktadır.
Sinirsel Ağlar:
Sinirsel ağlar çeşitli yollarla birbirine bağlı birimlerden oluşmuş topluluklardır. Her birim iyice basitleştirilmiş bir nöronun niteliklerini taşır. Nöron ağları sinir sisteminin parçalarında olup biteni taklit etmekte, işe yarar ticari cihazlar yapmakta ve beynin işleyişine ilişkin genel kuramları sınamakta kullanılır. Sinirsel ağ içindeki birimler, herbirinin belli işlevi olan katmanlar şeklinde örgütlenmiştir ve bu yapıya yapay sinir ağı mimarisi denir.
Yapay sinir ağlarının temel yapısı, beyne, sıradan bir bilgisayarınkinden daha çok benzemektedir. Yine de birimleri gerçek nöronlar kadar karmaşık değil ve ağların çoğunun yapısı, beyin kabuğundaki bağlantılarla karşılaştırıldığında büyük ölçüde basit kalmaktadır. Şimdilik, sıradan bir bilgisayarda, akla uygun bir sürede taklit edilebilmesi için bir ağın son derece küçük olması gerekiyor. Gittikçe daha hızlı ve daha koşut çalışan bilgisayarlar piyasaya çıktıkça zamanla gelişmeler sağlanacaktır
Aşağıdaki şekilde, bir insanın sinir sistemindeki axon,dandirit ve nöron ilişkisi gibi tasarlanan yapay ağ mimarisi görülmektedir.
.
Yapay sinir ağlarındaki her bir işlem birimi, basit anahtar görevi yapar ve şiddetine göre, gelen sinyalleri söndürür ya da iletir. Böylece sistem içindeki her birim belli bir yüke sahip olmuş olur. Her birim sinyalin gücüne göre açık ya da kapalı duruma geçerek basit bir tetikleyici görev üstlenir. Yükler, sistem içinde bir bütün teşkil ederek, karakterler arasında ilgi kurmayı sağlar. Yapay sinir ağları araştırmalarının odağındaki soru, yüklerin, sinyalleri nasıl değiştirmesi gerektiğidir. Bu noktada herhangi bir formdaki bilgi girişinin, ne tür bir çıkışa çevrileceği, değişik modellerde farklılık göstermektedir. Diğer önemli bir farklılık ise, verilerin sistemde depolanma şeklidir. Nöral bir tasarımda, bilgisayarda saklı olan bilgiyi, tüm sisteme yayılmış küçük yük birimlerinin birleşerek oluşturduğu bir bütün evre temsil etmektedir. Ortama yeni bir bilgi aktarıldığında ise, yerel büyük bir değişiklik yerine tüm sistemde küçük bir değişiklik yapılmaktadır.
Günümüzde sinirsel ağ uygulamaları ya geleneksel bilgisayarlar üzerinde yazılım simülatörleri kullanılarak, veya özel donanım içeren bilgisayarlar kullanarak gerçekleştirilmektedir. Kredi risk değerlemesinden imza kontrolü, mevduat tahmini ve imalat kalite kontrolüne kadar uzanan uygulamalar yazılım paketlerinden faydalanılarak yapılmaktadır.
Bulanık Mantık :
Bulanık mantık (Fuzzy Logic) kavramı ilk kez 1965 yılında California Berkeley Üniversitesinden Prof. Lotfi A.Zadeh’in bu konu üzerinde ilk makallelerini yayınlamasıyla duyuldu. O tarihten sonra önemi gittikçe artarak günümüze kadar gelen bulanık mantık, belirsizliklerin anlatımı ve belirsizliklerle çalışılabilmesi için kurulmuş katı bir matematik düzen olarak tanımlanabilir. Bilindiği gibi istatistikte ve olasılık kuramında, belirsizliklerle değil kesinliklerle çalışılır ama insanın yaşadığı ortam daha çok belirsizliklerle doludur. Bu yüzden insanoğlunun sonuç çıkarabilme yeteneğini anlayabilmek için belirsizliklerle çalışmak gereklidir.
Fuzzy kuramının merkez kavramı fuzzy kümeleridir. Küme kavramı kulağa biraz matematiksel gelebilir ama anlaşılması kolaydır. Örneğin “orta yaş” kavramını inceleyerek olursak, bu kavramın sınırlarının kişiden kişiye değişiklik gösterdiğini görürüz. Kesin sınırlar söz konusu olmadığı için kavramı matematiksel olarak da kolayca formüle edemeyiz. Ama genel olarak 35 ile 55 yaşları orta yaşlılık sınırları olarak düşünülebilir. Bu kavramı grafik olarak ifade etmek istediğimizde karşımıza şekil deki gibi bir eğri çıkacaktır. Bu eğriye “aitlik eğrisi” adı verilir ve kavram içinde hangi değerin hangi ağırlıkta olduğunu gösterir.
Bir fuzzy kümesi kendi aitlik fonksiyonu ile açık olarak temsil edilebilir. Şekilde görüldüğü gibi aitlik fonksiyonu 0 ile 1 arasındaki her değeri alabilir. Böyle bir aitlik fonksiyonu ile “kesinlikle ait” veya “kesinlikle ait değil” arasında istenilen incelikte ayarlama yapmak mümkündür.
Bulanık mantıkta fuzzy kümeleri kadar önemli bir diğer kavramda linguistik değişken kavramıdır. Linguistik değişken “sıcak” veya “soğuk” gibi kelimeler ve ifadelerle tanımlanabilen değişkenlerdir. Bir linguistik değişkenin değerleri fuzzy kümeleri ile ifade edilir. Örneğin oda sıcaklığı linguistik değişken için “sıcak”, “soğuk” ve “çok sıcak” ifadelerini alabilir. Bu üç ifadenin her biri ayrı ayrı fuzzy kümeleri ile modellenir.
Bulanık mantığın uygulama alanları çok geniştir. Sağladığı en büyük fayda ise “insana özgü tecrübe ile öğrenme” olayının kolayca modellenebilmesi ve belirsiz kavramların bile matematiksel olarak ifade edilebilmesine olanak tanımasıdır. Bu nedenle lineer olmayan sistemlere yaklaşım yapabilmek için özellikle uygundur.
Bulanık mantık konusunda yapılan araştırmalar Japonya’da oldukça fazladır. Özellikle fuzzy process controller olarak isimlendirilen özel amaçlı bulanık mantık mikroişlemci çipi’nin üretilmesine çalışılmaktadır. Bu teknoloji fotoğraf makineleri, çamaşır makineleri, klimalar ve otomatik iletim hatları gibi uygulamalarda kullanılmaktadır. Bundan başka uzay araştırmaları ve havacılık endüstrisinde de kullanılmaktadır. TAI’de araştırma gelişme kısmında bulanık mantık konusunda çalışmalar yapılmaktadır. Yine bir başka uygulama olarak otomatik civatalamaların değerlendirilmesinde bulanık mantık kullanılmaktadır. Bulanık mantık yardımıyla civatalama kalitesi belirlenmekte, civatalama tekniği alanında bilgili olmayan kişiler açısından konu şeffaf hale getirilmektedir. Burada bir uzmanın değerlendirme sınırlarına erişilmekte ve hatta geçilmektedir.
Sanal Gerçeklik :
Sanal gerçeklik bilgisayar ortamında oluşturulan bir gerçekliktir ve cyberspace olarak da bilinir. Yapay zekanın bu alanında doğal gerçekliğe uygun, insan/bilgisayar arabirimlerinin kullanıldığı bir ortam oluşturulur. Sanal gerçeklik, gözlük ve stereo kulaklıktan oluşan başlık seti, vücut hareketlerini algılayan özel bir giysi veya eldivenden oluşan, çok algılayıcılı giriş-çıkış cihazlarına bağlı olarak oluşturulmaktadır. Böylelikle üç boyutlu sanal dünyayı görebilir ve dokunabilirsiniz. Sanal gerçeklik sizin bilgisayar benzetimli nesneler ve varlıklar ile etkileşim içine girebilmenize olanak sağlamaktadır.
Sanal gerçeklik uygulamaları geniş bir alana yayılmıştır. Bilgisayar destekli tasarımda (CAD), tıbbi teşhis ve tedavide, fiziksel ve biyoloji bilimlerindeki bilimsel deneyimlerde, pilot ve astronotların eğitimi için uçuş simülatörlerinde ve eğlence olarak üç boyutlu video oyunlarında kullanılmaktadır. CAD en geniş şekliyle endüstriyel sanal gerçeklik uygulamalarında kullanılmaktadır. Mimarlar ve tasarımcılar, ürünlerin ve yapıların üç boyutlu modelleri üzerinde test ve tasarım işlemleri yapmakta kullanırlar.
< Resime gitmek için tıklayın >