exploit paylaşım grubumuz: t.me/HTTPwnn

mala anlatır gibi C 7 (Diziler Arrays)

Katılım
16 Haz 2026
Mesaj
111
Reaksiyon
83
xentr_thread_starter
╔════════════════════════════════════════════════════════════════════╗
║ C PROGRAMLAMA DİLİ EĞİTİM SERİSİ #7 ║
║ DİZİLER (ARRAYS) ║
║ (Mala Anlatır Gibi) ║
╚════════════════════════════════════════════════════════════════════╝

Önceki bölümde fonksiyonları öğrendik.

Artık:

✓ Kodlarımızı parçalara ayırabiliyoruz

✓ Tekrar eden kodlardan kurtulabiliyoruz

✓ Daha profesyonel programlar yazabiliyoruz

Fakat yeni bir problem ortaya çıktı.

Bir öğrencinin notunu saklamak istiyoruz.

Kolay.

int not1 = 80;

Peki iki öğrenci?

int not1 = 80;
int not2 = 90;

Peki on öğrenci?

int not1;
int not2;
int not3;
int not4;
int not5;
int not6;
int not7;
int not8;
int not9;
int not10;

Şimdiden görüntü kötüleşmeye başladı.

Peki bin öğrenci?

İşte burada DİZİLER ortaya çıkar.

════════════════════════════════════════════════════════════════════

▓▓▓ DİZİ (ARRAY) NEDİR?

Dizi, aynı veri türündeki birden fazla veriyi tek isim altında saklayan yapıdır.

Gerçek hayat örneği:

Bir apartman düşün.

Apartmanın adı:

Ogrenciler

Daireler:

0
1
2
3
4

Her dairede farklı biri yaşıyor.

Ama hepsi aynı apartmanın içinde.

Diziler de tam olarak böyle çalışır.

════════════════════════════════════════════════════════════════════

▓▓▓ İLK DİZİMİZ

int notlar[5];

Bu satırın anlamı:

Bellekte 5 tane int için yer ayır.

Şöyle görünür:

notlar[0]
notlar[1]
notlar[2]
notlar[3]
notlar[4]

Toplam:

5 adet eleman

════════════════════════════════════════════════════════════════════

▓▓▓ EN ÖNEMLİ KURAL

C dili saymaya 0'dan başlar.

Yeni başlayanların yarısı burada hata yapar.

Şu diziye bakalım:

int sayilar[5];

Birçok kişi şöyle düşünür:

sayilar[1]
sayilar[2]
sayilar[3]
sayilar[4]
sayilar[5]

YANLIŞ.

Doğrusu:

sayilar[0]
sayilar[1]
sayilar[2]
sayilar[3]
sayilar[4]

Yani:

  1. eleman = sayilar[0]
  2. eleman = sayilar[1]
  3. eleman = sayilar[2]
şeklindedir.

════════════════════════════════════════════════════════════════════

▓▓▓ DİZİYE DEĞER ATAMA

int notlar[5];

notlar[0] = 70;
notlar[1] = 80;
notlar[2] = 90;
notlar[3] = 60;
notlar[4] = 100;

Belleğin görünümü:

[70]
[80]
[90]
[60]
[100]

════════════════════════════════════════════════════════════════════

▓▓▓ DİZİDEKİ DEĞERİ OKUMA

#include <stdio.h>

int main()
{
int notlar[3];

notlar[0] = 50;
notlar[1] = 75;
notlar[2] = 100;

printf("%d\n", notlar[0]);
printf("%d\n", notlar[1]);
printf("%d\n", notlar[2]);

return 0;

}

ÇIKTI

50
75
100

════════════════════════════════════════════════════════════════════

▓▓▓ KISA YOLDAN DİZİ TANIMLAMA

Şunu yapmak yerine:

int sayilar[5];

sayilar[0] = 10;
sayilar[1] = 20;
sayilar[2] = 30;
sayilar[3] = 40;
sayilar[4] = 50;

Şunu yazabiliriz:

int sayilar[5] = {10,20,30,40,50};

Aynı sonucu verir.

