folder Tahribat.com Forumları
linefolder C#, Asp.Net, .Net Core
linefolder İlk C# Uygulamam ( Sayı Kapmaca - Konsol Uygulaması )



İlk C# Uygulamam ( Sayı Kapmaca - Konsol Uygulaması )

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    MhmdAlmz
    MhmdAlmz's avatar
    Kayıt Tarihi: 09/Ağustos/2015
    Erkek

    Ah şu go to multi threading bir program yazarken kullanmıştım sonra flag ile tanıştım tabi. Işte algoritma bilmeyince böyle oluyor. her neyse C# dan nefret ediyorum neden bilmiyorum ama nefret ediyorum işte :D 

    Başarılar :D Bir dile başlayacak olsaydım . Python , R veya çok iyi derecede goLang öğrenirdim.

    EDİT ; goto'ları doWhile çevir hocam hem kod okunabilirliği artar hemde goto dan kurtulursun.

    MhmdAlmz tarafından 25/Mar/18 22:00 tarihinde düzenlenmiştir

    Andolsun kuşluk vaktine ve dindiği zaman o geceye ki, Rabbin sana veda etmedi ve darılmadı! Ve kesinlikle senin için sonu önünden (ahiret dünyadan) daha hayırlıdır. ileride Rabbin sana verecek de hoşnut olacaksın! O, seni bir yetim iken barındırmadı mı? Seni, yol bilmez iken (doğru) yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? Öyle ise, sakın yetime kahretme (onu horlama)! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    emrah20
    emrah20's avatar
    Kayıt Tarihi: 04/Ekim/2017
    Erkek

    Günün birinde birisi demişki, goto kullanmayın, çok kötü görünüyor ve o gündür herkes aynı şeyi söylüyor. Kullanılmayacak bir işlev o halde neden var ? Birisi bir gün bir şey söylemiş ve kimse bilmiyor neden. Yeni başlayanların kafasını karıştırabiliyor uzun işlemlerde diye düşünmüş. Ama yeni başlayanlar da öyle denetimi yitirecek kadar büyük programlar yazmıyor. Bence ezbere konuşmak yanlış olur. While döngüsü kullanırsan daha kısa kodlar ile yazabilirsin. Seneler önceleri Basic'te 1000 satır ile yazdığım kodları 100 - 150 satıra sızdırabilmiştim. Ama goto kullanmanda bir sakınca yok. Tebrikler.

    Ben şu şekilde derledim komut satırından C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc oyun.cs

    Tek dosya olarak açınca Sharp Develop derleme seçenği göstermiyor

     

     

    emrah20 tarafından 25/Mar/18 22:08 tarihinde düzenlenmiştir

    Kendisini Hacker sanan zibidilerden değilim.
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    noname
    noname's avatar
    Kayıt Tarihi: 23/Ağustos/2005
    Erkek

    Arkadaşlar ilk yazılımım olduğunun altını çizmek istiyorum :D 1 ay 2 ay sonra dönüp tekrar bakarım elbet, şimdilik önerilerinizin yarısındaki komutları bile ilk defa duyuyorum :D

    teşekkürler, yapıcı, güzel bi konu oluyor. Hepsini not alıyorum, tek tek araştıracağım :)


    ...said addicted.
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    YeniHarman
    YeniHarman's avatar
    Kayıt Tarihi: 17/Haziran/2012
    Erkek
    emrah20 bunu yazdı

    Günün birinde birisi demişki, goto kullanmayın, çok kötü görünüyor ve o gündür herkes aynı şeyi söylüyor. Kullanılmayacak bir işlev o halde neden var ? Birisi bir gün bir şey söylemiş ve kimse bilmiyor neden. Yeni başlayanların kafasını karıştırabiliyor uzun işlemlerde diye düşünmüş. Ama yeni başlayanlar da öyle denetimi yitirecek kadar büyük programlar yazmıyor. Bence ezbere konuşmak yanlış olur. While döngüsü kullanırsan daha kısa kodlar ile yazabilirsin. Seneler önceleri Basic'te 1000 satır ile yazdığım kodları 100 - 150 satıra sızdırabilmiştim. Ama goto kullanmanda bir sakınca yok. Tebrikler.

    Ben şu şekilde derledim komut satırından C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc oyun.cs

    Tek dosya olarak açınca Sharp Develop derleme seçenği göstermiyor

     

    Mesajımı tekrar okumanı tavsiye ediyorum. Bir yerimizden uydurmak gibi bir alışkanlığımız yok.

    Eğer program akışını şartsız zıplamalara bağlayabiliyorsan, o program akışı ile ilgili değil, tekrarlama ile ilgilidir. GOTO gerekmez.

    Eğer bir şart kontrolü sonrası GOTO ile zıplama yapıyorsan, programın yapısallığını bozarsın. Eskilerin diliyle sub çağırmak daha uygun olur.

    Çok çetrefilli döngününün içinden goto ile çıkacaksan ve aldığın kaynakları geri vereceksen GOTO'yu doğru kullanmışsındır. Örneğin:

    for(int i = 0; i < 10000; ++i){

       for(int j = 0; j < 10000; ++j) {

          for(int k = 0; k < 10000; ++k) {

              //bir sürü işlem

              if(bulundu) goto Son;

             //bir sürü işlem daha

      Son:

    return true;

    FSM yazarken kullandıysan, doğru kullanmışsındır.

    Kodu gerçekten çok kısalttı fakat anlaşılmasını zorlaştırmadı ise doğru kullanmışsındır.

    Bu gibi kullanımlar yoğun matematiksel işlem ya da kontrol yapan programlarda mevcut. Örneğin libav. Her tarafında böyle şeyler görürsün çünkü libav, C ile yazılmış bir kütüphanedir ve C dili bildiğiniz gibi istisna mekanizmasına sahip değildir. Hata durumunda temizlik işlemleri bu şekilde sağlanır. Şu örneğe bakabilirsiniz https://www.ffmpeg.org/doxygen/2.4/transcode__aac_8c_source.html

    Eski VB (6 ve öncesi) sürümlerde ve VBS'de de aynı şekilde gotolar hata kontrolü ve ele alınması için kullanılmaktadır.

    Hayır, senin elinde C# gibi OOP bir dil var. Bu saatten sonra neden GWBASIC gibi if x = 1 then goto 20 yazıyorsun? Mantığı nedir?


    Olaylara karışmayın!
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    noname
    noname's avatar
    Kayıt Tarihi: 23/Ağustos/2005
    Erkek

    Peki sevgili üstadlarım, goto kullanmadan kodlarıma ilgili işlevi nasıl sağlayabilirdim?

    Misal ilk goto "gir:"

    konsolda bir sayı girmemiz isteniyor. 49 dan küçük veya eşit ise hata verecek.

    Bu hatanın sonuna(if) tekrar bir sayı isteyebilirim ( readline )

    ama tekrar 49dan aşağı girerseler bu sefer kontrol edemeyecek. haliyle (if) in üstüne attım goto ile, böylece 49<= girildiği sürece hatayı verip yukarı atıcak. 50 veya üstü girilirse de devam edecek. keza aşağıdaki goto'lar da benzer şekilde, girilen sayıyla işlem yaptıktan sonra yeni değerin girilmesini istiyor. işlemin kaç adım süreceği beli olmadığı için for veya while gibi bir şey kullanamadım. belki de ben beceremedim.

    nasıl yaparız?


    ...said addicted.
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    YeniHarman
    YeniHarman's avatar
    Kayıt Tarihi: 17/Haziran/2012
    Erkek
    noname bunu yazdı

    Peki sevgili üstadlarım, goto kullanmadan kodlarıma ilgili işlevi nasıl sağlayabilirdim?

    Misal ilk goto "gir:"

    konsolda bir sayı girmemiz isteniyor. 49 dan küçük veya eşit ise hata verecek.

    Bu hatanın sonuna(if) tekrar bir sayı isteyebilirim ( readline )

    ama tekrar 49dan aşağı girerseler bu sefer kontrol edemeyecek. haliyle (if) in üstüne attım goto ile, böylece 49<= girildiği sürece hatayı verip yukarı atıcak. 50 veya üstü girilirse de devam edecek. keza aşağıdaki goto'lar da benzer şekilde, girilen sayıyla işlem yaptıktan sonra yeni değerin girilmesini istiyor. işlemin kaç adım süreceği beli olmadığı için for veya while gibi bir şey kullanamadım. belki de ben beceremedim.

    nasıl yaparız?

    private static int SayıAl3(int AltSınır, int ÜstSınır, char ÇıkışKarakteri)
            {
                
                while (true)
                {
                    var giris = Console.ReadLine();
                    if (giris.IndexOf(ÇıkışKarakteri) >= 0)
                    {
                        return int.MaxValue;
                    }
                    var basarili = Int32.TryParse(giris, out int sayi);
                    if ((sayi >= AltSınır && sayi <= ÜstSınır && basarili))
                    {
                        return sayi;
                    }
                    Console.WriteLine("{0}-{1} arasında bir sayı girmelisiniz. Çıkış için \"{2}\".", AltSınır, ÜstSınır, ÇıkışKarakteri);
                }
            }

    Mesela üstteki bir yoldur (her ne kadar kullanıcı deneyimini arttırmış olsa da programcılık açısından yanlış denebilir).


    Olaylara karışmayın!
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    whopper
    whopper's avatar
    Kayıt Tarihi: 26/Haziran/2008
    Erkek

    Object oriented programlama yaparken cohesion ve coupling konularına da dikkat etmen lazım. Kod büyüdükçe işler goto kullanmanın ötesine geçecek. Kodunun şu an için acemice yazıldığının ve bir süre de böyle olacağını düşünerek yazdığın her syntaxın daha iyi bir yöntemi olup olmadığını araştır.

  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    crafty
    crafty's avatar
    Kayıt Tarihi: 19/Eylül/2006
    Erkek
    noname bunu yazdı

    Peki sevgili üstadlarım, goto kullanmadan kodlarıma ilgili işlevi nasıl sağlayabilirdim?

    Misal ilk goto "gir:"

    konsolda bir sayı girmemiz isteniyor. 49 dan küçük veya eşit ise hata verecek.

    Bu hatanın sonuna(if) tekrar bir sayı isteyebilirim ( readline )

    ama tekrar 49dan aşağı girerseler bu sefer kontrol edemeyecek. haliyle (if) in üstüne attım goto ile, böylece 49<= girildiği sürece hatayı verip yukarı atıcak. 50 veya üstü girilirse de devam edecek. keza aşağıdaki goto'lar da benzer şekilde, girilen sayıyla işlem yaptıktan sonra yeni değerin girilmesini istiyor. işlemin kaç adım süreceği beli olmadığı için for veya while gibi bir şey kullanamadım. belki de ben beceremedim.

    nasıl yaparız?

    while(true){

    console.writeLine("Lütfen 50'den büyük bir sayı girin");

    string giris = console.readline();

    if(giris==q){

    break;

    }

    int32 a = convert.toint32(giris);

    if(a>=50){

     // yapılması gereken işlemler

    }

    else{

    console.writeline("50'den küçük bir değer girdiniz, lütfen tekrar bir değer giriniz");

    }

    hatta int32 ye convert etme yönteminde oluşabilecek sıkıntılar için try catch bloğu da kullanılabilir. try catch bloğunun özelliği şudur, try bloğunda yazdığın bölüm derlenir eğer içerisinde hata vermesini sağlayacak bir durum oluşursa catch bloğu çalışır. kendine has hata yakalama sınıfları var ama senin açından en basit yöntem ile şu şekilde olabilir

    try{

    int32 a = convert.toint32(giris);

    if(a>=50){

     // yapılması gereken işlemler

    }

    else{

    console.writeline("50'den küçük bir değer girdiniz, lütfen tekrar bir değer giriniz");

    }

    }

    catch{

    console.writeline("lütfen sadece sayı giriniz!")

    }


    Kasnak yuvarlandı elek oldu, eski orospular melek oldu...
Toplam Hit: 3312 Toplam Mesaj: 19
csharp hello world sayı bulmaca ilk uygulama