Ouais on peut aussi dire qu'une variable représente une fluctuation électrique à un moment t ou une interaction de plusieurs électrons avec les atomes constituant la barrette mémoire.
Ouais on peut aussi dire qu'une variable représente une fluctuation électrique à un moment t ou une interaction de plusieurs électrons avec les atomes constituant la barrette mémoire.
Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.
Tiens, ça me rapelle mon prof de maths en prépa qui nous disait :
C'est vrai quoi... comme si une constante pouvait varierIls sont c... ces physiciens, avec leur méthode de variation de la constante!
tout dépend comment tu déclare ta constante.
que ce soit en C ou en C++
on déclare une constante avec #DECLARE MA_CONSTANTE valeur
il s'agit d'une directive de précompilation qui va indiquer au compilo de scruter ton code afin de remplacer toutes les occurrence du symbole MA_CONSTANTE par la valeur associée.
En C++ est apparut le mot clé const.... mais pas de bol... le mot clé const ne déclare pas une vraie constante, mais une variable qui demeure constante pendant le code concerné.
void mafonction(const int mavariable) {
...
}
indique que la variable mavariable doit rester "constante" pendant l'exécution du code afin de prévenir toute instruction du genre
mavariable = 0;
par exemple. C'est une espèce de développement par contrainte. Cependant il s'agit BIEN d'une VARIABLE. bon il s'avere qu'en C++ non managé, il fou tout sur la pile d'appel et que dans ce cas il copie la valeur directement de mavariable sur la pile d'appel vu que c'est un appel par valeur, mais dans la mesure ou cette valeur occupe bel et bien un espace mémoire à l'exécution, dans la mémoire d'exécution, c'est une VARIABLE, qui "aurait" pu varier au cours du temp, d'ailleurs elle peut varier, sous windows un autre process peut venir y écrire ce qu'il veut ce qui n'est pas le cas d'une constante qui par définition EST TOUJOURS CONSTANTE quelque soit la circonstance, le contexte.
on ne peut parler de constante que lorsque la zone mémoire en question est dans le code est par conséquent instancié en meme temps que le programme.
si on va jusqu'au code machine
une constante c'est le fait de charger une valeur FIGEE et invariable dans un registre :
MOV AX, 4
ici 4 est une constante, pas une variable.
MOV AX, [BX]
charge une variable (pointée par BX) dans AX. meme si la valeur pointée par BX est invariable pendant la durée du programme cela n'en demeure pas moins une VARIABLE.
maintenant ces définitions ne sont valables qu'en informatique... cela va de soit.
l'expression "variable constante" n'a donc rien de choquant ni de paradoxale en terme d'informatique, d'ailleurs meme en math/physiques, car les constantes peuvent être variables...
tout dépend comment tu déclare ta constante.
que ce soit en C ou en C++
on déclare une constante avec #DECLARE MA_CONSTANTE valeur
il s'agit d'une directive de précompilation qui va indiquer au compilo de scruter ton code afin de remplacer toutes les occurrence du symbole MA_CONSTANTE par la valeur associée.
En C++ est apparut le mot clé const.... mais pas de bol... le mot clé const ne déclare pas une vraie constante, mais une variable qui demeure constante pendant le code concerné.
void mafonction(const int mavariable) {
...
}
indique que la variable mavariable doit rester "constante" pendant l'exécution du code afin de prévenir toute instruction du genre
mavariable = 0;
par exemple. C'est une espèce de développement par contrainte. Cependant il s'agit BIEN d'une VARIABLE. bon il s'avere qu'en C++ non managé, il fou tout sur la pile d'appel et que dans ce cas il copie la valeur directement de mavariable sur la pile d'appel vu que c'est un appel par valeur, mais dans la mesure ou cette valeur occupe bel et bien un espace mémoire à l'exécution, dans la mémoire d'exécution, c'est une VARIABLE, qui "aurait" pu varier au cours du temp, d'ailleurs elle peut varier, sous windows un autre process peut venir y écrire ce qu'il veut ce qui n'est pas le cas d'une constante qui par définition EST TOUJOURS CONSTANTE quelque soit la circonstance, le contexte.
on ne peut parler de constante que lorsque la zone mémoire en question est dans le code est par conséquent instancié en meme temps que le programme.
si on va jusqu'au code machine
une constante c'est le fait de charger une valeur FIGEE et invariable dans un registre :
MOV AX, 4
ici 4 est une constante, pas une variable.
MOV AX, [BX]
charge une variable (pointée par BX) dans AX. meme si la valeur pointée par BX est invariable pendant la durée du programme cela n'en demeure pas moins une VARIABLE.
maintenant ces définitions ne sont valables qu'en informatique... cela va de soit.
l'expression "variable constante" n'a donc rien de choquant ni de paradoxale en terme d'informatique, d'ailleurs meme en math/physiques, car les constantes peuvent être variables...
Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.
merci d'aprécié
lol
oui je me suis déchainé sur ce coup la
Lol effectivement
Je m'incline
Qu'est ce qui faut pas entendre tout de même...
(Vous me direz, c'est comme le jour où j'ai appris "2 * 3 = 0 (mod 6)" alors que jusqu'à présent on m'avait dit "a * b = 0 => a = 0 ou b = 0" et ici 2 != 0 et 3 != 0... J'ai d'ailleurs arrêté d'aimer les maths ce jours là )
Au lycée on t'apprends
a * b = 0 implique a = 0 ou b = 0 (jusque là tout va bien)
Je suis arrivé en cours de crypto, et voilà mon prof qui nous explique comment compter dans l'espace Z/26Z (avec Z ensemble des entiers relatifs)
Cet ensemble contient uniquement les nombres entiers de 0 à 25 (dans le cas de la cryptographie, c'est plus pratique ^^) et on "compte modulo 26" (je sais pas comment on dit, mais moi j'aime bien dire comme ca...)
On sais aussi que pour tout entier m, n de Z, m = n (mod 26) <=> m = n + k * 26 (avec k appartenant à Z)
Dans le cas d'au dessus, j'ai compté modulo 6 (au lieu de 26) et j'ai donc
2 * 3 = 0 (mod 6)
car dans Z, 2 * 3 = 6 et 6 = 0 + 1 * 6...
Je peux donc écrire 2 * 3 est congru à 0 (mod 6) (le signe "est congru à" est un = avec 3 traits) que l'on écrit généralement 2 * 3 = 0 (mod 6)
On a bien 2 != 0, 3 != 0 et pourtant 2 * 3 = 0 (mod 6)
Pire que ca : 2 != 0 (mod 6) et 3 != 0 (mod 6) et pourtant 2 * 3 = 0 (mod 6)
pour info, le calcul modulo s'effectue avec % en C/C++/C# (et vous pouvez vérifier que (2 * 3) % 6 == 0 est true
Justement, je sais ce qu'est un modulo mais je ne voyais pas ce que ca venais faire. j'ai pas tout compris, étant fortement allergique au notation mathématique mais je vois ou tu veux en venir. Merci pour l'explication.
Cela ne me choque pas, c'est normal puisque tu fais une division d'une entité par elle même, le reste est forcement nulle.(2 * 3) % 6 == 0 est true
Toujours rien de choquant (même chose qu'au dessus) puisque la division par 6 du produit de 2*3 donne forcement un reste de 0 avec un résultat de 1.2 * 3 = 0 (mod 6)
J'aurais compris ton trouble si tu m'avais dit que cela t'avais choqué d'apprendre que 1 + 1 = 3 .
Je m'explique, cette notation est plus philosophiqu que mathématique puisqu'elle prétend que la somme de deux entités n'est pas égal à leur simple somme mais à leur somme + une valeur ajouté. Dis autrement : Lorsque deux humains travaillent ensemble, on n'obtient pas juste la somme de leur capacité propre mais un résultat encore plus important.
Ou alors dans le monde de l'informatique, tu as certainement du être choqué par 1 + 1 = 1
Alors que dans notre enfance on nous apprenais à compter comme dans ce poème :
Page d'écriture
Deux et deux quatre
quatre et quatre huit
huit et huit font seize. . .
Répétez! dit le maître
Deux et deux quatre
quatre et quatre huit
huit et huit font seize.
Mais voilà l'oiseau-lyre qui passe dans le ciel
l'enfant le voit
l'enfant l'entend
l'enfant l'appelle:
Sauve-moi joue avec moi oiseau!
Alors l'oiseau descend
et joue avec l'enfant
Deux et deux quatre. . .
Répétez! dit le maître
et l'enfant joue
l'oiseau joue avec lui. . .
Quatre et quatre huit
huit et huit font seize
et seize et seize qu'est-ce qu'ils font?
Ils ne font rien seize et seize
et surtout pas trente-deux de toute façon
et ils s'en vont.
Et l'enfant a caché l'oiseau dans son pupitre
et tous les enfants entendent sa chanson
et tous les enfants entendent la musique
et huit et huit à leur tour s'en vont
et quatre et quatre et deux et deux
à leur tour fichent le camp
et un et un ne font ni une ni deux
un à un s'en vont également.
Et l'oiseau-lyre joue
et l'enfant chante
et le professeur crie:
Quand vous aurez fini de faire le pitre!
Mais tous les autres enfants écoutent la musique
et les murs de la classe s'écroulent tranquillement
Et les vitres redeviennent sable
l'encre redevient eau
les pupitres redeviennent arbres
la craie redevient falaise
le porte-plume redevient oiseau.
Jacques Prévert (1900-1977)
Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.
Ca c'est en élec que 1 + 1 = 1... ca se traduit en "1 ou 1 = 1" et c'est perturbant aussi
Le problème des modulos, c'est juste une histoire d'espace dans lequel on travaille... Par comparaison, sur certains types de surfaces, on arrive à obtenir des triangles rectangles équilatéraux (oui oui, avec 3 angles à 90°) et pourtant on t'a appris pendant des années qu'un triangle équilatéral a trois angles à 60° et que la somme des angles d'un triangle est de 180°... or celui là a trois angles à 90° soit somme des angles = 270°
On se demande pourquoi je n'aime plus la géométrie non plus
(Le pire, c'est que ce soit la cryptographie qui travaille dans des ensembles finis à la noix, ou la topologie, j'adore ca )
sur surface plane. Il faut être précis.on t'a appris pendant des années qu'un triangle équilatéral a trois angles à 60° et que la somme des angles d'un triangle est de 180°
A l'école on nous apprend la gémotrie sur surface plane !!!
Sur surface sphérique, comme les cotés de tes triangles sont courbés (avec un angle calculable) on doit pouvoir déssiner des triangles rectangles isocèles.
Je pense même que la somme des angles de courbures de tes cotés est égal à 90 °c (270°c - 180°c). Enfin c'est à vérifier, je ne suis pas mathématicien mais un biologiste reconvertis à l'informatique.
Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.
On peut effectivement avoir un triangle à 3 angles droits sur une surface sphérique. Il suffit de prendre pour exemple la terre. On prend 2 méridiens ayant un angle de 90° entre eux. Ils coupent l'équateur et forment des angles de 90° avec lui.
Voilà voilà, on s'écarte quand même vachement du sujet là...
Tiens au fait, saviez vous qu'il y a autant de points sur un demi-cercle que sur une droite ?
C'est exactement ce que je disais.
Ce que je reproche à l'école c'est justement de ne pas préciser ce genre de choses quand on te les apprend... on te dis "c'est comme ca et pas autrement" seulement plus tard, on te dis "ce qu'on t'a appris n'est valable que dans un certain cas" contredisant ainsi le "et pas autrement" de ton prof d'avant qui si ca se trouve est aussi le nouveau prof que tu as
Il n'y a qu'en physique du mouvement où on m'a annoncé de suite "dans un espace supposé galiléen, blablabla blabla blablablablabla blabla" (remplacer les bla par une propriété de la physique de mouvement )
EDIT :Logique vu qu'il y en a une infinité sur chaque
En fait j'aurai pas du metre "correction" dans mon titre, mais j'ai pas trouvé d'autre mot sur le moment (sachant que je sais très bien que le but étant de se faire comprendre du plus grand nombre, et que le plus grand nombre a très bien compris à quoi servait l'article )
C'est un peu plus subtil que ça. Lorsqu'on parle d'infini, faut faire assez attention, ca peut être des infinis d'ordre différent. (Tout ne tend pas vers l'infini à la même vitesse en gros)
Bref, l'astuce est de faire une bijection entre la droite et le demi-cercle. suffit de faire un ptit dessin. tracer une droite sur un bout de papier, et un demi-cercle au dessus. En traçant des traits partant du centre du demi cercle, et coupant celui-ci et la droite, on voit bien qu'a un point du demi-cercle correspond exactement un point de la droite, les extrémités du demi cercle étant l'infini...
C'est vrai que c'est pas con comme raisonnement... dans ce genre de truc, j'ai beaucoup aimé la théorie sur l'effondrement de la fonction d'onde (et pour être plus exact l'expérience du chat de Schrödinger
Et dire que tout cela ne sont que des observations du monde du vivant, des interactions électromagnétique, ... L'homme n'a rien inventé mais juste observé et utilisé des mots pour définir ces phénomènes.
Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.
Comme je suis maso, je vais vous montrer que j'ai tort
dans f2, param est constant, et pourtant c'est bien une variable...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 public void f1() { int a = 0; f2(a); a = 1; f2(a); } public void f2(const int param) { }
Non.
Param est une constante qui est initialisé à la valeur que possède la variable a au moment de l'appel de la fonction.
En mémoire on a une nouvelle case créé pour Param et non a qui est maintenu constante par je ne sais qu'elle moyen.
Tu pourrais le vérifié en passant ta variable à un thread qui récupère une constante, puis en faisant varier a et tu afficherais a et param et tu verrais qu'il n'aurait pas la même variable.
Donc tu n'as pas une variable constante mais une constante qui est initialisé à la valeur d'une variable à un moment t.
Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.
c'est pas con
mais avec un passage par référence... ca peut marcher
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager