Er å skrive kode ut fortsatt betraktet som en algoritmisk representasjon?

stemmer
2

Jeg bare mistet 50% av mitt svar på en test, fordi jeg skrev koden ut i stedet for en algoritme på min deleksamen, bumping meg fra en A til C. Er skrive kode ut fortsatt betraktet som en algoritmisk representasjon?

Wikipedia: Algoritme Representasjon (siden programmering stil er ganske mye konsensusbasert)

EDIT: Ok, så la meg gjøre noen punkter klart:

  1. Testen bedt om pseudo-kode, som vi egentlig aldri definert i klassen; vi bare skrev ut engelsk for våre algoritmer.

  2. Det er en Java-klasse, og skrev ut hele løsningen i en Java-metoden, sammen med kommentarer. Alt dette var håndskrevet, og tok lenger tid å skrive ut enn pseudo-kode. Jeg trodde det ville være mer tydelig.

  3. Jeg normalt ville ikke gjøre en sak om slike ting, men det er forskjellen mellom en A og en C, og jeg har et stipend ridning på mine eksamener.

  4. Til slutt, jeg gjør dette innlegget for to grunner:

    4.1 Jeg ønsker å vise hva den moderne programmerings samfunnet mener om pseudo-kode og algoritmisk representasjon.

    4.2 Jeg vil vite hva som er akseptabelt i den virkelige verden; Jeg har vært programmering i noen tid, men jeg ønsker å kunne bidra til å åpne kildekode-prosjekter snart, og jeg ønsker ikke å tråkke på noens tær. (Selv om jeg er ganske sikker på at dette temaet har liten sjanse for å komme opp i den virkelige verden).

Igjen, takk for hjelp / råd.

Publisert på 04/11/2008 klokken 23:12
kilden bruker
På andre språk...                            


8 svar

stemmer
0

Alt jeg vet er bør du ikke skrive noen kode før etter du har en algorithim.

Svarte 04/11/2008 kl. 23:15
kilden bruker

stemmer
5

Det kan være lurt å gi et eksempel. Hvis koden fokuserer for mye på språk detaljer som ikke er en del av algoritmen, så forståelig, det kunne sies at du hadde ikke-algoritmen blandet med algoritme, noe som resulterer i feil resultat.

Jeg føler for resonnement, er hele poenget med å lære å vise at du forstår konseptet, for ikke å bøye seg og krysser alle de riktige boksene.

En datamaskin kan læres opp til å passere universitet, men en datamaskin kan bli enda lært å faktisk tenke selv og bruke kunnskap.

Spis og regurgitate mentalitet er grunnen til at jeg aldri ble uteksaminert.


Med hensyn til din siste kommentar, er det viktig å innse pseudokode er udefinert. Det er vanligvis brukes på nytt vilkår i det, men det er ikke en streng språk noe mer enn engelsk er (ellers ville det være et programmeringsspråk, som kan analyseres og henrettet ordrett)

Den betydningen av pseudokode er å kjøttet ut logikken del av systemet og ikke trenger å bekymre deg altfor om syntaksen utover 'det er fornuftig'

Ofte kan dette gjøre pseudo både mer avvisende og mer forståelig.

Pseudo heller ikke stole på at leseren har en forståelse av den 'magiske syntaks' i språket for å behandle det, er alt de trenger for å forstå begrepene som brukes.

Hvis du skulle gi den gjennomsnittlige personen en algoritme i perl for eksempel, ville folk flest bare dø av skrekk, fordi de ikke ser forbi påstøp av linjestøy.

Samtidig som:

sub foo { 
   my @args = @_ ; 
   my( $a, $b )=(@args[0],@args[1]); 
   for( @{ $a } ){
       $b .= $_ ; 
       s/id//g; 
   }
   return [$b,$a];
}

kan gjøre noen sammenhengende følelse til noen bevandret i perl, til gjennomsnittet kode leser alt de får er en "hva i helvete gjorde du bare si" respons. Dokumentere det hjelper ikke mye heller.

| there is a subroute foo which can take a list of strings, and a default string, 
\-  which then iterates all items in  that list, 
| \-  and for each item in that list 
|     1. appends the contents of that item to the end of the default string
|     2. removes all instances of the string "id" in that item
| 
 \ and returns a list, which contains 
    1. the concatentated default string 
    2. the modified input list 

Plutselig blir det mindre tvetydig og en større prosentandel av folk kan forstå det.

