Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: Ohjelman alkuun C++

Sivun loppuun

Jyri [05.11.2004 11:07:16]

#

Teen tässä ohjelmaa jossa aina välillä pitäisi saada koko ohjelma suoritettua ihan alusta. Miten tämä onnistuisi C++ ssa?

Deewiant [05.11.2004 11:35:17]

#

No, goto on aina vaihtoehto, mutta sitä ei tueta. Ettet voisi laittaa uudelleensuoritettavaa osaa funktioon, ja sitten kutsua tätä funktiota aina uudelleen?

hunajavohveli [05.11.2004 11:59:58]

#

Tee silmukka ohjelman alusta loppuun. Kun ohjelma halutaan käynnistää uudestaan, annat suorituksen jatkua silmukan loppuun. Kun taas haluat lopettaa ohjelman, poistut silmukasta, jolloin suoritus jatkuu mainin loppuun. Muuttujat täytyy tietysti muistaa nollata, jos tarpeen.

rndprogy [05.11.2004 12:18:07]

#

main(); laittaa ohjelman suorittamaan itsensä alusta.

hunajavohveli [05.11.2004 12:41:14]

#

Tuohan on tavallaan funktiokutsu. Aloittaako se siis varmasti ohjelman alusta, ettei vain avaa sitä mainia jotenkin sisäkkäin jo suoritettavaan mainiin, niin kuin muitakin funktioita?

Jyri [05.11.2004 13:41:01]

#

OhO, keksinki ite :) Kiitos kuitenkin, täytyy koittaa vielä että mikä on järkevin ratkaisu.

Deewiant [05.11.2004 19:04:33]

#

hunajavohveli kirjoitti:

Tuohan on tavallaan funktiokutsu. Aloittaako se siis varmasti ohjelman alusta, ettei vain avaa sitä mainia jotenkin sisäkkäin jo suoritettavaan mainiin, niin kuin muitakin funktioita?

Ihan tavallisesti kutsuu itseään kuin mikä tahansa rekursiivinen funktio.

hunajavohveli [05.11.2004 19:54:13]

#

Deewiant kirjoitti:

hunajavohveli kirjoitti:

Tuohan on tavallaan funktiokutsu. Aloittaako se siis varmasti ohjelman alusta, ettei vain avaa sitä mainia jotenkin sisäkkäin jo suoritettavaan mainiin, niin kuin muitakin funktioita?

Ihan tavallisesti kutsuu itseään kuin mikä tahansa rekursiivinen funktio.

Eli olenko siis oikeassa, että se ei varsinaisesti aloita ohjelmaa alusta, vaan pinomuisti tulee vastaan, jos tuota tekee liian monta kertaa päällekäin?

Metabolix [05.11.2004 20:02:20]

#

Veikkaisin niin. Siksi juuri parempi tapa on tuo looppi:

int main()
{
  while (true)
  {
    /* Tähän se ohjelma...
     * continue aloittaa alusta,
     * break tai return lopettavat */
  }
  return 0;
}

sqwiik [05.11.2004 20:03:38]

#

Ainakin minun mielestäni pinomuisti saattaa rosahtaa. Ja sitten kun nee muut main():t saavat itsensä suoritettua meno jatkuu siellä mistä sitä kutsuttiin :P
Kannattaisin tuohon uudelleen alkamiseen sitä että koko ohjelma on jossain muualla kuin main:ssa (jolloin se on helppo toistaa, kuten esim. Erkki-pelin kentillä sekoilu/seikkailu.)


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta