2010-03-22 12 views
5

Il seguente codice è un esempio di ciò che penso possa qualificarsi come pseudocodice, poiché non viene eseguito in nessuna lingua ma la logica è corretta.Pseudocodice: una definizione chiara?

string checkRubric(gpa, major) 
    bool brake = false 
    num lastRange 
    num rangeCounter 
    string assignment = "unassigned" 
    array bus['business']= array('person a'=>array(0, 2.9), 'person b'=>array(3, 4)) 
    array cis['computer science']= array('person c'=>array(0, 2.9), 'person d'=>array(3, 4)) 
    array lib['english']= array('person e'=>array(0, 4)) 
    array rubric = array(bus, cis, lib) 

foreach (rubric as fieldAr) 
    foreach (fieldAr as field => advisorAr) 
     if (major == field) 
      foreach (advisorAr as advisor => gpaRangeAr) 
        rangeCounter = 0 
       foreach (gpaRangeAr as gpaValue) 
        if (rangeCounter < 1) 
         lastRange = gpaValue 
        else if (gpa >= lastRange && gpa <= gpaValue) 
         assignment = advisor 
         brake = true 
         break 
        endif 
        rangeCounter++ 
       endforeach 
       if (brake == true) 
        break 
       endif 
      endforeach 
      if (brake == true) 
       break 
      endif 
     endif 
    endforeach 
    if (brake == true) 
     break 
    endif 
endforeach 
return assignment 

Da un paio di settimane ho cercato di creare una chiara definizione di ciò che è in realtà pseudocodice. È relativo al programmatore o esiste una sintassi di clearcut effettiva? Dico pseudocodice è un codice che non viene eseguito, e tu? Grazie (link a questo argomento di benvenuto)

risposta

6

Non esiste una definizione fissa di pseudocodice. È una qualsiasi notazione che ti aspetti che il tuo pubblico capisca per ottenere il tuo punto di vista. L'idea importante è che è destinato agli umani a leggere, non ai computer, quindi non deve essere preciso. Puoi includere i dettagli importanti per la tua esposizione e omettere quelli che non lo sono.

+0

Sono d'accordo con te al 100%. Lo pseudocodice, a mio parere, dipende dal contesto/pubblico fornito e non deve necessariamente essere completamente indipendente dalla lingua. Questo è il motivo per cui non riesco a scuotere la convinzione che lo pseudocodice possa avvicinarsi al limite di essere semplicemente a corto di compilabili. Penso che si possa discutere di più su questa domanda. –

3

spudoratamente strappato da Wikipedia:

pseudocodice è una descrizione compatta e informale ad alto livello di un algoritmo di programmazione computer che utilizza le convenzioni strutturali di un linguaggio di programmazione, ma è destinato per la lettura umana piuttosto che la lettura automatica. Lo pseudocodice generalmente omette i dettagli che non sono essenziali per la comprensione umana dell'algoritmo, come dichiarazioni di variabili, codice specifico del sistema e subroutine.

C'è molto codice che non viene eseguito. Ciò non significa che sia pseudocodice. Il tuo "psuedocode" ha un sacco di cose extra che i non programmatori non capiranno. Invece di essere pseudocodice, il tuo linguaggio "psuedocode" è molto, molto vicino a un linguaggio reale.

+0

Questa sembra essere la definizione più chiara. –

0

I miei due centesimi su questo:

dico pseudocodice è un qualsiasi codice che fa non eseguire, come su di te? Grazie (collegamenti a questo argomento benvenuto)

Questo non è quello che penso quando si pensa alla sua definizione. Uno pseudocodice è la procedura che il programma eseguirà per eseguire un'attività in modo più dettagliato rispetto alla descrizione dell'algoritmo.

Una cosa in particolare che trovo estremamente importante su come scrivere uno pseudocodice è che, deve essere compreso da tutti in modo che ogni individuo possa "portarlo" alla lingua desiderata. In altre parole, deve essere indipendente dal linguaggio.

Proprio come una critica costruttiva, non considererei il tuo esempio come pseudocodice per vari motivi ma, specialmente perché, stai usando la sintassi e le convenzioni che assomigliano a un particolare linguaggio di programmazione. Dico che gli pseudocodici dovrebbero essere agnostici di linguaggio di programmazione per poter essere portati a diversi linguaggi di programmazione reali da persone diverse.

MODIFICA: Probabilmente un'altra regola che aggiungerei alla mia definizione è che deve somigliare al linguaggio umano piuttosto che al linguaggio di programmazione. Come in, uguale a anziché ==, assegnare anziché =. La ragione di questo è che, ad esempio, gli operatori di assegnazione e di uguaglianza sono diversi nelle diverse lingue.

+0

