Algoritm/Pseudokod/Flödesplan - Hjälp!!

Permalänk
Medlem

Algoritm/Pseudokod/Flödesplan - Hjälp!!

Hej!

Har fått en uppgift jag har lite problem med.

"Antag att du just flyttat. Dina vänner har hjälpt dig att packa, och sedan att tömma flyttkartongerna. Just nu ligger alltså dina böcker i en osorterad hög på golvet. Du vill sortera in böckerna i bokhyllan så att de i första hand är sorterade på författarens namn, och i andra hand på titel.
Det viktiga i denna uppgift är att du beskriver allt som kan vara ett problem. Detaljer som hur du tar tag i boken och lyfter den är ointressanta, medan "sen ställer jag den på rätt plats" är alldeles för vagt. Hur gör du för att hitta rätt plats?
Meningen med uppgiften är att försöka ge en känsla för hur algoritmer måste specificeras för att en dator ska förstå dem; till en början utan att blanda in en dator. Jag försöker göra detta genom att välja ett problem som alla kan lösa, och genom att inte blanda in programmering. Det finns mängder av rätta svar på denna uppgift. Det viktiga är att du själv skriver din beskrivning, inte att den blir "rätt".
1. Formulera en algoritm med vanligt språk.( Beskriv i detalj hur du gör)
2. Rita flödesplanen.
3. Skrivpseudokoden."

Jag förstår inte hur jag skall kunna sortera böckerna, vilka olika lösningar det finns för det.

Skulle vara schysst om någon kunde hjälpa till!

Permalänk
Keeper of Traditions
Skrivet av AIIN:

Det viktiga är att du själv skriver din beskrivning, inte att den blir "rätt".

Skulle vara schysst om någon kunde hjälpa till!

Hmm...

Visa signatur

|| Intel 8700K || Asus RTX 4070 TI Super TUF || Samsung 750 EVO 500GB & Kingston A2000 1TB & Samsung 960 EVO 250GB || Corsair RM 850x || Antec P183 || Asus G-Sync RoG Swift PG279Q || Dell XPS 15 || Thinkpad X220

The Force is like Duct Tape, it has a light side, a dark side, and holds the universe together.

Permalänk
Medlem

Hej!

Det där fixar du nog med lite vägledning.

Om vi börjar med första punkten. Säg att vi gör det omvända, dvs leta upp en bok som är sorterad i en bokhylla. Hur gör du då du vill leta upp en bok på biblioteket, säg av King, Stephen? Det behöver inte vara en bok, utan det kan även vara en CD (artist resp. albumtitel) eller film (genre, filmtitel).

Glöm punkt två och tre till att börja med och börja simpelt. När du har en plan på hur du ska gå till väga så kan man ge sig på pseudokod och flödesschema.

Visa signatur

"Inte alltid, bara ibland"

Permalänk
Medlem
Skrivet av Klixman:

Om vi börjar med första punkten. Säg att vi gör det omvända, dvs leta upp en bok som är sorterad i en bokhylla. Hur gör du då du vill leta upp en bok på biblioteket, säg av King, Stephen? Det behöver inte vara en bok, utan det kan även vara en CD (artist resp. albumtitel) eller film (genre, filmtitel)..

Om jag skall leta upp en bok så går jag först och främst efter författaren, och sedan när jag är på rätt författare söker jag efter titeln i alfabetisk-ordning.

Permalänk
Medlem
Skrivet av AIIN:

Om jag skall leta upp en bok så går jag först och främst efter författaren, och sedan när jag är på rätt författare söker jag efter titeln i alfabetisk-ordning.

Ja. Säg att du vill låna flera böcker av olika författare. Du går och hämtar alla och när du väl står i kassan märker du att du glömt ditt lånekort. Snäll som du är går du och ställer tillbaka alla i hyllorna där du tog dem ifrån efter alfabetisk ordning.

Bara beskriva exakt hur du går till väga för att hitta rätt plats i hyllan så har du besvarat första frågan.

