+ - 0:00:00
Notes for current slide
Notes for next slide

Grundläggande programmering (1DV021)

Föreläsning 2

1 / 18

Upphovsrätt för detta verk

Detta verk är framtaget av Mats Loock i anslutning till kursen Grundläggande programmering (1DV021) vid Linnéuniversitetet.

Allt innehåll i detta verk förutom fotografier, ikoner, bild på kurslitteraturen samt Linnéuniversitetets logotyp och symbol, är licensierad under en Creative Commons-licens Creative Commons Erkännande 4.0 Internationell Licens .

Du får använda detta verk så här

  • kopiera hela eller delar av innehållet
  • sprida hela eller delar av innehållet
  • visa hela eller delar av innehållet offentligt och digitalt
  • konvertera innehållet till annat format
  • du får även göra om innehållet

Om du förändrar innehållet så ta inte med fotografier, ikoner, bild på kurslitteraturen samt Linnéuniversitetets logotyp och symbol i din nya version!

Vid all användning måste du ange källan: ”Linnéuniversitetet – Grundläggande programmering (1DV021)” och en länk till https://coursepress.lnu.se/kurs/grundlaggande-programmering och till Creative Common-licensen här ovan.

2 / 18

Kontrollstrukturer

Kontrollstrukturer är grundläggande verktyg vid programmering.

  • Sekvens
    • En följd satser som måste utföras efter varandra.
  • Selektion
  • Iteration
    • Ett sätt att upprepa en sats ingen eller flera gånger.
    • while-satsen, do...while-satsen, for-satsen.
  • Rekursion
    • En funktion som anropar sig själv. (Mer om detta längre fram i kursen.)
3 / 18

Kontrollstrukturer

Kontrollstrukturer är grundläggande verktyg vid programmering.

  • Sekvens
    • En följd satser som måste utföras efter varandra.
  • Selektion
  • Iteration
    • Ett sätt att upprepa en sats ingen eller flera gånger.
    • while-satsen, do...while-satsen, for-satsen.
  • Rekursion
    • En funktion som anropar sig själv. (Mer om detta längre fram i kursen.)

Sekvens

  • En sekvens är en följd av instruktioner.
Instruktion 1
Instruktion 2
Instruktion 3
Instruktion 4
  • Den enklast möjliga kontrollstrukturen, men då en instruktion kan innehålla andra kontrollstrukturer kan det bli komplicerat.
4 / 18

Selektion

  • Enkelt val (if-satsen)
    OM villkor uppfyllt
    Instruktion(er)
  • Tvåvägsval (if...else-satsen)
    OM villkor uppfyllt
    Alternativ 1
    ANNARS
    Alternativ 2
  • Flervägsval (if...else if...else-satsen, switch-satsen)
OM villkor uppfyllt
Alternativ 1
ANNARS OM villkor uppfyllt
Alternativ 2
ANNARS OM villkor uppfyllt
Alternativ 3
ANNARS
VÄLJ fall ur
Fall 1: Alternativ 1
Fall 2: Alternativ 2
.
.
.
Annars: Alternativ n
5 / 18

if-satsen

if (villkorsuttryck) {
sats(er) // Omslut alltid satsen/satserna mellan klammerparenteser.
} // (Behövs inte om det bara är en sats, men gör det alltid ändå.)
  • Om villkorsuttrycket är true utförs en eller flera satser omslutna mellan klammerparenteserna, if-satsens kropp.
  • Villkorsuttrycket är ett uttryck som resulterar i något som Javascript betraktar som true eller false.
let number = 42
if (number === 0) {
console.log('Talet är lika med 0.')
}
6 / 18

if...else-satsen

if (villkorsuttryck) {
sats(er)1
} else {
sats(er)2
}
  • Endast ett av alternativen kommer att utföras.
  • Är villkorsuttrycket...
    • ...true utförs en eller flera satser som följer direkt efter villkorsuttrycket.
    • ...false utförs en eller flera satser som följer direkt efter else.
let number = 42
if (number % 2 === 0) {
console.log('Talet är jämt.')
} else {
console.log('Talet är udda.')
}
7 / 18

if...else if...else-satsen

if (villkorsuttryck1) {
sats(er)1
} else if (villkorsuttryck2) {
sats(er)2
} else if (villkorsuttryck3) {
sats(er)3
} else {
sats(er)4
}
  • Villkorsuttryckens värde bestäms till och med det första som blir true.
  • Avslutande else kan uteslutas.
let number = 42
if (number < 0) {
console.log('Talet är mindre än 0.')
} else if (number < 50) {
console.log('Talet är större än 0 men mindre än 50.')
} else {
console.log('Talet är större än, eller lika med, 50.')
}
// OUTPUT: Talet är större än 0 men mindre än 50.
8 / 18

switch-satsen

let number = 4
switch (number) {
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
console.log('För litet!')
break
case 7:
console.log('Rätt gissat')
break
case 8:
case 9:
case 10:
console.log('För stort!')
break
default:
console.log(number + ' är inte i det slutna intervallet mellan 1 och 10.')
break
}
// OUTPUT: För litet!
9 / 18

Villkorsoperatorn

  • En vanlig if...else-sats kan (ibland lämpligen) uttryckas...
let number = 42
let output = 'Talet är '
if (number % 2 === 0) {
output += 'jämt.'
} else {
output += 'udda.'
}
console.log(output)
// OUTPUT: Talet är jämt.
  • ...med hjälp av villkorsoperatorn ?:.
let number = 42
let output = 'Talet är '
output += number % 2 === 0 ? 'jämt.' : 'udda.'
console.log(output)
// OUTPUT: Talet är jämt.
10 / 18

Iteration

  • Förtestad upprepning (while-satsen)
    • Loopen körs ingen, en eller flera gånger.
SÅ LÄNGE villkor uppfyllt
Instruktion(er)
  • Eftertestad upprepning (do...while-satsen)
    • Loopen körs minst en gång.
REPETERA
Instruktion(er)
SÅ LÄNGE villkor uppfyllt
  • Bestämd upprepning (for-satsen)
    • Loopen körs ingen, en eller flera gånger.
initiera räknare
SÅ LÄNGE räknarvillkor uppfyllt
Instruktion(er)
uppdatera räknare
11 / 18

while-satsen

while (villkorsuttryck) {
sats(er) // Omslut alltid satsen/satserna mellan klammerparenteser.
} // (Behövs inte om det bara är en sats, men gör det alltid ändå.)
  • Så länge som villkorsuttrycket utvärderas till true utförs satserna i loopens kropp.
let sum = 0
while (sum < 500) {
sum = sum + 42
}
console.log(sum)
// OUTPUT: 504
12 / 18

do...while-satsen

do {
sats(er) // Omslut alltid satsen/satserna mellan klammerparenteser.
} while (villkorsuttryck)
  • Så länge som villkorsuttrycket utvärderas till true fortsätter satserna i loopens kropp att upprepas.
let i = 10
do {
console.log(i + ' ')
i++
} while (i < 10)
// OUTPUT: 10
  • I exemplet ovan utförs satserna i loopens kropp en gång trots att villkorsuttrycket är false.
13 / 18

for-satsen

for (initiering räknare; villkorsuttryck; uppdatering räknare) {
sats(er) // Omslut alltid satsen/satserna mellan klammerparenteser.
}
  • En for-sats är ett annat sätt att uttrycka en while-sats.
    1. initiering räknare.
    2. villkorsuttryck
    3. sats(er)
    4. uppdatering räknare (gå till punkt 2)
let output = ''
for (let i = 0; i < 10; i++) {
output += i + ' '
}
console.log(output)
// OUTPUT: 0 1 2 3 4 5 6 7 8 9
14 / 18

Avbryta en loop

  • break-satsen avbryter en loop.
let output = ''
for (let i = 0; i < 10; i++) {
if (i === 4) {
break
}
output += i + ' '
}
console.log(output)
// OUTPUT: 0 1 2 3
15 / 18

Gå till nästa iteration av en loop

  • continue-satsen avslutar aktuell iteration av loopen och påbörjar nästa iteration i loopen.
let output = ''
for (let i = 0; i < 10; i++) {
if (i % 3 === 0) { // 3, 6 och 9 jämt delbart med 3
continue
}
output += `${i} ` // en "template literal",
// ger samma resultat som uttrycket output = i + ' '
}
console.log(output)
// OUTPUT: 1 2 4 5 7 8

(Anses av vissa att vara "bad practice" att använda. Kod kan i regel skrivas så att continue-satsen inte behöver användas.)

16 / 18

Kommentarer

  • Kod säger inte allt. För att beskriva vad kod gör kan kommentarer användas.
  • Kommentarer är VIKTIGT att skriva.
    • Ska stå på helt egna rader med en tomrad raden ovan i enlighet med kursens kodstandard.
  • Det finns olika typer av kommentarer.
let product = 1
// Radkommentarer går till slutet av raden.
for (let i = 3; i < 100; i += 2) {
product *= i
}
/* Blockkommentarer där allt mellan start och slut
betraktas som en kommentar. */
console.log(product)
/**
* (Dokumentationskommentarer (JSDOC).)
* Returns a string where all...
*
* @param {string} str The string being...
* @returns {string} A new string with...
*/
let foo = function(data) {
// do something with data to create some new data...
return newData
}
17 / 18

lnu-symbol

18 / 18

Upphovsrätt för detta verk

Detta verk är framtaget av Mats Loock i anslutning till kursen Grundläggande programmering (1DV021) vid Linnéuniversitetet.

Allt innehåll i detta verk förutom fotografier, ikoner, bild på kurslitteraturen samt Linnéuniversitetets logotyp och symbol, är licensierad under en Creative Commons-licens Creative Commons Erkännande 4.0 Internationell Licens .

Du får använda detta verk så här

  • kopiera hela eller delar av innehållet
  • sprida hela eller delar av innehållet
  • visa hela eller delar av innehållet offentligt och digitalt
  • konvertera innehållet till annat format
  • du får även göra om innehållet

Om du förändrar innehållet så ta inte med fotografier, ikoner, bild på kurslitteraturen samt Linnéuniversitetets logotyp och symbol i din nya version!

Vid all användning måste du ange källan: ”Linnéuniversitetet – Grundläggande programmering (1DV021)” och en länk till https://coursepress.lnu.se/kurs/grundlaggande-programmering och till Creative Common-licensen här ovan.

2 / 18
Paused

Help

Keyboard shortcuts

, , Pg Up, k Go to previous slide
, , Pg Dn, Space, j Go to next slide
Home Go to first slide
End Go to last slide
Number + Return Go to specific slide
b / m / f Toggle blackout / mirrored / fullscreen mode
c Clone slideshow
p Toggle presenter mode
t Restart the presentation timer
?, h Toggle this help
Esc Back to slideshow