Datalogikurser världen över är mycket lika varandra. Innehållet är i huvudsak det här.
När och hur tentamen ska vara får kursdeltagarna bestämma om några veckor. Bland förslagen finns
python kör igång ett system
som direktexekverar pythonrader.
>>> 17*666+4711 16033 >>> utrop="Aj" >>> utrop*9 'AjAjAjAjAjAjAjAjAj'
//Detta är filen Radianer.java
import java.io.*;
class Radianer {
public static void main(String args){
BufferedReader in = new BufferedReader(
new InputStreamReader(System.in));
System.out.print("Antal grader: ");
try {
String rad = in.readLine();
int grader = Integer.parseInt(rad);
double radianer = grader*Math.PI/180;
System.out.println(radianer+"radianer");
}
catch(Exception e){
System.err.println("Inget heltal!");
}
}
}
Och här har vi motsvarande pythonprogram.
"Detta är filen radianer.py"
from math import pi
grader=input("Antal grader:")
radianer=grader*pi/180
print radianer,"radianer"
Pythonprogrammet körs med python radianer.py. Det
behövs ingen separat kompilering motsvarande javac Radianer.java.
Java använder klasser även när programmet inte skapar några objekt, men i Python definierar man en klass bara när man tänker skapa objekt. Det tas upp nästa vecka.
Din längd (cm):188 Din vikt (kg):80 Banta 2 kg!Det ger oss anledning att skriva en if-sats i Python. Kommentarer går från brädhögstecknet till radens slut
"Detta är filen banta.py" #Dokumentationstext (frivillig)
langd=input("Din längd (cm):") #Inga åäö i variabelnamn
idealet=langd-110
vikt=input("Din vikt (kg):")
if vikt>idealt: #Kolon efter if,while,for,def
print "Banta",vikt-idealet,"kg!" #Indragna rader fixar Emacs
elif vikt<idealet: #Else-if skrivs elif
print "Lägg på dej",idealet-vikt,"kg!"
else: #Även kolon efter else
print "Du har idealvikt!"
Själva algoritmen kan uppfattas som en funktion från längder
till vikter, och den funktionen kan vi skriva så här.
def idealvikt(langd):
return langd-110
Om funktionen definieras i samma fil kan den anropas så här.
idealet=idealvikt(langd)Om funktionen finns i en egen fil
formler.py måste den importeras.
"Detta är fortfarande filen banta.py"
from formler import idealvikt #from formler import * går också
langd=input("Din längd (cm):")
idealet=idealvikt(langd)
- - -
year.py
"Nyttiga funktioner av årtalet"
def days(year):
"Kollar skottår" #Dokumentationstext får finnas här
if year%4!=0: #y%4 är resten när y delas med fyra
return 365 #Vanliga ickeskottår
if year%100!=0: #Vanliga skottår
return 366
if (year%400)==0: #År av typen 2000
return 366
return 366 #År av typen 1900
Om vi i huvudprogrammet vill tabellera funktionen behövs en for-slinga.
"Tabellerar dagantalet för åren 1900...2000"
from year import days
for year in range(1900,2001): #Övre gränsen kommer inte med
print year,days(year) #1900 365 (det blir en snygg tabell)
Om slingan ska starta från noll räcker range(2001),
om den ska hoppa fram med steget fem skrivs det range(1900,2001,5).
Men man kan också genomlöpa vilken lista som helst:
for x in [17,666,4711]: print x*x for y in "rdtls": print y+"imma"
y=0 y=y*x+2 y=y*x+3 y=y*x-5I filen
poly.py programmerar vi detta så här
def polyval(p,x):
"Polynomvärdesberäkning enligt Horner"
y=1
for c in p:
y=x*y+c
return y
def polytab(p,start,slut,steg=1): #Om inte steg anges i anropet blir det 1
"Tabellerar polynomvärden"
x=start
while x<=slut:
print x,polyval(p,x)
x=x+steg #Kan också skrivas x+=steg
Huvudprogrammet tillverkar en vektor med polynomets koefficienter
och skickar med den i anropet.
from poly import polytab pol=[2,3,-5] polytab(pol, 0, 1, 0.1) #Tabell för x = 0.0, 0.1,..., 1.0 print "--------------------" #Eller print "-"*20 polytab(pol, 0, 5) #Tabell för x = 0, 1, 2, 3, 4, 5I snygga tabeller vill man kunna kräva exempelvis högerjusterad utskrift i ett fält med bredden 10. Det finns förstås metoder för det.
x=0.1 #Ett tal som vi vill skriva ut snyggt tal=str(0.1) #Talet görs först om till textsträng print "Tal:",tal.rjust(10) #Tal: 0.1 print "Tal:",str(x).rjust(10) #Kan göras i samma sats