Alıştırma - Do ve while döngüleri oluşturma
- 10 dakika
Yüzeyde, do-while ve while deyimleri, bir kod bloğu boyunca yineleme yapmanızı ve böylece kodunuzun yürütme akışını değiştirmenizi sağlayan yine bir yineleme deyimidir. Ancak her birinin nasıl çalıştığını incelediğimizde, her yineleme deyiminin nüanslarını ve bunların ne zaman kullanılacağını daha iyi belirleyebiliriz.
do-while deyimi nedir?
Belirtilen bir Boole ifadesi doğru olarak değerlendirildiğinde, deyim do-while bir deyim veya bir deyim bloğunu yürütür. Bu ifade döngünün her yürütülmesinden sonra değerlendirildiğinden, bir do-while döngüsü bir veya daha fazla kez yürütülür.
do
{
// This code executes at least one time
} while (true);
Yürütme akışı kümeli ayraç içinde başlar. Kod en az bir kez yürütülür, ardından anahtar sözcüğün while yanındaki Boole ifadesi değerlendirilir. Boole ifadesi döndürürse truekod bloğu yeniden yürütülür.
Mantıksal ifadeyi true'ye sabit olarak kodlayarak, en azından şu anki haliyle yazıldığı sürece hiç bitmeyecek bir sonsuz döngü oluşturduk. Kod bloğunun içindeki döngüden çıkmanın bir yolunu bulmalıyız. Birazdan do-while için çıkış ölçütlerini ele alacağız.
Tamam, şimdi kodlama ortamımızı hazırlayalım ve bir do-while deyimini uygulayan kod örneklerini incelemeye başlayalım.
Kodlama ortamınızı hazırlama
Bu modül, tanıtım kodu oluşturma ve çalıştırma sürecinde size yol gösteren uygulamalı etkinlikleri içerir. Geliştirme ortamınız olarak Visual Studio Code kullanarak bu etkinlikleri tamamlamanızı öneririz. Bu etkinlikler için Visual Studio Code'un kullanılması, dünya çapındaki profesyoneller tarafından kullanılan bir geliştirici ortamında daha rahat kod yazmanıza ve çalıştırmanıza yardımcı olur.
Visual Studio Code'yu açın.
Visual Studio Code'u açmak için Windows Başlat menüsü (veya başka bir işletim sistemi için eşdeğer kaynak) kullanabilirsiniz.
Visual Studio Code Dosyası menüsünde Klasör Aç'ı seçin.
Klasör Aç iletişim kutusunda Windows Masaüstü klasörüne gidin.
Kod projelerini tuttuğunuz farklı bir klasör konumunuz varsa, bunun yerine bu klasör konumunu kullanabilirsiniz. Bu eğitim için önemli olan, kolayca bulunabilecek ve anımsanabilecek bir konuma sahip olmaktır.
Açık Klasör iletişim kutusunda Klasör Seç seçeneğini seçin.
Yazarlara güvenip güvenmeyişinizi soran bir güvenlik iletişim kutusu görürseniz Evet'i seçin.
Visual Studio Code Terminal menüsünde Yeni Terminal'i seçin.
Terminal panelindeki bir komut isteminin geçerli klasörün klasör yolunu görüntülediğine dikkat edin. Örneğin:
C:\Users\someuser\Desktop>Uyarı
Korumalı alan veya barındırılan bir ortam yerine kendi bilgisayarınızda çalışıyorsanız ve bu C# serisindeki diğer Microsoft Learn modüllerini tamamladıysanız, kod örnekleri için zaten bir proje klasörü oluşturmuş olabilirsiniz. Bu durumda, TestProject klasöründe bir konsol uygulaması oluşturmak için kullanılan sonraki adımı atlayabilirsiniz.
Terminal komut isteminde, belirtilen klasörde yeni bir konsol uygulaması oluşturmak için aşağıdaki istemi girin:
dotnet new console -o ./CsharpProjects/TestProjectBu .NET CLI komutu, belirtilen klasör konumunda yeni bir C# konsol uygulaması projesi oluşturmak için bir .NET program şablonu kullanır. Komut sizin için CsharpProjects ve TestProject klasörlerini oluşturur ve dosyanızın
.csprojadı olarak TestProject kullanır.Dosyaların zaten var olduğunu belirten bir ileti görüntülenirse, sonraki adımlarla devam edin. Mevcut proje dosyalarını yeniden kullanacaksınız.
EXPLORER görünümünde CsharpProjects klasörünü genişletin.
TestProject klasörünü ve iki dosyayı, Program.cs adlı bir C# program dosyasını ve TestProject.csproj adlı bir C# proje dosyasını görmeniz gerekir.
Visual Studio Code Dosyası menüsünde Klasör Aç'ı seçin.
Klasör Aç iletişim kutusunda CsharpProjects klasörünü ve ardından Klasör Seç'i seçin.
EXPLORER görünümünde TestProject klasörünü genişletin ve Program.cs'ı seçin.
Mevcut kod satırlarını silin.
Bu modül sırasında kod örnekleri oluşturmak, derlemek ve çalıştırmak için bu C# konsol projesini kullanacaksınız.
Terminal panelini kapatın.
Do-while döngüsünü, belirli bir rastgele sayı oluşturulduğunda duracak şekilde yazın.
7 sayısını oluşturana kadar 1 ile 10 arasında rastgele sayılar oluşturmaya devam edecek kod yazalım. Bir 7 elde etmek için sadece bir yineleme yeterli olabilir veya onlarca yineleme gerektirebilir.
Visual Studio Code'un açık olduğundan ve Düzenleyici panelinde Program.cs görüntülendiğinden emin olun.
Uyarı
Program.cs boş olmalıdır. Eğer değilse, tüm kod satırlarını seçip silin.
Visual Studio Code Düzenleyicisi'ne aşağıdaki kodu yazın.
Random random = new Random(); int current = 0; do { current = random.Next(1, 11); Console.WriteLine(current); } while (current != 7);Visual Studio Code Dosyası menüsünde Kaydet'i seçin.
kodu oluşturmadan veya çalıştırmadan önce Program.cs dosyasının kaydedilmesi gerekir.
EXPLORER panelinde, TestProject klasör konumunuzdaki bir Terminali açmak için TestProjesi'ne sağ tıklayın ve Tümleşik Terminalde Aç'ı seçin.
Bir Terminal paneli açılır. Terminal, Terminal'in TestProject klasör konumunuza açık olduğunu gösteren bir komut istemi içermelidir.
Terminal komut isteminde kodunuzu çalıştırmak için dotnet run yazın ve Enter tuşuna basın.
Uyarı
"Çalıştırılacak proje bulunamadı" iletisini görürseniz Terminal komut isteminin beklenen TestProject klasörü konumunu gösterdiğinden emin olun. Örneğin:
C:\Users\someuser\Desktop\csharpprojects\TestProject>Çıktınızı gözden geçirin.
Oluşturulan sayılar rastgele olduğundan sonuçlarınız farklı olacaktır. Ancak, 7 oluşturulduğunda Boole ifadesi
7olarak değerlendirileceğinden ve yürütme akışı kod bloğundan çıkacağından,falsedeğeri yazdırılacak son sayı olacaktır.2 5 8 2 7Kodunuzu gözden geçirmek için bir dakikanızı alır.
Bu ilk görevin temel öğrenmelerinden biri, döngünün kod bloğunun en az bir
do-whilekez yürütülmesidir. Çok sayıda yineleme yapabilir ve kaç yineleme olacağını önceden bilmemiz pek olası değildir.Kod bloğunun içindeki kodun, kod bloğunda yinelemeye devam edip etmeyeceğini etkileyeceğini göz önünde bulundurmak da önemlidir. Çıkış ölçütlerini etkileyen bir kod bloğu, diğer yineleme deyimlerinden biri yerine veya
do-whilewhiledeyimlerini seçmenin birincil nedenidir.foreachHem hem deforkod bloğu yinelemelerinin sayısını belirlemek için kod bloğunun dışında olan faktörlere güvenir.
Yalnızca rastgele bir sayı bir değerden büyük olduğunda yineleyen bir while deyimi yazma
Şimdi while ifadesine bir göz atalım.
Kodunuzu aşağıdaki gibi güncelleştirmek için Visual Studio Code Düzenleyicisi'ni kullanın:
Random random = new Random(); int current = random.Next(1, 11); /* do { current = random.Next(1, 11); Console.WriteLine(current); } while (current != 7); */ while (current >= 3) { Console.WriteLine(current); current = random.Next(1, 11); } Console.WriteLine($"Last number: {current}");Uyarı
Bu durumda anahtar sözcüğü ve
whileBoole ifadesini kod bloğundan önce konumlandıracağız. Bu, kodun anlamını değiştirir ve yalnızca Boole ifadesi true olarak değerlendirilirse yürütme akışının girmesine izin vermek için "geçit" işlevi görür.Kod dosyanızı kaydedin ve ardından Visual Studio Code'u kullanarak kodunuzu çalıştırın.
Kodunuzu çalıştırmak için Terminal komut isteminden girin
dotnet run.Listelenen çıkış değerlerini gözden geçirin.
Sayılar rastgele olduğundan kodunuz farklı bir sıra oluşturur.
9 7 5 Last number: 1Kodunuzu gözden geçirmek için bir dakikanızı alır.
En üst koddaki
random,intadındaki değişkenimizicurrentile başlatmak için kullanılır. Sonraki etkin kod satırımız deyimimizdirwhile.Deyimimiz
whileBoole ifadesini(current >= 3)temel alarak yinelenecektir. öğesine hangi değerin atanacağınıcurrentbilmiyoruz, ancak döngümüzüwhileetkileyen olasılıklar vardır:- Eğer
currentdeğeri3değerine eşit veya daha büyük bir değerde başlatılırsa, Boole ifadesitruedöndürür ve yürütme akışı kod bloğuna girer. Kod bloğu içinde ilk yaptığımız şeycurrentdeğerini konsola yazmak. Ardından, kod bloğunun içinde kalan değerinicurrentyeni bir rastgele değerle güncelleştireceğiz. Bu noktada, denetim Boole ifadesinin değerlendirildiğiwhiledeyiminin başına geri döner. Boolean ifadesifalsedöndüğünde ve yürütme akışı kod bloğundan kesildiğinde bu işlem devam eder. - (kodumuzun en üstünde) değerinden küçük
currentbir değere başlatılırsa3Boole ifadesi döndürürfalseve kod bloğu hiçbir zaman yürütülmeyecektir.
Son kod satırı
currentdeğerini konsola yazar. Bu kod, yineleme kod bloğu çalıştırılsın ya da çalıştırılmasın yürütülür vecurrent'nin son değerini konsola yazma şansımızdır.- Eğer
Doğrudan Boole ifadesine gitmek için continue deyimini kullanın
Bazı durumlarda kod bloğundaki kodun kalan kısmını kısa devre yapmak ve sonraki yinelemeye devam etmek istiyoruz. Bunu deyimini continue kullanarak yapabiliriz.
Kodunuzu aşağıdaki gibi güncelleştirmek için Visual Studio Code Düzenleyicisi'ni kullanın:
Random random = new Random(); int current = random.Next(1, 11); do { current = random.Next(1, 11); if (current >= 8) continue; Console.WriteLine(current); } while (current != 7); /* while (current >= 3) { Console.WriteLine(current); current = random.Next(1, 11); } Console.WriteLine($"Last number: {current}"); */Kodunuzu gözden geçirmek için bir dakikanızı alır.
Tekrar
do-whileöğesine geri döndüğümüze dikkat edin. Ado-while, döngünün en az bir kez yinelemesini sağlar.Kod bloğunun içinde yaptığımız ilk şey, öğesine yeni bir rastgele değer
currentatamaktır. Ardından,current'nin8'den büyük veya eşit olup olmadığını kontrol edeceğiz. Bu ifadetruedönerse,continueanahtar sözcüğü denetimi kod bloğunun sonuna aktarır vewhile,(current != 7)değerini değerlendirir. Bu nedenle,currentdeğeri7değerine eşit olmadığı sürece döngü yinelenmeye devam eder.Alıştırmanın bu adımının anahtarı, anahtar sözcüğü içeren
continuekod satırıdır:if (current >= 8) continue;currentdeğerini konsola yazan kodumuzif (current >= 8) continue;değerinden sonra konumlandığından, kodumuzcurrentdeğerine büyük veya eşit olan8değerinin çıkış penceresine hiçbir zaman yazılmamasını sağlar.Hadi deneyelim.
Kod dosyanızı kaydedin ve ardından Visual Studio Code'u kullanarak kodunuzu çalıştırın.
Kodunuzu çalıştırmak için Terminal komut isteminden girin
dotnet run.Listelenen çıkış değerlerini gözden geçirin.
5 1 6 7Büyük olasılıkla aşağıda gösterilenden farklı sonuçlar görürsünüz. Ancak, kodun yürütmesi değer
8ile bitene kadar çıkış penceresinde herhangi bir7veya daha büyük bir değer görmezsiniz.continuevebreakdeyimleri arasındaki farkı düşünün.Bu son adımda gördüğünüz gibi,
continueifadesi mevcut yinelemenin sonuna yürütmeyi aktarır. Bu davranış,breakifadesiyle gördüğümüz davranıştan farklıdır. deyimibreakyinelemeyi (veyaswitch) sonlandırır ve denetimi sonlandırılan deyiminden sonra gelen deyime aktarır. Sonlandırılan deyimden sonra başka bir deyim yoksa, kontrol dosya veya yöntemin sonuna aktarılır.
Özet
Bu üniteden çıkarmanız gereken birkaç önemli fikir vardır:
- deyimi
do-whilebir kod bloğunda en az bir kez yinelenir ve Boole ifadesini temel alarak yinelemeye devam edebilir. Boole ifadesinin değerlendirilmesi genellikle kod bloğunun içinde oluşturulan veya alınan bir değere bağlıdır. -
whiledeyimi önce bir Boole ifadesini değerlendirir ve bu Boole ifadesitrueolarak değerlendirildiği sürece kod bloğunda yinelemeye devam eder. -
continueBoole ifadesine hemen adım atacak anahtar sözcük.