Wednesday, March 10, 2010

Püf Noktalar

Archive for the ‘Yazılım’ Category

Everest’ten bedava lisans kampanyası

Posted by ShadOfMoStar On Haziran - 13 - 2009

Sunduğu detaylı sistem bilgisi ve test programlarıyla önde gelen yazılımlardan birisi olan Everest ile ilgili düzenlenen promosyonla beraber geçici bir süre için yazılımın 4.6 sürüm numaralı Ultimate versiyonunun bedava lisans dağıtımına başlandı.

everest Everestten bedava lisans kampanyası

Her ne kadar son sürüm olmasa da, en azında legal bir biçimde yazılımı kullanmak isteyen okurlarımız var ise eğer, yapmaları gereken buraya tıklayarak karşılarına çıkan olan kutucuklara sırasıyla cinsiyetlerini, isimlerini, soyadlarını ve e-posta adreslerini yazmaktan ibaret. Bundan kısa bir süre sonra vermiş olduğunuz e-posta adresine gelen seri numarası ile yazılımı yasal biçimde ve tabii ki kısıtlamasız olarak kullabileceksiniz.

Popularity: 7% [?]

Programlama Dilleri Nelerdir ?

Posted by ShadOfMoStar On Mayıs - 11 - 2009

Programlama Dili Nedir?

Genel anlamda programlama kavramını anlatmak

Programlama dili; Bilgisayar bilimleri dâhilinde bir bilgisayarın programlanması için geliştirilen bir dildir. Bilgisayar aslında sadece donanımsal yapıdan oluşan bir elektronik cihazdır. Bilgisayarın içerisinde manyetik etki alanı tutabilen bazı donanımsal yapılar vardır ( sabit disk ). İlgili manyetik etki alanı tutabilen donanımsal yapılara, dış ortamdan manyetik alan atanabilir veya silinebilir. Bunlar tamamen elektriksel sinyaller ile gerçekleştirilir.

Manyetik etki alanlarını küçük elektrik sinyallerine dönüştüren ve bilgisayar için anlamlı bir yapıda sisteme gönderen bilgisayar içindeki çevre birimleri, manyetik alanlardan anlamlı bazı çatılar oluşturur. Bu işlemleri gerçekleştiren çeşitli donanımsal yapılar bilgisayar içerisinde mevcuttur. Aslında bilgisayarın ne yapması gerektiğini bu manyetik alanlar belirler. Her şey bu manyetik alanların nasıl doldurulduğu ile ilgilidir. İşte bu noktada ortaya yazılım dilleri çıkar.

Bilgisayarları nasıl bir manyetik alanla doldurursak, ilgili manyetik alan yığdığımız noktaya gelindiğinde yığını nasıl anlarsa o şekilde yürütecektir.

Kullanmış olduğumuz programlama dilinde yazmış olduğumuz komutun ilgili donanım kaynağında bir karşılığı bulunur. Aslında yazılım olarak yaptığımız tek şey donanım kaynaklarını kullanmaktır. Ancak yazılımcıların çoğu bunu fark etmez çünkü yazılım kendi içerisinde iki ana gruba ayrılır. Bunlardan birincisi İşletim Sistemleri ve ikincisi Uygulama Yazılımlarıdır. İşletim sistemler donanıma en temelden erişen yazılımlardır, Windows ve Linux gibi. En temelden donanım kaynaklarını kullanmak çok zordur. Bizim yapacağımız ve birçoğunun yaptığı şey kurulu bir platform üzerinde uygulamalar geliştirmektir, yani uygulama yazılımı geliştirmektir.

İşletim sistemleri donanım kaynaklarına uyumlu olmak zorundadır, nasıl ki uyumlu olmayan bir parça taktığınız zaman ilgili donanımı tanıması için bir sürücü yazılımı yüklemeniz gerekiyorsa, aynı şekilde işletim sisteminin de donanım kaynaklarına erişebilmesi ve yönetebilmesi gerekir. Bir işletim sisteminin kalitesi, donanım kaynaklarını ne kadar performanslı ve verimli yönetebildiğine bağlıdır.

Aynı şartlar altında bir uygulama yazılımı da işletim sistemine uyumlu olmak zorundadır. Eğer işletim sistemine uyumlu olmayan bir uygulama yazılımı geliştirirseniz, yazılımınız ilgili işletim sisteminde çalışmayacaktır.

Programlama dilleri ise bilgisayar içerisinde az önce bahsi geçen süreci kolaylaştıran bir tekniktir. Bilgisayar içerisindeki komutları bazı terimlerle isimlendirerek bir söz dizimi yaratılmıştır. Kendi içerisinde bir dil gibidir, kuralları, yazım sitili, işaretleri ve sıralamaları vardır. Yazılım dilleri sayesinde bilgisayara yapmasını istediğimiz bir işi satırlarca işlemler gerçekleştirerek değil de sadece tek bir komut uygulayarak da gerçekleştirebiliriz. Programlama dilleri, donanım ile insan arasında, programlama açısından bir köprü görevi üstlenir.

Programlama dillerinin kalitesi; kullanışlı, kolay ve en önemlisi problemi olabildiğince basit çözebilme yeteneğine bağlıdır. Problem büyüdükçe karmaşıklaşmamalıdır.

Programlama Dilleri Hakkında Görüşler

Bir grup öğrenci düşünün . Bu öğrencilerden bir kısmı okula bisiklet ile , bir kısmı araba ile , bir kısmıda metro ile gitsin . Aralarındaki fark bir kısmının daha erken bir kısmınında daha geç ulaşacağı olabilir. Yada risk anlamında düşünürsek metro ile gitmek araba ile gitmekten daha az risklidir. Ama bu farklar , öğrencilerin araç kullanarak okula gittikleri gerçeğini değiştirmez. Yani hepsininde ortak noktası araç kullanarak okullarına varmasıdır.

Programlama dillerinide bu şekilde düşünebiliriz. Bir hesap makinasını farklı platformlarda yazabiliriz. Hatta bazısı daha kapsamlı bazısı çok daha dar özelliklere sahip olabilir. Ama bu farklar programlama dillerinin amacını değiştirmez. Temelde yapılan şey hep aynıdır. Makinalara istenilen şeyleri yaptırabilmek için programlama dilleri önmli rol üstleniyor. Birbirinden ayrılan özellikleri nedeniyle programcılara olanaklar sunuyor. Programcı bu sayede amaçladığı tasarıyı hangi platformda yazabileceğini seçebiliyor.

Çok sayıda programlama dili bilmek yerine işinize yarayan bir programlama dili bilmek , programcıların lehine oluyor.

Programlama dilleri

Programlama dili, programcının bir bilgisayara ne yapmasını istediğini anlatmasının standartlaştırılmış bir yoludur. Programlama dilleri, programcının bilgisayara hangi veri üzerinde işlem yapacağını, verinin nasıl depolanıp iletileceğini, hangi koşullarda hangi işlemlerin yapılacağını tam olarak anlatmasını sağlar.

Şu ana kadar 2500’den fazla programlama dili yapılmıştır. Bunlardan bazıları: Pascal, Basic, C, C#, C++, Java, Java Script, Cobol, Perl, Python, Ada, Fortran, Delphi,programlama dilleridir.Bunların içinde popüler olanlar; VBasic, C, Delphi …

Öğrenim kolaylıgı bakımından Vbasic tercih edilit fakat

-+-

VBASIC

Basic, İngilizce “Beginner’s All-Purpose Symbolic Instruction Code” sözcüklerinin baş harflerinin bir araya getirilmesiyle oluşturulmuş, 1960′larda icat edilmiş, günümüzde de çeşitli lehçeleri kullanılmakta olan yüksek düzey bir programlama dili. Farklı lehçeleri birçok işletim sisteminin parçası olarak sunulmuştur.

BASIC öğrenmesi ve yazılımları kolay olan bir dildir. Genelde amatörce ve hobi uğraşıları için kullanılmıştır. Microsoft daha sonra PC için Quick Basic derleyicisi piyasaya sürmüştür. Bununla yazılan basic metinlerini makine koduna çevirilebilmiş böylece sürat kazanmıştır. Bugün halen geniş bir kullanım alanına sahip olan Visual Basic dili var olup bununla hatta Windows un belirli bölümleri yazılmıştır. Her Microsoft Office paketinde bir Basic turevi var olup makro programlamada büyük kolaylıklar getirmektedir.

Basic programlama dili algoritma’ya çok yakın bir yapıya sahiptir. Bu yüzden öğrenilmesi ve uygulanması kolaydır.

Değişken isimleri ve kuralları

Değişken isimleri aşağıdaki kurallara uyan her şey olabilirler:

1- Değişken ismi en fazla 255 karakterden oluşmalıdır.

2- Değişkenler arasında : ; , . / ‘ # [ ] ! ” $ % ^ & * ( ) { } karakterleri kullanılamaz. Ancak _ kullanılabilir.

3- Değişken isminin ilk karakteri mutlaka harf olmalıdır. Yani değişkenler rakamla veya _ ile başlamaz.

4- Değişken isimlerinde büyük küçük harf ayrımı yoktur. “BuRaK” ile “Burak” veya “BURAK” aynı değişkenleri belirlerler.

5- Belirli bir prosedürde aynı değişken birden fazla tanımlanamaz.

6- En önemlisi de herhangi bir VB komutu ismi olamayacaklarıdır.

Çok deneyimi olmayan kullanıcılara yönelik görsel bir programlama dilidir. Buda Pascal gibi programcılık mantığını anlamak isteyen kitleye hitap eder. Fakat pascaldan ayrıldığı en büyük nokta sanırım visual basic’in kullandığı formlar denetimler gibi özellikleridir. Modern programcılık buna önem veriri ve bu dilde buna olanak sağlar.

Programcılık yolundaki çok az tecrübeli insanların tercih edebileceği bir dil olmanın yanı sıra üzerine ekleneceği bileşen ve paketlerle profösyönel programcılarada hitap edebiliyor. Uygulamaların hemen derlenip .exe uzantılı olarak çalıştırabilmesi visual basicin önemli özelliklerindendir. Fakat visual basicin en büyük dezavantajı sadece windows platformunda çalışıyor olmasındır.

Visual Basic’in Artıları

• Hem üst düzey hemde az tecrübeli programcılara yöneliktir

• Öğrenilmesi kolaydır

• Günümüzde çıkan yeni teknolojilere rağmen kullanılıyor.

Visual Basic’in Eksileri

• Sadece windows platformunda çalışması

• Kütüphane yönünde oldukça zayıftır.

• Yazılan programlar boyut olarak küçük olsada bileşenler bakımından boyutları büyüktür.

Delphi Programlama Dili

Pascal dilinin Windows ortamında görselleştirilmiş halidir. Visual Basic kadar kolay olması sebebiyle programcıların gözdesi durumundadır. Oldukça zengin bir bileşen kütüphanesi vardır. Delphi uygulamalarını Linux üzerinden de çalıştırmak mümkündür. Hem kolay hemde güçlü bir geliştirme aracı arayan programcılar için bu dil birebir olmaktadır.

Delphi görsel bir programlama dilidir.. PEki Görsel bir programlama dili nedir diye hala ısrarla soranlar varsa (ki üst yazılarda çok defa anlatıldı ) şöyle kısaca tekrar anlatalım : Hazır (araçları) komponentleri olan ( windows formları, metin kutuları, kontrol düğmeleri ( butonlar) … vb gibi ) yazımı ve derlemesi kolay yine bu araçlara kod yordamı ile hakimiyet kurulan dillerdir.

Turbo Pascal’ ın Windows’a uyarlaması gibi bakabileceğimiz Delphi birçok komutu ve yapısı bakımından Turbo Pascal dilinin çocuğu niteliğindedir. Delphi programlama dili aslında birçok şeyi beraberinde bulunduran bir paket dildir.

Eğer 16 veya 32 bit Windows programları söz konusu ise Delphi kullanmaktan kaynaklanan en ufak bir Kuşku duyulmamalıdır. Delphi VB’ den daha güçlü ve daha hızlıdır. Sebebi ; VB yorumlayan (Interpreted) bir dildir, Delphi ise Derlenen (Compile) bir dildir. VB’ nin globalleri vardır. Delphi’ nin objectleri (nesneleri) vardır. Delphi karmaşık(kompleks) olmaktan uzak bir şekilde C++’nin gücüne sahiptir. Çeşitli derleme dosyalar oluşturma, link hatalarıyla uğraşmaya, tuhaf include dosyası bağlantılarına , uzun derleme sürelerine ve aşırı bir şekilde C++ öğrenmeye hiç gerek yoktur.

RAD (Rapid Application Development) Hızlı Uygulama Geliştirme demektir. Delphi’de RAD’dır ve bu ismi kesinlikle haketmektedir. Delphi’nin mükemmel bileşen yapısı, dünyadaki en hızlı derleyicilerden birine sahip olması, mükemmel veritabanı desteği ve Object Oriented – Nesne tabanlı programlamayı desteklemesi sayesinde çok hızlı uygulamalar geliştirebilirsiniz. Ne demek istediğimi hemen bir örnekle açıklayayım. Delphi’yi açtıktan sonra klavyeden F9 tuşuna basın veya Run(Çalıştır) menüsünden Run komutunu verin. Karşınıza gelen pencere %100 Windows uyumlu bir uygulamadır. Normal Windows pencerelerinde bulunan her türlü özelliğe sahiptir. Aynı şeyi C gibi veya bir başka görsel olmayan bir programlama dilinde yapmak için yüzlerce satır kod yazmanız gerekir (Sanırım görsellik kavramı biraz daha netleşti).

Delphi ayrıca DLL ( Dynamic )’leri kullanabilir veya inşa edebilir. Böylece herhangi bir dil ile yazılan bir DLL ile programınıza entegre edebilirsiniz. Delphi derleyicisi ayrıca yüksek performanslı optimizasyon veya düşük düzeyde programlama için Assembly kullanımını destekler. Delphi bir Windows uygulama geliştirme ortamıdır.

Delphi’nin Artıları

• Diğer programlama dillerine oranla bileşen kütüphanesi çok daha zengindir.

• Hem güçlü hemde kullanımı kolay bir dildir.

• Uygulamaları herhangi bir platforma gerek duymadan çalışabiliyor.

Delphi’nin Eksileri

• Bu dilde yazılan programların boyutları genelde diğerlerine oranla daha büyüktür.

• Kylix’i göz ardı edersek uygulamalar sadece Windows tabanında çalışır.

C programlam dili

Dilin Tarihi


C’nin ilk gelişme safhaları 1969 ile 1973 arasında AT&T Bell Laboratuvarları’nda gerçekleşti. Ritchie’ye göre, en yaratıcı devre 1972 idi. Dilin pek çok özelliği “B” adlı bir dilden türediği için, yeni dile “C” adı verildi. “B” adının kökeni konusunda ise söylentiler değişik: Ken Thompson B’nin BCPL programlama dilinden türediğini söylemektedir, ancak Thompson eşi Bonnie’nin onuruna adını Bon koyduğu bir programlama dili de geliştirmiştir.

1973′e kadar C yeterince güçlü bir hale gelmiş ve ilk başta PDP-11/20 assembly dili ile yazılan UNIX’in çekirdeğinin büyük kısmı C ile yeniden yazılmıştı. Böylece UNIX, çekirdeği bir assembly dili ile yazılmayan ilk işletim sistemlerinden biri olmuştu.

K&R C

1978′de Ritchie ve Brian Kernighan The C Programming Language (C Programlama Dili) kitabının ilk baskısını yaptılar. C programcıları tarafından “K&R” olarak bilinen bu kitap, C dilinin gayriresmi standardı olarak kullanıldı. C’nin bu versiyonu bugün “K&R C” olarak adlandırılır. Bu kitabın ikinci baskısı ise aşağıda anlatılan ANSI C standardını içerir.

K&R dilde şu değişiklikleri yaptı:

* struct veri tipleri eklendi

* long int veri tipi eklendi

* unsigned int veri tipi eklendi

* =+ operatörü += olarak değiştirildi (çünkü =+ C’nin leksikal ayrıştırıcısının kafasını karıştırıyordu)

K&R C genellikle tüm C derleyicilerinin desteklemek zorunda olduğu dilin en temel kısmı olarak kabul edilir. Uzun yıllar boyunca, ANSI C’nin kabul edilişinden sonra bile, yüksek taşınabilirlik (portability) istendiğinde, K&R C, C programcıları tarafından “ortak payda” olarak kabul edilmiştir çünkü bazı derleyiciler henüz ANSI C’yi desteklemek üzere güncellenmemişlerdi ve zaten iyi yazılmış bir K&R C programı aynı zamanda ANSI C’yi de destekler.

K&R C’nin yayımlanmasını izleyen yıllar içine dile AT&T’nin derleyicilerinin ve bazı başka bilgisayar üreticileri tarafından desteklenen kimi “gayriresmi” özellikler eklendi. Bunların içinde aşağıdaki özellikler de vardı:

* void fonksiyonlar ve void * veri tipi

* struct ya da union veri tipi döndüren fonksiyonlar

* her bir struct’ın alan adları için ayrı bir ad alanı

* struct veri tipleri için atama

* bir nesneyi yazmaya karşı korumalı yapmak için const anahtar sözcüğü

* standart bir C kütüphanesi

* enumeration’lar

* single-precision float tipi

ANSI C ve ISO C

1970′lerin sonunda C, en çok kullanılan mikrobilgisayar dili olarak BASIC’in önüne geçmeye başladı. 1980′lerde ise, IBM PC ile kullanılmak üzere benimsenmesiyle birlikte popülaritesi iyice artmaya başladı. Aynı zamanda, Bell Laboratuvarları’nda Bjarne Stroustrup ve iş arkadaşları C’ye nesneye yönelim eklemek üzere çalışmaya başlamışlardı. C bugün UNIX dünyasında en çok kullanılan dil olarak kalırken, Stroustrup’un geliştirip C++ adını verdiği dil Microsoft Windows işletim sisteminde en önemli dil oldu.

1983′te Amerikan Ulusal Standartlar Enstitüsü (ANSI) bir C standardı oluşturmak için bir kurul oluşturdu. Uzun ve yorucu bir çalışmadan sonra, bu kurul standardı 1989′da tamamladı ve standart ANSI X3.159-1989 “Programming Language C (C Programlama Dili)” olarak yayımlandı. Dilin bu versiyonu genellikle ANSI C olarak adlandırılır. 1990′da bu standart, küçük değişikliklerle Uluslararası Standartlar Örgütü (ISO) tarafından da benimsenip ISO/IEC 9899:1990 olarak yayımlandı.

ANSI C’yi oluşturmanın amaçlarıdan biri K&R C’yi içeren ve dile sonradan katılan “gayriresmi” özellikleri de dile katan bir standart oluşturmaktı. Standart k fonksiyon prototiplerini ve daha yetenekli bir önişlemciyi de standarda ekledi.

Bugün artık ANSI C neredeyse tüm derleyiciler tarafından desteklenmektedir. Günümüzde yazılmakta olan C programlarının çoğunluğu ANSI C standardına uygun olarak yazılmaktadır. Yalnızca standart C kullanılarak yazılmış bir program, standarda uyumlu her derleyici ile doğru bir biçimde derlenip çalıştırılabilir. Ancak, standart olmayan kütüphaneler kullanılarak yazılmış programlar belli bir platform ya da derleyici gerektirebilirler…

C Kodlarının Temel Özellikleri

Bir C programı aşağıda verilen özellikleri mutlaka taşımalıdır.

* Yazılımda kullanılacak olan her fonksiyon için ilgili başlık dosyası programın başına ileve edilmedlidir.

* Her C programı main() fonksiyonunu içermelidir.

* Program içinde kullanılacak olan değişkenler ve sabitler mutlaka tanımlanmalıdır.

* Satırın sonuna ; işareti konmalıdır.

* Her bloğun ve fonksiyonun başlangıcı ve bitişi sırasıyla { ve } sembolleridir.

* C dilinde yazılan kodlarda küçük-büyük harf ayrımı vardır (case sensitive).

Örneğin A ile a derleyici tarafından farklı değerlendirilir.

* Açıklama operatörü /* */ sembolleridir.


PASCAL

Pascal Programlama Dili Tarihi Gelişimi ve Genel Yapısı

Bilgisayarların direkt elektronik donanımına hükmettiği için taşınabilir özellikten yoksun ayrıca program yazımı zahmetli makine dillerinin yerini 1950 yılı civarında çevirici dillere(assembly languges) bıraktı.Bu diller sembolik makine dilleridir.Daha sonraları ise bu dillerde yerlerini kullanımı daha kolay 3.kuşak dillere bıraktı.Bu yıllarda Fortan,Algol,Cobol gibi diller geliştirildi.

