La boucle for init 7 c et init
La boucle for : init 7. c et init 71. c => 5. 1 la fonction scanf : la fonction scanf permet de saisir une valeur ou une chaine de caractère fournie par l’utilisateur du programme via le clavier de l’ordinateur. &n : indique l’on utilise l’adresse ( &) de la variable n pour récupérer le caractère saisi au clavier. La variable n contient alors un entier saisi au clavier. => 5. 2 La variable qui permet de parcourir la boucle FOR est la variable i. On l’appelle la variable de contrôle de la boucle.
La boucle for : init 7. c et init 71. c => 5. 3 EXEMPLE : for (i=0; i<3; i=i+1) printf(“i=%dn”, i) ; L’instruction FOR est un cas particulier de l‘instruction WHILE ( tant que ): i=0; non tant que ( i<3 est vraie ) i < 3 ? { printf(“i=%dn”, i) ; i=i+1; } oui Afficher i i=0 i=1 i=2 i = i+1
La boucle for : init 7. c et init 71. c => 5. 3 for (initialisation; condition; expression 3) instruction ; L’instruction FOR est un cas particulier de l‘instruction WHILE ( tant que ): Initialisation initialisation; non tant que ( condition est vraie ) Condition est vraie { instruction ; expression 3; } Pour sortir de la boucle : l’expression 3 doit faire évoluer la variable de contrôle oui Instruction expression 3
La boucle for : init 7. c et init 71. c => 5. 5 la valeur d’initialisation de la variable res est égale à 1. Dans le premier passage dans la boucle res=1 , puis res =(1) x n. Dans le second passage dans la boucle res=n , puis res =(n) x n. Dans le troisième passage dans la boucle res=n² , puis res =(n x n) x n. ……A l’arrivée : on affiche n³.
La boucle for : init 7. c et init 71. c => 5. 6 Aucune différence entre l’exécution de init 70. c et celle de init 71. c. “#define PUISS 3” n’est pas une instruction !!! C’est une directive de compilation qui permet de remplacer le mot PUISS dans le programme par la valeur 3 AVANT la compilation du fichier source. int puiss=3 est la définition de la variable puiss qui mange 4 octets en mémoire pendant l’exécution du programme !!! Beaucoup de paramètres dans le projet du robot seront définies par des déclarations symboliques (# DEFINE …. . ) afin d’économiser de l’espace mémoire dans la mémoire de données dans le microcontrôleur.
La structure if…else : init 8. c => 6. 1 Les 3 parties du programme Présentation et saisie de a, b et c Calcul des racines Sortie du programme
La structure if…else : init 8. c => if ( condition) …. else ; L’instruction IF permet de tester une condition et d’exécuter une instruction ou un bloc d’instruction. if ( condition ) instruction 1 ; else instruction 2 ; Condition est vraie non Remarque : La partie ELSE n’est pas obligatoire. oui Instruction 1 Instruction 2
La structure if…else : init 8. c =>6. 2 if ( ((a==0)&&(b==0)&&(c==0))) …. else ; La condition peut se traduire par : a =0 ET b=0 ET c=0. == : opérateur de comparaison && : opérateur ET logique En somme : la condition est VRAIE si les trois variables a, b et c sont nulles ! La condition est FAUSSE si une seule des variables est égale à 1.
La structure if…else : init 8. c => 6. 3 Algorigramme de init 8. c : Calcul des racines Début oui a=b=c=0? non Afficher " Infinité de solution " oui a=b=0 et c 0? non Afficher " Pas de solution " oui a=0 et b 0? non Afficher " Appuyer sur une touche " Afficher " Une solution " Calculer et afficher X=-c/b Attendre la saisie d ’une frappe Fin (suite)
La structure if…else : init 8. c => 6. 3 Algorigramme de init 8. c : Calcul des racines(suite) non a 0? oui Calculer le delta =b*b-4*a*c Afficher delta oui delta négatif? non oui Afficher " Appuyer sur une touche " Afficher " Une solution " delta =0? non Attendre la saisie d ’une frappe Calculer et afficher X=-b/(2*a) Fin (suite)
La structure if…else : init 8. c => 6. 3 Algorigramme de init 8. c : Calcul des racines (suite) non Calculer X 1 Calculer X 2 Afficher " Delta positif deux solutions " Afficher les valeurs de X 1 et de X 2 Afficher " Appuyer sur une touche " Attendre la saisie d ’une frappe Fin
Structures de programmation : init 81. c => 7. 1 Les 3 parties du programme Définition d’une fonction ‘bonjour’ Programme principal Description de la fonction ‘bonjour’
Structures possibles de programme: Il y a 3 types d ’écritures possibles d ’un programme en C : Structure num. 1 #include<stdio. h> Structure num. 3 #include<stdio. h> main() { { //definition des variables int k; int i; char onde; char c; float bobo; float b; instruction 1; #include<stdio. h> int tab[10]; char kiki; instruction 2; d ’instructions fonction_1(); d ’instructions ………… instruction 3; Une suite à exécuter instruction n; fonction_2(); } …………. Structure num. 2 instruction n; } { //definition des variables Mélange instruction 1; main() et de fonctions à exécuter float temperature; fonction_1(); Une suite fonction_2(); de fonctions …………. à exécuter fonction_n(); }
Structures possibles de programme: Structure num. 2 ou num. 3 Pour ces 2 structures la définition des fonctions et leur description s ’effectuent en dehors de la fonction principale main. #include<stdio. h> void fonction 1(); Définition ( ou déclaration du prototype ) main() { //definition des variables int k; char onde; float bobo; instruction 1; instruction 2; fonction_1(); ………. instruction n; } void fonction 1() { declarations instructions } Description de la fonction
Structures de programmation : init 81. c => 7. 2 La fonction ‘bonjour’ : void bonjour() => 7. 3 L’appel à l’exécution de la fonction ‘bonjour’: …. Elle s’effectue en la nommant dans le programme …et c’est tout ! void bonjour() “vide” : ne renvoie rien d’utile au reste du programme les arguments : ici…aucun !
Les fonctions: Une fonction est l ’équivalent d ’un sous-programme en langage assembleur sauf qu ’ici : Syntaxe d ’écriture d ’une fonction : <type de la valeur de retour>nom_fonction(liste des variables reçues par la fonction) Exemple : int affich_temperature ( float temp ) int k; …………. instruction 1; instruction 2; ……………. return 1; Déclaration des variables locales Une fonction peut renvoyer une valeur de retour qui est typée : exemple int affich_temperature(…. ); Cette fonction renvoie un entier (int) après l ’execution ( ou le traitement ) de cette fonction. Une fonction peut aussi …. rien renvoyer : exemple void affich_temperature(…. ); Cette fonction renvoie aucune valeur utile à la suite du traitement du programme après l ’execution ( ou le traitement ) de cette fonction. Valeur de retour est un entier égal à 1
Utilisations des fonctions : init 82. c => 8. 9 Modification du programme pour traiter le cas du delta négatif A l’exécution , cela peut donner :
Réalisation d ’un projet : mon_prem_projet Intérêts : hiérarchisation des problèmes, lisibilité, réutilisation L ’idée : Regrouper dans un même fichier source les fonctions ayant un même thème Projet main. c Un projet contient plusieurs fichiers : fichiers *. c et des fichiers *. h Fichier d’en-tête outils. c outils. h La déclaration des fonctions La description des fonctions
La modularité et la gestion de projet : Intérêts : hiérarchisation des problèmes, lisibilité, réutilisation L ’idée : Regrouper dans un même fichier source les fonctions ayant un même thème Projet main. c #include … #define … #include ‘‘mot. h ’’ main( ) { vitesse 1( ); AV_mot (X, Y); } Un projet contient plusieurs fichiers : fichiers *. c et des fichiers *. h Fichier d’en-tête mot. c mot. h /*Définition des fonctions ayant pour thème la gestion d ’un des 2 moteurs du robot*/ #include (ce dont on a besoin) /*Prototypes des fonctions ayant pour thème la gestion d ’un des 2 moteurs du robot et d ’éventuelles constantes symboliques*/ #define VIT_MAX 300 int vitesse 1( ) {…} int vitesse 1( ); int AV_mot (int min, int max) int AV_mot (int, int); {…}
Introduction au langage C Et maintenant , on attaque …. .
- Slides: 20