Yeni Başlayanlar İçin C++ Dersleri

Başlatan -DıLgEş-, 20 Kasım 2014 - 15:03:25

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

-DıLgEş-

-C++ Nedir?
   C++,  orta seviyeli ve C diline yapılan eklemeleriyle ortaya çıkmış bir programlama dilidir. C++, derlemeli bir programlama dilidir. Bu nedenle, bir C++ programı yazmak için bir C++ derleyicisini çalıştığımız bilgisayara kurmalıyız.

-Neden C++?
   1. C++ diline, C dilinde olmayan Nesneye Yönelik Programlama özelliği eklenmiştir.
   2. C++ dili, orta seviyeli bir program dili olduğundan yazılan program yavaş çalışmaz.
   3. C++ dilinde, herhangi bir kod pek fazla değişikliğe uğramadan başka bir platformda çalışabilir.
   4. C++ dilinde, C diline yapılan eklemeleriyle C dilinden daha iyi bir sonuç verebilir.
   5. C++ dili, C dilinden daha fazla veri tipi denetimi yapar.

-Derleyici Kurulumu
   C++ dilinde bir program yazabilmek için piyasada birçok derleyici bulunmaktadır. Biz, kodlarımızı g++(GNU C++ Compiler) derleyicisini kullanarak derleyeceğiz. Şimdi derleyiciyi nasıl kuracağımıza geçelim.
   Aslında derleyici hemen hemen her Linux sisteminde yüklü olarak geliyor. Ubuntu 14.10 ve üst sürümlerde g++ derleyicisi yüklü olarak gelmektedir. Eğer sisteminizde derleyici kurulu değilse şu komutu uçbirime yazıp derleyiciyi kurabilirsiniz.
sudo apt-get install g++
   Böylece derleyiciyi kurmuş olacaksınız.

-İlk Program "Merhaba Dünya"
   Nereye giderseniz gidin, hangi programlama dilini öğrenmek isterseniz öğrenin ancak her şeyin başında bir program vardır. Bu program o dilin kendisini apaçık bir şekilde yansıtır.
   Bahsettiğim program "Merhaba Dünya" programıdır. Programın tam kodu aşağıdaki gibidir:


#include <iostream>

using namespace std;

int main()
{
   cout<<"Merhaba Dünya"<<endl;

   cin.get();
   return 0;
}


   Bu kodu, "Merhaba Dünya.cpp" ismiyle kaydedin ve aşağıda yazılan adımları takip ederek programımızı derleyelim.

Adım 1:
Önce Terminal'i açalım;


Adım 2:
Daha sonra kaynak kodumuzu kaydettiğimiz dizine gidelim;


Adım 3:
Şimdi kaynak kodumuzu derleyelim;


Adım 4:
Şimdi programımızı çalıştıralım;


   Sonunda programımız ekrana Merhaba Dünya yazdırmış oldu. Biz burada elle derledik ama siz her seferinde böyle yapmak istemiyorsanız kendinize bir derleyici indirip kurabilirsiniz:
-Netbeans
-MonoDevelop
-Codeblocks
-Qt Creator
   Bu liste uzayabilir. Eğer elle hala derlemek isterseniz, derleme işlemini her seferinde şu şekilde gerçekleştirebilirsiniz:

g++ kodadi.cpp -o programadi

   İlk kodumuzu yazdık ancak henüz bu yazdıklarımızın ne olduğunu bilmiyoruz. Şimdi gelelim bu kodun açıklamasına...

#include komutu:
   Bu komut programımıza ekleyeceğimiz başlık dosyalarını eklememize yardımcı olur. Peki başlık dosyası nedir?

Başlık dosyası, içinde kullanabileceğimiz değişken, fonksiyon, sınıf vs. gibi komutlar içeren bize yardımcı olan dosyalardır. C++'ta her başlık dosyası farklı görevler için kullanılır.
   Programımıza eklediğimiz "iostream" başlık dosyası C++ dilinin standart olarak bize sunduğu giriş çıkışları kullanabilme olanağı sağlamaktadır. Daha pek çok başlık dosyası bulunmaktadır. Bu başlık dosyalarını ayrıntılı olarak ilerki derslerde işleyeceğiz.

using namespace deyimi:
   Bu deyimin türkçesi "aduzayını kullan" anlamına gelmektedir. Aduzayları C++ dilinin bize sunmuş olduğu bir komuttur. Bu komutu daha sonra göreceğiz.
   Örneğimizde std adlı aduzayını kullandık bu aduzayı sayesinde giriş çıkışları aktif hale getirdik.

int main() {...} bloğu:
   Her C++ programında olması gereken bir fonksiyondur. Bu fonksiyonu kullanmazsak;
1-> Program çalıştırılmaz,
2-> Derleyici bize güzel bir hata verir;

/usr/lib/gcc/i686-linux-gnu/4.9/../../../i386-linux-gnu/crt1.o: In function `_start':
/build/buildd/glibc-2.21/csu/../sysdeps/i386/start.S:111: undefined reference to `main'
collect2: error: ld returned 1 exit status

   Umarım main fonksiyonun önemini anlamışızdır. Bu fonksiyon bize, ekranda neler döndüreleciğini sağlamak için vardır.

cout ve endl komutları:
   Bu komutlardan cout komutu bize ekrana bir şeyle yazdırma olanağı vermektedir. Endl komutu ise satırı sonlandırıp alt satıra geçer.

cin.get();
   Bu komut, programı bekletir. Kullanıcı bir şey yazıp "Enter" tuşuna basmadan programı sonlandırmaz.

return deyimi:
   Bu deyim geriye değer döndürmek için kullanılır. Programımızda 0 değerini döndürüp programı sonlandırdık.
Aşkın; gözü kör, kulağı sağır, dili tutuk, aklı kıttır..! Hayır yani bu halde nasıl herkesi madara ediyor onu çözemedim..

-DıLgEş-

#1
-Veri Tipi Nedir?
   Veri tipi, kullanılan bir değişkenin, fonksiyonun, vs. bellekte ayrılacak alanını belirlemek için kullanılır. C++ diline ait veri tiplerini şimdi sırasıyla görelim;

1-> İnt Tipi:
   Tamsayı tutan bir veri tipidir. Bu veri tipi bellekte 2 byte(16 bit)'lık bir alan kaplar.
2-> Char Tipi:
      Karakter tutmak için kullanılır. Bellekte 1 byte(8 bit)'lık bir alan kaplar. Tutabileceği karakter sayısı normal olarak 128, ek olarak niteleyici kullanıldığında 256 karakter tutabilir.
3-> Float Tipi:
   Virgüllü sayıları tutar. Bellekte 4 byte(32 bit)'lık bir alan kaplar. 3.4E-37 ile 3.4E+38 aralığındaki değerleri tutar. Maksimum 7-8 basamaklı sayıları tutabilir.
4-> Double Tipi:
   Float gibi, virgüllü sayıları tutar. Bellekte 8 byte(64 bit)'lik bir yer kaplar. 1.7E-308 ile 1.7E+308 aralığındaki değerleri tutar. Maksimum 15-16 basamaklı sayıları tutabilir.
5-> Bool Tipi:
   Mantıken, doğru veya yanlış diye adlandırılan 0(yanlış) ve 1(doğru) değerlerini döndürür. Karşılaştırma ifadelerinde sıkça kullanılır. Bellekte 1byte(8 bit)'lık bir alan kaplar.

   C++ dilinde daha çok veri tipi var ancak bunları ilerki derslere bırakalım. Bu veri tiplerinin aralık değerleriyle oynayan bazı niteleyiciler vardır. Şimdi o niteleyicileri görelim;


1-> Short Niteleyicisi:
   Short, değer aralığını kısaltır. Bellekte kullanılan alanı düşürür.
2-> Long Niteleyicisi:
   Long, değer aralığını uzatır. Bellekte kullanılan alanı genişletir.
3-> Unsigned Niteleyicisi:
      Unsigned, negatif değerleri kaldırır. Tuttuğu alanı iki katına çıkarır. Char tipi bu yüzden 256 karakter alır. Bellekte kullanılan alan ile hiçbir değişiklik yapmaz.

-Değişken Nedir?
   Değişken, değer tutabilen isimlerdir. Programlamacı, bu isimleri kendisi yazar. Sadece bazı isimlerde istisna vardır.

-Değişken Nasıl Tanımlanır?
   Değişken, veri tipi ile meydana gelir. Değişkenler şu şekilde tanımlanırlar:

int degisken=16; //int veri tipinde 16 değerinini tutan değişken.
char abc[4]="C++" //char veri tipinde "C++" kelimesini tutan değişken.
float cpp; //float tipinde hiçbir değer atanmayan değişken.
long double d; //long double dipinde değer atanmayan değişken.

   Yukarıda bazı değişken tanımlama şekilleri verilmiştir. Farkettiyseniz, değişken yanlarında "//" sembolüyle başlayan yazılar bulunmaktadır. Bu yazılar, C++ dilinin açıklama satırlarıdır. C++ dilinde, iki farklı açıklama sembolü kullanılmaktadır. Bunlar;

1-> "//" Sembolü:
   Satır bu sembolden sonra bir açıklama satırıdır. Derleyici bu sembolden sonra yazılanları dikkate almaz.
1-> "/*...*/" Sembolü:
   C dili tarzıdır. C++ dilinin standart açıklama sembolü değildir. Derleyici, "/*" ile "*/" arasına yazılanları dikkate almaz.

-Değişken Tanımlama Kuralları
   C++ dilinde değişken tanımlamada bazı kurallar vardır. Bu kurallara uymayan bir değişken derleyici tarafından bir hatayla sonuçlanır.

1-> Değişkenler bir veya birden fazla karaktere sahip olabilir ve değişkenin boyu üzerine bir kısıtlama yoktur. Değişken isminin uzun olması kodlamayı oldukça güçleştirir.
Örnek:

int a;
char alfabetik;
double degiskenboyu;


2-> Değişkenler, sadece alfabetik harfler, rakamlar ve (_) işareti geçerlidir. Arada boşluk bulundurulamaz.
Örnek:

float cpp;
int ghj;
char cpp dili; //HATA...


3-> Değişkenlerin ilk harfi alfabetik olmak zorundadır.
Örnek:

int 1kl; //HATA...
int k1l;
char fg123;


4-> Değişkenler küçük/büyük harf farklarına karşı duyarlıdırlar. C/C++ programlama dillerinde küçük/büyük harfler farklı yorumlanır.
Örnek:

char ubuntu;
char UBUNTU; //Bu iki değişken birbirinden farklı değişkenlerdir.


5-> C/C++ anahtar sözcükleri değişken adı olarak kullanılamaz.

asm
auto
bool
break
case
catch
char
class
const
const_cast
continue
default
delete
do
double
dynamic_cast
else
enum_explicit
export
extern
false
float
for
friend
goto
if
inline
int
long
mutable
namespace
new
operator
private
protected
public
register
reinterpret_cast
return
short
signed
sizeof
static
static_cast
struct
switch
template
this
throw
true
try
typedef
typeid
typename
union
unsigned
using
virtual
void
volatile
wchar_t
while


-Yerel ve Global Değişkenler
   Değişken bir blok içinde veya bir fonksiyon içinde kullanılırsa yalnız o blok veya fonksiyon içinde kullanılır. Bu değişkenlere yerel değişken denir.
   Değişken bir fonksiyon veya bir blok dışında tanımlandıysa bu değişkene her yerden erişilebilir.
Örnek:

#include <iostream>

using namespace std;

void kareal();

int m,n; //m ve n değişkenleri global değişkenlerdir ve her yerden erişilebilir.

int main(void)
{
m=7; //m bir tamsayı tutan değişken olduğu için tamsayı değer verdik.
kareal();
cout<<m<<"'nin karesi "<<n<<endl;

return 0;
}

void kareal()
{
n = m*m;
}


Çıktı:

7'nin karesi 49


-Sabit Değişkenler
   Değişken tanımlandıktan sonra değeri değişmeyen değişkene "sabit değişken" denir. Sabit bildirimi "const" anahtar sözcüğü ile yapılabilir.
Örnek:

const float PI=3.14;
const int EOF=-1;
const char deger[4]="C++"


   Sabit bildirimi "#define" önişlemci makrosuyla ile de tanımlanabilir.

Örnek:

#define MAX 100
#define DATA 0X0378
#define YARICAP 14.22


   Bu komutun daha pek çok işe yaradığını ilerki derlerimizde göreceğiz. Şimdilik bu kadarı yeterli olacaktır.

Örnek: Değişkenlerin değerini ekrana yazdıran program

#include <iostream>
#define PI   3.141593

using namespace std;

int main(void)
{
const int MAX= 100; //int tipinde bir sabit tanımladık.
char c= 'a'; //char karakter tipinde değer 1 karakterlik ise tek tırnak 2 ve üzeri karaktere sahipse çift tırnak kullanılır.
int i= 22;
float f= 33.3;
double d= 44.4; //Ondalıklı sayılarda ',' yerine '.' tanımlanır.

cout<<"PI ="<<PI<<endl; //Aradaki değişken isimleri değişkenin değerini yazdırır.
cout<<"MAX ="<<MAX<<endl; //endl komutuyla bir satır aşağı iniyoruz.
cout<<"c ="<<c<<endl;
cout<<"i ="<<i<<endl;
cout<<"f ="<<f<<endl;
cout<<"d ="<<d<<endl;

return 0;
}


Çıktı:

PI =3.14159
MAX =100
c =a
i =22
f =33.3
d =44.4

Aşkın; gözü kör, kulağı sağır, dili tutuk, aklı kıttır..! Hayır yani bu halde nasıl herkesi madara ediyor onu çözemedim..

Reverser

Anlatımınızı beğendim, böyle devam ederseniz güzel bir kaynak çıkacağı kanısındayım... İlgi görürse konunuzun üstüne linux system programlama hakkında bir makale hazırlayabilirim C ve ASM ikilisiyle.

XFCE ROCKS !
Powered by Thunar & XFWM4



meda

Takipteyim yalnız biraz daha renkledirme olursa anlamayı daha da kolay kılacaktır.
"BEDAVA Bedava yaşıyoruz, bedava;Hava bedava, bulut bedava;
Dere tepe bedava;Yağmur çamur bedava;Otomobillerin dışı,Sinemaların kapısı,Camekanlar bedava; Peynir ekmek değil ama Acı su bedava;Kelle fiyatına hürriyet, Esirlik bedava; Bedava yaşıyoruz, bedava. Orhan VELİ"

-DıLgEş-

#4
-Operatör Nedir?
   Operatör, değişken üzerinde işlem yapabilmemizi sağlayan, mantıksal ve matematiksel işaretlerdir. Operatörler çok geniş bir konudur. Şimdi bunu uzunca anlatmayacağım ilerki derslere bırakıyorum. Hazırsanız operatörlere başlayalım:

1-> Aritmetik Operatörler
   Bu operatörler, değişkenler üzerinde işlem yapmaya yarayan operatörlerdir. Bu operatörler sırasıyla;

a)= Operatörü: Atama işlemini gerçekleştirir. Değişkenler birbirine eşit olur.
b)% Operatörü: Bölme işlemini gerçekleştirir. Yalnız, sonuç olarak bölümü değil, kalanı verir. Bu operatörün adı Modülüs operatörüdür.
c)+ Operatörü: Toplama işlemi yapar. Değişkenleri tuttuğu değere göre toplar.
d)- Operatörü: Çıkarma işlemi yapar. Sol değerden, sağ değeri çıkararır.
e)* Operatörü: Çarpma işlemi yapar. Sol değer ile sağ değeri çarpar.
f)/ Operatörü: Bölme işlemini gerçekleştirir. Bölünen olarak verilen değer 0 olduğunda aşağıdaki şekilde bir hata ekranı döndürür:


   C++ programlama dilinde kullanılan aritmetik operatörler bunlardır. Yalnız bölme işleminde değer kontrolü yapmak gerekebilir.