Pascal ilk olarak 1968 de ortaya çıktı.Ve 1971 yılında Niclaus Wirth tarafından yine bu yıllarda ortaya çıkan yapısal programlama tekniğini kullanan bir dil olarak hazırlandı.Dile muhtemelen bilime katkılırından dolayı Fransız filozof Blaise Pascal’ın adını verdi.Algol(Algoritmik Programlama) dilinin bir türevidir.Pascal karmaşık nümerik hesap gerektiren problemlerinin çözümünde sağladığı avantajları,metin işleme konusundaki becerisi ayrıca Borland’ın 1985 çıkarmaya başladığı Turbo Pascal IDE leriyle birlikte eğitim ve ticari alanda kabul gören bir dil oldu.Borland,bu dile günümüz dillerinin vazgeçilmez parçası haline gelen OOP(Object Orient Programming,Nesneye Yönelik Programlama) özelliği ekledi.Ayrıca güçlü ve yaygın kullanılan bir geliştirme ortamı olan Delphi, Pascal tabanlıdır.

Pascal programlama dili 1968 yılında Niklaus Wirth tarafından geliştirilmiş üst düzey programlama dilidir. Pascal programlama dilinin günümüzdeki sürümleri Turbo/Borland ve Windows Pascal adları ile bilinmektedir. Turbo Pascal programlama dili mühendislik problemlerinin çözümlerinde, bilimsel projelerde, sağladığı grafik desteği ve program yazmadaki kolaylıklarıyla aranılan bir dil olma özelliğini sürdürmektedir.

Pascal programlama dilinin önemli özelliklerinden biri, program yazmadaki kolaylıkların yanısıra, yazılan bir metinin kolaylıkla değiştirilebilmesi, program içindeki bir metinin istenilen yere taşınabilmesi, kopyalanabilmesi, yazılan programdaki yazım kurallarının kolaylıkla kontrol edilebilmesi, hataların kolaylıkla tespiti ve bu hataların düzeltilmesi için yaptığı öneriler vb. gibi işlemlerin çabuk ve güvenilir bir şekilde yapılabilmesine olanak sağlamasıdır.

Pascal’ın programcıya sunduğu önemli özelliklerden biri de; bazı programlarda ortak olarak kullanılan program parçalarının ayrı bir Pascal dosyası olarak saklanması suretiyle farklı programlarda bu program parçalarının kullanılabilmelerine olanak tanımasıdır.

Pascal Menüleri

Pascal editöründe kullanımı kolaylaştıran bir çok menü vardır. Bu menülere ulaşmak için “Alt ” tuşu ile birlikte menü isimlerinin ilk harflerine basmak yeterlidir. Menüye ulaştıktan sonra menü komutlarına erişim için üç yol vardır. 1)Mouse ile, 2)Ok tuşlarıyla 3) menü komutu üzerindeki işaretli harfe basılır.

Burada Pascal menülerinin tamamını tanıtmayıp sıklıkla kullanılan menü ve menü komutlarının kullanımı anlatılacaktır. Burada tanımı yapılan menüler, Windows Pascal için ifade edilmekle olup, aralarındaki küçük farklarla Turbo ve Borland Pascal 7.0 için de geçerlidir.

PASCAL PROGRAMLAMA DİLİ YAPISI

Bir Pascal programı en genel anlamda üç ayrı kısımdan oluşmuştur. Bu kısımlar bulunmaları gereken sıraya göre aşağıda verilmiştir.

Program Başlığı;

Tanımlama Bloğu;

BEGIN

İcra Bloğu;

END.

Programların asıl icra bölümü son bölümüdür. Yukarıda icra bloğu olarak gösterilen bu bölüm, Pascal komut cümlelerinden oluşur. ICRA bloğu, “BEGIN” ile başlar “END.” ile sona erer. Her program bloğu birden fazla “END” içerebilir. Ancak bu end deyimleri program içinde bulunan değişik blokların sonunu göstermek için kullanılır ve hiç birinin sonunda “.” işareti bulunmaz. “.” işareti sadece ana programın sonunu göstermek amacıyla kullanılabilir. Ana programın sonu haricindeki diğer “END” deyimlerinin sonunda “;” işareti kullanılır.

Program Başlığı: Bir Pascal programının ilk kısmı, kullanılması programcının seçimine bağlı olan “program başlığı” dır. Program başlığı, programa bir isim vermek için kullanılır ve program isimlerinde İngiliz alfabesinde bulunmayan Türkçe karakterler kullanılmamalıdır. Programa uzun isimler verilebilir ancak sözcükler arasında boşluk bulunmamalıdır.

Tanımlama Bloğu: Pascal programının bu bölümünde program icra bloğunda kullanılan sabitler ve değişkenlerin isimleri ve bunların ne tür sabit/değişken olduğu bildirilir. Bu blok pascal programı içerisinde mutlaka belirtilmelidir. Örnek olarak, aşağıda değişik veri tiplerindeki değişkenlerin bir tanımlama bloğunda nasıl tanımlanabileceği gösterilmiştir.

Tanım ve Veri Tipi

S REAL

A STRING

B INTEGER

C LONGINT

F SHORTINT

H BOOLEAN

J BYTE

KL WORD

Algoritma Kurma

Algoritma, verilen herhangi bir sorunun çözümüne ulaşmak için uygulanması gerekli adımların hiç bir yoruma yer vermeksizin açık, düzenli ve sıralı bir şekilde söz ve yazı ile ifadesidir. Algoritmayı oluşturan adımlar özellikle basit ve açık olarak sıralandırılmalıdır. Algoritmik çözüm yöntemlerine ilk örneği günlük yaşantımızdan verelim.

Örnek 1: Örneğimiz bir insanın evden çıkıp işe giderken izleyeceği yolu ve işyerine girişinde ilk yapacaklarını tanımlamaktadır.Çözüm 1: Evden dışarıya çık Otobüs durağına yürü Durakta gideceğin yöndeki otobüsü bekle Otobüsün geldiğinde otobüse bin Biletini bilet kumbarasına at İneceğin yere yakınlaştığında arkaya yürü İneceğini belirten ikaz lambasına bas Otobüs durunca in İşyerine doğru yürü İş yeri giriş kapısından içeriye gir Mesai arkadaşlarınla selamlaş İş giysini giy İşini yapmaya başla.

Yukarıdaki örnekte görüldüğü gibi, evden işe gidişte yapılabilecek işlemler adım adım sırasıyla, kısa ve açık olarak tanımlanmaya çalışılmıştır. Yukarıdaki algoritma kişinin otobüsü kaçırma olasılığı düşünülmeden oluşturulmuştur. Kişi durağa geldiğinde bineceği otobüsü kaçırmış ise algoritmamız aşağıdaki şekilde değiştirilebilir.

Çözüm 2: Evden dışarıya çık Otobüs durağına yürü Otobüsün saati geçmiş ? Durakta gideceğin yöndeki bir sonraki otobüsü bekle Bir sonraki otobüs gelene kadar 4. adımı uygula Otobüsün geldiğinde otobüse bin Biletini bilet kumbarasına at İneceğin yere yakınlaştığında arkaya yürü İneceğini belirten ikaz lambasına bas Otobüs durunca in İşyerine doğru yürü İş yeri giriş kapısından içeriye gir Mesai arkadaşlarınla selamlaş İş giysini giy İşini yapmaya başla.

Her iki örnekte görüldüğü gibi sorunu çözüme götürebilmek için gerekli olan adımlar sıralı ve açık bir biçimde belirlenmiştir. Algoritmanın herhangi bir adımındaki küçük bir yanlışlık doğru çözüme ulaşmayı engelleyebilir. Bu nedenle algoritma hazırlandıktan sonra dikkatle incelenmeli ve varsa adımlardaki yanlışlıklar düzeltilmelidir.

Programlamanın temeli olan algoritma hazırlanmasında dikkat çekici bir nokta, aynı sorunu çözmek için hazırlanabilecek olası algoritma sayısının birden çok olmasıdır. Başka deyişle, bir sorunun çözümü için birbirinden farklı birden fazla sayıda algoritma hazırlanabilir. Bu da gösteriyor ki herhangi bir problemin çözümü için birbirinden farklı yüzlerce bilgisayar programı yazılabilir.

Bir bilgisayar programı için hazırlanacak olan algoritma da aynı şekilde çözüm yolunu bilmeyen bir kişiye, çözüme ulaşmak için neler yapması gerektiği anlatılıyormuş gibi hazırlanmalı ve eksik bir nokta bırakmaksızın gerekli tüm adımları açık ve düzenli olarak içermelidir. Çözüm için kullanılacak bilgilerin nereden alınacağı, nerede saklanacağı ve çözümün program kullanıcısına nasıl ulaştırılacağı algoritma adımları arasında belirtilmelidir.

Aşağıda değişik işlemlere ilişkin algoritma örnekleri verilmiştir.

Örnek 2: İki sayıyı toplamak için gerekli programa ait algoritmanın oluşturulması.Algoritma:A1 :Birinci sayıyı girA2 :İkinci sayıyı girA3 :İki sayının toplamını yapA4 :Toplamın değerini yazA5 :Bitir.

Bu tam bir algoritmadır. Sözcüklerin ortaya çıkaracağı yanlış anlamaların ortadan kaldırmak amacıyla semboller ve matematik dilini gerektiren bazı kısaltmalar kullanmak daha uygun olacaktır. Bir algoritma yazılırken şu metot izlenmelidir:

1. Programda kullanılacak elemanları temsil etmek üzere uygun isimler veya değişkenler seç. 2. Bazı isimlere başlangıç değeri olarak çözümün gerektirdiği uygun değerler ver. 3. Gerekirse programa girilecek verileri düzenle. 4. Cebirsel notasyon ve kararlar kullanarak aritmetik işlemleri gerçekleştir. 5. Çıkışı düzenle. 6. Bitir.

Yukarıda iki sayının toplanması için oluşturduğumuz algoritmayı bu yeni gereksinimlere uyarak yeniden yazalım.

Toplam adı için Z

Birinci Sayı için X

İkinci Sayı için Y değerleri kullanılırsa;

Algoritma:A1 :X değerini girA2 :Y değerini girA3 :Z X+YA4 :Z’ yi yazA5 :Bitir

Görüldüğü üzere bu şekilde bir algoritma ile çözüm yolunu izlemek daha kolaydır. Bundan sonra bu tip algoritma kullanılacaktır.

A6 :Bitir

Bu örnekte Ort değeri ile iki sayının ortalaması temsil edilmiştir.

Örnek 4: Beş sayının toplamını ve ortalamasını veren programa ait algoritmanın oluşturulmasıToplam adı için TopOrtalama adı için OrtGirilen sayılar için XArttırma için Sayac kullanılırsaAlgoritma:A1 :Top 0, Sayac 0A2 :X’i girA3 :Top Top+XA4 : Sayac Sayac +1A5 :Eğer Sayac <5 ise A2′ye gitA6 :Ort Top/5A7 :Top ve Ort değerlerini yazA8 :Bitir

Örnek 5: Kenar uzunlukları verilen dikdörtgenin alan hesabını yapan programa ait algoritmanın hazırlanması. Kenar uzunlukları negatif olarak girildiği durumda veri girişi tekrarlanacaktır.Dikdörtgenin kısa kenarı : aDikdörtgenin uzun kenarı : bDikdörtgenin alanı : Alan

