SlideShare une entreprise Scribd logo
1  sur  17
Télécharger pour lire hors ligne
Programmation en langage C
Fahad R. Golra
Faculté des Sciences et Technologies
Université de Lorraine
Séance 2 – Tableaux, Tri
2 25/09/2017
Tableaux
Programmation en langage C, Université de Lorraine
• Les	tableaux	constituent	une	
collection	d’objets	de	même	
type,	implémentés	
consécutivement	en	mémoire	
et	représentés	par	un	même	
identificateur.	
• Ces	objets	peuvent	être	de	
type	très	variés	(char,	int,	
float,	double	etc.).
• Chaque	élément	du	tableau	
est	une	variable	
int tab[5];
type nom[ taille du tableau ];
tab[0]
tab[1]
tab[2]
tab[3]
tab[4]
int
3 25/09/2017
Tableaux
Programmation en langage C, Université de Lorraine
• La	taille	du	tableau	doit	être	
exprimé	avec	un	chiffre	pour	
pouvoir	compiler
• Pour	accéder	à	un	élément	du	
tableau	il	suffit	d’utiliser	un	
indice	qui	peut	être	compris	
entre	0	et	MAX_ELEM-1
• Ainsi	dans	l’exemple	du	
tableau
• tab[3]	est	le	quatrième	
élément	du	tableau,	
• tab[0]	est	le	premier.
#include <stdio.h>
#define MAX_ELEM 5
int main(void)
{
int tab[MAX_ELEM];
-
-
}
tab[0]
tab[1]
tab[2]
tab[3]
tab[4]
int tab[MAX_ELEM];
• Il est possible d’affecter une valeur par affectation à un
élément quelconque du tableau
• Cette instruction permet d’affecter la valeur 3 au
troisième élément du tableau. Rappelons à ce sujet que
le premier élément du tableau à comme indice 0.
4 25/09/2017
Affectation à un élément du tableau
Programmation en langage C, Université de Lorraine
tab[2] = 3;
5 25/09/2017
Initialisation des tableaux
Programmation en langage C, Université de Lorraine
• Un	tableau	peut	être	
initialisé	à
• Déclaration
• Durant	l'exécution	du	
programme
• Est	équivalent	à :
tab[0]=2,	tab[1]=4,	tab[2]=6,	
tab[3]=8,	tab[4]=10
#include <stdio.h>
int main(void)
{
//declaration
int tab[5] = { 2, 4, 6, 8, 10};
…
//durant l’exécution
for(i = 0; i < 5; i++)
tab[i] = (i+1)*2;
…
//durant l’exécution
for(i = 0; i < 5; i++)
scanf("%d", &tab[i]);
…
}
• La boucle for est l’instruction itérative la mieux adaptée pour
parcourir un tableau. Illustration, on souhaite sommer tous les
éléments d’un tableau :
• A la fin de l’exécution de l’instruction for la variable somme
contiendra la somme des nombres entiers de 1 à 10.
6 25/09/2017
Parcourir un tableau
Programmation en langage C, Université de Lorraine
#include <stdio.h>
int main(void)
{
int tab[10]= {1,2,3,4,5,6,7,8,9,10};
int somme=0;
for(i=0; i<10; i++) somme+=tab[i];
printf("somme : %d", somme);
}
7 25/09/2017
Exemple 1 : le minimum d’un tableau
Programmation en langage C, Université de Lorraine
#include <stdio.h>
int main(void)
{
int i;
int tab[10]= {1,-2,3,4,0,-6,-7,8,9,10};
int min=tab[0];
for(i=0; i<10; i++)
if (min<tab[i]) min=tab[i];
printf("Le minimum du tableau est %d n", min);
return 0;
}
8 25/09/2017
Exemple 2 : déterminer la présence
Programmation en langage C, Université de Lorraine
#include <stdio.h>
int main(void)
{
int tab[10]= {1,2,3,4,5,6,7,8,9,10};
int trouve=0;
int i, x;
printf("Enter un nombre : ");
scanf("%d", &x);
for(i=0; (!trouve && (i<10)); i++)
trouve=(tab[i] == x);
if (trouve) printf("x est présent dans le tableaun");
else printf("x n'est pas présent dans le tableaun");
return 0;
}
• On peut ne pas préciser la dimension du tableau lors de son
initialisation
• Le nombre d’éléments du tableau (si on ne veut pas les
compter) est :
9 25/09/2017
Initialisation des tableaux (suite)
Programmation en langage C, Université de Lorraine
#include <stdio.h>
int main(void)
{
//declaration
int tab[]= {1,0,9,7,6,4,8,9,10,5};
...
//nombre d'elements du tableau
N=sizeof(tab)/sizeof(tab[0]);
...
}
10 25/09/2017
Remarques importantes
Programmation en langage C, Université de Lorraine
• Les tableaux sont
statiques : La taille d'un
tableau en mémoire
dépend à la fois de son
type et de sa dimension.
En langage C, cette taille
doit être connue au
moment de la
compilation.
• Débordement d'indice : Il
est interdit de lire ou
d'écrire dans un élément
du tableau qui se trouve
en dehors du tableau
#include <stdio.h>
int main(void)
{
int dimension;
scanf("%d", &dimension);
int tab[dimension]; // interdit
int tab[10];
tab[12] = 1; // débordement d'indice
...
}
11 25/09/2017
Exemple 3 : le tri à bulles
Programmation en langage C, Université de Lorraine
#include <stdio.h>
int main (void)
{
int tab[10]= {10,1,6,-8,5,3,7,8,9};
int n ,i ,temp;
for (n=0; n<10; n++)
for (i=0; i<9; i++)
{
if (tab[i]>tab[i+1])
{
temp=tab[i];
tab[i]=tab[i+1];
tab[i+1]=temp;
}
}
for (i=0; i<10; i++)
printf("%d ", tab[i]);
return 0;
}
10 1 6 -8 5 3 7 8 9 0
1 10
6 10
-8 10
5 10
3 10
7 10
8 10
9 10
0 10
1 6 -8 5 3 7 8 9 0 10
12 25/09/2017
Exemple 3 : le tri à bulles
Programmation en langage C, Université de Lorraine
#include <stdio.h>
int main (void)
{
int tab[10]= {10,1,6,-8,5,3,7,8,9};
int n ,i ,temp;
for (n=0; n<10; n++)
for (i=0; i<9; i++)
{
if (tab[i]>tab[i+1])
{
temp=tab[i];
tab[i]=tab[i+1];
tab[i+1]=temp;
}
}
for (i=0; i<10; i++)
printf("%d ", tab[i]);
return 0;
}
10 1 6 -8 5 3 7 8 9 0
1 6 -8 5 3 7 8 9 0 10
1 -8 5 3 6 7 8 0 9 10
-8 1 3 5 6 7 0 8 9 10
-8 1 3 5 6 0 7 8 9 10
-8 1 3 5 0 6 7 8 9 10
-8 1 3 0 5 6 7 8 9 10
-8 1 0 3 5 6 7 8 9 10
-8 0 1 3 5 6 7 8 9 10
-8 0 1 3 5 6 7 8 9 10
-8 0 1 3 5 6 7 8 9 10
13 25/09/2017
Exemple 3 : le tri à bulles (cond. permutations)
Programmation en langage C, Université de Lorraine
int tab[10]= {10,1,6,-8,-4,5,3,7,8,9};
int i ,temp;
int permut;
do
{
permut=0;
for (i=0; i<9; i++)
{
if (tab[i]>tab[i+1])
{
temp=tab[i];
tab[i]=tab[i+1];
tab[i+1]=temp;
permut=1;
}
}
} while (permut);
for (i=0; i<10; i++)
printf("%2d ", tab[i]);
10 1 6 -8 -4 5 3 7 8 9
1 6 -8 -4 5 3 7 8 9 10
1 -8 -4 5 3 6 7 8 9 10
-8 -4 1 3 5 6 7 8 9 10
-8 -4 1 3 5 6 7 8 9 10
permute = 0
-8 -4 1 3 5 6 7 8 9 10
14 25/09/2017
Tableaux multidimensionnels
Programmation en langage C, Université de Lorraine
• Tableau	dont	chaque	case	est	
elle-même	un	tableau.	
• tab peut	être	considéré	
comme	un	tableau	à	trois	
lignes	et	deux	colonnes.	
int tab[3][2];
type nom[ taille][taille];
…
tab[0][0]
tab[0][1]
tab[1][0]
tab[1][1]
tab[2][0]
tab[2][1]
…
tab[0]
tab[1]
tab[2]
tab[0][0] tab[0][1]
tab[1][0] tab[1][1]
tab[2][0] tab[2][1]
Colonne 0 Colonne 1
Ligne 0
Ligne 1
Ligne 2
15 25/09/2017
Initialisation des tableaux multidimensionnels
Programmation en langage C, Université de Lorraine
• Un	tableau	multi-
dimensionnel peut	être	
initialisé	à
• Déclaration
• Durant	l'exécution	du	
programme
• Pour	accéder	à	un	
élément	quelconque	de	
matrice	il	suffit	d’écrire	
par	exemple :
tab[1][2]=0 ;
printf("%d",	tab[1][2]);
#include <stdio.h>
int main(void)
{
…
//déclaration
int tab[3][2] = {{1,2},{3,4},{5,6}};
//durant l'éxecution
for (i=0; i<3; i++)
for (j=0; j<2; j++)
tab[i][j]=1;
…
}
16 25/09/2017
Exemple 4 : l'affichage d’un tableau multidi.
Programmation en langage C, Université de Lorraine
#include <stdio.h>
int main (void)
{
int i,j;
int tab[3][3]= {{1,2,3},{4,5,6},{7,8,9}};
for (i=0; i<3; i++)
{
for (j=0; j<3; j++)
printf("%2d ", tab[i][j]);
printf("n");
}
return 0;
}
17 25/09/2017
Exemple 5 : Produit de matrices
Programmation en langage C, Université de Lorraine
#include <stdio.h>
int main (void)
{
int i,j,k;
int A[3][3]= {{1,2,3},{4,5,6},{7,8,9}};
int B[3][3]= {{-1,2,-3},{-4,5,-6},{-7,8,-9}};
int C[3][3];
for (i=0; i<3; i++)
for (j=0; j<3; j++)
{
C[i][j]=0;
for (k=0; k<3; k++) C[i][j]+=A[i][k]*B[k][j];
}
return(0);
}

