DD1320/DD1325 Tillämpad Datalogi

Introduktion till kursen

Kursen och formalia




Forum för nyheter, diskussioner och frågor är KTH Social.

För att få tillgång till nyheter, diskussioner och frågor gå till länken ovanför och prenumerera på er kursomgång.

Kursansvariga studenter sökes!
Gärna en per program/inriktning. Anmäl dig bums till Linda.

Datalogikurser världen över är mycket lika varandra. Innehållet är i huvudsak det här.

Läranvisningar

För varje datastruktur och algoritm gäller det att kunna:



Preliminär plan över föreläsningarna

På föreläsningarna går vi igenom algoritmer och datastrukturer.
På övningarna övar vi problemlösning (som på tentan).
På labbarna implementerar ni datastrukturer och algoritmer.
Labbarna görs helst i grupper om två. Tips: prova parprogrammering.

Algoritmer

En beskrivning, i ett ändligt antal steg, av hur man löser ett givet problem.

Exempel:
Skriv en algoritm för att läsa in gps-data för platser på island: island.txt från en fil och lagra dom i en lista.
Platserna är i filen ordnade med sydligast latitud först, men i listan vill vi att dom ska ligga i ordning från nordligaste till sydligaste.

Algoritm 1

  1. öppna filen
  2. läs in rubrikraden
  3. läs in första deltagaren
  4. lagra deltagaren i en lista
  5. upprepa punkt 3 och 4 tills alla rader i filen lästs in
  6. vänd listan
infil = open("island.txt","r",encoding = "utf8")
  rubrikrad = infil.readline()
  lista = []
  while rad != "":
    rad = infil.readline()
    lista.append(rad)
  lista.reverse()
  print(len(lista))
close(infil)

Algoritm 2

Här är en annan algoritm för samma problem:
  1. öppna filen
  2. läs in rubrikraden
  3. läs in första deltagaren
  4. lägg deltagaren först i listan
  5. upprepa punkt 3 och 4 tills alla rader i filen lästs in
  6. nu är listan vänd!
infil = open("island.txt","r",encoding = "utf8")
  rubrikrad = infil.readline()
  lista = []
  for rad in infil:
    rad = infil.readline()
    lista.insert(0,rad)
print(len(lista))
close(infil)

Datastrukturer

En datastruktur är till för att lagra data (som en variabel), men med plats för flera värden. Exempel som du sett: I den här kursen ska vi titta på datastrukturena:

Abstraktion

Anta att vi vill skriva ett kalenderprogram.
Data: Olika typer av händelser kopplade till datum och tid.

Exempel på operationer:
find_events(start_date, end_date)
add_appointment( parametrar? )
delete_item( parametrar? )

Man behöver inte veta exakt hur data lagras för att använda operationerna.

Likadant i Python - vi vet inte hur strängar, listor och uppslagslistor är definierade, ändå kan vi använda dom. Det här är ett exempel på abstraktion. Om implementationen av listans metoder ändras (i en ny Python-version) behöver vi inte bekymra oss, alla våra program som använder listor fungerar ändå. Vi använder listan som en abstrakt datastruktur.