Algoritma:A1 :a değerini girA2 :a<0 ise 1. adımı tekrarlaA3 :b değerini girA4 : b<0 ise 3. adımı tekrarlaA5 :Alan a*bA6 :Alan değerini yazA7 :Bitir

Örnek 7: Verilen bir sayının faktöriyelini hesaplayan programın algoritmasının oluşturulmasıSayının faktöriyeli :FakFaktöriyel degişkeni :XFaktöriyeli hesaplanacak sayı :YAlgoritma:A1 :Fak 1, X 0A2 :Y’i girA3 :Y<0 ise 2. adımı tekrarlaA4 :X X+1A5 :Fak Fak*XA6 :X<Y ise 4. adıma geri dönA7 :Fak değerini yazA8 :Bitir

Bu algoritmada 1. adımda X e 0 ve Fak değişkenine 1 değeri atanıyor. 2. adımda Y değeri giriliyor ve 3. adımda Y değerinin 0 dan küçük bir değer olup olmadığı denetleniyor ve denetim sonucuna göre gerekli komut veriliyor. 4. adımda X’in değeri 1 arttırılıyor ve 5. adımda X için Fak değeri hesaplanıyor. 6. adımda X in değerinin faktöriyeli hesaplanacak sayıdan küçük olması durumunda 4. adımdan itibaren işlemlerin tekrarlanması komutu veriliyor, X’ in değerinin Y’ye eşit olması durumunda işlemler tamamlanarak hesaplanan değerin yazdırılması işleminden sonra programın çalışması sona ermektedir.

Akış Diyagramları

Geliştirilecek olan yazılımın genel yapısının şematik gösterimine akış diyagramı veya blok diyagramı adı verilir. Akış diyagramları, yazılımı oluşturacak program parçalarını ve bu parçaların birbirleri ile olan ilişkilerini belirler. Bir bilgisayar programının oluşturulmasında akış diyagramlarının hazırlanması, algoritma oluşturma aşamasından sonra gelmektedir. Bilgisayar programının oluşturulması sırasında algoritma aşaması atlanarak, doğrudan akış diyagramlarının hazırlanmasına başlanabilir. Programlama tekniğinde önemli ölçüde yol almış kişiler bu aşamayı da atlayarak direkt olarak programın yazımına geçebilirler.

Akış diyagramlarının algoritmadan farkı, adımların simgeler şeklinde kutular içinde yazılmış olması ve adımlar arasındaki ilişkilerin (iş akışı) oklar ile gösterilmesidir.

Akış diyagramlarında kullanılan semboller, anlamları ve kullanış amaçları aşağıdaki tabloda verilmiştir.

Tablo 1. İş akış diyagramlarında kullanılan semboller ve anlamları

Simge Simgenin Adı ve Anlamı

Elips Akış diyagramının başlangıç ve bitiş yerlerini gösterir. Başlangıç simgesinden çıkış oku vardır. Bitiş simgesinde giriş oku vardır. Paralel Kenar: Programa veri girişi ve programdan elde edilen sonuçların çıkış işlemlerini gösterir. Dikdörtgen Aritmetik işlemler ve değişik atama işlemlerinin temsil edilmesi için kullanılır. Eşkenar Dörtgen Bir karar verme işlemini temsil eder. Altıgen Program içinde belirli blokların ard arda tekrar edileceğini gösterir. Oklar Diyagramın akış yönünü ,yani her hangi bir adımdaki işlem tamamlandıktan sonra hangi adıma gidileceğini gösterir.

Ayrıntılı bir akış diyagramı, yazılımı oluşturan işlemleri ve ilişkilerini en küçük detayına kadar belirler.

Bir bilgisayar programının geliştirilmesinde kullanılan programlama dili ne olursa olsun bu programların akış diyagramlarında genel olarak yalnız üç basit mantıksal yapı kullanılır. Bu mantıksal yapılardan en basiti sıralı yapıdır. Sıralı yapı, hazırlanacak programdaki her işlemin mantık sırasına göre nerede yer alması gerektiğini vurgular. Bu yapı sona erinceye kadar ikinci bir işlem başlayamaz.

Şekil 1.2 Sıralı Yapı

Mantıksal yapılardan ikincisi Karar Verme yapısıdır (Şekil 1.3). Programlama sırasında If…Then… Else yapısı ile tanıyacağımız bu mantıksal yapılar, birden fazla sıralı yapı seçeneğini kapsayan modüllerde, hangi şartlarda hangi sıralı yapının seçileceğini belirler.

Şekil 1.3 Karar Verme Yapısı

Üçüncü mantıksal yapı çeşidini tekrarlı yapılar oluşturmaktadır. Bu yapılara Pascal programlama dilinde For(Şekil 1.4.a), While ve Repeat..Until (Şekil 1.4.b), yapısı adı da verilir. Şartlara göre değişik işlem gruplarının yapılmasını sağlar. Bu yapı yukarıda sözü edilen iki yapının çeşitli kombinezonların tekrarlanmasından oluşmuştur.

Söz konusu üç değişik yapı, değişik kombinezonlarda kullanılarak istenilen işlevleri yerine getirecek programlar hazırlanabilir. Programların bu üç basit yapı ile sınırlandırılması program modüllerinin daha kolay tasarlanmasını sağlar.

a b

Şekil 1.4. Tekrarlı Yapı

Akış Diyagramı Örnekleri

Bu bölümde yazılım oluşturma evrelerinden biri olan akış diyağramları ile ilgili örnekler verilmiştir. Sözlü veya yazılı olarak oluşturduğumuz algoritmanın programa dönüştürülmesi sırasında programın çalışma sırasını da gösteren akış diyagramlarıyla ilgili örnekler aşağıda verilmiştir.


Neden Delphi?

Bana çok sorulan sorulardan biri de Neden Delphi? veya Delphi mi yoksa X geliştirme aracı mı? Şeklinde. Delphi’yi seçmek bir çok nedeniniz var. Bunlardan en önemlileri :

1. IDE : Entegre Geliştirme ortamı ile hızlı bir şekilde uygulamalar geliştirebilirsiniz. Form düzenleyici (Form Designer) ile kolayca formlarınızı düzenleyebilir, Object Inspector ile bileşenlerin özelliklerini kolayca değişitirebilir, CodeInsight teknolojisi ile daha hızlı ve hatasız kodlar yazabilirsiniz.

2. Hız : Daha küçük ve daha hızlı çalışan uygulamalar daha iyidir. Delphi dünyadaki en hızlı ve boyutu küçük uygulamaları oluşturan derleyicilerden birine sahiptir.

3. Delphi Language : Delphi 7′ye kadar programlama dilini ismi Object Pascal olarak geçiyordu. Ancak Delphi 7′de eklenen .net desteği ile birlikte Borland dilin ismini Delphi Language (Delphi dili) olarak değiştirdi. Delphi dili güçlü, öğrenmesi kolay bir dildir.

Assembler ve C++ dilleri de çok güçlü dillerdir. Ancak assembler dili’ni öğrenmesi zor ve kod yazması ise tam bir hamallıktır. C++ dilini öğrenmesi zordur, ayrıca C++ ile kötü programlar yazmak çok kolaydır. Visual Basic ilk çıktığında amacı insanlara kolayca program yazabilecekleri bir ortam sunmaktı. Ancak ilk sürümleri bunda pek başarılı olamadı ve gittikçe komplex bir hale geldi. Çok yavaş uygulamalar geliştiriyor ve çoğu şeyi programcıdan gizliyordu, programcı arka planda işlerin nasıl döndüğünü bilmiyordu. Delphi’de kesinlikle böyle bir durum yoktur. Delphi iki yönlü bir geliştirme aracıdır yani tüm kod kontrolünüz altındadır. Microsoft Visual Basic’in .net sürümü için radikal kararlar almış ve Borland’dan bir çok programcıyı astronomik rakamlarla transfer ederek kaliteyi bir parça yükseltmiştir. Ancak hala Delphi’ye ulaşması için çok çalışması gerek.

4. Geniş Veritabanı Desteği : Ülkemizde yapılan programların büyük bir çoğunluğu veritabanı programlarıdır. Delphi birçok veritabanını çok iyi bir şekilde desteklemektedir. Microsoft araçları genelde Microsoft erişimlerini desteklerler, OLE DB ve ODBC gibi. Delphi’nin veritabanı desteği :

* dbExpress

* IB Express (IBX)

* BDE

* ADO

* Birçok veritabanına direk erişim sağlayan 3. parti bileşenler

* Milyonlarca kayıt saklayabilen çok hızlı 3. parti lokal veritabanları

* Eğer bunlarda işinizi görmüyorsa kolayca kendi araçlarınızı yazma özelliği

5. VCL : Visual component Library, Delphi’nin en önemli parçasıdır. Delphi’de gördüğünüz bileşenlerin tamamı Delphi dilinde yazılmıştır. Delphi’nin güçlü Object Oriented (nesne yönelimli) dili sayesinde mevcur sınıflardan yeni bileşenler oluşturmak çok kolaydır. Şu anda dünyada geliştirilmiş on binlerce bileşen vardır. Ayrıca bu sayıya her gün yenileri eklenmektedir.

6. Destek : Başta Borland üzere, Türkçe ve İngilizce olarak binlerce site ve kişiden başınız sıkıştığında destek alabilirisiniz.

Neden Visual Basic

Yukarıda vb’nin ne olduğunu tanımınladıktan sonra bu yazıda neden vb’yi tercih edelim sorusuna yanıt arıyacağız.Vb bir Microsoft ürünüdür.Bu yüzden burada yazacağınız programların databaseleri windowsla tamamen uyumlu olacaktir çünkü aynı firma tarafından destekleniyor,bunun gibi birçok Microsoft ürününü vb ile etkinleştirme imkanımız var örnegin accessde yaptiğiniz basit öğrenci kayıt programını VB’den açıp onu VB’de daha görsel daha gelişmiş hale getirebilirsiniz.Atlanmaması gereken bir ayrıntı da şu: Vb’de program derlemek birçok dile göre daha kolaydır.Çünkü VB’de görsellik ön plandadır ve dil olarak da kolaydır,demek istediğim; komut ezberlemek için çok uğraşmıyorsunuz,biraz ingilizce biliyorsanız işiniz çok kolay; komutlar genelde ingilizce ya da ingilizce kısaltmaları.Şu var ki bazıları bunu abartır ve der ki: “Bilgisayarı yeni açanlar bile vb’de program yazabilir,vb çocuk işidir..” Evet vb’nin kolay olduğunu ben de söylüyorum ama programlama mantığı hep aynıdır,ekran başında kafa çatlatırsınız.Ben de herzaman diyorum, gene en kolayı VB dir ama iş çok sonraki derslerimde anlatacağım dll,actixex.. gibi uygulamalara geldiğinde herkes biraz zorlanır.Dünya üzerinde 3,5 milyonun üzerinde insan VB kullanmakta,ayrica birçok yazılım şirketi de vb bilen yazılımcılar aramakta.Özetliyecek olursak programlamaya yeni başlamışsanız ve gelişmek istiyorsanız şiddetle VB tavsiye ederim,VB yi iyice kaptiktan sonra size delphi veya Microsoft c++ tavsiye ederim…