Örnek: Değişkenler üzerinde aritmetik işlemler

int sayi1=8;
int sayi2=14;
int sayi3=32;
float sonuc; //Bu değerler ile C++ için 4 işlem yapalım...

sonuc=sayi1+sayi2; //Sonuc değişkenine sayi1 ve sayi2 değişkenlerinin değerlerinin toplamı aktarılıyor. Açılımı x=8+14 ve sonucu 22...
sonuc=sayi1+sayi2-sayi3; //Açılımı x=8+14-32 ve sonucu -10 olan bu ifade sonuc değişkenine aktarılıyor.
sonuc=sayi1+sayi2*sayi1; //Açılımı x=8+14*8 ve sonucu(DİKKAT!!! İşlem önceliği var...) 122 olan bu ifade sonuc değişkenine aktarılır.
sonuc=sayi1+sayi2+sayi3; //Açılımı x=8+14+32 ve sonucu 54...
sonuc=sayi1*sayi2; //Açılımı x=8*14 ve sonucu 112...
sonuc=sayi3/sayi1; //Açılımı x=32/8 ve sonucu 4...


2-> Karşılaştırma Operatörleri
   Bu operatörler, değişkenlerin arasında büyüklük, küçüklük ve eşliği karşılaştırmak için kullanılan operatörlerdir. C++ programlama dilinde sıkça kullanılan operatörlerdir.

a)> Operatörü: Sol değişkenin, sağ değişkenden büyük olup olmadığını tespit etmek için kullanılır.
b)< Operatörü: Sol değişkenin, sağ değişkenden küçük olup olmadığını tespit etmek için kullanılır.
c)>= Operatörü: Sol değişkenin, sağ değişkenden büyük eşit olup olmadığını tespit etmek için kullanılır.
d)<= Operatörü: Sol değişkenin, sağ değişkenden küçük eşit olup olmadığını tespit etmek için kullanılır.
e)== Operatörü: Sol değişkenin, sağ değişken ile eşit olup olmadığını tespit etmek için kullanılır.
f)!= Operatörü: Sol değişkenin, sağ değişken ile eşit olmadığını tespit etmek için kullanılır.

Örnek: Şimdiki yıldan, doğum yılını çıkarıp yaş yılını bulan program

#include <iostream>

using namespace std;

int main()
{

float yas;
int simdiki_yil,dogum_yili;

cout<<"Şimdiki yılı giriniz: ";
cin>>simdiki_yil;

cout<<"Doğum yılınızı giriniz: ";
cin>>dogum_yili;

yas=simdiki_yil-dogum_yili;

cout<<"Yaşınız = "<<yas<<endl;

return 0;
}


3-> Giriş-Çıkış Operatörleri
   Bu operatörler, çıkış(output), giriş(input) olarak ikiye ayrılır. C++ programlama dilinde standart giriş-çıkış kanallarından Çıkış kanalını biz şu ana kadar her programımızda kullandık. Bu operatörler;

a)<< Operatörü: Çıkış operatörüdür. Şu ana kadar cout komutu ile beraber kullandık. Çıkış operatörü, ekrana yazdırmak için kullanılır.
b)>> Operatörü: Giriş operatörüdür. Klavyeden girdi almak için cin komutu ile beraber kullanılır. Giriş operatörü, klavyeden girdi almak için kullanılır.

4-> Mantıksal Operatörler
   Bu operatörler, birden fazla ifadeyi birbirine bağlamak için kullanılır. Bu operatörler, dilimizde "ve, veya, değil" anlamlarına karşılık gelen sembollerdir.

a)&& Operatörü: "Ve" anlamını taşır. İki ifadeden her ikisinin doğru olmasını gerektiren operatördür.
b)|| Operatörü: "Veya" anlamını taşır. İki ifadeden en az birinin doğru olmasını gerektiren operatördür.
c)! Operatörü: "Değil" anlamını taşır. Her ifadenin de yanlış olmasını gerektiren durumlarda kullanılır.

5-> Arttırma ve Eksiltme Operatörleri
   C++ dilinde, değişkenlerin değerine yalnız bir sayı azaltıp, arttırmak için kullanılır. Bu operatörler ikiye ayrılır:

a)++ Operatörü: Değişkenin değerini bir arttırır. Kullanım şekilleri;
i++;   //i değişkenini bir kez kullandıktan sonra bir arttır.
++i;   //i değişkenini kullanmadan önce bir arttır.

b)-- Operatörü: Değişkenin değerini bir azaltır.
Kullanım şekilleri;

i--;   //i değişkenini bir kez kullandıktan sonra bir azalt.
--i;   //i değişkenini kullanmadan önce bir azalt.

-Standart Giriş-Çıkışlar
   Şu ana kadar C++ diline ait birer tane giriş ve çıkış operatörü gördük. Aslında bunlar en çok kullanılanlarıdır. Bir de, o kadar sık kullanılmayan iki adet öperatör daha bulunmaktadır. Bunlar, tamamen standart çıkışla bağlantılıdır.

a)cerr Komutu: Tıpkı cout komutu gibi kullanılır. Cout komutu ile arasındaki tek fark cerr komutunun önbellek(buffer) kullanmadan her türlü çıktıyı ekrana bastırmasıdır.

b)clog Komutu: Bu komut da cerr komutunun tersidir. Cerr önbellek kullanmadan her türlü çıktıyı ekrana basarken, clog komutu önbellek kullanır.

   Bir noktaya daha değineyim, cout, cin, cerr ve clog komutları C++ dilinin birer kanalıdır. Bu kanallar, konsola bağlıdır. Dosyaya bağlama işini program yapar.
Aşkın; gözü kör, kulağı sağır, dili tutuk, aklı kıttır..! Hayır yani bu halde nasıl herkesi madara ediyor onu çözemedim..

-DıLgEş-

#5
-Koşullu İfadeler
   Bazı programlarda herhangi bir koşul sağlandığında belirli bir işlem yapmak istenebilir. Örneğin, kullanıcı ismini girdiğinde şunu yap, girmediğinde bunu yap... İşte, bu derste bu engeli tamamen ortadan kaldırabileceksiniz. Lafı fazla uzatmadan hemen konuya geçelim. İlk koşullu ifademiz;

1-> İf-Else Komutu
   C++ diline ait anlaşılması ve yazılması en kolay olan koşul ifadesidir. Genel tanımı;

if(koşul)
{

   ...
   ...
   ...
}
else
{
   ...
   ...
   ...
}

   Bu şekildeki yapıya else kısmı yazılmayabilir. Yukarıdaki if-else yapısına bakıldığında önce bir koşul girmemiz istenecektir. Hatırlarsanız hemen geçen ders mantıksal operatörleri anlatmıştık. İşte, koşul bölümünde bunlardan sıkça faydalanacağız. Koşul yerine yazılabilecek bazı ifadeler;

k<123;            //k değişkeni 123 sayısından küçük mü?
isim[6]="Ahmet"   //isim Ahmet mi?
sayi>0 && sayi<100   //sayi değişkeni 0-100 aralığında mı?

   İsterseniz sayi değişkeninin 0-100 aralığında olup olmadığını örnek bir program üzerinde gösterelim:

Örnek:  Girilen sayının 0-100 arasında olup olmadığını kontrol eden program

#include <iostream>

using namespace std;

int main()
{
int sayi;

cout<<"Bir sayı giriniz: ";
cin>>sayi;

if(sayi>0 && sayi<100) //Eğer sayi 0'dan büyük ve 100'den küçük ise if içindeki kod kullanılır.
{
cout<<"Girdiğiniz sayı 0-100 arasındadır."<<endl;
}
else //else komutunun yanına herhangi bir parantez açılmaz...
{
cout<<"Girdiğiniz sayı 0-100 arasında değildir."<<endl;
}

return 0;
}


Çıktı:  Sayı 58 girilirse;

Bir sayı giriniz: 58
Girdiğiniz sayı 0-100 arasındadır.


Çıktı:  Sayı -26 girilirse;

Bir sayı giriniz: -26
Girdiğiniz sayı 0-100 arasında değildir.


2-> Else İf Komutu
   Else-if komutu birden fazla if deyiminin geçebileceği yerlerde kullanılır. Kullanım şekli;

if(koşul)
{

   ...
   ...
   ...
}
else if(2. koşul)
{

   ...
   ...
   ...
}
else if(3. koşul)
{

   ...
   ...
   ...
}
else
{
   ...
   ...
   ...
}

   Bu yapıda önce if koşuluna bakılır sağlanmazsa bir alttaki else-if bloğuna bakar. O da sağlanmaz ise diğer koşula bakar. Herhangi bir if koşulu sağlanmazsa else bloğu çalıştırılır.
   Bir programda istediğiniz kadar else-if komutu tanımlayabilirsiniz. Ancak şunu unutmayın, ne kadar çok else if komutu tanımlanırsa programın yavaş çalışma durumu olasıdır.
   Hatırlarsınız, operatörleri anlatırken, "bölme işlemi hususunda dikkat edilmesi gerekir." demiştim. Çünkü, bölünen 0 olduğunda program hata verip kapanır. İşte bunu engellemek için şimdi bir kod yazalım...

Örnek:  Bölme İşlemi

#include <iostream>

using namespace std;

int main()
{
float sayi1,sayi2,sonuc;

cout<<"1. sayıyı giriniz: ";
cin>>sayi1;

cout<<"2. sayıyı giriniz: ";
cin>>sayi2;

if(sayi2 == 0)
{
cout<<"0'a bölüm hatası..."<<endl;
}
else if(sayi2 != 0)
{
sonuc=sayi1/sayi2;
cout<<"SONUC: "<<sonuc<<endl;
}
else
{
cout<<"Yapılacak işlem bulunamadı..."<<endl;
}

return 0;
}


   C++ diline ait koşullu ifadelerinden birini öğrendiniz. C++ diline ait ikinci koşul kontrolü deyimimize geçelim.

3-> Switch-Case Deyimi
   Bu yapı, belirli bir değişken üzerinde sabit bir değer yardımıyla kontrol yapabilir. Kullanım şekli;

switch(degiskenadi)
{
   case sabitdeger1:
      ...
      ...
      ...
      break;
   case sabitdeger2:
      ...
      ...
      ...
      break;
   default:
      ...
      ...
      ...
      break;
      
}

   Bu yapı, else if ifadesine benzemektedir. Nasıl ki else if ifadesini dilediğimiz kadar yazıyorsak, burada case deyimini de o kadar yazabiliriz. Son terim olan default deyimi, tıpkı else gibidir. Eğer hiçbir case koşulu sağlanmazsa default deyimi çalıştırılır.

Örnek:

#include <iostream>

using namespace std;

int main()
{
    int sayi;

    cout<<"Bir sayı giriniz: ";
    cin>>sayi;

    switch(sayi)
    {
        case 1:
            cout<<"Girdiğiniz sayı 1"<<endl;
            break;
        case 2:
            cout<<"Girdiğiniz sayı 2"<<endl;
            break;
        case 3:
            cout<<"Girdiğiniz sayı 3"<<endl;
            break;
        case 4:
            cout<<"Girdiğiniz sayı 4"<<endl;
            break;
        case 1:
            cout<<"Girdiğiniz sayı 5"<<endl;
            break;
        default:
            cout<<"Sayı tespit edilemedi..."<<endl;
            break;
    }

    return 0;
}


   Bu programda kullanıcı 1-5 aralığında bir sayı girdiğinde bu sayı ekrana bastırılıyor ancak sayı 1-5 aralığında değil iken program, "Sayı tespit edilemedi" deyip programdan çıkmaktadır.

-İç İçe Yapılar
   C++ dilinde, bir koşul deyiminin içine bir koşul daha ve onun içine de bir koşul deyimi daha konulabilir. Bu olaya, iç içe girmiş yapılar denir. C++ dilinde bu tür yapılara sadece iki veya üç koşul deyiminin iç içe grmiş şeklini görebiliriz.
   Aynı şekilde, switch- case yapısının içine bir if yapısı, bir if yapısı içine de switch-case yapısı kullanabilir. Ancak, fazla abartıldığı takdirde program yavaş çalışır ve hatta program çökebilir. Hemen bir örnek verip dersi bitireyim:

Örnek: İç içe Girmiş Yapılar

#include <iostream>

using namespace std;

int main()
{
int x=0;
char ad[20];

if(x==0)
{
cout<<"Adınızı giriniz: ";
cin>>ad[20];

cout<<"Hoşgeldin "<<ad[20]<<" en sevdiğin sayı: ";
cin>>x; //x iki defa kullandık daha fazla da kullanabiliriz...

switch(x)
{
case 1:
cout<<"En sevdiğiniz sayı 1"<<endl;
break;
}

if(x==2)
{
cout<<"En sevdiğiniz sayı 2"<<endl;
}
else
{
cout<<"En sevdiğiniz sayı "<<x<<endl;
}
}
else //Buradaki else deyimi hiç çalıştırılmayacaktır çünkü x'i başta 0'a eşitlemiştik.
{
cout<<"x 0'a eşit değildir."<<endl;
}

return 0;
}


   Bu örnek çok karışık oldu herhalde... Mesela tab karakteri ile boşluk bırakmasaydık, bu örnekte neyin nerede olduğunu hiç anlayamazdık. Kendinizi geliştirmek açısından aşağıdaki soruları yapabilirsiniz.

SORULAR
1. 4 temel işlem yapabilen bir Hesap Makinesi programı yazınız. Bölme işleminde, bölünen 0 olduğunda hata versin ve bölme işlemini gerçekleştirmesin.
2. Klavyeden girilen bir sayının çift olup olmadığını ekrana basan programı yazınız.
Aşkın; gözü kör, kulağı sağır, dili tutuk, aklı kıttır..! Hayır yani bu halde nasıl herkesi madara ediyor onu çözemedim..

-DıLgEş-

#6
-Döngü Nedir?
   Herhangi bir işlemin, bir bloğun, vs. art arda gerçekleşmesi durumuna döngü denir. Döngüler, bir koşula bağlı çalışırlar. C++ programlama dilinde 3 çeşit döngü tipi vardır. Şimdi o döngüleri görelim;

1-> For Döngüsü
   Bu döngü tipi, C++ dilinin en çok kullanılan döngü tipidir. Genel kullanım şekli;

for(ilk değer; koşul; arttırma ve azaltma)
{
   ...
   ...
   ...
}

   İlk değer, döngüye girilmeden önce koşulu sağlayacak değişkenin başlangıç değeridir. Genel olarak, oluşturulan veya yeni bir değişkene değer ataması yapılıp döngüye girilir.
   Koşul, döngünün çalışacağı durumu belirtir. Döngü bir defa döndükten sonra, tekrar koşula bakar ve belirtilen koşul halen sağlanıyorsa döngü ikinci defa döner. Bu durum, koşul sağlanması bitene kadar devam eder.
   Arttırma ve azaltma, döngünün üstüne kurulan değişkeninin döngü sonunda ekleneceği veya çıkarılacağı miktardır.
   Şimdi, bir örnek yaparak bu döngünün nasıl kullanılacağına bakalım.

Örnek: Ekrana 10 defa "Merhaba Dünya" yazdıran program

#include <iostream>

using namespace std;

int main()
{
for(int i=0; i<10; i++)
{
cout<<"Merhaba Dünya"<<endl;
}

return 0;
}


Çıktı:

