Algorithmique et Langage C
www.polytech.unice.fr/žvg/index-xidian.html
Granet Vincent - Vincent.Granet@univ-cotedazur.fr
Xi’an - Octobre 2019 - Avril 2020
Actions élémentaires
Modèle de programme
D P R
f : D → R
1
lecture d’une donnée
2
exécution d’une fonction/procédure prédéfinie
3
écriture d’un résultat
Lecture d’une donnée
Entrée standard
Identificateur de variable
v a r i a b l e x : réel
{Un réel est disponible sur l'entrée standard}
lire(x)
{le réel lu est en mémoire centrale et le nom x permet de le désigner}
Exécution d’une fonction prédéfinie
paramètre effectif « donnée » appel de fonction
{le nom x désigne un réel en mémoire}
cos(x)
{l'appel de cos(x) a calculé le cosinus de x}
un résultat unique
il est dans la notation de l’appel de la fonction
Exécution d’une procédure
si 0 ou plusieurs résultats paramètres effectifs « résultat »
{le nom x désigne un réel en mémoire}
p(x, y)
{l'appel de la procédure p sur la donnée x a calculé un résultat désigné par l'identificateur de variable y}
Écriture d’un résultat
Sortie standard
Symétrique de la lecture
{le nom y désigne un réel en mémoire}
écrire(y)
{la valeur désignée par y est écrite sur la sortie standard}
Affectation
presque dans tous les langages notre opérateur algorithmique ← v ←e
v a r i a b l e y : réel y ← 3.14159265
{l'identificateur y≈π} y ← cos(x)
{−16y61}
Axiomatique de Hoare
Affirmations/Assertions
Antécédent/Conséquent (pré/post conditions)
{ P }
E
{Q }Preuve de programme Règles de déduction
Affectation :
{ P }x ←e
{Q = Pex}Q est égale à P dans laquelle toutes les apparitions libres de e ont été remplacées par x
{x=9 ⇒x+1=9+1=10}
y ←x+1
{y=10}{x=9 ⇒x+1=9+1=10}
x ←x+1
{x=10}Algorithme complet du calcul d’un cosinus
v a r i a b l e x, y : réel
{Un réel est disponible sur l'entrée standard}
lire(x)
{le réel lu est en mémoire centrale et le nom x permet de le désigner}
y ← cos(x)
{la variable y désigne le cosinus de x et −16y61} écrire(y)
{le cosinus de x est écrit sur la sortie standard}
/ Ce programme C écrit sur la sortie standard le cosinus d'un réel lu sur l'entrée standard.
Auteur : V. Granet (vg@unice.fr) /
#i n c l u d e <stdio.h>
#i n c l u d e <stdlib.h>
#i n c l u d e <math.h>
i n t main( v o i d) { d o u b l e x, y;
/ un réel est disponible sur l'ES /
scanf("%lf", &x);
/ le réel lu est en mémoire centrale et le nom x permet de le désigner /
y = cos(x);
/ la variable y désigne le cosisnus de x et
−1 6 y 6 1
/printf("%f\n", y);
/ le cosinus de x est écrit sur la sortie standard /