Nu till punkt två som är lite svårare, flödesdiagrammet. Försök rita upp ett diagram i stil med den i länken som beskriver precis samma tillvägagångssätt som i punkt 1.

http://jernis.files.wordpress.com/2009/05/problemlosning1.jpg...

Tips: Börja med en box högst uppifrån (kartong med alla böcker), sedan får du inte nå boxen längst ner förrän kartongen är tömd.

Visa signatur

"Inte alltid, bara ibland"

Permalänk
Medlem
Skrivet av Klixman:

Ja. Säg att du vill låna flera böcker av olika författare. Du går och hämtar alla och när du väl står i kassan märker du att du glömt ditt lånekort. Snäll som du är går du och ställer tillbaka alla i hyllorna där du tog dem ifrån efter alfabetisk ordning.

Bara beskriva exakt hur du går till väga för att hitta rätt plats i hyllan så har du besvarat första frågan.

Nu till punkt två som är lite svårare, flödesdiagrammet. Försök rita upp ett diagram i stil med den i länken som beskriver precis samma tillvägagångssätt som i punkt 1.

http://jernis.files.wordpress.com/2009/05/problemlosning1.jpg...

Tips: Börja med en box högst uppifrån (kartong med alla böcker), sedan får du inte nå boxen längst ner förrän kartongen är tömd.

1. Jag lyfter upp en bok i taget för att sedan läsa vilken författare som har skrivit boken.
Sedan ställer jag in boken i bokhyllan i alfabetisk ordning efter efternamnet på författaren.
Om det finns flera böcker av samma författare ställer jag böckerna i alfabetisk ordning
efter titeln av boken. När det inte finns några böcker kvar slutar jag.

Är det en acceptabel algoritm? Finns det några fel i den?

EDIT: La till ett slut i algoritmen.

Permalänk
Medlem
Skrivet av AIIN:

1. Jag lyfter upp en bok i taget för att sedan läsa vilken författare som har skrivit boken.
Sedan ställer jag in boken i bokhyllan i alfabetisk ordning efter efternamnet på författaren.
Om det finns flera böcker av samma författare ställer jag böckerna i alfabetisk ordning
efter titeln av boken
. När det inte finns några böcker kvar slutar jag.

Är det en acceptabel algoritm? Finns det några fel i den?

EDIT: La till ett slut i algoritmen.

Ja, det ser bra ut. Du skulle dock kunna vara tydligare med den biten (dvs varifrån börjar du leta var den ska in, från vänster sida av en bokrad och sedan åt höger, tvärtom, eller t.om att du börjar från mitten och går åt något håll). Skulle helt klart godkänna din beskrivningen som lärare i en introduktionskurs. Försök förtydliga tillvägagångssättet så ska du inte ha några problem med nästa punkter.

Markerade nyckelmeningarna i din beskrivning som du bör ha med i flödesdiagrammet på ett eller annat sätt.

Det är mycket svårt att tänka som en "dator" i början, men övning ger färdighet. Med lite rutin bara.

Lycka till!

Visa signatur

"Inte alltid, bara ibland"

Permalänk
Medlem
Skrivet av AIIN:

1. Jag lyfter upp en bok i taget för att sedan läsa vilken författare som har skrivit boken.
Sedan ställer jag in boken i bokhyllan i alfabetisk ordning efter efternamnet på författaren.
Om det finns flera böcker av samma författare ställer jag böckerna i alfabetisk ordning
efter titeln av boken. När det inte finns några böcker kvar slutar jag.

Är det en acceptabel algoritm? Finns det några fel i den?

Det är väl acceptabelt, men specificera gärna hur man kan göra för att sortera alfabetiskt.

  • När du plockat upp en bok, hur bestämmer du var du ska ställa den?

  • Från vilket håll sorterar du?

  • Det är rätt så jobbigt att göra plats åt en bok om du måste flytta massa andra för att få in den. Hur löser du det medan du sorterar, har du en strategi eller plockar du bara in och flyttar böcker vartefter, även fast det kan bli väldigt jobbigt?

  • Osv.