Merhaba Dünya
Merhaba Dünya
Merhaba Dünya
Merhaba Dünya
Merhaba Dünya
Merhaba Dünya
Merhaba Dünya
Merhaba Dünya
Merhaba Dünya
Merhaba Dünya


   Örneğimizde, önce i adlı bir tamsayı değişkeni tanımlayıp, daha sonra koşul olarak "i sayısının 10'dan küçük olması" diye verdik. Burada i değişkeni bir kez kullanıldıktan sonra bir arttırılır ve koşul sonlandırılıncaya kadar devam eder.

2-> While Döngüsü
   En sık kullanılan 2. döngü çeşididir. Genel yapısı if bloğuna çok benzerdir. Arttırım ve eksiltme olayı, blok içinde işlenir. Sadece koşul verilir. Kullanım şekli;

while(koşul)
{
   ...
   ...
   ...
}

   While döngüsünde, arttırma ve eksiltme olayı gerçekleşmezse döngü sonsuz sayıda devam eder.

Örnek: 3 basamaklı çift sayılar

#include <iostream>

using namespace std;

int main()
{
int i=100;

while(i>0)
{
cout<<i<<endl;
i--;
}

return 0;
}


Çıktı:

100
99
98
97
96
95
94
93
92
91
90
89
88
87
86
85
84
83
82
81
80
79
78
77
76
75
74
73
72
71
70
69
68
67
66
65
64
63
62
61
60
59
58
57
56
55
54
53
52
51
50
49
48
47
46
45
44
43
42
41
40
39
38
37
36
35
34
33
32
31
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1


   Gördüğünüz gibi, while döngüsünde i değişkeni tanımlayıp 100'den küçük sayma sayılarını ekrana bastırmış olduk. Şimdi, son döngü çeşidimize geçiyoruz.

3-> Do-While Döngüsü
   While döngüsü gibidir. Koşul, sonda sınanır ve bu nedenler döngü en az bir kere dönmüş olur. Kullanım şekli;

do
{
   ...
   ...
   ...
}while(koşul)
   Bazı durumlarda, döngü bloğu içerisindeki kodların en az bir kere çalışması gerektiğinde bu döngü çeşidi kullanılır. Şimdi, for döngüsünde yaptığımız örneği do-while döngüsü için tekrar yapalım.

Örnek:


#include <iostream>

using namespace std;

int main()
#include <iostream>

using namespace std;

int main()
{
int i=1;

do
{
i++;
cout<<i<<". Merhaba Dünya"<<endl;
} while(i<10);

return 0;
}


Çıktı:

1. Merhaba Dünya
2. Merhaba Dünya
3. Merhaba Dünya
4. Merhaba Dünya
5. Merhaba Dünya
6. Merhaba Dünya
7. Merhaba Dünya
8. Merhaba Dünya
9. Merhaba Dünya
10. Merhaba Dünya


   Gördüğünüz gibi, do-while döngüsü while döngüsüne oldukça benzer bir yapıdadır. İki döngü arasındaki tek fark biri koşul kontrolünü başta yaparken, diğeri sonda yapmasıdır.

-Break ve Continue Komutları
   Bu komutlar belirli bir bölgede durma veya devam etme için kullanılır.

1-> Break Komutu
   Break komutu, döngüyü yarıda kesmek için kullanılır. Bu komut, switch-case yapısında o yapıyı durdurma için kullanılır.

1-> Continue Komutu
   Döngüyü devam ettirmek için kullanılır. Döngünün bir alt satıra geçip geçmeyeceği bu komut elindedir.

Örnek: 0-100 aralığındaki 5 ve 5'in katları

#include <iostream>

using namespace std;

int main()
{
int x;

for(x=0; x<=100; ++x)
{
if(x%5)
continue;
cout<<x<<endl;
}

return 0;
}


Çıktı:

0
5
10
15
20
25
30
35
40
45
50
55
60
65
70
75
80
85
90
95
100


   Örneğimizde, continue komutu x sayısının 5'e kalansız bölünmeden ekrana yazılmasına Müsaade etmiyor. Böylelikle, döngü tekrar işliyor.

SORULAR
3. 4 basamaklı 11'e kalansız bölünen sayıları ekrana basan programı yazınız.
Aşkın; gözü kör, kulağı sağır, dili tutuk, aklı kıttır..! Hayır yani bu halde nasıl herkesi madara ediyor onu çözemedim..

-DıLgEş-

#7
-Fonksiyon Nedir?
   Belirli bir amaca hizmet eden ve çalıştırıldıklarında belirli bir değer veya bir işlev döndüren program parçaçıklarıdır. C++ dilinde iki çeşit fonksiyon bulunmaktadır. Bunlar;

-> C++'ın kullanıma sunduğu hazır fonksiyonlar,
-> Kullanıcı tarafından oluşturulmuş fonksiyonlar.

   Hazır fonksiyonlar, C++ dilinin başlık dosyalarında bulunur ve kullanıcı pek fazla uğraşmadan bu fonksiyonları kullanabilir.

-Fonksiyon Nasıl Tanımlanır?
   Fonksiyonlar main bloğu dışında tanımlanır. Tanımlama şekli;

<dönüş değeri tipi/veri tipi> <fonksiyon adı> (<parametreler/değişkenler>)
{
   ...
   ...
   return ...;
}

   Her fonksiyonun mutlaka dönüş tipi yazılmalıdır aksi takdirde derleyici hata verecektir. Fonksiyon bölümlerinde, parametre bölgesinin doldurulması zorunlu değildir.
   Şimdi bir fonksiyon tanımlayıp nasıl çağrıldığını bir kod üzerinde inceleyelim:

Örnek:

#include <iostream>

using namespace std;

int Kareal(int x)
{
return x*x;
}

int main()
{
int sayi;

cout<<"Karesi alınacak sayıyı giriniz: ";
cin>>sayi;

cout<<"Girdiğiniz sayının karesi "<<Kareal(sayi)<<endl;

return 0;
}


   Örneğimizde, Kareal adlı bir fonksiyon oluşturduk ve parametre olarak x adında bir değişken verdik. Daha sonra fonksiyonumuza sayi değişkeni göndererek çağırdık ve geriye sayının karesini döndürdü.

Örnek:

#include <iostream>

using namespace std;

void Hosgeldiniz()
{
cout<<"\t\t\t H O Ş G E L D İ N İ Z"<<endl;
}

int main()
{
Hosgeldiniz(); //Fonksiyonumuz çağrılıyor.

return 0;
}


-Fonksiyon Prototipi

   Fonksiyonun adı ve parametreleri dışında içeriğinin tamamlanması olayına prototip denir. Bu olayı hemen bir örnek ile açıklayalım.

Örnek:

#include <iostream>

using namespace std;

void Hosgeldiniz(); //Fonksiyon prototipi

int main()
{
Hosgeldiniz(); //Fonksiyonumuz çağrılıyor.

return 0;
}

void Hosgeldiniz() //Önceden prototip olarak tanımlanan fonksiyon içeriği
{
cout<<"\t\t\t H O Ş G E L D İ N İ Z"<<endl;
}


-Hazır Fonksiyonlar
   Başta belirttiğimiz gibi hazır fonksiyonlar, C++ dilinin bize sunduğu fonksiyonlardır. Şimdilik C++ dilinin, bize sunmuş olduğu matematiksel fonksiyonları görelim. Bu fonksiyonlar, <cmath> kütüphanesindedir.

ceil(x)      Bu fonksiyon x'i yukarı yuvarlar.
cos(x)      Bu fonksiyon x'in kosinüsünü radyan cinsinden verir.
exp(x)      Üstel fonksiyondur.(e üzeri x)
fabs(x)      Verilen sayının mutlak değerini döndürür.
floor(x)      Bu fonksiyon x'i aşağıya yuvarlar.
fmod(x, y)   Modülüs işlemini gerçekleştirir.
log(x)      Bu fonksiyon, x'in doğal logaritmasını döndürür.
log10(x)      x'in 10 tabanında logaritmasını alır.
pow(x, y)   Üs alma işlemini gerçekleştirir.(x üzeri y)
sin(x)      Bu fonksiyon x'in sinüsünü radyan cinsinden verir.
sqrt(x)      x'in karekökünü döndürür.
tan(x)      Bu fonksiyon x'in tanjantını radyan cinsinden verir.

   Şimdi gelelim bu fonksiyonlardan yuvarlama işlemini gerçekleştireni kullanmaya;

