Göm meny
Gäller för: HT23

Temauppgift 1

Temauppgift 1 består av två delar som är utformade för täcka grunderna i hur man använder terminalen och skapar pythonprogram. För att lösa uppgifterna kommer du behöva söka efter information på nätet. Gör Temauppgift 1 innan du börjar med Pythonuppgifter 1.

Temauppgift 1 och Pythonuppgifter 1 görs individuellt

  • Del 1: Terminal och kommandon.
  • Del 2: Pythonprogram. Introduktion till hur man skriver och kör pythonfiler.

Redovisning, inlämning och kompletteringar (Tema 1-3)

  • På sidan Redovisning hittar du information om den muntliga redovisningen, samt hur du kompletterar om du missar ett redovisningstillfälle.
  • På sidan Inlämningar via Lisam hittar du information inlämning av kod m.m.
  • Ni får antingen Godkänt eller Komplettering ges på inlämningar som hör ihop med temauppgift 1-3. Vid Komplettering får ni instruktioner för vad som ska kompletteras. På Temauppgift 3, kan ni även få Väl godkänt.

Redovisningssalar

Bokstäverna A-J syftar på gruppen som ni anmälde er pargrupp till i Webreg.

  • SU00 Charlies grupper.
    • kl 10.15-11.00: A+D
    • kl 11.15-12.00: G+J
  • SU01 Max grupper.
    • kl 10.15-11.00: B+E
    • kl 11.15-12.00: H
  • SU02 Daniels grupper.
    • kl 10.15-11.00: C+F
    • kl 11.15-12.00: I

Att redovisa

Vid redovisningstillfället visar ni att ni gjort Del 1 och Del 2. Inför redovisningstillfället ska du förbereda dig så att du kan berätta/visa sedan kortfattat nedanstående punkter.

På redovisningarna är det du som redovisar som ska vara den aktiva parten och redovisa enligt checklistan. Läraren du redovisar för kommer inte leda dig genom redovisningen, men kan ställa följdfrågor kring det du redovisar.

  • Användning av terminalen:
    • kommandon och argument
    • se innehållet i kataloger och filer via terminalen
    • navigering mellan kataloger i terminalen
    • absoluta och relativa sökvägar (användning tillsammans med kommandon)
    • hur man ser fil- och katalogrättigheter
  • Textfiler och Visual Studio Code: öppna och redigera en textfil i Visual Studio Code

Del 1: Terminalanvändning, textfiler och texteditorer

Största delen av tiden du använder för denna temauppgift kommer att gå åt till att söka information om kommandon som du behöver använda för att genomföra uppgifterna.

I framtida temauppgifter kommer du behöva använda det du lär dig i denna temauppgift och efter att ha gjort denna temauppgift är det meningen att du ska kunna terminologin och kommandona du använt, samt veta hur du ska söka på webben för att hitta den information du behöver.

Söktips

I denna kurs använder vi LiUs Linux-miljö där Linuxdistributionen Ubuntu används. För att få bättre träffar när du söker information kan du därför lägga till ordet “linux” till din sökning. Andra ord som kan ge bättre resultat är “tutorial”, “guide”, “documentation”, “manual”, “beginner

I många instruktioner kommer ni stöta på instruktioner om att skriva något i terminalen och text i stil med

$ ls

Tecknet $ ska inte skrivas in utan är där för att visa att kommandot ska skrivas vid en interaktiv prompt.

Kommandohjälp i terminalen

I terminalen kan du använda kommandot man som visar manualsidor för kommandon. Skriv man följt av det kommando du vill se manualsidorna för. Om du t.ex. vill se manualsidorna för kommandot ls skriver du

$ man ls

För att avsluta visning av manualsidan trycker du på tangenten q på tangentbordet.

De flesta kommandon har en inbyggd hjälptext som man kommer åt genom att ange flaggan -h eller --help, t.ex.

$ man --help

Anmäl er i Webreg

För att kunna redovisa och lämna in laborationen måste ni anmält er pargrupp i Webreg. Det är via Webreg som era resultat kommer att rapporteras och ev. återkoppling fås också via Webreg.

Se sidan Grupper.

