|
|
#1 (permalink) | |||||||||||
|
VİSUAL C++ 6.0’I KULLANMAK
2.1. Visual C++ 6.0’a Başlamak Bu ilk bölümde Visual C++ 6.0 derleyicisinin temel özelliklerini tanıtacak ve bazı temel programlar yazarak işe başlamayı sağlayacaktır. Visual C++’ye başlamak amacıyla bilinmesi gereken temel özelllikler şunlardır : · Visual C++ ortamına kısa bir göz atış ve bu ortamda çalışmak · Konsol modunda basit bir programı derlemek · Bir Windows uygulaması oluşturmak için AppWizard’ı kullanmak Visual C++ Windows programcılığı için geliştirilen Microsoft araçlarından en son C++ derleyicisidir. Visual C++ paketi bir derleyiciden daha fazlasını içerir; Windows uygulamaları yaratmak için gereken tüm kütüphanelere, örneklere ve dakümana sahiptir. Microsoft, Windows uygıılamaları oluştıırmak için gerekli tüm kaynakları tek bir araç içine yerleştirerek uygulama oluşturmayı öğrenmeyi kolaylaştırır. Tümleşik Geliştirme Ortamı IDE (Integrated Development Environment – Tümleşik Geliştirme Ortamı) derleyici, debugger ve uygulama oluşturma araçlarını içeren bir programdır. IDE (Tümleşik Geliştirme Ortamı) Developer Studio’dur. Developer Studio geliştirme araçlarını ve Visual C++ derleyicisini birleştirmek için kullanılır. Developer Studio’dan ayrılmadan bir Windows programı oluşturabilirsiniz. Visual C++ ve Developer Studio, Windows programları oluşturmayı çok kolaylaştıran tam tümleşik bir ortam oluşturur. MFC sınıf kütüphanesiyle birlikte Developer Studio’nun parçaları olarak sunulan araçları ve sihirbazları kullanarak birkaç dakika içerisinde bir program yaratabilirsiniz. Bu kitapta örnek olarak kullanılan programların çoğu bir sayfadan az ilave bir kaynak kodu gerektirir. Ancak, bu programlar MFC sınıf kütüphanesinin parçası olan bin­lerce satırlık kaynak kodu kullanırlar. Ayrıca projenizi sizin için idare eden AppWizard ve ClassWizard’dan da faydalanırlar. Programa Giriş Konsol-modu uygulama, DOS penceresinde çalışan karakter tabanlı bir programdır. İlk Visual C++ programı için Hello World yazısını görüntüleyen konsolmodu bir uygulama oluşturacaksınız. Konsol-modu program hazırlamak genellikle Windows uygulaması oluşturmaktan daha kolaydır ve bu örnek size Visual C++ ile hazırlanan bir programı oluşturma ve çalıştırma için gerekli adım­ları gösterecektir. İlk Program Başlangıcı Visual C++ programının yazımındaki ilk adım bir proje oluşturmaktır. 1. Ana menüden File > New komutunu seçin. New iletişim kutusu görüntülenir. 2. Projects sekmesini seçin ve liste kutusundan Win32 Console Application ikonuna tıklayın. 3. Proje adı olarak Hello girin; projeniz için bir yer otomatik olarak girile­cektir. 2.1.1. Kaynak Dosyası Oluşturma Bütün C++ programlarının en önemli parçaları kaynak dosyalardır. Kod 2.1’de verilen örnek program çok kısa olmasına rağmen tüm C++ programlarında mev­cut olan parçaların bir çoğunu içermektedir. Kod 2.1. Basit Bır Konsol-Modu C++ Programı // Hello World örneği #include <iostream> using namespace std; int main( ) { cout <<“Hello World!” << endl; return ( ); } Yeni bir kaynak dosyası dokümanı açın ve Kod 2.1’de gösterilen kodu aynen yazın. Daha önce ele alındığı gibi, yeni bir kaynak dosyası açmanın iki yolu vardır: · Araç çubuğunda New Text File ikonuna tıklatın. · Ana menüden File > New komutuna tıklayın ve Files sekmesinin altındaki C++ Source File’ı seçin. Bir proje açıkken yeni bir dosya açarsanız, dosyayı otomatik olarak o anda açık olan projeye ekleme şansına sahipsiniz. Bu seçenekten yararlanmak için Add to Project onay kutusunun işaretli olduğundan emin olun ve dosya için iletişim kutusunda bir isim girin (bu örnekte HeIlo.cpp adını girin). C++ kullanırken büyük-küçük harf ayrımının önemli olduğunu unutma­yın. Örneğin, derleyici için MAIN ve main kelimeleri farklı iki kelimedir. cout gibi bir kelimeden önceki boşluk sayısı derleyici için önemli değil­dir. Boşluklar genelde programları daha kolay okunabilir hale getirmek için kullanılır. Yeni kaynak dosyasını yaratmak için araç çubuğunun New Text File ikonunu kullandıysanız, Visual C++’ın sentaks belirginleştirme ve otomatik-tamamlama özelliklerinden yararlanmak için dosyayı hemen kaydetmelisiniz. Bunun sebebi, Developer Studio editörünün dosya tipini belirlemek için dosyanın uzantısını kullanıyor olması ve dosya kaydedilene kadar ne tip bir dosya üzerinde çalışıldığını anlamamasıdır. Kaynak Dosyayı Kaydedin Kod 2.1’deki programı girdikten sonra kaynak dosyayı projenizin dizinine Hello.cpp adıyla kaydedin. Editörün içeriğini kaydetmek için araç çubuğundaki Save ikonuna tıklayın. Save ikonu küçük bir diskete benzer. Ayrıca Ctrl+S tuşla­rına basabilir veya File menüsünden Save komutunu da seçebilirsiniz. Daha önceden kaydedilmiş bir kaynak dosyayı kaydettiğinizde, mevcut dosya e­ditörün o andaki içeriğiyle güncellenir. Yeni bir dosya kaydettiğinizde Save As ile­tişim kutusunu görürsünüz. Yeni kaynak dosya için burada bir yer ve dosya ismi seçmenız gerekir. Bir dosyayı yeni bir isimle kaydetmek için File menüsünden Save As komutunu seçin. Daha önce açıklandığı gibi Save As iletişim kutusunu kullanarak dosyanın yeni yerini ve adını belirleyin. Kaynak dosyayı henüz projeye eklemediyseniz şu adımları izleyin: 1. Ana menüden Project > Add to Project > Files komutunu seçin. Bu komut Insert Files into Project iletişim kutusunu görüntüleyecektir. 2. Hello.cpp kaynak dosyasını seçin ve OK düğmesine tıklayın. Visual C++’da C++ kaynak dosyalarınızın uzantısı .cpp olmalıdır. Bu saye­de Developer Studio kaynak kodunuzu gerektiği gibi derleyebilir ve sentaks belirginleştirme işlemi yapılabilir. Diğer dosya tipleri de standart uzantılara sahiptir. Örneğin, C kaynak dosya­ları .c uzantısını kullanır. Diğer dosya uzantıları yeri geldikçe tanıtılacaktır. Hello Projesini Derleyin Visual C++ projenizi derlediğinizdeprogramınızın dosyaları çalıştırılabi­lir bir program haline getirilir. Ana menüden Build > Build Hello.exe komutunu seçerek (veya F7 tuşuna basarak) Hello projesini derleyin. Kod 2.1’i doğru olarak girdiyseniz proje hatasız derlenir ve durum penceresinin son rasında şu yazar: HELLO.exe - 0 error(s), 0 warning(s) Şekil 2.4. New iletişim kutusunda HelloMFC projesini oluşturma Projenizi araç çubuğundaki Build düğmesine tıklayarak da derleyebilirsiniz. Build durum penceresinde hata veya uyarı görünüyorsa büyük olasılıkla kaynak dosyada bir hata vardır. Kaynak dosyanızda eksik noktalı virgül, tırnak işaretleri veya parantez olup olmadığını kontrol edin. Liste klavye komutlarından sadece bazılarını içermektedir. Tam listeyi görmek için Help menüsünden Keyboard Map’i seçin. Şekil 2.1’de gösterildiği gibi klavye komutları görülmektedir. İlk C++ Programınızı Çalıştırın Hello programını çalıştırmak için bir DOS penceresi açın ve projenizin dizinine geçin. Varsayılan değer olarak bu dizin C:\ Program Files \ Microsoft Visual Stu­dio \ MyProiects \ Hello dizinidir. Bazı makinelerde dosya isimleri kısaltılmış olabilir, bu nedenle makinenizde dos­yanızın adresi şöyle görünüyor olabilir: C:\progra~1\micros~1\myproj~1\hello DEBUG adında bir alt dizin göreceksiniz. Visual C++ IDE tüm yürütebilir ve ara dosyaları bu dizine yerleştirir. DEBUG dizinine geçin ve DOS komut satırında Hello.exe programını çalıştırın. Program yüklenir ve Hello World! yazısını görüntüler. Programın tüm yaptığı budur. Bu kitapta örnek olarak kullanilan tüm konsol-modu veya DOS programları Hello.exe gibi derlenip yürütülmelidir. Her zaman bir proje yaratacak, projeye dosyalar ekleyecek ve sonra projeyi derleyeceksiniz. Uygulama derlendikten sonra DOS’a geçer ve programı yürütürsünüz. Şekil 2.7. HelloMFC ana penceresi 2.2. Program Yazımı Bır önceki bölümde basit programlar oluşturdunuz. Artık C++ programlarının nasıl çalıştıkları hakkında daha fazla ayrıntılı bilgi edinmemiz gerekir. Basıt C++ programları bile tüm uygulamalarda ortak olan temel kavramları içerirler. Bu bömlümde öğreneceğiniz konular şunlar : · Bir C + + programının temel öğeleri, · Bir C++ programında standart giriş ve çıkışı, · C++ önişlemcisi (preprocessor). Bu bölümde, kullanıcıdan bir giriş alıp girişi tekrar ekranda gösteren basit bir C++ programı oluşturacaksınız. 2.2.1. Programlamanın Temel Öğeleri Bilgisayar programları komutlardan ve verilerden oluşur. Komutlarbilgisayara toplama ve çıkarma gibi işleri yapmasını söyler. Verilerise toplanılan veya çıkarılan sayılar gibi bilgisayarın üzerinde işlem yaptığı şeylerdir. Genelde program çalıştıkça komutlar değişmez. Öte yandan veriler, program çalıştıkça de­ğişebilir. |
|||||||||||
|
|
|
|
#2 (permalink) | |||||||||||
|
Temel C++ Veri Tipleri
C++ dili çok sayıda temel veritipi sunar. Diğer birçok programlama dilinde oldu­ğu gibi bu veri tipleri programınızda kullanılan verileri saklamak ve hesaplamak için kullanılır. Daha sonraki bölümlerde kendi oluşturacağınız daha karışık veri tipleri için bu temel veri tiplerini başlangıç noktası olarak kullanacaksınız. C++, veri değişkenlerinizin tutarlı ve doğru olarak kullanılmasını garantilemek için güçlü bir tip sistemine sahiptir. Biı sayede derleyici programınızdaki hataları program çalışırken değil derlenirken bulabilir. C++’da bir değişken kullanılmadan önce aşağıdaki gibi bildirilmeli ve tanımlanmalıdır: int myAge; Bu satır myAge adında bir değişken bildirimi yapmakta ve tamsayı (integer) olarak tanımlamaktadır. Bildirim myAge ismini derleyiciye tanıtır ve ona özel bir anlam i­liştilir. Böyle bir tanım aynı zamanda derleyiciye bellek tahsis etmesini ve değişkeni ya da başka bir nesneyi oluşturmasını söyler. Visual C++ derleyicisi myAge tanımını gördüğünde aşağıdakileri yapar: · Bir tamsayıcı için yeterli miktarda bellek ayırır ve myAge ismini bu alanaişaret etmek üzere kullanır. · myAge isminin başka bir değişken için kullanılması için saklar. · myAge kelimesi her kullanıldığında bunun bir tamsayının kullanılış biçimiyle tutarlı olmasını garantiler. Tek bir satrda birden fazla değişken tanımlamak mümkündür ama çoğu programa stil nedeniyle her seferinde tek bir değişken tanımlamayı tercih eder. Kay­nak dosyanızın daha sıkışık olmasını istiyorsanız aşağıda görüldüğü gibi değiş­kenlerinizi bir virgülle ayırabilirsiniz: int myAge, yourAge, maximumAge; Tip Güvenliğini Anlama Bazı diller değişken bildirimi yapmadan değişkenleri kullanmanıza imkan tanır. Bu durum çoğu zaman izlenmesi veya onarılması güç sorunlara yol açar. C++ kullanırken bütün değişkenleri kullanmadan önce tanımlamalısınız. Bu özellik derleyiciye birçok genel hatayı yakalama şansı verir. Program derlenirken hataları yakalama yeteneğine bazen tip güvenliği adı verilir. Tip güvenliğini derleyicinin güvenliğini sağlamak için kullandığı bir zorlama olarak düşünebilirsiniz. Örneğin, bir tarnsayı (int) kullanılması gereken yerde başka bir tip kullanırsanız derleyici ya hata verir ya da değişkeni beklenen tipe çevirir. Çe­virme yapmak mümkün değilse, derleyici hata üretir ve program derlenmeden önce hatayı düzeltmeniz gerekir. Örneğin, karakter değerleri normalde 0 ile 127 arasındadır ve char tipi değişkenIerde saklanırlar. Visual C++’da char tek sekizliden oluşan bir değişkendir ve tüm karakter değerlerini saklayabilir. Derleyici char tipi bir değişkene 127’den büyük bir sayı atamaya çalıştığınızı fark ederse bir uyan mesajı vererek bundan şikayetçi olur. Kod 2.2 char tipi bir değişkende olması gerekenden daha büyük bir değer saklamaya çalışan bir program örneğidir. Kod 2.2. Derleyıcı Tarafından Yakalanabilecek Bir Sorun Örneği # Include <iostream> using namespace std; // Bu program bir derleyici uyarısı oluşturacaktır int main( ) { char distance = 756; cout << “ The distance is ” << distance << endl; return 0; } Derleyici tarafından yakalanan bir tip uyumsuzluğu örneği görmek için, tek kaynak dosyası Kod 2.2 olan konsol-modu bir proje oluşturun. Bunun için “Visual C++ 6.0’ı Kullanmak”adlı bölümde anlatılan adımları izleyin. Derleyici 6. satır için bir uyarı mesajı verir ama yine de yürütülebilir bir program üretir. Programın uyarısız denenmesi ve beklendiği gibi çalışması için 6. satırı değiştir­meli ve değişkeni tamsayı olarak tanımlamalısınız: int distance = 765 Farklı Değişken Tipleri Kullanmak Şimdiye kadar mevcut temel tiplerden tamsayı (int) değişkenleri kullandınız. Bun­lara temeltip denmesinin sebebi dil tanımının bir parçası olan en temel veri tipleri olmalarıdır. Ayrıca siz de bu hazır tipler gibi kendiniz tipler tanımlayabilirsiniz. C++’da kullanılan temel hazır veri tipleri şunlardır: · bool, true veya False değerini alabilen Boolean bir değişkendir · char normalde karakter saklamak için kullanılan bir değişkendir. Visual C++’da -128’den 127’ye kadar değerler alabilir. Eğer char tipi değişken unsigned olarak tanımlanırsa değişkenin alabileceği değerler 0 ile 255 arasındadır, negatif değerlere izin verilmez. · Bazen yalnızca short olarak da tanımlanan short int tipi int tipine benzer ama daha dar bir aralıktaki değerleri saklayabilir. short ripinde bir değişken 32768 ile 32767 arasında herhangi bir sayıyı saklayabilir. Eğer unsigned olarak tanımlanırsa alabileceği değerler 0 ile 65535 arasındadır. · int tamsayıları saklamak için kullanılan tiptir. Visual C++ kullanırken int 32 bit’lik bir değerdir, dolayısıyla –2.147.483.648 ile 2.147.483.647 arasında herhangi bir değeri alabilir. Eğer unsigned olarak tanımlanırsa değer aralığı 0 ile 4.294.967.295 arasıdır. · Çoğunlukla yalnızca long olarak tanımlanan long int tipi int gibi bir tiptir. Bazı derleyicilerde int tipiniden daha geniş bir aralığa sahiptir. · float değişken kayan-noktalı değerler yani 3.14 gibi noktalı sayılar saklayabilen en küçük değişken tipidir. Bu tip değişken çoğunlukla asıl atanan sa­yıya yakın bir değer tutar. Visual C++’da float tipi bir değişken noktadan sonra 6 basamak saklayabilir. · double tipi bir değişken float gibi kayan noktalı sayılar saklar. Ancak, sayı­nın daha doğru bir değeri saklanabilir. Bu tip bir değişken noktadan sonra 15 basamak tutabilir. · long double tipinde bir değişken Visual C++ kullanılırken double ile aynı özelliklere sahiptir. Ancak, derleyiciye göre bunlar farklı tiplerdir. Değişkenlere Değer Atama Değişkenlere değer atamada atama operatörünü kullanırsınız. Atama operatörü a­şağıdaki şekilde kullanılan bir eşittir işaretidir. int nFoo = 42; Bu satır 42 tamsayısını nFoo değişkenine atar. Kayan noktalı bir değer atandığında derleyici değeri aşağıda gösterildiği gibi dou­ble bir değer olarak varsayar: double dFoo = 42.4242; char tipinden bir değişkene iki şekilde değer atayabilirsiniz. Gerçekten bir karakter değer atıyorsanız, görüldüğü gibi tek tırnak işareti kullanarak karakteri atayabilirsiniz. chInitial = ‘Z’; Derleyici harf değerini ASCII değerine çevirir ve char değişkeninde saklar. Küçük tasmsayı değerleri de char değişkende saklanabilir ve atama aynı int değişkeni gibi işlem görür. chReallyAnlnt = 47; char değişken tipi bazen küçük tamsayı değerleri saklamak için kullanılır. Çok sayıda değer saklıyorsanız bu yöntem yararlıdır çünkü int değişkenler char tipi değişkenlerin dört katı kadar yer kaplar. Basit Bir C++ Programı 2.1. bölümde ekranda Hello World mesajını görüntüleyen Hello adında basit bir C++ projesi oluşturdunuz. Bu bölümde Hello projesinde basit bir değişiklik yapacaksınız. Hello2 projesi size bir isim soracak ve sonra bu ismi ekranda görüntüleyecek. Bu projeyi oluşturmak size C++ programlarında bulunan bazı ortak öğeleri gös­terecek. Hello2 Projesini Oluşturun Herhangi bir Visual C++ programı oluşturmada ilk adım, birinci saatte yaptığınız gibi bir proje yaratmaktır. Gözden geçirmek gerekirse, konsol-modu bir proje ya­ratmak için gerekli adımlar şunlardır : 1. Visual C++ ana menüsünden File > New komutunu seçerek başlayın. New iletişim kutusu görüntülenecektir. 2. New iletişim kutusunda Projects sekmesini seçin. Farklı proje tiplerini görüntüleyen bir liste kutusu görüntülenecektir. 3. Win32 Console Application adlı ikonu seçin. Bunoktada proje için bir yer de belirtmeniz gerekir, sizin için bir yer otomatik olarak belirlenecektir. Programınızın Kaynak Dosyasını Oluşturun İlk Hello programınızdan farklı olarak, programın bu hali kullanıcıdan giriş alır ve bu girişi çıkışta kullanır. Kod 2.3 Giriş Kabul Eden Konsol-Modu Bir Program # include <iostream> # include < string > using namespace std; // KuIlanıcıya bir isim girmesini sağla, bu isimleri biriktir, // ve bu ismi kullancının görmesini sağla. int main( ) { string userName; cout << “What is your name? :”; cin >> userName; cout << “HeIIo” << userName << “!” << endl; return 0; } Yeni bir C++ kaynak dosyası açın ve Kod 2.3’de gösterilen kodu yazın. C++’ın küçük - büyük harf ayrımı yaptığını unutmayın. Dosyayı proje dizinine Hello2.cpp olarak kaydedin. Hatırlatmak gerekirse, yeni bir C++ dosyası açıp projeye ekle­mek için gereken adımlar şunlardır: 1. Ana menüden File > New komutunu seçin ve New iletişim kutusundaki Files sekmesine tıklayın. 2. C++ Source File ikonunu seçin. 3. Add to Project onay kutusunu işaretleyin ve dosya adını HelIo2.cpp olarak girin. 4. İletişim kutusunu kapatıp dosyayı oluşturmaya başlamak için OK düğme­sine tıklayın. Ana menüden Build > Build Hello2.exe komutunu seçerek (veya F7 tuşuna basarak) Hello2 projesini derleyin. Kaynak kod doğru girildiyse, proje hatasız derlene­cektir ve durum penceresinin son satırı HeIIo2.exe - 0 error(s), 0 warning(s) olacaktır. Hata veya uyarı mesajı varsa, kaynak kodda yazım hataları olup olmadığım kont­rol edin ve kodu tekrar derleyin. Hello2 Programını Çalıştırın Bir DOS penceresi açma ve Hello2 projesinin dizininin altındaki DEBUG alt dizini­ne geçin. DOS komut satırında HeIIo2 yazarak programı çalıştırın. Program aşağıdaki çıkışı verir: What is your name? : Abdullah HelIo Abdullah ! Hello2 programı giriş olarak herhangi bir ismi alır ve Hello World mesajı için bu ismi kullanır. Hello2 Programını Analiz Edin Hello2 programına bir bakalım çünkü bu program çok daha büyük C++ programlarıyla ortak birçok özellik içeriyor. Program oldukça kısa olmasına rağmen bu program birçok karışık Windows programlarında göreceğiniz öğelerin bir çoğuna sahiptir. Include Deyimleri Hello2.cpp dosyasının ilk satırı, dosyayı derlerken derleyiciye başka bir dosyayı da­hil etmesini söyleyen bir mesajdır: # include <iostream> Bu include deyimi derleyiciye iostream adli dosyayı aramasını ve sizin kaynak dosyanıza eklemsini söyler. Aslında #include deyimi, dosya derlenmeden önce kaynak dosyayı tarayan ve derleyicinin bir parçası olan önişlemci tarafından okunur. Önişlemci tarafından okunan deyimler önişlemci yönlendiricileri olarak bilinirler çünkü aslında bunlar derleyici tarafından kullanılmazlar. Önişlemci yönlendiricileri daima # (diyez işareti) ile başlar. Kitabın ilerleyen kısımlarında önişlemci de­yimleriyle ilgili daha fazla bilgi edineceksiniz. iostream dosyası bir başlık dosyasıdır. Başlık dosyası,programınızı derlemek için kullanılan bildirimler veya kod içerir. Genel giriş / çıkış işlemlerini gerçekleştirmek için iostream dosyasını programınıza # include deyimi ile dahil etmelisiniz. C++ başlık dosyaları .h veya .hpp dosya uzantısına sahiptir; standart C++ kütüphanesi uzantısı olmayan iostream gibi dosyalar içerir. Uyumluluk için Visual C++ derleyicisi .h uzantısına sahip include dosyalarının eski sü­rümlerini dahil eder. Include önişlemci yönlendiricisi iki temel şekilde görülür: · Kütüphane dosyalarını dahil ederken dahil edilecek dosya daha önce HelIo2.cpp dosyasında gösterildiği gibi küçüktür (<) ve büyüktür (>) işaretleri arasına yazılır. Önişlemci dosyayı önceden tanımlanmış bir yerde a­rar. · Belli bir uygulamaya özgü başlık dosyalarını dahil ederken dosya ismi çift tırnak işareti içine yazılır: # include “stdafx.h” gibi. Önişlemci dosyayı o anki kaynak dosyasının dizininde arayacaktır. Dosya bulunmazsa arama, baş­lık dosyalarının bulunduğu önceden tanımlanmış yer içinde aranır. Hello2.cpp dosyasının ikinci satırı da bir #include yönlendiricisidir: # include <string> Katar başlık dosyası (string header ile) standart C++ kütüphanesinin bir parçasıdır. Katar başlık dosyası dahil edildiğinde, bir C++ uygulamasında karakter katarları kullanmayı kolaylaştıran standart karakter katar sınıfı kullanılabilir. std isim Alanı Visual C++’da isim ve diğer tanımlayıcıların toplamı isim alanı (namespace) olarak bilinir. Varsayılan değer olarak, C++ programına tanıtılan herhangi bir i­sim global isim alanındadır. Standart C++ kütüphanesinde bulunan tüm isimler std isim alanında yer alır. İsim alanları, özellikle farklı gruplar tarafından geliştirilen kod veya kütüphaneleri kullanırken büyük C++ projelerinde isimleri idare etmeyi kolaylaştırır. C++’da i­sim alanları yokken birbiriyle çelişen isimler kullandıkları için iki veya daha fazla uyumsuz kütüphanenin olması doğaldı. İsim alanları kütüphanelerin kendi isimlerini kendi ismi olan bir bölüme yerleştirmesine imkan tanır. İki isim alanı ortak bir isim kullanabilir çünkü her isim alanı string isin için bir bölüm kullanır, iki isim birbiriyle çelişmez. Bir isim alanından bir isim kullanırken isim alanı std::string veya codev::strlng gibi bir önek içermelidir. Alternatif olarak, derleyiciye global isim alanında bir tanımlayıcı bulunabileceğini söyleyen using namespace yönlendiricisi de kullanılabilir. Program örneğimizin bir sonraki satırında böyle yapılmıştır. Bu satır derleyici­ye programda bulunan isimlerin std isim alanında bulunabileceğini bildirir: using namespace std;
__________________ |
|||||||||||
|
|
|
|
#3 (permalink) | |||||||||||
|
Kodunuz için Açıklamalar Kullanmak
Açıklama, kaynak kodu okuyan kişiye sunulan bir nottur. Derleyici veya bilgisayar için hiçbir anlamı yoktur. using deyiminden sonraki satır, bir C++ programında tek saatlik bir açıklamanın başlangıcını belirtmek için kullanılan //işaretiyle başlar. Developer Studio editö­ründe açıklamalar yeşil renklidir. int ve return kelimeleri ise bunların C++ anahtar kelimeleri olduğunu belirtmek için mavi renktedir. Kodunuzda açıklamalar kullanmak iyi bir alışkanlıktır. Zaman geçtikten sonra kodunuzun nasıl çalışması gerektiğini açıklamaya yardımcı olmak için açıklamalarını kullanabilirsiniz. main Fonksiyonu Hello2.cpp dosyasından sonraki satın main fonksiyonunun başlangıcıdır. int main( ) main fonksiyonu içindeki ilk satır bir değişken bildirimidir. Şimdilik bunun ne anlama geldiği fazla önemli değildir. Şu an için userName’in bir string değişken olduğunu bilmek yeterlidir. string temel veri tiplerinden biri değildir; standart kütüphanenin bir parçasıdır. string tipi, karakter katarlarını temel veri tipleriymiş gibi kullanabilmenize olanak sağlar. userName değişken bildiriminden sonra kullanıcının adını gitmesini isteyen mesajı görüntüleyen bir deyim yer almaktadır: cout << “What is your name? HeIlo2.cpp dosyasındaki bu deyim iostream nesnesi cout’u kullanarak konsol penceresinde karakterlerden oluşan bir satır görüntüler. iostream kütüphanesi teknik olarak C++ dili tanımının bir parçası olmamasına rağmen her C++ derleyicisinde dahil edilmiştir. Bu kütüphane aslında standart C++ kütüphanesinin bir parçası­dır. Konsol modu programınızda standart giriş/çıkış işlemleri yapmak iostream kütüphanesi ile çok kolaydır. iostream kütüphanesi IO ( Giriş / Çıkış ) kaynaklarına çıkış için << sembolünü, bu kaynaklardan giriş için >> sembolünü kullanır. IO kaynakları diskteki bir dosya veya bir yazıcı ya da karakter modundaki bir ekran gibi sekizli dizileri olabilir.<< sembolünün sağındaki değer, sembolün solundaki nesneye çıktı olarak aktarılacaktır. >> sembolünün solunda yer alan IO nesnesindeki veriler sembolün sağındaki değişkende saklanır. iostream kütüphanesi standart cin nesnesini içerir. cin, programınızdaki veri girişleriyle ilgilenen bir iostream nesnesidir. HelIo2.cpp dosyasının bir sonraki satırı kullanıcıdan bir giriş alır ve bu girişi userName değişkeninde saklar. cin >> userName; Artık userName değişkeni kullanıcının girdiği değeri içerir. Bir sonraki satır Hello mesajını görüntüler ve bu mesaja userName değişkeninin içeriğini ekler. cout nesnesi kullanılırken çok sayıda farklı bileşen << sembolüyle birbirinden ayrılarak ard arda birleştirilip çıkışa aktarılabilir. cout << “HelIo”>> userName<<“1” << endl; main fonksiyonunun son satırı bir return deyimidir. return deyimi çalıştırıldığında fonksiyon geri döner veya çalışmayı sonlandırır ve return anahtar kelimesinden sonra gelen değer fonksiyonu çağırana döndürülür. Bu return deyimi main fonksi­yonunun içinde yer aldığından 0 değeri işletim sistemine döndürülür. return anahtar kelimesi bir fonksiyonda herhangi bir noktada yer alabilir. Ancak çoğu programcı bir fonksiyonda mümkünse tek bir return deyimi kullanmayı tercih eder. 2.3. Fonksiyonlar, Yapılar ve Sınıflar Bölüm 2.1 ve bölüm 2.2’de C++’taki temel bazı kavramları öğrendiniz ve bazı basit programlar yazdınız. Bu bölümde daha gelişmiş Visual C++ programlama konularını göreceksi­niz. Özellikle, · C++ programlarında ifade ve deyimleri kullanmayı · Küçük, tekrardan kullanılabilir kod parçaları oluşturmak için fonksiyonları kullanmayı · Kaynak kod ve veri bileşenleri oluşturmak için yapiları ve sınıfları kullanmayı öğreneceksiniz. Ayrıcabu saatte öğreneceğiniz konularla ilgili basit programlar yazacaksınız. 2.3.1. İfade ve Deyim Nedir? İfadeler ve deyimler, C+ + programlarınızı oluşturmak için derleyici tarafından makine koduna çevrilen C++ dili ile tanımlı öğelerdir. Aslında bunların ne olduklarını tam olarak açıklamak zor. Bir binadan bahsederken binanın tuğlalardan, keresteden ve başka şeylerden yapıldığını söyleyebiliriz; tuğla veya keresteyi kolaylıkla tanımlayabiliriz. C++ programlama dili söz konusu olduğunda iş çok daha zor çünkü burada soyut kavramlarla uğraşıyoruz. Birazdan göreceğiniz gibi değim ile ifade arasında ufak fark vardır. Başlangıçta karışık gibi görünmesine rağmen uygulamaya geçtikçe dili daha iyianlayacaksınız. Sonra da C++ dili size kendi anadiliniz kadar kolay gelecek. Daha önceki basit Hello, programları gibi tüm C++ programları deyimlerden ve ifadelerden oluşur. İfadeler ve deyimler, Hello, programında gösterilen basit deyimlerden satırlarca uzunluktaki karmaşık ifadelere kadar değişir. Deyimler Bütün deyimler noktalı virgül ile sonlanır. Aslında, enbasit deyim boş deyimdir. veaşağıdaki gibi yalnızca tek bit noktalı virgülden oluşur: cout << “Hello World!” << end!; Boş deyin pek sık kullanılmaz; yalnızca C++sentaksının bir deyim gerektirdiği ama programın bir iş yapması gerekmediği durumlarda kullanılır. Deyimleri derleyiciye belli bir iş yapmasını söylemek için kullanırsınız. Örneğin, daha önce oluşturduğunuz konsol-modu programlardan bildiğiniz gibi aşağıdaki deyim ekranda Hello World! mesajını görüntüleyecektir. cout << Hello World!” << end! Bildirimler Bildirimler bir başka deyim türüdür. Bildirim bir değişkeni bir derleyiciye tanıtır. Aşağıdaki satır basit bit bildirim örneğidir : int myAge; Bu bildirim derleyiciye myAge değişkeninin bir tamsayı olduğunu söyler. Atama = atama operatörü kullanarak bir değişkene bir değer atamak için atama deyimi kullanılır. int myAge; MyAge = 135 ; Her ifadenin bir değeri vardır. Bir atama ifadesinin değeri atanan değerdir. Bu demektir ki aşağıdaki deyim yourAge ve myAge değişkenlerine 42 değerini atar. myAge = yourAge = 42; Kod 2.4’deki program bir değişkene değer atamayı göstermektedir. Kod 2.4. Bir Değişkene Değer Atayan C++ Programı #incLude <iostream> using namespace std; int main() { int myAge; rnyAge = 42; coııt << “HeIIo << endl; cout << “My age is << myAge << endl; return 0; } Atama operatörü C++’da bulunan operatörlerden sadece biridir. Bir sonraki kısımda diğer operatörler ele alınmaktadır. Diğer Yaygın İfadeler ve Operatörler C++ dili toplama, çıkarma, çarpma gibi ifadeleri yazmak için kullanabileceğiniz operatörler içerir. Tablo 2.1 bazı operatörleri göstermektedir. Tablo 2.1. C++’da Kullanılan Bazı Matematik Operatörleri Operatör Tanımı + Toplama - Çıkarma / Bölme * Çarpma Tüm matematik operatörleri soldan sağa gruplanır. Çarpma ve bölme operatörleri toplama ve çıkarma operatörlerinden yüksek önceliğe sahiptir. Bu nedenle aşağı­daki ifadeler eşdeğerdir : a + b * 3 a + 15 Bir ifadenin istediğiniz sırada değerlendirilmesini sağlamak için parantez kullanabilirsiniz. Aşağıdaki ifadenin gruplanışına dikkat edin: (a + 5) * 3 Bu ifade a değişkeninde saklanan değere 5 ekler ve elde edilen değeri 3 ile çapar. Matematik operatörleri aynı zamanda aşağıdaki şekilde bir atama operatörü ile birleştirilebilir. int myAge; myAge = 40 + 2; 40 + 2 ifadesinin değeri 42’dir. Bu değer hesaplandıktan sonra ifadenin değeri myAge değişkeninde saklanır. Fonksiyon, bir bilgisayar programı içinde iyi tanımlanmış bir görevi gerçekleştiren bilgisayar komutları grubudur. Fonksiyonlar.C ve C++ uygulamalarının temel yapı taşlarındandır. Fonksiyonlar büyük bir programı daha kolay idare edilebilir parçalara bölmeye yararlar. Aynı zamanda program içinde farklı noktalarda kod tekrarı yapmadan aynı işi yapabilmeye olanak sağlarlar. Örneğin, bir oyuncak araba alsanız araba tüm montaj talimatlarıyla birlikte gelir ve arabanın dört tane eş tekerleği vardır. Talimatlar niçin bir tekerliği montaj yapmak için gereken adımları dört kez tekrarlasın? Tekerleklerin montaj işlemini bir kere açıklayıp aynı işlemin her tekerlek için tekrarlanacağını belirtmek çok daha kolaydır. Tekerlek montaj talimatları, tüm montaj talimatları kümesi (program) içinde dört kez çalıştırılan bir modüldür (fonksiyondur). Her C++ programı en az bir fonksiyon içerir; bu fonksiyona genelde main adı verilir. Uygulamanız çalışmaya başladığında main fonksiyonu işletim sistemi tarafından çağrılır; main’in çalışması sonlandığında programınız bitmiştir. C++’ta yazılan birçok Windows programı, konsol modu bir programdaki main fonksiyonu ile aynı işleve sahip WinMain adında bir fonksiyon içerir. Bir MFC programında WinMain fonksiyonu MFC kütüphane kodunun bir parçasıdır (sizin WinMain fonksiyonu yazmanız pek gerekmeyecek)
__________________ |
|||||||||||
|
|
|
|
#4 (permalink) | |||||||||||
|
2.3.2 Fonksiyon Prototipleri Bildirmek
Bir fonksiyon kullanabilmek için derleyiciye bir fonksiyon prototipi sunarak önce fonksiyonu bildirmelisiniz. Bir fonksiyon bildirimi yapmak için fonksiyonun adını, döndürdüğü değeri ve fonksiyona aktarılan parametre listesini aşağıdaki şekilde belirtmeniz gerekir. int CalculateAge (int n YearBorn); Bu satır, parametre olarak tek bir tamsayı alan ve sonuç olarak bir tamsayı döndüren CalculateAge fonksiyonu için bir fonksiyon prototipidir. Değer döndürmeyen fonksiyonlar void tipini döndürecek biçimde bildirilir. Fonksiyon prototipleri bildirmenin alışılmış yolu onları .h uzantılı başlık dosyalarına yerleştirmektir. C++ standart kütüphanesinin parçası olan başlık dosyaları .h uzantısını kullanmaz; standart başlık dosyalarına iki örnek iostream ve math’dır. Bu başlık dosyaları 10 kaynaklarının ve matematik fonksiyonlarının doğru olarak derlenebilmesi için gerekli bildirimleri ve tüm prototipleri içerir. Fonksiyonları Tanımlamak Bir fonksiyon main fonksiyonunun tanımlandığı şekilde tanımlanır. Tüm fonksiyon tanımlarında aynı yöntem kullanılır; temel olarak fonksiyon tanımı, fonksiyon prototipine eklenmiş fonksiyon gövdesinden oluşur. Fonksiyon tanımı daima şunları içerir: · Fonksiyonun döndürdüğü değer · Fonksiyonun adı · Fonksiyonun parametre listesi · Küme parantezleri içinde yazılan fonksiyonun asıl gövdesi Hello World! mesajını görüntülemek için fonksiyon kullanmayı göstermektedir. Bu projeyi çalıştırmak için ilk iki bölümde açıklanan adımları kullanarak HeIIoFunc adında yeni bir konsol modu proje yaratın. Kod 2.5. Fonksiyon Kullanarak Yazılmış Hello World! Programı #include <iostream> using namespace std; void DisplayAge(int nAge); int main ( ) { DispIayAge(42); return 0; } void DisplayAge(int nAge) { cout << “HeIIo World! I’m << nAge << years old.” << endl; } Fonksiyon, çağıran fonksiyona biz değer döndürmediğinden döndürme değeri void olarak tanımlanmıştır. Fonksiyonları Çağırmak C++ dilinde kontrolü bir fonksiyona aktarmaya fonksiyon çağırmak denir. Bir fonksiyon çağrıldığında fonksiyonun adını ve varsa parametre listesini oluşturunuz. Bir fonksiyon çağrıldığında aşağıdaki işlemler geçekleşir: 1. Derleyici fonksiyonun çağrıldığı noktayı belirleyip saklar ve varsa parametre listesinin bir kopyasını yapar. 2. Fonksiyonun çalışması için gerekli bellek alanı geçici olarak yaratılır. 3. Çağrılan fonksiyon parametre listesinde verilen yerlerin kopyasını kullanarak çalışmaya başlar. 4. Fonksiyon çalışmayı bitirdikten sonra kontrol çağıran fonksiyona geçer ve fonksiyonun kullandığı bellek alanı serbest bırakılır. Fonksiyonları kullanmadan önce onları bildirme gerekliliği C++ tip sistemi-nin bir uzantısıdır. Fonksiyon prototiplerini kullanmak zorunlu olduğundan, derleyici fonksiyon çağrısında yanlış parametre kullanımı gibi hataları sezebilir. 2.3.3 Yapı Nedir? Yapı, kullanıcının tanımladığı tek bir tip içinde gruplanmış veri tipleri içeren bir veri tipidir. İki veya daha fazla veri değişkenini ilişkilendirmek gerektiğinde yapılar ve yaygın olarak kullanılır. Çalışma saatleri ile ücret oranlarının bir yapıda birleştirildiği bir maaş bordrosu kaydı yapılara bir örnektir. Yapı bildirimi programınıza yeni bir veri tipi tanınır, Bu yeni tipteki değişkenler aynı int, char veya float değişkenler gibi tanımlanır. Kod 2.6 tipik bir yapı kullanıldığını göstermektedir. Kod 2.6 Haftalık Maaş Hesaplamak Için Bir Yapı Kullanımı # include <iostream> using namespace std; struct TIME_REC { double dHours; double dRate; }; int main ( ) { TIME_REC payrollRecord; payrollRecord.dHours = 40.0; payrollecord.dRate = 3.75; cout << “This weeks payroll information:’ << endl; cout << ‘Hours worked << payrollRecord.dHours << endl; cout << “Rate : $ << payrollRecord.dRate << endl; double dSalary = payrollRecord.dRate * payrollRecord.dhours; cout << “Salary : $“ << dSalary << endl; return 0 ; } 2.3.4 Sınıf Nedir? Sınıf fonksiyonların ve yerlerin bir grup oluşturup tek bir elemanmış gibi kullanılmasına olanak sağlar. Sınıflar tipik olarak hem veri hem de bir tür davranış içeren gerçek dünya kavramlarının bir modelidir. Sınıflar yapılara benzerler; aslında sınıflar isimleri farklı yapılardır. Sınıfları nesne yönelimli programlamaya çok uygun yapan bir özellik vardır, bir sınıf üyesi public olarak tanımlanmadığı sürece o üyeye çoğunlukla o sınıf dışından erişilemez. Yani metotların gerçeklenmesini harici arabirimin arkasına gizleyebilirsiniz. Sınıflar gibi fonksiyonlar da C++ programlama dilinin önemli bir parçasıdır. Aslında C++’ın önceki isimlerinden biri Sınıflı C (C with Classes) idi. Sınıf örneği (instance) bir sınıf nesnesidir. Bir sınıf örneği programınızın içinde kullanılabilir veya değiştirilebilir.
__________________ |
|||||||||||
|
|
|
|
#5 (permalink) | |||||||||||
|
Bir C++ Sınıfının Parçaları
Visual C++ kullanırken iletişim kutuları, pencere çerçeveleri, menüler ve düğmeler gibi nesneler C++ sınıfları tarafından kontrol edilir. Sınıf yaratılabilecek nesnenin ve o nesne üzerinde gerçekleştirilebilecek işlemlerin bir tanımıdır. Bir C++ sınıfının iki kısmı vardır: · Sınıf bildirimi. Sınıf arabirimi ve sınıfın veri üyeleriyle ilgili bilgi içerir. Sı­nıf arabirimi genellikle . h uzantılı bir başlık dosyasında yer alır. Programı­nızda sınıfı kullanan her dosya _include yönlendiricisini kullanmalıdır. Böylece önişlemci sınıf bildirimini kaynak dosyaya ekler. · Sınıfın gerçeklenmesi. Sınıfın bir parçası olarak bildirilen üye fonksiyonları içerir. Sınıfın gerçeklenmesi genellikle .cpp uzantılı bir dosyada yer alır. Bir nesneyi oluşturan veriler ve o nesne üzerinde gerçeklenen fonksiyonlar bir sı­nıf, yani o nesnenin bir tanımını oluşturmak üzere birleşirler. Sınıflar diğer nes­nelerin işlevselliğini miras alabilirler ve mevcut sınıfları geliştiren yeni sınıfları ko­laylıkla ekleyebilirsiniz. Sınıflar ve Sınıf Örnekleri Sınıflar ile sınıf örnekleri aynı şey değildirler. C++ veya nesne yönelimli programlamada yeniyseniz bu kafa karıştırıcı bir kavram gibi gelebilir. Sınıfı bir nesnenin tanımı olarak düşünün; sınıf örneği ise o sınıfın somut bir varlığıdır. Yapılandırıcılar Yapılandırıcı (constructors), sınıfın nesnesi oluşturulduğunda yürütülen özel bir üye fonksiyonudur. Bir yapılandırıcı ait olduğu sınıf ile aynı isme sahiptir ve asla bir değer, void bile döndürmez. Yapılandırıcının amacı yeni yaratılan bir nesneyi bilinen bir duruma sokmaktır. Tipik olarak, yapılandırıcılar sistem kay­nakları tahsis edebilir, değişkenlere değer atayabilir veya başka türden başlangıç işlemleri gerçekleştirebilirler. Yıkıcılar Yıkıcı (destructor), bir nesne yok edilirken çağırılan özel bir üye fonksiyonudur. Yıkıcı hiçbir değer döndürmez ve asla parametre listesi içermez. Yıkıcının ismi ~ işareti ile sınıf isminin birleşiminden oluşur. Tahsis edilen sistem kaynaklarını serbest bırakmak gibi, bir nesneyi yok ederken gerçekleştirilmesi gereken özel işler yoksa yıkıcı tanımlamak gerekmez. Basit Bir C++ Sınıfına Bir Örnek Örnek bir C++ sınıfı için haftalık bir bordro kaydını temsil eden bir sınıfa bakalım. Sınıfın iki üye değişkeni olmalıdır : · Çalışılan saat sayısı · Saat ücreti Ayrıca sınıf şu işlemleri yapan üç üye fonksiyonu tanımlayacaktır: · Saat ücretini atayan · Çalışılan saat sayısını atayan · Ödeme dönemi için hesaplanan maaşı döndüren Yapı tanımlamasındaki struct anahtar kelimesi yerine burada class anahtar kelime­si kullanılması dışında sınıf tanımlaması yapı tanımlamasına benzer. Kod 2.7 CWeeklyPayRecord sınıfının bildirimini göstermektedir. Kod 2.7. Haftalık Ödeme Kaydı Sınıfının Bildirimi class CWeeklyPayRecord { public: void HoursWorked (double dHours); void PayRate( double dRate ); double Getsalaryo; private: double rn_dHours; double m_dRate; }; public ve private anahtar kelimeleri sınıfın üyelerine erişime izin vermek veya engel olmak için kullanılır. public anahtar kelimesinden sonra bildirimi yapılan sınıf üyeleri, bir yapının üyeleriymiş gibi sınıfın dışından erişilebilir. private anahtar kelimesinden sonra bildirimi yapılan sınıf üyelerine sınıfın dışından erişilemez. Bir sınıf bildiriminde istenildiği kadar public veya private erişimi belirteçlerinden kullanılabilir. Yukarıdan aşağıya bakıldığında en yakın iletişim belirteci o anki bildirimi kontrol eden belirteçtir. Kod 2.8 ’de CWeeklyPayRecord sınıfını kullanan ve tipik birkaç üye fonksiyonu içe­ren bir örnek verilmektedir. Kod 2.8. Cweeklypayrecord S1nıfını Kullanan Bir Örnek # include <iostream> using namespace std; class CWeeklyPayRecord { public: void HoursWorked( double dHours ); void PayRate( double dRate ); double Getsalaryo; private: double m_dHours; dotıble m_dRate; }; // // main - Haftalık ücret nesnesi yaratır ve bu haftaya ait ücreti hesaplar // int main ( ) { CweeklyPayRecord weeklyPay; weeklypay.HoursWorked( 40.0 ); weeklypay.PayRate( 3.75 ); cout << “This week’s payroll information:” << endl; cout << “Salary :$” << weeklyPay.GetSalary( ) << endl; return 0; } // //CWeeklyPayRecord sınıfı için üye fonksiyonlar // void CWeekıyPayRecord::HoursWorked( double dHours ) { m_dHours = dHours; } void CWeeklyPayRecord::PayRate( double dRate ) { m_dRate = dRate; } double CWeekLypayRecord etSalary() { return m_dHours * mdRate; } Kod 2.8 ’deki üye fonksiyonları tanımlanırken fonksiyon isminden önce CWeekIy­PayRecord:: kelimesi geldiğine dikkat edin. Bütün üye fonksiyonların isimlerinden önce ait oldukları sınıfın ismi gelir; derleyicinin fonksiyonun hangi sınıfa ait oldu­ğunu belirleyebilmesinin tek yolu budur. Bu kuralın tek istisnası sınıf bildirimi içinde tanımlanan fonksiyonlardır. 2.3.5. Dikdörtgenler ve Bölgeler Dikdörtgen (rectangle) birçok Windows, programının en temel bileşenlerinden biridir. Birçok pencere ve kontrol dikdörtgen biçiminde olduğundan Windows programcılığında en yaygın olarak kullanılan veri yapılarının bir dikdörtgeni temsil etmek için kullanılması şaşırtıcı değildir. Dikdörtgenler her tipteki pencerenin konumunu veya büyüklüğünü temsil etmek için kullanılır. Bu pencereler; ana pencerelerin yanı sıra kontroller, araç çubukları ve iletişim kutuları olabilir. İki temel dikdörtgen koordinatı tipi vardır: · Bir dikdörtgeni ekranın tamamı ile ilişkilendiren ekran dikdörtgen koordinatları · Üst ve sol köşe değeri sıfır olan ve bir pencerenin istemci alanını temsil eden bir dikdörtgenin büyüklüğünü veren istemci dikdörtgen koordinatları Ekran dikdörtgen koordinatları çoğunlukla bir pencereyi tüm ekrana bağıl olarak hareket ettirirken kullanılır. İstemci dikdörtgenler ise, kontrollerin konumunu belirlerken veya bir pencere ya da başka bir pencere içine çizim yaparken kullanılır. Bir dikdörtgenin boyutlarını isterken Windows’un dikdörtgen fonksiyonlarından birine bir CRect değişkeni aktarmanız gerekir. Aşağıdaki iki satırlık kod CRect sınıfından bir değişken tanımlamakta ve bunu GetClientRect fonksiyonuna aktarmaktadır. Crect.rcclient; GetClientRect(rcCtient); Bir sonraki örnek, 2.1. bölümdeki HelloMFC programındakine benzer biçimde kullanıcıya bir mesaj vermek için istemci dikdörtgen alanı kullanmaktadır. Bu yeni örnek mesajı istemci alanın ortasına çizecektir; eğer pencerenin
__________________ |
|||||||||||
|
|
| Konu Araçları | |
| Mod Seç | |
|
|
|
||||
| Konu | Konuyu Başlatan | Forum | Yanıt | Son Mesaj |
| winamp ı türkçe kullanmak isteyenler..!!! | Necati_ | Ses ve Görüntü | 19 | 18-06-2007 09:32 AM |
| Flash Mx Çizim API`lerini Kullanmak | Nick 99 | Grafik ve Resim | 8 | 11-04-2007 10:51 AM |
| Photoshoptaki Renk Kodlarını Msn Nicklerinde Kullanmak | semerkand | Msn, Icq, Yahoo, Gmail | 4 | 23-08-2006 11:39 PM |
Bir Forum sitesi
olduğumuzdan, kullanıcılar önceden onay almadan her türlü görüşlerini yazabilmektedir.
Yazılanlardan dolayı oluşabilecek her türlü yasal sorumluluk, yazan kullanıcılara
aittir.
Yinede sitemizde yasalara aykırı herhangi bir durum
görürseniz; Lütfen,
bydigi@gmail.com'a yada
İletişim'e bildiriniz.
Mesajınız incelenip, kısa bir süre içerisinde gereken müdahale yapılacaktır.