3b
Kurs 3b Visa detaljer
2. Utskrifter och fel
Fortsätt till nästa lektion
Lektion
Övningar
Tester
Kapitel 7
2. 

Utskrifter och fel

Lektionen ger en introduktion till programmeringskoncept, med fokus på utskrift och felhantering. Den förklarar olika programmeringsspråk, med Python och C++ som exempel, och hur de används för att skriva ut text och siffror. Sidan täcker också programmeringsmiljöer, operatorer och användningen av funktionerna print() och format(). Olika exempel på kod ges, tillsammans med förklaringar av vanliga programmeringsfel, såsom syntaxfel, undantag och logiska fel. Innehållet är utformat för att hjälpa dem som är intresserade av att lära sig programmering, särskilt för matematisk problemlösning.
Visa mer expand_more
Begrepp Modellering Problemlösning Procedur Resonemang och Kommunikation
Inställningar & verktyg för lektion
11 sidor teori
8 Uppgifter - Nivå 1 - 3
Varje lektion är menad motsvara 1-2 lektioner i klassrummet.
Utskrifter och fel
Sida av 11
Programmering är ett brett ämne med mycket att lära sig. I Mathleaks är teorin och uppgifterna fokuserade på att lösa matematiska problem men metoderna och tankesätten är användbara för alla som vill lära sig programmera, t.ex. för att skapa hemsidor eller appar.

I den här lektionen går vi igenom följande begrepp:

  • Programmeringsspråk
  • Programmeringsmiljö
  • Testa miljön
  • Operator
  • Räkneoperatorer
  • Utskrifter
  • Format
  • Programmeringsfel
Teori

Programmeringsspråk

När man programmerar kallas instruktionerna man skriver till datorn för kod. På samma sätt som människor kommunicerar med varandra på olika språk finns många olika programmeringsspråk, och koden skrivs på olika sätt beroende på vilket man valt. Man säger att språken har olika syntax.

print('Korv')
std::cout << "Korv";
Det första exemplet är skrivet i språket Python, som t.ex. Mathleaks använder, och det andra i C++. De gör dock samma sak: skriver ut Korv på skärmen. Olika språk har olika fördelar och man väljer vilket man vill använda beroende på vad man ska programmera. Vissa är t.ex. mer lättlästa medan andra gör mer effektiva beräkningar.
Teori

Programmeringsmiljö

En programmeringsmiljö är det eller de program man använder för att skriva och testa kod. En sådan miljö kan hjälpa till genom att t.ex. peka ut fel i koden och färglägga delar för att göra koden lättare att läsa. Mathleaks har en egen programmeringsmiljö, men det finns fler alternativ för den som vill komma igång.
Teori

Testa miljön

Pröva som exempel att köra koden nedan genom att trycka på Redigera!-knappen. Du kan också öppna ett blankt kodfönster via knappen Verktyg uppe till höger. I så fall, eller om du använder en annan programmeringsmiljö än Mathleaks egen, får du kopiera eller skriva av koden nedan. Se till att koden är exakt likadan, annars är det inte säkert att det fungerar!

for tal in [1,2,3,4,5,6]: print(tal*2) if tal == 3: print('Halvvägs!')

Om du får ett felmeddelande, titta igenom koden och se till att den ser ut precis som ovan. Skulle problemet bestå kan det vara en god idé att testa en annan programmeringsmiljö. Om koden körs som den ska får man följande utskrift.

>
2
4
6
Halvvägs!
8
10
12

Om du inte förstår allt som händer i koden är det ingen fara. Det kommer att förklaras senare och för tillfället räcker det med att den fungerar. Men prova att ändra lite i koden för att se vad som händer. Fundera över frågorna nedan.

  • Vad tror du att de olika delarna i koden gör?
  • Kan du få programmet att skriva ut Startar! och Färdig på rätt ställen?
  • Försök att få programmet att skriva ut talen i kvadrat. Gör programmet vad du väntar dig?
Teori

Operator

Inom programmering är operatorer tecken som används för att representera olika saker man kan göra. T.ex. representerar operatorn + att man utför en addition och operatorn < att man gör en jämförelse. De värden man använder operatorn på kallas operander.

Programmering operator-c.svg
Teori

Räkneoperatorer

Inom matematik används operatorerna +, -, * och /. Dessa används också i programmering av precis samma skäl: för att addera, subtrahera, multiplicera och dividera tal. I programmering skrivs potenser med operatorn **, t.ex. 3**2 för På miniräknare används ^ för detta, men i Python används den operatorn till annat. När flera operatorer används avgör prioriteringsreglerna hur uttrycket ska tolkas:

2+8/5 betyder

(2+8)/5 betyder
Man måste alltså vara noga med hur man sätter ut parenteser för att datorn ska tolka uttrycken rätt.
Teori

Utskrifter

Programmering kan ses som kommunikation med datorn, och utskrifter är datorns svar tillbaka till användaren. Kommandot print() instruerar datorn att göra en utskrift, där man i parenteserna anger vad som ska skrivas ut. Det kan vara ett tal, en beräkning eller text. Men när man programmerar kallas det inte text utan strängar. Textsträngar måste markeras med apostrofer som i exemplet nedan.

print(17)
print(9 + 3)
print('Detta är text')
  • Visa resultat
>
17
12
Detta är text

När man använder flera printkommandon efter varandra på detta sätt hamnar utskrifterna på varsin rad. Om man vill att utskrifterna ska hamna på samma rad kan man skriva dem i samma printkommando separerade med komman.

