ncelikle başarılı buldum bir çok validasyon yapılmış gibi 100 filan girince sayı düşür diyor ama 9999999999999999 girince sapıtıyor. Ona da bi kısıt koy bence. https://www.youtube.com/watch?v=WC3-71NKwPw

Elindeki goto'ları yavaşya yere bırak. Sorun istemiyoruz. Şaka bir yana, her ne yapıyorsan ve içinde goto geçiyorsa sıkıntı vardır/oluşturabilir. C değil C# kullanıyorsun. Ben koda bakmamıştım sadece test ettim harbi goto var kodda. Noname acilen goto yu unutman lazım. https://www.youtube.com/watch?v=WC3-71NKwPw

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 tekrar bir sayı isteyebilirim ama tekrar 49dan aşağı girerseler bu sefer kontrol edemeyecek. haliyle in üstüne attım goto ile, bylece 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 { console. writeLine("Lütfen 50'den büyük bir sayı girin"); string giris = console. readline ; if int32 a = convert. toint32 ; if(a>=50) else hatta int32 ye convert etme ynteminde 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 blü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 yntem ile şu şekilde olabilir try{ int32 a = convert. toint32 ; if(a>=50) else } catch Kasnak yuvarlandı elek oldu, eski orospular melek oldu...

Günün birinde birisi demişki, goto kullanmayın, çok ktü grünüyor ve o gündür herkes aynı şeyi sylüyor. Kullanılmayacak bir işlev o halde neden var? Birisi bir gün bir şey sylemiş 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 dngü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 gstermiyor 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 dngü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 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 byle şeyler grü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!

Selamlar :) Sıfırdan başladım desem yeridir. Geçenki konu üzerinde @Reskam arkadaşımızın teamviewer/telefon ile verdiği dev desteği haricinde pek bişey bilmiyordum. Farklı bir blüme dev vermiş hoca, gzüme çarptı, hoşuma gitti bi deneyeyim dedim. 3-5 Saat uğraştım bişeyler yaptım karman çorman oldu bir iki sıkıntıyı çzemedim. Sıfırdan proje açtım. Kağıt kalemi aldım, algoritmayı çıkardım :D Sonra biraz google biraz if else biraz for while bişeyler karaladım. Oyun şyle, Tabi oynamak için kodları alıp debug a geçmeniz lazım. Compile kısmına hiç girmedim bilemiyorum nasıl olur :) - Bi sayı giriyorsunuz Girdiğiniz sayıdan rastgele 1 veya 2 düşüyor pc. Sıra size geçiyor. Siz düşüyorsunuz. Falan filan en son sıfıra ilk inen kazanıyor. Sayı X'e inene kadar rastgele düşürüyor pc. O Xten sonra algoritma değişiyor, bu sefer kazanmak için oynamaya başlıyor. Tam o algoritma değiştiği noktada bir iki sıkıntı var, tam çıkamadım işin içinden, fazla vakit de yok daha fazla uğraşamayacağım. Çzen düzelten olursa paylaşırsa ben de ğrenmiş olurum :) Bazen üst üste 2 kere tahmin falan yapıyor bize sormadan. Bazen de sayı 33 mesela 32ye düşüyorsun ben kazandım demeye başlıyor. O kısımda kafası iyice karışık yani :D Düzeltebilen çıkarsa internet yokken oynanır fena oyun olmadı :p Kodlar şyle, edit Yanlış kopyalamışım düzelttim ( 16:02 ) using System; namespace sayibulma { class Program { static void Main { int S = 0, Y = 0; Random rast = new Random ; Console. WriteLine Başlangıç değerini ver bakalım."); gir: S = Convert. ToInt32(Console. ReadLine ; System. Threading. Thread. Sleep(500); Console. WriteLine ; if (S <= 49) int eshik = rast. Next(13, (S - 10)); System. Threading. Thread. Sleep(500); Console. WriteLine ; azalt: while { int R = rast. Next(1, 3); S = S - R; System. Threading. Thread. Sleep(500); Console. WriteLine ; yenisayi: System. Threading. Thread. Sleep(500); Console. WriteLine ; Y = Convert. ToInt32(Console. ReadLine ; if (Y <= (S - 3)) else if S = Y; goto azalt; } while // eshik ) { sonadogru: int R = rast. Next(1, 3); S = S - R; System. Threading. Thread. Sleep(500); Console. WriteLine ; System. Threading. Thread. Sleep(500); if (S 0) ; { for (int i = 0; i < 10; i++) Environment. Exit(0); } yenisayi: System. Threading. Thread. Sleep(500); Console. WriteLine ; Y = Convert. ToInt32(Console. ReadLine ; if (Y <= (S - 3)) else if S = ; if ( S 0 ) { for (int i = 0; i < 10; i++) Environment. Exit(0); } if (S % 3 1) { S = S - 1; System. Threading. Thread. Sleep(500); Console. WriteLine ; if (S 0) ; { for (int i = 0; i < 10; i++) Environment. Exit(0); } goto yenisayi; } else if (S % 3 2) { S = S - 2; System. Threading. Thread. Sleep(500); Console. WriteLine ; if (S 0) ; { for (int i = 0; i < 10; i++) Environment. Exit(0); } goto yenisayi; } else if (S % 3 0) } System. Threading. Thread. Sleep(3000); } } } noname tarafından 25/Mar/18 16:02 tarihinde düzenlenmiştir... said addicted.