════════════════════════════════════════════════════════════════════

▓▓▓ FOR İLE DİZİ GEZME

Dizilerin gerçek gücü burada ortaya çıkar.

Örnek:

#include <stdio.h>

int main()
{
int sayilar[5] = {10,20,30,40,50};

for(int i=0; i<5; i++)
{
printf("%d\n", sayilar);
}

return 0;
}

ÇIKTI

10
20
30
40
50

Tek tek yazmak yerine döngü kullandık.

Profesyonel kod budur.

════════════════════════════════════════════════════════════════════

▓▓▓ i DEĞİŞKENİ NEYİ TEMSİL EDİYOR?

for(int i=0; i<5; i++)

İlk tur:

i = 0

sayilar[0]

İkinci tur:

i = 1

sayilar[1]

Üçüncü tur:

i = 2

sayilar[2]

Şeklinde ilerler.

════════════════════════════════════════════════════════════════════

▓▓▓ KULLANICIDAN DİZİYE VERİ ALMA

#include <stdio.h>

int main()
{
int sayilar[5];

for(int i=0; i<5; i++)
{
printf("%d. sayiyi gir: ", i+1);
scanf("%d", &sayilar);
}

return 0;
}

Kullanıcıdan alınan değerler doğrudan diziye kaydedilir.

════════════════════════════════════════════════════════════════════

▓▓▓ DİZİYİ GERİ YAZDIRMA

#include <stdio.h>

int main()
{
int sayilar[5];

for(int i=0; i<5; i++)
{
scanf("%d", &sayilar);
}

printf("\nGirilen Sayilar:\n");

for(int i=0; i<5; i++)
{
printf("%d\n", sayilar);
}

return 0;
}

════════════════════════════════════════════════════════════════════

▓▓▓ DİZİ ELEMANLARINI TOPLAMA

Örnek:

10
20
30
40
50

Toplam:

150

Kod:

#include <stdio.h>

int main()
{
int sayilar[5] = {10,20,30,40,50};

int toplam = 0;

for(int i=0; i<5; i++)
{
toplam += sayilar;
}

printf("%d", toplam);

return 0;
}

ÇIKTI

150

════════════════════════════════════════════════════════════════════

▓▓▓ ORTALAMA HESAPLAMA

#include <stdio.h>

int main()
{
int notlar[5] = {50,60,70,80,90};

int toplam = 0;

for(int i=0; i<5; i++)
{
toplam += notlar;
}

printf("Ortalama = %d", toplam/5);

return 0;
}

ÇIKTI

Ortalama = 70

════════════════════════════════════════════════════════════════════

▓▓▓ EN BÜYÜK SAYIYI BULMA

Dizilerde çok kullanılan işlemlerden biridir.

Örnek:

5
17
92
14
33

En büyük:

92

Kod:

int sayilar[5] = {5,17,92,14,33};

int enBuyuk = sayilar[0];

for(int i=1; i<5; i++)
{
if(sayilar > enBuyuk)
{
enBuyuk = sayilar;
}
}

printf("%d", enBuyuk);

════════════════════════════════════════════════════════════════════

▓▓▓ EN KÜÇÜK SAYIYI BULMA

Mantık tamamen aynı.

int sayilar[5] = {5,17,92,14,33};

int enKucuk = sayilar[0];

for(int i=1; i<5; i++)
{
if(sayilar < enKucuk)
{
enKucuk = sayilar;
}
}

printf("%d", enKucuk);

ÇIKTI

5

════════════════════════════════════════════════════════════════════

▓▓▓ EN SIK YAPILAN HATA

int sayilar[5];

sayilar[5] = 100;

Bu hata çok tehlikelidir.

Çünkü:

sayilar[0]
sayilar[1]
sayilar[2]
sayilar[3]
sayilar[4]

vardır.

sayilar[5] yoktur.

Belleğin dışına çıkmış olursun.

Buna:

Array Out Of Bounds

denir.

Gerçek projelerde ciddi hatalara neden olabilir.

════════════════════════════════════════════════════════════════════

▓▓▓ DİZİLER NEREDE KULLANILIR?

