Gå til innhold
🎄🎅❄️God Jul og Godt Nyttår fra alle oss i Diskusjon.no ×

Anbefalte innlegg

Har satt i gang med litt C++ programmering. Bruker en engelsk C++ bok som funka helt greit helt til jeg plutselig sto fast.

Kan noen forklare hvordan int float og char funksjonen funker. Så vidt jeg skjønte så hadde det noe med at man legger noe i minnet til PC-en så man kan henvise til den og.no greier. Noen som kan forklare meg litt grunnleggende hvordan C++ (programmeringsprogrammer generelt) jobber med tanke pa minne samt en liten innføring i bits og byte.

Legg gjerne med et koda eksempel på hvordan du ville brukt en int float og char funksjon........

 

Bra NORSK side på internet for newbies i c++ eller bra NORSKE kanaler pa irc for å få hjelp til grunnleggende C++ programmering?

 

Eller har jeg sån halveis fått med meg hva er komplikator er, men setter gjerne pris på en ny forklaring på det og hva det her bibliotek greiene er for.no <iostream.h> f.eks.....jaujau

THATS ALL.....hust at jeg er newbie på dette området så hvis du skulle finne på å poste noe så ta utgangspunkt i at jeg ikke veit noe...

Lenke til kommentar
Videoannonse
Annonse

Jeg vet ikke hvor man skal begynne aa svare paa dette.

 

Spoersmaalene du stiller er igrunnen saa elementaere at det er veldig lite som kan svares paa dem som du ikke kommer til aa finne i en hvilken som helst programmeringsbok.

 

Kan ikke du lese litt og undersoeke selv, og saa heller poste noen konkrete spoersmaal av typen hvor det gaar fram at du har forstaatt nok grunnleggende programmering til aa ha forutsettnig for aa forstaa et evnt. svar?

 

 

mvh

DrDoogie

Lenke til kommentar
  • 2 uker senere...

iostream.h er et såkalt bibliotek, på lik linje som f.eks math.h. Disse må du ha med i programmet ditt for å få tilgang til funksjoner, f.eks sqrt() (square root) ligger i math.h. Skriver du f.eks

 

cout<<sqrt(4);

 

vil du skrive 2 ut på skjermen.

 

int,float og char definerer variabler. Det vil si at du setter av plass til en variabel i minnet. I tillegg har du også long og double. int og long er for heltall, og long kan deklarere et høyere heltall enn int. Float og double er for desimaltall, der double er det største. Char er for en bokstav, mens char[10] definerer en streng på 9 tegn, siste plassen blir satt til /0 (terminering av stringen).

 

#include <iostream.h>

#include <math.h>

 

int main(){

int I=0;

I=sqrt(4);

cout<<I;

return 0;

}

 

Dette programmet bør skrive ut 2 skjermen (lenge siden jeg drev med C++). Håper det var noe til hjelp....lykke til videre.

Lenke til kommentar

Quote:


On 2002-03-20 01:07, The Jackal skrev:


Så spørsmålet blir egentlig, hvem kompilerte kompilatoren, og hvilket program skrev han kompilatoren i??


 

En kompilator kan godt kompileres av er nedgradert versjon av seg selv, for saa aa kompilere seg selv.

 

Get it?

Lenke til kommentar

Kan dessverre ikke skjønne helt hva du mener med int, char og float funksjonene, men hvis du spesifiserer litt mere nøyaktig, så kan jeg sikkert gi deg svar. Når det gjelder minne så kan dette deles i to hovedgrener. Heap og stack. Skal ikke gå inn på hver av disse, men dersom du i en funksjon skriver int i = 0;

Så vil datamaskinen dytte verdien 0 inne i minne et eller annet sted( i dette tilfelle, på toppen av stacken, som egentlig er i bunnen :smile: ). Siden en int kan holde ca 4.2 forskjellige verdier(VC++) så må den har 4 byte, så datamaskinen finner en ledig plass i minnet( 4 bytes øverst på stacken) og legger 0 inn i alle disse. variabelen i vil så få addresen til den første av disse bytene og kompilatoren selv vil holde orden på at disse fire hører sammen. for å se dette i praksis så skriv dene lille koden:

 

#include <iostream>

int main(int argc, char** argv)

{

int i = 0;

std::cout << "Adressen til i: "<< &i <<std::endl;

std::cout << "verdien til i: "<< i << std::endl;

return 0;

}

 

Dersom du er interesert i å forstå hva som skjer i bakgrunnen av C++, så vil jeg anbefale deg å la det vente i noen måneder, lese masse og programmere masse, for så å plukke opp en bok om assembly language. Da vil du lettere forstå hva som skjer når du skriver int i;i = 0; eller int i(0);

Lenke til kommentar
  • 3 uker senere...

Det er da virkelig ikke sååå lenge siden hullkortsystemer fantes da?

Programmererne satt og lagde systemer ved å lage hull i kort som de så matet maskinen med. Norge var jo ganske langt fremme i utviklingen blant annet med maskinen "Nisse" (det er en eller annen forkortelse, men husker ikke for hva)

Dessuten bør det nevnes at en kompilator bare oversetter til objektkode (må ikke forveksles med objekter i C''), mens en linker oversetter til maskinkode.

Den første kompilatoren kompilatoren i C ble skrevet for PDP-7 (hvis jeg ikke husker helt feil) først i assembly og med en gang den var skrevet, skrev de en i C, som de brukte fra da av. C++ komplitatorer er stort sett skrevet i C.

Lenke til kommentar

Quote:


On 2002-04-11 16:15, atomle skrev:

Dessuten bør det nevnes at en kompilator bare oversetter til objektkode (må ikke forveksles med objekter i C''), mens en linker oversetter til maskinkode.



Er det noen forskjell på objektkode og maskinkode utover at objektkode benytter logiske adresser?

Lenke til kommentar
  • 2 uker senere...

Quote:


On 2002-03-20 15:50, The Jackal skrev:

Joa...men hvor fikk du den nedgraderte kompilatoren fra, den må jo også være skrevet i et program. Og åssen får du da kompilert programmet som denne kompilatoren er skrevet i??


Med andre ord, hvem kom først, høna eller egget??
:grin:
:-D


 

Uansett må jo alle linkere bli skrevet slik at de lager maskinkode, så han/hun som lager linkeren må jo skrive en del maskinkode uansett.

Lenke til kommentar

Quote:


On 2002-04-29 10:26, rune420 skrev:

Quote:


On 2002-03-20 15:50, The Jackal skrev:

Joa...men hvor fikk du den nedgraderte kompilatoren fra, den må jo også være skrevet i et program. Og åssen får du da kompilert programmet som denne kompilatoren er skrevet i??


Med andre ord, hvem kom først, høna eller egget??
:grin:
:-D


 

Uansett må jo alle linkere bli skrevet slik at de lager maskinkode, så han/hun som lager linkeren må jo skrive en del maskinkode uansett.

Sånn jeg har forstått tar linkeren hånd om adresser, mens kompilatoren gjør om til maskinkode. En objektfil inneholder fiks ferdig binærkode, men referanser til andre objektfiler er ikke tatt hånd om. Dette er opp til linkeren.

Rett på meg hvis dette er helt feil...

Lenke til kommentar
  • 4 uker senere...

Quote:


Den 2002-03-20 01:07, The Jackal skrev:

....og forresten....en kompilator er et program som oversetter koden din til maskinkode, siden CPU'en din ikke forstår en dritt av cout, cin osv.


Så spørsmålet blir egentlig, hvem kompilerte kompilatoren, og hvilket program skrev han kompilatoren i??


 

Det er jo lett, den ble programmert i assembler.

Lenke til kommentar

For det første er det litt feil å si int, float, double, long funksjon.

 

For dette er faktisk variabler og ikke funksjoner. (med unntak).

 

Hvis du vil vite hvor på minnet en variabel er kan du skrive dette:

 

#include <iostream>

 

void main() {

 

int *i = 46;

 

cout << &i; //kun dette er egentlig nødvendig :razz:

cout << *i;

 

cout << &*i << *&i;

 

cin.get();

}

Lenke til kommentar

Quote:


Den 2002-04-11 16:15, atomle skrev:

Det er da virkelig ikke sååå lenge siden hullkortsystemer fantes da?

Programmererne satt og lagde systemer ved å lage hull i kort som de så matet maskinen med. Norge var jo ganske langt fremme i utviklingen blant annet med maskinen "Nisse" (det er en eller annen forkortelse, men husker ikke for hva)

Dessuten bør det nevnes at en kompilator bare oversetter til objektkode (må ikke forveksles med objekter i C''), mens en linker oversetter til maskinkode.

Den første kompilatoren kompilatoren i C ble skrevet for PDP-7 (hvis jeg ikke husker helt feil) først i assembly og med en gang den var skrevet, skrev de en i C, som de brukte fra da av. C++ komplitatorer er stort sett skrevet i C.


 

het ikke den maskinen "Nusse"? eller var det en arvtager eller noe i den stilen?

 

hva gjør "std" igjen? :?: (som i ......std::endl; )

Lenke til kommentar

Quote:


Den 2002-05-24 12:10, CaSh skrev:

Quote:


Den 2002-03-20 01:07, The Jackal skrev:

....og forresten....en kompilator er et program som oversetter koden din til maskinkode, siden CPU'en din ikke forstår en dritt av cout, cin osv.


Så spørsmålet blir egentlig, hvem kompilerte kompilatoren, og hvilket program skrev han kompilatoren i??


 

Det er jo lett, den ble programmert i assembler.

 

Assembly blir også kompilert (og deretter linket...).

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...