C# - 2. Ders: İlk Adımlar

Memik Yanık, programlama derslerine C# içinde en temel uygulamalarla devam ediyor. Daha detaylara inmeden önce temel bilgiler bu yazıda.

Konu .NET uyumlu programlama dilleri ve özellikle C# olduğunda ilk karşılaşacağınız kavram belki de Class kavramıdır. Hemen ilk dakikada size Class'ları anlatmayacağım. C# programları Class şeklinde düzenlendiği için en azından adından söz edeceğim.

Günümüzün modern programlama dillerinde programlar genellikle Class'lar şeklinde paketlenmekte, Class'lar şeklinde düzenlenmektedir. Programları Class'lar halinde paketlenmenin sayısız yararları vardır. Ancak bunları burada anlatmayacağım. Class'lar hakkında bilgi sahibi olmadan Visual Basic 6 ve Delphi gibi diller ile program geliştirmek mümkün iken C++, C# ve Java gibi diller Class'lar hakkında bilgi sahibi olmanızı zorunlu kılmaktadır.

Quick Basic, Pascal ve C gibi klasik programlama dillerinde kod dosyaları içinde fonksiyonlar ve procedure'ler bulunuyordu. Hatta C'de fonksiyon procedure ayrımı da yoktur. Başka bir deyişle programcılar yapmak istedikleri işlemlere uygun fonksiyonlar yazıp gerek duydukça bunları çağırırlardı.

Zamanla programlar büyüyüp karmaşıklaştıkça paketlenmesi ihtiyacı doğdu. Fonksiyon ve metotların Class'lar halinde paketlenmesi ile birlikte Class içinde bulunan fonksiyonların kullanılması, organize edilmesi ihtiyacı doğdu. Günümüzde yaygın olarak kullanılan programlama dillerinin Class'ları metotlardan başka Interface'leri, Olayları, Özellikleri, Delegate'leri ve Yapıcı metotları içerebilmektedir. Lütfen olay nedir özellik nedir ki diye sormayın. Zamanı gelince bu konular hakkında bilgi verilecektir.

Nesneye Yönelik Örnekler

Yerli yabancı ayrımı yapmadan bugüne kadar hangi kaynağa baktıysam konu nesneye yönelik programcılık olduğunda ilk birkaç sayfada biyolojiden, memelilerden, ütülerden arabalardan vs. söz edilmektedir. Her yazar nesneye yönelik programcılığın 3 temel kavramını kendince anlatmaktadır. Hemen belirtmek isterim ki kişisel görüşme göre bu anlayış öğrenmeyi zorlaştırmaktadır.

İstediğiniz ayrıntıda polimorfizm'den söz edin, istediğiniz kadar biyolojiden memelilerden örnek verin bu kavramların kod karşılığı görülmeden verilen bilgiler havada kalıyor. Bu nedenledir ki bu derste nesneye yönelik programcılığın temel kavramlarının adını ağzıma almadan, bir daha "nesneye yönelik programcılık" sözünü etmeden bu konuyu anlatmak istiyorum. Esasında burada bilim yapmıyoruz, olsa olsa sizlere C# programlama dili ile nasıl program yazabileceğinizi anlatmak istiyoruz. Amacımız en basit şekilde programcılık tecrübesi olmayanları programcılığa alıştırmaktır, onları C# ve diğer programlama dillerini öğrenebileceklerine inandırmaktır.

Aşağıda en basit veya en kısıtlı, en az satıra sahip bir C# programı bulunmaktadır. Bu kodu Not Defteri penceresine yazıp CS uzantısı ile kaydedip .NET Framework ile gelen C# derleyicisi ile derleyip EXE yapabilirsiniz. Bu işlemin nasıl yapıldığı ileriki sayfalarda anlatılacaktır.

class Deneme
{
static void Main(string[] args)
{
}
}

Buna göre C# ile program yazmak istiyorsanız önce mutlaka bir Class bloğu hazırlamanız gerekmektedir. C, C++ ve C# programlarının başlangıç noktası Main() metodu olduğundan Main() metoduna yer vermek zorundasınız. Bu C# kodu CS uzantılı bir dosyaya yazılıp kaydedilip derlenip hazırlanan EXE dosya çalıştırılırsa herhangi bir hata ile karşılaşılmaz. Ancak bu program bu hali ile herhangi bir işlem yapmaz.

