Algo : quelques petites question sur un court programme

Discutez d'informatique ici !
glaglagla
Membre Naturel
Messages: 20
Enregistré le: 20 Oct 2012, 17:24

Algo : quelques petites question sur un court programme

par glaglagla » 05 Mai 2013, 12:04

Bonjour à tous,
Je débute en algorithme et j'ai trouvé sur Internet ce petit programme pour m'entraîner, mais j'ai quelques questions (sûrement idiotes) à poser pour m'éclaircir un peu les idées... Voici le programme :


Dim x as Integer
Dim y as Integer
Dim temp as Integer

Private Sub calcul (ByVal a, ByVal b, ByRef R As Integer)
Dim temp As Integer
temp = a + b
a = temp + 1
b = temp - 1
R = temp
MsgBox "Dans sous-programme, A = " &a& "B=" &b& "TEMP=" &temp& "R=" &R&
End Sub

Sub Private Sub Form_Load()
x=1: y=2:temp=4
Call calcul(x,y,temp)
MsgBox"Dans Programme principal, X=" &x& "Y=" &y& "temp=" &temp&
x=2: y=3:temp=5
Call calcul(temp,y,x)
MsgBox"Dans Programme principal, X=" &x& "Y=" &y& "temp=" &temp&
End Sub

Mes questions sont les suivantes :
- Quelle différence y a t-il entre le "temp" du programme principal et celui du sous-programme ?
- Que va afficher l'exécution de ce programme ?
- Comment expliquer le passage de paramètre pour le premier appel à calcul (x,y,temp) ?

Merci de votre aide :we:



skwouale
Membre Naturel
Messages: 40
Enregistré le: 05 Avr 2013, 14:00

par skwouale » 05 Mai 2013, 21:30

Mes questions sont les suivantes :
- Quelle différence y a t-il entre le "temp" du programme principal et celui du sous-programme ?
--> celui du sous-programme n'a rien à voir avec cleui du programme principal, pour faire simple, tupeux remplacer ds le codage du sous programme la variable temp par tot, ca sera pareil.
à noter que pour le message d'affichage du sous programme, ils ont mis "TEMP" en majuscule pour faire la différence

- Que va afficher l'exécution de ce programme ?
>>remplacer les variables par leurs valeurs ..

- Comment expliquer le passage de paramètre pour le premier appel à calcul (x,y,temp) ?
>>remplacer les variables par leurs valeurs ...
si ce programme ets d sun plus grand ou un problème plus général; faut avoir le ocntexte là je crois...

Avatar de l’utilisateur
ampholyte
Membre Transcendant
Messages: 3940
Enregistré le: 21 Juil 2012, 08:03

par ampholyte » 06 Mai 2013, 09:13

Bonjour,

Quelle différence y a t-il entre le "temp" du programme principal et celui du sous-programme ?


Il existe deux types de variables. Les variables "locales" et les variables "globales".

Les variables locales sont des variables qui ne peuvent être utilisées qu'à l'intérieur d'une fonction. Lorsque la fonction est terminée, ces variables sont détruites de la mémoire.

A l'inverse, les variables globales sont des variables qui peuvent être utilisées n'importe où, elles peuvent être déclarées à l'exterieur des fonctions mais peuvent également être déclarée à l'intérieur d'une fonction précédée d'un mot clef ("global", "static", ...)

Dans ton exemple :

Private Sub calcul (ByVal a, ByVal b, ByRef R As Integer)
Dim temp As Integer
temp = a + b
a = temp + 1
b = temp - 1
R = temp
MsgBox "Dans sous-programme, A = " &a& "B=" &b& "TEMP=" &temp& "R=" &R&
End Sub


On remarque qu'il y a la déclaration de la variable "temp" dans la fonction. Donc il s'agit d'une variable locale qui sera détruite à la fin de la fonction.

Dim temp as Integer

Sub Private Sub Form_Load()
x=1: y=2:temp=4
Call calcul(x,y,temp)
MsgBox"Dans Programme principal, X=" &x& "Y=" &y& "temp=" &temp&
x=2: y=3:temp=5
Call calcul(temp,y,x)
MsgBox"Dans Programme principal, X=" &x& "Y=" &y& "temp=" &temp&
End Sub


Ici la variable temp est déclarée à l'extérieur d'une fonction donc il s'agit d'une variable globale qui peut être utilisée n'importe où (elle ne sera pas détruite à la fin de la fonction).

Personnellement, je recommande toujours de donner des noms différents à mes variables (entre globales et locales surtout) pour éviter toutes confusions lors de la relecture du code.

Il aurait été préférable de renommer l'une des deux variables. Je penserais plutôt à la variable globale car "temp" correspond à "temporaire" ce qui n'est pas le cas d'une variable globale :).

Dim result as Integer

Sub Private Sub Form_Load()
x=1: y=2:result=4
Call calcul(x,y,result)
MsgBox"Dans Programme principal, X=" &x& "Y=" &y& "result=" &result&
x=2: y=3:result=5
Call calcul(result,y,x)
MsgBox"Dans Programme principal, X=" &x& "Y=" &y& "result=" &result&
End Sub


Que va afficher l'exécution de ce programme ?


Dans Programme principal, X= 4 Y= 2 result= 3
Dans Programme principal, X= 6 Y= 4 result= 5

[/quote]Comment expliquer le passage de paramètre pour le premier appel à calcul (x,y,temp) ?[/quote]

Sans le passage de paramètre, il serait impossible de récupérer les informations (a, b, R), permettant d'afficher le message du dessus.

 

Retourner vers ϟ Informatique

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 15 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite