SlideShare une entreprise Scribd logo
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

Langage C
Langage  CLangage  C
Langage Cjwilili
 
Cours de c
Cours de cCours de c
Cours de c
Nada Riahi
 
Tp1 compte rendu en langage c
Tp1 compte rendu en langage cTp1 compte rendu en langage c
Tp1 compte rendu en langage cEbrima NJIE
 
Exercices en langage c
Exercices en langage cExercices en langage c
Exercices en langage cDaoua Lotfi
 
Les fondamentaux de langage C#
Les fondamentaux de langage C#Les fondamentaux de langage C#
Les fondamentaux de langage C#
Youness Boukouchi
 
Corrigés exercices langage C
Corrigés exercices langage CCorrigés exercices langage C
Corrigés exercices langage C
coursuniv
 
Cours langage c
Cours langage cCours langage c
Cours langage c
coursuniv
 
exercices en C
exercices en Cexercices en C
exercices en Ccoursuniv
 
Chap1V2019: Cours en C++
Chap1V2019: Cours en C++Chap1V2019: Cours en C++
Chap1V2019: Cours en C++
Aziz Darouichi
 
Corrigé langage c
Corrigé langage cCorrigé langage c
Corrigé langage c
coursuniv
 
Chapitre4: Pointeurs et références
Chapitre4: Pointeurs et références Chapitre4: Pointeurs et références
Chapitre4: Pointeurs et références
Aziz Darouichi
 
Chapitre05 : Les tableaux
Chapitre05 : Les tableauxChapitre05 : Les tableaux
Chapitre05 : Les tableaux
L’Université Hassan 1er Settat
 
Ch02
Ch02Ch02
Ch02
yarsenv47
 
Chapitre 02 : Variables, Expressions et Instructions
Chapitre 02 : Variables, Expressions et InstructionsChapitre 02 : Variables, Expressions et Instructions
Chapitre 02 : Variables, Expressions et Instructions
L’Université Hassan 1er Settat
 
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
Loic Yon
 
TP C++ : Correction
TP C++ : CorrectionTP C++ : Correction
Cours Visual Basic.NET
Cours Visual Basic.NETCours Visual Basic.NET
Cours Visual Basic.NET
Aziz Darouichi
 

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 / Tunisie
Mariem 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.pptx
Nabil 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 / Tunisie
Mariem 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 C
Abdelouahed Abdou
 
Algo et complexite file pilezzzzzzzzzzzzzzzz.pptx
Algo et complexite file pilezzzzzzzzzzzzzzzz.pptxAlgo et complexite file pilezzzzzzzzzzzzzzzz.pptx
Algo et complexite file pilezzzzzzzzzzzzzzzz.pptx
Nabil 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 winforms
Christophe 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++11
Microsoft
 
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
 
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
ENSET, Université Hassan II Casablanca
 
Chapitre 1 - Algorithmique.pdf
Chapitre 1 - Algorithmique.pdfChapitre 1 - Algorithmique.pdf
Chapitre 1 - Algorithmique.pdf
ShiniGami0o0
 
Chap 1 Initiation.pptx
Chap 1 Initiation.pptxChap 1 Initiation.pptx
Chap 1 Initiation.pptx
olfaharrabi2
 
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
Stéphane Legrand
 
FormationPython2019.pptx
FormationPython2019.pptxFormationPython2019.pptx
FormationPython2019.pptx
LamissGhoul1
 
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
EnochBidima3
 

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 Photography
Fahad Golra
 
Tutorial 3 - Basics of Digital Photography
Tutorial 3 - Basics of Digital PhotographyTutorial 3 - Basics of Digital Photography
Tutorial 3 - Basics of Digital Photography
Fahad Golra
 
Tutorial 2 - Basics of Digital Photography
Tutorial 2 - Basics of Digital PhotographyTutorial 2 - Basics of Digital Photography
Tutorial 2 - Basics of Digital Photography
Fahad Golra
 
Tutorial 1 - Basics of Digital Photography
Tutorial 1 - Basics of Digital PhotographyTutorial 1 - Basics of Digital Photography
Tutorial 1 - Basics of Digital Photography
Fahad Golra
 
