Jump to content


Photo

Jakie jest zastosowanie preinkrementacji w pętli for?


  • Please log in to reply
6 replies to this topic

#1 shadow

shadow
  • Użytkownicy
  • 95 posts

Posted 09 February 2014 - 13:06

jw. :D
Do czego się używa preinkrementacji w pętli for?
Może jakiś prosty przykład...
  • 0


#2 ~janusz

~janusz
  • Użytkownicy
  • 238 posts

Posted 10 February 2014 - 08:46

W pętli for chyba raczej żadne (ale zawsze można coś wymyślić, przecież pętla for ma w sobie 3 wyrażenia, które można dowolnie sobie zmieniać), aczkolwiek podam inny przykład.

int i=1;

if (i++ == 2)
return true;
else return false;
Zwróci false (wpierw i jest porównywane, potem następuje inkrementacja.

Z kolei

int i=1;

if (++i == 2)
return true;
else return false;

Zwróci true. Sprawdź czy można to wstawić w for np tak: (i=0; ++i <= 100; ) => powinno dać to samo co for (i=0; i < 100; i++)

Hope it helps.
  • 0

#3 shadow

shadow
  • Użytkownicy
  • 95 posts

Posted 12 February 2014 - 20:47

Ok, to już wiem. Chodziło mi o trochę inny przypadek...

Np. czym się różni to:

for(int i = 0; i<5; i++)
{
   //jakis kod
}

od tego:

for(int i = 0; i<5; ++i)
{
   //jakis kod
}

Kiedy następuje inkrementacja w pierwszym i w drugim przypadku?
  • 0

#4 mw_1975

mw_1975
  • Użytkownicy
  • 2535 posts

Posted 13 February 2014 - 09:14

Tak, jak napisał janusz - w pętli chyba nie ma to znaczenia. Weź do tego kodu powyżej wpisz wypisywanie wartości zmiennej i na ekranie - w obu wypadkach wyjdą ci liczby 0,1,2,3,4.
To, że w pętli nie ma to znaczenia, dowodzi tylko, iż preinkrementację wymyślono do innych celów..
  • 0
AMD Phenom II 955
Pentagram Karakorum HP-120 AlCu + Arctic Cooling AF1225L
4 GB DDR3 1600 MHz
Było Asus Radeon HD 6950 DCU II, jest XFX 7850 z AC Mono - czego się nie robi dla tej ciszy!
SilentiumPC Deus G1 600W

#5 ~janusz

~janusz
  • Użytkownicy
  • 238 posts

Posted 13 February 2014 - 09:43

W tym przypadku nic to nie zmienia - preinkrementacja ma zastosowanie w wyrażeniach tzw inline. Wyrażenie inline ++i a i++ różni się tym, że w tym pierwszym wpierw inkrementujesz tę zmienną, a gdy później jeszcze coś z nią robisz w tym samym wyrażeniu to wykorzystywana jest właśnie ta zinkrementowana wartość. W przypadku i++ wpierw tworzona jest lokalna kopia zmiennej i, która wykorzystywana jest w wyrażeniu inline, a następnie po wykonaniu wyrażenia zmienna jest przekazywana dalej wartośc zinkrementowana.

http://pl.wikibooks..../Funkcje_inline
  • 0

#6 shadow

shadow
  • Użytkownicy
  • 95 posts

Posted 13 February 2014 - 11:51

Ok, dzięki wszystkim. Już wszysto jasne. Korzystając z okazji zadam jeszcze jedno pytanie.

Jak się nauczyć dobrze programować? Chodzi mi o porgramowanie w języku C++. Na początek np. jakieś proste gry 2d z jakąś biblioteką Allegro czy SFML. Czytanie kursów, książek ("Symfonia.."), co jeszcze? Możecie mi coś polecić? Może na własnym przykładzie? :P
  • 0

#7 ~janusz

~janusz
  • Użytkownicy
  • 238 posts

Posted 13 February 2014 - 15:59

Motywacja do tworzenia oprogramowania + praktyka. Albo zadania sobie sam wymyślasz albo Ci ktoś zleca. Korzystasz potem tylko ze wzorców/frameworków/bibliotek, jak takowych nie znasz to zmuszasz się do nauki (np jak nie umiesz korzystać z klas i programowania obiektowego, to pisząc grę już najwyższa pora). Reszta przychodzi z czasem. Dobrym rozwiązaniem może być wkręcenie się na jakieś praktyki w firmie, która wykorzsystuje technologie jakie znasz (możesz znać je średnio, jak będziesz miał jakiś pomniejszy nadzór to tam Cię już nauczą z tego dobrze korzystać, produkować dobry i czytelny kod, programować bezpiecznie w sensie safe & secure itp..).
U mnie:
-mało ksiązek
-wcześnie zacząłem cośtam kodzić
-studia (dobre, dzienne)
-teraz to już praca zawodowa i takie tam...
  • 0


0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users