Det finns massvis att tänka på när man sorterar och hur man sedan gör det är helt upp till vad det är man sorterar och vad man tror kommer lämpa sig bäst på den datan.

Permalänk
Medlem
Skrivet av Klixman:

Ja, det ser bra ut. Du skulle dock kunna vara tydligare med den biten (dvs varifrån börjar du leta var den ska in, från vänster sida av en bokrad och sedan åt höger, tvärtom, eller t.om att du börjar från mitten och går åt något håll). Skulle helt klart godkänna din beskrivningen som lärare i en introduktionskurs. Försök förtydliga tillvägagångssättet så ska du inte ha några problem med nästa punkter.

Markerade nyckelmeningarna i din beskrivning som du bör ha med i flödesdiagrammet på ett eller annat sätt.

Det är mycket svårt att tänka som en "dator" i början, men övning ger färdighet. Med lite rutin bara.

Lycka till!

Först plockar jag upp en valfri bok från golvet och sätter in den i bokhyllan. Sedan plockar jag upp en ny bok från golvet och läser av författaren. Sedan läser jag författaren för varje bok i bokraden från vänster sida till höger och kollar om boken skall in framför eller bakom varje bok i bokhyllan i bokhyllan. Är författaren för boken före boken i bokhyllan i alfabetisk ordningen skall boken in framför, är den bakom skall den in bakom. Finns det ingen bok framför sätter jag boken längst fram, finns det ingen bok bakom sätter jag boken längst bak. När böckerna på golvet är slut så slutar jag.

Är den algoritmen mer utförlig? Den känns som jag virrar in mig i hur den skall sortera om det är flera böcker i bokhyllan.

Permalänk
Medlem
Skrivet av AIIN:

Först plockar jag upp en valfri bok från golvet och sätter in den i bokhyllan. Sedan plockar jag upp en ny bok från golvet och läser av författaren. Sedan läser jag författaren för varje bok i bokraden från vänster sida till höger och kollar om boken skall in framför eller bakom varje bok i bokhyllan i bokhyllan. Är författaren för boken före boken i bokhyllan i alfabetisk ordningen skall boken in framför, är den bakom skall den in bakom. Finns det ingen bok framför sätter jag boken längst fram, finns det ingen bok bakom sätter jag boken längst bak. När böckerna på golvet är slut så slutar jag.

Är den algoritmen mer utförlig? Den känns som jag virrar in mig i hur den skall sortera om det är flera böcker i bokhyllan.

Du måste virra in dig i hur du skall sortera om du ska lösa uppgiften. Dessutom måste du virra in dig på hur själva sorteringen skall gå till förutom att rätt bok ska in på rätt ställe. Det finns inte automatiskt luft i bokhyllan när du märker att en bok skall in mellan två böcker. Du måste göra något mer...

Tänk dig att du har siffrorna 012356789_ och plockar upp siffran 4 från golvet. Hur gör du för att stoppa in siffran 4 mellan 3 och 5?

Permalänk
Medlem
Skrivet av AIIN:

...
Är den algoritmen mer utförlig? Den känns som jag virrar in mig i hur den skall sortera om det är flera böcker i bokhyllan.

Tja, vad tycker du?

Själv tror jag att jag skulle få ordning på mina böcker i min bokhylla. Går att göra algoritmen mer avancerad om man så vill som Lonsas tydligt beskrev.

Men börja simpelt och se till att du har en fungerande lösning som fungerar i de flesta fallen, och lägg hantering av specialfall när du känner dig säker på din första lösning.

Visa signatur

"Inte alltid, bara ibland"

Permalänk
Medlem
Skrivet av dsk:

Du måste virra in dig i hur du skall sortera om du ska lösa uppgiften. Dessutom måste du virra in dig på hur själva sorteringen skall gå till förutom att rätt bok ska in på rätt ställe. Det finns inte automatiskt luft i bokhyllan när du märker att en bok skall in mellan två böcker. Du måste göra något mer...

Tänk dig att du har siffrorna 012356789_ och plockar upp siffran 4 från golvet. Hur gör du för att stoppa in siffran 4 mellan 3 och 5?

