Dersin öğretmen rehberi
Bu ders küçük bir C# konsol programını sıfırdan okur. Önce her satırın kelimelerini ayıracağız; sonra o satırın ne hazırladığını, neden burada olduğunu ve program çalışınca ne gördüğümüzü inceleyeceğiz.
Bu dersin hedefleri- Bir C# satırındaki anahtar kelime, isim, parantez ve noktalama işaretlerini ayırmak.
- class ve Main bloklarının neden açılıp kapatıldığını anlamak.
- Console.WriteLine ile terminale çıktı üretip küçük değişikliklerle test etmek.
C#/.NET backend temelleri
beginner 25 dk çalışma
Bu dersin ana sorusu: using, class, Main, Console.WriteLine, süslü parantez ve noktalı virgülü hiç bilmeyen birinin satır satır anlayabilmesi.
Öğrenme özeti: Program çalıştığında .NET Main methodundan başlar ve Console.WriteLine satırı sabit Merhaba Dünya metnini terminale yazar.
Öğrenme rotası ve transfer görevi
- Kod etiketlerini ayır: Her satırda kelimeleri, isimleri, parantezleri ve noktalama işaretlerini ayrı ayrı okuyun.
- Blokları takip et: Hangi süslü parantezin classı, hangisinin Main methodunu kapattığını işaretleyin.
- Çıktıyı tahmin et: Programı çalıştırmadan önce terminalde görünecek metni tahmin edin; sonra test edin.
Kendin dene: Merhaba Dünya metnini kendi adınızla değiştirin, ikinci bir Console.WriteLine ekleyin ve beklenen iki satırlık çıktıyı önceden yazın.
Kavram sözlüğü ve sık karıştırılanlar
- using: Başka bir ad alanındaki hazır isimleri kısa adıyla kullanmamızı sağlayan bildiridir.
- class: Birbiriyle ilgili kodların içinde toplandığı yapıdır.
- Main: Konsol programı çalışmaya başladığında ilk girilen methoddur.
- Console.WriteLine: Verilen metni terminale yazan ve sonra yeni satıra geçen method çağrısıdır.
- { } ve ;: Süslü parantezler blok sınırını, noktalı virgül ise komutun bittiğini gösterir.
Sık karıştırılanlar: using System; ekrana yazı yazmaz; Console adını kullanabilmemiz için hazırlık yapar. class ve Main ekranda görünen metin değildir; programın kod yapısını ve başlangıcını belirler.
Nasıl çalışacağız: Her satırda önce soldan sağa kod etiketlerini okuyun: anahtar kelime, isim, parantez ve noktalama işaretlerini ayırın. Ardından satırın görevini, açtığı veya kapattığı bloğu ve satırı silersek ne bozulacağını kontrol edin.
Hata ayıklama: Hata alırsanız önce hata mesajındaki satırı bulun. Büyük-küçük harfleri, tırnakları, noktalı virgülleri ve süslü parantezlerin eşleşmesini tek tek karşılaştırın.
Test yaklaşımı: Merhaba metnini değiştirin, ikinci bir Console.WriteLine ekleyin ve çalıştırmadan önce terminalde kaç satır göreceğinizi tahmin edin. Sonra tahmininizi gerçek çıktıyla karşılaştırın.
Güvenlik: Bu örnekte kullanıcıdan veri alınmıyor; ekrana sabit bir metin yazılıyor. Daha sonra kullanıcı girdisi eklendiğinde, o veriyi kontrol etmeden güvenilir kabul etmeyin.
Sürdürülebilirlik: Her bloğa tek ve anlaşılır bir görev verin. Süslü parantezleri hizalı tutun, sınıf ve method adlarını anlamlı seçin, gereksiz kod eklemeyin.
Ders özeti: using hazır adları kullanıma açar; class kodu gruplar; Main başlangıç noktasıdır; Console.WriteLine metni terminale yazar; { } blok kapsamını, ; ise komut sonunu gösterir.
1
using
System
;
using (Ad alanı içe aktarma)
— Bu satırı üç parçaya ayırırız: using kullanacağımız ad alanını bildirir; System hazır C#/.NET sınıflarının bulunduğu ad alandır; ; satırın bittiğini söyler.
Öğretmen açıklaması
Bu adımı hiç bilmeyen biri için okuyalım: System ad alanını bu dosyada kullanıma açar. Böylece ekrana yazı yazmak için Console adını kısa biçimde kullanabiliriz. Satırın rolü: Hazır bir ad alanını kullanıma açan satır. Sözdizimi açısından Bu satırı üç parçaya ayırırız: using kullanacağımız ad alanını bildirir; System hazır C#/.NET sınıflarının bulunduğu ad alandır; ; satırın bittiğini söyler. Çalışma sırasında Derleyici bu satırı okuduğunda System içindeki türleri kısa adlarıyla yazabileceğimizi bilir. Satır çalışırken ekrana yazı yazmaz; sonraki Console.WriteLine satırına hazırlık yapar. Gözlenebilir ara sonuç şudur: Bu bildirim hazırlık yapar; ekranda bir metin oluşturmaz ve Console adını sonraki satırlar için tanınır hale getirir. Kısaca: bu satır programın yapısını kurar veya terminalde göreceğimiz yazıyı üretir; şimdi bir sonraki satıra geçip bu görevin nasıl tamamlandığını izleyin.
- Satırı soldan sağa okuyun ve her kelimeyi, ismi, parantezi ve noktalama işaretini ayrı ayrı adlandırın.
- Bu parçaların birlikte hangi işi yaptığını ve hangi bloğun içinde bulunduğunu kendi cümlenizle söyleyin.
- Satırı silersek derleyicide veya terminalde ne değişeceğini önce tahmin edin, sonra çalıştırarak kontrol edin.
- Metni ya da tek bir kod parçasını değiştirin; yeni terminal çıktısını çalıştırmadan önce tahmin edip sonucu karşılaştırın.
Yaygın hata: using System; satırının ekrana yazı yazdırdığını sanmak. Bu satır sadece isim tanıtır; çıktıyı ileride Console.WriteLine üretir.
Şimdi sen dene: using System; satırını geçici olarak kaldırıp derlemeyi deneyin. Console bulunamadı hatasını görünce bu satırın neden hazırlık yaptığını açıklayın.
Zihinsel model ve benzetme
Zihninde canlandır: Ad alanındaki türler kısa adlarıyla kullanıma açıldı.
Günlük hayattan: using, rehberden numara kaydetmektir: Console gibi isimleri tam yol yazmadan çağırırsın.
İşaretlerin anlamı
using
Ad alanını (namespace) dosyaya dahil eder.
;
İfadenin bittiğini bildirir.
İleride bağlanacak
Bu modülün getirdiği araçlar sonraki satırlarda isimleriyle kullanılacak.
Sık yapılan hata
Noktalı virgül unutulur Belirti: error CS1002: ; expected — derleme durur.
Neden: C# her ifadeyi ; ile bitirir.
Çözüm: Derleyici listesindeki ilk hataya odaklan; çoğu zaman bir önceki satırdadır.
Gerekli using directive eksik olur Belirti: error CS0246: The type or namespace name ... could not be found
Neden: Tür, kullanılmadan önce ad alanıyla dosyaya tanıtılmalıdır.
Çözüm: Hata satırındaki tür adına gidip Quick Fix ile using eklet.
Bu satırı hiç bilmeyen biri için parçalayalım
Satırın görevi: Hazır bir ad alanını kullanıma açan satır
Kavram: using System bildirimi
using System; bir çıktı komutu değildir. Bir sonraki satırlarda kullanacağımız hazır Console adını tanıtmak için yazılmış hazırlık bildirimidir.
Blok kapsamı: Bu satır bir blok açmaz. Program sınıfından önce durur ve aşağıdaki kodun System içindeki Console adını tanımasına yardım eder.
Neden şimdi: Console sınıfını tam yoluyla yazmak yerine kısa ve okunabilir yazabilmek için class ve Main başlamadan önce bulunur.
Kod etiketlerini tek tek incele
using
using anahtar kelimesi
Ne yapar? Bir namespace içindeki türleri dosyada kullanıma açar.
Neden burada? Console gibi tür adlarını tam yol yazmadan kullanabilmek için gereklidir.
Silinirse: İlgili türleri bulamaz ve derleme hatası oluşur.
System
namespace adı
Ne yapar? System ad alanını seçer.
Neden burada? Bu dersin Console türü System namespaceinde bulunur.
Silinirse: Console gibi türler tanınmaz veya tam ad yazmak gerekir.
;
noktalı virgül
Ne yapar? Bildirimin bittiğini belirtir.
Neden burada? C# ifadesinin sınırını kapatır.
Silinirse: Derleyici satırın devam ettiğini sanabilir ve hata verebilir.
Amaç
System ad alanını bu dosyada kullanıma açar. Böylece ekrana yazı yazmak için Console adını kısa biçimde kullanabiliriz.
Nasıl Çalışır
Derleyici bu satırı okuduğunda System içindeki türleri kısa adlarıyla yazabileceğimizi bilir. Satır çalışırken ekrana yazı yazmaz; sonraki Console.WriteLine satırına hazırlık yapar.
Akış Şeması (Flowchart)
AST (Abstract Syntax Tree)
{
"type": "UsingDirective",
"namespace": "System"
}
Değişiklikler (Diff)
+ Eklendi:
+ using System;
Akıllı İpuçları (Adaptive Hints)
Tetikleyici: console_not_found
Console tanınmıyorsa dosyanın başına 'using System;' eklediğinizden emin olun.
Yaygın Hata
using bildirimini çıktı üreten Console.WriteLine çağrısıyla karıştırmak.
Ek Açıklama
using System ile temel .NET sınıflarını içeren System ad alanını içe aktarıyoruz. Böylece Console sınıfını kısa adıyla kullanabiliriz.
2
class
Program
{
class (Sınıf tanımı)
— class bir sınıf tanımladığımızı söyler; Program sınıfın adıdır; { ise bu sınıfa ait kod bloğunun başladığını gösterir.
Öğretmen açıklaması
Bu adımı hiç bilmeyen biri için okuyalım: Program adındaki classı oluşturur ve Main methodunu bu sınıfın içine yerleştireceğimiz alanı açar. Satırın rolü: Program kodunu taşıyan sınıf bloğunun başlangıcı. Sözdizimi açısından class bir sınıf tanımladığımızı söyler; Program sınıfın adıdır; { ise bu sınıfa ait kod bloğunun başladığını gösterir. Çalışma sırasında Derleyici { ile başlayan kapsamın içine girer. Bu kapsam kapanış } görülene kadar devam eder ve içerideki Main methodunun Program sınıfına ait olduğunu bilir. Gözlenebilir ara sonuç şudur: Çalışma sırasında ekrana yazı göndermez; Program kodlarını düzenleyen yapısal çerçeveyi kurar. Kısaca: bu satır programın yapısını kurar veya terminalde göreceğimiz yazıyı üretir; şimdi bir sonraki satıra geçip bu görevin nasıl tamamlandığını izleyin.
- Satırı soldan sağa okuyun ve her kelimeyi, ismi, parantezi ve noktalama işaretini ayrı ayrı adlandırın.
- Bu parçaların birlikte hangi işi yaptığını ve hangi bloğun içinde bulunduğunu kendi cümlenizle söyleyin.
- Satırı silersek derleyicide veya terminalde ne değişeceğini önce tahmin edin, sonra çalıştırarak kontrol edin.
- Metni ya da tek bir kod parçasını değiştirin; yeni terminal çıktısını çalıştırmadan önce tahmin edip sonucu karşılaştırın.
Yaygın hata: class kelimesini çalıştırılan bir komut sanmak. class ekrana yazmaz; kodun hangi yapının içinde duracağını belirler.
Şimdi sen dene: Program adını Demo yapıp çalıştırın. Ekran çıktısı değişmez; çünkü sınıf adı kullanıcıya yazdırılan metin değildir.
Zihinsel model ve benzetme
Zihninde canlandır: Bir tipin şeması açıldı; üyeler bu tipe ait olacak.
Günlük hayattan: class, bir kalıptır: aynı kalıptan nesneler dökülür.
İşaretlerin anlamı
class
Yeni bir tip tanımlar.
{
Bloğu açar.
Bu satırı hiç bilmeyen biri için parçalayalım
Satırın görevi: Program kodunu taşıyan sınıf bloğunun başlangıcı
Kavram: class Program bloğu
class Program { ifadesini “Program adında bir kutu aç” diye okuyabilirsiniz. Kutunun içine Main ve ona ait komutlar yerleşir.
Blok kapsamı: Bu satır Program sınıfının bloğunu açar. İçerideki Main bu sınıfa ait olur; alttaki } sınıfın kapsamını kapatır.
Neden şimdi: Main methodunu içine koyacağımız bir sınıf olmadan C# programının yapısı tamamlanmaz; bu nedenle Mainden önce açılır.
Kod etiketlerini tek tek incele
class
class anahtar kelimesi
Ne yapar? Yeni bir referans türü/sınıf tanımlar.
Neden burada? Programın methodlarını aynı yapısal tip altında toplar.
Silinirse: Program için bir sınıf gövdesi oluşmaz.
Program
sınıf adı
Ne yapar? Sınıfı diğer tiplerden ayıran adı verir.
Neden burada? Çalıştırılacak kodun hangi tipe ait olduğunu belirler.
Silinirse: Sınıfa verilen referans ve giriş yapısı bozulur.
{
açılış süslü parantezi
Ne yapar? Sınıf bloğunun kapsamını başlatır.
Neden burada? Main methodunun Program sınıfına ait olduğunu gösterir.
Silinirse: Sonraki methodlar sınıf dışında kalır ve derleme bozulur.
Amaç
Program adındaki classı oluşturur ve Main methodunu bu sınıfın içine yerleştireceğimiz alanı açar.
Nasıl Çalışır
Derleyici { ile başlayan kapsamın içine girer. Bu kapsam kapanış } görülene kadar devam eder ve içerideki Main methodunun Program sınıfına ait olduğunu bilir.
Akış Şeması (Flowchart)
AST (Abstract Syntax Tree)
{
"type": "ClassDeclaration",
"name": "Program"
}
Değişiklikler (Diff)
+ Eklendi:
+ class Program {
Akıllı İpuçları (Adaptive Hints)
Tetikleyici: unbalanced_braces
Sınıfı açan { için sonda bir kapanan } olmalı.
Yaygın Hata
class açılış süslü parantezini yazıp sınıfı kapatan } parantezini unutmak.
Ek Açıklama
class Program ile kodumuzu barındıracak sınıfı tanımlıyoruz. C#'ta Java'nın aksine sınıf adı dosya adıyla aynı olmak zorunda değildir.
3
static
void
Main
()
{
Main() metodu (Giriş noktası)
— static nesne oluşturmadan çağrılabilen anlamına gelir; void geri değer dönmeyeceğini söyler; Main başlangıç adıdır; () bu örnekte giriş parametresi olmadığını; { ise method bloğunun başladığını gösterir.
Öğretmen açıklaması
Bu adımı hiç bilmeyen biri için okuyalım: Konsol programının başlangıç methodunu tanımlar. Program çalıştırıldığında ilk olarak bu bloğun içine girilir. Satırın rolü: Programın çalışmaya başladığı giriş noktası. Sözdizimi açısından static nesne oluşturmadan çağrılabilen anlamına gelir; void geri değer dönmeyeceğini söyler; Main başlangıç adıdır; () bu örnekte giriş parametresi olmadığını; { ise method bloğunun başladığını gösterir. Çalışma sırasında .NET konsol çalışma zamanı programı başlatırken Main methodunu bulur ve { ile } arasındaki komutları yukarıdan aşağıya yürütür. Gözlenebilir ara sonuç şudur: Bu imza metin yazdırmaz; .NETin gireceği Main bloğunu ve içindeki Console.WriteLine komutlarının çalışma alanını açar. Kısaca: bu satır programın yapısını kurar veya terminalde göreceğimiz yazıyı üretir; şimdi bir sonraki satıra geçip bu görevin nasıl tamamlandığını izleyin.
- Satırı soldan sağa okuyun ve her kelimeyi, ismi, parantezi ve noktalama işaretini ayrı ayrı adlandırın.
- Bu parçaların birlikte hangi işi yaptığını ve hangi bloğun içinde bulunduğunu kendi cümlenizle söyleyin.
- Satırı silersek derleyicide veya terminalde ne değişeceğini önce tahmin edin, sonra çalıştırarak kontrol edin.
- Metni ya da tek bir kod parçasını değiştirin; yeni terminal çıktısını çalıştırmadan önce tahmin edip sonucu karşılaştırın.
Yaygın hata: Main satırını ekrana yazı yazdıran bir komut sanmak. Main yalnızca başlangıç kapısıdır; görünen yazıyı içindeki WriteLine üretir.
Şimdi sen dene: Main içindeki Console.WriteLine satırını geçici olarak yorum satırı yapın. Program yine başlar ama terminale metin yazılmaz; başlangıç ile çıktı arasındaki farkı görün.
Zihinsel model ve benzetme
Zihninde canlandır: Programın giriş noktası: çalıştırma buradan başlar.
İşaretlerin anlamı
static
Üyeyi örnek olmadan tip üzerinden erişilebilir yapar.
void
Methodun değer döndürmediğini söyler.
{
Bloğu açar.
Bu satırı hiç bilmeyen biri için parçalayalım
Satırın görevi: Programın çalışmaya başladığı giriş noktası
Kavram: Main giriş methodu
static void Main() { satırını “programın giriş kapısını aç” diye okuyun. Parantez içi boş olduğu için bu örnek dışarıdan değer istemeden başlar.
Blok kapsamı: Bu satır Main methodunun bloğunu açar. İçerideki Console.WriteLine Main çalışırken yürütülür; ilk } bu methodu kapatır.
Neden şimdi: Programın hangi satırdan başlayacağını belirlemek gerekir. Bu yüzden Console.WriteLine çağrısından önce Main bloğu açılır.
Kod etiketlerini tek tek incele
static
static bildirimi
Ne yapar? Methodu nesne oluşturmadan sınıf üzerinden çalışabilir hale getirir.
Neden burada? Uygulama başlangıcında henüz Program nesnesi yoktur.
Silinirse: Giriş methodu beklenen biçimde bulunmayabilir.
void
return tipi
Ne yapar? Methodun değer döndürmediğini belirtir.
Neden burada? Main yalnızca programı başlatır ve burada sonuç döndürmez.
Silinirse: Method imzası değişir ve giriş noktası tanınmayabilir.
Main()
method imzası
Ne yapar? Uygulamanın başlangıç methodunu tanımlar.
Neden burada? .NET çalışma zamanı ilk olarak bu methodu çağırır.
Silinirse: Programın nereden başlayacağı belirsizleşir.
{
açılış süslü parantezi
Ne yapar? Main bloğunun kapsamını başlatır.
Neden burada? İçindeki Console çağrısının Maine ait olduğunu gösterir.
Silinirse: Komutlar method bloğunun dışında kalır.
Amaç
Konsol programının başlangıç methodunu tanımlar. Program çalıştırıldığında ilk olarak bu bloğun içine girilir.
Nasıl Çalışır
.NET konsol çalışma zamanı programı başlatırken Main methodunu bulur ve { ile } arasındaki komutları yukarıdan aşağıya yürütür.
Akış Şeması (Flowchart)
AST (Abstract Syntax Tree)
{
"type": "MethodDeclaration",
"modifiers": [
"static"
],
"returnType": "void",
"name": "Main"
}
Değişiklikler (Diff)
+ Eklendi:
+ static void Main() {
Akıllı İpuçları (Adaptive Hints)
Tetikleyici: lowercase_main
C#'ta giriş metodu büyük M ile 'Main' olmalıdır, 'main' değil. Dil büyük/küçük harfe duyarlıdır.
Yaygın Hata
Main adını veya parantezlerini değiştirerek .NETin giriş noktasını bozmak.
Ek Açıklama
Main metodu programın giriş noktasıdır. C#'ta büyük M ile yazılır. CLR programı buradan başlatır.
4
Console
.
WriteLine
(
"Merhaba Dünya!"
);
Console.WriteLine() (Satır yazdırma)
— Console terminale erişen hazır sınıftır; . üye erişim işaretidir; WriteLine çağrılacak methoddur; tırnak içindeki metin methoda verilen yazıdır; ; komutun bittiğini belirtir.
Öğretmen açıklaması
Bu adımı hiç bilmeyen biri için okuyalım: Merhaba Dünya metnini terminalde görünür hale getirir. Bu, örneğin kullanıcıya gösterdiği gerçek çıktıdır. Satırın rolü: Metni terminale yazan çalıştırılabilir satır. Sözdizimi açısından Console terminale erişen hazır sınıftır; . üye erişim işaretidir; WriteLine çağrılacak methoddur; tırnak içindeki metin methoda verilen yazıdır; ; komutun bittiğini belirtir. Çalışma sırasında Main çalışırken .NET Console sınıfının WriteLine methodunu çağırır ve tırnak içindeki metni standart terminal çıktısına gönderir. WriteLine ayrıca yazının sonunda yeni satıra geçer. Gözlenebilir ara sonuç şudur: Terminalde Merhaba Dünya yazısını görürüz. WriteLine kullanıldığı için imleç bir sonraki satıra geçer. Kısaca: bu satır programın yapısını kurar veya terminalde göreceğimiz yazıyı üretir; şimdi bir sonraki satıra geçip bu görevin nasıl tamamlandığını izleyin.
- Satırı soldan sağa okuyun ve her kelimeyi, ismi, parantezi ve noktalama işaretini ayrı ayrı adlandırın.
- Bu parçaların birlikte hangi işi yaptığını ve hangi bloğun içinde bulunduğunu kendi cümlenizle söyleyin.
- Satırı silersek derleyicide veya terminalde ne değişeceğini önce tahmin edin, sonra çalıştırarak kontrol edin.
- Metni ya da tek bir kod parçasını değiştirin; yeni terminal çıktısını çalıştırmadan önce tahmin edip sonucu karşılaştırın.
Yaygın hata: Console, WriteLine ve tırnak içindeki metni tek bir şey sanmak. Console araçtır, WriteLine yaptığı iştir, metin ise o işe verilen değerdir.
Şimdi sen dene: Tırnak içindeki metni kendi adınızla değiştirin. Sonra WriteLine yerine Write yazıp yeni satıra geçiş farkını terminalde gözlemleyin.
Zihinsel model ve benzetme
Zihninde canlandır: Bu satırın sonucu terminalde görünür hale geliyor.
Günlük hayattan: WriteLine, terminale not bırakmaktır; Write aynı satıra devam eder.
İşaretlerin anlamı
Console
Terminal girdi/çıktı türü; ilk harfi büyük.
;
İfadenin bittiğini bildirir.
Başka nasıl çözülürdü?
Kalıcı iz için ILogger, hızlı deneme için Console uygundur.
Sık yapılan hata
Noktalı virgül unutulur Belirti: error CS1002: ; expected — derleme durur.
Neden: C# her ifadeyi ; ile bitirir.
Çözüm: Derleyici listesindeki ilk hataya odaklan; çoğu zaman bir önceki satırdadır.
WriteLine yerine print/system yazılır (eski alışkanlık) Belirti: error CS0103: The name 'print' does not exist — derleme durur.
Neden: C# büyük/küçük harfe duyarlıdır; terminal çıktısı Console üzerinden alınır.
Çözüm: Otomatik tamamlamayı kullan; cw + Tab kısayolu WriteLine üretir.
Bu satırı hiç bilmeyen biri için parçalayalım
Satırın görevi: Metni terminale yazan çalıştırılabilir satır
Kavram: Console.WriteLine çıktı çağrısı
Console.WriteLine("Merhaba Dünya!"); ifadesini “Console üzerinden WriteLine methodunu çağır, içine verilen metni yaz” diye okuyun.
Blok kapsamı: Bu satır Main bloğunun içindedir. Main çalışınca yürütülür ve sınıf ile Main kapanış parantezlerinden önce tamamlanır.
Neden şimdi: Programın gerçekten çalıştığını gözümüzle doğrulamak için Main bloğunun içine konmuştur; Main açılmadan bu komut çalışamaz.
Kod etiketlerini tek tek incele
Console
Console sınıfı
Ne yapar? Standart terminal akışına erişim sağlar.
Neden burada? Kullanıcıya veya geliştiriciye gözlenebilir metin göndermek için seçilir.
Silinirse: Bu sınıf üzerinden terminal çıktısı üretilemez.
.
üye erişim noktası
Ne yapar? Console sınıfının methoduna erişir.
Neden burada? Hangi davranışın çağrılacağını sınıf ile method arasında bağlar.
Silinirse: Write/WriteLine methoduna ulaşılmaz.
WriteLine(...)
WriteLine methodu
Ne yapar? Verilen metni yazıp satır sonuna geçer.
Neden burada? Dersin beklenen Merhaba Dünya çıktısını üretir.
Silinirse: Terminal çıktısı oluşmaz veya sonraki çıktı aynı satıra birleşir.
;
noktalı virgül
Ne yapar? Method çağrısını tamamlar.
Neden burada? C# statement sınırını belirtir.
Silinirse: Derleme hatası oluşabilir.
Amaç
Merhaba Dünya metnini terminalde görünür hale getirir. Bu, örneğin kullanıcıya gösterdiği gerçek çıktıdır.
Nasıl Çalışır
Main çalışırken .NET Console sınıfının WriteLine methodunu çağırır ve tırnak içindeki metni standart terminal çıktısına gönderir. WriteLine ayrıca yazının sonunda yeni satıra geçer.
Operatörler & Semboller
.
Üye erişim operatörü
Sınıfın üyesine (metoduna) erişir
Akış Şeması (Flowchart)
AST (Abstract Syntax Tree)
{
"type": "MethodCall",
"object": "Console",
"method": "WriteLine",
"args": [
{
"type": "String",
"value": "Merhaba Dünya!"
}
]
}
Değişiklikler (Diff)
+ Eklendi:
+ Console.WriteLine("Merhaba Dünya!");
Akıllı İpuçları (Adaptive Hints)
Tetikleyici: write_vs_writeline
Write() alt satıra geçmez, WriteLine() geçer (Line = satır).
Tetikleyici: console_not_found
'Console tanınmıyor' hatası alırsanız dosyanın başına 'using System;' ekleyin.
Yaygın Hata
Metni tırnaksız yazmak, WriteLine parantezini kapatmamak veya satır sonundaki ; işaretini unutmak.
Ek Açıklama
Console.WriteLine ile ekrana yazı yazdırıyoruz. Console sınıfının WriteLine metodu yazıyı yazar ve otomatik olarak alt satıra geçer.
5
}
} (Main metodu kapanışı)
— } bir anahtar kelime veya method çağrısı değildir; açılmış bloğu kapatan kapanış süslü parantezidir.
Öğretmen açıklaması
Bu adımı hiç bilmeyen biri için okuyalım: Daha önce açılmış olan Main methodunun kod bloğunun bittiğini bildirir. Satırın rolü: Main methodunun kapsamını kapatan satır. Sözdizimi açısından } bir anahtar kelime veya method çağrısı değildir; açılmış bloğu kapatan kapanış süslü parantezidir. Çalışma sırasında Derleyici bu parantezi gördüğünde en yakın açık bloğun kapsamını bitirir. Girintiye bakarak ve yukarıdaki açılış parantezleri eşleştirerek hangi bloğun kapandığını anlarız. Gözlenebilir ara sonuç şudur: Tek başına terminal çıktısı üretmez; kodun doğru kapsamda kapanmasını sağlar. Kısaca: bu satır programın yapısını kurar veya terminalde göreceğimiz yazıyı üretir; şimdi bir sonraki satıra geçip bu görevin nasıl tamamlandığını izleyin.
- Satırı soldan sağa okuyun ve her kelimeyi, ismi, parantezi ve noktalama işaretini ayrı ayrı adlandırın.
- Bu parçaların birlikte hangi işi yaptığını ve hangi bloğun içinde bulunduğunu kendi cümlenizle söyleyin.
- Satırı silersek derleyicide veya terminalde ne değişeceğini önce tahmin edin, sonra çalıştırarak kontrol edin.
- Metni ya da tek bir kod parçasını değiştirin; yeni terminal çıktısını çalıştırmadan önce tahmin edip sonucu karşılaştırın.
Yaygın hata: İki } parantezinin aynı şeyi kapattığını sanmak. İçteki parantez Maini, dıştaki parantez Program classını kapatır.
Şimdi sen dene: Satır 5 veya satır 6daki } parantezlerinden birini silip derleyin. Hata mesajını açılan bloğun neden kapanması gerektiğiyle ilişkilendirin.
Bu satırı hiç bilmeyen biri için parçalayalım
Satırın görevi: Main methodunun kapsamını kapatan satır
Kavram: Kapanış süslü parantezi
Bu satırı “az önce açtığım kutunun kapağını kapat” diye okuyun. Satır 5 Maini, satır 6 Program classını kapatır.
Blok kapsamı: Bu kapanış parantezi en yakın açık bloğu kapatır. Bir üst satırlardaki { işaretlerini iç içe sırasıyla eşleştirin.
Neden şimdi: Main ve Program iç içe açıldığı için önce Main, sonra class ayrı bir kapanış paranteziyle kapatılır.
Kod etiketlerini tek tek incele
}
kapanış süslü parantezi
Ne yapar? Açık olan bloğun kapsamını bitirir.
Neden burada? Önceki class veya Main bloğunu doğru yerde kapatır.
Silinirse: Blok açık kalır ve derleyici kapsam hatası verir.
Amaç
Daha önce açılmış olan Main methodunun kod bloğunun bittiğini bildirir.
Nasıl Çalışır
Derleyici bu parantezi gördüğünde en yakın açık bloğun kapsamını bitirir. Girintiye bakarak ve yukarıdaki açılış parantezleri eşleştirerek hangi bloğun kapandığını anlarız.
Akış Şeması (Flowchart)
AST (Abstract Syntax Tree)
{
"type": "BlockEnd",
"scope": "method"
}
Değişiklikler (Diff)
Akıllı İpuçları (Adaptive Hints)
Tetikleyici: unbalanced_braces
Her açılan { için bir kapanan } gerekir.
Yaygın Hata
Açılış { ve kapanış } parantezlerini eşleştirmemek veya kapanışları yanlış sıraya koymak.
Ek Açıklama
Bu parantez Main metodunu kapatıyor.
6
}
} (Sınıf kapanışı)
— } bir anahtar kelime veya method çağrısı değildir; açılmış bloğu kapatan kapanış süslü parantezidir.
Öğretmen açıklaması
Bu adımı hiç bilmeyen biri için okuyalım: Daha önce açılmış olan Program classının kod bloğunun bittiğini bildirir. Satırın rolü: Program classının kapsamını kapatan satır. Sözdizimi açısından } bir anahtar kelime veya method çağrısı değildir; açılmış bloğu kapatan kapanış süslü parantezidir. Çalışma sırasında Derleyici bu parantezi gördüğünde en yakın açık bloğun kapsamını bitirir. Girintiye bakarak ve yukarıdaki açılış parantezleri eşleştirerek hangi bloğun kapandığını anlarız. Gözlenebilir ara sonuç şudur: Tek başına terminal çıktısı üretmez; kodun doğru kapsamda kapanmasını sağlar. Kısaca: bu satır programın yapısını kurar veya terminalde göreceğimiz yazıyı üretir; şimdi bir sonraki satıra geçip bu görevin nasıl tamamlandığını izleyin.
- Satırı soldan sağa okuyun ve her kelimeyi, ismi, parantezi ve noktalama işaretini ayrı ayrı adlandırın.
- Bu parçaların birlikte hangi işi yaptığını ve hangi bloğun içinde bulunduğunu kendi cümlenizle söyleyin.
- Satırı silersek derleyicide veya terminalde ne değişeceğini önce tahmin edin, sonra çalıştırarak kontrol edin.
- Metni ya da tek bir kod parçasını değiştirin; yeni terminal çıktısını çalıştırmadan önce tahmin edip sonucu karşılaştırın.
Yaygın hata: İki } parantezinin aynı şeyi kapattığını sanmak. İçteki parantez Maini, dıştaki parantez Program classını kapatır.
Şimdi sen dene: Satır 5 veya satır 6daki } parantezlerinden birini silip derleyin. Hata mesajını açılan bloğun neden kapanması gerektiğiyle ilişkilendirin.
Bu satırı hiç bilmeyen biri için parçalayalım
Satırın görevi: Program classının kapsamını kapatan satır
Kavram: Kapanış süslü parantezi
Bu satırı “az önce açtığım kutunun kapağını kapat” diye okuyun. Satır 5 Maini, satır 6 Program classını kapatır.
Blok kapsamı: Bu kapanış parantezi en yakın açık bloğu kapatır. Bir üst satırlardaki { işaretlerini iç içe sırasıyla eşleştirin.
Neden şimdi: Main ve Program iç içe açıldığı için önce Main, sonra class ayrı bir kapanış paranteziyle kapatılır.
Kod etiketlerini tek tek incele
}
kapanış süslü parantezi
Ne yapar? Açık olan bloğun kapsamını bitirir.
Neden burada? Önceki class veya Main bloğunu doğru yerde kapatır.
Silinirse: Blok açık kalır ve derleyici kapsam hatası verir.
Amaç
Daha önce açılmış olan Program classının kod bloğunun bittiğini bildirir.
Nasıl Çalışır
Derleyici bu parantezi gördüğünde en yakın açık bloğun kapsamını bitirir. Girintiye bakarak ve yukarıdaki açılış parantezleri eşleştirerek hangi bloğun kapandığını anlarız.
Akış Şeması (Flowchart)
AST (Abstract Syntax Tree)
{
"type": "BlockEnd",
"scope": "class"
}
Değişiklikler (Diff)
Akıllı İpuçları (Adaptive Hints)
Tetikleyici: missing_class_brace
Sınıfı kapatan son } eksikse derleme hatası alırsınız.
Yaygın Hata
Açılış { ve kapanış } parantezlerini eşleştirmemek veya kapanışları yanlış sıraya koymak.
Ek Açıklama
Son parantez Program sınıfını kapatıyor ve programımız tamamlanıyor.