Även om ni kommer göra Temauppgift 1 och Pythonuppgifter 1 individuellt ska ni fortfarande anmäla er som pargrupper i momentet LAB1 i Webreg. Från Tema 2 kommer ni programmera i dessa par.

Instruktioner: Del 1

I Del 1 av temauppgiften kommer du göra följande

  1. Skapa en katalog i din hemkatalog.
  2. Kopiera en angiven fil från kurskatalogen till er skapade katalog.
  3. Döp om filen.
  4. Ändra rättigheter på filen så att den går att köra.
  5. Redigera filen.

All navigering och kopiering av filer ska göras i terminalen

I nedanstående instruktioner nämns olika användbara kommandon som du kan använda i terminalen (i skalet, inte i den interaktiva Python-tolken). Du ska vet vad alla kommandona gör och när de är användbara.

Uppdatering 2022-08-26: Det finns en tipssida för terminalen där du t.ex. hittar hur du bläddrar bland tidigare kommandon och använder autocomplete för att slippa manuellt skriva filnamn m.m.

Steg 1: Skapa en katalog i din hemkatalog

Öppna ett terminalfönster. Skapa sedan katalogen (synonym: mapp) 729G46 i din hemkatalog med underkatalogen temauppgift1 där du lägger de filer som du jobbar med i denna uppgift.

  • Användbara kommandon: ls, cd, mkdir, pwd
  • Relevant terminologi och notation: underkatalog, föräldrakatalog, /, .., ../, ./, ., ~, ~/, ../../

Att lära dig i detta steg

  • vad en absolut sökväg
  • vad en relativ sökväg är
  • kunna ange den absoluta och relativa sökvägen för vilken katalog eller fil som helst
  • förstå och kunna tillämpa terminologin och notationen ovan

Steg 2: Kopiera fil från kurskatalogen

I kurskatalogen (/courses/729G46) kan du hitta katalogen kursmaterial/temauppg1. I denna katalog finns olika filer i olika kataloger. Katalogernas och filernas namn har ingen betydelse för uppgiften. Din uppgift är att hitta den fil vars innehåll börjar med följande rader:

#!/bin/bash

# Rader som börjar med ett # tolkas som kommentarer

och slutar med följande rad:

# Du har nu hittat rätt fil.

Kopiera den filen till den katalog som du skapade i det tidigare steget.

Användbara kommandon: head, tail, cat, less, grep, cp

Att lära dig i detta steg

  • titta på innehållet i en fil från terminalen
  • kunna ange sökvägen till en fil att titta i som inte ligger i den katalog du står i
  • kunna kopiera en fil från en katalog (även en katalog som du inte står i) till vilken annan katalog som helst

Steg 3: Byt namn på filen

Döp om filen du kopierade till mitt_skript.sh. I Unix finns det inget “döp om”-kommando utan man använder kommandot mv, som även används för att flytta filer och kataloger.

Att lära dig i detta steg

  • kunna flytta/döpa om en fil från en katalog (även en katalog som du inte står i) till vilken annan katalog som helst

Steg 4: Filrättigheter

Efter att du döpt om filen, prova att skriva namnet på filen som ett kommando i terminalprompten och se vad som händer, dvs

$ mitt_skript.sh

Prova sedan att skriva

$ ./mitt_skript.sh

Vad händer nu?

I ett vanligt Linux-system brukar filer inte vara exekverbara. Att en fil är exekverbar betyder att användaren har rätta att köra den (som ett kommando). Den lösning för fillager som vi har idag på LiU har dock konsekvensen att alla filer är körbara. För att kunna köra filen och använda den som ett kommando behöver du ha exekveringsrättigheter till den.

  • Ta reda på hur du kan använda kommandot ls för att se vilka filrättigheter som gäller för en fil.
  • Ta reda på hur du använder kommandot chmod för att ta bort dina egna rättigheter att köra filen mitt_skript.sh och gör det.
  • Ta reda på hur du använder kommandot chmod för att ta bort dina egna läsrättigheter till mitt_skript.sh. Gör det och försök att visa innehållet i filen i terminalen.

Steg 5: Redigera mitt_skript.sh i VSCode

Det finns många olika texteditorer och de har alla för- och nackdelar. I denna kurs rekommenderar vi att du använder dig av texteditorn Visual Studio Code (kommer även benämnas VSCode).