Neden C ?

* C güçlü ve esnek bir dildir. C ile işletim sistemi yazabilir, kelime işlemciler oluşturabilir veya grafik çizebilirsiniz.

* C, iyi bir yazılım geliştirme ortamına sahiptir.

* C, özel komut ve veri tipi tanımlamasına izin verir.

* C taşınabilir bir dildir. Yani herhangi bir C kodu hiçbir değişikliğe uğramadan, veya çok az bir değişimle, başka bir derleyicide derlenebilir. Örneğin, Windows işletim sistemlerinde yazılan bir C kodu, Linux, UNIX veya VAX gibi işletim sistemlerinde de derlenebilir.

* C yapısal bir dildir. C kodları fonksiyon olarak adlandıralan altprogramlardan oluşmuştur.

* C++, Java, JavaScript, JavaApplet, PHP, C#, … gibi dillerin temelinde C vardır.

Popularity: 2% [?]

Phython Programlama Dili

Posted by ShadOfMoStar On Mayıs - 11 - 2009

Popularity: 2% [?]

Firefox Birden Fazla Anasayfa Açmak İçin Püf Nokta

Posted by ShadOfMoStar On Nisan - 19 - 2009

Selamun Aleykum.
Firefoxda ufak bir püf noktadan bahsedeceğim;
Birden fazla ana sayfa açılışı istiyorsanız.Yani Firefox’unuzu açtığınızda örnek olarak;

www.pufnoktam.net
www.Cyber-Warrior.org
www.bilgininadresi.net
www.Google.com.tr

sayfalari otomatik anasayfa olarak açılsın istiyorsanız yapmanız gereken
Firefox pencrenzden > Araçlar > seçenekler
Gerisi aşağıdaki resimde belirtilmiştir.

Popularity: 4% [?]

Resimle İstediğin Dosyayı Birleştirme İşlemi

Posted by ShadOfMoStar On Nisan - 18 - 2009
İlk önce Yerel disk C de bir klasor yaratın ve adını yapalım sonra içine saklıyacagımız dosyaları atalım.
Bu yöntem ile fotoğraf dosyasının içine istediğiniz kadar dosyayı gömebilirsiniz. Fotoğrafta anormal bişeylerin olduğu sadece dosya boyutundan belli oluyor.

Öncelikle resmin ( yada herhangi bir dosyanın ) içine gömmek istediğiniz dosyaları bi yere zipleyin. İçine dosya gömmek istediğiniz fotoğraf ile zipi aynı klasöre koyun. Daha sonra Başlat – Calistir – CMD










ShadOfMoStar | Seber …

Popularity: 2% [?]

Değişlik Programcılık Teknikleri, Püf Noktaları

Posted by admin On Nisan - 17 - 2009

Buyazıda çok işinize yarayacağını sandığım bazı programcılık tekniklerinden söz edeceğim. Fırsat buldukça bu püf noktalarına yenilerini ekleyeceğim. Tabi bu tekniklere ve püf noktalarına destek vermek isteyen olursa seviniriz. Her ne kadar konunun başlığı Programcılık Teknikleri, Püf Noktaları olsa bile bu yazıyı Programcılık Kara Mizahına örnek olsun diye kaleme aldım.

Sınıfları Temizlemek, Belleği Pirüpak Yapmak

Bu püf noktasını bir süre önce bir kitapta gördüm. Bu süper püf noktasının anlatıldığı kitabı alma imkanını bulamamış olanlar bu teknikten mahrum kalmasın diye tekniği özetleyip sizinle paylaşacağım. Püf noktamızın konusu sınıfları temizlemek ama yani sınıfları bellekten temizlemek.

Şimdi bazılarınız diyecekler ki, bizim bildiğimiz nesneler bellekten temizlenirdi şimdi bellekten bir de sınıfları mı temizleyeceğiz? Sınıflarınız kirli ise bunları bellekten mutlaka temizlemeniz gerek. Yoksa bellek berbat olur. Bu işlem için yani sınıf temizleme işlemini GC sınıfının SuppressFinalize() metodu ile aşağıdaki gibi yapabilirsiniz.

System.GC.SuppressFinalize(this); // Bu sınıfı ter temiz yap

Sınıfınızda böyle bir satırı içeren bir metot hazırlayıp kullanabilirsiniz. Sınıfınızda böyle bir metot hazırlayıp kullanmış olmanıza rağmen sınıf bir türlü bellekten temizlenmiyorsa bilgisayarınızı kapatıp tekrar açıp temizleyip bu metodu ikinci kez kullanmanız önerilir(!).Çünkü bazı sınıflar bellekten hemen temizlenmiyorlar.

class kirli_sinif

{

public void sinifi_cilala()

{

System.GC.SuppressFinalize(this); // Bu sınıfı bellekten uçur

}

}

Programın ileri aşamalarında bu sınıfın örneğinı alıp bu metodu işletirseniz bellek temizleme dertlerinizden kurtulursunuz. Ben bu tekniği bulan mesleğinin zirvesindeki bilim adamlarının, yazarların yalancısıyım. Sorumluluk kabul edilmez ama hararetle tavsiye edilir.

Button Nesnelerinin Text Özelliği

Varsayalım ki C# veya başka bir programlama diliyle bir uygulama geliştirdiniz. Doğal olarak formlarda Button nesnelerine yer verdiniz. Button nesnelerinin etiketlerini yani başlık metinlerini yani Text özelliğine dikkat etmelisiniz. Çünkü Button nesnelerine uygun veya motive edici başlık metni seçmezseniz Button nesnelerinin Click olayıyla ilişkilendirdiğiniz metotlar verimli bir şekilde çalışmıyorlar. Örneğin Button nesnesine “Aktar” gibi bir başlık metni yerine “Gözünü Seveyim Güzel Aktar” gibi bir başlık metni seçmeniz halinde programınız hatasız ve daha hızlı çalışacaktır. Madem Button nesnelerinin başlık metinleri bu kadar önemlidir dikkatli olup başka programcılara ait başlık metinlerini kullanmamak gerekmektedir. Rivayetlere göre bu püf noktasını bir öğretim üyesi bulmuş ve Hacettepe mezunu bir bilgisayar mühendisi geliştirmiştir.

Procedure Kullan Gerisini Merak Etme Sen

Programcılar yazdıkları programı överken bazen kullandıkları veritabanın sağlam olduğunu söylerler. Örneğin Access veritabanı SQL Server kadar sağlam ve güvenli değildir. Programlarını pazarlamaya çalışanlara bir önerim var: C# ile geliştirdiğiniz projelerde mümkün mertebe fonksiyon yerine Procedure kullanın. Madem Procedureler daha gelişmiş bir yapıya sahiptir Procedure kullanarak programınızın gücüne güç katabilirsiniz. Ama hocam C#’ta Procedure’ler yok gibi itirazları kabul etmem. Programlarınızı kalitesini artırmak istiyorsanız Procedure kullanmalısın. Sonra program paketinin üzerine “bu programda fonksiyon yerine procedure kullanılmıştır” diye yazmayı unutmayınız.

Dizi Değişken Tanımlama Tekniğinizi Değiştirin

Programcılıkta güncelin uzağında kalmış bazı programcılar C# gibi görece yeni bir programlama dilini kullansalar bile bütün uyarılara rağmen bildiklerini okuyorlar ve dizi değişkenleri aşağıdaki gibi tanımlıyorlar:

private void senin_degil_benim_buton_Click(object sender, EventArgs e)

{

int[] dizini_dovmeyen_dizi = new int[4];

}

Ne yapıyor programcımız burada? Eski ve modası geçmiş usulde 4 elemanlı integer tipinde bir dizi değişken tanımlıyor. Hal bu ki bu dizi değişkeni aşağıdaki gibi tanımlasa programının değeri en az 2 kat artacak ve başı göklere, yani zirvelere erecek. Benden uyarması; akıllı programcılar dizi değişkenkeri aşağıdaki gibi tanımlıyorlar. Bu arada kodunuza using System.Collections; yazmayı unutmayın.

ArrayList dizini_doven_dizici = new ArrayList()

Tabi tanımladığınız dizi değişkenlere ad seçerken bir nebze yaratıcı olun. Başkasına ait değişken adlarını kullanmanın alemi yoktur. Programcıların biraz roman biraz şiir okumaları yani edebiyatla aralarını düzeltmeleri gerekir. Yoksa her program her kaynakta rastlanan değişken adlarına mahkum olurlar ki bu hoş bir durum değildir. Baktıklar ki olmuyorm kendilerine birer “değişken adı bulma uzmanı” bulsunlar. Çünkü değişken adları güzel seçilen programlara yüksek fiyata alıcı bulmak zor değildir.

Popularity: 2% [?]

Web Servisleri İçin Dört Püf Nokta

Posted by admin On Nisan - 17 - 2009

Web Servislerini yazmak ve kullanmak, çoğu zaman bir web service projesi oluşturmak ve istemci tarafında Add Web Reference tekniği ile oluşturulan proxy sınıfını kullanmaktan ibaret basit bir mimari olarak düşünülür. Ancak sanılanın aksine Web servislerinin yazılmasında ve kullanılmasında dikkate değer çeşitli püf noktalar vardır. İşte bu makalemizde bu püf noktalardan dördünü maddeler halinde incelemeye çalışacağız.

1 – Bir web metodunun overload edilmesi (aşırı yüklenmesi) standart bir metodun overload edilmesinden daha farklıdır.

Örnek bir web servisinde aşağıdaki gibi aşırı yüklenmiş (overload) iki web metodumuz olduğunu göz önüne alalım. Bu metodların aşırı yüklenmiş olduklarını rahatlıkla söyleyebiliriz. Nitekim, her iki metodunda imzaları farklıdır. (Aşırı yüklemede(Overloading) metod imzasının, metodun aldığı parametre sayısı ve parametrelerin tiplerine bağlı olduğunu anımsayalım.)
[WebMethod()]
public double Carp(double x,double y)
{
return x*y;
}

[WebMethod()]
public int Carp(int x,int y)
{
return x*y;
}

