Timeo Skrevet 27. mars 2008 Del Skrevet 27. mars 2008 (endret) Har lest meg gjennom litt basisk informasjon om c++ og ved å se på eksempler har jeg også klart å sette sammen mine egne små program F.eks. tankeleseren #include <iostream> using namespace std; int main() { cout<<"Hei, jeg er et tankeleserprogram. Trykk enter for aa fortsette.\n"; cin.get(); int tanketall; cout<<"Skriv inn et tall og trykk enter.: "; cin>> tanketall; cin.ignore(); cout<<"Jeg gjetter at tallet ditt var: "<< tanketall <<"\n"; cout<<"Trykk enter for aa stoppe tankelesingen min.\n"; cin.get(); return 0; } men jeg føler jeg absolutt ikke forstår hvorfor programmene funker, selv om jeg får de til å funke og jeg føler meg ikke komfortabel med å fortsette å grave med ned i informasjon før jeg forstår det basiske fullt ut. Og når jeg leser virker informasjonen veldig matematisk (jeg har store problemer med matte) og bruker en del begreper jeg ikke er kjent med, noe som får meg til å føle at jeg må sette en kjølevifte på hjernen om jeg skal fortsette å lese dette. Så jeg lurer på om noen vet om en eller anne guide som virkelig går i dybden av hva de forskjellige kommandoene er og hva de gjør, og som serverer informasjonen med en teskje. Det jeg har sett til nå er guider som raser videre til neste steg før jeg har forstått en brøkdel av hva de snakket om i del1. De sier bare "sånn er det", men ikke hvorfor det er sånn. Det må være gratis informasjon. Endret 27. mars 2008 av Bellicus Lenke til kommentar
Arne Skrevet 28. mars 2008 Del Skrevet 28. mars 2008 Hehe, for all del, informasjonen er basic, ikkje basisk! Basisk er eit begrep som vert brukt i kjemi når eit stoff har høgare PH enn 7! Men frå spøk til revolvar: Du bør kanskje lære deg litt matte, det kan i alle fall vere lurt å ha eit minimum av matte-kunnskapar når ein skal programmere, i alle fall når ein kjem litt vidare. Viss du ikkje meistrer heilt engelsk, så kan du kanskje ta ein titt på denne svenske guiden? http://www.blinkenlights.se/articles/c++nyborjarguide/ Lukke til! PS: Forøvrig kan eg anbefale deg å kjøpe ei bok, men det ser ut til at dette ikkje er eit alternativ? Lenke til kommentar
GeirGrusom Skrevet 28. mars 2008 Del Skrevet 28. mars 2008 Jeg lærte meg C++ ved å se på eksempler og slå opp nødvendig info på MSDN. Lenke til kommentar
Timeo Skrevet 28. mars 2008 Forfatter Del Skrevet 28. mars 2008 Hmm, tror nå basisk blir den rette oversettelsen av basic, selv om det også kan være et begrep innen kjemi? Matte er et problem, kan ikke engang gangetabellen, eller sette opp divisjon-stykker. Eneste jeg noensinne har forstått og hatt glede av innen matte er geometri. Engelsk er forøvrig ikke noe problem, så tror en engelsk guide vil gjøre større nytte enn en svensk. Kanskje jeg kan prøve som Geirgrusom, for det som føles enklest er bare å hoppe rett til eksempler og så eksperimentere litt med hvordan de forskjellige kommandoene fungerer og kombinere dem med hverandre. Et slags oppslagsverk over de forskjellige kommandoene og funksjonene hadde vært supert. Lenke til kommentar
Arne Skrevet 28. mars 2008 Del Skrevet 28. mars 2008 Ja, du har jo http://cppreference.com som kan vere nyttig. Lenke til kommentar
Timeo Skrevet 28. mars 2008 Forfatter Del Skrevet 28. mars 2008 Ja, du har jo http://cppreference.com som kan vere nyttig. Takk Lenke til kommentar
GeirGrusom Skrevet 29. mars 2008 Del Skrevet 29. mars 2008 Når det gjelder matte, er ikke dette så farlig i starten, som du vil merke. Du trenger ikke å huske hvordan hvordan man setter opp divisjonsstykker og slikt, det husker ikke jeg, og jeg klarer meg utmerket godt Det som egentlig kan hjelpe mest, er å kunne flytte rundt på formler, men det er ikke et krav å kunne det. Selv må jeg si at det hjalp meg fryktelig med programmering etter at jeg begynte på høyskolen, plutselig forstår jeg derivasjon, integrasjon, vektorregning og slikt, og innimellom har jeg faktisk fått bruk for dette Vel, vektorregning har jeg hatt inne fra før, fordi jeg har drevet en del med 3D grafikk. Men som sagt synes jeg selv den beste kilden til informasjon er eksempler, og et oppslagsverk for funksjoner; dersom du programmerer for Windows er MSDN en uvurderlig ressurs. Lenke til kommentar
Quijote Skrevet 30. mars 2008 Del Skrevet 30. mars 2008 (endret) Basic på norsk er 'grunnleggende','elementær' eller fundamental, med mindre man snakker om kjemi, da heiter det basisk Til saken: 01: #include <iostream> 02: 03: using namespace std; 04: 05: int main() 06: { 07: cout<<"Hei, jeg er et tankeleserprogram. Trykk enter for aa fortsette.\n"; 08: cin.get(); 09: 10: int tanketall; 11: 12: cout<<"Skriv inn et tall og trykk enter.: "; 13: cin>> tanketall; 14: cin.ignore(); 15: cout<<"Jeg gjetter at tallet ditt var: "<< tanketall <<"\n"; 16: cout<<"Trykk enter for aa stoppe tankelesingen min.\n"; 17: cin.get(); 18: return 0; 19: } Først av alt. Du må forstå at program i C/C++ kjører linje for linje. Første linje den ser ved kjøringen av programmet er første linje i main-funksjonen, linje 7. Før dette skjer, gjør kompilatoren (den som gjør overgangen fra kode->kjørbar program) litt arbeid, blant annet med #include linjen din, men det er ikkje så veldig farlig. Linje 1: Forteller kompilatoren at du har tenkt å bruke funksjoner som blir beskrevet i iostream h-filen. Du kan gjøre lurt å lese litt om h-filer og funksjonsdeklarering om du vil forstå den dypere hensikten. Her kan du få ein kort forklaring: funksjoner er kodesnutter som er laget slik at den kan gjenbrukes og kalles på hvor som helst i koden. C++ er nødt til å vite hvilke funksjoner som finnes i programmet, og det er der h-filene kommer inn. Du trenger denne linjen fordi du bruker cout og cin (linjer 7,8,12,13,14,15,16,17). Mangler du denne include-linjen, så forstår ikkje c++-kompilatoren hva std, cin eller cout er for noe. cin,cout,istream Linje 3: cout og cin ligger i namespace-et til std. Du kan betrakte eit namespace som ein form for mappe som inneholder funksjoner og klasser. Siden man selv kan velge navn på funksjoner og klasser, kan det fort oppstå forvirring om hvilken funksjon/klasse man tenker på, dersom det finnes flere som deler samme navnet. Dersom du ikkje har med denne linjen, så forstår ikkje kompilatoren at du ønsker å lete i "mappen" std. Du måtte da ha skrevet om på koden "cout" må byttes ut med "std::cout" og "cin" med "std::cin". Du kan fjerne linje 3, og prøve dette, og se at alt fungerer. Poenget med using namespace std er bare for å spare deg for unødendig koding. Nb: "::" kalles "scope operator" Linje 7: cout er ein instans av ostream-klassen (se linken, og dei over, om linje 3). Les litt lett om objektorientert-programmering om du lurer på hva klasser og instanser er f.eks. her. Det denne linjen gjør er å sende tekst-strengen "Hei, jeg er et tanke...." til stdout-strømmen (se for deg at stdout-strømmen er ein elv som tar med seg alt som havner i den fram til skjermen). Det du gjør er å putte tekst-strengen inn i elven, slik at den havner på skjermen. Linje 8: get() Henter altså ein character (bokstav) fra input-strømmen (elv som fører fra tastatur, om du vil). Tinger her er at du kan skrive inn ting, medan programmet venter på at man skal avslutte inputten fra tastaturet ved at brukeren trykker enter. Gjør du dette, så oppfører programmet seg litt annerledes enn du hadde likt (siden get() bare henter ein bokstav). Hensikten med denne linjen er bare å få brukeren til å trykke enter, og det som da returneres av funksjonen bryr programmet seg lite med. Bedre er å bruke cin.ignore(). Se kommentar til linje 14. Eller enda bedre cin.ignore(256,10), som gjør at du unngår problemet ved at brukeren skriver inn ting i stedet for å trykke enter. (256 er antall bokstaver å ignorere, 10 er ascii-koden for ny linje) Alternativt, så kan du bruke cmd-funksjonen "pause", ved å bytte ut linje 8 med 08: system("pause") Dette tilsvarer å skrive 'pause' i et cmd-vindu. F.eks. system("cls") gjør at den fjerner alt i vinduet ("cls" for windos og "clear" for unix/linux). Linje 10: Oppretter ein variabel av typen int (heltall). Linje 12: På nytt sender tekst til skjermen. Linje 13: Denne fungerer litt på samme måte som cin.getline() bare at C++ er litt smartere, og forstår at dersom det som blir skrevet inn er heltall så kan han tolke det som heltall. Det betyr at det som blir skrevet inn blir lagret i variabelen du opprettet på linje 10 som et heltall. cin>> operatoren (den fjerde grønne linjen viser at operatoren er definert for tilfellet der man sender informasjonen til ein variabel av typen int). Linje 14: ignore Gjør det samme som cin.get() men returnerer ingenting. Linje 15: Sender ut "Jeg gjetter at tallet ditt var: " til skjermen. Så gjør den om verdien i "tanketall" til tekst, og sender så den ut. Så sender den ut "\n" som betyr da at den lager ny linje. Listen over escape-characters. alternativt kan du bruke 'endl' i stedet for '"\n"'. M.a.o. cout << "\n"; tilsvarer cout << endl; Linje 16&17: Allerede dekket Linje 18: avslutter programmet og returnerer 0 (som du egentlig ikkje trenger tenke på, men 0 betyr at alt gikk bra). Håper dette hjalp Endret 31. mars 2008 av Quijote Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå