7 min lexim
Moduli 1 nga 4, mësimi 4 nga 4. 0 nga 11 mësime të përfunduara.
Ciklet e ndërthurura dhe modelet
Një cikël brenda një cikli
Sapo ndihesh rehat me një cikël të vetëm, hapi tjetër është të vësh një cikël brenda një tjetri. Një cikël mund të rrijë brenda një cikli tjetër. Cikli i jashtëm numëron rreshtat; cikli i brendshëm numëron kolonat. Në secilin rresht, cikli i brendshëm ecën i tëri para se cikli i jashtëm të kalojë më tej. Kjo është pikërisht ajo që të duhet për një rrjetë, një tabelë ose një model me yje.
Gjëja kryesore për ta imagjinuar është koha. Cikli i jashtëm bën një hap, pastaj ndalon ndërsa cikli i brendshëm ecën nga fillimi në fund, pastaj cikli i jashtëm bën hapin tjetër dhe cikli i brendshëm ecën sërish i tëri. Nëse cikli i brendshëm ecën pesë herë, dhe cikli i jashtëm ecën pesë herë, blloku i brendshëm ekzekutohet njëzet e pesë herë gjithsej.
Një tabelë shumëzimi
Le të themi se do një tabelë shumëzimi për numrat 1 deri në 5. Të shkruaje një cikël për secilin rresht do të kërkonte pesë cikle të vendosura njëri mbi tjetrin, ndërsa një tabelë deri në 20 do të kërkonte njëzet. Ndërthurja e përmbledh gjithë atë punë:
for rreshti in range(1, 6):
for kolona in range(1, 6):
print(rreshti * kolona, end="\t")
print()
Cikli i jashtëm zgjedh një rreshti. Për atë rresht, cikli i brendshëm ecën nëpër secilën kolona, duke shkruar rreshti * kolona me një tabulaturë (\t) mes tyre. Rreshti print() bosh pas ciklit të brendshëm e mbyll rreshtin, që tjetri të nisë nga e para. Rezultati është një rrjetë e rregullt 5 me 5, dhe të shkosh deri në 20 me 20 do të thotë të ndryshosh dy numra, jo të shkruash pesëmbëdhjetë rreshta të tjerë.
Të vizatosh modele
E njëjta ide vizaton forma me shkronja. Këtu dy cikle të ndërthurura shkruajnë një bllok të plotë yjesh, tre rreshta të lartë dhe tre kolona të gjerë:
for rreshti in range(3):
for ylli in range(3):
print("*", end="")
print()
Cikli i brendshëm shkruan tre yje në një rresht, pa ndërruar rresht falë end="". Rreshti print() bosh pastaj e mbyll atë rresht, dhe cikli i jashtëm nis rreshtin tjetër. Ndrysho range-in e brendshëm dhe ndryshon gjerësinë; ndrysho range-in e jashtëm dhe ndryshon lartësinë. Një model në të vërtetë s'është veçse një rrjetë ku shkruan një shkronjë në vend të një numri.
Praktikë
Provoje ta kthesh bllokun në një trekëndësh. Shkruaj një cikël të ndërthurur ku cikli i jashtëm ecën 5 herë dhe cikli i brendshëm shkruan një yll më shumë në secilin rresht, kështu që rreshti 1 ka një yll dhe rreshti 5 ka pesë. Ndihmesë: bëje ciklin e jashtëm for rreshti in range(1, 6):, sepse range(1, 6) numëron nga 1 deri në 5; pastaj cikli i brendshëm mund të jetë for ylli in range(rreshti): dhe e shkruan një yll pa ndërruar rresht, pastaj një print() të thjeshtë për ta mbyllur rreshtin.
Provo veten
- Në një cikël të ndërthurur që shkruan një tabelë shumëzimi, cili cikël zgjedh rreshtin dhe cili zgjedh kolonën, dhe sa herë ecën cikli i brendshëm për secilën ecje të vetme të ciklit të jashtëm?
- Një tabelë nga 1 deri në 5 kërkon një rrjetë 5 me 5 dhe, pa ndërthurje, do të vendosje pesë cikle të veçanta njëri mbi tjetrin. Me një cikël të ndërthurur, çfarë ndryshon që tabela të rritet në 20 me 20 në vend që të shkruash më shumë cikle?
- Në shembullin e bllokut me yje, çfarë pune bën rreshti
print()bosh pas ciklit të brendshëm, dhe si do të dukej rezultati po ta hiqje atë?
Përgjigjet
- Cikli i jashtëm zgjedh rreshtin dhe cikli i brendshëm zgjedh kolonën. Për çdo hap të vetëm të ciklit të jashtëm, cikli i brendshëm ecën deri në fund, pesë herë në tabelën nga 1 deri në 5.
- Vetëm dy numrat në thirrjet
range:range(1, 21)në të dy ciklet jep një tabelë 20 me 20 me po ato katër rreshta kodi. - E mbyll rreshtin e tanishëm, që rreshti tjetër të nisë poshtë tij. Pa të, të nëntë yjet do të dilnin në një rresht të vetëm:
*********.
Nga vjen ky mësim
Ndërtuar mbi
- Programming in a Data World: dosja e Leksionit 3 (ciklet e mbivendosura) dhe Notebook-u i Leksionit
alphaPlan tregon nëse një mësim vjen nga një program i zhvilluar në klasë apo është shkruar për këtë shteg. Kur një pohim mbështetet mbi një standard të jashtëm ose mbi një rast të raportuar, ai emërtohet më sipër që ta kontrollosh vetë e të mos na besosh në fjalë.
Ky kurs u zhvillua nga alphaPlan Center mbi bazën e programeve të realizuara në partneritet me rrjetin American Corners. Kush bëri çfarë
Gjete diçka të paqartë, të vjetruar ose që mund të përmirësohet? Sugjero një përmirësim