Först plockar jag upp en valfri bok från golvet och sätter in den i bokhyllan. Sedan plockar jag upp en ny bok från golvet och läser av författaren. Sedan läser jag författaren för varje bok i bokraden från vänster sida till höger och kollar om boken skall in framför eller bakom varje bok i bokhyllan i bokhyllan. Är författaren för boken före boken i bokhyllan i alfabetisk ordningen skall boken in framför, är den bakom skall den in bakom. Finns det redan en bok framför eller bakom boken jag vill sätta in boken i handen bredvid skall jag göra utrymme för den nya boken genom att flytta alla böckerna ett steg åt sidan. Finns det ingen bok framför sätter jag boken längst fram, finns det ingen bok bakom sätter jag boken längst bak. När böckerna på golvet är slut så slutar jag.

Permalänk
Medlem
Skrivet av Klixman:

Tja, vad tycker du?

Själv tror jag att jag skulle få ordning på mina böcker i min bokhylla. Går att göra algoritmen mer avancerad om man så vill som Lonsas tydligt beskrev.

Men börja simpelt och se till att du har en fungerande lösning som fungerar i de flesta fallen, och lägg hantering av specialfall när du känner dig säker på din första lösning.

Jag tycker det börjar bli bättre! Men det känns som att hela algoritmen är lite luddig.. :/

Permalänk
Medlem
Skrivet av AIIN:

Jag tycker det börjar bli bättre! Men det känns som att hela algoritmen är lite luddig.. :/

Pseudokod blir lätt det. Du ska inte skriva ett fungerande program utan förtydliga handlingsförloppet. Jag tycker du har gjort ett fint jobb hittills! (men det går att polera lite)

Visa signatur

Kom-pa-TI-bilitet

Permalänk

Jag skulle föreslå att du delar upp uppgiften i små steg som du numrerar det blir då lättare att följa och ger ett bättre intryck. Något i stil med...

1. Plocka upp en valfr bok från golvet och ställ in den i bokhyllan
2. Plocka upp en ny bok från golvet [lås oss kalla den för bok A].
3. Utgån från första boken i bokhyllan. Ska bok A in före bok 1? Gör plats för bok A före bok 1.
<kortar av det här för att inte göra det för enkelt>

Ett tips är oxå att inte titta på om boken du håller i handen ska in före eller efter den bok du jmfr med i bokhyllan, utan bara ser om boken du håller i handen ska in före den bok du jmfr med i bokhyllan.

Det finns en del specialfall som man kanske behöver ta hänsyn till oxå, t.ex. om du ska hänsyn till
- att en en bokhylla består av flera hyllor
- vad som händer om bokhyllan blir full
- att en bok kan vara skriven av flera författare
- att en bok kan sakna författare och/eller titel
- att uppgiften inte ska tas ordagrann, att det är möjligt att du inte har några böcker alls, alternativt bara har en enda bok att placera
- <med mera>

Permalänk
Medlem

... och om det är en bok ur Twilight-serien så ska den kastas och inte ställas i bokhyllan.. ^^

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Medlem
Skrivet av AIIN:

1. Jag lyfter upp en bok i taget för att sedan läsa vilken författare som har skrivit boken.
Sedan ställer jag in boken i bokhyllan i alfabetisk ordning efter efternamnet på författaren.
Om det finns flera böcker av samma författare ställer jag böckerna i alfabetisk ordning
efter titeln av boken. När det inte finns några böcker kvar slutar jag.

Är det en acceptabel algoritm? Finns det några fel i den?

EDIT: La till ett slut i algoritmen.

Det är absolut en acceptabel algoritm.
Kallas för Insertion sort - Wikipedia, the free encyclopedia

Visa signatur

I'm Winston Wolfe. I solve problems.

Permalänk
Medlem
Skrivet av fqvarfort:

Jag skulle föreslå att du delar upp uppgiften i små steg som du numrerar det blir då lättare att följa och ger ett bättre intryck. Något i stil med...