En az satıra sahip bu C# programındaki Main() metodunun hem static hem de void olduğunu işaret ettim. C# programlarının başlangıç noktası olan Main() metodu(C programlama dilinde Main'den fonksiyon diye söz edilir) statik olmak zorundadır ama void olması zorunlu değildir. Metot geriye bir değer göndermeyecekse metot adından önce void yazılır. Daha sonra metotların geriye nasıl değer gönderdikleri konusunda bilgi verilecektir. Lütfen biraz sabır.

Metodlar, Class'lar

Bu kısacak programda bile Class'tan söz ettik, metottan söz ettik. Size önerim başlangıçta verdiğim kısacak kodlarda kullanıp ancak sözünü etmediğim deyimlere, metotlara veya satırlara kayıtsız kalmanızdır. Örneğin bu kısacak örnekte bile sözünü etmediğim, dikkatinizden kaçırmak istediğim bir şeyler var. Dikkat ederseniz Main() metoda adından sonra parantezlerin arasına "string[] args" yazdım. Bu parantezin içine yazdıklarım gerçekte dizi değişken tanımlamaktan başka bir şey değildir Ancak şu anda bundan söz etmeyeceğim. Bu nedenle bu derslerden azami verimi almak istiyorsanız anlatılmayanlara değil anlatılanlara odaklanmalısınız.

Bu programı C'de yazmış olsaydım yine Main() olurdu ama bu kez Class bloğu olmazdı. Ayrıca Main'den bu kez fonksiyon diye söz ederdim. Çünkü C programları Class'lar şeklinde düzenlenmez ve metotlar fonksiyon olarak bilinir. İleriki günlerde C++ derslerini hazırladığımda C++ ile birlikte ister istemez bazen C'den de söz edilecektir. C++ derslerinde C++'ı C gibi anlatmayacağımı bilmenizi isterim. C++ derleyicileri yapıları gereği C kodlarını destekledikleri C++ konulu yerli yabancı kaynaklarda ne hikmetse C++ kitaplarında C'den bolca söz edilir.

Kaldığımız yerden devam edelim. Şimdi C# programının başlangıç noktası olan Main() metodu içinde bir değişkene yer vereceğim. Bu değişkeni Main() metodu içinde tanımladım. Değişkeni Main() metodu tarafından sınırlanan kod bloğu yerine Class bloğu içinde tanımlayabilirdim.

class Deneme
{
static void Main(string[] args)
{
int yil;
}
}

Gördüğünüz gibi C# programlarında değişken tanımlanırken önce değişkenin tipi sonra adı yazılmaktadır. Buradaki int bu değişkenin integer yani tamsayı tipindeki bilgileri saklayabileceğini işaret etmektedir. Programcılıkta değişken tanımlamayı günlük hayatta telefon edip bir otelde yer ayırmaya benzetmek mümkündür. Bu değişkeni tanımlamakla derleyiciye demiş oluyorum ki, programın ileriki safhalarında elimdeki integer bilgileri bellekte tutma gereğini duyabilirim. Bu nedenle bana bellekte yer ayırt.

Bu kısacak kodu yorumlamak gerekirse, bu programdaki "Deneme" adlı Class'ın Main() adında bir metodu bulunmaktadır. Main() metodu içinde yaşayabilecek "yil" adında ve Integer tipindeki bilgilerin aktarılabileceği bir değişken tanımlanmıştır. Fark etmiş olabileceğiniz gibi C# programlarında Class ve metot başlatılan satırlar hariç her satırın sonuna ";" konulmaktadır.

Bu kodu VB.NET için yazsaydım biraz farklı olurdu. Ancak temel mantıkta pek farklılık yoktur. VB.NET'te de uygulamalar Class halinde düzenlenmekte ve Class'ların içinde metotlar, alanlar(yani değişkenler), özellikler, olaylar, Interface'ler olabilmektedir. Lütfen olay nedir, özellik nedir, interface nedir gibi sorularla şimdilik meşgul olmayın.

Yukarıda belirtildiği gibi Class'lar metotları barındırabilmektedir. Ayrıca C# projelerinde Main() metodunun bulunması zorunludur. Yukarıda verdiğim en kısıtlı C# programı içinde hazırladığım Class'ta 2. bir metot hazırladım. Herhangi bir satır içermeyen bu metot bu hali ile herhangi bir işlem yapmaz. Bu metodu da hem statik hem de void olarak işaret ettiğimi fark etmiş olmalısınız.

