Datalogilaboration 2 - Språk

Varning: den här laborationen är mycket omfattande, och man måste ha löst dom flesta problemen i förväg om man ska hinna klart under labbpasset. När du är klar med labben och redovisat labben försök en signatur av handledaren du redovisat för

Funktioner, anrop, parametrar och stränghantering är laborationens tema.
Som vi gjorde i laboration 1 börjar vi med att skapa en arbetskatalog med namnet Labb2 avsett för filer som vi skapar under laboration 2. Katalogen Labb2 ska skapas i katalogen Datalogi/Labbar/ som finns i din hemkatalog, följande kommando i terminalfönstret skapar katalogen Labb2:

   mkdir ~/Datalogi/Labbar/Labb2

Uppgift 1: Stup

Skriv ett pyhon program stup.py, som först skriver ut "Det stupar här!" och väntar på inmatning från användaren efetr att användaren har matat in en textrad ska programmet skriva ut alla tecken i textraden i var sin rad, för varje ny rad ska ett mellanslag läggas till i början av tecknet, som exemplet nedan:
Det stupar här!
brant väg
b
 r
  a
   n
    t
     
      v
       ä
        g
triangel
t
 r
  i
   a
    n
     g
      e
       l

I resten av labben kommer vi att behöva två funktioner som används nästan i alla uppgifter, då är det bra att man definierar funktionerna i en separat fil för sig som sedan kan importeras till lösning i de uppgifter som ska anropa funktionerna. Det är väl inte så bra att definiera varje funktionerna i varje uppgift, det blir ju mycket kod och man återanvänder inte koden som man har skrivit tidigare. Dessutom att jobba på det sättet ställer krav på programmeraren att försöka skriva generella och oberoende funktioner som skulle kunna användas i vilket program som helst, där funktionen kan ha en mening.

Skapa funktioner

Skapa en fil med namnet labb2funktioner.py och definiera två funktioner i filen med följande beskrivning:
Funktion 1: namnet på funktionen ska vara vokal, funktionen definieras med en formellparameter, när funktionen vokal anropas returnerar värdet sant (True) i fall anropsparametern är en vokal a,e,i,o,u,y,å,ä,ö och i annat fall returneras falskt (False)

Funktion 2: namnet på funktionen ska vara konsonant, precis som vokal definieras funktionen med en formellparameter men till skillnad från vokal, funktionen konsonant returnerar värdet sant (True) i fall anropsparametern är en konsonant och i annat fall returneras falskt (False).

Testa dina funktioner först innan du fortsätter med resten av labben

skriv koden nedan i en fil och kör programmet:
#coding: iso-8859-1

from labb2funktioner import *
bokstav = raw_input("Mata in en bokstav: ")
if vokal(bokstav):
    print "bokstaven",bokstav,"är vokal"
elif  konsonant(bokstav):
    print "bokstaven",bokstav,"är konsonant"
else:
    print "tecknet",bokstav," är varken vokal eller konsonant"
Pröva med lite olika tecken, fungerar funktionerna som i beskrivningen? För att du ska kunna fortsätta med resten av labben måste du se till att funktionerna fungerar som det ska.


Observera att i resten av uppgifterna där det går, ska du använda funktioner som du definierade i filen labb2funktioner.py.

Uppgift 2: Viskningsspråket

Skriv ett program viskning.py som är en kopia av programmet stup.py med följande skillnader:
  1. Bokstäver som är vokaler skrivs inte ut
  2. Alla bokstäver som ska skrivas ut skrivs ut på en enda rad
  3. Inga extra mellanslag för varje tecken.
här är ett exempel:
Din mening:
Får jag viska ditt namn?
Fr jg vsk dtt nmn?
Visst får du det
Vsst fr d dt

Uppgift 3: Hottentottspråket

Skriv nu programmet hottentott.py som skriver ut alla bokstäver men de bokstäver som är konsonanter skrivs ut två gånger med bokstaven o emellan.
Din mening:
Att vara eller inte vara...
Atottot vovarora elolloleror inontote vovarora...

Uppgift 3: F-språket

F-språket är som hottentottspråket men man skriver istället ut vokaler två gånger med bokstaven f emellan.
Din mening:
fyllan & villan...
fyfyllafan & vifillafan...

Uppgift 4: Kinaspråket

Kina språket byter alla l mot r och tvärtom
Din mening:
prickig korv på fralla...
plickig kolv på flarra...

Uppgift 5: Bebisspråket

Bebisar säger bara första stavelsen i varje ord, men i gengäld säger dom den tre gånger.
  Din mening:
  Man blandar ihop mycket där
  MaMaMa blablabla iii mymymy dädädä
Tips: Skriv en till labb2funktion med namnet stav1 dock funktionen behöver inte definieras i filen labb2funktioner.py då den endast används i Bebisspråket. stav1 returnerar första stavelse i anropsparametern när den anropas. Observer att anropsparametern till stav1 är ett ord (inte ett tecken inte heller hela den inlästa textsträngen)

Uppgift 6: Allspråket

I detta språk kuperar man ordet före första vokalen och sätter all efter.
  Din mening:
  musse pigg
  ussemall iggpall
Funktionen kupera() är mycket lik stav1().

Uppgift 7: Fikonspråket

I detta språk kuperar man ordet efter första vokalen, sätter fi före och kon efter.
  Din mening:
  musse pigg
  fissemukon figgpikon

Utsökt jobbat av ..................................... intygar.............................. den .................


^ Upp till kurssidan.


Sidansvarig: <vahid@nada.kth.se>
Senast ändrad 25 oktober 2004
Tekniskt stöd: <webmaster@nada.kth.se>