Pętle zagnieżdżone
Część sekcji Podstawy ścieżki Ruby w Coddy. Lekcja 46 z 88.
Możesz umieścić pętlę wewnątrz innej pętli, aby utworzyć pętlę zagnieżdżoną. Pętla wewnętrzna wykonuje się w całości przy każdej iteracji pętli zewnętrznej, dzięki czemu ten wzorzec jest przydatny podczas pracy z siatkami, tabelami lub kombinacjami.
rows = 2
cols = 3
for i in 1..rows
for j in 1..cols
puts "i=#{i}, j=#{j}"
end
endTo wypisuje sześć wierszy. Dla każdej wartości i pętla wewnętrzna przechodzi przez wszystkie wartości j.
Najpierw i ma wartość 1, a j przyjmuje kolejno wartości 1, 2, 3. Następnie i zmienia się na 2, a j ponownie przyjmuje kolejno wartości 1, 2, 3. rows i cols nigdy się nie zmieniają: tylko mówią pętlom, kiedy mają się zatrzymać.
Praktycznym przykładem jest utworzenie prostego wzoru mnożenia:
for row in 1..3
for col in 1..3
print "#{row * col} "
end
puts ""
endTo wypisuje siatkę produktów 3x3. print pozostawia wartości w tym samym wierszu, a puts "" przechodzi do nowego wiersza po zakończeniu każdego wiersza. Możesz też łączyć różne rodzaje pętli, na przykład umieścić pętlę times wewnątrz pętli for.
Wyzwanie
ŁatwyWczytaj z wejścia dwie liczby całkowite:
rows— liczba wierszycols— liczba kolumn
Użyj zagnieżdżonych pętli, aby wypisać prostokąt złożony z gwiazdek (*) o podanych wymiarach. Każdy wiersz powinien zawierać cols gwiazdek oddzielonych spacjami, a każdy wiersz powinien znajdować się w osobnej linii.
Użyj print do wypisywania gwiazdek w wierszu, a puts, aby przejść do następnej linii po każdym wierszu.
Na przykład, jeśli dane wejściowe to 3 i 4, wynik powinien wyglądać tak:
* * * *
* * * *
* * * *Jeśli dane wejściowe to 2 i 5, wynik powinien wyglądać tak:
* * * * *
* * * * *Po ostatnim * w wierszu nie ma spacji.
Użyj nowego licznika dla każdej pętli (na przykład row dla wierszy i col dla gwiazdek w wierszu) i porównuj go z rows lub cols. Nie zmieniaj samych rows i cols: każdy wiersz ponownie potrzebuje cols.
Spróbuj swoich sił
# Wczytaj dane wejściowe
rows = gets.to_i
cols = gets.to_i
# TODO: Napisz swój kod poniżej
# Użyj zagnieżdżonych pętli, aby wyświetlić prostokąt z gwiazdek
# Użyj print do wyświetlania gwiazdek w wierszu, a puts do przejścia do następnego wierszaTa lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Podstawy
4Operatory — część 2
Operatory logiczne — część 1Operatory logiczne — część 2Powtórka — podstawy logikiOperatory logiczne — część 3Operatory logiczne — część 47Kalkulator podziału rachunku
Wiadomość powitalnaPobieranie danych od użytkownika2Zmienne i typy danych
Liczby i zmienneTyp danych StringTyp danych BooleanTyp danych SymbolSprawdzanie typów danychKonwencje nazewnictwaPodsumowanie — tworzenie zmiennych5Podejmowanie decyzji
Instrukcja ifIf - elsePowtórka — prosty kalkulatorZagnieżdżone if - elseInstrukcja unless8Pętle
Pętla for z zakresamiPętla whilebreaknextPowtórka – silniaPętla timesPętla untilPętle zagnieżdżonePowtórka – dynamiczne wejście3Operatory — część 1
Operatory arytmetyczneOperator moduloSkrócone operatory arytmetycznePodsumowanie — prosta matematykaOperatory porównania6Podstawowe wejście i wyjście
Wyświetlanie za pomocą putsWyświetlanie za pomocą print i pWyświetlanie zmiennychWczytywanie za pomocą getsMetoda chompKonwersja typówPodsumowanie – kalkulator wiekuPodsumowanie – prawda czy fałszPoćwicz samodzielnie: Kompilator Ruby online