Contenu connexe

Tendances (20)

Langage C
Langage  CLangage  C
Langage C
 
Cours de c
Cours de cCours de c
Cours de c
 
Tp1 compte rendu en langage c
Tp1 compte rendu en langage cTp1 compte rendu en langage c
Tp1 compte rendu en langage c
 
Exercices en langage c
Exercices en langage cExercices en langage c
Exercices en langage c
 
Chapitre2 prog dsplf3
Chapitre2 prog dsplf3Chapitre2 prog dsplf3
Chapitre2 prog dsplf3
 
Le langage C
Le langage CLe langage C
Le langage C
 
Les fondamentaux de langage C#
Les fondamentaux de langage C#Les fondamentaux de langage C#
Les fondamentaux de langage C#
 
Corrigés exercices langage C
Corrigés exercices langage CCorrigés exercices langage C
Corrigés exercices langage C
 
Cours langage c
Cours langage cCours langage c
Cours langage c
 
exercices en C
exercices en Cexercices en C
exercices en C
 
Chap1V2019: Cours en C++
Chap1V2019: Cours en C++Chap1V2019: Cours en C++
Chap1V2019: Cours en C++
 
Corrigé langage c
Corrigé langage cCorrigé langage c
Corrigé langage c
 
Serie
SerieSerie
Serie
 