Efter att ha gjort lektionsövningarna bör du redan ha startat och använt VSCode. Du kan hitta mer information om VSCode via kursens Tips-sida.

Starta en VSCode och öppna sedan filen du kopierade och bytte namn på och följ instruktionerna i filen.

Del 2: Python

Nu när du kan köra kommandon i terminalen, kopiera och redigera filer, så är du redo att skriva pythonkod. Målet med denna del är att du ska få bekanta dig med att köra och testa pythonkod. Själva uppgifterna som ska genomföras är väldigt enkla, och kommer med några övningsfrågor som ska hjälpa er tänka på underliggande koncept, och vara ledande i att resonera och experimentera med kod.

Efter att du gjort de nedanstående övningarna kan du börja med Pythonuppgifter 1!

Steg 1: Hello world!

En pythonfil är textfil med pythonkod och filändelsen .py. Spara följande text i en fil och döp den till hello.py.

def say_hello():
    print("Hello world!")

x = 5
def mult():
    y = 3
    return x * y

say_hello()

Kör filen genom att skriva python3 hello.py i terminalen. Detta bör skriva ut strängen Hello world! i terminalen.

Övningsfrågor

  • Vad är say_hello för något?
  • Vad gör sista raden? Vad gör programmet om ni tar bort den? Vad händer om ni skriver den en gång till, och varför?
  • Prova ändra ordet print till return i say_hello. Vad innebär detta? Vad mer behöver ni ändra för att programmet ska skriva ut rätt?
  • Vilka andra delar av koden går att ändra utan att programmet krashar?

Steg 2: Interaktiv tolk

Ett annat sätt att köra pythonkod på är att använda en s.k. interaktiv tolk. Skriv bara python3 i terminalen så kommer ni in i pythons interaktiva läge. Här tolkas varje rad som pythonkod skilt för sig.

Testa skriva olika pythonuttryck i tolken och notera vad som händer. Några exempel:

  • 5 + 3
  • print("hello")
  • x = 2
  • print(x)
  • x

Experimentera och testa så många olika saker som ni kan komma på. När ni är klara, avsluta tolken genom att trycka Ctrl + D eller skriv quit(). Det finns även en alternativ variant av tolken, ipython3, som fungerar som standardtolken, men med en del extra funktionalitet för att den ska vara smidigare att använda. Öppna ipython3 och testa skriva liknande uttryck som ni gjorde i standardtolken. Vilka skillnader kan ni se mellan tolkarna?

Det går även att köra filer interaktivt. Kör filen ni sparade tidigare med python3 -i hello.py eller ipython3 -i hello.py.

Här har ni tillgång till det som definierats i filen. Utan att lämna detta interaktiva läge, ta reda på följande:

  • Resultatet av att kalla på mult-funktionen.
  • Värdet på x och y. Är det någon skillnad mellan hur variablerna beter sig?
  • Tilldela x ett annat värde och kalla på mult igen. Har resultatet ändrats? Gör detsamma med y.
  • Definiera en ny funktion för att addera två värden.
  • Redigera filen för att ge y ett nytt värde. Påverkar detta resultatet av mult?
  • Avsluta tolken och starta upp den igen. Vad har ändrats? T.ex vad har x och y för värde? Finns er nya funktion fortfarande?
  • Kör följande uttryck och försök förutspå vad som kommer att hända (De kan ge felmeddelanden!):
    • x = mult()
    • x = mult() + 5
    • x = "hej"
    • mult()
    • mult = "hej"
    • mult()
    • help(print) (tryck q för att komma ur detta läge)
    • help(mult)

Övningsfråga: Försök komma på de bästa förklaringarna ni kan på varför övningarna ovan beter sig som de gör. Det är inte nödvändigt att ni har perfekta förklaringar på allt, då vissa av övningarna rör koncept som kommer in senare i kursen. Om det är någon del ni har svårt att förstå, skriv egen kod och egna uttryck där ni byter namn och plats på delarna, och se om ni kan klura ut det.

Tips: Använd den interaktiva tolken för att snabbt och smidigt testa koddetaljer ni är osäkra på.

Du är nu redo för Pythonuppgifter 1!


Sidansvarig: Johan Falkenjack
Senast uppdaterad: 2023-08-30