Cours Algorithmique Et Programmation en C

download Cours Algorithmique Et Programmation en C

of 61

Transcript of Cours Algorithmique Et Programmation en C

  • Cours Algorithmique et Programmation en CUniversit Sultan Moulay Slimane IDRISSI NAJLAEFacult des Sciences et Techniques Filire Ingnieur Bni-Mellal 2009 - 2010

  • Gnralits 1/ Que dsigne le terme Informatique ?Science qui tudie les ordinateurs (partie matriel = hardware )Traitement automatique de linformation (partie logicielle = software)Structure gnrale dun ordinateurUnit centrale (micro-processeur) est compose de : registres internes destins stocker temporairement les informations lintrieur du micro-processeur;dunit arithmtique et logique qui effectue un ensemble doprations;dunit de commande et de contrle qui permet dextraire, dinterprter et dexcuter les instructions dun programme

  • Suite 2/Mmoire centrale

    La mmoire centrale RAM permet de stocker les informations traiter. Elle est compose dun ensemble de bits (1 bit = 0 ou 1) dit case mmoire. Chaque case est identifie par un numro dit adresse

    Units priphriquesdentre & sortie qui permettent lutilisateur de communiquer avec lordinateur (saisie, affichage, )mmoires auxiliaires qui permettent de stocker les informations en permanence (disque dur, CD, )

  • Codage binaireLes informations traites par une machine sont traduites en informations binaires (suite de bits de 0 et 1). On parle du codage binaire.Pour une base de numrotation b, un nombre n peut scrire sous la forme: n = aibi / 0ai
  • Partie I

    Algorithmique

  • Introduction Que signifie le terme Algorithme?ensemble dtapes qui permettent de rsoudre un problme donn;une suite de rgles appliquer dans un ordre dtermin afin darriver au rsultat attendu;un algorithme est indpendant des donnes, de la machine et du langage de programmationExemple: problme pos = calcul de la moyenne de 2 entiersAnalyse: les donnes fournies = 2 entiersRsultat dsir = un nombre qui reprsente la moyenne des donnesil faut ensuite dcrire les tapes qui permettent de passer des donnes au rsultat (algorithme)Saisir deux entiersCalculer leur somme Diviser la somme par 2

  • Mthodologie gnraleComprendre la nature du problme pos et prciser les donnes (entres)Prciser le(s) rsultat(s) dsir(s) (sorties)Les entres et les sorties sont des variablesDterminer le processus de transformation des donnes en rsultatsReprsentation dun algorithmeOrganigrammeReprsentation graphique de lenchanement de la suite dinstructions relatives un algorithme donn

    Pseudo-codeReprsentation textuelle de la solution proposeSquelette dun algorithme:Dclaration de variables (entres)DbutBloc dinstructionsFin

  • Notion de variables Dfinition = information stocker et utiliser au cours dun programme dsigne par son nom (identificateur attribu par un utilisateur) et une tiquette (rfrence attribue par lordinateur)Dclaration Attribuer un nom une variable au sein dun programme en prcisant son typeSyntaxe = Variables nom_var en TypeInitialisation Affecter une valeur aux variables laide de loprateur Syntaxe = nom_var valeurTypes de variablesType numrique (entier, rel, )Type alphanumrique (caractres et chanes de caractres)Type boolen (vrai ou faux)

  • Familles dinstructions 1/-- Ensemble doprations manipuler sur les diffrentes variablesAffectationAttribuer une valeur pour initialisation ou modification par loprateur Lecture & critureLire = saisir, introduire des donnesSyntaxe : Lire nom_varEcrire = excuter laffichage lcranSyntaxe : Ecrire texte explicatif , nom_varStructure de choixDans le cas o il existe plusieurs choix correspondants un certain rsultat, on utilise une structure de choix indiquant quel ensemble doit tre excutforme simple: si (condition est vraie) alors (excuter bloc dinstructions 1) sinon (excuter bloc dinstructions 2) finsiforme complexe: selon que (condition 1) faire (bloc dinstructions 1) ou que (excuter bloc dinstructions 2) ou que (excuter bloc dinstructions n) autrement (excuter bloc dinstructions n+1) fselon (fin du selon)

  • Suite 2/Structures de rptitionBoucle pour : utiliser lorsque le nombre doprations ou de rptitions effectuer est connu davance; Syntaxe : pour nom_var val_initiale val_finale faire (bloc instructions) nom_var Suivant Exemple : calculer la moyenne dune classe Donnes = n nombre dtudiants, nt note de chaque tudiantRsultat = moyenne de la classe = somme divise par nAlgo = lire nS 0Pour i 1 nLire ntS S + nti SuivantEcrire la moyenne des notes est :, S/n

    Boucle tantque : aucune condition sur le nombre ditrations. Le bloc est excut tant que la condition est vraie. Sinon on sarrte. Syntaxe : tantque (condition) faire (bloc instructions) fintantque Boucle rpter jusqu : ici on rpte lexcution du bloc jusqu ce que la valeur de la condition soit vraie. On sarrte dans ce cas. Syntaxe : rpter (bloc instructions) jusqu (condition)

    Exemple : somme dune suite dentiers positifs

    Algo: variables x, s en Entier Dbut s 0x 0tantque x >= 0 faire s s + xLire xFintantqueEcrire la somme de la suite est : , sfin

    Algo: variables x, s en Entier Dbut s 0x 0rpter s s + x Lire xjusqu (x < 0)Ecrire la somme de la suite est : , sfin

  • Tableau logiqueDonner la table de vrit des expressions suivantes :A = (a ^ b) v c = (a v c) ^ (b v c)B = (a ^ b) v (a ^ b)

    aba^bbb^aB000100100111010000111001

  • Exercices 1/Donner un algorithme qui calcule la somme de deux entiers Donner un algorithme qui permet dchanger les valeurs de 3 variablesDonner le type et la valeur des expressions suivantes:2 + 3*2-0.5 + 3*5Vrai et (faux ou vrai)(2 5)Traduire les expressions suivantes en pseudo-code:X = (2a bc)/dY = (exp(2*a)/2)Z = log(1/1-x)crire un algorithme qui calcule partir dun rel x et une valeur positive a, la puissance xacrire un algorithme qui retourne la partie entire infrieure de la racine carre dun entier donn m

  • Suite 2/crire un programme qui demande un nombre lutilisateur, ensuite il lui rpond si cest un chiffre pair ou impair

    crire un programme qui lit trois chanes de caractres puis les retourne tries dans lordre alphabtique inverse

    crire un algorithme qui donne le signe (+/-) du produit de 2 nombres sans le calculer

    crire un programme qui dcrmente la valeur dun produit sachant quil na pas atteint sa valeur minimale

    crire un programme qui naffiche que les valeurs paires dun d

    crire un programme qui demande lutilisateur de saisir une chane de caractres jusqu la lecture du mot bye . Dans ce cas, on sarrte

    Reformuler ce pseudo-code:Variables A, N en RelDbut A 0N 0ecrire entrez votre variable N: Tantque N >= 0A NLire Nsi N > A ecrire le max est : , Nsinon ecrire le max est : , Afinsifin

  • Suite 3/Reformuler ce pseudo-code:Variables x, cptp, cptn en NumriqueVariables rep en caractresDbut cptp 0cptn 0Lire reprpter ecrire voulez-vous continuer?: Lire xsi x >= 0 alors cptp cptp +1sinon cptn cptn + 1finsijusqu rep = non Fin

    crire un algorithme qui daprs une valeur initiale affiche les cents chiffres suivants dun pas de 2. par exemple, si la valeur est 25 alors les chiffres suivantes seront 27, 29, jusqu 225

    crire un algorithme qui calcule le factoriel dun entier N

    crire un algorithme qui affiche la valeur maximale et minimale dune srie de 30 chiffres saisis par lutilisateur

    Mme algorithme que 17 sauf que le nombre de chiffres saisir nest pas connu. On sarrte lorsquune valeur nulle est saisie

  • TableauxUn autre type de variable que nous traitons dans cette partie concerne les variables indices. IL sagit de regrouper un ensemble de valeurs portant le mme nom de variable et diffrencies par un numro dit indice. A chaque fois que lon veut insrer, chercher, modifier un lment du tableau, on le fait par le nom du tableau suivi de lindice entre (). Lindice dbute par dfaut 0;

    Syntaxe : Tableau nom_tableau(taille) en TypeExemple : soit Note(10) en Numrique un tableau de rels de taille 10 si je cherche la 3me note, il suffit dcrire Note(2)

    Remplissage et affichage dun tableau numriqueVariables N, i en NumriqueTableau Tab(N) en NumriqueDbut saisie Pour i 0 N-1Ecrire saisir la donne n=, iLire Tab(i)i Suivant Ecrire Maintenant, nous allons afficher notre tableau Pour i 0 N-1Ecrire la valeur de llment : , iEcrire est : , Tab(i)i Suivant fin

    Tableau de caractresTableau Tab(7) en caractres Variable i en EntierDbut Tab(0) b Tab(1) o Tab(2) n Tab(3) j Tab(4) o Tab(5) u Tab(6) r Fin

  • Exercices 1/crire un algorithme qui saisi la note dune matire X pour 30 tudiants; ensuite la note dune autre matire Y. Puis calcule la moyenne pondre de ce module sachant que le coefficient respectif de X et Y est 4 et 3

    crire un algorithme qui affiche les lments dune suite de Fibonacci de taille 15. une suite de Fibonacci est donne par F0 = 0; F1 = F2 = 1; Fn = Fn-1 + Fn-2

    Que fait cet algorithme. Peut-on le rduire?Tableau Tab(10) en EntierTableau Tabn(10) en NumriqueVariables i en EntierDbutTab(0) 2Pour i 1 9Tab(i) - Tab(i-1) + 1i SuivantPour i 0 9si Tab(i) mod 2 = 0 Tabn(i) - Tab(i)sinon Tabn(i) Tab(i)finsi i Suivantfin

  • Tableau dynamiqueJusquici nous avons trait des tableaux statiques o leur taille maximale est connue lavance. Dans certains cas, cette information dpend des donnes insrer et donc inconnue lors de la dclaration du tableau. Ce nest quaprs la saisie par lutilisateur que cette information devient disponible. Ainsi, pour lattribuer au tableau en question, on utilise la fonction Redim

    Syntaxe: Redim nom_tableau (taille - 1)

    Exemple : variables i, N en Entier Tableau Tab() en Numrique taille non connue Dbut crire donner la taille du tableau lire N Redim Tab(N-1) pour i 0 N-1 Tab(i) 0 i Suivant Fin

  • Exercices 2/crire un algorithme qui mesure lamplitude de la mare (diffrence entre la pleine et la basse mer), linsre dans un tableau. Ensuite, affiche la frquence des valeurs suprieures et infrieures la mare moyenne durant une certaine priode

    crire un algorithme qui somme 2 tableaux de mme dimension. Est quon peut le faire pour des tableaux de dimensions diffrentes)

    crire un algorithme qui multiplie un tableau par son inverse

    crire un algorithme qui partir de 2 tableaux saisis, calcule leur Schtroumpf S. Le Schtroumpf se calcule en multipliant chaque lment du 1er tableau par chaque lment du 2me et additionne le tout.

    Le Schtroumpf sera S = 1*4 + 1*5 + 2*4 + 2*5 + 3*4 + 3*5 = 54

    crire un algorithme qui inverse un tableau en gardant la mme variable.

  • Techniques sur les tableauxTriLe tri est une opration darrangement des valeurs dans un ordre donn croissant ou dcroissant.

  • Tri par slection

    Il consiste chercher llment le plus petit (le plus grand), le mettre dans la 1re (dernire) position. Ensuite, chercher le second le plus petit(grand) et le mettre en seconde (avant-dernire) position et ainsi de suite jusqu ce que le tableau soit tri.Le nombre de comparaison ncessaire pour ce tri est N(N-1)/2Le nombre dchange est de lordre de N et sa complexit est de O(N2)Algorithme :Tableau Tab(N) en NumriqueVariables i, j, min, c en EntierDbut pour i 0 N-1 min i //on suppose que chaque est un minimum puis on teste sur le reste du tableau pour j 1 N-1 si Tab(j) < tab(min) alors min j finsij Suivant // fin de la boucle sur jsi min i alors // on change c Tab(i) Tab(i) Tab(min) Tab(min) c finsii Suivant // fin de la boucle sur iFin

  • Tri bulles

    Le tri bulles consiste comparer deux lments successifs du tableau. Sils sont dans le bon ordre, on passe aux suivants; sinon, on les permute et on reprend la comparaison ds le dbut. Algorithme :Tableau Tab(N) en NumriqueVariables i, c en EntierVariables test en BoolenDbut test vraitantque testtest fauxpour i 0 N-1 si Tab(i) > tab(i+1) alors c Tab(i) Tab(i) Tab(i+1) Tab(i+1) c test vrai finsii Suivant // fin de la boucle sur i fintantqueFin

  • Techniques sur les tableauxRechercheIl sagit de trouver la position ou un lment donn dans un tableau.

  • Recherche Recherche squentielle Elle consiste parcourir le tableau ds sa premire valeur et tester lment par lment jusqu atteindre celui en question

    Recherche dichotomiqueLlment trouver est compar au milieu du tableau. Sil est suprieur, la recherche est effectue sur la partie droite du tableau,sinon la partie gauche est traiter. La tableau est suppos tri dans lordrecroissant

  • Exercices crire un algorithme qui trie dans lordre dcroissant un tableau numrique pour les 2 types de tri slectif

    Mme exercice pour le tri bulles

    Donner lalgorithme de recherche squentielle et dichotomique pour un tableau numrique et alphanumrique tri dans lordre croissant

    Mme question que (29) sauf que dans ce cas le tableau est tri dans lordre dcroissant

  • Partie II Programmation en C

  • IntroductionHistorique: 1972 : Dennis M. Ritchie a fond ses premires origines1978: publication du standard K&R-C (Brian w.Kerrighan)1982: publication du standard ANSI-CCaractristiques du langage C:universel : il est utilisable pour tous types dapplication et non spcifique pour un domaine prcis (Fortran applications scientifiques)haut niveau: le langage C est structur, dclaratif et rcursifproche de la machine : offre des oprateurs et fonctions proches du langage machineportable : un programme en C peut tre utilis sur tout systme possdant un compilateur Ccompil :saisir un texte programme source l'aide d'un programme appel EDITEUR, le traduire en langage machine (en codes binaires) : c'est la compilation et, si plusieurs modules ont t compils sparment, l'dition de liens (LINK ou BIND), l'excuter.

  • Phases de programmation en C:

  • Notions de basePremier programme en C:

    #include#include#define Pi 3.14int main(void) { int a, b, s; s = 0; printf( veuillez saisir deux entiers); scanf( %d, %d: , &a, &b); s = a + b; printf( la somme des deux entiers est %d\n, s);return 0;}directivesbloc dinstructions

  • Dclaration de variables :Syntaxe : (nom attribu aux variables commenant par une lettre et suivi de caractres et de chiffres)Le C distingue entre les minuscules et les majusculesLes mots cls suivants sont des identificateurs rservs par le systme:auto, break, case, char, continue, default, do, double, else, enum, extern, float, for, goto, if, int, long, register, return, short, sizeof, static, typedef, switch, unsigned, void, while, strucy, asm, large, fortran, far, pascal, near

    Dclaration de fonctions :Syntaxe: (, , , ) { ; // donnes utilises uniquement lintrieur de la fonction ; // liste des instructions qui dfinissent laction excuter }Fonction main : Fonction principale pour lexcution du programmeUn seul appel main par programmeLe type du rsultat du main est un int . Il peut ne pas tre dclar. Linstruction return 0 signifie que le programme sest termin avec succs

    Commentaires en C :/* ceci est un commentaire sur plusieurs lignes */// ceci est un commentaire sur une seule ligne

  • Types de baseUn type dfinit les valeurs que peut prendre une variable, la taille mmoire allouer et les oprateurs que lon peut appliquer dessus;Les types entiers:4 variables du type entier existent en C : les caractres (char), les entiers courts (short int), les entiers standards (int) et les entiers larges (long int);Un caractre sidentifie son code ASCII. Ainsi, une variable de type char peut subir les mmes oprations que les autres entiers;Si on ajoute le prfixe unsigned lune de ces variantes, ceci signifie que nous sommes entrain de manipuler des entiers non signs (positifs)

  • Les types rels :3 types rels existent : les rels simple prcision (float), les rels double prcision (double) et les rels trs grande prcision (long double);

  • Dclaration dune constante : Les constantes entires peuvent tre reprsentes :sous la forme standard dcimale (134)sous la forme octale en les prcdant par 0 (0206) sous la forme hexadcimale en les prcdant par 0x (0X86)

    Les constantes relles peuvent tre reprsentes:sous la forme standard dcimale (101.34)sous la forme exponentielle (1013.4 e-1 ou 10134 e-2)

    Les caractres constantsUne constante caractre est indique entre apostrophes (a, b)

    Les chanes de caractres constantesUne constante chane de caractres est indique entre guillemets (chane, bonjour)

    Loprateur (const)pour fixer une valeur dune variable, on utilise lattribut const const int a = 10; // la valeur de a ne change pas au cours du programme

  • Oprateurs standardsOprateurs classiques:Affectation = ;int a = 5, b=2, c; //initialisation et affectationc = a + b; //affectation avec autres valeursOprateurs arithmtiques Loprateur % permet dobtenir le reste de la division entire (mod)Loprateur / retourne le quotient entier des deux oprandes Oprateurs logiques Sappliquent des expressions logiques (vrai ou faux) (cf. tableau logique, 1re partie)Exemple:(2>3) && 40 vaut 0!!1 vaut 1Oprateurs de comparaison < ==, !=, , = >0 si la comparaison est fausse, 1 sinonExemple:0 || (32 >12) vaut 10 || !(32 >12) vaut 0

  • Les oprateurs de bits < >>, a >) bLes oprandes sont de type entier (char, short int, int, long int);Loprande gauche a est lobjet dcaler; (conversion en binaire)Loprande droite b reprsente le nombre de bits de dcalageSi lentier dcaler est sign alors le bit sign (position binaire dextrme gauche) est prserv lors du dcalage droiteSi lentier dcaler est non sign, alors les bits laisss libres sont mis 0;Exemple :int i, j;i= 5; // i en binaire (0000 0101) j = i2; /* j aprs dcalage (00000001) = 1 */i = - 3; /* i en binaire (11111101) */j = i 2; /* j devient (11111111) = -1 */Les oprateurs bit bit < &, |, ^>Les oprateurs portent sur les bits du mme rangExemple :int i = 5, j = -3 ;i & j vaut 5i | j vaut -3i ^ j vaut -15

  • Oprateurs particuliers de C:Oprateur daffectation ;oprande1 = oprande1 op oprande2 oprande1 op= oprande2Exemple:a = a /b a /= b;c = c >> 2 c >>= 2Oprateurs dincrmentation et de dcrmentation post-incrmentation (dcrmentation) ++(--)La valeur de variable est dabord utilise puis incrmente (dcrmente)pr incrmentation (dcrmentation) (- -)++La valeur de variable est dabord incrmente (dcrmente) puis utiliseExemple:int a = 3, b = 0;Que vaut a++ et ++b?

    Oprateur conditionnel

  • Oprateur squentiel Cet oprateur permet de regrouper deux sous expressions en une seule. On value la premire puis la seconde. La valeur finale retourne de l'expression tant la seconde.On peut aussi l'utiliser pour valuer deux (ou plus) expressions en mme temps

    Oprateur sizeof sizeof()retourne le nombre doctets quoccupe un type ou variablesizeof(float) retourne 4 octets

    Oprateur de forage de type (cast)(type) convertit la variable dun type donn en le type spcifi (type)

  • Priorit et associativit des expressionsLors de lvaluation des expressions, les oprateurs respectent certaines lois de priorit et dassociativit;

  • Lecture et criture de donnescriture formate des donnes printfprintf(format, , , , );La partie format est une chane de caractres qui peut contenir:du texte;des caractres de contrle;des spcificateurs de formatUn spcificateur indique la manire dont les valeurs des expressions ,, seront affichesUn spcificateur par expression, il commence par le symbole % et se termine par 1 ou 2 caractres qui indiquent le format daffichageOn peut indiquer la largeur minimale du champ o sera affiche la valeur. La forme est donne par :%[ [-] ] [.] avec: - : aligne laffichage sur la gauche n1> : taille minimale du champ daffichage n2 : dans le cas des rels, n2 indique le nombre de chiffres afficher aprs la virgule

  • Lecture formate des donnes scanfscanf (format, ,, );Le scanf lit le fichier standard en entre stdin puis fait correspondre les caractres lus au format indiqu dans la chane de format ;La spcification du format est identique printf sauf quon fournit ladresse (&) des variables suivi de leurs identificateursTableau de spcificateur de format

    spcificateuraffichagetype%cun seul caractrechar%d ou %iun entier relatifint%uun entier non signunsigned int%oun entier en octaleint%xun entier en hexadcimale(a-f)int%Xun entier en hexadcimale(A-F)int%fun relfloat ou double%eun rel en exponentiel (e)``%Eun rel en exponentiel (E)``%sune chane de caractres*char

  • Exemples Donner lordre et la valeur dvaluation des expressions suivantes:a=5, b= 10, c = -1;X = 2*a + 3*b 4*c;a = b = c;a *= b += 5;!- -a == ++ !b;((2*a + 3)*b 4)*c;Donner le type des expressions suivantes:int x = 4,y; float z = 15. 76; char c;A = x*z + y;c = c + 1;y = z/x;(float)y = (float)z/x;Quel est le rsultat des instructions suivantes:printf(%4d, 14297);printf(%4x, 142);printf(%f, 1429.7);printf(%.2f, 14.297);printf(%4f, 142.97);

  • Lecture et criture dun caractrecriture dun caractre putcharputchar(caractre)Permet dcrire un caractre sur stdout. Elle est quivalente printf(%c, caractre)Exemple:char a= 63, b = \n, c= \a;putchar(x);putchar(\);putchar(b);putchar(66);putchar(a);putchar(c);Lecture dun caractre getcharcaractre = getchar()Permet de lire un caractre sur stdin. Elle retourne le caractre lu

  • Structures de contrleStructures de choix:Utilisable lorsquon a besoin de n'effectuer certaines instructions que dans certains cas. On dispose pour cela du if et du switch . Linstruction if if (expression) bloc dinstructions1elsebloc dinstructions2Si lexpression est vraie, alors le bloc dinstructions 1 est excut sinon cest le second bloc;Remarques :if (!expr) if (expr == 0)if (expr1) if (expr2) if (expr3)bloc1else bloc2 else bloc 3 Un else se rapporte au if le plus proche; un if peut aussi se terminer sans else

  • Exemples : int a = 0, b=2, n= -1, m = 0;if(n>0) if(a>b)m = a;elsem = b;

    if(n>0) {if(a>b)m = a;}elsem = b;

    crire un programme qui permet de rsoudre lquation du second degr Ax2 + Bx + C = 0;crire un programme qui vrifie la validit de lheure saisie(hh:mm:ss);crire un programme qui calcule le chiffre daffaires dune entreprise (recettes dpenses). Si ce chiffre dpasse les 100000 dhs, lentreprise est en bonne tat sinon elle souffre dune crise.

  • Linstruction switch switch (expression) {case : bloc dinstructions1case : bloc dinstructions2case : bloc dinstructionsn default : bloc dinstructions} Le test seffectue sur la valeur de lexpression, si elle prend la ime valeur, alors on excute le ime bloc correspondantExemple : char c;switch ( c) {case + : puts(opration daddition); break;case - : puts(opration de soustraction); break;case * : puts(opration de multiplication); break;case / : puts(opration de division); break;default : puts(opration non valide); break;}Remarques : linstruction break permet de sortir immdiatement du bloc excut, sinon le switch risque de tester le cas suivant.

  • Structures de rptition:Utilisable lorsquon a besoin de rpter un bloc dinstructions plusieurs fois. La boucle for for (expr1; expr2; expr3) { bloc dinstructions }expr1 : valeur dpart;expr2 : condition darrt;expr3 : mise jour de la condition darrt

    On value lexpression1, puis on ritre le processus suivant:valuer lexpression 2; si elle est valide, on excute le bloc dinstructions puis on value lexpression3; sinon on sarrteExemple :/* affichage du double des valeurs entre 0 et 15 */int i;for (i=0; i

  • La boucle while while (expr){ bloc dinstructions }Elle correspond tantque (expr) faire bloc instructions L'expression est au moins value une fois. Tant qu'elle est vraie, on excute le bloc d'instructions; ds qu'elle est fausse, on sort du bloc et on passe aux autres instructions (si elle est fausse ds le dbut, le bloc n'est jamais excut). Exemple :/* affichage de la racine des chiffres entre 0 et 10 */..float nombre,racine=0;puts("entrez un nombre rel entre 0 et 10"); scanf("%f",&nombre); while (racine*racine
  • crire un programme qui affiche les puissances dun entier n saisi jusqu atteindre une valeur maximale fixe par lutilisateurcrire un programme qui fait le compte rebours dune valeur donneQue fait ce programme?:

    La boucle do while do { bloc dinstructions }while (expr) Elle correspond faire bloc instructions tantque (expr) Semblable while mais le bloc d'instructions est au moins excut une fois, avant la premire valuation de l'expression. Exemple :/* affichage du double des valeurs entre 0 et 15 */int i;doprintf(%d\t, 2*i);while (i15)

    Refaire les mmes exercices du while crire un programme daffichage de menuint i, j;puts( donner le i"); scanf("%d",&i); puts("entrez un j"); scanf("%d",&j); while (i != j) {puts( donner le i"); scanf("%d",&i); puts("entrez un j"); scanf("%d",&j); if (i == j) { printf(votre pivot est (%d,%d), i,j); break;}}

  • Branchements inconditionnels :Utilisable lorsquon a besoin de terminer un bloc immdiatement. break Il provoque la sortie immdiate de la boucle ou switch en cours. Il est limit un seul niveau d'imbrication continueElle permet de passer directement litration suivante dune bouclereturn Permet de sortir de la fonction actuelle (par exemple main), en se branchant son dernier }.Return permet galement de rendre la valeur rsultat dune fonction ExitPermet de quitter directement le programme

  • Tableaux

  • Dfinition Un tableau est une variable structure forme dun ensemble de valeurs de mme type dites composantes du tableau ; Le nombre de composantes constitue la dimension du tableau ; Chaque lment est repr par un indice prcisant sa position au sein du tableau; Le nom du tableau est lidentificateur de ce tableau .

  • Tableau une dimensionDclaration :Syntaxe: [dimension]Le type dtermine le type des diffrentes valeurs composantes le tableau;Le nom tableau est lidentificateur du tableau;La dimension est la taille maximale que peut atteindre ce tableaufloat Note[30];Initialisation :Syntaxe: [dimension] = {c1,c2,,cn}Si la liste des composantes c1,,cn ne contient pas toutes les valeurs, les composantes restantes sont initialises 0;Si la dimension nest pas fixe linitialisation, le systme alloue automatiquement lespace ncessaire.float Note[] = {10, 12, 16, 8}Mmorisation :Le nom du tableau est le reprsentant de ladresse du 1er lment du tableau;Les adresses des autres composantes sont calcules relativement cette adresse; par exemple, ladresse du ime lment dun tableau donn X se calcule par : X + (i*taille_de_la_composante)Pour un tableau form de N composantes de taille M octets, lespace total allouer pour ce tableau est (N*M) octets.

  • Accs : Pour accder au ime lment du tableau, on utilise son indice selon la syntaxe suivante:Syntaxe : nom_tableau[indice-1], avec indice >= 0

    Exemples : saisie et affichage dun tableau de rels#includemain() { // dclarationint i, N;printf(veuillez saisir une dimension\n);scanf(%d, &N);flaot T[N];// saisiefor(i=0; i

  • Tri dun tableauTri par slectionIl sagit de parcourir le tableau en cherchant llment le plus petit (le plus grand), le mettre dans la 1re (dernire) position. Ensuite, procder la recherche du second plus petit(grand) et le mettre en seconde (avant-dernire) position et ainsi de suite jusqu ce que le tableau soit tri.Tri par propagation (bubble sort)Il sagit comparer les lments du tableau deux deux successivement. Sils sont dans le bon ordre, on passe aux suivants; sinon, on les permute et on reprend la comparaison ds le dbut.

    Exercices :crire un programme de tri par slection et par propagation;

  • Recherche dans un tableauRecherche squentielleIl sagit de comparer successivement les valeurs du tableau avec la valeur donneRecherche dichotomiqueDcomposer le tableau en 2. Comparer la valeur recherche celle du milieu; si elle est suprieure, la recherche est effectue sur la partie droite du tableau,sinon la partie gauche est traiter. La tableau est suppos tri dans lordre croissant.

    Exercices :crire un programme de recherche squentielle et dichotomique dans le cas croissant et dcroissant

  • Tableau plusieurs dimensionsDclaration :Syntaxe: [dim1] [dim2][dimn]Cas de deux dimensions (matrices)Syntaxe: [lignes] [colonnes] La taille lignes reprsente le nombre maximale de lignes composantes la matrice; (sens horizontal)La taille colonnes reprsente le nombre maximale de colonnes composantes la matrice; (sens vertical)float classe [30][5];Mmorisation :Le nom dune matrice est le reprsentant de ladresse du 1er lment(ladresse de la 1re ligne);Les composantes dune matrice sont stockes ligne par ligne en mmoire;Les adresses des autres composantes sont calcules comme suit : M + (i* lignes* taille_de_la_composante) + (j* taille_de_la_composante)Pour une matrice forme de L lignes et C colonnes de taille M octets, lespace total allouer est (L*C*M) octets.

  • Accs : Pour accder llment (i,j) dune matrice, on utilise ses indices selon la syntaxe suivante:Syntaxe : nom_matrice[i] [j]Exemples : saisie et affichage dune matrice de rels#includemain() { // dclarationint i, j, L, C;printf(veuillez saisir un nombre de lignes\n);scanf(%d, &L);printf(veuillez saisir un nombre de colonnes);scanf(%d, &C);flaot M[L][C];// saisiefor(i=0; i
  • Pointeurs

  • Fonctions

  • Chanes de caractres

  • Structures

    Facult des Sciences et Techniques de Beni-MellalFacult des Sciences et Techniques de Beni-Mellal--La mmoire RAM est dite volatile puisque les informations qui y sont stockes sont supprimes une fois le programme traitant est termin ou bien lordinateur est teint.--1 octet = 8 bits--1 mot = ensemble doctets--la capacit dune mmoire est exprime en kilo-octets (Ko) 1ko = 1024 octets Facult des Sciences et Techniques de Beni-MellalFacult des Sciences et Techniques de Beni-MellalFacult des Sciences et Techniques de Beni-MellalPour rsoudre un problme sur machine, plusieurs tapes sont suivre:1 . Analyse = ce quon veut faire2 . Algorithme = crire le problme analys sous formes de suites doprations3 . Traduction = traduire lalgorithme dans un langage choisi4 . Programmation sur machine puis excution pour atteindre le rsultatFacult des Sciences et Techniques de Beni-Mellal