Toon posts:

[C++] paar simpele vragen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Okee, ik ben net aan het c++ proggen, en probeer met alle macht die taal te begrijpen. Nu loop ik echter zeer regelmatig tegen vragen aan waarmee ik geen raad weet. Niemand die ik ken kan c++ dus daar kan ik het niet aan vragen, en op het web kan ik het antwoord niet zo snel vinden. Om maar eens een paar voorbeelden te geven wat voor vragen dit zijn:
In java om uit een for lus te gaan gebruik je de break of continue statement. Nu kan ik in c++ uit een for lus gaan door goto te gebruiken, maar ik ben geleerd dat goto flink evil is. Dus zijn er andere (vergelijkbare) manieren om uit zo'n lus te komen?
Als ik in een programma nu een seconde wil wachten, hoe doe ik dit? Een for lus met niks erin kost heel veel cpu power, is er ook een manier om dit te doen zonder m'n cpu te oververhitten?

Moet ik nu jullie steeds lastig vallen met dit soort vragen, of is er net als bij java een api waarin je dit kan vinden? Ik begrijp dat je een standaard libary hebt, en de api van de omgeving waarin je je bevind. In ieder geval, kan iemand me een paar tips geven waar ik dit kan vinden?

Alvast bedankt

  • Exirion
  • Registratie: Februari 2000
  • Laatst online: 04:45

Exirion

Gadgetfetisjist

Verwijderd schreef op 30 August 2003 @ 01:16:
Moet ik nu jullie steeds lastig vallen met dit soort vragen
Een C/C++ boek voor beginners will do.

"Logica brengt je van A naar B, verbeelding brengt je overal." - Albert Einstein


  • Eelis
  • Registratie: Januari 2003
  • Laatst online: 21-02-2015
.

[ Voor 101% gewijzigd door Eelis op 18-02-2015 19:58 ]


  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
C++ ondersteunt ook gewoon continue en break :) en een goto gebruiken om uit een lus te stappen is niet zo heel vreselijk hoor (dat ondersteunt java ook met labeled loops). Echter probeer het zo veel mogelijk op te lossen dmv de controles in de loop conditie (tweede expressie in de for, enige bij de while) zodat een andere programmeur makkelijk kan zien wat er gebeurd :)

Handige links:
std library reference (dinkum impl.)
W32 reference
Glibc (linux) reference

Over je sleep functie : http://www.gnu.org/manual...de/Sleeping.html#Sleeping

Succes ;)

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

Glimi schreef op 30 August 2003 @ 11:07:
C++ ondersteunt ook gewoon continue en break :) en een goto gebruiken om uit een lus te stappen is niet zo heel vreselijk hoor (dat ondersteunt java ook met labeled loops).
Wil jij je mond houden :+ Op het gebruik van goto in een C/C++ programma binnen een bedrijf staat letterlijk de doodstraf. Leer het jezelf niet aan :)

* curry684 heeft nog nooit goto gebruikt in C noch C++ in de stuk of 9 jaar dat ie beiden programmeert...

Professionele website nodig?


  • Eelis
  • Registratie: Januari 2003
  • Laatst online: 21-02-2015
.

[ Voor 99% gewijzigd door Eelis op 18-02-2015 19:59 ]


  • alienfruit
  • Registratie: Maart 2003
  • Laatst online: 07:56

alienfruit

the alien you never expected

Ìk heb maar een goto commando gebruikt, en dat was in de paint method van me syntax editor component in Delphi :) Bleek om één of andere wazige reden, sneller te gaan :?

  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Eelis schreef op 30 August 2003 @ 13:54:
Ah, deze discussie weer ;)
Uhhuh, ik wist wat komen ging toen ik reply'de :+
De eerste die gaat zwaaien met het paper van Dijkstra krijgt een appel
Hier sluit ik mij bij aan :). En uiteraard vermelden we daar weer bij dat dit soort situaties zeldzaam zijn en dat goto over het algemeen hevig misbruikt wordt.
Ik snap beide redenaties
• Goto zorgt voor een onderbreking van de flow van de lezer (van boven naar onder)
• Goto is sneller om uit lussen te geraken dan wazige bool's ed. en if/else's, welke opzich ook niet echt leesbaar zijn vaak.

