Kezdőoldal » Számítástechnika » Programozás » Mi a különbség a for és a...

Mi a különbség a for és a foreach között?

Figyelt kérdés
Nemrég kezdtem programozást tanulni, de csak példákon kersztül láttam, és nem egyértelmű. Sokat segítene ha valaki 1-2 mondatban emberi nyelven leírná. Előre is köszönöm!
2020. dec. 29. 19:44
1 2 3
 1/30 anonim ***** válasza:
4%
A FOR ciklus hosszúság-gyorsítótárazás nélkül és a FOREACH valamivel gyorsabban működik a tömbökön, mint a FOR-ok hosszúság-gyorsítótárazással.
2020. dec. 29. 19:50
Hasznos számodra ez a válasz?
 2/30 anonim ***** válasza:
6%

Egy kicsit pongyolán fogalmazva a FOR általában számokkal végrehajtott ciklus, míg a FOREACH objektumokon.


1.: C#

[link]


2.: PHP

[link]

2020. dec. 29. 20:16
Hasznos számodra ez a válasz?
 3/30 anonim ***** válasza:
60%

Akkor a példák alapján láthatod, hogy a FOR ciklust akkor használják, ha a ciklus ismétlésénél kulcsfontosságú szerepet játszik egy számláló (valamettől valameddig el kell számolni és ez alapján csinálni valamit), míg a FOREACH ciklust általában valamilyen felsorolható adatszerkezet (string, tömb, lista, stb.) elemeinek bejárására használják.


Bővebben:


Programozási nyelvtől függően a FOR ciklus lehet:

1) Előre meghatározott lépésszámú ciklus,

2) vagy lehet feltételes, elöltesztelő, kezdőfeltételes ciklus.


Az első esetre egy példa a Pascal nyelv:

for [identifier] := [integer_expression] to [integer_expression] do ...

Példa: for i := 1 to 5 do ...

for [identifier] := [integer_expression] downto [integer_expression] do ...

Példa: for i := 5 to 1 do ...

Ezekben a nyelvekben azért előre meghatározott lépésszámú, mert azt adod meg, hogy mettől meddig akarsz elszámlálni.


A második esetre a C-szerű nyelvek a példa:

for (int i = 1; i <= 5; i++)

Ezekben a nyelvekben ez a ciklus azért feltételes, mert egy kérdést teszel fel a számítógépnek, amire igennel vagy nemmel válaszolhat. Ebben a példában: "Az i kisebb vagy egyenlő öttel?"

Elöltesztelő, mert a számítógép a feltételt előbb ellenőrzi, minthogy a ciklusmagot végrehajtaná.

Kezdőfeltételes, mert addig hajtja végre a ciklusmagot a számítógép, amíg a kérdésre igennel válaszol. Amint egyszer hamis választ ad a kérdésre, a ciklus ismétlését abbahagyja.


A FOREACH ciklus - amely nyelv támogatja - pedig arra jó, hogy egy általad megadott felsorolható adatszerkezetből mindig kiválasztja a soron következő elemet, amelyet egy általad megadott változón keresztül érhetsz el a ciklusmagon belül:

int[] tomb = { 1, 2, 3 };

foreach (int kivalasztott_elem in tomb) Console.WriteLine(kivalasztott_elem);


Három megjegyzés a FOREACH ciklusról:

1) igazából ez csak egy szintaktikai könnyítés a programozónak

2) amit FOREACH ciklussal meg tudsz csinálni, azt meg tudod FOR vagy WHILE ciklussal is

3) az esetek nagy részében az iterator design pattern-t használja ki

2020. dec. 29. 20:19
Hasznos számodra ez a válasz?
 4/30 anonim ***** válasza:
38%

Bocsi, elbénáztam. Javítom:


Példa: for i := 5 to 1 do ...

helyett

Példa: for i := 5 downto 1 do ...

2020. dec. 29. 20:20
Hasznos számodra ez a válasz?
 5/30 anonim ***** válasza:
2%

"Ezekben a nyelvekben ez a ciklus azért feltételes, mert egy kérdést teszel fel a számítógépnek, amire igennel vagy nemmel válaszolhat. Ebben a példában: "Az i kisebb vagy egyenlő öttel?""


Hát, ez mondjuk egy jó nagy hülyeség.

A számlálós ciklus soha nem feltételes.

2020. dec. 29. 20:41
Hasznos számodra ez a válasz?
 6/30 anonim ***** válasza:
81%
Senki sem tart vissza, hogy megadd a tökéletes választ erre a kérdésre.
2020. dec. 29. 21:27
Hasznos számodra ez a válasz?
 7/30 anonim ***** válasza:
3%

7:


1. Nem kötelező a válaszadás. Azoknak meg kifejezetten nem ajánlott, akik maguk is erősen hiányos ismeretekkel bírnak. Mi értelme annak, hogy a hülyeséget terjeszti valaki? Aki nem tud arabusul, az ne beszéljen arabusul.

2. Bár nem szokásom a wikipédiára hivatkozni, ez a szócikk véletlenül nagyon a helyén van, ráadásul magyarul - íme:


[link]

2020. dec. 29. 21:42
Hasznos számodra ez a válasz?
 8/30 anonim ***** válasza:
4%

Egy hülyeség sajnos volt ebben a szócikkben is, tételesen ez:


"Hasonló példa a Pascalban írt alábbi hátul tesztelő végtelen ciklus is, amely egy billentyű lenyomására várakozik (addig ismétli a semmit, amíg egy billentyűt meg nem nyomnak).


repeat until keypressed;"


A végtelen ciklustól ez bizony nagyon messze van. A végtelen ciklusból ugyanis nincs kilépési lehetőség - ezért is végtelen -, ebből meg van.

2020. dec. 29. 21:49
Hasznos számodra ez a válasz?
 9/30 anonim ***** válasza:
7%
A foreach az egész listát bejárja, míg a for nem (te adod meg honnan, meddig)
2020. dec. 29. 22:02
Hasznos számodra ez a válasz?
 10/30 anonim ***** válasza:
66%

A foreach adatszerkezetek bejárására alkalmas. Ebben az esetben a bejárásra nincs ráhatásod, mindig csak az aktuálisan vizsgált elemet tudod feldolgozni. Nem tudod, hogy ez hányadik, vagy hogy milyen sorrend alapján kapod meg az elemeket, ugyanis ez az adatszerkezet implementációs részlete. Akkor használod, amikor ezek nem érdekelnek.

A for egy olyan vezérlési szerkezet, melynek három része van: inicializáció, iteráció előtt lefutó feltétel, iteráció után lefutó utasítás. Ezek közül a legtöbb nyelvben bármelyik kihagyható. Elég nagy szabadságot kínál, gyakorlatilag bármilyen adat feldolgozására szabható.

2020. dec. 29. 22:55
Hasznos számodra ez a válasz?
1 2 3

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!