• Öğrenci notları

• Kullanıcı listeleri

• Oyun skorları

• Sensör verileri

• Ağ paketleri

• Dosya verileri

• Resimler

• Ses dosyaları

Aslında bilgisayardaki birçok veri diziler halinde tutulur.

════════════════════════════════════════════════════════════════════

▓▓▓ MİNİ PROJE #1

1'DEN 10'A KADAR SAYILARI DİZİYE AKTARMA

#include <stdio.h>

int main()
{
int sayilar[10];

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

for(int i=0; i<10; i++)
{
printf("%d\n", sayilar);
}

return 0;
}

════════════════════════════════════════════════════════════════════

▓▓▓ MİNİ PROJE #2

DİZİDEKİ ÇİFT SAYILARI BULMA

int sayilar[5] = {10,15,20,25,30};

for(int i=0; i<5; i++)
{
if(sayilar % 2 == 0)
{
printf("%d\n", sayilar);
}
}

ÇIKTI

10
20
30

════════════════════════════════════════════════════════════════════

▓▓▓ MİNİ PROJE #3

DİZİDE KAÇ TANE 50 VAR?

int sayilar[10] =
{
50,10,50,30,40,
50,60,50,80,90
};

int adet = 0;

for(int i=0; i<10; i++)
{
if(sayilar == 50)
{
adet++;
}
}

printf("%d", adet);

ÇIKTI

4

════════════════════════════════════════════════════════════════════

✓ BÖLÜM ÖZETİ

Bu bölümde:

✓ Dizi nedir

✓ Dizi oluşturma

✓ Diziye veri atama

✓ Dizi elemanlarını okuma

✓ For ile dizi kullanımı

✓ Kullanıcıdan veri alma

✓ Toplam hesaplama

✓ Ortalama hesaplama

✓ En büyük sayı bulma

✓ En küçük sayı bulma

✓ Array Out Of Bounds hatası

✓ Gerçek hayat kullanım alanları

konularını öğrendik.

Bir sonraki bölümde STRINGLER (Karakter Dizileri), strlen(), strcpy(), strcmp() ve metin işlemlerine geçeceğiz.
 
╔════════════════════════════════════════════════════════════════════╗
║ C PROGRAMLAMA DİLİ EĞİTİM SERİSİ #7 ║
║ DİZİLER (ARRAYS) ║
║ (Mala Anlatır Gibi) ║
╚════════════════════════════════════════════════════════════════════╝

Önceki bölümde fonksiyonları öğrendik.

Artık:

✓ Kodlarımızı parçalara ayırabiliyoruz

✓ Tekrar eden kodlardan kurtulabiliyoruz

✓ Daha profesyonel programlar yazabiliyoruz

Fakat yeni bir problem ortaya çıktı.

Bir öğrencinin notunu saklamak istiyoruz.

Kolay.

int not1 = 80;

Peki iki öğrenci?

int not1 = 80;
int not2 = 90;

Peki on öğrenci?

int not1;
int not2;
int not3;
int not4;
int not5;
int not6;
int not7;
int not8;
int not9;
int not10;

Şimdiden görüntü kötüleşmeye başladı.

Peki bin öğrenci?

İşte burada DİZİLER ortaya çıkar.

════════════════════════════════════════════════════════════════════

▓▓▓ DİZİ (ARRAY) NEDİR?

Dizi, aynı veri türündeki birden fazla veriyi tek isim altında saklayan yapıdır.

Gerçek hayat örneği:

Bir apartman düşün.

Apartmanın adı:

Ogrenciler

Daireler:

0
1
2
3
4

Her dairede farklı biri yaşıyor.

Ama hepsi aynı apartmanın içinde.

Diziler de tam olarak böyle çalışır.

════════════════════════════════════════════════════════════════════

▓▓▓ İLK DİZİMİZ

int notlar[5];

Bu satırın anlamı:

Bellekte 5 tane int için yer ayır.

Şöyle görünür:

notlar[0]
notlar[1]
notlar[2]
notlar[3]
notlar[4]

Toplam:

5 adet eleman

