Is het schrijven van code uit nog steeds beschouwd als een algoritmische voorstelling?

stemmen
2

Ik verloor slechts 50% van mijn antwoord op een test, omdat ik de code schreef in plaats van een algoritme op mijn midterm, stoten me uit een A naar een C. Is het schrijven van code uit nog steeds beschouwd als een algoritmische voorstelling?

Wikipedia: Algoritme Representation (sinds programmering stijl is vrij veel op consensus gebaseerde)

EDIT: Ok, dus laat me een paar punten duidelijk:

  1. De test vroeg om pseudo-code, die we nooit echt gedefinieerde in de klas; we gewoon schreef Engels voor onze algoritmen.

  2. Het is een Java-klasse, en schreef de gehele oplossing in een Java-methode, samen met commentaar. Dit alles werd met de hand geschreven, en duurde langer om uit te schrijven dan pseudo-code. Ik dacht dat het zou meer duidelijk zijn.

  3. Normaal gesproken zou ik niet een probleem over zulke dingen te maken, maar het is het verschil tussen een A en een C, en ik heb een beurs rijden op mijn examens.

  4. Tot slot, ik ben het maken van dit bericht om twee redenen:

    4.1 Ik wil laten zien wat de moderne programmering gemeenschap denkt over pseudo-code en algoritmische representatie.

    4.2 Ik wil weten wat er in de echte wereld aanvaardbaar; Ik heb het programmeren voor enige tijd, maar ik wil in staat zijn om bij te dragen aan binnenkort open source-projecten, en ik wil niet te stappen op de tenen van iemand. (Hoewel ik ben er vrij zeker van dat dit onderwerp heeft weinig kans van komen in de echte wereld).

Nogmaals, bedankt voor alle hulp / advies.

De vraag is gesteld op 05/11/2008 om 00:12
bron van user
In andere talen...                            


8 antwoorden

stemmen
0

Alles wat ik weet is dat je moet geen code te schrijven nadat u een algorithim.

antwoordde op 05/11/2008 om 00:15
bron van user

stemmen
5

Misschien wilt u een voorbeeld geven. Als uw code richt zich te veel op de taal details die geen deel uitmaken van het algoritme, dan Begrijpelijk, het kan worden gezegd dat u niet-algoritme gemengd met uw algoritme, wat resulteert in een onjuist resultaat.

I Feel voor de redenering, het hele punt van leren is om aan te tonen u het concept te begrijpen, niet te bukken en aan de juiste vakjes.

Een computer kan worden onderwezen naar de universiteit gaan, maar een computer kan niet nog worden geleerd om daadwerkelijk denken voor zichzelf en kennis toe te passen.

Eet en braken mentaliteit is de reden waarom ik nooit afgestudeerd.


Met betrekking tot uw recente commentaar, is het belangrijk om te beseffen pseudocode is niet gedefinieerd. Er zijn over het algemeen hergebruikt termen in, maar het is niet een strenge taal meer dan Engels is (anders zou het zijn een programmeertaal, die kunnen worden ontleed en letterlijk uitgevoerd)

Het belang van de pseudocode is om invulling te geven aan de logica deel van het systeem en niet te overdreven zorgen te maken over de syntax voorbij 'is het zinvol'

Vaak kan dit de pseudocode zowel meer te maken bondig en begrijpelijker.

Pseudo-code heeft ook geen beroep doen op de lezer met een goed begrip van de 'magic syntax' in de taal te kiezen om het te verwerken, alles wat ze nodig hebben om te begrijpen is de gebruikte termen.

Als je aan de gemiddelde persoon een algoritme in perl bijvoorbeeld te geven, zouden de meeste mensen gewoon sterven aan horror omdat ze niet verder kijken dan de dekvloeren van ruis op de lijn.

Terwijl:

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

kunnen sommige coherent sence om iemand thuis in perl te maken, om de gemiddelde codelezer alles wat ze krijgen is een "what the hell heb je gewoon zeggen" reactie. Documenteren helpt ook niet veel.

| 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 

Plotseling wordt het minder dubbelzinnig en een groter percentage van de volkeren kan begrijpen.

Dus misschien de helft van de oefening met het schrijven van het algoritme is een oefening in "Niet alleen heb je te bewijzen dat je het te begrijpen, moet je ook bewijzen dat je kunt uw redenering aan anderen wie niets van het probleem weten te leggen", dat is een essentieel het vermogen je nodig hebt. Als je niet kan communiceren wat je hebt gedaan, kan niemand het gebruiken.

er is ook dit vervelende probleem met de code, die niet bestaat in een algoritme, en dat is de code kan kijken naar rechts, maar kan niet doen wat je denkt dat het doet, en als het niet goed doen, en je don 't realiseren, mensen die het lezen van de code reverse engineering het zal vervuilen en een kopie van een gebroken algoritme. niet goed. het algoritme in menselijke vorm beter vertaalt 'dit is wat ik wil het niet doen'

antwoordde op 05/11/2008 om 00:20
bron van user

stemmen
3

In dat geval moet u zich naar de professor.

antwoordde op 05/11/2008 om 00:23
bron van user

stemmen
0

Het probleem met code in plaats van pseudocode is dat, theoretisch gezien, kan men aannemen dat het code, niet pseudocode. Hoe dan ook, de leraar kwaliteiten u voor uw reactie, niet voor je kennis - je zou beter af zijn het beantwoorden van wat u werd gevraagd, in de termen van de leraar wil worden. Ja, we weten allemaal, je weet wel beter. Maar het is nooit een slechte oefening om te proberen om manier van iemand anders redeneren, weet je. En in ieder geval in mijn land de leraar heeft het recht om u vrij te evalueren, dus ... opschieten met hem!

antwoordde op 05/11/2008 om 00:29
bron van user

stemmen
2

Je moet meer informatie te verstrekken. U werd gevraagd om een ​​algoritme, maar verstrekte code. Heb je de code commentaar? Hoe veel? (Ik wil graag de vraag en uw antwoord te zien, maar misschien is dat het verzoek te veel).

Dus ik zal antwoorden op basis van mijn eigen ervaring. Als ik vragen om een ​​algoritme, dan wil ik iets dat verklaart, in goed Engels, hoe het probleem op te lossen en / of voldoen aan de eisen van de vraag. Schema's zijn ook goed (soms beter). Paragraaf, punt vorm, wat dan ook - het moet gewoon duidelijk, beknopt en correct te zijn.

Als je me te voorzien van code die het bovenstaande, dan volledige merken doet. Echter, als je code die is pure "taal" en nogal cryptische leveren, dan merken zullen verloren gaan - min of meer, afhankelijk van hoe cryptische de code eigenlijk is. Zelfs met code, wil ik graag een diagram te zien als goed, alleen een volledig begrip van de concepten te tonen.

Een van de moeilijkste dingen die ik onder ogen bij het onderwijzen van de programmering is in het krijgen van studenten meer, niet minder schrijven. Soms heb ik moest hen eraan te herinneren dat een opdracht (of examen) is niet een vermelding in de "meest obscure code wedstrijd". ;-)

cheers,

-R

antwoordde op 05/11/2008 om 00:49
bron van user

stemmen
0

Praat met je docent en vraag hem waarom u de vraag verkeerd. Vraag hem wat een juiste antwoord zou zijn, en wat het fundamentele verschil is tussen de twee.

Zou het kunnen dat het algoritme u schreef was niet correct?

antwoordde op 05/11/2008 om 01:56
bron van user

stemmen
0

Code is een algoritme geschreven dat een machine kan uitvoeren. Er is niets in deze definitie, dat zegt dat het ook niet geschreven voor een mens om te begrijpen. Heeft schrijven in Java verdoezelen uw algoritme? Dat zou bepalen of ik met je docent afgesproken.

antwoordde op 05/11/2008 om 02:22
bron van user

stemmen
2

Als een grader voor een geavanceerde algoritmen Natuurlijk zou ik altijd opstijgen punten als er gewoon een gecodeerde oplossing.

Sommige dingen kan gewoon niet zo welsprekend in de code als ze kunnen in het Engels worden uitgedrukt. Pseudo-code is een poging vrij strikte compiler syntax te breken en toelaten dat sommige expressiviteit. Het is een stap in de goede richting van de duidelijkheid, maar niet altijd genoeg.

Vooral in een algoritmen klasse, het is altijd belangrijk om een ​​bewijs van juistheid te bieden (of het nu door middel van inductie, tegenspraak, enz.), Evenals een big-O-notatie voor de ruimte- en tijd- complexiteit van uw algoritme.

antwoordde op 13/11/2008 om 21:04
bron van user

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