GERİ DÖN

Ders Öğretim Planı


Dersin Kodu Dersin Adı Dersin Türü Yıl Yarıyıl AKTS
BGT-103 GÖRSEL PROGRAMLAMA Ders 1 1 4,00

Önlisans


Türkçe


Bu dersin temel amacı, öğrencilere modern yazılım geliştirme süreçlerinin vazgeçilmez bir parçası olan Görsel Programlama (Visual Programming) paradigmasını, C# programlama dili ve .NET platformu üzerinde Windows Forms teknolojilerini kullanarak kavratmaktır. Ders, öğrencilerin algoritma mantığını grafiksel kullanıcı arayüzü (GUI) tabanlı uygulamalara dönüştürebilme yetilerini geliştirmeyi hedefler. Sadece kod yazmayı değil, olay güdümlü programlama (event-driven programming) mantığını, nesneye yönelik yaklaşımı ve kullanıcı deneyimini (UX) önceleyen arayüz tasarım prensiplerini öğretmek esastır. Öğrencilerin Visual Studio IDE'sini etkin kullanarak, hata ayıklama, derleme ve proje yönetimi konularında profesyonel yetkinlik kazanmaları amaçlanmaktadır. Teorik bilginin pratik uygulamalarla pekiştirildiği bu süreçte, sektörün ihtiyaç duyduğu masaüstü uygulama geliştirme yetkinliğine sahip bireyler yetiştirilmesi hedeflenmektedir.


Öğr. Gör. Süleyman Ezdemir


1 Visual Studio IDE ortamını etkin kullanarak, C# dili ile Windows Forms tabanlı masaüstü uygulamaları tasarlayabilir, geliştirebilir ve hatalarını ayıklayabilir.
2 Olay güdümlü programlama (Event-Driven Programming) mantığını kavrayarak, kullanıcı etkileşimlerine (tıklama, klavye girişleri vb.) uygun kod bloklarını yazabilir.
3 Form kontrollerini (Button, TextBox, Label, ListBox vb.) ve bunların özelliklerini (Properties) amaca uygun şekilde kullanarak işlevsel ve kullanıcı dostu arayüzler oluşturabilir.
4 Temel algoritma yapılarını (karar yapıları, döngüler, diziler) ve metotları görsel arayüz projelerine entegre ederek karmaşık problemleri çözebilir.
5 Veri giriş-çıkış işlemlerini, hata yakalama mekanizmalarını ve temel nesne yönelimli programlama prensiplerini proje geliştirme sürecinde uygulayabilir.

Birinci Öğretim


Yok


Bu dersi alacak öğrencilerin temel bilgisayar kullanım becerilerine ve algoritma mantığına aşina olmaları önerilmektedir. Dersin verimliliği açısından öğrencilerin dersten önce ilgili haftanın konusuna dair materyalleri incelemeleri ve ders sonrasında kendi projelerini oluşturarak pratik yapmaları kritik öneme sahiptir. Özellikle kodlama egzersizlerinde karşılaşılan hataların çözümü için Hata Ayıklama (Debugging) araçlarının kullanımına özen gösterilmelidir. Öğrencilerin sadece derste gösterilen örneklerle sınırlı kalmayıp, açık kaynaklı projeleri incelemeleri ve GitHub gibi platformları kullanarak versiyon kontrol sistemleri hakkında fikir sahibi olmaları tavsiye edilir. Görsel tasarım yeteneğini geliştirmek adına modern UI/UX trendlerinin takip edilmesi, geliştirilen uygulamaların kullanıcı dostu olması açısından önemli bir husustur.


Ders içeriği, görsel programlamaya giriş ve Visual Studio entegre geliştirme ortamının (IDE) tanıtılmasıyla başlar. Temel form kontrollerinin (Button, Label, TextBox vb.) özellikleri, metotları ve olayları (events) detaylıca incelenir. C# programlama dilinin söz dizimi, değişkenler, operatörler, karar yapıları (If-Else, Switch-Case) ve döngülerin (For, While, Do-While) görsel arayüz üzerindeki uygulamaları ele alınır. İlerleyen haftalarda listeleme kontrolleri (ListBox, ComboBox), karmaşık veri yapıları, diziler ve koleksiyonlar işlenir. Modüler programlama kapsamında metotların kullanımı, hata yakalama mekanizmaları (Try-Catch-Finally) ve temel nesne yönelimli programlama (OOP) kavramları (sınıf, nesne, kalıtım) görsel projeler üzerinden aktarılır. Ayrıca, çoklu form uygulamaları, diyalog pencereleri, dosya işlemleri (File I/O) ve temel veritabanı bağlantı mantığı dersin kapsamı dahilindedir. Dönem sonunda öğrenci, baştan sona işlevsel bir Windows masaüstü uygulaması geliştirebilecek donanıma erişir.