Normal şartlar altında bu metodları çalışma zamanında bir problem olmadan yürütebilmemiz gerekir. Ancak metodları içeren herhangibir web servisini çağırdığımızda, çalışma zamanında aşağıdaki ekran ile karşılaşırız.

Sebep web servisinde yer alan SOAP mesajlarının yapısı ile ilgilidir. Aynı isimli metodlar SOAP mesajları içerisine aynı isimler ile gömülmeye çalışıldığından ve birbirlerinden ayırt edilebilmeleri için xml içerisinde var olan bir overload mekanizması olmadığından böyle bir problem yaşanmıştır. Bu sorunu çözmek için hata mesajında belirtildiği gibi WebMethod niteliğinin (attribute) MessageName özelliğinden yararlanırız. Bu özellik ile her iki metodu birbirinden benzersiz olacak şekilde ayırabiliriz. Bu nedenle yukarıdaki örnek kod parçasında yazdığımız metodlara ait WebMethod niteliklerini aşağıdaki gibi yeniden düzenlemeliyiz.
[WebMethod(MessageName="CarpForDoubles")]
public double Carp(double x,double y)
{
return x*y;
}

[WebMethod(MessageName="CarpForIntegers")]
public int Carp(int x,int y)
{
return x*y;
}

Bu haliyle web servisi sorunsuz bir şekilde çalışacaktır. Değişikliğin yaptığı etkileri kullandığınız web servisinin wsdl dökümanında daha rahat izleyebilirsiniz.

2 – Aralarında kalıtımsal ilişki olan nesneler söz konusu olduğunda, taban sınıfa (base class) ait nesne örneklerinden oluşan dizi tiplerinin döndürüldüğü web metodlarında uymamız gereken kurallar vardır.

Çok basit olarak aralarında kalıtımsal ilişki bulunan aşağıdaki Sekil, Dortgen ve Ucgen sınıflarını göz önüne alalım. Şekildende görüleceği üzere, Dortgen ve Ucgen sınıfları Sekil taban sınıfından türeyen (derived) sınıflarımızdır.

Sınıflar;
public class Sekil
{
}
public class Dortgen:Sekil
{
}
public class Ucgen:Sekil
{
}

Şimdi bu ilişkiyi kullanan aşağıdaki gibi bir web metodumuz olduğunu düşünelim. Kalıtımın bir etkisi olarak , Sekil sınıfına ait bir nesne örneği, kendisinden türeyen Dortgen ve Ucgen sınıfı tipinden nesne örneklerini taşıyabilmektedir. SekilleriAl isimli web metodumuz aslında Sekil sınıfı tipinden bir diziyi geriye döndürmektedir. Ancak bu dizi kodlardanda görebileceğiniz gibi Dortgen ve Ucgen tipinden nesne örneklerini taşımaktadır.
[WebMethod()]
public Sekil[] SekilleriAl()
{
Sekil[] sekiller=new Sekil[3];
sekiller[0]=new Dortgen();
sekiller[1]=new Ucgen();
sekiller[2]=new Dortgen();
return sekiller;
}

Bu web metodunu çağırdığımızda çalışma zamanında bir istisna(excpetion) alırız. İstisnanın sebebi son derece basittir. Web metodunun çalışma zamanında üreteceği çıktıya göre, web metodundan mutlaka ve mutlaka Sekil tipinden elemanlar barındırdan bir dizi tipi döndürüleceği düşünülmektedir. Bunu web servisimizin WSDL (Web Service Description Language) dökümanında daha kolay görebiliriz.

Dikkat ederseniz, Web metodumuzun geri döndüreceği tip içerisinde tanımlanan ArrayOfSekil kompleks tipi (Complex Type), sadece Sekil tipinden değerler almaktadır. Dolayısıyla Sekil tipinin, Dortgen veya Ucgen tipinden nesne örneklerini barındırabileceğini, dolayısıyla ArrayOfSekil kompleks tipinin yapısı içerisinde bu tiplerinde yer alabileceğini XML tarafında söylememiz gerekmektedir. İşte bu amaçla System.Xml.Serialization isim alanında yer alan Xmlnclude niteliğinden yararlanabiliriz. Web metodumuzu aşağıdaki hali ile güncelleyelim.
[WebMethod()]
[XmlInclude(typeof(Dortgen))]
[XmlInclude(typeof(Ucgen))]
public Sekil[] SekilleriAl()
{
Sekil[] sekiller=new Sekil[3];
sekiller[0]=new Dortgen();
sekiller[1]=new Ucgen();
sekiller[2]=new Dortgen();
return sekiller;
}

Şimdi WSDL dökümanımıza yeniden bakacak olursak ArrayOfSekil isimli kompleks tipin Dortgen ve Ucgen tiplerinide barındırabilecek şekilde tanımlandığını görürürüz.

Diğer taraftan web metodumuz artık başarılı bir şekilde çalışacaktır.

3 – Web metodlarında performans için Caching kullanabiliriz.

Web uygulamalarını geliştirirken performansı arttırıcı tedbirlerden birisi olarak caching mekanizmalarına başvururuz. Dilersek bu tekniği web servislerinde yer alan web metodların döndürdüğü sonuçlar içinde uygulayabiliriz. Web metodların WebMethod niteliğinin (attribute) CacheDuration isimli özelliği saniye cinsinden ön bellekleme süresini belirtir. Bu özellik yardımıyla bir web metodun döndüreceği sonuçları, web sunucusunun ön belleğine alabiliriz. Bu da performans olarak web metodunu kullanan istemcilere hızlı cevap dönmesi anlamına gelmektedir. Nitekim cevaplar hazır olarak ara bellekte tutulan çıktılardan döndürülür.

Basit olarak aşağıdaki kod parçasında, Northwind veritabanında yer alan Order Details tablosundan belirli bir OrderID’ ye ait satırlar bir DataSet nesnesi içerisinde geri döndürülmektedir. CacheDuration burada ön bellekleme süresini 120 saniye olarak belirtmektedir. Buna göre yapılan sorgu sonucu döndürlecek olan veri kümesi web sunucusunun ön belleğinde 120 saniye süreyle tutulacaktır.
[WebMethod(CacheDuration=120)]
public DataSet GetOrderDetails(int OrderId)
{
using(SqlConnection con=new SqlConnection(”data source=LONDON;database=Northwind;integrated security=SSPI”))
{
using(SqlCommand cmd=new SqlCommand(”Select OrderID,ProductID,UnitPrice,Quantity,Discount From [Order Details] Where OrderID=@OrderID”,con))
{
cmd.Parameters.Add(”@OrderID”,SqlDbType.Int);
cmd.Parameters["@OrderID"].Value=OrderId;
SqlDataAdapter da=new SqlDataAdapter(cmd);
DataSet ds=new DataSet();
da.Fill(ds,”Siparisler”);
return ds;
}
}
}