1. Plocka upp en valfr bok från golvet och ställ in den i bokhyllan
2. Plocka upp en ny bok från golvet [lås oss kalla den för bok A].
3. Utgån från första boken i bokhyllan. Ska bok A in före bok 1? Gör plats för bok A före bok 1.
<kortar av det här för att inte göra det för enkelt>

Ett tips är oxå att inte titta på om boken du håller i handen ska in före eller efter den bok du jmfr med i bokhyllan, utan bara ser om boken du håller i handen ska in före den bok du jmfr med i bokhyllan.

Det finns en del specialfall som man kanske behöver ta hänsyn till oxå, t.ex. om du ska hänsyn till
- att en en bokhylla består av flera hyllor
- vad som händer om bokhyllan blir full
- att en bok kan vara skriven av flera författare
- att en bok kan sakna författare och/eller titel
- att uppgiften inte ska tas ordagrann, att det är möjligt att du inte har några böcker alls, alternativt bara har en enda bok att placera
- <med mera>

Har gjort om min Algoritm såhär.

Först plockar jag upp en valfri bok från golvet och sätter in den i bokhyllan. Sedan plockar jag upp en ny bok från golvet och läser av författaren. Sedan läser jag författaren för varje bok i bokraden från vänster sida till höger och kollar om boken skall in framför eller bakom varje bok i bokhyllan i bokhyllan baserat på den alfabetiska ordningen av författarens efternamn. När jag hittat en plats imellan två böcker där boken skall in, gör jag plats för boken och stoppar in den. OM det är flera böcker av samma författare skall dessa böcker placeras efter varandra i alfabetisk ordning baserat på titeln. Om boken saknar författare eller titeln skall dessa placeras i en hög på golvet. OM Bokhyllan blir full skall överblivna böcker lämnas kvar på golvet. När alla böcker är slut ELLER bokhyllan är full slutar jag.

Åsikter ? Tack allihopa för hjälpen!

Permalänk
Medlem
Skrivet av AIIN:

...
Om boken saknar författare eller titeln skall dessa placeras i en hög på golvet. OM Bokhyllan blir full skall överblivna böcker lämnas kvar på golvet....

Åsikter ? Tack allihopa för hjälpen!

Ser bra ut, men vad skulle din mor eller flickvän säga om du lämnade en massa böcker på golvet?

Nu är jag väldigt nyfiken på ditt flödesschema. Har du idéer på hur det ska se ut?

Blir lite svårt att visa upp grafiskt, men du kan ju lika gärna använda steg när du postar här, t.ex på följande sätt:

A. Har jag chips kvar i skålen? Om JA fortsätt till punkt B, annars punkt C.
B. Tag ett chips och ät upp. Gå sedan tillbaka till punkt A.
C. Skålen är tom, diska upp!

Visa signatur

"Inte alltid, bara ibland"

Permalänk
Medlem
Skrivet av Klixman:

Ser bra ut, men vad skulle din mor eller flickvän säga om du lämnade en massa böcker på golvet?

Nu är jag väldigt nyfiken på ditt flödesschema. Har du idéer på hur det ska se ut?

Blir lite svårt att visa upp grafiskt, men du kan ju lika gärna använda steg när du postar här, t.ex på följande sätt:

A. Har jag chips kvar i skålen? Om JA fortsätt till punkt B, annars punkt C.
B. Tag ett chips och ät upp. Gå sedan tillbaka till punkt A.
C. Skålen är tom, diska upp!

Jag ändrade den lite med tanke på det du skrivit!

Först plockar jag upp en valfri bok från golvet och sätter in den i bokhyllan. Sedan plockar jag upp en ny bok från golvet och läser av författaren. Sedan läser jag författaren för varje bok i bokraden från vänster sida till höger och kollar om boken skall in framför eller bakom varje bok i bokhyllan i bokhyllan baserat på den alfabetiska ordningen av författarens efternamn. När jag hittat en plats imellan två böcker där boken skall in, gör jag plats för boken och stoppar in den. OM det är flera böcker av samma författare skall dessa böcker placeras efter varandra i alfabetisk ordning baserat på titeln. Om boken saknar författare och titel skall dessa lämnas kvar i en flyttkartong. OM Bokhyllan blir full skall överblivna böcker lämnas kvar i flyttkartongen. När alla böcker är slut ELLER bokhyllan är full ELLER det bara är böcker som saknar titel och författare kvar slutar jag.

