web-dev-qa-db-fra.com

En pseudo-code, que signifie: =?

La section intitulée Implémentation algorithmique contient le code suivant:

// Return RC low-pass filter output samples, given input samples,
 // time interval dt, and time constant RC
 function lowpass(real[0..n] x, real dt, real RC)
   var real[0..n] y
   var real α := dt / (RC + dt)
   y[0] := x[0]
   for i from 1 to n
       y[i] := α * x[i] + (1-α) * y[i-1]
   return y

que signifie: = signifie?

25
user33716

: = est l'opérateur d'affectation pour les langues qui utilisent un test d'égalité de signe égal. Le plus connu de ces langages est Pascal. En raison de l'influence de C, la plupart des langues sont passées à = pour l'affectation et == pour les tests. Certains textes et auteurs plus anciens qui ont été formés à de tels styles utilisent: = pour le pseudocode. Vous voyez parfois des flèches <- également pour affectation .

De l'article:

input: an array a of length n with array elements numbered 0 to n − 1

inc ← round(n/2)
while inc > 0 do:
    for i = inc .. n − 1 do:
        temp ← a[i]
        j ← i
        while j ≥ inc and a[j − inc] > temp do:
            a[j] ← a[j − inc]
            j ← j − inc
        a[j] ← temp
    inc ← round(inc / 2.2)

Certaines langues modernes utilisent des flèches pour l'affectation; plus particulièrement R , qui l'utilise pour l'affectation globale tout en utilisant le seul égal (=) pour l'affectation locale.

D'après les concepts de Sebesta des langages de programmation et les notes de classe du Dr K. N. King, nous apprenons que les normes d'affectation remontent beaucoup plus loin que C ou Pascal. Il semble qu'en 1958, lors de la conception d'ALGOL, il a été décidé d'utiliser: = pour la mission. Le comité était composé de représentants américains et européens. Certains des Allemands du comité connaissaient la langue de Plankalkul de Konrad Zuse (qui a été rédigée pendant la Seconde Guerre mondiale mais qui n'a été publiée qu'en 1972 et mise en œuvre avant 2005) et souhaitaient que la mission suive la méthode d'affectation proposée dans cette langue, qui était b+c => a où b + c est affecté à a. Le comité a changé cela en =: au motif que la méthode d'entrée des programmes à l'époque appelée clavier, n'avait pas de ">" à utiliser. Ils ont donc compromis sur le colon égal. Cependant, les Américains connaissant FORTRAN (il n'avait pas de minuscules jusqu'en 1990) voulaient que l'affectation opère à gauche puisque c'était ainsi que FORTRAN le faisait.

Ils ont donc réussi à le changer en: = à la place et ont fait fonctionner l'affectation vers la gauche plutôt que vers la droite dans le style de FORTRAN (étant une langue connue implémentée) plutôt que Plankalkul (une langue pratiquement inconnue en dehors de l'Allemagne et non implémentée) . ALGOL 60 a fortement influencé tous les principaux langages impératifs ultérieurs, y compris Pascal et C. Ainsi, Pascal a conservé la syntaxe d'ALGOL pour l'affectation et les deux ont conservé la gaucherie de l'affectation.

ALGOL a été conçu pour être facile à lire et proche de la notation mathématique. C'était la norme de facto (et essentiellement de jure) pour l'écriture d'algorithmes dans des revues pour les 20+ années à venir. Par conséquent, les instructeurs et les informaticiens formés de 1960 à environ 1980 auraient été familiers avec ce style de notation.

La sortie de IBM 029 Keypunch en 1964 a permis l'utilisation des caractères> et <, provoquant ainsi leur inclusion dans C entre autres.

59
World Engineer

Juste une note rapide et pédante. Pseudocode est assez informel, donc ": =" signifie seulement ce que vous voulez que cela signifie. Comme d'autres l'ont dit, des langages spécifiques tels que Pascal utilisent ": =" pour l'affectation afin d'éviter toute confusion avec "=" pour l'égalité, tandis que d'autres langages utilisent la combinaison de "=" et "==" dans le même but.

En ce qui concerne --- Pseudocode , vous pouvez utiliser "=", "==", "égal", "est affecté à", ": =", "a", "reçoit", ou tout ce qui fait flotter votre bateau, tant que vous êtes cohérent, et que l'utilisation et le contexte dans votre pseudocode sont clairs.

18
S.Robins

Je suppose que c'est l'affectation (je pense que c'est l'opérateur d'affectation dans Delphi), donc dans y [0]: = x [0] vous affectez la valeur de x [0] à y [0].

Mais AFAIK, il n'y a rien de tel qu'un pseudo-code standard, donc en théorie cela pourrait être n'importe quoi: =).

6