class Deneme
{
static void Main(string[] args)
{
int yil;
}
static void Mesaj()
{
}
}


Konsoldan Mesajlar

Daha önce C#, C++, Delphi gibi bir programlama dili ile program geliştirmiş iseniz bu derste anlatılanlar size son derece basit gelecektir. Bu derslerdeki amaçlarımdan birisi C# gibi bir programlama dilinin nasıl kolay öğrenilebileceğini kanıtlamaktır.

Programcılıkta tecrübeli arkadaşlara bir önerim var; sizler bu yazıda ne anlatıldığı ile değil nasıl anlatıldığı ile ilgilenebilirsiniz. Belki bir üniversitenin öğretim görevlisisiniz, belki bir Microsoft eğitim merkezinde eğitmensiniz.

Şimdi ise yukarıda verdiğim basit C# kod dosyası içinde Mesaj() adını verdiğim metodu işleteceğim. Hazırladığım metot aynı sınıfın içinde olduğu için herhangi bir hazırlık yapmadan direk adıyla çağırıp işletmek mümkündür.

class Deneme
{
static void Main(string[] args)
{
int yil;
Mesaj();
}
static void Mesaj()
{
}
}

Bu hali ile bu C# programı veya CS uzantılı dosya DOS penceresinde derlenip EXE hazırlanıp çalıştırılırsa Main() metodu otomatik olarak işletilir. Çünkü yukarıda söylendiği gibi C# programları Main() metodundan itibaren çalışmaya başlarlar.

Bu programı aşağıdaki gibi düzenlemiş olsaydım değişen bir şey olmazdı. Bu kısa örnekte "yil" adını verdiğim değişkeni hiç kullanmadığım için C# derleyicisi derleme sırasında uyarı mesajı verir.

class Deneme
{
static void Mesaj()
{
}
static void Main(string[] args)
{
int yil;
Mesaj();
}
}

Şimdi bu Mesaj() adını verdiğim metoda müdahale edip işletildiği zaman ekrana bilgi yazılmasını sağlayacağım. Konsolda yani DOS penceresinde çalışan C# projelerinde ekrana bilgi yazma işlemleri .NET Framework ile gelen Console sınıfında tanımlı olan Write() veya WriteLine() metotları ile yapılmaktadır.


Tam bu noktada elime fırsat geçmişken biraz kendimden bahsetmek isterim. Yıllardır Memik Yanık aleyhine konuşanların en genel geçer suçlaması şuydu: "Memik Yanık kitaplarını ekran görüntüleri ile doldurup kitapları şişiriyor". Gördüğünüz gibi yukarıda Not Defteri ile hazırladığım toplam 12 satırdan meydana gelen kodun kendisini vermek yerine kodu yazmış olduğum Not Defteri penceresinin ekran görüntüsünü verdim. Bu metni kitap için yazmış olsaydım ekran görüntüsünü belli bir oranda küçültüp kitapta daha az yer kalmasını sağlardım.

Aşağıda ise bu Not Defteri penceresine yazmış olduğum kodun kendisi var. Sizce kitap metni içinde hangisi çok yer kaplar, ekran görüntüsü mü yoksa kodun kendisi mi? Seçilen puntoya bağlı olarak değişse bile aralarında önemsenecek bir farkın olmadığını söyleyebilirim. Ne ki ekran görüntüsü şeklinde verilen kısa kodları incelemek daha kolaydır.

class Deneme
{
static void Main(string[] args)
{
int yil;
Mesaj();
}
static void Mesaj()
{
System.Console.WriteLine("Fenerbahçe");
}
}

Bu şekilde düzenlenen C# uygulaması DOS penceresinde derlenip çalıştırıldığında ekrana "Fenerbahçe" yazdırılır. Mesaj() metoduna yazdığım satır hakkında biraz konuşmak gerekirse; "System.Console.WriteLine("Fenerbahçe");" satırındaki System bir Namespace'tir. Şimdi diyeceksiniz Namespace nedir? Cevabım hazır: Lütfen merakınızı sonraya saklayın; halk dili ile söylemek gerekirse "üzümü ye bağını sorma".

Kısaca anlatmak gerekirse Class'lar Namespace'lerin içine yerleştirilmektedir. System adlı Namespace .NET Framework ile gelen en önemli Namespace'tir ve çok sayıda Class'ı barındırmaktadır. DOS penceresine veya konsola bilgi yazmak üzere hazırladığım satırdaki Console bir Class'tır. Çok sayıda metoda sahip olan bu Class'ın sayesinde konsol yani DOS penceresi ile ilgili istenen işlemler yapılabilmektedir. Bu satırdaki WriteLine() ise Console sınıfının bir metodudur.

