Gå til innhold

Bone's Offisielle C++ hjelpetråd


Anbefalte innlegg

Videoannonse
Annonse

Har et shellscript som kontrollerer enheten foreløpig. Tenkte å bare bruke det foreløpig.

 

Men koden for å kjøre feks system( "~/mittskript.sh 1" ); bør vel ligge i en Node-klasse i Controller, og ikke i Node-modelklassen

 

Kunne kanskje hatt NodeParser, som sjekker hvilke funksjoner Node objektet har, før det eventuelt gjør det jeg ber den om?

nodeParser( node1 ).gjorNoe() ?

Lenke til kommentar
Gjest Slettet+9871234

Har du vurdert å bruke en annen IDE? Jeg bruker code::blocks og trives godt med det.

 

http://www.codeblocks.org/

Om du skal bruke et (en) gratis IDE (kompilator) er vel gode gamle Open(Watcom) http://www.openwatcom.org god.

 

http://www.ocppug.org/

 

Meld dere gjerne inn her:

om dere lurer på noe mer avansert
events/11775931/?eventId=11775931&action=detail enn bruk av % modulus og == operatorene. (php har gått enda lengre og introdusert === operatoren http://www.oopschool.com/phpBB3/viewtopic.php?f=11&t=209)

 

Dere har vel lært å kombinere % med ternary operatoren? Det kan bidra til svært effektiv koding i noen kontekster.

 

Der er mange C++ kompilatorer. Let gjerne opp og studer koden til small C om du vil grave dypere (lære litt kompilator teori) og den fortsatt finnes på nettet.

 

Man kan kode objekt-orientert i C også om man vil.

Ja om man vil finne opp hjulet på nytt. Om det blir bedre enn det eksisterende C++ hjulet er et annet spørsmål.

 

C++ er objektorientert C.

 

Dansken Bjarne Strostrup http://www2.research.att.com/~bs/ som lagde C++ kunne C og simula og med den bakgrunnen lagde han C++ ved å "stjele" ting fra simula.

Endret av Slettet+9871234
Lenke til kommentar
Gjest Slettet+9871234

C99 og C++0x-kode virker som to helt forskjellige språk.

 

Kjenner ikke de nyeste versjonene til å kunne uttale meg om det. Mener du / dere at C nå har utviklet seg til et objektorientert språk som kan konkurrere med C++ (C++0x)?

 

Fra Strostrups hjemmeside:

 

Modified July 3, 2011

 

http://www2.research.att.com/~bs/C++0xFAQ.html

 

C++ Incompatibilities

 

The aforementioned features are rather impressive but one soon realizes that this means that C is no longer a subset of C++. There is a list of the major incompatibilities between the current ISO standards for C and C++ on David Tribble's webpage. At this point it is still too early to see if either C or C++ will be harmed by this development but it is clear that there will be some growing pains once C99 adoption becomes widespread.

 

Bjarne Stroustrup mentioned in a recent interview with LinuxWorld that he would have liked for both languages to be compatible and would favor a technical committee whose express purpose would be integrating both languages, but doubts the possibility of this coming to pass. Stroustrup also contrasted how C's technical commitee decided to implement most of the added functionality via changes to the actual C language against the C++ approach which was by adding additional libraries.

Kilde: http://www.kuro5hin.org/story/2001/2/23/194544/139

 

Se også http://home.datacomm.ch/t_wolf/tw/c/c9x_changes.html

Endret av Slettet+9871234
Lenke til kommentar

Hvis du mener om C har fått funksjonalitet for å hjelpe til med objektorientert programmering, så nei. Er nok av prosjekter som er objektorienterte og skrevet i C, så trengs ikke akkurat.

 

C99 er fortsatt C, men har mange små detaljer her og der som gjør språket mye mer behagelig å jobbe med.

 

C++0x er en radikal utvikling fra C++98 på mange måter, men en nødvendig én.

 

Stroustrup also contrasted how C's technical commitee decided to implement most of the added functionality via changes to the actual C language against the C++ approach which was by adding additional libraries.

 

Mja, funksjonaliteten som std::initializer_list og lambdaer har kan ikke implementeres i C++-kode :(

Endret av TheMaister
Lenke til kommentar
Gjest Slettet+9871234

Hvis du mener om C har fått funksjonalitet for å hjelpe til med objektorientert programmering, så nei. Er nok av prosjekter som er objektorienterte og skrevet i C, så trengs ikke akkurat.

Man kan kode objekt-orientert i C også om man vil.

Min utheving.

 

Det var vel du som forvirret meg og andre med det utsagnet. Om man vil finne opp hjulet på nytt, er det selvsagt riktig var mitt svar.

 

Mja, funksjonaliteten som std::initializer_list og lambdaer har kan ikke implementeres i C++-kode :(

Et godt norsk ordtak kan her være på sin plass.

 

Den som vil ha alt han ser

får gråte når de andre ler.

Med lambdaer, mener du slike annonyme funksjoner som kan implementeres i JavaScript / jQuery http://www.oopschool.com/phpBB3/viewtopic.php?f=32&t=223 ?

Endret av Slettet+9871234
Lenke til kommentar
  • 2 uker senere...
  • 5 uker senere...

Er nybegynner innen C++

Har bare drevet med det et par timer nå.

 

Trenger tips til små øvingsoppgaver av den enkle sort, slik jeg kan pusle med litt i starten.

 

Tips til oppgaver eller sider, anyone?

 

Et enkelt klassesystem kan väre en enkel (og samtidig interesant) oppgave. F.eks. pröv å skrive et matrisebibliotek, eller kvaternioner. Pröv å skrive ryddig frå selve begynnelsen, med ctorer, copyctorer, overloaded = osv. Kan läre mye av det. Dette vil hjelpe også å läre STL sine container-klasser.

 

Et annet prosjekt kan väre håndtering av sträng - f.eks. en enkel chatterbot. Ikke noe kjedelig, og svärt pedagogisk.

Lenke til kommentar

Jeg har et lite problem - jeg skriver en ncurses-basert tetris-klone og trenger en timer. Ettersom den skal være ncursesbasert er SDL og tilsvarende ikke ønskelig, heller ikke QTime. Finnes det noe godt slikt i standard C++?

 

Noen tips til hvordan jeg skal kunne la timeren gå uavhengig av om redraw-metoden blir kalt eller ikke hadde vært fint. Altså at den teller uavhengig av hva som gjøres, og at tegnignen kalles hver gang bruker gir input.

 

En siste sak - hvordan kan jeg holde dette i en while-loop uten at CPU-bruk spretter opp til 100%? Eksempler og forklaringer mottas med takk, første gang jeg skriver et interaktivt program.

Lenke til kommentar

Operativsystemet har som regel timer funksjonalitet, men hvis det skal være ncurses basert så er vel ikke dette aktuelt.

 

Utenom det så har du timer.h fra C som kan brukes.

 

Når det gjelder CPU-bruk så må du la programmet ditt gi fra seg kontrollen. Dette kan du bruke pthread.h til, som er et posix bibliotek. Denne inkluderer sched.h som skal ha funksjonen sched_yield som skal få tråden til å gi ifra seg kontroll.

 

Under Unix har du også funksjonen sleep() i unistd.h som er mer eller mindre synonym med Windows funksjonen Sleep. Begge kan også brukes:

 

#ifdef WIN32
#include <Windows.h>
#define SLEEP(MS) Sleep(MS)
#else
#include <unistd.h>
#define SLEEP(MS) sleep(MS)
#endif

Lenke til kommentar

Du vil typisk bare la den sove i millisekunder av gangen, alt fra 0 til 20 ms er vanligvis nok. sched_yield vil vel oppføre seg mer eller mindre likt som sleep(0).

 

Typisk vil hovedløkka i programmet gå kontinuerlig med bare små pauser (som sleep(0)) for å hindre 100% CPU-bruk. Ikke bruk sleep for å bestemme hvor raskt programmet skal gå.

Lenke til kommentar

Du har sikkert alt du trenger nå, men her er noe eksempel pseudo-kode:

 

int64 last_tick;

main()
{
 last_tick = timer_tick(); // Forutsatt at timer_tick her er en høyfrekvenstimer (for eksempel antall klokkesykluser på prosessoren)
 while(application_is_running)
 {
   int64 tick = timer_tick()

   double frame_time = (tick - last_tick) / timer_frequency(); // Regn ut antall sekunder siden sist frame. timer_frequency er frekvensen på timeren, for eksempel 16 MHz

   double fps = 1.0 / frame_time; // Regn ut FPS. Kan bruke RMS eller lignende for å få et bedre resultat

   for each(auto child in scene)
     child.process(frame_time); // Flytt brikker etc. etter hvor mye tid som har gått, og hvilke taster en trykker etc.

   last_tick = tick;

   sleep(0); // thread yield
 } 
}

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...