Licence Mathématiques Université Bordeaux 1 INF163-Programmation Impérative Feuille 0 De Python à C : (exercices à préparer pour le TD sur machine de mardi 15/09) Premier exemple : Si l’on veut définir en Python la fonction g : x −→ x2 + x + 1 on écrit : def g(x): return x*x + x + 1 Si l’on veut définir cette fonction en C, il faut définir le type du paramètre x. Si l’on veut pouvoir donner en argument à la fonction des nombres réels, on écrira : float g(float x) { return x*x + x + 1; } Le premier float spécifie le type du résultat de la fonction, le deuxième spécifie le type du paramètre. Pour tester la fonction g (avec un argument constant, on verra en TD comment lui fournir un argument saisi au clavier lors de l’exécution du programme) on édite et ensuite on compile un fichier contenant le texte suivant 1 : #include <stdio.h> #include <stdlib.h> float g(float x) { return x*x + x + 1; } int main(void) { printf("%f \n" , g(5)); return EXIT_SUCCESS; } Supposons d’avoir appelé test_g.c le fichier, la commande de compilation : gcc -Wall -std=c99 test_g.c -o test_g 1 des amples commentaires sur le contenu de ce fichier seront faits en TD 1 génère un fichier exécutable test_g. Pour exécuter la programme il faut taper la commande ./test_g dans une fenêtre terminal. Deuxième exemple : La fonction max(x, y) qui renvoie le maximum de deux nombres x et y s’écrit en Python : def max(x, y): if x >= y: return x else: return y Si on la traduit en C par : float max(float x, float y) { if (x>=y) return x; else return y; } on pourra l’utiliser avec des arguments réels. Mais si on a besoin d’une fonction qui retourne le maximum entre deux nombres entiers, on définira plutôt la fonction : int max(int x, int y) { if (x>=y) return x; else return y; } Exercice Écrire une fonction int max3(int x, int y, int z) qui renvoie le maximum de trois nombres entiers x, y et z. Donner plusieurs versions de cette fonction dont une utilise la fonction max ci-dessus. 2