Chapitre4: Pointeurs et références
Chapitre4: Pointeurs et références Chapitre4: Pointeurs et références
Chapitre4: Pointeurs et références
 
Chapitre05 : Les tableaux
Chapitre05 : Les tableauxChapitre05 : Les tableaux
Chapitre05 : Les tableaux
 
Ch02
Ch02Ch02
Ch02
 
Chapitre 02 : Variables, Expressions et Instructions
Chapitre 02 : Variables, Expressions et InstructionsChapitre 02 : Variables, Expressions et Instructions
Chapitre 02 : Variables, Expressions et Instructions
 
C1 - Langage C - ISIMA - Première partie
C1 - Langage C - ISIMA - Première partieC1 - Langage C - ISIMA - Première partie
C1 - Langage C - ISIMA - Première partie
 
TP C++ : Correction
TP C++ : CorrectionTP C++ : Correction
TP C++ : Correction
 
Cours Visual Basic.NET
Cours Visual Basic.NETCours Visual Basic.NET
Cours Visual Basic.NET
 

Similaire à Seance 2 - Programmation en langage C

TP3 Atelier C++/ GL2 INSAT / Tunisie
TP3 Atelier C++/ GL2 INSAT / TunisieTP3 Atelier C++/ GL2 INSAT / Tunisie
TP3 Atelier C++/ GL2 INSAT / TunisieMariem ZAOUALI
 
Lect14 dev2
Lect14 dev2Lect14 dev2
Lect14 dev2moisko
 
20XX-XX.cours.complexite.powerpoint.sdd.pptx
20XX-XX.cours.complexite.powerpoint.sdd.pptx20XX-XX.cours.complexite.powerpoint.sdd.pptx
20XX-XX.cours.complexite.powerpoint.sdd.pptxNabil Alami
 
Correction TP4 Atelier C++ /GL2 INSAT / Tunisie
Correction TP4 Atelier C++ /GL2 INSAT / TunisieCorrection TP4 Atelier C++ /GL2 INSAT / Tunisie
Correction TP4 Atelier C++ /GL2 INSAT / TunisieMariem ZAOUALI
 
Chapitre 3 tableaux et pointeurs en C
Chapitre 3 tableaux et pointeurs en CChapitre 3 tableaux et pointeurs en C
Chapitre 3 tableaux et pointeurs en CAbdelouahed Abdou
 
Algo et complexite file pilezzzzzzzzzzzzzzzz.pptx
Algo et complexite file pilezzzzzzzzzzzzzzzz.pptxAlgo et complexite file pilezzzzzzzzzzzzzzzz.pptx
Algo et complexite file pilezzzzzzzzzzzzzzzz.pptxNabil Alami
 
Ch8 correction exercices (1)
Ch8 correction exercices (1)Ch8 correction exercices (1)
Ch8 correction exercices (1)abdellah12
 
éNoncés+corrections bac2009
éNoncés+corrections bac2009éNoncés+corrections bac2009
éNoncés+corrections bac2009Morom Bil Morom
 
Presentation Csharp et winforms
Presentation Csharp et winformsPresentation Csharp et winforms
Presentation Csharp et winformsChristophe Zome
 
Cours python avancé
Cours python avancéCours python avancé
Cours python avancépierrepo
 
Développer en natif avec C++11
Développer en natif avec C++11Développer en natif avec C++11
Développer en natif avec C++11Microsoft
 
Cours c#
Cours c#Cours c#
Cours c#zan
 
Traitement des données massives (INF442, A2)
Traitement des données massives (INF442, A2)Traitement des données massives (INF442, A2)
Traitement des données massives (INF442, A2)Frank Nielsen
 