Försöker visa den grafiskt här..

Permalänk
Medlem

Det ser bra ut, men jag skulle gärna vilja se en liten förenkling av toppen av trädet, då tänker jag främst på den största textrutan "Läs av författaren för varje bok.....". Syftet med flödesdiagram är att man snabbt ska kunna få en överblick över logiken vilket jag tycker att man tappar lite där. Försök gärna dela upp den i flera mindre mer tydliga rutor som du har i resten av diagrammet.

Du skulle t.om kunna skippa rutan "Finns det flera titlar av samma författare" då denna blir lite överflödig med tanke på steget innan.

Det är precis samma sak när man kommer till programmering. Där kan man gärna ha många små metoder med beskrivande namn som utför en och endast en sak, det underlättar för efterkommande programmerare att få inblick över hur du tänkt.

Jag hoppas att jag gjorde mig förstådd, om inte så är det bara att fråga på.

Kom även ihåg att alla inte delar samma åsikter och därmed är det en smaksak över hur man beskriver saker och ting. Jag kanske är ensam om min åsikt ovan, men det är iaf min personliga åsikt.

Visa signatur

"Inte alltid, bara ibland"

Permalänk
Medlem
Skrivet av Klixman:

Det ser bra ut, men jag skulle gärna vilja se en liten förenkling av toppen av trädet, då tänker jag främst på den största textrutan "Läs av författaren för varje bok.....". Syftet med flödesdiagram är att man snabbt ska kunna få en överblick över logiken vilket jag tycker att man tappar lite där. Försök gärna dela upp den i flera mindre mer tydliga rutor som du har i resten av diagrammet.

Du skulle t.om kunna skippa rutan "Finns det flera titlar av samma författare" då denna blir lite överflödig med tanke på steget innan.

Det är precis samma sak när man kommer till programmering. Där kan man gärna ha många små metoder med beskrivande namn som utför en och endast en sak, det underlättar för efterkommande programmerare att få inblick över hur du tänkt.

Jag hoppas att jag gjorde mig förstådd, om inte så är det bara att fråga på.

Kom även ihåg att alla inte delar samma åsikter och därmed är det en smaksak över hur man beskriver saker och ting. Jag kanske är ensam om min åsikt ovan, men det är iaf min personliga åsikt.

Jag vet inte om jag skall förenkla, då min lärare vill se det väldigt utvecklat.. Hur skall jag börja med psedokoden, samt hur mycket skall vara kod gentemot text?

Permalänk
Medlem

Jag är helt lost nu när jag skall göra pseudokoden. Hur skall jag börja?

Permalänk
Medlem

Förändringen i flödesschemat är att jag ändrat till
"Plocka upp slumpmässig bok från golvet och sätt den i bokhyllan"
samt
"Plocka upp en ny slumpmässig bok från golvet."

i ruta 1 och 2.

Bifogar en bild eftersom sweclockers tog bort mina indrag.

Först plockar jag upp en slumpmässig bok från golvet och sätter in den i bokhyllan. Sedan plockar jag upp en ny (slumpmässig) bok från golvet och läser av författaren. Om det finns en författare och en titel till boken läser jag först vilken författare som gjort boken och sedan författaren för varje bok i bokraden från vänster sida till höger och kollar om boken skall in framför eller bakom varje bok i bokhyllan i bokhyllan baserat på den alfabetiska ordningen av författarens efternamn, om det inte finns en författare och en titel lämnar jag boken i flyttkartongen. OM det är flera böcker av samma författare skall dessa böcker placeras efter varandra i alfabetisk ordning baserat på titeln.
Jag fortsätter att leta efter rätt plats för boken tills jag har hittat den. När jag hittat rätt plats där boken passar in kollar jag om den skall in framför eller bakom boken i bokhyllan, finns det ingen plats kvar i bokhyllan lämnar jag resterande böcker i flyttkartongen. Jag stoppar sedan in boken i det skapade utrymmet och plockar upp en ny bok tills det inte finns några kvar på golvet. När det inte finns fler böcker kvar på golvet slutar jag.