YeniHarman bunu yazdı Elindeki goto'ları yavaşya yere bırak. Sorun istemiyoruz. Şaka bir yana, her ne yapıyorsan ve içinde goto geçiyorsa sıkıntı vardır/oluşturabilir. C değil C# kullanıyorsun. Niçün? Alternatif ne nerirsin? İşlemden sonra loop var ve kaç defa tekrarlanacağı belirsiz... For veya while mı kullanalım, nasıl oturtabilirim? Bi rnek gsterebilir misin benim gotolar yerine? Bir de, komut var ki kullanıyoruz :D nasıl sıkıntı çıkarabilir Sanıyorum case atlamaları için bırakmışlardı goto'yu. İç içe loopların içinden çıkmak için mantıklı olabilir . Yalnız ve yalnız talep ettiğin sistem kaynaklarının hepsini atladığın etikette geri vereceksen. Senin kodda grdüğüm kadarıyla dinamik kaynak kullanımı yok. Ya olsaydı? https://stackoverflow.com/questions/3517726/what-is-wrong-with-using-goto http://www.drdobbs.com/jvm/programming-with-reason-why-is-goto-bad/228200966?pgno=1 Java'da goto yoktur. Çünkü yazılımcıları yapısal programlamadan nceki spagetti kod alışkanlığına ynelteceği düşünülmüştür. Sendeki goto'nun zararını anlamak için bu koda 1 ay sonra bak. Bakalım çzebilecek misin? Ben senin kodu hiç çzemedim mesela. Aynı durum 80'li yılların sonunda basic ile yazılmış bir mühendislik yazılımının kaynak kodlarını incelerken de başıma gelmişti. Olaylara karışmayın!

Elindeki goto'ları yavaşya yere bırak. Sorun istemiyoruz. Şaka bir yana, her ne yapıyorsan ve içinde goto geçiyorsa sıkıntı vardır/oluşturabilir. C değil C# kullanıyorsun. Olaylara karışmayın!

ncelikle başarılı buldum bir çok validasyon yapılmış gibi 100 filan girince sayı düşür diyor ama 9999999999999999 girince sapıtıyor. Ona da bi kısıt koy bence. Denedim şimdi. Sanırsam int32 nin alabileceği max değer 2,147,483,647 şyle de bir anekdot geçelim, http://www.bbc.com/news/world-asia-30288542 başarılı bulduğun için teşekkürler ^^ valla başlarken ne for ne while hiç birini bilmiyordum. Bir kaç defa if grmüştüm sadece :) edit, tahmin ettiğim gibi, o değeri kontrol eden bir if dngüsü eklesem dahi hata veriyor, çünkü o değeri int e yazamadığı için hata veriyor. Yazabilse, if ile kontrol edip hatayı nleyecek ama yazamadığı için kilit :D if (S >= 2147483647) nasıl yaparız? noname tarafından 25/Mar/18 16:21 tarihinde düzenlenmiştir... said addicted.

Arkadaşlar ilk yazılımım olduğunun altını çizmek istiyorum :D 1 ay 2 ay sonra dnü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.