Örnek: Yuvarlama.cpp

#include <iostream>
#include <cmath> //Fonksiyonların içinde bulunduğu kütüphane

using namespace std;

int main()
{
    int sec;
    float sayi;

    cout<<"Yukarı Yuvarlama --------------------> 1"<<endl;
    cout<<"Aşağı Yuvarlama ---------------------> 2"<<endl;
    cout<<"        Seçiminiz: ";
    cin>>sec;

    switch(sec)
    {
        case 1:
            cout<<endl<<endl;
            cout<<"Yuvarlanacak sayıyı giriniz: ";
            cin>>sayi;

            cout<< "Girdiğiniz sayının yuvarlanmış hali: "<<ceil(sayi)<<endl;
            break;
        case 2:
            cout<<endl<<endl;
            cout<<"Yuvarlanacak sayıyı giriniz: ";
            cin>>sayi;

            cout<< "Girdiğiniz sayının yuvarlanmış hali: "<<floor(sayi)<<endl;
        default:
            cout<<"Güle Güle..."<<endl;
    }

    return 0;
}


   Yukarıdaki örnekte, C++ dilinin bize sunmuş olduğu hazır fonksiyonların nasıl kullanılacağını belirtmektedir. Şimdi bir de sqrt fonksiyonunu kullanarak bir örnek yapalım.

Örnek: Karekök.cpp

#include <iostream>
#include <cmath> //Matematiksel fonksiyonların tanımlı olduğu başlık dosyası

using namespace std;

int main()
{
int sayi;

cout<<"Karekökü alınacak sayıyı giriniz: ";
cin>>sayi;

cout<<sayi<<" sayısının karekökü "<<sqrt(sayi)<<" dir."

return 0;
}


   Matematiksel fonksiyonları artık kullanmayı öğrendik. Şimdilik fonksiyonları burada noktalayalım. İlerki derslerde fonksiyonlara devam edeceğiz.

SORULAR
4. <cmath> kütüphanesini de kullanarak çok amaçlı bir hesap makinesi yazınız.
5. Girilen değerlere göre, geometrik cisimlerin hacmini bulan programı yazınız.
Aşkın; gözü kör, kulağı sağır, dili tutuk, aklı kıttır..! Hayır yani bu halde nasıl herkesi madara ediyor onu çözemedim..

-DıLgEş-

#8
-Kapsam
   C++ dilinde, etkinlik alanlarına göre beş çeşit kapsam bulunur. Bu kapsam kurallarına uymayan bir kod derleme sırasında hata meydana getirir.

1-> Yerel
   Bir öbek içinde tanımlanan bir değişken o bök içinde yerel durumdadır. Bu değişken öbek dışında kullanılamaz.

2-> Fonksiyon
   Fonksiyon içinde tanımlanan değişkenler yalnız o fonksiyon içinde kullanılabilir. Başka bir fonksiyonda kullanılması mümkün değildir.

3-> Dosya
   Tüm öbek ve sınıfların dışında bildirilmiş bir tanımlayıcı dosya düzeyinde etkilidir. Bu dosya, programa dahil edilmeden kullanılamaz. Dosya içinde bulunan değişkenlere, extern anahtar sözcüğü ile erişilebilir.

4-> Aduzayı
   Aduzayları belirli bir etkinlik alanı tanımlar. Bu alan içinde tanımlanan değişkenler aynı alana dahil olurlar.

5-> Sınıf
   Bir sınıf üyesinin ismi o sınıf için yerel durumdadır. Bu isim sınıf dışında "." veya "->" operatörlerinden biri ile nesneyle birlikte kullanılabilir. Bu konuya daha sonra ayrıntılı bir şekilde deyineceğiz.

   Dediğimiz gibi, bu kurallara uyulmayan bir kod derleme esnasında bir hata ile sonuçlanır.

-Aduzayları
   Programlar büyüdükçe içinde bulunan değişken, sınıf ve fonksiyonlar da artar. C++, birbirlerinden farklı etki alanlarına sahip gruplar oluşturulmak üzere aduzayı(namespace) kavramını getirmiştir. Bir aduzayı içinde tanımlanan bir değişken veya fonksiyon, aduzayı ismi ile "::" erişim operatörü ile erişilebilir. Aduzayı tanımlama şekli;

namespace isim
{
   ...
   ...
   ...
};

   Bir aduzayı içinde değişkenler ve fonksiyonlar bulunabilir. Şimdi bir örnek yaparak aduzayı kullanım şekillerini görelim:

Örnek:

#include <iostream>

using namespace std;

namespace NS1
{
   int sayi;
};

int main()
{
    cout<<"Hoşgeldiniz... Bir sayı girin: ";
    cin>>NS1::sayi;

    cout<<"Girdiğiniz sayı: "<<NS1::sayi<<endl;

    return 0;
}


   Aduzaylarının üyelerine erişim iki türlü olur;

1. Yol
   Örneğimizde kullandığımız gibi "aduzayıismi::degiskenadi" şeklinde erişebiliriz.

1. Yol
   Aduzayı içinde bulunan tüm herşeyi program içinde açmak için, using anahtar sözcüğü kullanılır.

using namespace aduzayıismi;

   Şimdi 2. yolu kullanarak aynı örneğimizi tekrar yazalım:

Örnek:

#include <iostream>

using namespace std;

namespace NS1
{
   int sayi;
};

using namespace NS1;

int main()
{
    cout<<"Hoşgeldiniz... Bir sayı girin: ";
    cin>>sayi;

    cout<<"Girdiğiniz sayı: "<<sayi<<endl;

    return 0;
}


   Eğer aduzayımız için daha başka değişkenler veya fonksiyonlar bulunsaydı onların hepsi kullanıma açılırdı.

Örnek:

#include <iostream>

using namespace std;

namespace isim
{
    int sayi=6;

    int Kareal(int x)
    {
        return x*x;
    }
};

using namespace isim;

int main()
{
    cout<<Kareal(sayi)<<endl;

    return 0;
}


   Örneğimizde aduzayı içinde bir fonksiyon ve bir değişken tanımlayarak bunları ekrana yazdırıyoruz. Böylece aduzayı içinde bir fonksiyon  çağırmayı da öğrenmiş olduk.

-Kod Öbekleri
   Bir kod öbeği içinde tanımlanan bir değişken veya fonksiyon yalnız o bek içinde kullanılabilir. Buna örnek olarak;

for(int i=0; i<10; ++i)
{
   ...
   ...
   ...
}

   For döngüsünü verebiliriz. Hatırlarsanız for döngüsünde tanımladığımız i değişkenini sadece döngü içinde kullanabiliyorduk. Eğer bunu döngü dışında kullansaydık derleyici bize "i değişkeni tanımlanmamış" diye bir hata verecekti.

-Satıriçi Fonksiyonlar
   Bu fonksiyonlar programın çalışma hızını arttırır. Satıriçi fonksiyonlar inline anahtar sözcüğü ile tanımlanır. Bir satıriçi fonksiyon prototip olarak tanımlanamaz. Satıriçi fonksiyonlar isminin belirtildiği yerde bedeniyle birlikte tanımlanır. Genel tanımlama şekli;

inline <dönüş değeri tipi/veri tipi> <fonksiyon adı> (<parametreler/değişkenler>)
{
   ...
   ...
   ...
}

   Satıriçi fonksiyonların, normal bir fonksiyondan farkı yoktur. Ancak satıriçi fonksiyonlar kod etkinliğini arttırır.
   Satıriçi fonksiyonların içini mümkün olduğunca uzatmayın. Aksi takdirde kod yavaş derlenebilir.

Örnek:

#include <iostream>

using namespace std;

