Veri Yapıları ve Programlama

1- Veri Yapılarına Giriş

Emre Can Yılmaz

Ondokuz Mayıs Üniversitesi

2026

Dersin Tanıtımı

  • BPU102 - Veri Yapıları ve Programlama
  • Dersin Amacı: Bu dersin sonunda öğrenciler,
    • Temel veri yapılarını (diziler, bağlı listeler, yığınlar, kuyruklar, ağaçlar, hash tabloları, graflar) C programlama dilinde uygulayabilecek,
    • Bu veri yapılarının avantaj ve dezavantajlarını karşılaştırabilecek,
    • Hangi durumlarda hangi veri yapısının kullanılması gerektiğini belirleyebileceklerdir.

Dersin İşleyişi (Uzaktan Eğitim)

  • Ders türü: [Canlı / Asenkron]
  • Ders materyalleri: Ders notları + örnek kodlar + alıştırmalar: https://emrecan.dev
  • Ders akışı (genel):
    • Konu anlatımı (kavramsal çerçeve)
    • C ile örnek uygulama (kademeli)
    • Mini alıştırma / kısa değerlendirme (pekiştirme)
  • İletişim kanalı: E-posta: [email protected]
    • (Mümkünse) konu başlığı formatı: BPU102 - HaftaX - Konu - Ad Soyad

Değerlendirme

  • Uzaktan Eğitim: Vize (%20) + Final (%80)
  • Sınav yaklaşımı (özet):
    • Çoktan seçmeli / kod okuma / çıktı tahmini

Kaynaklar

  • Ders Notları, Örnek Kodlar, Alıştırmalar ve Ek Okuma Materyalleri: https://emrecan.dev

  • Kitaplar:

    • C Programlamanın Temelleri, Prof. Dr. Timur Karaçay, Abaküs Kitap (Kütüphanede mevcut)
    • Veri Yapıları ve Algoritma, Rıfat Çölkesen, Papatya Yayıncılık
    • Data Structures and Algorithm Analysis, Mark A. Weiss
    • Data Structures: A Pseudocode Approach with C , Richard F. Gilberg and Behrouz A. Forouzan

Beklentiler

  • Derse düzenli katılım ve aktif olarak dinleme.
  • Verilen okumaları ve alıştırmaları zamanında yapma.
  • Soru sormaktan ve tartışmalara katılmaktan çekinmeme.
  • Kendi başınıza kod yazma pratiği yapma.
  • Yardım istemekten ve işbirliği yapmaktan çekinmeme.

İletişim ve İdari Süreçler

Aşağıdaki başlıklar ders e-postası üzerinden bireysel olarak yürütülmez; ilgili durumlarda üniversitenin/kurumun resmî prosedürleri izlenir:

  • Mazeret nedeniyle sınava katılamama / telafi sınavı talepleri
  • Bütünlemeye katılamama nedeniyle alternatif değerlendirme talepleri
  • Kişiye özel not yükseltme / ek hak talepleri

Not: Bu tür durumlarda yönlendirme yapılacak birim: Öğrenci İşleridir.

Yapay Zekâ Araçları ile Öğrenme (Bu Derste Nasıl Kullanacağız?)

  • Yapay zekâ araçlarını öğrenmeyi hızlandıran bir yardımcı olarak kullanabilirsiniz.
  • Etkili kullanım örnekleri:
    • Bir kavramı farklı açıklamalarla isteme (ör. pointer, struct, dynamic memory)
    • Kodun ne yaptığını adım adım açıklattırma (tracing)
    • Hata mesajını yorumlatma ve olası nedenleri listeletme
    • Küçük test örnekleri/kenar durumları üretme
    • Aynı çözümün alternatiflerini görme (okunabilirlik, bellek kullanımı)
  • Önerilen pratik:
    • Araçtan aldığınız çıktıyı derleyip çalıştırın, küçük testlerle doğrulayın
    • “Neyi anladım?”ı 2-3 maddeyle kendinize özetleyin
    • Kod yazarken gerekçenizi netleştirin: “Neden bu yapı, neden bu çözüm?”

Dersin Kapsamı (İki Katmanlı Bakış)

  • Bu ders iki ekseni birlikte yürütür:
    1. C Araç Seti (Altyapı): pointer, struct, dinamik bellek, fonksiyonlar…
    2. Veri Yapıları & Temel Algoritmalar: liste, yığın, kuyruk, ağaç; arama/sıralama…
  • Amaç, veri yapılarını C’nin bellek modeli üzerinde doğru ve verimli biçimde kurabilmektir.

Konular

  • İşaretçiler (Pointers)
  • Fonksiyonlar (Functions)
  • Diziler (Arrays)
  • Yapılar (Structures) ve Birlikler (Unions)
  • Dinamik Bellek Yönetimi (Dynamic Memory Management)
  • Bağlı Listeler (Linked Lists)
  • Yığınlar (Stacks)
  • Kuyruklar (Queues)
  • Ağaçlar (Trees)
  • Sıralama Algoritmaları (Sorting Algorithms)
  • Arama Algoritmaları (Searching Algorithms)

Veri Yapıları ve Algoritmalar

  • Veri yapıları, bilgisayar biliminin en temel kavramlarından biridir.
  • Bir program genellikle veri + algoritma bileşimiyle düşünülür.
  • Algoritmalar, veriyi işleyerek bir probleme çözüm üretir.
  • Tekil bir değişken (ör. int, char) bellekte belirli sayıda bayt yer kaplar; veri yapıları ise birbiriyle ilişkili çok sayıda değeri belirli bir düzenle temsil eder ve yönetir.