Het heeft gewoon met je instelling te maken; programmeer je iets zo optimaal mogelijk, of heb je liever dat het zo generiek en duidelijk mogelijk is. Beide punten vind ik redelijk en duidelijk genoeg :) dus eigenlijk vind ik het beide wel best ;)

Voor de topicstarter zou het wel beter zijn om niet te beginnen met goto's maar dit pas later als je goed de voordelen/nadelen ervan snapt, te gaan gebruiken :)

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

Glimi schreef op 30 August 2003 @ 14:06:
[...]
Uhhuh, ik wist wat komen ging toen ik reply'de :+
Volgens mij wist je zelfs al van wie het ging komen :D

Professionele website nodig?


  • Zoetjuh
  • Registratie: Oktober 2001
  • Laatst online: 10-01-2024
Er zijn een tweetal eenvoudige mogelijkheden.

1. Gebruik een 'do {} while()' of een 'while () do {}'. Hieruit kan je namelijk wel breaken
2. Gebruik je toch een for (int ItemNo = 0; ItemNo < eenGetal; ItemNo++) {} zet dan je ItemNo op eenGetal om uit je for-loopje te komen.

Let wel, een for-loopje is niet echt bedoeld om uit te komen, daarvoor zou je toch eigenlijk een while moeten gebruiken. Goto uit een for-loop is inderdaad über-evil :P

PS. Denk dat je andere vragen gewoon moet posten hier hoor.. Of gebruik één van de newsgroups van MS of Borland (ik gebruik zelf Borland en ben zeer tevreden over die newsgroups. Meestal beantwoord ik daar ook een hoop vraagjes, maar ik denk dak ook eens vaker in dit forum op vragen ga loeren)

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 21-08 18:33
.. .Gebruik een 'do {} while()' of een 'while () do {}'. Hieruit kan je namelijk wel breaken
Uit een for loop kun je ook breaken met break
....Let wel, een for-loopje is niet echt bedoeld om uit te komen....
Bijna al mijn for loopjes zijn gebouwd om een keer uit te komen. :)

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

farlane schreef op 31 augustus 2003 @ 13:21:
[...]
Bijna al mijn for loopjes zijn gebouwd om een keer uit te komen. :)
Ja, for(;;) is een stuk lelijkere grammatica dan while(true) :P

En als je 3 nests diep zit en er in 1 klap uit moeten kunnen zit je meestal toch in een lookup-stukje en moet je imho gewoon de lookup afsplitsen tot een losse routine waar je in 1 klap met return uitkomt zodra je het gewenste resultaat hebt.

Professionele website nodig?


  • Exirion
  • Registratie: Februari 2000
  • Laatst online: 04:45

Exirion

Gadgetfetisjist

"while (1)" is korter :P

"Logica brengt je van A naar B, verbeelding brengt je overal." - Albert Einstein


  • Zoetjuh
  • Registratie: Oktober 2001
  • Laatst online: 10-01-2024
farlane schreef op 31 August 2003 @ 13:21:

[...]
Uit een for loop kun je ook breaken met break
[...]
Uhm exuces. Kan inderdaad ook ja... Foutje |:(

[ Voor 4% gewijzigd door Zoetjuh op 31-08-2003 13:35 ]


  • cpbotha
  • Registratie: Juni 2003
  • Laatst online: 18-07-2006
Wanneer je C++ aan't leren bent, is het noodzakelijk dat je een goed boek erbij hebt. Thinking in C++ door Bruce Eckel is een aanrader, des te meer omdat je het gewoon legaal kan downen. Zie hier.

Probeer vooral niet C++ te leren door domweg te experimenteren en dan op de compiler foutmeldingen te letten! (Heb ik al vele mensen zien doen.)
Pagina: 1