int sayi=9;

inline int Kareal(int x)
{
    return x*x;
}


int main()
{
    cout<<Kareal(sayi)<<endl;

    return 0;
}


   C++'ın temel özelliklerini bu kadarla yetinelim. Geri kalanlarını daha sonra göreceğiz.
Aşkın; gözü kör, kulağı sağır, dili tutuk, aklı kıttır..! Hayır yani bu halde nasıl herkesi madara ediyor onu çözemedim..

Amenofis

Eline sağlık uğraşıyorsun. Fakat kullandığın kaynak eski sanırım, bazı kritik hatalar var. (Sadece son konuya baktım).

C++ ta fonksiyonların dönüş tipi mutlaka yazılmalı. Yazılmazsa int kabul edilmez ve derlenmez.
Dönüş tipi void olsa bile return kullanılabilir.
Fonksiyon parametre almıyorsa boş bırakılır, void yazılmaz.
İsmi olmayan fonksiyon olabilir.

-DıLgEş-

Alıntı yapılan: AmenofisEline sağlık uğraşıyorsun. Fakat kullandığın kaynak eski sanırım, bazı kritik hatalar var. (Sadece son konuya baktım).

C++ ta fonksiyonların dönüş tipi mutlaka yazılmalı. Yazılmazsa int kabul edilmez ve derlenmez.
Dönüş tipi void olsa bile return kullanılabilir.
Fonksiyon parametre almıyorsa boş bırakılır, void yazılmaz.
İsmi olmayan fonksiyon olabilir.
Aslında benim öğrendiğim kaynağın konuların akış sırasına göre yazıyorum. O kaynakta öyle yazıldığı için benim aklımda da oyle kaldı.
Aşkın; gözü kör, kulağı sağır, dili tutuk, aklı kıttır..! Hayır yani bu halde nasıl herkesi madara ediyor onu çözemedim..

WhereIsMyMind

#11
Merhaba ben C/C++ konusunda programlamaya meraklıyım daha önce mikrodenetleyicileri progaramlarken kullanmıştım ama oradakilerde hazır sayılrıdı adam gibi bir bilgim yok algoritma oluşturma vs gibi.
Buradan biraz da olsa başlamak istiyorum Fedeon Kadifeli'nin kitabını biraz okudum. Bir de linux da yeni olunca bir şey sormak istedim kodları terminalden derliyoruz sanırım. Önerdiğiniz bir IDE varmı ? Gedit kullanmak istemiyorum çünkü noktalama hataları vs yaptığımda hataları göstercek bir şey lazım. Teşekkürler. Unutmadan bir şey daha sizce C mi C++ mı örenmeliyim mikrodenetleyici programlarken de C kullandığım için c++ öğrenmem sıkıntı çıkarırı mı ? yani kod uyuşmazlığı vs.

Edit: Bir kaç deneme yaptıktan sonra teminalin hataları gösterdiğini fark ettim :D hocam bir şey sormak istiyorum bende hello world programında teminaldeki çıkış ;
Merhaba Dünyaberkcan@berkcan:~$
şeklinde oluyor.

Ubuntu ÖZGÜRLÜKÜTÜR

heartsmagic

Alıntı yapılan: WhereIsMyMind - 01 Haziran 2015 - 23:50:29
Bir de linux da yeni olunca bir şey sormak istedim kodları terminalden derliyoruz sanırım. Önerdiğiniz bir IDE varmı ? Gedit kullanmak istemiyorum çünkü noktalama hataları vs yaptığımda hataları göstercek bir şey lazım.

https://forum.ubuntu-tr.net/index.php?topic=25450.0

Alıntı Yap
Teşekkürler. Unutmadan bir şey daha sizce C mi C++ mı örenmeliyim mikrodenetleyici programlarken de C kullandığım için c++ öğrenmem sıkıntı çıkarırı mı ? yani kod uyuşmazlığı vs.

Emin ol bu soruya verilmiş birçok cevabı Google'da bulabilirsin.

Alıntı Yap
Edit: Bir kaç deneme yaptıktan sonra teminalin hataları gösterdiğini fark ettim :D hocam bir şey sormak istiyorum bende hello world programında teminaldeki çıkış ;
Merhaba Dünyaberkcan@berkcan:~$
şeklinde oluyor.

Yeni satır?
cout<<"Merhaba dünya\n";
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

-DıLgEş-

#13
Eğer az çok C dili biliyorsanız C++ öğrenirken hiç sıkıntı çekmezsiniz. Ancak C ile C++ komutları birbiriyle karıştırılabiliyor bazen. Ben C++ a hiçbir dil bilmeden başlamıştım ve sadece aşırı yüklenme konusunda biraz sıkıntı çekmiştim.

C++'ta yeni satır endl komutu ile de olabiliyor. Örnek:
cout<<"Merhaba Dünya."<<endl;[\code]
Aşkın; gözü kör, kulağı sağır, dili tutuk, aklı kıttır..! Hayır yani bu halde nasıl herkesi madara ediyor onu çözemedim..

dbedel

   Hocam öncelikle elinize sağlık. Ufak bir soru sormak istiyorum, ben genelde elimde yazılı kaynak olmasını severim. Sizin anlattıklarınız ile kafamda birşeyler şekillenmeye başladı. Şimdi ise bir kitap almayı düşünüyorum. Aklıma takılan en büyük konu ise eğer bu kitabı aldığım zaman kitap üzerinde ki uygulamaları ubuntu üzerinden yapabilir miyim? Mesela bazı konularda, arkadaşlar linux üzerinden c++ derlerken bağzı kütüpaneleri görmediğini hata verdiğini söylediler. Kitapla birlikte linux üzerinden eşzamanlı olarak çalışabilir miyim?

Lafı gereğinden fazla uzattıysam lütfen affedin... ☺

Reverser

Kitap alacaksanız deitel&deitel tavsiye ederim onun dışında fazla sorun olmayacaktır takıldığınız bir şey olursa buradan yardımcı oluruz. :)

XFCE ROCKS !
Powered by Thunar & XFWM4



dbedel

#16
Peki bu kitap ingilizce mi Türkce mi ?


Kitap türkçeymiş. Baya güzel görünüyor sanırım onu alacağım...

ekremsenturk

Kitap piyasada bulunmuyor diye biliyorum.

Reverser

4 sene önce bağdat caddesi d&r dan almıştım o kadar zor bulunan bir kitap değil.

XFCE ROCKS !
Powered by Thunar & XFWM4



dbedel

#19
Kitap kesinlikle piyasada yok. 2. elini bile bulamadım. Başka kitaplara bakacağız artık. 4 senede çok şey değişmiş anlaşılan ... ☺☺

Reverser

Her kitap bir şeyler katacaktır size ama ben yinede Deitel&Deitel bulmaya çalışın derim :) D&R arayıp sorgulatın kitabı illaki çıkar.

XFCE ROCKS !
Powered by Thunar & XFWM4



dbedel

#21
Karar verdim, bu kitabı alacağım. Umarım ubuntu da sorun çıkarmaz.. Sanırım kitaptaki uygulamaları netbeans ile de yapsam olur, kitap dev-c kullanmış ne dersiniz?


Bıktım artık windowstan her yerde önümüzü kapatıyor..

Amenofis

Alıntı yapılan: dbedel - 20 Haziran 2015 - 19:20:11
Karar verdim, bu kitabı alacağım. Umarım ubuntu da sorun çıkarmaz.. Sanırım kitaptaki uygulamaları netbeans ile de yapsam olur, kitap dev-c kullanmış ne dersiniz?


Bıktım artık windowstan her yerde önümüzü kapatıyor..

Programlama konusunda sorun çıkaracak olan windowstur. Linux sistemlerinde herşey basit.

