Menu
Coddy logo textTech

Belirli Bir Döngüye Devam Etme

Coddy'nin GO Journey'sinin Mantık ve Akış bölümünün bir parçası — ders 3 / 68.

Belirli döngülerden çıkmak için etiketleri break ile kullanabildiğiniz gibi, Go, etiketleri continue ifadesiyle kullanmanıza da olanak tanır. Etiketli bir continue, belirtilen döngünün mevcut yinelemesini atlar ve bir sonraki yinelemesine geçer.

Bu, özellikle iç döngünün içinden sadece iç döngüye devam etmek yerine, dış döngünün mevcut yinelemesinin geri kalanını atlamak istediğinizde iç içe döngülerde yararlıdır.

outer:
for i := 0; i < 3; i++ {
    for j := 0; j < 3; j++ {
        if i == 1 && j == 0 {
            continue outer
        }
        fmt.Printf("i=%d, j=%d\n", i, j)
    }
    fmt.Println("End of outer loop iteration")
}

Bu örnekte, i == 1 && j == 0 olduğunda, continue outer ifadesi, iç döngü ve "End of outer loop iteration" mesajı da dahil olmak üzere dış döngünün mevcut yinelemesinin geri kalanını atlar. Program daha sonra doğrudan i'nin 2 olduğu dış döngünün bir sonraki yinelemesine geçer.

quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

challenge icon

Görev

Kolay

Bu meydan okumada, iç içe geçmiş döngü yürütmesini kontrol etmek için etiketli continue ifadelerini kullanma pratiği yapacaksınız. İç döngülerde bulunan koşullara bağlı olarak belirli dış döngü yinelemelerini atlaması gereken bir veri işleme sistemi oluşturuyorsunuz.

İki girdi alacaksınız:

  • İşlenecek satır sayısını temsil eden bir dize (örneğin, "4")
  • Bir atlama koşulu sayısını temsil eden bir dize (örneğin, "3")

Size aşağıdaki 2D veri dizisi sağlanmıştır:

data := [][]int{
    {1, 2, 3, 4, 5},
    {6, 7, 8, 9, 10},
    {11, 12, 13, 14, 15},
    {16, 17, 18, 19, 20},
    {21, 22, 23, 24, 25}
}

Göreviniz şunları yapmaktır:

  1. Kaç satırın işleneceğini belirlemek için ilk girdiden satır sayısını ayrıştırın
  2. İkinci girdiden atlama koşulu sayısını ayrıştırın
  3. Verileri işlemek için etiketli bir continue ile iç içe geçmiş döngüler kullanın
  4. Her satır için, o satırdaki her sütun değerini kontrol edin
  5. Bir satırın herhangi bir sütununda atlama koşulu sayısını bulursanız, o satırın işleminin geri kalanını atlamak ve bir sonraki satıra geçmek için etiketli continue kullanın
  6. Atlama koşulu sayısını içermeyen satırlar için, "Processing row [row_number]: [value1] [value2] [value3] [value4] [value5]" yazdırın
  7. Atlama koşulu sayısını içeren satırlar için, "Skipping row [row_number] due to condition" yazdırın

Satır numaraları 0 tabanlı indeksleme kullanılarak bildirilmelidir (ilk satır 0'dır). Yalnızca ilk girdide belirtilen satır sayısını işleyin ve her satırın yalnızca ilk 5 sütununu kontrol edin.

Kopya kağıdı

İç içe döngülerde belirli bir döngünün mevcut yinelemesini atlamak için etiketleri continue ile birlikte kullanın:

outer:
for i := 0; i < 3; i++ {
    for j := 0; j < 3; j++ {
        if i == 1 && j == 0 {
            continue outer
        }
        fmt.Printf("i=%d, j=%d\n", i, j)
    }
    fmt.Println("End of outer loop iteration")
}

continue outer çalıştırıldığında, dış döngünün mevcut yinelemesinin geri kalanını atlar ve doğrudan etiketli döngünün bir sonraki yinelemesine atlar.

Kendin dene

package main

import (
    "fmt"
    "strconv"
)

func main() {
    // Girdiyi oku
    var rowsInput string
    var skipConditionInput string
    fmt.Scanln(&rowsInput)
    fmt.Scanln(&skipConditionInput)
    
    // Girdileri ayrıştır
    numRows, _ := strconv.Atoi(rowsInput)
    skipCondition, _ := strconv.Atoi(skipConditionInput)
    
    // Sağlanan 2D veri dizisi
    data := [][]int{
        {1, 2, 3, 4, 5},
        {6, 7, 8, 9, 10},
        {11, 12, 13, 14, 15},
        {16, 17, 18, 19, 20},
        {21, 22, 23, 24, 25},
    }
    
    // TODO: Kodunuzu aşağıya yazın
    // Verileri işlemek için etiketli continue (labeled continue) ile iç içe döngüler kullanın
    // Her satırı atlama koşulu sayısı için kontrol edin
    // Koşulun bulunup bulunmadığına bağlı olarak uygun mesajları yazdırın
    
}
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Mantık ve Akış bölümündeki tüm dersler