════════════════════════════════════════════════════════════════════

▓▓▓ EN ÖNEMLİ KURAL

C dili saymaya 0'dan başlar.

Yeni başlayanların yarısı burada hata yapar.

Şu diziye bakalım:

int sayilar[5];

Birçok kişi şöyle düşünür:

sayilar[1]
sayilar[2]
sayilar[3]
sayilar[4]
sayilar[5]

YANLIŞ.

Doğrusu:

sayilar[0]
sayilar[1]
sayilar[2]
sayilar[3]
sayilar[4]

Yani:

  1. eleman = sayilar[0]
  2. eleman = sayilar[1]
  3. eleman = sayilar[2]
şeklindedir.

════════════════════════════════════════════════════════════════════

▓▓▓ DİZİYE DEĞER ATAMA

int notlar[5];

notlar[0] = 70;
notlar[1] = 80;
notlar[2] = 90;
notlar[3] = 60;
notlar[4] = 100;

Belleğin görünümü:

[70]
[80]
[90]
[60]
[100]

════════════════════════════════════════════════════════════════════

▓▓▓ DİZİDEKİ DEĞERİ OKUMA

#include <stdio.h>

int main()
{
int notlar[3];

notlar[0] = 50;
notlar[1] = 75;
notlar[2] = 100;

printf("%d\n", notlar[0]);
printf("%d\n", notlar[1]);
printf("%d\n", notlar[2]);

return 0;

}

ÇIKTI

50
75
100

════════════════════════════════════════════════════════════════════

▓▓▓ KISA YOLDAN DİZİ TANIMLAMA

Şunu yapmak yerine:

int sayilar[5];

sayilar[0] = 10;
sayilar[1] = 20;
sayilar[2] = 30;
sayilar[3] = 40;
sayilar[4] = 50;

Şunu yazabiliriz:

int sayilar[5] = {10,20,30,40,50};

Aynı sonucu verir.

════════════════════════════════════════════════════════════════════

▓▓▓ FOR İLE DİZİ GEZME

Dizilerin gerçek gücü burada ortaya çıkar.

Örnek:

#include <stdio.h>

int main()
{
int sayilar[5] = {10,20,30,40,50};

for(int i=0; i<5; i++)
{
printf("%d\n", sayilar);
}

return 0;
}

ÇIKTI

10
20
30
40
50

Tek tek yazmak yerine döngü kullandık.

Profesyonel kod budur.

════════════════════════════════════════════════════════════════════

▓▓▓ i DEĞİŞKENİ NEYİ TEMSİL EDİYOR?

for(int i=0; i<5; i++)

İlk tur:

i = 0

sayilar[0]

İkinci tur:

i = 1

sayilar[1]

Üçüncü tur:

i = 2

sayilar[2]

Şeklinde ilerler.

════════════════════════════════════════════════════════════════════

▓▓▓ KULLANICIDAN DİZİYE VERİ ALMA

#include <stdio.h>

int main()
{
int sayilar[5];

for(int i=0; i<5; i++)
{
printf("%d. sayiyi gir: ", i+1);
scanf("%d", &sayilar);
}

return 0;
}

Kullanıcıdan alınan değerler doğrudan diziye kaydedilir.

════════════════════════════════════════════════════════════════════

▓▓▓ DİZİYİ GERİ YAZDIRMA

#include <stdio.h>

int main()
{
int sayilar[5];

for(int i=0; i<5; i++)
{
scanf("%d", &sayilar);
}

printf("\nGirilen Sayilar:\n");

for(int i=0; i<5; i++)
{
printf("%d\n", sayilar);
}

return 0;
}

════════════════════════════════════════════════════════════════════

▓▓▓ DİZİ ELEMANLARINI TOPLAMA

Örnek:

10
20
30
40
50

Toplam:

150

Kod:

#include <stdio.h>

int main()
{
int sayilar[5] = {10,20,30,40,50};

int toplam = 0;

for(int i=0; i<5; i++)
{
toplam += sayilar;
}

printf("%d", toplam);

return 0;
}

ÇIKTI

150

════════════════════════════════════════════════════════════════════