Hafta Teorik Uygulama Laboratuvar
1 Görsel Programlamaya Giriş ve Algoritma Mantığı. Visual Studio Kurulumu ve Arayüzü Tanıtımı. Çözüm Gezgini (Solution Explorer), Özellikler Paneli (Properties) ve Araç Kutusu (Toolbox) kullanımının detaylı incelenmesi. Proje oluşturma, kaydetme ve derleme süreçleri. Visual Studio ortamının kişiselleştirilmesi. İlk "Merhaba Dünya" uygulamasının oluşturulması. Form üzerine temel kontrollerin sürükle-bırak yöntemiyle eklenmesi ve Form özelliklerinin (Text, BackColor, Size) değiştirilmesi pratiği. Öğrencilerin IDE'yi tanıması amacıyla boş bir proje oluşturup arayüz pencerelerini keşfetmeleri. Basit bir form tasarımı yaparak projenin hatasız bir şekilde çalıştırılmasının (Build & Run) sağlanması.
2 Temel Form Kontrolleri: Button, Label ve TextBox. Bu kontrollerin sık kullanılan özellikleri (Name, Text, Enabled, Visible) ve isimlendirme standartları (CamelCase, Hungarian Notation). Olay (Event) mantığına giriş: Click olayı nedir ve nasıl tetiklenir? Kullanıcıdan TextBox aracılığıyla isim alıp, Butona tıklandığında Label üzerinde "Merhaba [İsim]" yazdıran bir uygulamanın geliştirilmesi. Kontrollerin tasarım zamanı (Design Time) ve çalışma zamanı (Run Time) özelliklerinin değiştirilmesi. Öğrencilerin farklı özelliklerde (renk, font) etiketler ve butonlar kullanarak interaktif bir kimlik kartı uygulaması tasarlamaları. Kod tarafında control.Text atamalarının pekiştirilmesi.
3 Değişkenler ve Veri Tipleri (int, string, double, bool). Değişken tanımlama kuralları ve kapsamı (Scope). Tip dönüşümleri (Type Casting): Convert.ToInt32, int.Parse ve ToString() metotlarının görsel arayüzden veri okuma ve yazdırma işlemlerindeki önemi. İki sayıyı TextBox'lardan alıp, dört işlem (toplama, çıkarma, çarpma, bölme) yapan basit bir hesap makinesi arayüzünün kodlanması. String birleştirme operatörlerinin Label üzerinde kullanımı. Girilen vize ve final notuna göre ortalama hesaplayan ve sonucu ekrana yazdıran programın yazılması. Veri tipi uyuşmazlığı hatalarının (Exceptions) gözlemlenmesi.
4 Karar Yapıları: If, Else If, Else bloklarının çalışma mantığı. Karşılaştırma operatörleri (==, !=, <, >) ve mantıksal operatörler (&&, ||). Switch-Case yapısının kullanımı. Görsel kontrollerde (CheckBox, RadioButton) koşul kontrolü. Kullanıcı adı ve şifre kontrolü yapan bir giriş (Login) paneli tasarımı. Girilen sayının pozitif/negatif veya tek/çift olduğunu bulan uygulamanın arayüz tasarımı ve kodlaması. Basit bir "Vücut Kitle İndeksi" hesaplayıp, çıkan sonuca göre (Zayıf, Normal, Kilolu) kullanıcıya görsel geri bildirim (Renk değişimi, Mesaj Kutusu) veren uygulamanın geliştirilmesi.
5 For, While ve Do-While döngülerinin yapısı ve kullanım alanları. Sonsuz döngü kavramı. Döngülerin görsel nesnelerle etkileşimi. Artırma ve azaltma operatörleri. Break ve Continue anahtar kelimeleri. Belirli bir aralıktaki sayıları yazdıran, faktöriyel hesaplayan veya üs alan uygulamaların arayüz üzerinde gerçekleştirilmesi. Döngü kullanarak form üzerine dinamik nesne ekleme (Runtime Controls) örnekleri. Girilen bir metni döngü kullanarak tersten yazdıran veya bir sayının asal olup olmadığını kontrol eden görsel uygulamanın laboratuvar ortamında kodlanması.
6 Listeleme Kontrolleri: ListBox ve ComboBox kullanımı. Items.Add, Items.Remove, Items.Clear ve SelectedIndex gibi temel metot ve özelliklerin incelenmesi. Döngüler ile liste kontrolleri arasındaki veri aktarımı. Bir alışveriş listesi uygulaması yapılması. TextBox'tan girilen ürünlerin ListBox'a eklenmesi, seçili olanın silinmesi ve toplam ürün sayısının gösterilmesi. ComboBox ile şehir seçimi uygulaması. ListBox içindeki sayısal verilerin ortalamasını alan ve en büyük/en küçük değeri bulan uygulamanın geliştirilmesi. Çoklu seçim (Multi-select) özelliklerinin denenmesi.
7 Metotlar (Fonksiyonlar): Geriye değer döndüren ve döndürmeyen (void) metotlar. Parametre alan metotlar. Kod tekrarını önleme ve modüler programlama mantığı. Metotların aşırı yüklenmesi (Method Overloading). Sık kullanılan matematiksel işlemlerin veya metin formatlama işlemlerinin ayrı metotlar halinde tanımlanıp buton tıklamalarında çağrılması. Renk değiştirme veya temizleme işlemleri için genel amaçlı metotların yazılması. Geometrik şekillerin alan ve çevre hesaplamalarını yapan, her şekil için ayrı metotların bulunduğu kapsamlı bir hesaplama aracının kodlanması.
8 Hata Yönetimi (Exception Handling): Try-Catch-Finally bloklarının kullanımı. Çalışma zamanı hatalarının (Runtime Errors) yakalanması ve kullanıcı dostu hata mesajlarının verilmesi. MessageBox sınıfının detaylı kullanımı. Kullanıcının hatalı veri girişi yapabileceği (örneğin sayı yerine harf girmesi) senaryoların simüle edilmesi ve programın çökmesinin engellenmesi. "Sıfıra bölme hatası" kontrolü. Güvenli bir veri giriş formu tasarlanması. Tüm girişlerin doğrulanması (Validation) ve hatalı durumlarda ikonlu uyarı mesajlarının gösterilmesi uygulaması.
9 Diziler (Arrays): Tek boyutlu ve çok boyutlu dizilerin tanımlanması, değer ataması ve okunması. Dizilerin döngülerle kullanımı. Array sınıfının metotları (Sort, Reverse, IndexOf). Sınıftaki öğrencilerin notlarını bir dizide tutup, sınıf ortalamasını ve en yüksek notu bulan program. Dizi elemanlarının ListBox'a aktarılması ve sıralanması. Basit bir şifreleme/çözme uygulaması veya diziler kullanılarak yapılan bir şans oyunu (Sayısal Loto vb.) simülasyonunun geliştirilmesi.
10 Koleksiyonlar: List<T> ve ArrayList yapıları. Dizilerden farkları ve avantajları. Dinamik veri saklama. Zamanlayıcı Kontrolü (Timer): Tick olayı, Interval özelliği ve zaman tabanlı işlemler. DateTime sınıfı. Dinamik olarak artan bir kişi listesi tutan uygulamanın List<string> kullanılarak yapılması. Timer kullanılarak dijital saat, kronometre veya geri sayım sayacı yapılması. Ekranda hareket eden bir nesne (buton veya resim) animasyonu yapılması. Timer kullanarak belirli aralıklarla arka plan rengini değiştiren "Disko Işıkları" uygulaması.
11 Nesne Yönelimli Programlama (OOP) Temelleri: Sınıf (Class) ve Nesne (Object) kavramları. Kapsülleme (Encapsulation), Özellikler (Properties), Kurucu Metotlar (Constructors). Görsel projede kendi sınıflarımızı oluşturma. "Araba", "Öğrenci" veya "Ürün" gibi bir sınıf oluşturup, bu sınıftan üretilen nesnelerin özelliklerini form üzerindeki kontrollerle yönetme uygulaması. Öğrencilerin belirledikleri bir gerçek hayat nesnesini modelleyerek sınıf yapısını kurmaları ve bu nesneleri bir ListBox içinde listelemeleri.
12 Çoklu Form Uygulamaları: Projeye yeni form (Window) ekleme. Formlar arası geçiş (Show, ShowDialog, Hide). Formlar arası veri taşıma yöntemleri. DialogResult kullanımı. Ana menüsü olan ve farklı işlemleri farklı pencerelerde açan bir otomasyon taslağı. Giriş ekranından (Login Form) ana ekrana (Main Form) geçiş ve kullanıcı adının taşınması. Ayarlar penceresi (Settings Form) tasarlayarak ana formun rengini ve fontunu diğer pencereden değiştiren uygulamanın kodlanması.
13 Dosya İşlemleri (I/O) ve Veri Kalıcılığı: System.IO kütüphanesi. File, Directory, StreamReader ve StreamWriter sınıfları. Metin dosyasına (.txt) veri yazma ve okuma. Basit bir not defteri (Notepad) uygulaması. "Kaydet" ve "Aç" diyalog pencerelerini (SaveFileDialog, OpenFileDialog) kullanarak dosya işlemlerinin gerçekleştirilmesi. Uygulamadaki verilerin (örneğin öğrenci listesi) program kapandığında kaybolmaması için metin dosyasına kaydedilmesi ve açılışta tekrar yüklenmesi.
14 Proje Yönetimi ve Dağıtım: Uygulamanın yayınlanması (Publish). .exe dosyasının oluşturulması ve kurulum (Setup) mantığı. Dönem boyunca öğrenilen konuların genel tekrarı ve final projesi sunum teknikleri. Dönem projesi kapsamında geliştirilen uygulamaların son kontrollerinin yapılması. Hataların giderilmesi ve arayüz iyileştirmeleri. Final Proje Sunumları: Öğrencilerin geliştirdikleri özgün masaüstü uygulamalarını sınıfta sunmaları, kodlarını açıklamaları ve soruları yanıtlamaları.

