Lektion 5 - Dynamiska språk (4/12)

Dynamiska språk är programmeringsspråk där programmeraren inte behöver bry sig så mycket om hur datorn arbetar, många saker hanteras automatiskt. Det gör att man kan koncentrera sig på den uppgift man ska lösa snarare än på hur datorn ska lösa den. Det finns mycket att läsa om dynamiska språk här.

Ruby skapades 1995 av japanen Yukihiro Matsumoto och är ett väldigt dynamiskt språk. Det finns många olika sätt att göra samma saker, mycket sker automagiskt i bakgrunden och man kan ändra på nästan vad som helst. I Ruby har man försökt att följa filosofin POLS (Principle Of Least Surprise), det vill säga om man förväntar sig att något ska gå att göra på ett visst sätt så ska det också vara så. När vi programmerar Ruby på laborationsservern behöver vi precis som i andra skript tala om vilket språk skriptet är skrivet i på första raden:

#!/usr/bin/ruby
Här följer ett exempel med variabler:
enVariabel = 5
enAnnanVariabel = "Hej svej"

Python är ett annat dynamiskt och ganska enkelt språk. Det första vi ska lära oss är att de två första raderna i våra program måste se ut såhär:

#!/usr/bin/python
# -*- coding: utf-8 -*-
Dessa två rader berättar dels hur datorn ska köra pythonprogrammet och med vilken teckenkodning vi skriver. Labbservern vi använder är inställd på en teckenkodning som heter UTF-8.

Det enklaste kommandot heter print. print skriver ut på skärmen. Om du skriver:

print "hej"
så skriver programmet ut hej. Märk väl att det finns dubbelfnuttar kring ordet hej. Det betyder att "hej" är en sträng. Skulle du glömma dubbelfnuttarna så skulle python börja leta efter en variabel som du kallat för hej.

Variabler gör du såhär:

enVariabel = 5
enAnnanVariabel = "Hej svej"
Här ser du två st variabler. En innehåller talet 5, den andra innehåller strängen "Hej svej". Svårare än så är det inte.

Funktioner gör du med kommandot def, såhär:

def minFunktion():
  print "hej"
Här kommer vi in på en jätteviktig sak i Python, mellanslag spelar roll! Du måste ha samma antal mellanslag innan saker som hänger ihop, alltså alla kommandon som hör till funktionen minFunktion måste ha minst två mellanslag före sig. Mellanslagen innan brukar man kalla för indentering. Gör du såhär:
def minFunktion():
  print "hej"
print "svej"
så är det något helt annat än om du skulle göra såhär:
def minFunktion():
  print "hej"
  print "svej"
I det andra fallet så gör funktionen två saker, den skriver först ut "hej" och sedan "svej". I det första fallet så gör funktionen bara en sak, sen skriver programmet ut "svej.". En viktigt sak att tänka på som man brukar glömma är att ha ett kolon efter varje funktionshuvud, och som du kommer märka nedan, även efter varje "if" och "for" m.m.

När du väl gjort en funktion, denna t.ex.:

def minFinaFunktion():
  print "hej"
  print "svej"
Då kan du kalla på funktionen senare i programmet såhär:
minFinaFunktion()
Om du vill att funktionen ska ta argument så kan det se ut såhär:
def minFinaFunktion(text,tal):
  print text
  print tal+3
sen kallar du på funktionen såhär:
minFinaFunktion("Här är lite text",10)
Denna funktion kommer då skriva ut texten och även skriva ut vad 10+3 är.

Tester gör du såhär:

def minFinaFunktion(tal):
  if tal == 5:
    print "Du skrev rätt tal!"
  else:
    print "fel tal!"
Om du nu kallar på funktionen:
minFinaFunktion(3)
så får du:
fel tal!
Loopar kan du göra såhär:
def minFinaFunktion(text):
  for bokstav in text:
    print bokstav
Som du ser ovan så fattar python att om du ger for en sträng så vill du nog loopa över bokstäverna. På samma sätt kan du loopa över varje rad på en fil och sedan loopa över varje bokstav på raden:
def minFinaFunktion(fil):
  for rad in fil:
    for bokstav in rad:
      print bokstav
För att använda funktionen ovan måste du också kunna öppna filer för läsning, det gör du såhär:
minFil = open("en_text_fil.txt","r")
Sen kan du använda din fina funktion såhär:
minFinaFunktion(minFil)
Pwei, nu har vi lärt oss lite python!

Här kan du kolla på dagens presentation.


Alla är på plats
Samling runt Arvids trasiga dator
Varm glögg!

_allmänt_ _nyheter_ _aktiviteter_ _kontakt_