Yazdırma Metodları

Bu konuyu bir okulda, bir dershanede veya seminerde anlatıyor olsaydım C# hakkında biraz bilgisi olanlar "Memik bey WriteLine() static bir metot değil mi?" diye sorabilirlerdi. Soruyu soranlara cevabım "evet, WriteLine() metodu statik bir metottur". Tabii dersi veya semineri izleyenlerin bazıları "statik olanla olmayan metot arasında ne fark vardır" diye soru soracaklardı, bazıları ise keşke bu konuşulanları anlasaydım diye iç geçireceklerdi. Fırsat bu fırsat deyip hemen statik olan ve olmayan metotlar hakkında uzun açıklamalar yapmayacağım. Arkadaşlar lütfen biraz sabır.

Bazılarınız bu kısacak örneği bile hemen denemek, bu CS uzantılı dosyayı derleyip EXE dosya hazırlamak istiyor olabilir. Bu isteğe uyup CS uzantılı kod dosyasını derleyip EXE yapma üzerinde duracağım. Not Defteri ile hazırlayacağınız kod dosyalarını yerleştirmek üzere ayrı bir klasör hazırlamanızı öneririm. Bu klasör "C:" sürücüsünün kök klasöründe olursa ulaşılması kolay olur.

C#'ın kurallarına uyarak yazdığınız programları derleyip EXE dosya hazırlayacak program dosyası(CSC.EXE) Windows'un kurulu olduğu klasörün altında "Microsoft.NET\Framework" klasöründe yer almaktadır. .NET Framework'ün başka sürümünden yararlanıyorsanız bu klasörün adı farklı olabilir.


Hazırlayacağınız CS uzantılı dosyaları ya CSC.EXE dosyasının bulunduğu bu klasöre kaydetmeli ya da Denetim Masasındaki Sistem seçeneği ile ekrana getirilen Sistem Özellikleri diyalog kutusunda Gelişmiş sekmesindeki Sistem Değişkenleri seçeneğinden yararlanmalısınız. Path seçeneğinin içeriğine aşağıda verdiğim satırı ekleyip bilgisayarı yeniden başlatırsanız istediğiniz yerden CS uzantılı program dosyalarını derleyebilirsiniz.

"C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727;"

Şimdi sıra geldi bu programı derlemeye. Bu amaçla bir DOS penceresi açıp komut satırına "CSC ILK.CS" yazıp Enter tuşuna basınca C# programı derlenmeye başlandı. Yazdığım programda herhangi bir hata olmadığı için EXE dosya hazırlandı.


Yazdığım programda Main() metodu içinde "yil" adında ve int tipinde bir değişken tanımlamış olmama rağmen bu değişkeni hiç kullanmadığım için derleyici uyarıda bulundu. Bu uyarı ILK.CS dosyasından yola çıkılıp ILK.EXE dosyasının hazırlanmasına engel değildir. Derleyici uyarı yerine hata mesajı vermek zorunda kalsaydı EXE dosya hazırlanmazdı.

Tekrarlamak gerekirse derleme işlemi sonucu CS uzantılı C# programı ile aynı ada sahip bir EXE dosyası hazırlanır. Aşağıda verdiğim ekran görüntüsünü bu EXE dosyayı çalıştırdıktan sonra aldım. Derleme sonucu hazırlanan EXE dosya ancak .NET Framework kurulu bilgisayarda çalışır. Bu EXE dosyayı alıp .NET Framework kurulu olmayan başka bir bilgisayara götürdüğünüzde çalışmaz. Aşağıda verdiğim ekran görüntüsünü hazırladığım EXE dosyayı çalıştırdıktan sonra aldım.


Hazırlayıp derlediğim C# programı ekrana bu bilgiyi yazdıktan sonra çalışması otomatik olarak sona erer. Şimdi bu örmekte öyle bir ayarlama yapalım ki programın veya EXE dosyanın çalışması Enter tuşuna basıncaya kadar devam etsin. Programın çalışmasının Enter tuşuna basıncaya kadar devam etmesini sağlamak üzere koda bazı eklemeler yaptım.

class Deneme
{
static void Main(string[] args)
{
int yil;
Mesaj();
System.Console.WriteLine();
System.Console.Write("Çıkmak için Enter Tuşuna Basın");
System.Console.Read();
}
static void Mesaj()
{
System.Console.WriteLine("Şampiyon Fenerbahçe");
}
}

Gördüğünüz Console sınıfının WriteLine() metodunu Mesaj() adını verdiğim metodun içinden başka bir de Main() metodu içinde kullandım. Bu örnekte Main() metodu içinde önce Mesaj() adını verdiğim metot çağrıldığı için ekrana önce "Şampiyon Fenerbahçe" yazılır. Mesaj() metodunun çağrıldığı satırdan sonra yine WriteLine() metodu kullanılmaktadır. Bu kez WriteLine() metoduna ekrana yazılmak üzere bilgi parametre olarak verilmediği için ekranın o satırı boş kalır. Bir sonraki satırda ise WriteLine() yerine Write() metodunu kullandım.

WriteLine() metodu kendisine parametre olarak verilen bilgiyi ekrana yani DOS penceresine yazdıktan sonra imleci bir sonraki satırın başına alır. Write() metodu ise WriteLine() metodundan farklı olarak imleci bir sonraki satırın başına almaz. Burada programın çalışmasının kendiliğinden sona ermesini engelleyen metot ise Read(). Bu şekilde düzenlenen C# programı derlenip çalıştırıldığında aşağıdaki gibi bir sonuç alınır.


Read() metodu gerçekte kullanıcının gireceği bilgileri programa veya bir değişkene aktarılırken işlevsel olmaktadır. Bu örnekte kullanıcının bilgi girmesini istemediğimiz için Read() metodundan önce herhangi bir değişken adı yazmadım. Diğer yandan yukarıda verdiğim örnekte asıl anlatmak istediğim şuydu: C# programları Class'lar şeklinde hazırlanmakta ve Class'larda kod blokları metot şeklinde düzenlenmektedir.

Bu düşünce ile hazırladığım kısacık örnekte Main() metodundan başka Mesaj() adında bir metot hazırlayıp Main() metodu dahilinde işlettim. Şimdi bu örnekte değişiklik yapıp Mesaj() adını verdiğim metodu silip çalışma anında "yil" adını verdiğim değişkene bilgi aktarmaya çalışacağım.

class Deneme
{
static void Main(string[] args)
{
int yil;
System.Console.Write("Hangi Yıldayız : ");
yil = System.Console.Read();
}
}

Bu şekilde değiştirdiğim C# programında önce Write() metodu ile kullanıcıya mesaj verdikten sonra bir sonraki satırda Read() metodu sayesinde kullanıcıdan istenen bilgiyi "yil" adını verdiğim değişkene aktardım. Aşağıda verdiğim ekran görüntüsünü bu kısa programı derleyip çalıştırdıktan sonra aldım.


Ekrana mesaj yazarken Write() yerine WriteLine() metodunu kullansaydım imleç bilgi girişi için bir sonraki satırda beklerdi. Şimdi bu C# programına ekleme yapıp kullanıcıdan istenip "yıl" değişkenine aktarılan bilgiyi WriteLine() metodu ile tekrar ekrana yazacağım.

class Deneme
{
static void Main(string[] args)
{
int yil;
System.Console.Write("Hangi Yıldayız : ");
yil = System.Console.Read();
System.Console.WriteLine();
System.Console.Write("Girdiğiniz Yıl :");
System.Console.WriteLine(yil);
}
}

Bu şekilde düzenlenen örnek derlenirken hata vermediği gibi çalıştırıldığında da hata vermez ama girilen yıl bilgisi ile sonradan Write() metodu ile ekrana yazılan yıl bilgisi birbirinden farklı olur. Aşağıda verdiğim ekran görüntüsünü bu C# programını derleyip çalıştırdıktan sonra aldım.


Bu hatanın nasıl düzeltileceğini hemen anlatmak yerine bir sonraki derste C# ile ilgili temel bilgileri kaldığımız yerden vermeye devam edeceğim.

Bu Dersin Özeti