Yanlız o kitabı ve ismi duyulmamış hiçbir kaynağı tavsiye etmem boşuna para vermeyin hiçbir işinize yaramaz. C konusunda en iyi iki kaynak pdf olarak internette var. Birisi meşhur Deitel, kendisi ücretli ama piyasada baskısı yok artık. Bu yüzden netteki pdf ye dönüştürülmüş halini kullanmaktan başka çare yok. Diğeri C derneğinin 2 numarası Necati Ergin'in ders notları, 500 küsür sayfadır. Aratın bulursunuz.

Sh4oTT

Anlatım icin cok tesekkurler eline gözüne saglık

-DıLgEş-

-Dizi Nedir?
   Bellekte ardışıl bir biçimde dizilmiş aynı türden nesnelerin oluşturduğu veri yapısına dizi denir. Diziler şu şekilde tanımlanır;

<veri tipi> <diziadi>[diziboyutu];

   Aşağıda örnek dizi tanımlama şekilleri verilmiştir:

Örnek:

float ders_notu[19]; //20 elemandan oluşan dizi...
double sayi[10]; //11 elemandan oluşan dizi...
int a[4]; //5 elemandan oluşan dizi...


   Farkındaysanız, yazdığımız eleman sayıysı ile oluşan eleman sayısı arasında bir sayı fark var. Bu farkın sebebi, C++ dilinde dizilerin ilk elemanı 0. indexte bulunmasıdır.

   Buradaki a dizisindeki elemanları şu şekilde atayabiliriz:

a
  • [/color]=8
    a[1]=3
    a[2]=7
    a[3]=5
    a[4]=2

       Dizi elemanlarını tanımlama esnasında şu şekilde tanımlayabiliriz:

    int a[4]={8,  3, 7, 5, 2};

          Diziler bu şekilde tanımlanabilir. Şimdi, on elemanlı bir dizi oluşturalım ve kullanıcını bu diziyi doldurmasını sağlayalım.

    Örnek:

    #include <iostream>

    using namespace std;

    int dizi[9];

    int main()
    {
        for(int i=0; i<10; i++)
        {
            cout<<i<<". elemanı giriniz: "; //Kullanıcı diye elemanları ekliyor...
            cin>>dizi[i];
        }

        cout<<"Girdiğiniz dizinin elemanları:";

        for(int i=0; i<10; i++)
        {
            cout<<" "<<dizi[i]; //Dizi elemanları gösteriliyor...
        }

        return 0;
    }


    -Dizi Tanımlama Kuralları
       Diziler, C++'ın belirttiği kurallara uymaz ise derleyici hata verecektir. Bu kurallar;

    1. Değişken tanımlama kuralları, dizi tanımlamada da geçerlidir.
    2. Dizi boyutu tamsayı bir değer olmak zorundadır.
    3. Dizi boyutu negatifli bir değer olmak zorundadır.
    4. Aynı isimde iki dizi tanımlanamaz.
    5. Dizilerin boyutu verilmek zorunda değildir. Dizi tıpkı boyutu belirlenmiş gibi kullanılabilir.

       Şimdiye kadar tek boyutlu dizileri tanımlamayı ve değer vermeyi öğrenmiş olduk. Bir de iki boyutlu diziler var. İki boyutlu diziler C++ dilinde daha sık kullanılan dizilerdir.

    -İki Boyutlu Diziler
       İki boyutlu diziler, bir tablo gibi satır ve sütünlardan oluşur. Örneğin;


       Böyle bir diziyi tek boyutlu dizi şeklinde tanımlamak mümkün değildir. İki boyutlu diziler şu şekilde tanımlanır:

    <veri tipi> <dizi adı> [1.index boyutu] [2. index boyutu];

       Burada 1. index boyutunu satır, 2. index boyutunu ise sütun olarak adlandırabilir. Şimdi, yukarıdaki gibi bir 4*5 matrisini kodlayalım:

    Örnek:

    #include <iostream>

    using namespace std;

    int main()
    {
        int matris[4] [5]={{1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15},{16,17,18,19,20}};

        for(int i=0; i<4; i++)
        {
            for(int j=0; j<5; j++)
            {
                cout<<matris[i][j]<<"\t";
            }

            cout<<endl;
        }

        return 0;
    }


       Bu kodu derlediğimizde çıktı yukarıda yapmak istediğimiz matrisi verecektir. Peki iki boyutlu bir diziyi kullanıcıya doldurup, ekrana nasıl veririz? Şimdi, bu kodu yazalım.

    Örnek:

    #include <iostream>

    using namespace std;

    int main()
    {
        int matris[4] [5];  //Dizi 4*5 olarak tanımlandı

        for(int i=0; i<4; i++)
        {
            for(int j=0; j<5; j++)
            {
                cout<<"["<<i<<"]"<<"["<<j<<"]"<<" elemanını giriniz: ";
                cin>>matris[i][j];
            }

            cout<<endl;
        }

        for(int i=0; i<4; i++)
        {
            for(int j=0; j<5; j++)
            {
                cout<<matris[i][j]<<"\t";
            }

            cout<<endl;
        }

        return 0;
    }


       Gördüğünüz gibi, kullanıcıya doldurma işlemini şu satır yapmaktadır;


    for(int i=0; i<4; i++)
    {
    for(int j=0; j<5; j++)
        {
    cout<<"["<<i<<"]"<<"["<<j<<"]"<<" elemanını giriniz: ";
            cin>>matris[i][j];
        }

        cout<<endl;
    }


       Burada i ve j değerleri sırasıyla dizi index değerleri üzerinde hareket edip kullanıcıdan değerler almaktadır. İşte, iki boyutlu diziler, böyle işlenirler.

    -Çok Boyutlu Diziler
       3 veya daha fazla boyutlu dizilerdir. Bu tür dizilerde program okunaklığı azalmaktadır. Çok boyutlu diziler şu şekilde tanımlanırlar;

    <veri tipi> <dizi adı> [1.index boyutu] [2.index boyutu] [3.index boyutu] [n. index boyutu];

       Çok boyutlu diziler, C++ dilinde pek kullanılmazlar. Genellikle tek veya iki boyutlu diziler kullanılır. Çok boyutlu diziler ile bir örnek yapıp, bu dersi bitirelim.

    Örnek:

    #include <iostream>

    using namespace std;

    int main()
    {
        int matris[3] [3] [3];  //Dizi 3*3*3 olarak tanımlandı

        for(int i=0; i<3; i++)
        {
            for(int j=0; j<3; j++)
            {
                for(int k=0; k<3; k++)
                {
                    cout<<"["<<i<<"]"<<"["<<j<<"]"<<"["<<k<<"]"<<" elemanını giriniz: ";
                    cin>>matris[i][j][k];
                }
            }

            cout<<endl;
        }

        for(int i=0; i<3; i++)
        {
            for(int j=0; j<3; j++)
            {
                for(int k=0; k<3; k++)
                {
                    cout<<matris[i][j][k]<<"\t";
                }
                cout<<endl;
            }

            cout<<endl;
        }

        return 0;
    }


       Gördüğünüz gibi program yavaş yavaş karışmaya başladı. Eğer 5-6 boyutlu bir dizi tanımlasaydık, 2 saat sonra bu programda ne yaptığımızı anlayamacağız. İşte bu yüzden, dizi tanımlanırken 3 boyutlu dizinin üstüne çıkılmaması bir avantajdır.
       Diziler float, double, int olabilir. Ancak char karakter dizileri daha farklı işlenmektedir. Bunu gelecek ders göreceğiz.

    SORULAR
    1. İki boyutlu dizilerde 4*4'lük bir dizi oluşturun. Ancak, bunu yukarıdaki kodlara bakmadan yapmayı deneyin.
    2. Başta bir dizi oluşturarak bu dizi elemanlarını for döngüsü kullanarak değiştirin.
    3. Bir dizi tanımlayarak, hiç değer vermeyin ve diziyi ekrana bastırmaya çalışın. C++ dilinde, dizilere otomatik olarak hangi değerler aktarıldığını görün.
Aşkın; gözü kör, kulağı sağır, dili tutuk, aklı kıttır..! Hayır yani bu halde nasıl herkesi madara ediyor onu çözemedim..