Wikipendium

History Compendium
Log in
This is an old version of the compendium, written Aug. 9, 2013, 4:53 p.m. Changes made in this revision were made by Ose. View rendered version.
Previous version Next version

TDT4102: Prosedyre- og objektorientert programmering

# Introduksjon __C++__ er et programmeringspråk _Bjarne Stoustrup_ lagde med C som basis. C++ gir C objekt-orientert funksjonalitet. Kode skrevet som C er gyldig C++, men kode skrevet som C++ er ikke nødvendigvis gyldig C. # Læringsmål Fra <https://www.ntnu.no/studier/emner/TDT4102/2013> ## Kunnskap * Har bred og praktisk orientert kunnskap om programmeringsspråket C++. Kan syntaks og regler for variabeldeklarasjoner og [datatyper](#datatyper), typekonvertering, kontrollstrukturer, funksjoner og operatorer, overlagring, klasser, arv, templates, unntakshåndtering. * Har kunnskap om automatisk og dynamiske variabler og bruk av pekere. * Har kunnskap om rekursjon, enkle algoritmer og datastrukturer. * Har kunnskap om prosedural og objektorientert modularisering av koden og har kunnskap om hvordan kode kan organiseres i flere kildekodefiler, kompilering og lenking. * Har kunnskap om standarbiblioteket, inn/ut datahåndtering, vanlig brukte funksjoner og template-klasser. * Har kunnskap om moderne utviklingsverktøy, teknikker for feilfinning og enkel testing av egen kode. * Har kunnskap om diagramtyper for objektorienterte programmer. ## Ferdigheter * Kan utvikle et program fra problembeskrivelse til fungerende og feilfri løsning. * Kjenner vanlige brukte kodingsteknikker og kan jobbe iterativt og effektivt med konstruksjon av egen kode. * Kan programmere proseduralt hvor koden er fornuftig modularisert i funksjoner og objektorientert hvor koden er organisert i klasser. Kan velge hvilke hvilken løsning som er best for et gitt problem. * Kan skrive kode som er gjenbrukbar, lesbar og enkel å vedlikeholde. * Kan lese kode og forstå hvordan koden oppfører seg i kjøretid. ## Generell kompetanse * Kan jobbe effektivt med med å analysere et problem og konstruere en løsning. * Kan kommunisere og diskutere kodeløsninger og forklare hvordan et program fungerer. * Kan finne frem til å benytte nødvendige hjelpemidler, kan bruke dokumentasjon for programmeringsspråket og standarbiblioteket. # Grunnleggende ## Datatyper ||__Type__||__Størrelse__||__Beskrivelse__|| ||int ||32 bit ||Heltall || ||double ||64 bit ||Flyttall. Eks.: -2.4, 4.0|| ||float ||32 bit ||Flyttall || ||char ||8 bit ||Enkelt bokstav || ||bool || ||`true`/`false` || ## Objektstrukturer ### Class En _klasse_ er en struktur for å definere en ny objekttype. Skal man f.eks. lage en program som håndterer bil-objekter, må man lage en klasse kallt Car. I klassedefinisjonen ramser man opp hvilke egenskaper og funksjoner en bil har. ### Enum En _enumerering_ ligner en klasse. Forskjellen er at man med en enum må definere alle de mulige varianter man kan ha. ### Struct # Tilfeldige tall Ettersom datamaskiner er deterministiske, kan de ikke finne på tilfeldige tall. Man må derfor lage ett _pseudo-random_ tall ved hjelp av klokkeslettet. På denne måten får man et tall som er tilfeldig nok til de fleste formål. ## Eksempel Hver gang dette kjøres vil ti ulike tilfeldige tall fra og med 5 til (ikke med) 10 printes. #include <iostream> #include <cstdlib> #include <ctime> #include <cmath> int randomNumber( int from, int to) { return ( rand() % (to-from) ) + from; } int main () { std::srand( (unsigned)time(0) ); for ( int i = 0; i < 10; i++ ) std::cout << randomNumber(5, 10) << std::endl; }
I første linje i main "seeder" man tallgeneratoren med klokken. Merk at dette må gjøres utenfor selve random-funksjonen. Hadde denne linjen vært inni randomNumber, hadde alle de tilfeldige tallene blitt det samme. I randomNumber finner _rand() et "tilfeldig"_ et tall mellom 0 og en maksgrense satt av kompilatoren. En modulusoperasjon gjør at tallet reduseres til et tall mellom 0 og $ to - from $. Til slutt legges $ from $ til tallet slik at det som står igjen er et tall mellom $ to $ og $ from $.
  • Contact
  • Twitter
  • Statistics
  • Report a bug
  • Wikipendium cc-by-sa
Wikipendium is ad-free and costs nothing to use. Please help keep Wikipendium alive by donating today!