Algorithmique 2

Discutez d'informatique ici !
Maths32
Messages: 7
Enregistré le: 14 Nov 2010, 14:52

algorithmique 2

par Maths32 » 15 Nov 2010, 22:57

Bonsoir,

Veuillez m'aider s'il vous plait

voici le programme serarien avec les modules utilisés:
programme seraien
a,b,c :entier
debut
a<-3
b<-calcul (a,7,2)
c<-calcul (b,b-2,a)
afficher a,b,c
fin
fonction calcul (E/S:a: entier,E:b,c :entier):entier
debut
a<-a+b div c
c<-c div 2
retourner (a+b+c)
fin
donner l'état variables a,b e c du programme serarien en fin d'exécution de ce programme.

Rappels:
E signifie que le paramètre est en entrée, donc le transfert se fait par valeur (transfert classique,d'ailleurs E est optionnel).
E/S signifie le paramètre est en entrée/sortie,donc le transfert se fait par adresse.
Cela signifie que toute modification sur le paramètre affectera la variable qui lui a été transférée.
div permet d'obtenir le résultat de la division entière d'un nombre (par exemple,25 div 3 donne 8 car 3*8=24 et il reste 1)

c'est confirmé!

programme seraien
a,b,c :entier
debut
a<-3
b<-calcul (3,7,2)=(3-7-2)=-6
c<-calcul (b,b-2,a) =(-6-(-6-2)-3)=-1
afficher 3,-6,-1
fin
fonction calcul (E/S:3: entier,E:-6,-1 :entier):entier
debut
a<-a+b div c=a<- 3+(-6) div3=-3div3=0
c<-c div 2=-1div2=0
retourner (a+b+c)=(0+(-6)+0)=-6
fin


je vous remercie pour votre aide



Maths32
Messages: 7
Enregistré le: 14 Nov 2010, 14:52

par Maths32 » 18 Nov 2010, 19:28

pouvez vous m'aider SVP

Maths32
Messages: 7
Enregistré le: 14 Nov 2010, 14:52

par Maths32 » 19 Nov 2010, 14:34

Pouvez vous confirmer?

Dans ce qui suit, je note [x], y et z les éléments apparaissants dans la fonction calcul pour les distinguer des a, b et c du programme principal, je trouve que c'est plus parlant, surtout pour le deuxième appel de la fonction. Je mets [x] pour mettre en évidence que le premier paramètre est passé par adresse.

Avec ces notations, la fonction calcul s'écrit donc
fonction calcul (E/S:[x]: entier,E:y,z :entier):entier
debut
[x];)[x]+y div z
z;)z div 2
retourner ([x]+y+z)
fin

b;)calcul (a,7,2) => appel de la fonction calcul(3,7,2)
[x]=3, y=7, z=2
[x]+y => 3+7=10
[x]+y div z => 10 div 2 = 5
[x];)[x]+y div z => [x] = 5 donc, le paramètre à l'adresse correspondante, soit a, vaut 5.
z div 2 => 2 div 2 = 1
z;)z div 2 => z = 1
retourner ([x]+y+z) => retourner(5+7+1=13)
d'où, comme b;)calcul (a,7,2), b=13.
A la fin de cette partie, a=5, b=13 et c n'est pas affecté pour le moment.

c;)calcul (b,b-2,a) => appel de la fonction calcul(13,11,5)
[x]=13, y=11, z=5
[x]+y => 13+11=24
[x]+y div z => 24 div 5 = 4
[x];)[x]+y div z => [x] = 4 donc, le paramètre à l'adresse correspondante, soit b, vaut 4.
z div 2 => 5 div 2 = 2
z;)z div 2 => z = 2
retourner ([x]+y+z) => retourner(4+11+2=17)
d'où, comme c;)calcul (b,b-2,a), c=17.

A la fin du programme, a=5, b=4 et c=17.

Doraki
Habitué(e)
Messages: 5021
Enregistré le: 20 Aoû 2008, 11:07

par Doraki » 19 Nov 2010, 15:30

Tu es sûr que "a+b div c" c'est "(a+b) div c" et pas "a+(b div c)" ?
Généralement la division est prioritaire sur l'addition.

Pour le reste tu m'as l'air de faire ce qu'il faut.

Maths32
Messages: 7
Enregistré le: 14 Nov 2010, 14:52

par Maths32 » 19 Nov 2010, 23:48

c'est confirme!
programme serarien
a,b,c : entier

debut
a<3
bb<7
cc<7
afficher 3,7,7
fin

fonction calcul (E/S:a:entier,E:b,c:entier):entier
debut

aa<3+7 div 2=0
cc<2 div 2=0
retourner (a+b+c)=(0+7+0)=7
fin

 

Retourner vers ϟ Informatique

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 3 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