Şimdi bu web metodu barındırdan bir servisi kullanan basit bir console uygulamamız olduğunuzu düşünelim. Console uygulamamızın kodları aşağıdaki gibidir.
static void Main(string[] args)
{
AltinSerivisi.AltinServis altin=new UsingCacheDuration.AltinSerivisi.AltinServis();
DataSet ds=altin.GetOrderDetails(10250);
foreach(DataRow dr in ds.Tables[0].Rows)
{
for(int i=0;i
{
Console.Write(dr[i].ToString()+” “);
}
Console.WriteLine();
}
}

İlk olarak uygulamamızı çalıştıralım ve elde ettiğimiz değerlere bakalım. Daha sonra Order Details tablosunda 10250 numaralı siparişe ait bilgilerde ufak bir değişiklik yapalım. Örneğin Quantity değerini 10’ dan 20’ ye çıkartalım. 120 saniyelik süre dolmadan metodumuzu tekrar çağıracak olursak, Quantity değerinin halen daha 10 olarak geldiğini görürüz. Bunun sebebi verinin o an için web servisinin bulunduğu web sunucusunun ön belleğinden geliyor oluşudur. Elbetteki 120 saniyelik bu önbellekleme süresi sonunda Quantity değerinin yenilendiğini görebiliriz. Ön belleğe alma işlemi bu örnekte görüldüğü gibi sadece parametrik bazda değil, parametresiz web metodları içinde geçerlidir.

4 – Web Servisi tarafında security için en basit haliyle Windows Authentication’ ı kullandığımızda istemci tarafında da yapmamız gerekenler vardır.

Web servisleri, web uygulamalarında olduğu gibi bir web sunucu üzerinden yayımlanırlar. Bu anlamda bakıldığında bir web uygulaması için söz konusu olan authentication seçeneklerini, web servisleri içinde ele alabiliriz. Özellikle windows tabanlı doğrulama göz önüne alındığında istemci tarafında çalışan uygulamaların, güvenlik bilgilerini doğru bir şekilde gönderebiliyor olması gerekir. İlk olarak doğrulama metodu Basic Authentication olarak ayarlanmış bir web servisimiz olduğunu düşünelim. IIS tarafında ilgili web servisimiz için gerekli güvenlik ayarlarının aşağıdaki şekilde görüldüğü gibi olması gerekmektedir.

Şimdi istemci tarafında bu web servisini kullanacak olan uygulamamızı göz önüne alalım. Web metodumuzu çağırabilmemiz için öncelikle bu servise istemci tarafından bir güvenlik belgesi göndermemiz gerekir. (Credential) Bu güvenlik belgesini taşıyacak olan tip ICredential arayüzüdür. İstemci tarafında bu bilgiyi hazırlayabilmek için ICredential arayüzünü (Interface) uygulayan NetworkCredential tipini kullanabiliriz. Aşağıdaki kod parçasında GoldServis isimli web servisimizdeki GetOrderDetails isimli metodu çağırmadan önce, servisi çalıştırmak için gerekli credential bilgisinin nasıl eklendiği gösterilmektedir.
AltinSerivisi.AltinServis altin=new UsingCacheDuration.AltinSerivisi.AltinServis();
System.Net.NetworkCredential credential=new System.Net.NetworkCredential(”admin”,”admin1234″);
altin.Credentials=credential;
DataSet ds=altin.GetOrderDetails(10250);
foreach(DataRow dr in ds.Tables[0].Rows)
{
for(int i=0;i
{
Console.Write(dr[i].ToString()+” “);
}
Console.WriteLine();
}

Eğer istemci uygulama doğru şifre ve kullanıcı bilgisini gönderemez ise HTTP 401 : Access Denied istisnasını alırız. Ancak doğru güvenlik bilgilerinin gönderilmesi sonucunda web metodu başarılı bir şekilde çalıştırılacaktır.

Bu makalemizde kısaca web servislerini kullanırken dikkate alabileceğimiz bir kaç noktaya değindik. Aynı isimli aşırı yüklenmiş metodların kullanılma tarzını, web metodlardan geriye dönen kompleks tiplerin içerisinde kalıtım ilişkisi olduğu takdirde bunu Xml tarafınada bildirmemiz gerektiğini, performans için caching’ i kullanabileceğimizi ve sunucu tarafında bir authentication olması halinde istemci için gerekli username ve password bilgilerinin nasıl hazırlanıp gönderilebileceğini incelemeye çalıştık. Elbetteki web servisleri ile ilgili dikkate değer daha pek çok nokta var. Örneğin SoapExtension yardımıyla soap mesajlarının şifrelenmesi gibi. Bu ve benzer diğer konulara ilerki makalelerimizde değinmeye çalışacağız. Bir sonraki makalemizde görüşünceye dek hepinize mutlu günler dilerim.
Yazan:Burak SelimYurt

Popularity: 2% [?]

Firefox’u hızlandırmak

Posted by Writer On Aralık - 15 - 2008

FireFox, normal bir web sayfasını açmak için, ilgili siteye bilgi paketi göndermektedir. Bu ipucumuzda, bu özelliği devre dışı bırakan “Pipeling” seçeneğini aktif edeceğiz. Bu sayede, bilgi paketi göndermekle zaman harcamayan FireFox, direk olarak sayfayı açmaya çalışacaktır. Böylece zaman’dan kazancımız olacaktır.
Firefox 1.0 da Pipeling özelliğini aşağıdaki şekilde aktif hale getirebiliriz:
1. Adres çubuğuna “about:config” yazıp “Git” diyoruz.
2. Arama kısmına “pipelining” yazarak, işlem süremizi kısaltıyoruz.
3. Aşağıdaki seçenekleri “True” yapıyoruz. Bu işlem için parametreler üzerine çift tıklamak kafidir.
* network.HTTP.pipelining
* network.http.proxy.pipelining
4. Sorgulama değerini 30 ile sınırlandırıyoruz. Bu işlem için;
* network.http.pipelining.maxrequests
değişkenin olduğu satırı buluyoruz. Daha sonra değişken üstünde fare ile sağ tıklayıp, açılan menüden “Değiştir” seçeneğini seçerek, açılan kutuya 30 yazıyoruz.
5. Aynı menüde fare ile boşlukta sağ klikleyip Yeni -> Integer diyoruz. Açılan menüye:
* nglayout.initialpaint.delay
yazarak kaydediyoruz. Değer olarak da 0 (sıfır) atıyoruz. Bu sayede bekleme süresini “0″ olacak şekilde tanımlıyoruz. Böylece, internette gezinme hızımız daha da artıyor.

 

Popularity: 2% [?]

SQL ‘de Joinler

Posted by Ahmetozger On Aralık - 9 - 2008

    SQL Sorgulama dilinde birden fazla tabloyu birleştirme yada ilgili başka tablodan veri çekmek için Inner, Outer, Left, Right, Cross Join’lar kullanılır.

            iNNER JoiN :
 Her iki tabloda da, birleştirdiğimiz alana göre, mevcut olan kayıtları getirir.inner join ile hangi tablo ile hangi tabloyu birbirine bağlamak istiyorsak o tabloların bağlantıları varsa ki onlarıda Idlerden anlıyoruz varsa inner join ile bağlantıyı gerçekleştirebiliriz.inner joinde eşit olan kayıtlar döner.inner join ile 7 tabloya kadar birlestirme yapilabilir.sonuc kümesinde eşleşen kayıtarı bize getirir. İlişkisel veritabanının en temelinde birden fazla tablo üstünde birlikte işlem yapabilmek yatar. Bu sayede verilerin tekrarlaması önlenmiş olur ve sonuçta veri yönetimi kolaylaşır.
Örnek: –speedy expeeres ile taşınmış siparisleri gösterin
select * from orders
inner join shippers on Shippers.shipperID=orders.ShipVia
where shippers.CompanyName=‘Speedy Express’
 
         OUTER JoiN :
Sık kullanılmazlar.iç içe select ifadeleriyle oluşturulan sorgulardan performans bakımından daha hızlı çalışır.Left outer join ve right outer joinlerdir.Left ve right outer join ifadeleri ilişkili alanda birbiriyle eşleşenlerin yanında eşleşmeyen kayıtlarıda listeler.Join koşuluna uymayan satırlar NULL(boş) değer olarakgörüntülenirler…
Left [ outer ] join :
ilk tablodaki tüm verileri görüntüler ve diğer tablo ile eşleşmeyen alanlar NULL(boş) değer gösterilir.iki tablo arasında ilişkili sorgu yapılırken ,Left outer join kullanıldığında,birinci tablodaki tüm kayıtlar getirilir ve ikinci tabloda ise sadece ilişkiye göre uygun kayıtlar sağ tarafına eklenir
Söz dizimi:
select <sutün_ad(lar)ı>from <ilk_ tablo>
Left join<ikinci _tablo> on <ilk_tablo>.<anahtar_alan>=<ikinci_tablo>.<anahtar_alan>
Örnek: Çalışanın tam adı ve müşterilerden aldığı siparişler ve tarihleri gösterelim :
select Employees.FirstName +‘ ‘+ Employees.LastName as Name,
OrderID,Orderdate
from employees
left join orders on Employees.EmployeeID=Orders.EmployeeID
sonuc : sorgu sonucu 830 kayıt geldi
Steven Buchanan            10248    1996-07-04 00:00:00.000
Michael Suyama              10249    1996-07-05 00:00:00.000
Margaret Peacock          10250    1996-07-08 00:00:00.000
Janet Leverling 10251    1996-07-08 00:00:00.000
Margaret Peacock          10252    1996-07-09 00:00:00.000
Janet Leverling 10253    1996-07-10 00:00:00.000
     RiGHT [ OUTER ] JOiN :
İki tablo arasındaki ilişkili sorgu yapılırken ,right outer join kullanıldığınfa,ikinci tablodaki tüm kayıtlar getirilir.Birinci tabloda ise sadece ilişkiye göre uygun kayıtlar sağ tarafına tarafına eklenir .ikinci tablodaki tüm kayıtları listemek istendiğinde right join kullanılır.Bu durumda ise birinci tablodaki eşleşmeyen kayıtlar NULL(boş) olarak görüntülenir.
Söz dizimi:
Select<sutün_ad(lar)ı>from <ilk_tablo>right join <ikinci_tablo>
On <birinci_tablo>.<anahtar_alan>=<ikinci_tablo>.<anahtar_alan>
Örnek: Tüm müşteriler ve verdikleri siparişlerin tarihlerini ve hiç siparişi olmayan müşterilerin tarih alanı null(boş) olarak görüntülenecektir
Select companyname,customers.customerID,orderdate
From customers
Right join orders
On customers.customerID=orders.custemerID
Sorgu sonucu :
Vins et alcools Chevalier    VINET             1996-07-04 00:00:00.000
Toms Spezialitäten         TOMSP                1996-07-05 00:00:00.000
Hanari Carnes                   HANAR                1996-07-08 00:00:00.000
Victuailles en stock         VICTE                 1996-07-08 00:00:00.000
Suprêmes délices           SUPRD              1996-07-09 00:00:00.000
Hanari Carnes                  HANAR             1996-07-10 00:00:00.000
Chop-suey Chinese        CHOPS              1996-07-11 00:00:00.000
    
                                               CROSS JoiN : (Kartezyen Çarpım)
İlişkili tablolar arasında olası tüm eşleşmeleri listeler.Belirli ortak bir alan belirtilmesine gerek yoktur.Her iki tabloyu çapraz olarak birleştirir.Yani,ilk tablodaki her bir kayıt için ikinci tablodaki her satır sonuç olarak döner.Tabloların birbiri ile arasında bir ilişki tanımlamadan ilişkisel sorgu yapılırsa,kartezyen çarpımı bulunur.Bu birinci tablodaki her bir kayıt ile ikinci tablodaki her bir kayıt ilişkilidir demektir ve ilişkisel veritabanın doğasına terstir.Birinci tablodaki kayıtların herbirisini ikinci tablodaki kayıtlara eşleştirilir.Kartezyen çarpımını alır.A tablosunda 3 kayıt olsun B tablosunda 5 kayıt olsun ,herbir kayıt diğer tablonun herbir kaydı ile eşleşeceğinden 3X5=15 kayıt döndürür.
Örnek : aşağıdaki örnekte üreticilerin çalışabilecekleri tüm olası gemi şirketlerini görmemizi sağlar.shippers tablosu 3 kayıt ve suppliers (üreticiler) tablosu 29 kayıt olduğundan ,sonuç kümesinde 87 satır görünecektir( 3X29=87)
select suppliers.companyname,shippers.companyname
from suppliers
cross join shippers
sonuç kümesi :
companyname                        companyname
Exotic Liquids                                                                    Speedy Express
New Orleans Cajun Delights                                    Speedy Express
Grandma Kelly’s Homestead                                     Speedy Express
Tokyo Traders                                                                 Speedy Express
Cooperativa de Quesos ‘Las Cabras’                       Speedy Express
Mayumi’s                                                                          Speedy Express
Pavlova, Ltd.                                                                    Speedy Express
87 tane sorgu kümesi için satır oluşmuştur.

                       Bilgi Paylaştıkça Büyür . . .

                Başka Makalelerde Görüşmek dileğiyle…

Popularity: 3% [?]

SQL Giris

Posted by Ahmetozger On Aralık - 9 - 2008
SQL Nedir= structured Query Language (Yapılandırılmış(Yapısal) Sorgulama DiLi),bir veritabanı sorgulama dilidir.Veritabanı(database) bir programcının vazgecilmezidir.Verilerin tutulduğu yer,saklandığı yer,resimlerimizi,müziklerimizi,videolarımız aklımıza gelebilecek tüm bilgilerimizin saklandığı ve tutulduğu yer veritabanıdır(database’dir).SQL kodları vürgille ayrılır,hepsi değil tabiki peş peşe olan kodların arasına konulur,SQL’de herşey tek tınakla yazılır
SQL managament studio açmadan önce SQL server Configuration Managere bir kısa bilgi iile hafızalarımızı tazeleyim,SQL için ilk adımlar atmış olalım,SQL çok geniş kapsamlı bir dildir.
SQL Server Configuration manager—server servislerin SQL için en önemli yeridir,
SQL Server intergration services –Farklı bilgisayarlara bağlanmamızı ve görüntülememizi sağlar,
SQL Server Fulltext Search—Çok büyük metinlerde arama yapmamızı sağlar,database oluştururken belirtiriz.
SQL Server (SQLEXPRESS) ile SQL Server (MSSQLSERVER)—Sunucunun işletim sistemimizde çalışmasını sağlar,Running durumunda iken stop yaptıkdan sonra SQL server çalıştırmak istesek hata alırız.yeniden running durumuna getirmemiz gerekir
SQL Server Analiz = kendi başına bir olap gibi,Olapda diyebiliriz.Olap nedir diye merak eederseniz     www.google.com girip ,olap nedir derseniz (google amca size:o) ) birçok cvp bulur ,Olap iki satırla anlatılacak şey değildir!
SQL Server Reporting Services—SQL üzerinde istediğimiz şekilde raporlarma işini yapar,çoklu kullanıma müsaittir,herkes bu verileri çekebilir.
SQL Server Browser—Kendi sistemimizi görmemizi sağlayan browserdir.
SQL Server Agent – Bağlanmak istediğimiz makinenin ip numarasından ve bağlanmak istediğimiz SQL için belirtilen kullanıcı adı ve kullanıcı şifresi ile bağlanmamızı sağlar ve yapılmasını istediğimiz işelrimizi kriterler doğrultusunda çalışmasını sağlar.
                               SQL dil olarak , T_SQL—Transact SQL kullanır (yapısal sorgu dili)
SQL yazim dili olan TSQL ,kendi içinde TSQL kendi arasında 3’e ayrılır:
1-) DML—(Data Manipulation Language) : Veri işleme dili;
a) Select – Veri ; Seçmek,görüntülemek,görüntüle
b) insert –Veri Eklemek,
c) update – Verileri güncellemek,
d) Delete – Verileri silmek,
2-)DDL(Data Defination Language) : Veri Tanımlama Dili,
a) Create – Yeni birşeyler oluşturmak,
b) Alter – Var olan veriler üzerinde değişiklik yapmak,değiştirmek
c) Drop—Tablo silmek,
3-) DCL ( Data Control Language) Veri kontrol Dili,
a) Grant – Kullanıcıya yetki vermek,kullanıcıyı yetkilendirmek
b) Deny –Kullanıcı,grup veya rolü herhangi bir eylem için engeller
c) Revoke—Daha atanmamış olan yetki ve engeli kaldırır.
Bazı kısa notlardan hatırlatmalar:
Authentication—Doğrulama,
Windows Authentication—windowsda oturum doğrulama
Autogrowth : otomotik boyutlandırma,
Percent : Yüzde demek,
Size=boyut,
Log data file( ldf ): Kayıt dosyası,
Master data file( mdf ):Database üzerinde yapılan tüm işlemlerin kayıtlarını tutar
Secondeny data file( ndf ) : ikinci veri (data) dosyası
Mdf ve ldf dosyaları farklı yerlerde olabilirler
Restricted file growth(MB) : Belirtilen değerler doğrultusunda bize uyarı verir ama siteyi kapatmamasını sağlar,site kapanmaz
                                     DATABASE oluşturma :
