Principe du pfp

Discutez d'informatique ici !
Avatar de l’utilisateur
Rockleader
Habitué(e)
Messages: 2126
Enregistré le: 11 Oct 2011, 18:42

Principe du pfp

par Rockleader » 15 Déc 2013, 17:27

Bonsoir; je souhaiterais revenir un peu sur un sujet dont nous avions parlé relatif à la spécifications et vérifications de programme. Notamment avec la méthode de preuve du pfp (principe de plus faible pré-condition)

J'ai pu apprendre au cours de ce semestre les méthodes en fonctions des actions: affectation; condition; boucle.

Ainsi que la recherche de l'invariant de la boucle.

En revanche; je me posais encore deux questions:

-La première est une lacune que je n'arrive pas à éradiquer avec les exemples de mon cours: A savoir comment trouver et proposer une variante au programme lors d'une correction totale.
Pour l'invariant il suffit plus ou moins de regarder la condition de boucle et d'adapter avec l'initialisation des variables; mais pour la variantes je n'ai absolument pas compris comment la déterminer.


- La seconde est plus une question du curiosité car ce point n'est pas abordé dans mon cours.

Tout mes exemples et cours sur le sujet ne montrent la façon de procéder qu'avec un seul type de condition

Généralement c'est le triplet basique:

Pré Condition P

if (condition) ou while (condition) B
Action a

Post Condition Q

Pour faire ça aucun soucis; mais maintenant je saurais bloqué je pense si je devais effectuer un calcul en "cascade"

c'est à dire

P

while B
if B2
a
end if;
end loop;

Q

Dès que j'ai une opérande if ou while imbriqué dans une autre je ne sais plus faire. Est ce que vous avez des idées là dessus ?
Cette histoire est entièrement vraie puisque je l'ai inventé du début à la fin !



Avatar de l’utilisateur
messinmaisoui
Habitué(e)
Messages: 1897
Enregistré le: 24 Oct 2007, 13:52
Localisation: Moselle (57)

par messinmaisoui » 16 Déc 2013, 15:05

Hello RockLeader,

Invariant de la boucle ?
Bon je n'emploie pas ce vocabulaire ...

... Sinon tu saurais réaliser un algo, pour ce type de problème,
avec des while imbriqués ?
C'est pour voir ce qui coincerait chez toi ... :space:


Dans un tableau T à une dimension [1..100]
initialisé à 0, J'ai stocké une donnée: l'âge (arrondi) par exemple
Ainsi pour une personne i, T[i] représente son âge
ex T[1] = 25, T[2] = 48, ....

J'ai rentré des personnes T[1], T[2] etc ... jusqu'à un certain indice j
qu'on ne connait pas à l'avance
Dès que T[j] = 0 c'est donc qu'il n'y a plus de personnes
ex : T[1] = 25,T[2] = 48, ... ,T[23] = 15,T[24]=0 ... dans ce cas il y a des données pour 23 personnes


Dans un autre tableau T2 à 2 dimensions [1..100 , 1..10]
la 1ere dimension 1..100 correspond à l'identification de la personne, comme dans T
la 2ème dimension contient un indice de note, pour une personne on peut avoir de une (mini) à 10 notes (arrondies)

ex T2[1,1] = 12, T2[1,2] = 5, T2[2,1] = 15, T2[2,2] = 17, T2[2,3] = 8, ...

Voici le challenge : Ecrire un algo
1) Qui cherche dans T, l'indice de la personne la + agée, la + jeune,
S'il y a plusieurs cas donner l'indice correspondant le + élevé
ex: si T[3] = T[23] = 15 alors donner 23 en réponse ...

2) Afficher pour toutes les personnes la moyenne de ses notes

3) Donner l'indice de la personne avec la + mauvaise moyenne et la meilleure moyenne
S'il y a plusieurs cas donner l'indice correspondant à la personne le + élevé ...



un exemple de données
=>
T[1] = 25,T[2] = 48, T[3] = 10, T[4]= 0
T2[1,1] = 12, T2[1,2] = 5, T2[2,1] = 15, T2[2,2] = 17, T2[2,3] = 8,T2[3,1] = 10


affichage du programme
=>
+ jeune : 3
+ vieux : 2

1 moyenne : 17/2
2 moyenne : 40/3
3 moyenne : 10

+ mauvaise moyenne : 1
meilleure moyenne : 2
Mon avatar me fait peur, est-ce normal docteur ?

 

Retourner vers ϟ Informatique

Qui est en ligne

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