F1-F2
Table of Contents
1 Genomgång av kursPM
2 Genomgång av p1
unixkommandon, terminal, editor
Hur man skriver ett pythonprogram respektive ett C-program.
python
print("hej alla")
C
#include <stdio.h> int main() { printf("hej alla\n"); }
3 Genomgång av p2
3.1 förberedelseuppgifter
ssh, scp, winscp
3.2 interaktiv pythonprogrammering
> python3 >>> s = "sommarlov"
4 Repetition programmering
4.1 Tilldelning
Exempel
a = 2 b = a b = 3 print(a, b)
a och b får olika lådor, då b ändras till 3 så förblir a 2
v1 = [1, 3, 5] v2 = v1 v2[1] = 8 print(v1, v2)
v1 och v2 pekar på samma minne. När v2 ändras så ändras även v1. v1 och v2 är en sammansatt datatyp, ett variabelnamn men flera värden. I det här fallet en lista/vektor
Låt oss se hur minnet ser ut när koden ovan exekveras http://www.pythontutor.com/visualize.html Links to an external site.
4.2 villkor, if-satser
Exempel
if a > 2: print("a är större än 2")
if-satsen slutar med ett : och påföljande rader indenteras (dras in) när indenteringen slutar är satsen klar. Samma gäller för loopar.
4.3 loopar/slingor, for-loopar, while
Exempel
i = 0 while i < 3: print(i) i += 3
i är en räknare som uppdateras i slingan.
sifferlista = [1, 4, 5, 8] for siffra in sifferlista: print(siffra)
siffra antar varje värde i listan
sifferlista = [1, 4, 5, 8] for i, siffra in enumerate(sifferlista): print(i, siffra)
med enumerate kan man få en räknare
I C kan man enbart loopa med en räknare
#include <stdio.h> int main() { int sifferlista[] = {1, 4, 5, 8}; for (int i = 0; i < 4; i++) printf("%d %d \n", i, sifferlista[i]); }
4.4 Spårutskrifter
Använd spårutskrifter för att se vad variabler har för värden och för att kunna följa och förstå vad som händer i programmet. En spårutskrift är en print-sats där man typiskt skriver VAR i programmet utskriften är och därefter en eller flera variabelvärden
Exempel
print("före IF x = ", x, " y = ", y) if x > 0 and y < 0: x = 1 - y elsif x > 0 and y > 1: y = x + 1 print("efter IF x = ", x, " y = ", y)
Spårutskrifter används i industring som logutskrifter i logfiler för att kunna spåra händelser.
4.5 Funktionsanrop
Kod kan stoppas in i en funktion. En funktion kan ha flera parametrar men kan bara returnera en variabel.
Exempel på en funktionsdeklaration
def farhToCelcius(graderF): return (graderF - 32) * 5 / 9
def står för define. Parametrarna innanför parentes och därefter :
En parameter kan både vara en inparameter och om det är en sammansatt datatyp
Exempel:
def fyllListaMedEttor(ettlista): i = 0 while i < len(ettlista): ettlista[i] = 1
4.6 Funktionskommentarer
En funktionskommentar ska innehålla tre saker.
- En beskrivning av parametrarna som skickas IN till funktionen.
- Vad som returneras (UT) av funktionen
- Intentionen av vad funktionen GÖR
Under kursen kan även inmatning från fil eller från användare räknas som IN och utskrifter räknas till UT.
Funktionskommmentarer skrivs normalt före funktionsdeklarationen.
Så här kan det se ut
############################################################# # # Funktionen konverterar grader fahrenheit till grader celcius # # IN # graderF - ett decimaltal med grader mät i Fahrenheit # UT # ett decimaltal som anger grader celcius # def farhToCelcius(graderF): return (graderF - 32) * 5 / 9
Språket python avviker från andra programmeringsspråk då man normalt kommenterar funktionen efter funktionsdeklarationen i en doc-sträng. Detta kommer vi gå igenom senare i kursen.
funktionen anropas genom att skriva funktionens namn
x = fahrToCelcius(56.4) print(x)
4.7 Programmeringsteknik repetition
4.7.1 Användarvänligt
4.7.2 Lättförståelig kod som är lätt att underhålla
Det är viktigt med bra, intuitiva variabelnamn
Kodupprepning uppkommer ofta när man klipper och klistrar i kod. Koden blir stor och kan vara svår att underhålla. T.ex. kan det finnas en bug som man rättar på ett ställe men inte på övriga ställen koden upprepas. Man åtgärdar kodupprepning genom att parametrisera koden och flytta koden till en funktion som man anropar upprepade gånger. Om det är en bugg i koden så behöver man bara rätta på ett ställe (i funktionen)
Hårdkodning undviker man genom att stoppa värden i variabler. Undantag är värden som betyder något, t.ex. 0 och 1 och för mekatronik 255 (8 ettor).
Det räcker inte med att använda variabler för att undvika hårdkodning, för att göra programmet oberoende av värdena måste programmet antingen läsa värdena från fill eller skickas med som kommandoargument när man startar programmet.
Exempel på kommandoradsargument.
python3 konverteragrader.py F 34
Kommandoradsargumenten kommer in i en lista som man når om man importerar sys-paketet Då finns argumenten i listan sys.argv. Första elementet i listan är programnamnet.
import sys print("Välkommen till temperaturprogramet", sys.argv[0]) if sys.argv[1] == 'F': grader = sys.argv[2] print(fahrToCelcius(grader))