Använd vänsterpil och högerpil för att navigera

Eller Ctrl+P för att skriva ut till PDF (eller på papper)

Sammanfattning av förra veckan

Vilka var de viktigaste lärdomarna?

Likheter/skillnader mellan lektion 1 och 2

  1. // uttryck med operatorer
  2. bool x = a && b && c;
  3. // selektion med mutation
  4. bool x = false;
  5. if (a) {
  6. if (b) {
  7. if (c) {
  8. x = true;
  9. }
  10. }
  11. }

Ett annat likvärdigt exempel

  1. // uttryck med operatorer
  2. bool x = !a || b;
  3. // selektion med mutation
  4. bool x;
  5. if (a) {
  6. x = b;
  7. }
  8. else {
  9. x = !a;
  10. }

Övrigt

Lektion 3

Iteration

Summera alla tal från 1 till 3

  1. int sum = 1 + 2 + 3;

Summera alla tal upp till en godtycklig gräns

  1. // indata
  2. int max = ...;
  3. // beräkning
  4. int sum = ...?

Vad vi vill göra

  1. // indata
  2. int max = ...;
  3. // beräkning
  4. int sum = 1;
  5. sum += 2;
  6. sum += 3;
  7. ...
  8. sum += max;

Pseudokod

  1. max = ...
  2. sum = 1
  3. för varje tal mellan 1 och max {
  4. lägg till talet till sum
  5. }

While-sats

  1. bool condition = ...;
  2. while (condition) {
  3. ...
  4. }

Sant villkor

  1. bool condition = true;
  2. while (condition) {
  3. // Hur många gånger körs detta?
  4. }

Falskt villkor

  1. bool condition = false;
  2. while (condition) {
  3. // Hur många gånger körs detta?
  4. }

Villkor med mutation

  1. bool condition = true;
  2. while (condition) {
  3. // Hur många gånger körs detta?
  4. condition = false;
  5. }

Villkorligt slut

  1. bool condition = true;
  2. while (condition) {
  3. if (...) {
  4. condition = false;
  5. }
  6. }

Slut när vi når sista talet

  1. int max = ...;
  2. bool condition = true;
  3. while (condition) {
  4. if (... == max) {
  5. condition = false;
  6. }
  7. }

Räkna upp till sista talet

  1. int max = ...;
  2. int counter = 1;
  3. bool condition = true;
  4. while (condition) {
  5. counter += 1;
  6. if (counter == max) {
  7. condition = false;
  8. }
  9. }

Gör något med talen

  1. int max = ...;
  2. int counter = 1;
  3. int sum = 0;
  4. bool condition = true;
  5. while (condition) {
  6. sum += counter;
  7. counter += 1;
  8. if (counter == max) {
  9. condition = false;
  10. }
  11. }

Utnyttja loopvillkoret

  1. int max = ...;
  2. int counter = 1;
  3. int sum = 0;
  4. while (counter != max) {
  5. sum += counter;
  6. counter += 1;
  7. }

Hantera sista talet

  1. int max = ...;
  2. int counter = 1;
  3. int sum = 0;
  4. while (counter <= max) {
  5. sum += counter;
  6. counter += 1;
  7. }

Vanligt mönster för loopar

  1. // pseudokod
  2. skapa ett heltal
  3. medan heltalet är lägre än en gräns {
  4. utför någon beräkning
  5. öka heltalet
  6. }

For-loop

  1. // while-loop
  2. int max = ...;
  3. int i = 1;
  4. while (i <= max) {
  5. // beräkning
  6. i += 1;
  7. }
  8. // for-loop
  9. for (int i = 1; i <= max; i += 1) {
  10. // beräkning
  11. }

Omvänd loop

  1. int max = ...;
  2. for (int i = max; i >= 1; i -= 1) {
  3. // beräkning
  4. }

Annat än increment/decrement

  1. int max = ...;
  2. for (int i = 1; i <= max; i = i * 2) {
  3. // beräkning
  4. }

Loop inuti loop (nästlad)

  1. int iMax = ...;
  2. int jMax = ...;
  3. for (int i = 1; i <= iMax; i += 1) {
  4. for (int j = 1; j <= jMax; j += 1) {
  5. // Hur många gånger körs detta?
  6. }
  7. }

While-loop eller for-loop?

Dagens övningar