Gå til innhold

Kodesnutter for ferskinger


Anbefalte innlegg

Ser litt etter noen kodesnutter for ferskinger. Har erfart fra andre situasjoner at se og lær ofte er det beste.

 

Noen som har noen linker, eller kanskje noe å komme med her?

 

Lurer forresten på om noen ganske enkelt kan fortelle meg hvordan det fungerer med variabler og IFer. Altså, hvis en person f.eks. taster inn "b" og trykker enter, så kommer tekst B opp. Skjønner?

Lenke til kommentar
Videoannonse
Annonse

Tatt fra en gammel tutorial jeg begynnte på for litt siden, på ingen måte komplett. Etter "if'ing", kommer du til å lure på andre ting; så til slutt er det like greit at du skaffer deg en god bok.

Uansett:

 

if handler om boolske verdier; true eller false.

 

true <> 0; // alle verdier forskjellig fra 0

false == 0;

 

if(1 == 1)

  do_stuff(); // denne vil kjøres her siden 1 == 1 returnerer 'true'.

else

  do_some_other_stuff(); // denne kjøres ikke

 

---

 

if(1 == 0)

  do_stuff(); // denne kjøres ikke

else

  do_some_other_stuff(); // denne vil "kjøres" her siden 1 == 0 returnerer 'false'.

 

if kan brukes slik:

 

if(1 > 0)

  do_stuff(); // denne kjøres

do_other_stuff(); // denne kjøres også

 

--

 

if(1 > 0)

  do_stuff(); // denne kjøres

else

  do_other_stuff(); // denne kjøres ikke

 

--

 

if('a' != 'b') {

  do_stuff();      // disse..

  do_more_stuff();  // ..kjøres ikke

}

do_other stuff(); // denne kjøres

 

--

 

if(0)

  do_stuff();

else

  do_other_stuff(); // denne kjøres

 

--

int i = 3;

 

if(i == 1) {

  do_stuff();

  do_more_stuff();

}

else if(i == 2) {

  do_something();

}

else if(i > 2) {

  do_something_else(); // denne kjøres

}

 

Som du ser, brukes { og } for å gruppere ting og er unødvendig når det bare er en instruksjon som skal utføres.

 

Eksempel:

 

#include <iostream>

using namespace std;


int main()
{
 int tall1;
 int tall2;
 string operasjon;

 cerr << "Skriv inn det første tallet : ";
 cin >> tall1;


 cerr << "Skriv inn det andre tallet : ";
 cin >> tall2;
 cerr << "Hva vil du gjøre med " << tall1 << " og " << tall2 << " (+, -, * eller /)? : ";
 cin >> operasjon;

 if(operasjon == "+")
   cerr << "Summen av " << tall1 << " og " << tall2 << " er: " << tall1 + tall2 << endl;
 else if(operasjon == "-")
   cerr << "Differansen mellom " << tall2 << " og " << tall1 << " er: " << tall2 - tall1 << endl;
 else if(operasjon == "*")
   cerr << "Produktet av " << tall1 << " og " << tall2 << " er: " << tall1 * tall2 << endl;
 else if(operasjon == "/")
   cerr <<  tall1 << " delt på " << tall2 << " er: " << static_cast<double>(tall1) / static_cast<double>(tall2) << endl;
 else
   cerr << "Du skrev inn en ukjennt operasjon, prøv igjen!" << endl;
 
 return(0);
}

Lenke til kommentar
Etter "if'ing", kommer du til å lure på andre ting

Liker ikke sånne folk som leser tankene mine :ermm:

 

En god bok kan jeg jo kanskje ønske meg til jul? :D

...men innen den tid får dere nok høre mer gnåling fra meg.

Nei, jeg skal prøve å se litt på andre koder og lære av dem, og heller plage dere hvis det er noe jeg absolutt ikke forstår

 

Nå har jeg i alle fall noe å pusle med en stund...

Endret av Stroyer
Lenke til kommentar

det er det samme som cout, helt riktig, men om jeg husker riktig så 'flusher' det bufferen med en gang eller noe slikt. i hvertfall noe som gjør at det fungerer i 101% av tilfellene i stedet for 100% som cout fungerer... :D På vanlige console applications er det greit å bruke cerr

Lenke til kommentar
Daysleeper: hva er cerr? Ligner på cout, men hva nøyaktig er det?

Cerr er på en måte det samme som Cout. Men cerr brukes mer til error/feilmelidinger. Jeg mente at cerr bare sender text til skjermen, mens cout kan liksom "renge" ut ting o.s.v. ikke bare sende text...

Jeg vet ikke om det stemmer men jeg tror det :roll:

Lenke til kommentar

cerr skriver til standard error, mens cout skriver til standard ut. Dette gjør at du kan skille feilmeldinger fra vanlig output. Vet ikke om dette funker i cmd.exe (sannsynligvis), men i bash:

mitt_program 2> error_log

Her omdirigeres standard error til filen error_log, mens standard ut ennå vises på skjermen.

Lenke til kommentar

Jeg burde altså heller bruke

 cout <<

enn

 cerr <<

fordi cerr oppfattes av systemet som en feilmelding?

Er det forresten mulig å ha flere kommandoer (eller hva jeg nå skal kalle det) i en IF?

Sett at vi går ut fra dayslepers kalkuleringseksempel. Kan vi gjøre sånn at vi slipper starte programmet på nytt for å gjøre en ny utregning? Eller at vi f.eks. kan taste "tallbruk" for å få en oversikt over hvilke tall som var med i utregningen?

Lenke til kommentar

Systemet tar ikke på noen måte stilling til om det du skriver til de standard filene (standard ut/error) er feilmelding eller ikke, det er bare en konvensjon for å skille mellom typer av output. Kan være praktisk å dirigere feilmeldinger til en logg f.eks, eller man er kanskje bare interessert i feilmeldinger.

Lenke til kommentar

Stroyer det er mulig å ha flere komandoer i en if, men da må en ha det i en parantes.

 

if(1)//alltid true
{
 //Alt inn i  her kjøres
<kode>
}
else
{
<kode>
}

I dette eksemplet over vil koden bli kjørt hvis ifsettnigen blir kjørt

if(1)
 i++;//kjøres i if settning
i--;//kjøres alltid
else  //gir feilmelding
<noe kode>

Uten parantes kjøres bare den første settningen og det blir en else uten if hvis det er mer en en linje mellom.

Lenke til kommentar
Daysleeper: hva er cerr? Ligner på cout, men hva nøyaktig er det?

Cerr er på en måte det samme som Cout. Men cerr brukes mer til error/feilmelidinger. Jeg mente at cerr bare sender text til skjermen, mens cout kan liksom "renge" ut ting o.s.v. ikke bare sende text...

Jeg vet ikke om det stemmer men jeg tror det :roll:

cerr er vel mer som perror() i C?

Lenke til kommentar
Daysleeper: hva er cerr? Ligner på cout, men hva nøyaktig er det?

Cerr er på en måte det samme som Cout. Men cerr brukes mer til error/feilmelidinger. Jeg mente at cerr bare sender text til skjermen, mens cout kan liksom "renge" ut ting o.s.v. ikke bare sende text...

Jeg vet ikke om det stemmer men jeg tror det :roll:

cerr er vel mer som perror() i C?

Mer som fprintf(stderr, ...) vel.

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