@Anzurio, direi che "==" è ampiamente utilizzato abbastanza da essere accettabile in pseudo-codice. Tuttavia, il suo uso di "come" e il suo uso di espressioni reali per le sue condizioni invece di spiegazioni in inglese di ciò che viene testato è ciò che lo rende non lo pseudo-codice. –

+0

@ Michael, hai ragione ma quella è stata la prima "esemplificazione" che mi è venuta in mente quando ho cercato di esporre che preferirei usare le parole o la simbologia agnostica della lingua. "I lati, lavorando con entrambi, VB.NET e C#, mi sono venuti in mente abbastanza facilmente. – Anzurio

1

Lo pseudocodice dovrebbe, in teoria, essere indipendente dall'implementazione. Presenta passaggi logici in un linguaggio semplice di cosa fare. È inteso per l'interpretazione umana, non per l'esecuzione della macchina.

L'esempio di OP è un po 'più vicino al codice effettivo rispetto allo pseudocodice. Ad esempio, ++ non è stato trovato in tutte le lingue. Potrebbe anche avere un significato molto diverso negli altri.

1

Bene, se non compilo/collego il mio codice C++, non verrà eseguito, quindi non penso che "Il codice che non viene eseguito" sia una definizione accettabile.

Allo stesso modo, i linguaggi di scripting non vengono eseguiti, spesso vengono interpretati in tempi diversi.

La mia definizione di pseudo codice sarebbe:

"[Concise] Il codice che è la sintassi agnostico, scritta per trasmettere una funzione, comportamento, o algoritmo""

+0

Interessante. Sembra che sarebbe solo un saggio per me - niente di sbagliato con la scrittura di una prova credo. –

+0

Aggiunto "conciso" per te :) – Alan

1

pseudo-codice è un qualsiasi compatto, . spiegazione leggibile di un algoritmo o un programma Dal momento che il programma non è leggibile per me, direi che non è pseudo-codice abbastanza Ecco un esempio di pseudo-codice:.

 
def sum(x): 
    result = 0 
    for each entry in x: 
     add current entry to result 
    report result 

oppure, in un stile leggermente diverso:

È possibile utilizzare elementi di una particolare sintassi (e, in effetti, il mio pseudo-codice tende ad assomigliare molto a Python), ma deve essere comprensibile da un vasto pubblico e non deve essere ostruito dalla sintassi . Ad esempio, io uso "+ =", ma questo è perché è molto compatto e conveniente, non perché è richiesto. Se hai trovato "endforeach" utile e conveniente nella tua esposizione, sarebbe stato ok; tuttavia, direi che una cosa del genere non appartiene allo pseudo-codice in quanto sembra più stentato che utile o esplicativo.

+0

Questa è la cosa, non trovo conveniente scrivere "endforeach", ma sapevo che alcuni lo fanno. Ho incluso un esempio misto, "foreach" non è in tutte le lingue ma "++" lo è quasi sempre. Ho usato "end" invece di parentesi graffe. Non scrivo quasi mai pseudocodici che altri userebbero tranne me stesso (di solito ha una durata di 24 ore prima che venga trasferito al codice), motivo per cui non sottolineo che è indipendente dalla lingua. La mia documentazione interna è sempre in linguaggio naturale. –

0

Lo pseudocodice è ciò che scriveresti sulla lavagna se desideri ottenere le tue idee in modo rapido e chiaro. In pratica, per me, è molto simile a un linguaggio di scripting non tipizzato, ma con requisiti sintattici molto più sciolti. Per me somiglia molto a C perché, francamente, la maggior parte dei programmatori abbozza un linguaggio che è una variante della sintassi C e quindi l'intuizione è più facile per più persone (assomigliava a Pascal, ma perché era una delle prime lingue che ho imparato a scuola).

+0

Vero. Tutto il mio pseudocodice non lascia mai la lavagna. Questo è il motivo per cui penso che lo pseudocodice, sebbene più tipicamente pensato come più vicino al linguaggio naturale, possa essere esteso al linguaggio specifico che tu e i tuoi collaboratori userete. Di solito le persone che lavorano sullo stesso progetto useranno tutte la stessa lingua, ma di nuovo lavoro solo in piccoli gruppi o da solo. –

1

Schema di un programma, scritto in un modulo che può essere facilmente convertito in istruzioni di programmazione reali.

Lo pseudocodice non può essere compilato né eseguito e non esistono regole di formattazione o sintassi reali. È semplicemente un passo - uno importante - nella produzione del codice finale. Il vantaggio dello pseudocodice è che consente al programmatore di concentrarsi sugli algoritmi senza preoccuparsi di tutti i dettagli sintattici di un particolare linguaggio di programmazione.