Düzelttim be. bazı if lerin sonuna ; koyuyorsun hata da vermiyor kafasına esen yerden devam ediyor :D bir de klavyeden girilen sayıyı ncekine yazacağıma aradaki farkı aldırmışım. Neysem... ilk proje için gayet eğlenceliydi, umarım devamı da byle olur. rnek şeyleriniz var mı? Şunu dene, bunu dene falan, basit şeyler yazmaya çalışayım. Sanırım ders takip etmekten daha kolay byle ğrenmek :)) Yeni kodlar : using System; namespace sayibulma { class Program { static void Main { int S = 0, Y = 0; Random rast = new Random ; Console. WriteLine Başlangıç değerini ver bakalım."); gir: S = Convert. ToInt32(Console. ReadLine ; System. Threading. Thread. Sleep(500); Console. WriteLine ; if (S <= 49) int eshik = rast. Next(13, (S - 10)); System. Threading. Thread. Sleep(500); Console. WriteLine ; azalt: while { int R = rast. Next(1, 3); S = S - R; System. Threading. Thread. Sleep(500); Console. WriteLine ; yenisayi: System. Threading. Thread. Sleep(500); Console. WriteLine ; Y = Convert. ToInt32(Console. ReadLine ; if (Y <= (S - 3)) else if S = Y; goto azalt; } while // eshik ) { int R = rast. Next(1, 3); S = S - R; System. Threading. Thread. Sleep(500); Console. WriteLine("\n Yeni Tahminim : " + +" - " + R + " = " + S ); System. Threading. Thread. Sleep(500); if (S 0) { for (int i = 0; i < 10; i++) Environment. Exit(0); } yenisayi: System. Threading. Thread. Sleep(500); Console. WriteLine ; Y = Convert. ToInt32(Console. ReadLine ; if (Y <= (S - 3)) else if S = Y; if ( S 0 ) { for (int i = 0; i < 10; i++) Environment. Exit(0); } if (S % 3 1) { S = S - 1; System. Threading. Thread. Sleep(500); Console. WriteLine("\n Yeni Tahminim : " + (S + 1) + " - 1 = " + S); if (S 0) { for (int i = 0; i < 10; i++) Environment. Exit(0); } else goto yenisayi; } else if (S % 3 2) { S = S - 2; System. Threading. Thread. Sleep(500); Console. WriteLine("\n Yeni Tahminim : " + (S + 2) + " - 2 = " + S); if (S 0) { for (int i = 0; i < 10; i++) Environment. Exit(0); } else goto yenisayi; } else if (S % 3 0) } System. Threading. Thread. Sleep(3000); } } } ... said addicted.

Günün birinde birisi demişki, goto kullanmayın, çok ktü grünüyor ve o gündür herkes aynı şeyi sylüyor. Kullanılmayacak bir işlev o halde neden var? Birisi bir gün bir şey sylemiş 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 dngü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 gstermiyor emrah20 tarafından 25/Mar/18 22:08 tarihinde düzenlenmiştir Kendisini Hacker sanan zibidilerden değilim.

Hacı kontakt bilgilerm var mı bilmiyorum hala ama yardıma ihtiyacın olduğunda arayabilirsin programlama konusunda.

Ah şu go to multi threading bir program yazarken kullanmıştım sonra flag ile tanıştım tabi. Işte algoritma bilmeyince byle 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 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 yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? yle ise, sakın yetime kahretme ! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!

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 byle olacağını düşünerek yazdığın her syntaxın daha iyi bir yntemi olup olmadığını araştır.

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 tekrar bir sayı isteyebilirim ama tekrar 49dan aşağı girerseler bu sefer kontrol edemeyecek. haliyle in üstüne attım goto ile, bylece 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 { while { var giris = Console. ReadLine ; if (giris. IndexOf >= 0) var basarili = Int32. TryParse ; if Console. WriteLine(" - arasında bir sayı girmelisiniz. Çıkış için \" \".", AltSınır, ÜstSınır, ÇıkışKarakteri); } } Mesela üstteki bir yoldur . Olaylara karışmayın!

iç içe dngülerden çıkmanın en güzel yolu goto goto kullanmadan bayrak değişken kullanım bu değişkenin durumunu her dngüde kontrol edip dngü veya dngülerden çıkılabilir ama gereksiz yere kullanmak kodun bakımını zorlaştırır goto denmiş ora gitmiş bura gitmiş karman çorman olabilir. çok gerekliyse ki yle durumlar olabiliyor rahatlıkla kullanılabilir.

Elindeki goto'ları yavaşya yere bırak. Sorun istemiyoruz. Şaka bir yana, her ne yapıyorsan ve içinde goto geçiyorsa sıkıntı vardır/oluşturabilir. C değil C# kullanıyorsun. Niçün? Alternatif ne nerirsin? İşlemden sonra loop var ve kaç defa tekrarlanacağı belirsiz... For veya while mı kullanalım, nasıl oturtabilirim? Bi rnek gsterebilir misin benim gotolar yerine? Bir de, komut var ki kullanıyoruz :D nasıl sıkıntı çıkarabilir... said addicted.

zeybekustasi bunu yazdı ncelikle başarılı buldum bir çok validasyon yapılmış gibi 100 filan girince sayı düşür diyor ama 9999999999999999 girince sapıtıyor. Ona da bi kısıt koy bence. Denedim şimdi. Sanırsam int32 nin alabileceği max değer 2,147,483,647 şyle de bir anekdot geçelim, http://www.bbc.com/news/world-asia-30288542 başarılı bulduğun için teşekkürler ^^ valla başlarken ne for ne while hiç birini bilmiyordum. Bir kaç defa if grmüştüm sadece :) edit, tahmin ettiğim gibi, o değeri kontrol eden bir if dngüsü eklesem dahi hata veriyor, çünkü o değeri int e yazamadığı için hata veriyor. Yazabilse, if ile kontrol edip hatayı nleyecek ama yazamadığı için kilit :D if (S >= 2147483647) nasıl yaparız? girilen değer str olarak eline gelmiyor mu hocam başta çevirmeyi kapat str olarak gelen değeri max int değeriyle karşılaştır eğer büyükse değer çok büyük yazsın değilse int e çevirsin Bot ve lisans ihtiyaçlarınız için pm atınız.

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 tekrar bir sayı isteyebilirim ama tekrar 49dan aşağı girerseler bu sefer kontrol edemeyecek. haliyle in üstüne attım goto ile, bylece 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.