Ders Malzemeleri ve Kodlar: github.com/ezfesoft (Dersin resmi kod deposu ve örnek uygulamalar) Önerilen Ek Kaynaklar: - Microsoft Learn (.NET Documentation): learn.microsoft.com/en-us/dotnet/desktop/winforms/ - C# ile Görsel Programlama (Sefer Algan - Pusula Yayıncılık) - W3Schools C# Tutorial: w3schools.com/cs/ - Stack Overflow (Hata çözümleri ve topluluk desteği için) - YouTube: C# Windows Forms Application Tutorial serileri


Ders, teorik anlatım ve laboratuvar uygulamalarının harmanlandığı hibrit bir yöntemle işlenmektedir. Her hafta, ilgili konunun teorik altyapısı sunumlar ve canlı kod yazımı (live coding) ile anlatılır. Ardından, öğrencilerin öğrendikleri kavramları pekiştirmeleri için laboratuvar ortamında veya kişisel bilgisayarlarında gerçekleştirecekleri "Uygulama Ödevleri" verilir. Dönem boyunca vize ve final sınavlarına ek olarak, öğrencilerin yaratıcılıklarını kullanabilecekleri bir dönem projesi geliştirmeleri teşvik edilir. Soru-cevap oturumları, hata ayıklama seansları ve kod inceleme (code review) etkinlikleri ile interaktif bir öğrenme ortamı sağlanır. "Yaparak öğrenme" modelinin esas alındığı derste, görsel sonuçların anında gözlemlenmesi motivasyon aracı olarak kullanılır.