Plocka upp (slumpmässig) bok och sätt den i bokhyllan.
Plocka upp en ny bok (slumpmässig) från golvet.
OM det finns en författare och titel till boken
Läs först av författaren för boken och sedan författarna för varje bok i bokhyllan från vänster till höger och kolla om boken skall in framför eller bakom varje bok i bokhyllan baserat på den alfabetiska ordningen av författarens efternamn
Annars lämna boken i en flyttkartong
Om det finns flera titlar av samma författare
Placera boken i alfabetisk ordning efter titeln med de andra böckerna av samma
författare
Annars (null)
Sålänge du inte hittat rätt plats för boken i bokhyllan fortsätt leta.
Tills du hittat rätt plats
Om du hittat rätt plats kolla
Om boken skall in bakom boken i bokhyllan kolla
Om det finns plats i bokhyllan
Gör plats bakom boken i bokhyllan
Annars lämna boken i en flyttkartong
Om boken skall in bakom framför boken i bokhyllan kolla
Om det finns plats i bokhyllan
Gör plats framför boken i bokhyllan
Annars lämna boken i en flyttkartong
Annars fortsätt leta
Stoppa in boken i det skapade utrymmet
Om det finns fler böcker på golvet
Plocka upp en ny bok (slumpmässig) från golvet
Annars STOP

Permalänk
Medlem

Bra att du försökte dig på pseudokoden. Här kommer lite kommentarer på den.

Använd gärna mer välkända programmeringstermer när du skriver pseudokoden, t.ex if, then, else, foreach. Med andra ord skulle du få följande namngivning för din kod:

... if <förtfattare och titel till boken existerar> then ... else ... if <flera titlar av samma författare existerar> then ... else ...