Så muligens halve øvelsen med å skrive algoritmen er en øvelse i "Ikke bare har du å bevise at du forstår det, har du også å bevise at du kan forklare resonnementet til andre som vet noe av problemet", som er en viktig evne du trenger. Hvis du ikke kan kommunisere hva du har gjort, ingen kan bruke den.

det er også denne ekkel lite problem med kode, som ikke finnes i en algoritme, og det er koden kan se rett, men kan ikke gjøre hva du tror den gjør det, og hvis det ikke gjør det riktig, og du skjønner 't innse, folk leser koden reverse engineering det vil berøre den opp og kopiere en brukket algoritme. ikke bra. algoritmen i menneskelig form bedre settes 'dette er hva jeg vil det gjør'

Svarte 04/11/2008 kl. 23:20
kilden bruker

stemmer
3

I dette tilfellet, må du utsette til professor.

Svarte 04/11/2008 kl. 23:23
kilden bruker

stemmer
0

Problemet med å bruke kode i stedet for pseudokode er at, teoretisk sett, kan man anta at det var kode, ikke pseudokode. Uansett, læreren karakterer for svar, ikke for din kunnskap - du ville være bedre å svare på det du spurte om, i vilkårene læreren liker. Ja, vi alle vet, du vet bedre. Men det er aldri en dårlig øvelse for å prøve å snakke fornuft annen persons måte, vet du. Og i hvert fall i mitt land læreren har rett til å vurdere deg fritt, så ... får sammen med ham!

Svarte 04/11/2008 kl. 23:29
kilden bruker

stemmer
2

Du må oppgi mer informasjon. Du ble bedt om en algoritme, men som følger kode. Visste du kommentere koden? Hvor mye? (Jeg vil gjerne se spørsmålet og svaret, men kanskje det er å be om for mye).

Så jeg skal svare basert på min egen erfaring. Hvis jeg ber om en algoritme, så jeg vil ha noe som forklarer, i anstendig engelsk, hvordan å løse problemet og / eller oppfyller kravene i spørsmålet. Diagrammer er også god (noen ganger bedre). Ledd, punkt form, uansett - det bare må være klar, konsis og korrekt.

Hvis du forsyne meg med kode som gjør de ovennevnte, så full merker. Men hvis du leverer kode som er ren "språk" og heller kryptisk, så merkene vil gå tapt - mer eller mindre avhengig av hvor kryptiske koden faktisk er. Selv med kode, vil jeg gjerne se et diagram i tillegg, bare for å vise fullstendig forståelse av begrepene.

En av de vanskeligste tingene jeg møter når undervisning programmering er å få elevene til å skrive mer, ikke mindre. Noen ganger har jeg måtte minne dem om at en oppgave (eller eksamen) er ikke en oppføring i den "mest uklar kode contest". ;-)

Jubel,

-R

Svarte 04/11/2008 kl. 23:49
kilden bruker

stemmer
0

Bare snakk med din professor og spør ham hvorfor du fikk spørsmålet feil. Spør ham hva en rette svaret ville være, og hva den grunnleggende forskjellen er mellom de to.

Kan det være at algoritmen du skrev var ikke riktig?

Svarte 05/11/2008 kl. 00:56
kilden bruker

stemmer
0

Koden er en algoritme skrevet slik at en maskin kan kjøre den. Det er ingenting i denne definisjonen som sier at det ikke også skrevet for et menneske å forstå. Har skrive i Java skjule din algoritme? Det ville avgjøre om jeg har avtalt med læreren din.

Svarte 05/11/2008 kl. 01:22
kilden bruker

stemmer
2

Som grader for en avanserte algoritmer Selvfølgelig ville jeg alltid ta av poeng hvis det er rett og slett en kodet løsning.

Noen ting rett og slett ikke kan uttrykkes som veltalende i kode som de kan på engelsk. Pseudo-kode er et forsøk på å bryte fri fra strenge kompilatoren syntaks og tillate noen uttrykksfullhet. Det er et skritt i riktig retning av forståelighet, men ikke alltid nok.

Spesielt i en algoritmer klasse, er det alltid viktig for å gi et bevis for riktigheten (enten det er ved induksjon, motsigelse, etc.), såvel som en stor O-notasjon for rom- og tids kompleksiteten til algoritmen.

Svarte 13/11/2008 kl. 20:04
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more