Yarıyıl (Yıl) İçi Etkinlikleri Adet Değer
Ara Sınav 1 100
Toplam 100
Yarıyıl (Yıl) Sonu Etkinlikleri Adet Değer
Final Sınavı 1 100
Toplam 100
Yarıyıl (Yıl) İçi Etkinlikleri 40
Yarıyıl (Yıl) Sonu Etkinlikleri 60

Bu ders için zorunlu bir staj uygulaması bulunmamaktadır. Ancak, derste kazanılan yetkinlikler (C#, .NET, GUI Tasarımı), yazılım firmalarında, IT departmanlarında veya Ar-Ge merkezlerinde yapılacak yaz stajları için güçlü bir temel oluşturmaktadır. Öğrencilerin, ders kapsamında geliştirdikleri projeleri dijital portfolyolarına (örneğin GitHub profillerine) eklemeleri, staj ve iş başvurularında avantaj sağlayacaktır. Sektörle entegrasyon açısından, öğrencilerin dönem içerisinde veya yaz tatilinde gönüllü veya zorunlu stajlarını yazılım geliştirme odaklı yapmaları, derste öğrenilen teorik ve pratik bilgilerin profesyonel hayata aktarılmasını kolaylaştıracaktır.


Etkinlikler Sayısı Süresi (saat) Toplam İş Yükü (saat)
Ara Sınav 4 1 4
Final Sınavı 4 1 4
Derse Katılım 14 4 56
Uygulama/Pratik 14 3 42
Ara Sınav İçin Bireysel Çalışma 7 1 7
Final Sınavı içiin Bireysel Çalışma 7 1 7
Toplam İş Yükü (saat) 120

PÇ 1 PÇ 2 PÇ 3 PÇ 4 PÇ 5 PÇ 6 PÇ 7 PÇ 8 PÇ 9 PÇ 10 PÇ 11 PÇ 12 PÇ 13 PÇ 14 PÇ 15 PÇ 16 PÇ 17 PÇ 18 PÇ 19 PÇ 20 PÇ 21 PÇ 22 PÇ 23 PÇ 24
ÖÇ 1
ÖÇ 2
ÖÇ 3
ÖÇ 4
ÖÇ 5
* Katkı Düzeyi : 1 Çok düşük 2 Düşük 3 Orta 4 Yüksek 5 Çok yüksek