Lecture 9 - Java Persistence, JPA 2
Lecture 9 - Java Persistence, JPA 2Lecture 9 - Java Persistence, JPA 2
Lecture 9 - Java Persistence, JPA 2
Fahad 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-RS
Fahad Golra
 
Lecture 6 Web Sockets
Lecture 6   Web SocketsLecture 6   Web Sockets
Lecture 6 Web Sockets
Fahad Golra
 
Lecture 5 JSTL, custom tags, maven
Lecture 5   JSTL, custom tags, mavenLecture 5   JSTL, custom tags, maven
Lecture 5 JSTL, custom tags, maven
Fahad 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: Servlets
Fahad Golra
 
Lecture 1: Introduction to JEE
Lecture 1:  Introduction to JEELecture 1:  Introduction to JEE
Lecture 1: Introduction to JEE
Fahad Golra
 
Lecture 3: Servlets - Session Management
Lecture 3:  Servlets - Session ManagementLecture 3:  Servlets - Session Management
Lecture 3: Servlets - Session Management
Fahad 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

Evaluación docentes "Un cielo, dos países: El camino de los descubrimientos"
Evaluación docentes "Un cielo, dos países: El camino de los descubrimientos"Evaluación docentes "Un cielo, dos países: El camino de los descubrimientos"
Evaluación docentes "Un cielo, dos países: El camino de los descubrimientos"
IES Turina/Rodrigo/Itaca/Palomeras
 
Iris et les hommes.pptx
Iris      et         les      hommes.pptxIris      et         les      hommes.pptx
Iris et les hommes.pptx
Txaruka
 
1-IMP-Tuto-Recherche simple avancée-V4-20240425-BS.pptx
1-IMP-Tuto-Recherche simple avancée-V4-20240425-BS.pptx1-IMP-Tuto-Recherche simple avancée-V4-20240425-BS.pptx
1-IMP-Tuto-Recherche simple avancée-V4-20240425-BS.pptx
schneiderbeatrice78
 
Calendrier du 3 juin 2024 et compte rendu.pdf
Calendrier du 3 juin 2024 et compte rendu.pdfCalendrier du 3 juin 2024 et compte rendu.pdf
Calendrier du 3 juin 2024 et compte rendu.pdf
frizzole
 
Mémoire de licence en finance comptabilité et audit
Mémoire de licence en finance comptabilité et auditMémoire de licence en finance comptabilité et audit
Mémoire de licence en finance comptabilité et audit
MelDjobo
 
M2i Webinar - « Participation Financière Obligatoire » et CPF : une opportuni...
M2i Webinar - « Participation Financière Obligatoire » et CPF : une opportuni...M2i Webinar - « Participation Financière Obligatoire » et CPF : une opportuni...
M2i Webinar - « Participation Financière Obligatoire » et CPF : une opportuni...
M2i Formation
 
Méthodologie de recherche et de rédaction de mémoire.pptx
Méthodologie de recherche et de rédaction de mémoire.pptxMéthodologie de recherche et de rédaction de mémoire.pptx
Méthodologie de recherche et de rédaction de mémoire.pptx
LamoussaPaulOuattara1
 
4 expositions à voir à Paris.pptx
4   expositions    à   voir   à Paris.pptx4   expositions    à   voir   à Paris.pptx
4 expositions à voir à Paris.pptx
Txaruka
 
Bilan schéma pour réun concertation SDLP V4.pptx
Bilan schéma pour réun concertation SDLP V4.pptxBilan schéma pour réun concertation SDLP V4.pptx
Bilan schéma pour réun concertation SDLP V4.pptx
bibliogard
 
Exame DELF - A2 Francês pout tout public
Exame DELF - A2  Francês pout tout publicExame DELF - A2  Francês pout tout public
Exame DELF - A2 Francês pout tout public
GiselaAlves15
 
Newsletter SPW Agriculture en province du Luxembourg du 03-06-24
Newsletter SPW Agriculture en province du Luxembourg du 03-06-24Newsletter SPW Agriculture en province du Luxembourg du 03-06-24
Newsletter SPW Agriculture en province du Luxembourg du 03-06-24
BenotGeorges3
 