Birkaç cümle ile yukarıda yazılanları özetlemek gerekirse; Not Defteri ile yazdığımız ilk programda önce Class bloğuna yer verdik. Bildiğiniz gibi C# programlarında blok başı "{" ile ve blok sonu ise "}" ile işaret edilmektedir. C# programları çalışmaya Main() metodundan itibaren başladıkları için Class'ın sınırları içinde Main() metoduna yer verdik. Main() metodu içinde Console sınıfının WriteLine() metodu ile konsola yani DOS penceresine bilgi yazmayı denedik. Ayrıca .NET Framework ile gelen C# derleyicisi ile yani CSC.EXE ile CS uzantısı ile kaydettiğimiz C# programlarını derleyip EXE dosya hazırladık.

Yukarıda yazılanları okurken kafanızda bazı soruların belirdiğini tahmin etmek zor değil. Programcılık biraz da bisiklet sürmeyi öğrenmek gibidir: Önceler sık sık bisikletten düşersiniz, insanların 2 teker üzerinde nasıl düşmeden gittiklerine hayret edersiniz. Sonra 50 metre düşmediğinizde; bisiklet sürmesini öğrendiğinizi fark edersiniz. Birçok kişi programcılığa nereden başlayacağı konusunda tereddüde düşüyor. Bu soruların cevaplarını bu dersler boyunca birlikte araştıracağız.

Yazan: Memik Yanık
SDN - http://shiftdelete.net
 

MehmetMiri

Üyecik
Memik Hocam
İlk yazdığım kodlarda 4 - 5 hata almıştım fakat Sizin yazmış olduğunuz kodlarda copy / paste yaptığımda çalıştı sonradan farkettim ki küçük büyük harfleri göz ardı etmiyor WriteLine - writeline olmuyor :)

Blog başı "{" blok sonu "}" Delphi'deki Begin End Bloğu gibimi çalışıyor.

Sagılarımla...
 
Delphi'deki begin-end'in C# karşılığı "{" ve "}". C# derliyicisi küçük-büyük harf ayrımı yapar. Kodlar siteye aktarılırken bazı hatalar yapılabilir.
 

tertunc

Dekan
Onursal Üye
Memik Yanık dedi ki:
Delphi'deki begin-end'in C# karşılığı "{" ve "}". C# derliyicisi küçük-büyük harf ayrımı yapar. Kodlar siteye aktarılırken bazı hatalar yapılabilir.
Evet olmuyor.
 
Talha merhaba. Ne demek istediğini tam olarak anlamadım. Demek istediğim şuydu: Bazı küçük hatalar olabilir. Kod basit bile olsa bazı hatalar yapılabilir.
 

miraculous

Üyecik
slm hocam derslerinizi takip ediyorum heralde bundan sonra da sıkı takipçisi olacağım herşey için tşk ler. bı sıkıntım oldu da onu size sormak istedim
ben notpad e sizin ikinci derste verdiğiniz fenerbahçe örneğini aynen yazdım daha sonra derlemek için dos ekranına cmd ile girip verdiğiniz"CSC İLK.CS" cümlesini aynen yazdım windows bu dosyayı açamıyor dedi gözat tan framework 1 ve 2 de csc.exe yi seçmeme rağmen dosya açılmadı. 3 te ise runmsi yi denedim yine açılmadı tekrar tekrar denememe rağmen bi türlü yazdıramadım. notpad de de yazdıklarımı da dikkatlice kontrol ettim bi yanlış da yok
biliyorum belki de çok basit sorundur ama aşamadım. deli etti beni
yardımlarınızı rica ediyorum
ii bayramlar
 
miraculos merhaba. csc.exe adlı program(derleyici) ile cs dosyalarını derleyip EXE hazırlayabilmek için CS dosyası ya csc.exe ile aynı klasörde olmalı(ki önerilmez) ya da csc.exe'nn bulunduğu klasör path yani arama yoluna dahil edilir. Bu işlem dos penceresinde Path komutu ile yapılsa bile pratik değildir. İlk derste söylendiği gibi .NET Framework'e ait klasör Sistem Özellikleri penceresinde arama yoluna dahil edilir. Eğer dos penceresinde CSC yazıp enter tuşuna bastığında "iç veya dış komut bulunamıyor" gibi bir mesaj alıyorsan sorun PATH ayarlarından dolayıdır.
 

miraculous

Üyecik
hocam ilginiz için tşk ler path den düzelttik hatamızı yani derleyici açılıyor da şimdi de
"error CS2001:"ilk.cs" kaynak dosyası bulunamadı" ve
"fatal error CS2008: hiç giriş belirtilmedi" hatalarını veriyor ben yaptığım wordpad dosyasını C\aa klasörüne koymuştum ondan olabilir mi yoksa başka sebeb mi var
ben ilk defa deniyorum da acemiliğimi mazur görün :)
 