▓▓▓ ORTALAMA HESAPLAMA

#include <stdio.h>

int main()
{
int notlar[5] = {50,60,70,80,90};

int toplam = 0;

for(int i=0; i<5; i++)
{
toplam += notlar;
}

printf("Ortalama = %d", toplam/5);

return 0;
}

ÇIKTI

Ortalama = 70

════════════════════════════════════════════════════════════════════

▓▓▓ EN BÜYÜK SAYIYI BULMA

Dizilerde çok kullanılan işlemlerden biridir.

Örnek:

5
17
92
14
33

En büyük:

92

Kod:

int sayilar[5] = {5,17,92,14,33};

int enBuyuk = sayilar[0];

for(int i=1; i<5; i++)
{
if(sayilar > enBuyuk)
{
enBuyuk = sayilar;
}
}

printf("%d", enBuyuk);

════════════════════════════════════════════════════════════════════

▓▓▓ EN KÜÇÜK SAYIYI BULMA

Mantık tamamen aynı.

int sayilar[5] = {5,17,92,14,33};

int enKucuk = sayilar[0];

for(int i=1; i<5; i++)
{
if(sayilar < enKucuk)
{
enKucuk = sayilar;
}
}

printf("%d", enKucuk);

ÇIKTI

5

════════════════════════════════════════════════════════════════════

▓▓▓ EN SIK YAPILAN HATA

int sayilar[5];

sayilar[5] = 100;

Bu hata çok tehlikelidir.

Çünkü:

sayilar[0]
sayilar[1]
sayilar[2]
sayilar[3]
sayilar[4]

vardır.

sayilar[5] yoktur.

Belleğin dışına çıkmış olursun.

Buna:

Array Out Of Bounds

denir.

Gerçek projelerde ciddi hatalara neden olabilir.

════════════════════════════════════════════════════════════════════

▓▓▓ DİZİLER NEREDE KULLANILIR?

• Öğrenci notları

• Kullanıcı listeleri

• Oyun skorları

• Sensör verileri

• Ağ paketleri

• Dosya verileri

• Resimler

• Ses dosyaları

Aslında bilgisayardaki birçok veri diziler halinde tutulur.

════════════════════════════════════════════════════════════════════

▓▓▓ MİNİ PROJE #1

1'DEN 10'A KADAR SAYILARI DİZİYE AKTARMA

#include <stdio.h>

int main()
{
int sayilar[10];

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

for(int i=0; i<10; i++)
{
printf("%d\n", sayilar);
}

return 0;
}

════════════════════════════════════════════════════════════════════

▓▓▓ MİNİ PROJE #2

DİZİDEKİ ÇİFT SAYILARI BULMA

int sayilar[5] = {10,15,20,25,30};

for(int i=0; i<5; i++)
{
if(sayilar % 2 == 0)
{
printf("%d\n", sayilar);
}
}

ÇIKTI

10
20
30

════════════════════════════════════════════════════════════════════

▓▓▓ MİNİ PROJE #3

DİZİDE KAÇ TANE 50 VAR?

int sayilar[10] =
{
50,10,50,30,40,
50,60,50,80,90
};

int adet = 0;

for(int i=0; i<10; i++)
{
if(sayilar == 50)
{
adet++;
}
}

printf("%d", adet);

ÇIKTI

4

════════════════════════════════════════════════════════════════════

✓ BÖLÜM ÖZETİ

Bu bölümde:

✓ Dizi nedir

✓ Dizi oluşturma

✓ Diziye veri atama

✓ Dizi elemanlarını okuma

✓ For ile dizi kullanımı

✓ Kullanıcıdan veri alma

✓ Toplam hesaplama

✓ Ortalama hesaplama

✓ En büyük sayı bulma

✓ En küçük sayı bulma

✓ Array Out Of Bounds hatası

✓ Gerçek hayat kullanım alanları

konularını öğrendik.

Bir sonraki bölümde STRINGLER (Karakter Dizileri), strlen(), strcpy(), strcmp() ve metin işlemlerine geçeceğiz.
e.s
 
Geri
En Üst