Festival de Cannes 2024.pptx
Festival      de      Cannes     2024.pptxFestival      de      Cannes     2024.pptx
Festival de Cannes 2024.pptx
Txaruka
 
Contrôle fiscale en république de guinée
Contrôle fiscale en république de guinéeContrôle fiscale en république de guinée
Contrôle fiscale en république de guinée
bangalykaba146
 
Cours SE - Gestion de la mémoire- Cours IG IPSET.pdf
Cours SE - Gestion de la mémoire- Cours IG IPSET.pdfCours SE - Gestion de la mémoire- Cours IG IPSET.pdf
Cours SE - Gestion de la mémoire- Cours IG IPSET.pdf
MedBechir
 

Dernier (14)

Evaluación docentes "Un cielo, dos países: El camino de los descubrimientos"
Evaluación docentes "Un cielo, dos países: El camino de los descubrimientos"Evaluación docentes "Un cielo, dos países: El camino de los descubrimientos"
Evaluación docentes "Un cielo, dos países: El camino de los descubrimientos"
 
Iris et les hommes.pptx
Iris      et         les      hommes.pptxIris      et         les      hommes.pptx
Iris et les hommes.pptx
 
1-IMP-Tuto-Recherche simple avancée-V4-20240425-BS.pptx
1-IMP-Tuto-Recherche simple avancée-V4-20240425-BS.pptx1-IMP-Tuto-Recherche simple avancée-V4-20240425-BS.pptx
1-IMP-Tuto-Recherche simple avancée-V4-20240425-BS.pptx
 
Calendrier du 3 juin 2024 et compte rendu.pdf
Calendrier du 3 juin 2024 et compte rendu.pdfCalendrier du 3 juin 2024 et compte rendu.pdf
Calendrier du 3 juin 2024 et compte rendu.pdf
 
Mémoire de licence en finance comptabilité et audit
Mémoire de licence en finance comptabilité et auditMémoire de licence en finance comptabilité et audit
Mémoire de licence en finance comptabilité et audit
 
M2i Webinar - « Participation Financière Obligatoire » et CPF : une opportuni...
M2i Webinar - « Participation Financière Obligatoire » et CPF : une opportuni...M2i Webinar - « Participation Financière Obligatoire » et CPF : une opportuni...
M2i Webinar - « Participation Financière Obligatoire » et CPF : une opportuni...
 
Méthodologie de recherche et de rédaction de mémoire.pptx
Méthodologie de recherche et de rédaction de mémoire.pptxMéthodologie de recherche et de rédaction de mémoire.pptx
Méthodologie de recherche et de rédaction de mémoire.pptx
 
4 expositions à voir à Paris.pptx
4   expositions    à   voir   à Paris.pptx4   expositions    à   voir   à Paris.pptx
4 expositions à voir à Paris.pptx
 
Bilan schéma pour réun concertation SDLP V4.pptx
Bilan schéma pour réun concertation SDLP V4.pptxBilan schéma pour réun concertation SDLP V4.pptx
Bilan schéma pour réun concertation SDLP V4.pptx
 
Exame DELF - A2 Francês pout tout public
Exame DELF - A2  Francês pout tout publicExame DELF - A2  Francês pout tout public
Exame DELF - A2 Francês pout tout public
 
Newsletter SPW Agriculture en province du Luxembourg du 03-06-24
Newsletter SPW Agriculture en province du Luxembourg du 03-06-24Newsletter SPW Agriculture en province du Luxembourg du 03-06-24
Newsletter SPW Agriculture en province du Luxembourg du 03-06-24
 
Festival de Cannes 2024.pptx
Festival      de      Cannes     2024.pptxFestival      de      Cannes     2024.pptx
Festival de Cannes 2024.pptx
 
Contrôle fiscale en république de guinée
Contrôle fiscale en république de guinéeContrôle fiscale en république de guinée
Contrôle fiscale en république de guinée
 
Cours SE - Gestion de la mémoire- Cours IG IPSET.pdf
Cours SE - Gestion de la mémoire- Cours IG IPSET.pdfCours SE - Gestion de la mémoire- Cours IG IPSET.pdf
Cours SE - Gestion de la mémoire- Cours IG IPSET.pdf
 

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); }