DOS penceresinde derleme yaparken bulunduğun klasörde derlemek istediğiniz CS uzantılı kod dosyanın adına dikkat et. Dosyayı farklı bir ad veya uzantı ile kaydetmiş olabilirsin.
 

miraculous

Üyecik


hocam aynen resimde görüldüğü gibi yani ad da veya yazdığımız kodlarda bi yanlışlık zannedersem yok (tabii fenerbahçe yerine galatasaray yazmamı değişiklik saymazsanız) ;D
 
Galatasaray yerine antepspor bile yazabilirsin. C# derleyicisi takim tutmayıp tarafsız olduğu için birşey demez. Ne ki C# derleyicisi metot ve değişken adlarında küçük büyük harf ayrımı yapar. Bu nedenle WriteLine() yerine Writeline() yazdığın için hata rapor eder.
 

miraculous

Üyecik


evet o yazı hatasını düzelttim ama yukardaki resimde de görüldüğü üzre aynı hataları vermeye devam ediyor
ilk başta ne bu aksilikler böyle ya :mad:
 
Biliyorsunuz DOS küçük büyük harf ayrımı yapmaz ama küçük "ı" ile büyük "İ" konusunda çaresiz kalıyor. Bu nedenle derleme satırını kod dosyasının adını doğru yazmalısın. yani "csc ilk.cs"
 

miraculous

Üyecik


hocam bu ismi



bu da dos yazısı
dediklerinizi yaptım ama maalesef sorun devam ediyor
bayramda da rahatsız ettim hocam kusura bakmayın
ii günler diliyorum
 
Merhaba, verilen mesaja göre derleme yaptığın klasörde adı "ilk.cs" olan dosya yok. Dikkat et Not Defteri dosyalara "txt" uzuntısını verir. DIR komutu veya başka bir teknikle dosya var mı yok mu bir bak..
 

miraculous

Üyecik


resimde cs dosyası olarak görünüyor imajını alamadım ama imleç dosyanın üzerindeyken de tür: cs dosyası olarak görünüyor. avafind diye bir program var onda bilgisayarı arattığım zaman da cs dosyası olarak çıkıyor. :(


bu da DIR komutu ile ekrana gelenler maalesef yorumlamasını bilmiyorum :(
 
Görüldüğü gibi klasöründe adı "ilk.cs" olan bir dosya yok. Bu durumda elbette derleme işlemi gerçekleşmez. CSC derleme yapan programın yani CSC.EXE adlı programın adıdır. Bunu neden dosya adı olarak kullandın? Bence sen bu cs uzantılı dosyayı sil ve Not Deferi ile yeninden hazırla ve kayit yaparken Farklı Kaydet diyalog kutusunda dosya adını şu şekilde tırnak içine al : "ilk.cs". Yok bu dosya adı uğursuz geldi diyorsan "snd.cs" gibi bir ad ver.
 

MehmetMiri

Üyecik
miraculous Sanırım sen ilk.cs dosyan c:\aa nın içinde
Ama sen csc ilk.cs yazdığın yer ise C:\Documents and Settings\arusel
o yüzden ilk.cs yi bulamıyo sanırım...

Kök dizine dönüp oradaki aa klasörün içine girip bir dene
Sorun çözülür sanırım...
 

miraculous

Üyecik
tşk ler de kök dizine dostan nasıl döneceğiz
bi de dosyayı sizin de uyarınızla document and settings\arusel e taşıdım ama sonuç aynı maalesef
 

miraculous

Üyecik
Memik Yanık dedi ki:
Görüldüğü gibi klasöründe adı "ilk.cs" olan bir dosya yok. Bu durumda elbette derleme işlemi gerçekleşmez. CSC derleme yapan programın yani CSC.EXE adlı programın adıdır. Bunu neden dosya adı olarak kullandın? Bence sen bu cs uzantılı dosyayı sil ve Not Deferi ile yeninden hazırla ve kayit yaparken Farklı Kaydet diyalog kutusunda dosya adını şu şekilde tırnak içine al : "ilk.cs". Yok bu dosya adı uğursuz geldi diyorsan "snd.cs" gibi bir ad ver.



yeniden yazdım farklı kaydet den "snd.cs" olarak ta kaydettim nuh diyo peygamber demiyo gene görmüyo ya
 
Üst