Vous êtes sur la page 1sur 29

Programmation et Structures de

données dynamiques

Alexis NAGALO
Responsable Pédagogique du cycle d’Ingénieur de Conception
alexis.nagalo@isge-bf.org
70 85 48 87/ 76 30 32 91
Objectif Global

 A l’issu de l’UE, les étudiants devront être capables de :

 Consolider les acquis de l'algorithmique et structures de données statiques;

 Maîtriser les structures de données dynamiques et les traitements associés.


Contenu
 Rappel sur le langage C
 Les Fonctions en C
 Les pointeurs
 La gestion dynamique de la mémoire
 Les chaînes de caractères
 Les structures
 Les unions
 Les Piles et les Files
 Les fichiers
Ressources
 Bibliographiques
 Claude Delannoy : Programmer en langage C, EYROLLES, 2002
 C. Jamsa : C/C++ : la bible du programmeur, EYROLLES, 1999
 J. Léry : Algorithme Application en C, PEARSON EDUCATION, 2005
 R. Sedgwick : Algorithme en langage C, DUNOD, 2001
 LOUDON : Maitrise des algorithmes en C, O’REILLY France, 2000
 …

 Web
 OpenclassRooms : https://openclassrooms.com/fr/
 Developpez : https://www.developpez.com/
 France IOI : http://www.france-ioi.org/
 StackOverFlow : https://stackoverflow.com/
 …
Déroulement du cours
 Volume Horaire Total : 50 heures

 Cours Théorique : 20 heures

 TP + Projet : 30 heures

 Évaluation : 02 heures (2/3 de la moyenne)

 Projet : 1/3 de la moyenne

 Crédits: 03
Déroulement du cours
 Projet

 En trinôme (Tirage aléatoire )


Outils nécessaires
 Système d’exploitation : Linux ( Ubuntu )

 Compilateur : gcc

 Editeur de texte : nano, gedit, Vi, ….


Rappel sur le langage C
Les mots réservés en C

break case char const continue


default do double else enum
extern float for goto if
inline int long overload register
return short sizeof static struct
switch typedef union unsigned void
volatile while
Les identificateurs

 Un identificateur est un nom permettant de définir un objet manipulé dans un programme

 Exemple : constante, variable, nom de fonction

 Tout identificateur doit avoir été déclaré avant son utilisation

 Il est formé d’une suite de lettres , de chiffres et/ou du caractère Under score (_). Il commence

toujours par une lettre.

Attention : Le langage C est sensible à la casse.


Les constantes

 Les nombres entiers (notation décimale ou octale ou hexadécimale)

 Les nombres réels (une partie entière + un point + une partie fractionnaire)

 Les caractères (‘A’, ‘Z’,…)

 Les chaînes de caractères : facilité par l’utilisation de la bibliothèque string.h .

char chaine[20]; strcpy(chaine, ‘’Hello Word’’);

 Les expressions constantes : 4+8; 1<4


Les caractères spéciaux

\b Effacement arrière

\f Saut de page

\n Fin de ligne

\r Retour au début de la ligne

\t Avance d’une tabulation horizontale

\’ Introduction du caractère apostrophe

\0 Caractère nul, synonyme de fin de chaîne


Déclaration des variables

 Toute variable utilisée dans un programme doit être déclarée

 Cette déclaration sert à préciser au compilateur le type de la variable

 Elle peut se situer n’importe où dans un programme mais toujours avant son utilisation,

 Elle commence toujours avec une lettre minuscule et ne comporte pas d’espace qui est

interprétée comme un séparateur.


Les opérateurs

 Les opérateurs arithmétiques


 Les opérateurs arithmétiques unaires
Ils portent sur un terme seulement. Ex : -a;

 Les opérateurs arithmétiques binaires


Ce sont les opérateurs classiques : +, -,*,/,% .
Remarque: Faites attention aux règles de priorité.
Les opérateurs

 Les opérateurs d’affectation simple


La valeur se trouve toujours à droite du signe égal (=) et peut être le
résultat d’une expression ou d’une fonction.

Exemple: p=18;
max=5*6+3/4;
puiss= puissance(2,10);
Les opérateurs

 Les opérateurs d’incrémentation et de décrémentation


Le langage C propose d’écrire certaines expressions plus simplement.
Ainsi , i=i+1; peut s’écrire en C : i++, tandis que j=j-1; peut s’écrire j--; Ces opérateurs
peuvent être placés avant ou après la variable.
Exemple: soit x=15;
y=x++; est équivalent à y=x et x++;
donc y vaut 15 et x vaut 16.

y=++x; est équivalent à x++; et y=x;


donc y vaut 16 et x vaut 16;
Les opérateurs

 Les opérateurs d’affectation étendue


Le langage C propose des combinaisons puissantes d’opérateurs,
dans le cas où l’opérande à gauche du signe ‘=‘ se retrouve aussi à
droite.
Ainsi, par exemple, i=i+k; peut s’écrire i+=k;
Tableau des opérateurs d’affectation étendue.

x*=y x=x*y
x/=y x=x/y
x+=y x=x+y
x-=y x=x-y
x%=y x=x%y
Les opérateurs

Les opérateurs relationnels


 Les opérateurs de comparaison
Ils interviennent essentiellement au niveau des boucles de contrôle telles que le « if »
on retrouve : <,<=,>,>=,==,!=.

 Les opérateurs logiques


! Représente le «non» logique
&& représente le «et» logique
|| représente le «ou» logique.
L’instruction simple – L’instruction
composée
 Une instruction simple est unique et se termine par un point virgule.
Ex: a=8; putchar(c); n++;

 Une instruction composée est constituée d’une séquence d’instructions simples.


Elle est aussi appelée un bloc. L’instruction composée est entourée par des
accolades { }. Elle comporte des instructions simples de toutes sortes (entrées,
sorties, conditionnelles, …) et même d’autres instructions composées imbriquées.
L’instruction d’exécution conditionnelle
IF
 Son rôle
Elle permet d’effectuer une certaine action si et seulement si une condition est satisfaite.

 Sa syntaxe
if(expression)instruction_1[else instruction_2]
 Exemple
if(a>0) printf(‘’%d est positif ‘’, a);
L’instruction d’exécution conditionnelle
IF
 Instructions if imbriquées
Après l’expression ou après le else se trouve n’importe quelle instruction, simple ou composée, en
particulier une autre instruction if. Une certaine ambiguïté survient quand il y’a plusieurs instructions
if imbriquées. Pour lever cette ambiguïté, C associe toujours le else au if sans else le plus proche.

Exemple:
if(…)
if(…) {
if(…) if(…)
instructions; instructions;
else }
instructions else
instructions
L’instruction d’exécution conditionnelle
IF
 Particularités d’emploi de l’expression en C
 if(N==0) peut s’écrire if(!N)

 if((i=j)!=0) veut dire que :


• i reçoit la valeur de j
• Cette valeur est ensuite assignée à l’expression
• Cette expression est ensuite comparée à 0.
 if(++i<MAX) veut dire que l’on incrémente i puis on le compare avec MAX.
L’instruction de sélection SWITCH

 Son rôle
Il existe en C une instruction de choix multiples réalisant un aiguillage direct vers l’action
voulue. Il s’agit de l’instruction switch.
 Sa syntaxe switch(expression){
case constante 1: [suite d’instructions 1]
case constante 2: [suite d’instructions 2]


case constante n: [suite d’instructions n]
[default : [suite d’instructions]]
}

L’ordre des case … et default est quelconque, mais les valeurs doivent être toujours
différentes les unes des autres.
L’opérateur conditionnel
 Son rôle
Des tests du style: if(a>b) max=a; else max=b; sont très souvent effectués dans un
programme. En C, cette écriture se simplifie grâce à la présence d’un opérateur particulier:
l’opérateur conditionnel, qui est ternaire, c’est-à-dire qu’il met en rapport trois termes. Ainsi, l
instruction précédente s’écrit : max= a>b?a:b;
Avec ‘’?’’ Pour alors et ’’:’’ pour sinon
L’exécution est la suivante
 l’expression a>b est testée
 si a supérieure à b, la deuxième expression est évaluée (ici a) et donne sa valeur à l’expression
globale.
 Sinon, la troisième expression est évaluée (ici b) et donne sa valeur à l’expression globale.

 Sa syntaxe
Expression 1?expression 2: expression 3
L’instruction FOR

 Son rôle
Elle permet de répéter une action un nombre de fois défini à l’avance. Elle fait
intervenir en général l’initialisation d’un compteur, son incrément et un test de fin de
comptage. Cette instruction est très utilisée dans le cas de manipulations de tableaux.

 Sa syntaxe
For([initialisation]; [test]; [incrémentation (ou décrémentation)])
L’instruction WHILE

 Son rôle
Elle permet de répéter une suite d’actions tant qu’une condition est vraie, sans préjuger
du nombre de répétitions.
Remarque:
 L’expression est testée avant l’exécution de la boucle.
 À l’intérieur de la boucle, la condition doit être modifiée, sous peine de ne jamais sortir
de cette boucle.
 Ne pas oublier d’initialiser la valeur de l’expression avant d’entrer dans la boucle.

 Sa syntaxe
while(expression) instruction
L’instruction DO WHILE
 Son rôle
Elle permet de répéter une suite d’actions tant que la condition est vraie. Mais ici, la condition
est testée en fin de boucle.
Remarque:
 Les instuctions sont exécutées une première fois, quelque soit la valeur de l’expression,
contrairement à WHILE.
 À l’intérieur de la boucle, la condition doit être modifiée, sous peine de ne jamais sortir de cette
boucle.
 La variable de test n’a pas besoin d’être initialisée avant l’instruction do. Il suffit qu’elle le soit au
plus tard à la fin de la boucle juste avant WHILE.

 Sa syntaxe
do instruction
while(expression);
Les tableaux

 Les Tableaux à une dimension


 Son rôle
Un tableau représente un type structuré. Il permet de définir une structure de variable constituée
d’un nombre déterminé de composants, tous de même type.

 Sa syntaxe
type_tableau nom_tableau[nombre_element]
Exemple: int tab[5]={0,5,1,8,17};
Les tableaux

 Les Tableaux à plusieurs dimensions


L’opérateur [] peut être juxtaposé à un autre opérateur, pour définir les tableaux à
plusieurs dimensions.

Exemple:
char tab[2][3];
int tab_2d[2][5]={2,4,3,8,14,56,1,0,3,9};

Vous aimerez peut-être aussi