Chapitre 1 - Algorithmique.pdf
Chapitre 1 - Algorithmique.pdfChapitre 1 - Algorithmique.pdf
Chapitre 1 - Algorithmique.pdfShiniGami0o0
 
Chap 1 Initiation.pptx
Chap 1 Initiation.pptxChap 1 Initiation.pptx
Chap 1 Initiation.pptxolfaharrabi2
 
La programmation fonctionnelle avec le langage OCaml
La programmation fonctionnelle avec le langage OCamlLa programmation fonctionnelle avec le langage OCaml
La programmation fonctionnelle avec le langage OCamlStéphane Legrand
 
FormationPython2019.pptx
FormationPython2019.pptxFormationPython2019.pptx
FormationPython2019.pptxLamissGhoul1
 
Projet.pptx PRESENTATION DU PROJET DE PROGAMMATION EN C
Projet.pptx PRESENTATION DU PROJET DE PROGAMMATION EN CProjet.pptx PRESENTATION DU PROJET DE PROGAMMATION EN C
Projet.pptx PRESENTATION DU PROJET DE PROGAMMATION EN CEnochBidima3
 

Similaire à Seance 2 - Programmation en langage C (20)

TP3 Atelier C++/ GL2 INSAT / Tunisie
TP3 Atelier C++/ GL2 INSAT / TunisieTP3 Atelier C++/ GL2 INSAT / Tunisie
TP3 Atelier C++/ GL2 INSAT / Tunisie
 
Lect14 dev2
Lect14 dev2Lect14 dev2
Lect14 dev2
 
20XX-XX.cours.complexite.powerpoint.sdd.pptx
20XX-XX.cours.complexite.powerpoint.sdd.pptx20XX-XX.cours.complexite.powerpoint.sdd.pptx
20XX-XX.cours.complexite.powerpoint.sdd.pptx
 
Correction TP4 Atelier C++ /GL2 INSAT / Tunisie
Correction TP4 Atelier C++ /GL2 INSAT / TunisieCorrection TP4 Atelier C++ /GL2 INSAT / Tunisie
Correction TP4 Atelier C++ /GL2 INSAT / Tunisie
 
Chapitre 3 tableaux et pointeurs en C
Chapitre 3 tableaux et pointeurs en CChapitre 3 tableaux et pointeurs en C
Chapitre 3 tableaux et pointeurs en C
 
Algo et complexite file pilezzzzzzzzzzzzzzzz.pptx
Algo et complexite file pilezzzzzzzzzzzzzzzz.pptxAlgo et complexite file pilezzzzzzzzzzzzzzzz.pptx
Algo et complexite file pilezzzzzzzzzzzzzzzz.pptx
 
Ch8 correction exercices (1)
Ch8 correction exercices (1)Ch8 correction exercices (1)
Ch8 correction exercices (1)
 
éNoncés+corrections bac2009
éNoncés+corrections bac2009éNoncés+corrections bac2009
éNoncés+corrections bac2009
 
Presentation Csharp et winforms
Presentation Csharp et winformsPresentation Csharp et winforms
Presentation Csharp et winforms
 
Cours python avancé
Cours python avancéCours python avancé
Cours python avancé
 
Développer en natif avec C++11
Développer en natif avec C++11Développer en natif avec C++11
Développer en natif avec C++11
 
Cours c#
Cours c#Cours c#
Cours c#
 
Traitement des données massives (INF442, A2)
Traitement des données massives (INF442, A2)Traitement des données massives (INF442, A2)
Traitement des données massives (INF442, A2)
 
Support programmation orientée objet c# .net version f8
Support programmation orientée objet c#  .net version f8Support programmation orientée objet c#  .net version f8
Support programmation orientée objet c# .net version f8
 
Chapitre 1 - Algorithmique.pdf
Chapitre 1 - Algorithmique.pdfChapitre 1 - Algorithmique.pdf
Chapitre 1 - Algorithmique.pdf
 
Chap 1 Initiation.pptx
Chap 1 Initiation.pptxChap 1 Initiation.pptx
Chap 1 Initiation.pptx
 
Theme2
Theme2Theme2
Theme2
 
La programmation fonctionnelle avec le langage OCaml
La programmation fonctionnelle avec le langage OCamlLa programmation fonctionnelle avec le langage OCaml
La programmation fonctionnelle avec le langage OCaml
 
FormationPython2019.pptx
FormationPython2019.pptxFormationPython2019.pptx
FormationPython2019.pptx
 
Projet.pptx PRESENTATION DU PROJET DE PROGAMMATION EN C
Projet.pptx PRESENTATION DU PROJET DE PROGAMMATION EN CProjet.pptx PRESENTATION DU PROJET DE PROGAMMATION EN C
Projet.pptx PRESENTATION DU PROJET DE PROGAMMATION EN C
 

Plus de Fahad Golra

Tutorial 4 - Basics of Digital Photography
Tutorial 4 - Basics of Digital PhotographyTutorial 4 - Basics of Digital Photography
Tutorial 4 - Basics of Digital PhotographyFahad Golra
 