print(17, 9 + 3, 'Detta är text')
  • Visa resultat
>
17 12 Detta är text

Om man skriver text utan apostrofer i ett printkommando kommer Python att tolka det som ett variabelnamn och det som skrivs ut är variabelns värde.

x = 3
print(x)
  • Visa resultat
>
3
Teori

Format

När man skriver ut en kombination av text och värden blir det ofta ganska krångligt om man bara använder funktionaliteten i print(). Då är funktionen format() användbar, som finns inbyggd i datatypen sträng. Man använder format() genom att sätta in klammerparenteser i sin sträng på de ställen där man vill sätta in värden. Sedan skriver man en punkt direkt efter den avslutande apostrofen, följt av format(). Inne i parentesen skriver man de värden som ska sättas in istället för klammerparenteserna, i den ordning de ska sättas ut.

x = 15
y = 37
print('Det första talet är {} och det andra är {}'.format(x, y))
  • Visa resultat
>
Det första talet är 15 och det andra är 37

De värden man sätter in behöver inte vara siffror utan kan exempelvis också vara andra strängar.

namn = 'Tindra'
print('Hej {}!'.format(namn))
  • Visa resultat
>
Hej Tindra!
Exempel

Skriv ut meddelandet

Skriv ett program som skriver ut Titta, text!

Svar

Exempelsvar

print('Titta, text!')

Ledtråd

Använd kommandot print().

Lösning

För att skriva ut något använder man kommandot print(), där parenteserna innehåller det man vill skriva ut. Vi vill skriva ut meddelandet Titta, text! så vi skriver in det innanför parentesen. För att Python ska förstå att det är en sträng, alltså text, sätter vi apostrofer runt meddelandet.

print('Titta, text!')

Kör man programmet får man följande utskrift.

>
Titta, text!
Teori

Programmeringsfel

Mycket kan gå fel när man programmerar och Python försöker identifiera dessa fel när programmet körs. Då får man ett felmeddelande som anger på vilken rad, och ibland även var på raden, felet uppstod. Programmeringsfel delas upp i tre huvudkategorier.

  • Syntaxfel: Koden kan inte läsas (Syntax error). Det innebär att man någonstans brutit mot syntaxen, dvs. språkreglerna, för det programmeringsspråk man använder.
print('Ena parentesen saknas!'
  • Visa resultat
> File "__main__", line 1 print('Ena parentesen saknas!' ^
SyntaxError: Unbalanced bracket (
  • Undantag: Koden kan läsas men inte köras (Exception). Den här kategorin innehåller väldigt många olika typer av fel. Exemplet nedan är ett Name error där variabelnamnet x används utan att det getts en betydelse någonstans, så Python vet inte hur det ska användas.
print(x)
  • Visa resultat
>
Traceback (most recent call last): File "python", line 1, in <module>
NameError: name 'x' is not defined
  • Logiska fel: Koden kan läsas och köras men gör inte det man vill. Logiska fel är den svåraste feltypen att upptäcka, eftersom koden ändå fungerar och inte ger något felmeddelande. Andra fel kan vara svåra att lösa, men de kommer åtminstone uppmärksammas automatiskt.
print(10^2)
  • Visa resultat
>
8
Här har man kanske försökt beräkna men råkat använda fel operator. Det görs ändå en beräkning, men den är fel eftersom potenser skrivs med operatorn **. Rätt sätt att skriva det är 10**2.
Exempel

Tolka felmeddelandet

Muriel har skrivit ett program men när hon kör det får hon ett felmeddelande. Kör koden, tolka felmeddelandet och hjälp Muriel att laga programmet.

print('Hej, jag heter Muriel!')
print('Vad heter du?')
print('Jag programmerar!')
print('Det är kul!)
print('Vad gör du?')

Svar

print('Hej, jag heter Muriel!')
print('Vad heter du?')
print('Jag programmerar!')
print('Det är kul!')
print('Vad gör du?')

Ledtråd

Text måste omges av apostrofer när print-kommandot används.

Lösning

Vi börjar med att köra koden för att se vilket felmeddelande vi får.

Traceback (most recent call last): File "python", line 4 print('Det är kul!) ^
SyntaxError: EOL while scanning string literal

SyntaxError betyder att vi har fått ett syntaxfel, alltså att det finns ett fel i hur koden är skriven. Tittar vi där det står File "python", line 4 ser vi att det är på rad som felet finns. På raden efter upprepas dessutom den rad där felet hittades.

print('Det är kul!)

Något har alltså gått fel när vi gör den utskriften. När man skriver ut text med kommandot print ska man omsluta texten med apostrofer. I utskriften där det blir fel finns en apostrof i början men inte i slutet. Vi måste alltså lägga till det saknade tecknet för att programmet ska fungera.

print('Hej, jag heter Muriel!')
print('Vad heter du?')
print('Jag programmerar!')
print('Det är kul!')
print('Vad gör du?')
  • Visa resultat
>
Hej, jag heter Muriel!
Vad heter du?
Jag programmerar!
Det är kul!
Vad gör du?

I det här fallet kan man faktiskt se att något är konstigt med koden redan innan man kört den. I koden har strängarna färgats gröna, men inte på rad Programmeringsmiljön förstår inte att man har skrivit en sträng så den färglägger den inte. Då kan man anta att något har blivit fel där och att det kan vara en god idé att undersöka vad.

Utskrifter och fel
Övningar