410 likes | 486 Views
RESUMES Module II1 SOMMAIRE. CYCLE 1 : Saisir – Afficher – Données CYCLE 2 : Calculs Arithmétiques CYCLE 3 : Alternatives CYCLE 4 : Boucles CYCLE 5 : Tableaux CYCLE 6 : Fonctions. CYCLE 1 : Saisir – Afficher – Données. 1- En quoi consiste la programmation ?
E N D
RESUMES Module II1 SOMMAIRE CYCLE 1 : Saisir – Afficher – Données CYCLE 2 : Calculs Arithmétiques CYCLE 3 : Alternatives CYCLE 4 : Boucles CYCLE 5 : Tableaux CYCLE 6 : Fonctions
CYCLE 1 : Saisir – Afficher – Données 1- En quoi consiste la programmation ? 2- Afficher du texte sur l’écran 3- Variables numériques 4- Déclarer des variables 5- Saisir des valeurs de variables au clavier 6- Afficher texte et valeurs de variables sur l’écran 7- Initialiser des variables par affectation 8- Déclarer des constantes
RESUMES CYCLE 1: Saisir – Afficher – Données 1- En quoi consiste la Programmation ? La Programmation permet d’obtenir une solution informatique à partir d’un cahier des charges. Le programmeur doit concevoir son programme, le coder dans un langage évolué (fichier source sur le disque dur), puis le tester. Des données sont saisies (lues) au clavier, le programme effectue des traitements et les résultats sont affichés (écrits) sur l’écran. Comme une recette de cuisine, un programme est constitué de données (ingrédients) et d’une suite d’instructions (opérations).
RESUME CYCLE 1... 2- Afficher du texte sur l’écran Dans un programme en C, on communique avec l’utilisateur avec des fonctions de la bibliothèque stdio.h : Affichage de texte sur l’écran : printf("\tTexte\n"); Le CPU écrit le texte sur l’écran à l’endroit où se trouve le curseur ; \n le fait passer à la ligne et \t le fait tabuler sur la droite.
RESUME CYCLE 1... 3- Variables numériques Une variable permet de sauver des valeurs dans un programme. C’est une donnée dont la valeur peut varier au cours d’une exécution du programme. Les valeurs sont stockées dans la RAM pendant l’exécution. Une variable est identifiable par un nom et une adresse mémoire. Le Type numérique d’une variable définit la nature de ses valeurs : entier (nombre sans décimale signé ou non signé), réel (nombre avec décimales). Le type limite également l’ensemble des valeurs que peut prendre la donnée : un codage sur 1, 2, 4 ou 8 octets conduit à des valeurs min et max possibles différentes. Les principaux types numériques du C sont : short, unsigned short, int, unsigned int, float, double...
RESUME CYCLE 1... 4- Déclarer des variables Dans un programme en C, la déclaration de variable sert à indiquer les données qui seront utilisées. Déclaration de variable : TYPE nomVariable; Règle de qualité : nom explicite, pas trop long, commençant par une minuscule Le CPU réserve un espace mémoire vide dans la RAM. Cet espace a pour nom nomVariable et pour adresse &nomVariable. Sa taille est définie par le type de la variable.
RESUME CYCLE 1... 5- Saisir des valeurs de variables au clavier Dans un programme en C, on communique avec l’utilisateur avec des fonctions de la bibliothèque stdio.h : Saisie de valeurs au clavier : scanf("%format",&nomVariable); Après détection de la touche RC, le CPU lit la valeur tapée sur le clavier, la convertit dans le type donné par le format, puis l’affecte à la variable nomVariable (stockée dans la RAM à l’adresse &nomVariable).
RESUME CYCLE 1... 6- Afficher texte et valeurs de variables sur l’écran Dans un programme en C, on communique avec l’utilisateur avec des fonctions de la bibliothèque stdio.h : Affichage de valeurs de variables sur l’écran : printf("\tTexte : %format\n",nomVariable); Le CPU écrit le texte sur l’écran à l’endroit du curseur ; \n le fait passer à la ligne et \t le fait tabuler sur la droite. %format indique l’endroit, dans le texte, où s’affiche la valeur de la variable nomVariable (la valeur est dans le format indiqué après le %).
RESUME CYCLE 1... 7- Initialiser des variables par affectation Dans un programme en C, l’affectation permet d’attribuer une valeur à une variable (de l’initialiser). Affectation : nomVariable= valeur; (dans partie données ou instructions) Le CPU stocke la valeur de droite dans l’espace mémoire RAM de la variable nomVariable, qui est à gauche du signe d’affectation.
RESUME CYCLE 1... 8- Déclarer des constantes Dans un programme en C, la déclaration de constantes sert à indiquer les données fixes qui seront utilisées (valeur non modifiable lors d’une exécution du programme). Les constantes rendent le code plus lisible et la maintenance du programme plus facile. Déclaration de constante : const TYPE NOMCONSTANTE= valeur; Règle de qualité : nom explicite, pas trop long, tout en MAJUSCULES Le CPU réserve un espace mémoire dans la RAM et y stocke la valeur donnée à droite du signe d’affectation. Cet espace a pour nom NOMCONSTANTE. Sa taille dépend du type choisi.
CYCLE 2 : Calculs Arithmétiques 1- Ecrire une Instruction de Calcul 2- Exécuter une Instruction de Calcul 3- Comment faire une division entière ou réelle ?
RESUMES CYCLE 2: Calcul Arithmétiques 1- Ecrire une Instruction de Calcul en C Dans un programme en C, on écrit l’instruction de Calcul : nomVariableResultat= Formule de Calcul; La formule de calcul peut-être composée de fonctions standards (ex. fonctions sqrt() ou cos() de la bibliothèque math.h) ou/et d’expressions de calcul Arithmétique. Les expressions Arithmétiques sont composées d’entiers ou de réelset des opérateurs : + (addition), - (soustraction), x (multiplication), / (division), % (modulo). La partie suivante explique comment le CPU effectue les calculs…
RESUME CYCLE 2… 2- Exécuter une Instruction de Calcul en C Instruction de Calcul : nomVariableResultat= Formule de Calcul; Le CPU exécute l’instruction de Calcul en 2 étapes :Évaluation du résultat du calcul, Affectation du résultat à la variable résultat de gauche. En ce qui concerne l’évaluation du calcul, les règles sont : priorité aux parenthèse, Respect de l’ordre de priorité des opérateurs, Calcul de gauche à droite, en partant du =. Il ne faut pas confondre les opérateurs d’affectation = et de comparaison ==. Le premier écrit, le second lit dans la RAM.
RESUME CYCLE 2… 3- Comment faire une division entière ou réelle ? Pour éviter certaines erreurs de calculs arithmétiques dans un programme, il est recommandé d’utiliser, au maximum, les mêmes types de données dans une formule de calcul. En effet la division a/b donne des résultats différents suivants les types des opérandes : division entière : si a ET b sont entiers, le résultat du calcul est entier. D’autre part, avec 2 entiers, % donne le reste de la division. division réelle :si a OU b est réel, le résultat du calcul est réel. Dans tous les cas, si la variable résultat est un entier, le résultat sera tronqué en entier.
CYCLE 3 : Alternatives 1- Les opérateurs logiques 2- Comment écrire l’instruction alternative SI-(SINON) ? 3- Comment marche l’instruction alternative SI-(SINON) ? 4- Comment écrire le SI - SINON SI - (SINON) ? 5- Comment marche le SI- SINON SI - (SINON) ?
RESUMES CYCLE 3: Instructions Alternatives 1- Les opérateurs logiques Les opérateurs logiques de comparaison permettent de comparer des valeurs (égalité, relation d’ordre). Les opérateurs logiques booléens (ET, OU, NON) ont des tables de vérité équivalentes à celles des opérateurs binaires. Les expressions Logiques, qui ont pour valeur true (VRAI) ou false (FAUX), servent essentiellement dans les conditions logiques. Ces conditions logiques permettent, par exemple, d’écrire les instructions ALTERNATIVES…
RESUME CYCLE 3... 2- Ecrire l’instruction alternative SI-(SINON) ? Pour faire un aiguillage à 2 chemins exclusifs dans un programme en C, on écrit l’instruction alternative SI – SINON : if (condition) (sans ;) { instructions 1; (avec indentations) } else (sans ;) { instructions 2; (avec indentations) } Si le else n’est pas utilisé, cette structure devient un filtre, une protection : les instructions du if ne sont exécutées que si la condition est remplie. Maintenant, voyons comment le CPU exécute cette instruction…
RESUME CYCLE 3... 3- Comment marche le SI-(SINON) ? Le if(condition) {} else{} est un aiguillage simple à 2 voies et le chemin d’exécution emprunté par le CPU dépend de la valeur de la condition logique : VRAI exécution des instructions dans les accolades du if FAUX exécution des instructions dans les accolades du else. Le if(condition) {}, version simplifiée est une protection contre certaines erreurs prévisibles, un filtre : le CPU n’exécute le contenu du if que si la condition logique est VRAIE. Sinon, le SI est ignoré. Maintenant, voyons une Instruction Alternative conditionnelle qui peut avoir plus de 2 voies…
RESUME CYCLE 3... 4- Ecrire le SI-SINON SI-(SINON) ? Pour faire un aiguillage à plusieurs chemins exclusifs dans un programme en C, on a l’instruction alternative SI - SINON SI - SINON : if (condition 1) (sans ;) { instructions 1; (avec indentations) } else if (condition 2) (sans ;) { instructions 2; (avec indentations) } ... else (sans ;) { instructions 3; (avec indentations) } Sans else, le chemin d’exécution peut ne pas passer dans ce SI.
RESUME CYCLE 3... 5- Comment marche le SI-SINON SI-(SINON) ? • Le if(condition 1) {} else if(condition 2){} else{} est un aiguillage à plusieurs voies. • Le chemin d’exécution du CPU dépend des valeurs des conditions logiques successives : dès qu’une condition est VRAIE, les instructions associées à ce if sont exécutées : • condition 1 VRAI exécution du if • condition 1 FAUX et condition 2 VRAI exécution du 1° else if • ... • toutes les conditions à FAUX exécutiondu else.
CYCLE 4 : Boucles 1- Comment écrire l’instruction itérative POUR ? 2- Comment marche la boucle POUR ? 3- Comment créer une boucle POUR ? 4- Des applications de la boucle POUR 5- Comment écrire une boucle TANT QUE ? 6- Comment marche les boucles TANT QUE ? 7- Comment créer une boucle TANT QUE ? • 8- Des applications de la boucle TANT QUE
RESUMES CYCLE 4: Instructions Itératives 1- Ecrire une boucle POUR ? • Pour répéter des instructions un nombre connu de fois, on a l’instruction itérative POUR (boucle POUR avec comptage croissant ici) : • for (i=valInit ; i<=valFin ; i=i+pas) (sans ;) • { instructions; (avec indentations) • } • i=valInit est l’INITIALISATION • i<=valFin est la CONDITION de POURSUITE de boucle (cas croissant). Son inverse (i>valFin) est la condition de fin de boucle. • i=i+pas est l ’INCREMENTATION • i est une variable compteur (obligatoirement de type entier), qui croît, ici, de valInit à valFin en augmentant de pas à chaque reprise de boucle.
RESUME CYCLE 4... 2- Comment marche la boucle POUR ? • L’instruction itérative for{ ; ; } est une boucle. • Le CPU recommence l’exécution des instructions de la boucle tant que la variable compteur i ne dépasse pas valFin : • le compteur i démarre, la 1° fois, à valInit évaluation condition de poursuite (i<=valFin pour un comptage croissant) • si condition VRAIE exécution boucle, puis retour au FOR • lorsque le CPU revient au FOR, i augmente de pas évaluation condition de poursuite • quand condition FAUSSE sortie du FOR • Un passage dans la boucle est une itération.
RESUME CYCLE 4... 3- Comment créer une boucle POUR ? • Etapes pour créer une boucle POUR : • écrire des exemples numériques sur papier détecter les instructions qui se répètent : CONTENU boucle • à partir des exemples, identifier les valeurs de début et de fin du comptage INITIALISATION et CONDITION de POURSUITE • identifier le PAS du compteur entre 2 exécutions de la boucle • écrire la boucle et la vérifier avec les valeurs limites de comptage
RESUME CYCLE 4... 4- Des applications de la boucle POUR • Le CALCUL CUMULATIF : le cumul consiste à rajouter des quantités dans une même variable : sa valeur est changée à chaque itération : • cumul= 0; • for (i=valInit ; i<=valFin ; i=i+pas) • { cumul= cumul + quantité; • } • DECOMPTEUR : pour compter en décroissant, la condition de poursuite (on arrive à la valeur finale par en haut) et le pas (négatif)sont inversés : • for (i=valInit ; i>=valFin ; i=i-pas) • { instructions; • }
RESUMES CYCLE 4: Instructions Itératives 5- Ecrire une boucle TANT QUE ? Pour répéter des instructions à une certaine condition, on a les instructions itératives TANT QUE (boucles conditionnelles) : FAIRE TANT QUEdo (sans ;) { instructions; (avec indentations) } while (condition); (AVEC ;) TANT QUE while(condition) (SANS ;) { instructions; (avec indentations) } (sans ;) Le TANT QUE est exécuté tant que la condition est VRAIE.
RESUME CYCLE 4... 6- Comment marche les boucles TANT QUE ? • Les instructions itératives while et do while sont des boucles. • Le CPU recommence l’exécution des instructions de la boucle tant que la condition de poursuite est vraie (évaluation sur le while) et dès que cette condition devient fausse, le CPU sort de la boucle. • dans le cas de la FAIRE TANT QUE : le CPU passe toujours le do pour exécuter la boucle ; donc cette boucle s’exécute toujours au moins une fois. • dans le cas de la TANT QUE : le CPU commence par le while, donc par l’évaluation de la condition ; donc cette boucle peut s’exécuter 0 fois.
RESUME CYCLE 4... 7- Comment créer une boucle TANT QUE ? • Etapes pour créer une boucle TANT QUE : • écrire des exemples numériques sur papier détecter les instructions qui se répètent : CONTENU boucle • à partir des exemples, identifier la CONDITION de POURSUITE de boucle ; si c’est la condition de fin qui vient, il suffit de l’inverser • fixer, si besoin, valeurs de début, de fin et d’incrémentation d’un compteur • écrire la boucle et la vérifier avec les conditions limites de boucle.
RESUME CYCLE 4... 8- Des applications de la boucle TANT QUE • Une POUR peut toujours être transformée en TANT QUE: • i= valInit; (INITIALISATION) • do • { instructions; • i=i+pas; (INCREMENTATION) • } while (i<=valFin); (CONDITION POURSUITE) • La POUR est plus simple quand on sait combien de fois la boucle tourne. • Une boucle de reprise permet d’éviter à devoir relancer un programme : c’est une DO WHILE englobant toutes les instructions du programme. • Une saisie validée permet de recommencer un scanf() tant que la valeur saisie n’appartient pas au bon intervalle. Le programmeur doit vérifier toutes les saisies et informer l’utilisateur d’erreurs éventuelles.
CYCLE 5 : Tableaux 1- Que sont les Tableaux ? 2- Comment déclarer et initialiser un Tableau ? 3- Comment utiliser un Tableau ?
tab[0] 2 5 4 2 &tab[0] Donnée de type simple Nom des cases du tableau tab[0] tab[1] tab[2] tab Indices relatifs des cases du tableau Nom du tableau RESUMES CYCLE 5: Tableaux 1- Que sont les tableaux ? Un Tableau est une suite de cases mémoires permettant de stocker des données de même type simple. Adresses des cases du tableau 0 1 2
RESUME CYCLE 5... 2- Comment déclarer et initialiser un tableau ? • Pour déclarer un tableau à une dimension : • TYPECASE nomTableau[NBCASES] (nom explicite) • CPU : réservation mémoire de longueur NBCASES x longueur TYPECASE • Pour initialiser un tableau à sa déclaration (dans la partie données) : • TYPECASE nomTableau[NBCASES]= {val1,val2,...,valn}; • Pour initialiser un tableau par affectations(dans la partie instructions) : • for (i=0; i<NBCASES ; i++){ nomTableau[i]= 0;} • Pour initialiser un tableau par saisies clavier (partie instructions) : • for (i=0; i<NBCASES ; i++) • { printf ("\nElément d’indice %d : ",i); • scanf("%d",&nomTableau[i]); }
RESUME CYCLE 5... 3- Comment utiliser un tableau ? • Pour afficher un tableau : • for (i=0 ; i<NBCASES ; i++) • { printf ("\nElément d’indice %d : %d",i,nomTableau[i]); • } • Pour additionner les cases d’un tableau : • sommeCumul= 0; • for (i=0; i<NBCASES ; i++) • { sommeCumul= sommeCumul + nomTableau[i]; • } • Pour multiplier les cases d’un tableau : • produitCumul= 1; • for (i=0; i<NBCASES ; i++) • { produitCumul= produitCumul * nomTableau[i]; • }
CYCLE 6 : Fonctions 1- Qu’est-ce qu’une Fonction ? 2- Fonction sans donnée échangée 3- Fonction avec Paramètre en E 4- Fonction avec résultat en Sortie 5- Type Pointeur 6- Fonction avec Paramètre en E/S
RESUMES CYCLE 6: Fonctions 1- Qu’est une fonction ? • Utilité des fonctions : • Chaque fonction réalise une tâche simple et possède ses données privées (non accessibles aux autres fonctions). Une fonction s’exécute si elle est appelée, puis retour à la fonction appelante. • éviter les répétitions et structurer le code : source plus court et plus lisible facilite maintenance et tests du programme. • Création d’une fonction : • Déclaration en haut du source : PROTOTYPE. • APPEL à l’endroit où ses instructions doivent être exécutées. • DEFINITION du corps de la fonction avec ses données et ses instructions.
RESUME CYCLE 6... 2- Fonctions sans échange de données • Fonction sans donnée échangée : effectue un simple traitement • // PROTOTYPE • void NomFonction(void); • //APPEL • NomFonction(); • //DEFINITION • void NomFonction(void) • { }
RESUME CYCLE 6... 3- Fonctions avec paramètre en E Fonction avec paramètre d’Entrée : valeur transmise à l’appel : x=n // PROTOTYPE void NomFonction(int ); //APPEL (n de type int) ; la valeur de n est transmise à la fonction NomFonction(n); //DEFINITION . x est un paramètre en Entrée, non modifable par la fonction void NomFonction(int x) { }
RESUME CYCLE 6... 4- Fonctions avec S • Fonction avec Sortie : 1 seule valeur retransmise après l’appel : div=d • // PROTOTYPE • float NomFonction(void); • //APPEL (div de type float) ; la valeur de d est récupérée dans div • div= NomFonction(); • //DEFINITION (d : float). Valeur de d transmise en Sortie de la fonction • float NomFonction(void) • { ... return(d); }
RESUME CYCLE 6... 5- Type Pointeur • Type POINTEUR : adresse d’une variable de type simple • int a, *pta; // pta : pointeur sur un int • pta= &a; // initialisation : pta pointe sur a • *pta= 3; // une valeur est rangée dans a *pta= a pta 3 &a
RESUME CYCLE 6... 6- Fonctions avec paramètres en E/S Fonction avec paramètre en E/S : adresse passée à l’appel : pta=&a void NomFonction(int *pta); // PROTOTYPE avec pointeur NomFonction(&a); //APPEL avec adresse (a de type int) void NomFonction(int *pta) { } //DEFINITION (*pta = a) Fonction avec paramètre tableau : adresse passée à l’appel : tabp=tab void NomFonction(float tabp[]); // PROTOTYPE NomFonction(tab); //APPEL (tab de type tableau de 3 float) void NomFonction(float tabp[3]) { } //DEFINITION Via le pointeur, la donnée passée par adresse (a ou tab) est directement modifiée par la fonction.