Tutorial 3 - Basics of Digital Photography
Tutorial 3 - Basics of Digital PhotographyTutorial 3 - Basics of Digital Photography
Tutorial 3 - Basics of Digital PhotographyFahad Golra
 
Tutorial 2 - Basics of Digital Photography
Tutorial 2 - Basics of Digital PhotographyTutorial 2 - Basics of Digital Photography
Tutorial 2 - Basics of Digital PhotographyFahad Golra
 
Tutorial 1 - Basics of Digital Photography
Tutorial 1 - Basics of Digital PhotographyTutorial 1 - Basics of Digital Photography
Tutorial 1 - Basics of Digital PhotographyFahad Golra
 
Lecture 9 - Java Persistence, JPA 2
Lecture 9 - Java Persistence, JPA 2Lecture 9 - Java Persistence, JPA 2
Lecture 9 - Java Persistence, JPA 2Fahad Golra
 
Lecture 10 - Java Server Faces (JSF)
Lecture 10 - Java Server Faces (JSF)Lecture 10 - Java Server Faces (JSF)
Lecture 10 - Java Server Faces (JSF)Fahad Golra
 
Lecture 8 Enterprise Java Beans (EJB)
Lecture 8  Enterprise Java Beans (EJB)Lecture 8  Enterprise Java Beans (EJB)
Lecture 8 Enterprise Java Beans (EJB)Fahad Golra
 
Lecture 7 Web Services JAX-WS & JAX-RS
Lecture 7   Web Services JAX-WS & JAX-RSLecture 7   Web Services JAX-WS & JAX-RS
Lecture 7 Web Services JAX-WS & JAX-RSFahad Golra
 
Lecture 6 Web Sockets
Lecture 6   Web SocketsLecture 6   Web Sockets
Lecture 6 Web SocketsFahad Golra
 
Lecture 5 JSTL, custom tags, maven
Lecture 5   JSTL, custom tags, mavenLecture 5   JSTL, custom tags, maven
Lecture 5 JSTL, custom tags, mavenFahad Golra
 
Lecture 4: JavaServer Pages (JSP) & Expression Language (EL)
Lecture 4:  JavaServer Pages (JSP) & Expression Language (EL)Lecture 4:  JavaServer Pages (JSP) & Expression Language (EL)
Lecture 4: JavaServer Pages (JSP) & Expression Language (EL)Fahad Golra
 
Lecture 2: Servlets
Lecture 2:  ServletsLecture 2:  Servlets
Lecture 2: ServletsFahad Golra
 
Lecture 1: Introduction to JEE
Lecture 1:  Introduction to JEELecture 1:  Introduction to JEE
Lecture 1: Introduction to JEEFahad Golra
 
Lecture 3: Servlets - Session Management
Lecture 3:  Servlets - Session ManagementLecture 3:  Servlets - Session Management
Lecture 3: Servlets - Session ManagementFahad Golra
 
Deviation Detection in Process Enactment
Deviation Detection in Process EnactmentDeviation Detection in Process Enactment
Deviation Detection in Process EnactmentFahad Golra
 
Meta l metacase tools & possibilities
Meta l metacase tools & possibilitiesMeta l metacase tools & possibilities
Meta l metacase tools & possibilitiesFahad Golra
 

Plus de Fahad Golra (16)

Tutorial 4 - Basics of Digital Photography
Tutorial 4 - Basics of Digital PhotographyTutorial 4 - Basics of Digital Photography
Tutorial 4 - Basics of Digital Photography
 
Tutorial 3 - Basics of Digital Photography
Tutorial 3 - Basics of Digital PhotographyTutorial 3 - Basics of Digital Photography
Tutorial 3 - Basics of Digital Photography
 
Tutorial 2 - Basics of Digital Photography
Tutorial 2 - Basics of Digital PhotographyTutorial 2 - Basics of Digital Photography
Tutorial 2 - Basics of Digital Photography
 
Tutorial 1 - Basics of Digital Photography
Tutorial 1 - Basics of Digital PhotographyTutorial 1 - Basics of Digital Photography
Tutorial 1 - Basics of Digital Photography
 
Lecture 9 - Java Persistence, JPA 2
Lecture 9 - Java Persistence, JPA 2Lecture 9 - Java Persistence, JPA 2
Lecture 9 - Java Persistence, JPA 2
 
Lecture 10 - Java Server Faces (JSF)
Lecture 10 - Java Server Faces (JSF)Lecture 10 - Java Server Faces (JSF)
Lecture 10 - Java Server Faces (JSF)
 
Lecture 8 Enterprise Java Beans (EJB)
Lecture 8  Enterprise Java Beans (EJB)Lecture 8  Enterprise Java Beans (EJB)
Lecture 8 Enterprise Java Beans (EJB)
 
Lecture 7 Web Services JAX-WS & JAX-RS
Lecture 7   Web Services JAX-WS & JAX-RSLecture 7   Web Services JAX-WS & JAX-RS
Lecture 7 Web Services JAX-WS & JAX-RS
 
Lecture 6 Web Sockets
Lecture 6   Web SocketsLecture 6   Web Sockets
Lecture 6 Web Sockets
 
Lecture 5 JSTL, custom tags, maven
Lecture 5   JSTL, custom tags, mavenLecture 5   JSTL, custom tags, maven
Lecture 5 JSTL, custom tags, maven
 
Lecture 4: JavaServer Pages (JSP) & Expression Language (EL)
Lecture 4:  JavaServer Pages (JSP) & Expression Language (EL)Lecture 4:  JavaServer Pages (JSP) & Expression Language (EL)
Lecture 4: JavaServer Pages (JSP) & Expression Language (EL)
 
Lecture 2: Servlets
Lecture 2:  ServletsLecture 2:  Servlets
Lecture 2: Servlets
 
Lecture 1: Introduction to JEE
Lecture 1:  Introduction to JEELecture 1:  Introduction to JEE
Lecture 1: Introduction to JEE
 
Lecture 3: Servlets - Session Management
Lecture 3:  Servlets - Session ManagementLecture 3:  Servlets - Session Management
Lecture 3: Servlets - Session Management
 
Deviation Detection in Process Enactment
Deviation Detection in Process EnactmentDeviation Detection in Process Enactment
Deviation Detection in Process Enactment
 
Meta l metacase tools & possibilities
Meta l metacase tools & possibilitiesMeta l metacase tools & possibilities
Meta l metacase tools & possibilities
 

Dernier

7 PPT sue le project de fin d'étude.pptx
7 PPT sue le project de fin d'étude.pptx7 PPT sue le project de fin d'étude.pptx
7 PPT sue le project de fin d'étude.pptxrababouerdighi
 
Saint Georges, martyr, et la lègend du dragon.pptx
Saint Georges, martyr, et la lègend du dragon.pptxSaint Georges, martyr, et la lègend du dragon.pptx
Saint Georges, martyr, et la lègend du dragon.pptxMartin M Flynn
 
Cours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSETCours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSETMedBechir
 
systeme expert_systeme expert_systeme expert
systeme expert_systeme expert_systeme expertsysteme expert_systeme expert_systeme expert
systeme expert_systeme expert_systeme expertChristianMbip
 
Guide Final de rédaction de mémoire de fin d'étude
Guide Final de rédaction de mémoire de fin d'étudeGuide Final de rédaction de mémoire de fin d'étude
Guide Final de rédaction de mémoire de fin d'étudeBenamraneMarwa
 
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .
Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .Txaruka
 
Fondation Louis Vuitton. pptx
Fondation      Louis      Vuitton.   pptxFondation      Louis      Vuitton.   pptx
Fondation Louis Vuitton. pptxTxaruka
 
A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.Franck Apolis
 
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptxSAID MASHATE
 
Evaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. MarocpptxEvaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. MarocpptxAsmaa105193
 
Formation M2i - Comprendre les neurosciences pour développer son leadership
Formation M2i - Comprendre les neurosciences pour développer son leadershipFormation M2i - Comprendre les neurosciences pour développer son leadership
Formation M2i - Comprendre les neurosciences pour développer son leadershipM2i Formation
 
Présentation_ Didactique 1_SVT (S4) complet.pptx
Présentation_ Didactique 1_SVT (S4) complet.pptxPrésentation_ Didactique 1_SVT (S4) complet.pptx
Présentation_ Didactique 1_SVT (S4) complet.pptxrababouerdighi
 
Cours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSETCours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSETMedBechir
 

Dernier (15)

7 PPT sue le project de fin d'étude.pptx
7 PPT sue le project de fin d'étude.pptx7 PPT sue le project de fin d'étude.pptx
7 PPT sue le project de fin d'étude.pptx
 
Saint Georges, martyr, et la lègend du dragon.pptx
Saint Georges, martyr, et la lègend du dragon.pptxSaint Georges, martyr, et la lègend du dragon.pptx
Saint Georges, martyr, et la lègend du dragon.pptx
 
Cours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSETCours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSET
 
Pâques de Sainte Marie-Euphrasie Pelletier
Pâques de Sainte Marie-Euphrasie PelletierPâques de Sainte Marie-Euphrasie Pelletier
Pâques de Sainte Marie-Euphrasie Pelletier
 
systeme expert_systeme expert_systeme expert
systeme expert_systeme expert_systeme expertsysteme expert_systeme expert_systeme expert
systeme expert_systeme expert_systeme expert
 
Guide Final de rédaction de mémoire de fin d'étude
Guide Final de rédaction de mémoire de fin d'étudeGuide Final de rédaction de mémoire de fin d'étude
Guide Final de rédaction de mémoire de fin d'étude
 
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .
Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .
 
Fondation Louis Vuitton. pptx
Fondation      Louis      Vuitton.   pptxFondation      Louis      Vuitton.   pptx
Fondation Louis Vuitton. pptx
 
A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.
 
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
 
Evaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. MarocpptxEvaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. Marocpptx
 
Formation M2i - Comprendre les neurosciences pour développer son leadership
Formation M2i - Comprendre les neurosciences pour développer son leadershipFormation M2i - Comprendre les neurosciences pour développer son leadership
Formation M2i - Comprendre les neurosciences pour développer son leadership
 