Sedan bör du nog försöka skrota "Sålänge" och "Tills" och försöka få en mer kodnära beskrivning (t.ex bara köra på något i stil med "position = hitta position i bokhyllan" och sedan använda hjälpvariabeln senare i pseudokoden.

Vet inte om jag klargjorde mig tillräckligt tydligt, men det jag vill ha sagt är att försök skriva pseudokoden mer kodmässig utan att du implementerar en kompilerbar algoritm.

Ett exempel på hur jag skulle skriva pseudokod för en algoritm som räknar ut summan av alla sidnummer i en bok:

/* Antag att alla sidor i boken har ett sidnummer */ pageNumberSum = 0 foreach<page p in book> pageNumberSum += page number of p

Visa signatur

"Inte alltid, bara ibland"

Permalänk
Medlem
Skrivet av Klixman:

Bra att du försökte dig på pseudokoden. Här kommer lite kommentarer på den.

Använd gärna mer välkända programmeringstermer när du skriver pseudokoden, t.ex if, then, else, foreach. Med andra ord skulle du få följande namngivning för din kod:

... if <förtfattare och titel till boken existerar> then ... else ... if <flera titlar av samma författare existerar> then ... else ...

Sedan bör du nog försöka skrota "Sålänge" och "Tills" och försöka få en mer kodnära beskrivning (t.ex bara köra på något i stil med "position = hitta position i bokhyllan" och sedan använda hjälpvariabeln senare i pseudokoden.

Vet inte om jag klargjorde mig tillräckligt tydligt, men det jag vill ha sagt är att försök skriva pseudokoden mer kodmässig utan att du implementerar en kompilerbar algoritm.

Ett exempel på hur jag skulle skriva pseudokod för en algoritm som räknar ut summan av alla sidnummer i en bok:

/* Antag att alla sidor i boken har ett sidnummer */ pageNumberSum = 0 foreach<page p in book> pageNumberSum += page number of p

Tack för snabbt svar!

Har ändrat till else <> och If.

Dock har vi inte gått igenom position än, så jag vet inte hur det kan användas riktigt.
Vi har gått igenom olika basic <iostream> funktioner (cout, cin), <iomanip> (setw) samt while satser.

Permalänk
Medlem
Skrivet av AIIN:

Dock har vi inte gått igenom position än, så jag vet inte hur det kan användas riktigt.
Vi har gått igenom olika basic <iostream> funktioner (cout, cin), <iomanip> (setw) samt while satser.

position var bara ett variabelnamn och inget annat. Försökte bara visa att man kan använda hjälpvariabler för att uttrycka sig i pseudokod (som p-variabeln i mitt exempel). Man ska nog undvika att använda sig att funktioner definerade i standardbibliotek (eller övriga funktioner/metoder för den delen) när man skriver pseudokod. Den som läser koden ska inte behöva kunna ett speciellt språk för att kunna förstå vad koden gör.

Visa signatur

"Inte alltid, bara ibland"

Permalänk
Medlem
Skrivet av Klixman:

position var bara ett variabelnamn och inget annat. Försökte bara visa att man kan använda hjälpvariabler för att uttrycka sig i pseudokod (som p-variabeln i mitt exempel). Man ska nog undvika att använda sig att funktioner definerade i standardbibliotek (eller övriga funktioner/metoder för den delen) när man skriver pseudokod. Den som läser koden ska inte behöva kunna ett speciellt språk för att kunna förstå vad koden gör.

Borde det inte gå att använda satsen du skrev och göra om det på det här sättet? Och byta ut sålänge och tills.

BookNumberSum=0
foreach<bok N framför den rätta platsen>
BookNumberSum += bok N

Valde att försöka göra det i en while sats.

Fungerar det här?

Plocka upp (slumpmässig) bok och sätt den i bokhyllan.
Plocka upp en ny bok (slumpmässig) från golvet.
If <det finns en författare och titel till boken>
Läs först av författaren för boken och sedan författarna för varje bok i bokhyllan från vänster till höger och kolla om boken skall in framför eller bakom varje bok i bokhyllan baserat på den alfabetiska ordningen av författarens efternamn
Else lämna boken i en flyttkartong
If <det finns flera titlar av samma författare>
Placera boken i alfabetisk ordning efter titeln med de andra böckerna av samma
författare
Else (null)
Bok N=0, i=0
While (bok N <är mindre eller lika med> rätt plats X)
{
Bok N+=i
i++
}
If <du hittat rätt plats X kolla>
If <boken skall in bakom boken i bokhyllan kolla>
If <det finns plats i bokhyllan>
Gör plats bakom boken i bokhyllan
Else lämna boken i en flyttkartong
If <boken skall in bakom framför boken i bokhyllan kolla>
Else <det finns plats i bokhyllan>
Gör plats framför boken i bokhyllan
Else lämna boken i en flyttkartong
Else fortsätt leta
Stoppa in boken i det skapade utrymmet
If <det finns fler böcker på golvet>
Plocka upp en ny bok (slumpmässig) från golvet
Else STOP

Permalänk
Medlem

ändrade

{
Bok N+=i
i++
}

till

{
Bok N+=i++
}

Permalänk
Medlem

Bättre, men du kan nog förbättra den ytterligare. Några synpunkter:

* Den blir lite svår att följa då du inte har några indenteringar. Gör intabbningar på de rader som hör till en if- eller else-sats.
* Svårt att se en början och ett slut på algoritmen. Försök visa det mer tydligt (exempelvis med en while/foreach-loop).
* Textmängden i beskrivningarna i sista halvan av av pseudokoden är riktigt bra, försök katt kapa meningarna i första halvan så ska du nog se att det blir bättre.

Efter lite övning och rutin så kommer du inte ha några större problem med detta. Gäller bara att ta sig förbi första hindret. Själv var jag ett hopplöst fall under studietiden, men det berodde nog mest på bristen av motivation. Ett förslag är att du övar dig på att lösa ovanstående uppgift för något du är väldigt bekant med.

Visa signatur

"Inte alltid, bara ibland"