Önce database isim gerekir,normalde arayüzlerden new database dediğimizde direk açılan sayfadan database isim verip ,kriterlerini ayarladıkdan sonra sytem databaseden miras alarak yeni database oluşturur,birde kodlarla oluşturalım :
Create database veritabani—-oluştur dedik neyi yeni bir database(veritabanını )[yeni bir db olustur]
On
(–burada bir db neleri olur onları yazıyoruz,
Name=’veritabani1’,
Size=5,
Filename=’C:\yeniklasor\veritabani1.mdf’,–veri tabanının mdf ve log dosyalarının olusturacagımız yolu gösterdik,C’nin icinde yeni bir klasörün içine veritabanı adında bir mdf dosyası oluştur dedik.
Filegrowth=40%–belirtilen (mb )boyutu dolduğunda otomotik yüzde yirmi artır dedik,yüzde rakamdan sonra geliyor,dikkat edilmesi gerekir.
Maxsize=100—veritabanımızın maxsimum boyutunu belirliyoruz
)
Log on—simdide log dosyasını olusturalım
(
Name=’veritabani2’,
Size=2,
Filename=’ C:\yeniklasor\veritabani2.ldf’
Filegrowht=20%,
Maxsize=30
)
–bu şekilde bir veri tabanı oluşturduk ,ya birden fazla veri tabanımız varsa onlar üzerinden verilerin sonuçlarını bir yerden tek almak istersem? İki veri tabanı veya daha fazla veri tabanlar arasında bir bağ olmadığına göre,nasıl yapacağız?Veri tabanları arasında veri alış verişi yapamayız,ancak bir yardımcı dosya olursa yapabiliriz( ndf dosyası )filenameleri birleştirerek
Örneğin bir şirketiniz var ;Biri Ankara’da,Biri İstanbulda başka yerlerde şubeleriniz var ,patron  olarak şubelerdeki hesapları kontrol etmek istiyorsunuz,bu nasıl olacak? Bunu kodlarla yazalım
Veri tabanları arasında ortak verileri kullanmamızı sağlar.
Alter database veritabanı –değişiklik yapacağımızı alter dedik,
Add file—yeni bir dosya ekle,çünkü ortak veriler kullanmak için
(
Name=’secondaryDataFile’,
Filename=’C:\yeniklasor\secondaryDataFile.ndf’,–aynı dosyaların tutulduğu adrese bu yeni dosyayıda ekle dedik
Size=5,
Filegrowth=20%,
Maxsize=50
)
Bu şekilde veritabanı oluşturup,ortak kullanabileceğiz
 
TABLO OLUSTURMA ( deyince hemen aklımıza create table tabloya verdiğimiz isim geldi dimi)
Bir databasenin birden fazla tablosu olabilir,maxsimum tablo sayısı byte kadardır 255 dir
Bir tabloyu çağırabilmek için ,içindeki bilgilere ulaşabilmek için,birbirinden farlı numaralara ihtiyacımız vardır,bu işide SQL de primary identity key(birincil anahtar,benzersiz kayıt numarası ) yapar ve buna ihtiyaç duyarız.
Tablo özelliklerini belirtirken bosluk kullandığımızda SQL onu otomotik []—köşeli paranteze alır ve onu bir bütün olarak kabul eder ve çalışır, yalnız kodlarla sorgulama yaparken köşeli parantezleri biz yazıyoruz,unutma ihtimalimiz ve karışıklık olması söz konusu olduğundan ,tablolara isimlendirme yapılırken bosluk kullanılmaması önerilir.
Önerilen isimlendirme ise birlestirerek yazmak veya birlestirilen kelimenin BasHarfleri buyuk yazılarak birlesik yazilmalari seklinde önerilirler. Arayüz ile hazılanması basittir .
Database oluşturduktan sonra Arayüzden hemen table gelip sağ tıklayıp new table dediğimizde açılan pencereden isim ister(column Name) ,tipi ne olacak diye(Data Type) vede boş geçilsin mi,geçilmesin mi diye(allow nulls ),tablonun adı ile primary keyin o tabloya ait olduğunu belirten yani isim aynı olursa ,ortalık karışmaz,Calisanlar tablosu ve CalicanID gibi ,örnekle daha iyi anlaşilacak ama mantığını anlatmaya çalışdım son olarak işimiz bitti bunun otomotik artış yapabilmesi için column properties kolon özelliklerinden) identity specification(otomotik artış)   açarak,identity increment (Kaçdan başlayacak) ve identity seed(kaçar kaçar) artacaklarını belirtiyoruz,bize kalmış orası.birden başla birer birer artır dedik,tablomuz hazır ,
Ya kodla yazabilirmiyiz? Hadi yazalım
Create tablo urunler–(taabloya verilen isim)
(
UrunID                   int not null identity(1,1)primary key,–not null boş geçilmesin demek,
UrunAdi nvarchar(40) not null,
Urun nvarchar(30),
UrunAdeti tinyint not null,
UrununRengi nvarchar(20)
)
Tablolarımızı kodlarlada olusturduk ,arayüzdende olsturdk,
Sorgular kaldı
Select –görüntülemek ,göstermek,seçmek demiştik,hadi biraz işlemler yapalımda ne işe yaradığını daha yakından öğrenelim .Bir select ifadesinin çalıştırabilmemiz için kod yazma bölümüne geçmemiz gerekir yani New Query’i tıkladığımızda kodlarımızın yazıp çalıştırdığımız yer demektir. Şimdi select ifadesini kullanarak sorgular çekmeye başlayalım;
Select * from customers –dediğimizde müşteriler tablosunun bütün kolonlarını getir ,
Select update(‘ahmet’) as ozger—girilen metnin büyük harflerle yazılmasını sağlıyor
Select lower(‘BİLGEADAM’) as ogrenciler –girilen metnin küçük harfle yazılmasını sağlar.
Select substring(‘Bilgeadam’3,4) as Goster—girilen metnin kaçıncı krakterden başlasın,kaçtane krakter göstersin ve index numarası dahildir(yani en son sayılan index numarası dahildir bir sonrakine)
Select len(‘ahmetözger’) – girilen metnin kaç krakter olduğunu gösterir,uzunluğunu belirtir
Select getdate() –Bize tarih ve saati verir
Select year (getdate())—Bize o zamanın yılını döner ,o yılın tarihinin zamanının yılını döner
Select month(getdate()) –bize o tarihin ayını döner
Select day ( getdate()) – bize o tarihinin gününü döner,
Select   dateadd(year,5,’02.07.1982’)—belirtiğimiz tarihe eklemek istediğimiz tarihi yazdık ve ekledik ,önce ay ,sonra gün, sonra yıl yazıyoruz(5 ise eklemek istediğimiz yıldır)
Select dateadd(month,22,getdate())—okunusu aynen söyle,şuanki aylara 22 ay ekle ve bana göster, yani
Select dateadd(day,222,getdate())—şuanki zamana şu kadar gün ekle (222—yerine istediğimizi yazabiliriz)
Şimdiye kadar ekleme işlemi yaptık ,ya çıkarma işlemi yapmamız gerekirse?
O zaman bize bir datadiff (gerekli oldu,suanki zamandan belirtiğimiz değerleri çıkar)
Select datediff(day,’07.25.1982’,getdate()) as görüntüle—şu şekilde yapabiliyoruz(gün için)
Select datediff(month,’07.25.1982’,getdate()) as görüntüle —şu şekilde ay için yapabiliyoruz (ay için)
Select datediff(year,’07.25.1982’,getdate()) as görüntüle —buda son olarak Yıl için(yıl için)
Hadi birde hesaplama işlemlerini yapalım SQL’de

Select 2+4 as Toplama,2*4 as Carp,2/4 as Böl,2-4 as Cikar –SQL bu şekilde dört işlem yapılabilir.

 

                            Ahmet Özger 

                         Yazılım Uzmanı Adayı (  MCPD )

                         Bilgi Paylaştıkça Büyür . . .
 
Başka Makalelerde Görüşmek dileğiyle…

Popularity: 2% [?]







Maurers