Evaluación Alumnos de Ecole Victor Hugo
Evaluación Alumnos de Ecole  Victor HugoEvaluación Alumnos de Ecole  Victor Hugo
Evaluación Alumnos de Ecole Victor Hugo
 
Présentation_ Didactique 1_SVT (S4) complet.pptx
Présentation_ Didactique 1_SVT (S4) complet.pptxPrésentation_ Didactique 1_SVT (S4) complet.pptx
Présentation_ Didactique 1_SVT (S4) complet.pptx
 
Cours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSETCours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSET
 

Seance 2 - Programmation en langage C

  • 1. Programmation en langage C Fahad R. Golra Faculté des Sciences et Technologies Université de Lorraine Séance 2 – Tableaux, Tri
  • 2. 2 25/09/2017 Tableaux Programmation en langage C, Université de Lorraine • Les tableaux constituent une collection d’objets de même type, implémentés consécutivement en mémoire et représentés par un même identificateur. • Ces objets peuvent être de type très variés (char, int, float, double etc.). • Chaque élément du tableau est une variable int tab[5]; type nom[ taille du tableau ]; tab[0] tab[1] tab[2] tab[3] tab[4] int
  • 3. 3 25/09/2017 Tableaux Programmation en langage C, Université de Lorraine • La taille du tableau doit être exprimé avec un chiffre pour pouvoir compiler • Pour accéder à un élément du tableau il suffit d’utiliser un indice qui peut être compris entre 0 et MAX_ELEM-1 • Ainsi dans l’exemple du tableau • tab[3] est le quatrième élément du tableau, • tab[0] est le premier. #include <stdio.h> #define MAX_ELEM 5 int main(void) { int tab[MAX_ELEM]; - - } tab[0] tab[1] tab[2] tab[3] tab[4] int tab[MAX_ELEM];
  • 4. • Il est possible d’affecter une valeur par affectation à un élément quelconque du tableau • Cette instruction permet d’affecter la valeur 3 au troisième élément du tableau. Rappelons à ce sujet que le premier élément du tableau à comme indice 0. 4 25/09/2017 Affectation à un élément du tableau Programmation en langage C, Université de Lorraine tab[2] = 3;
  • 5. 5 25/09/2017 Initialisation des tableaux Programmation en langage C, Université de Lorraine • Un tableau peut être initialisé à • Déclaration • Durant l'exécution du programme • Est équivalent à : tab[0]=2, tab[1]=4, tab[2]=6, tab[3]=8, tab[4]=10 #include <stdio.h> int main(void) { //declaration int tab[5] = { 2, 4, 6, 8, 10}; … //durant l’exécution for(i = 0; i < 5; i++) tab[i] = (i+1)*2; … //durant l’exécution for(i = 0; i < 5; i++) scanf("%d", &tab[i]); … }
  • 6. • La boucle for est l’instruction itérative la mieux adaptée pour parcourir un tableau. Illustration, on souhaite sommer tous les éléments d’un tableau : • A la fin de l’exécution de l’instruction for la variable somme contiendra la somme des nombres entiers de 1 à 10. 6 25/09/2017 Parcourir un tableau Programmation en langage C, Université de Lorraine #include <stdio.h> int main(void) { int tab[10]= {1,2,3,4,5,6,7,8,9,10}; int somme=0; for(i=0; i<10; i++) somme+=tab[i]; printf("somme : %d", somme); }
  • 7. 7 25/09/2017 Exemple 1 : le minimum d’un tableau Programmation en langage C, Université de Lorraine #include <stdio.h> int main(void) { int i; int tab[10]= {1,-2,3,4,0,-6,-7,8,9,10}; int min=tab[0]; for(i=0; i<10; i++) if (min<tab[i]) min=tab[i]; printf("Le minimum du tableau est %d n", min); return 0; }
  • 8. 8 25/09/2017 Exemple 2 : déterminer la présence Programmation en langage C, Université de Lorraine #include <stdio.h> int main(void) { int tab[10]= {1,2,3,4,5,6,7,8,9,10}; int trouve=0; int i, x; printf("Enter un nombre : "); scanf("%d", &x); for(i=0; (!trouve && (i<10)); i++) trouve=(tab[i] == x); if (trouve) printf("x est présent dans le tableaun"); else printf("x n'est pas présent dans le tableaun"); return 0; }
  • 9. • On peut ne pas préciser la dimension du tableau lors de son initialisation • Le nombre d’éléments du tableau (si on ne veut pas les compter) est : 9 25/09/2017 Initialisation des tableaux (suite) Programmation en langage C, Université de Lorraine #include <stdio.h> int main(void) { //declaration int tab[]= {1,0,9,7,6,4,8,9,10,5}; ... //nombre d'elements du tableau N=sizeof(tab)/sizeof(tab[0]); ... }
  • 10. 10 25/09/2017 Remarques importantes Programmation en langage C, Université de Lorraine • Les tableaux sont statiques : La taille d'un tableau en mémoire dépend à la fois de son type et de sa dimension. En langage C, cette taille doit être connue au moment de la compilation. • Débordement d'indice : Il est interdit de lire ou d'écrire dans un élément du tableau qui se trouve en dehors du tableau #include <stdio.h> int main(void) { int dimension; scanf("%d", &dimension); int tab[dimension]; // interdit int tab[10]; tab[12] = 1; // débordement d'indice ... }
  • 11. 11 25/09/2017 Exemple 3 : le tri à bulles Programmation en langage C, Université de Lorraine #include <stdio.h> int main (void) { int tab[10]= {10,1,6,-8,5,3,7,8,9}; int n ,i ,temp; for (n=0; n<10; n++) for (i=0; i<9; i++) { if (tab[i]>tab[i+1]) { temp=tab[i]; tab[i]=tab[i+1]; tab[i+1]=temp; } } for (i=0; i<10; i++) printf("%d ", tab[i]); return 0; } 10 1 6 -8 5 3 7 8 9 0 1 10 6 10 -8 10 5 10 3 10 7 10 8 10 9 10 0 10 1 6 -8 5 3 7 8 9 0 10
  • 12. 12 25/09/2017 Exemple 3 : le tri à bulles Programmation en langage C, Université de Lorraine #include <stdio.h> int main (void) { int tab[10]= {10,1,6,-8,5,3,7,8,9}; int n ,i ,temp; for (n=0; n<10; n++) for (i=0; i<9; i++) { if (tab[i]>tab[i+1]) { temp=tab[i]; tab[i]=tab[i+1]; tab[i+1]=temp; } } for (i=0; i<10; i++) printf("%d ", tab[i]); return 0; } 10 1 6 -8 5 3 7 8 9 0 1 6 -8 5 3 7 8 9 0 10 1 -8 5 3 6 7 8 0 9 10 -8 1 3 5 6 7 0 8 9 10 -8 1 3 5 6 0 7 8 9 10 -8 1 3 5 0 6 7 8 9 10 -8 1 3 0 5 6 7 8 9 10 -8 1 0 3 5 6 7 8 9 10 -8 0 1 3 5 6 7 8 9 10 -8 0 1 3 5 6 7 8 9 10 -8 0 1 3 5 6 7 8 9 10
  • 13. 13 25/09/2017 Exemple 3 : le tri à bulles (cond. permutations) Programmation en langage C, Université de Lorraine int tab[10]= {10,1,6,-8,-4,5,3,7,8,9}; int i ,temp; int permut; do { permut=0; for (i=0; i<9; i++) { if (tab[i]>tab[i+1]) { temp=tab[i]; tab[i]=tab[i+1]; tab[i+1]=temp; permut=1; } } } while (permut); for (i=0; i<10; i++) printf("%2d ", tab[i]); 10 1 6 -8 -4 5 3 7 8 9 1 6 -8 -4 5 3 7 8 9 10 1 -8 -4 5 3 6 7 8 9 10 -8 -4 1 3 5 6 7 8 9 10 -8 -4 1 3 5 6 7 8 9 10 permute = 0 -8 -4 1 3 5 6 7 8 9 10
  • 14. 14 25/09/2017 Tableaux multidimensionnels Programmation en langage C, Université de Lorraine • Tableau dont chaque case est elle-même un tableau. • tab peut être considéré comme un tableau à trois lignes et deux colonnes. int tab[3][2]; type nom[ taille][taille]; … tab[0][0] tab[0][1] tab[1][0] tab[1][1] tab[2][0] tab[2][1] … tab[0] tab[1] tab[2] tab[0][0] tab[0][1] tab[1][0] tab[1][1] tab[2][0] tab[2][1] Colonne 0 Colonne 1 Ligne 0 Ligne 1 Ligne 2
  • 15. 15 25/09/2017 Initialisation des tableaux multidimensionnels Programmation en langage C, Université de Lorraine • Un tableau multi- dimensionnel peut être initialisé à • Déclaration • Durant l'exécution du programme • Pour accéder à un élément quelconque de matrice il suffit d’écrire par exemple : tab[1][2]=0 ; printf("%d", tab[1][2]); #include <stdio.h> int main(void) { … //déclaration int tab[3][2] = {{1,2},{3,4},{5,6}}; //durant l'éxecution for (i=0; i<3; i++) for (j=0; j<2; j++) tab[i][j]=1; … }
  • 16. 16 25/09/2017 Exemple 4 : l'affichage d’un tableau multidi. Programmation en langage C, Université de Lorraine #include <stdio.h> int main (void) { int i,j; int tab[3][3]= {{1,2,3},{4,5,6},{7,8,9}}; for (i=0; i<3; i++) { for (j=0; j<3; j++) printf("%2d ", tab[i][j]); printf("n"); } return 0; }
  • 17. 17 25/09/2017 Exemple 5 : Produit de matrices Programmation en langage C, Université de Lorraine #include <stdio.h> int main (void) { int i,j,k; int A[3][3]= {{1,2,3},{4,5,6},{7,8,9}}; int B[3][3]= {{-1,2,-3},{-4,5,-6},{-7,8,-9}}; int C[3][3]; for (i=0; i<3; i++) for (j=0; j<3; j++) { C[i][j]=0; for (k=0; k<3; k++) C[i][j]+=A[i][k]*B[k][j]; } return(0); }