Örnek (telefon rehberi): Kişilerin bilgilerini (ad, soyad, tel, adres) saklamak için hangi yaklaşım daha uygundur? - Liste mi? (ekleme/silme nasıl?) - Dizi mi? (erişim hızlı, ekleme/silme maliyeti?) - Hash tablosu mu? (anahtar ile hızlı erişim?) Bu tür seçimler veri yapıları ve algoritmalar bilgisini gerektirir.

Veri Yapısı Nedir?

  • Bir problemin çözümü için, işlenecek verinin çözüme uygun şekilde organize edilmesi gerekir.
  • Veri yapıları, verilerin etkin biçimde saklanması ve işlenmesi için kullanılan yapılardır.
  • Verilerin düzenlenme biçimini belirleyen “yapıtaşları” olarak düşünebilirsiniz.

Örnek: Kitapları raflara rastgele koymak yerine tür/yazar gibi bir kuralla düzenlemek, aranan kitabı daha hızlı bulmayı sağlar. Veri yapıları da bilgisayarda benzer bir düzen kurar.

Veri Yapılarının Temel Amacı

  • Verileri organize etmek ve yönetmek
  • Verilere hızlı ve etkin erişim sağlamak
  • Verileri bellekte verimli şekilde depolamak

ADT ve Temsil (Representation)

  • Soyut Veri Tipi (ADT): “Ne yapılabilir?” sorusuna cevap verir.
    • Örn. Stack: push, pop, top, isEmpty
  • Temsil (Representation): “Nasıl yapılır?” sorusuna cevap verir.
    • Stack, dizi ile de bağlı liste ile de uygulanabilir.
  • Bu ayrım, veri yapısı seçimini daha sistematik yapmanızı sağlar:
    • Operasyonlar (ihtiyaç) → temsil (uygulama) → maliyet (zaman/bellek)

Mini Not: Maliyet Fikri (Big-O’ya Kısa Giriş)

  • Veri yapısı seçiminde en kritik soru: “Hangi operasyon ne kadar maliyetli?”
  • Büyük-O (Big-O) notasyonu, maliyetin girdi büyüdükçe nasıl büyüdüğünü özetler.
    • O(1) : yaklaşık sabit
    • O(n) : veri büyüdükçe doğrusal artış
    • O(log n) : yavaş artış (ör. n iki katına çıkınca 1 adım artar gibi düşünülebilir)

Bu derste Big-O’yu “detaylı matematik” olarak değil, “sezgisel bir karşılaştırma aracı” olarak kullanacağız.

Mini Örnek: 1 Milyon Eleman Üzerinde Arama (Sezgi)

  • Doğrusal arama (linear search): ortalama ~ n/2 karşılaştırma
    • n = 1.000.000 için yaklaşık 500.000 karşılaştırma
  • İkili arama (binary search): (sıralı dizide) yaklaşık log2(n) karşılaştırma
    • log2(1.000.000) ≈ 20
  • Not: Arama ağaçlarında bu “~20” seviyesi ancak dengeli yapılarda korunur. (Sezgisel amaçla bu karşılaştırmayı yapıyoruz.)

Veri Yapıları Olmadan…

  • Veriler dağınık ve düzensiz olurdu.
  • Verilere erişmek ve işlemek daha zor ve zaman alıcı olurdu.
  • Bellek daha verimsiz kullanılabilirdi.

Yaygın Veri Yapıları

  • Diziler (Arrays): Aynı türden verileri sıralı şekilde saklar.
  • Bağlı Listeler (Linked Lists): Düğümlerden oluşan dinamik yapı.
  • Yığınlar (Stacks): LIFO prensibi.
  • Kuyruklar (Queues): FIFO prensibi.
  • Ağaçlar (Trees): Hiyerarşik yapı.
  • Hash Tabloları (Hash Tables): Anahtar-değer çiftleri; hızlı erişim (çoğunlukla).
  • Graflar (Graphs): Düğüm-kenar yapısı; ilişkisel veriler.

Veri Yapıları Panoraması

Bağlı Liste

Yığın

Kuyruk

Ağaç

Veri Yapıları Neden Önemlidir?

  1. Veri Organizasyonu: Verileri düzen içinde tutar; erişimi ve işlemeyi kolaylaştırır.
  2. Performans: Doğru yapı, arama/ekleme/silme gibi işlemleri belirgin biçimde hızlandırabilir.
  3. Kod Okunabilirliği: İyi seçilmiş yapı, kodu daha anlaşılır ve sürdürülebilir kılar.
  4. Bellek Verimliliği: İhtiyaca uygun temsil, gereksiz bellek tüketimini azaltır (ör. sparse matrix gibi yaklaşımlar).

Bu Haftanın Hedefi ve Mini Çalışma

  • Hedef: Veri yapısı seçiminin “ihtiyaç–operasyon–maliyet” ilişkisi olduğunu görmek.
  • Mini çalışma (öneri):
    1. Telefon rehberi senaryosu için şu soruları düşünün:
      • “En sık yaptığım işlem nedir? (arama mı, ekleme mi?)”
      • “Veri büyüdüğünde hangi işlem beni yavaşlatır?”
    2. Bir sonraki derse kadar: C’de struct ile “kişi kaydı” modelini kurmayı deneyin (ad-soyad-tel gibi alanlar).

Sonuç

  • Veri yapıları, bilgisayar biliminin ve yazılım geliştirmenin temel taşlarındandır.
  • Bu derste C dilini kullanarak temel veri yapılarını öğrenecek ve gerçek problemlere uygulayacaksınız.
  • Doğru veri yapısını seçmek; performansı, okunabilirliği ve verimliliği doğrudan etkiler.

Sorular?

Şimdi sorularınız varsa cevaplamaktan mutluluk duyarım!