4. Inlämningsuppgift 2

Programmeringsteknik

(Skillnad mellan versioner)
Hoppa till: navigering, sök
(Ny sida: __NOTOC__ {| border="0" cellspacing="0" cellpadding="0" height="30" width="100%" | style="border-bottom:1px solid #797979" width="5px" |   {{Mall:Ej vald flik|Teori}}...)
Nuvarande version (21 juni 2018 kl. 05.55) (redigera) (ogör)
m (Plagiattext utökad)
 
(12 mellanliggande versioner visas inte.)
Rad 3: Rad 3:
| style="border-bottom:1px solid #797979" width="5px" |  
| style="border-bottom:1px solid #797979" width="5px" |  
{{Mall:Ej vald flik|[[4. Funktioner|Teori]]}}
{{Mall:Ej vald flik|[[4. Funktioner|Teori]]}}
-
{{Mall:Vald flik|[[4. Inlämningsuppgift 2|Inlämningsuppgift 2: Rondelet]]}}
+
{{Mall:Ej vald flik|[[4. Övningar|Övningar]]}}
 +
{{Mall:Vald flik|[[4. Inlämningsuppgift 2|Rondelet]]}}
| style="border-bottom:1px solid #797979" width="100%"|  
| style="border-bottom:1px solid #797979" width="100%"|  
|}
|}
Rad 10: Rad 11:
==Rondelet==
==Rondelet==
-
I den här inlämningsuppgiften ska du skriva ett antal funktioner för att
+
I den här inlämningsuppgiften ska du skriva '''ett antal funktioner''' för att
-
göra ett program som skapar en dikt av en inläst text.
+
göra ett program som skapar en dikt av en inläst text. Programmet ska läsa in fyra meningar och sedan skriva ut texten
-
Programmet ska läsa in fyra meningar och sedan skriva ut texten
+
uppdelad på följande rader:
uppdelad på följande rader:
Rad 24: Rad 24:
# Fjärde meningen
# Fjärde meningen
# Textens fyra första ord en sista gång
# Textens fyra första ord en sista gång
 +
Texten kommer då att likna en ''rondelet'' - en fransk diktform.
Texten kommer då att likna en ''rondelet'' - en fransk diktform.
Rad 52: Rad 53:
===Tips===
===Tips===
 +
 +
Varje funktion i ditt program bör ha en specifik uppgift. T.ex. kan en funktion ta hand om inmatning, en annan funktion kan dela upp meningarna och en tredje funktion kan skriva ut dikten.
Medan du testar programmet kan du ersätta anropet av din inläsningsfunktion
Medan du testar programmet kan du ersätta anropet av din inläsningsfunktion
Rad 69: Rad 72:
<pre>mening = "En ganska kort mening."
<pre>mening = "En ganska kort mening."
lista = mening.split()
lista = mening.split()
-
# lista har nu värdet ["En", "ganska", "kort", "mening."]</pre>
+
 
 +
lista har nu värdet ["En", "ganska", "kort", "mening."]</pre>
 +
 
 +
Ifall vi vill skriva ut vår lista, så finns metoden <code>join</code>. Den funkar så här:
 +
<code><sträng>.join([lista])</code>. <code><sträng></code> är den separator som ska skilja elementen i listan åt, det kan vara t.ex. radbrytning: "\n", mellanrum: " " eller punkter: ".."
 +
<pre>
 +
"".join(lista) # ger " "Enganskakortmening."
 +
", ".join(lista) # ger "En, ganska, kort, mening."</pre>
För att göra om små bokstäver till stora i en sträng så kan du använda metoden <code>upper()</code>:
För att göra om små bokstäver till stora i en sträng så kan du använda metoden <code>upper()</code>:
Rad 75: Rad 85:
<pre>mening = "En ganska kort mening."
<pre>mening = "En ganska kort mening."
ny_mening = mening.upper()
ny_mening = mening.upper()
-
# ny_mening har nu värdet "EN GANSKA KORT MENING."</pre>
+
 
 +
ny_mening har nu värdet "EN GANSKA KORT MENING."</pre>
 +
 
 +
Ditt program bör ha ett huvudprogram. Det betyder att du ska göra en huvudfunktion som anropar dina andra funktioner och som hantera inparametrar och returvärden. Detta görs för att undvika användandet av globala variabler i funktioner. Istället vill man skicka in variabler som inparametrar för att komma åt variabler i funktioner. Behöver du använda en variabel i annan funktion bör du använda returvärden.
===Inlämning===
===Inlämning===
-
Programmet ska finnas i en fil med namnet <code>Uppgift2.py</code>. Följ den här mallen:
+
Programmet ska finnas i en fil med namnet <code>Förnamn_efternamn_2.py</code>. Följ den här mallen:
<pre># Programmeringsteknik webbkurs KTH inlämningsuppgift 2.
<pre># Programmeringsteknik webbkurs KTH inlämningsuppgift 2.
Rad 94: Rad 107:
När du har finputsat ditt program så går du till kursens förstasida.
När du har finputsat ditt program så går du till kursens förstasida.
Under rubriken Examination hittar du Inlämningsuppgift&nbsp;2 och
Under rubriken Examination hittar du Inlämningsuppgift&nbsp;2 och
-
där kan du lämna in filen Uppgift2.py. Observera att filen måste vara i textformat,
+
där kan du lämna in filen <code>Förnamn_efternamn_2.py </code>. Observera att filen måste vara i .py-format,
vilket den automatiskt blir om du skapar den med hjälp av IDLE.
vilket den automatiskt blir om du skapar den med hjälp av IDLE.
-
Detta för att vi ska kunna prova och testköra ditt program.
+
Detta är för att vi ska kunna prova och testköra ditt program.
 +
 
 +
'''Kom ihåg att denna uppgift ska göras individuellt, att samarbeta eller kopiera någon annans kod betraktas som fusk. Denna uppgift kommer att plagiatkontrolleras. Alla träffar vi får leder till disciplinnämndsanmälningar.'''
 +
 
 +
<pre>KONTROLL INNAN INLÄMNING:
 +
* Har du testat ditt program?
 +
* Har du namngivit dina variabler och funktioner väl?
 +
* Ser din körning ut som exemplen?
 +
* Har du kommenterat din kod?
 +
* Använder du dig av inparametrar och returvärden?
 +
* Har du en huvudprogram som anropar dina andra funktioner?
 +
* Har du undvikit globala variabler (d.v.s. det finns ingen kod utanför
 +
funktionerna utom anropet till ditt huvudprogram)?
 +
* Har du undvikit kodupprepning?</pre>

Nuvarande version

       Teori          Övningar          Rondelet      


Rondelet

I den här inlämningsuppgiften ska du skriva ett antal funktioner för att göra ett program som skapar en dikt av en inläst text. Programmet ska läsa in fyra meningar och sedan skriva ut texten uppdelad på följande rader:

  1. Textens fyra första ord med stora bokstäver
  2. En tom rad
  3. Textens fyra första ord
  4. Resten av första meningen
  5. Textens fyra första ord igen
  6. Andra meningen
  7. Tredje meningen
  8. Fjärde meningen
  9. Textens fyra första ord en sista gång


Texten kommer då att likna en rondelet - en fransk diktform.

Här är ett exempel på en körning:

                DIKTAUTOMATEN

Skriv in fyra meningar och få ut en rondelet!

Skriv mening nr 1: Det fanns ingen fil när jag handlade på Konsum.
Skriv mening nr 2: Bananerna var också slut.
Skriv mening nr 3: Jag köpte bröd istället.
Skriv mening nr 4: Nån sorts limpa med mycket fibrer.


DET FANNS INGEN FIL

Det fanns ingen fil
när jag handlade på Konsum.
Det fanns ingen fil
Bananerna var också slut.
Jag köpte bröd istället.
Nån sorts limpa med mycket fibrer.
Det fanns ingen fil

Tips

Varje funktion i ditt program bör ha en specifik uppgift. T.ex. kan en funktion ta hand om inmatning, en annan funktion kan dela upp meningarna och en tredje funktion kan skriva ut dikten.

Medan du testar programmet kan du ersätta anropet av din inläsningsfunktion med tilldelningssatser. På det sättet slipper du skriva in fyra meningar varje gång du testkör ditt program!

# För testning:
sentence[0] = "Det fanns ingen fil när jag handlade på Konsum.
sentence[1] = "Bananerna var också slut.
sentence[2] = "Jag köpte bröd istället.
sentence[3] = "Nån sorts limpa med mycket fibrer."

Det finns en användbar metod i Python som heter split() med vars hjälp du kan dela upp en mening så att det blir en lista av enskilda ord. Här är ett exempel som visar hur man använder split():

mening = "En ganska kort mening."
lista = mening.split()

lista har nu värdet ["En", "ganska", "kort", "mening."]

Ifall vi vill skriva ut vår lista, så finns metoden join. Den funkar så här: <sträng>.join([lista]). <sträng> är den separator som ska skilja elementen i listan åt, det kan vara t.ex. radbrytning: "\n", mellanrum: " " eller punkter: ".."

"".join(lista)   # ger " "Enganskakortmening."
", ".join(lista) # ger  "En, ganska, kort, mening."

För att göra om små bokstäver till stora i en sträng så kan du använda metoden upper():

mening = "En ganska kort mening."
ny_mening = mening.upper()

ny_mening har nu värdet "EN GANSKA KORT MENING."

Ditt program bör ha ett huvudprogram. Det betyder att du ska göra en huvudfunktion som anropar dina andra funktioner och som hantera inparametrar och returvärden. Detta görs för att undvika användandet av globala variabler i funktioner. Istället vill man skicka in variabler som inparametrar för att komma åt variabler i funktioner. Behöver du använda en variabel i annan funktion bör du använda returvärden.

Inlämning

Programmet ska finnas i en fil med namnet Förnamn_efternamn_2.py. Följ den här mallen:

# Programmeringsteknik webbkurs KTH inlämningsuppgift 2.
# <Ditt namn>
# <Datum>
# <Kort beskrivning av vad programmet gör>

<Programkod>

Innan du skickar in programmet så ska du se till att där inte finns någon kodupprepning som kan åtgärdas med funktioner och slingor.

När du har finputsat ditt program så går du till kursens förstasida. Under rubriken Examination hittar du Inlämningsuppgift 2 och där kan du lämna in filen Förnamn_efternamn_2.py . Observera att filen måste vara i .py-format, vilket den automatiskt blir om du skapar den med hjälp av IDLE. Detta är för att vi ska kunna prova och testköra ditt program.

Kom ihåg att denna uppgift ska göras individuellt, att samarbeta eller kopiera någon annans kod betraktas som fusk. Denna uppgift kommer att plagiatkontrolleras. Alla träffar vi får leder till disciplinnämndsanmälningar.

KONTROLL INNAN INLÄMNING:
* Har du testat ditt program?
* Har du namngivit dina variabler och funktioner väl?
* Ser din körning ut som exemplen?
* Har du kommenterat din kod?
* Använder du dig av inparametrar och returvärden?
* Har du en huvudprogram som anropar dina andra funktioner?
* Har du undvikit globala variabler (d.v.s. det finns ingen kod utanför
funktionerna utom anropet till ditt huvudprogram)?
* Har du undvikit kodupprepning?