Telechargé par Alfred Dosseh

Cours C avancée S1

publicité
PROGRAMMATION
AVANCÉE “C”
E-mail : [email protected]
Pr. Wissam JENKAL
Professor at Industrial Departement of National School Of Applied Science of Agadir
Ibn Zohr University
PhD on signal processing and embedded systems
Current research interests include Embedded systems and Information Technologies
Cycle Préparatoire ENSA-S4 2021/2022
PROGRAMMATION AVANCÉE “C”
Pourquoi ?
Why ?
2
PROGRAMMATION AVANCÉE “C”
PROGRAMMATION AVANCÉE “C”
Pourquoi ? / Why ?
*Challenge est l’utilisation des accélérateurs des données massives (Big Data) : Systèmes Hétérogènes
PROGRAMMATION AVANCÉE “C”
Pourquoi ? / Why ?
PROGRAMMATION AVANCÉE “C”
Pourquoi ? / Why ?
Processeur Core i7
PROGRAMMATION AVANCÉE “C”
Application Fields 1/2
PROGRAMMATION AVANCÉE “C”
Application Fields 2/2
PROGRAMMATION AVANCÉE “C”
Introduction,
Chapter I: Array Reminder,
Chapter II: Strings of Characters,
Chapter III: Pointers in C,
Chapter IV: Dynamic Memory Allocation,
Chapter V: Functions and Files Header,
Chapter VI: Dynamic Structures in C,
Chapter VII: Files in C,
Chapter VIII: Linked List Data Structure.
2
Introduction
Méthodologie de programmation: Information/Algorithmes/Programmation
| Introduction
• Traitement de l’information
1
0
• Partie (1) - Codage de l’information : Entrée (Lire, scanf,…)
• Partie (2) : Traitement (Relations et équations, …)
• Partie (3) – Décodage de l’information : Sortie (Ecrire, Afficher,
printf,…)
Introduction
Méthodologie de programmation: Information/Algorithmes/Programmation
| Introduction
• Traitement de l’information
1
1
• (1): Information (Problème à résoudre?:
PrixTTC=PrixHT+PrixHT*TauxTVA),
• (2): Analyse,
• (3): Algorithme,
• (4): Langage de programmation (C, VB, C++, Java, LabVIEW, C#, OpenCL,
CUDA, OpenGL, OpenMP, Simula, Smalltalk, Python, Corba, J2EE,…)
• (5) Solution: Fichier exécutable (.exe)
Introduction
Classification: Programmation (3 types)
• Programmation Modulaire : Découpage en modules. Le programme est divisé en
blocs (fonctions – voir chapitre V) avec leurs propres variables.
Exemple: Langage C,…
En C le programme principal s’appelle toujours main (fonction principale),
Un programme C contient au minimum une fonction (main).
| Introduction
• Programmation Orientée Objet : Programmation qui supporte l’interaction d’objets
("classes" – voir programme GIIE 3ème ENSA). Chaque objet contient des données et
des méthodes qui manipulent les données de l’objet.
Exemples: Langages C++, Java, C#, LabVIEW, ...
12
• Programmation Parallèle : Plusieurs tâches séquentielles s'exécutant simultanément,
habituellement appelées processus
Exemples: Langages C++, OpenMP, OpenCL, CUDA, LabVIEW, VHDL (Description), …
Chapitre I: Rappel sur les tableaux en C
• Les tableaux sont les variables structurées en C,
• C permet un accès direct et plus rapide aux données d'un tableau (via les pointeurs),
• Les chaînes de caractères sont déclarées en C comme tableaux de caractères,
• Elles permettent l'utilisation d'un certain nombre de notations et de fonctions
spéciales (Chapitre II),
| Introduction
Tableaux à une dimension
13
• Un tableau (à une dimension) A
est une variable structurée formée d'un nombre N de variables simples de même type,
(composantes du tableau). Le nombre de composantes N est alors la dimension du
tableau.
Chapitre I: Rappel sur les tableaux en C
Tableaux à une dimension
| Chapitre I: Rappel sur les tableaux en C
Exemple : int T[12]={31,28,31,30,31,30,31,31,30,31,30,31}
Tableau de type int de 12 composantes initialisées par les valeurs
respectivement 31, 28, 31, ... , 31
14
Accéder aux données du tableau
Accéder à la première composante du tableau par T[0],
à la deuxième composante par T[1], . . .
à la dernière composante par T[11]
Chapitre I: Rappel sur les tableaux en C
Déclaration et Mémorisation
Déclaration :
Type NomTableau[Dimension]; ---> (char, int, long, float, double,...)
Les noms des tableaux sont des identificateurs,
Exemples :
| Chapitre I: Rappel sur les tableaux en C
char Ch[25]; int T[25]; ou bien long A[15];
float Tab[100]; ou bien double TabA[10];
15
Chapitre I: Rappel sur les tableaux en C
| Chapitre I: Rappel sur les tableaux en C
Déclaration et Mémorisation
16
Chapitre I: Rappel sur les tableaux en C
| Chapitre I: Rappel sur les tableaux en C
Déclaration et Mémorisation
17
Chapitre I: Rappel sur les tableaux en C
Mémorisation :
En programmation C, le nom d’un tableau est le représentant de l’adresse
du premier élément du tableau.
Les adresses des autres composantes sont calculées automatiquement
| Chapitre I: Rappel sur les tableaux en C
relativement à cette adresse.
Exemple : int A[5]={1200,2300,3400,4500,5600};
18
Remarque: Si un tableau est formé de N composantes et si une
composante a besoin de M octets en mémoire, alors le tableau occupera
de N*M octets.
Exemple : En supposant qu'une variable de type long occupe 4 octets
(sizeof(long)=4), pour le tableau T déclaré par: long T[15];
C réservera N*M = N*sizeof(type) = 15*4 = 60 octets en mémoire.
Chapitre I: Rappel sur les tableaux en C
Initialisation et réservation automatique:
Initialisation
Lors de la déclaration d'un tableau, l’initialisation des composantes du tableau est
indiquée par une liste des valeurs entre accolades { }.
Exemples
int A[5] = {10, 20, 30, 40, 50}; float B[4] = {-1.05, 3.33, 87e-5, -12.3E4}; int C[10] =
{1, 0, 0, 1, 1, 1, 0, 1, 0, 1};
Réservation automatique
Si la dimension n'est pas indiquée explicitement lors de l'initialisation, alors
l'ordinateur réserve automatiquement le nombre d'octets nécessaires.
| Chapitre I: Rappel sur les tableaux en C
Exemples
19
int A[ ] = {10, 20, 30, 40, 50};
==> réservation de 5*sizeof(int) octets = 10 octets
float B[ ] = {-1.05, 3.33, 87e-5, -12.3E4};
==> réservation de 4*sizeof(float) octets = 16 octets
int C[ ] = {1, 0, 0, 1, 1, 1, 0, 1, 0, 1};
==> réservation de 10*sizeof(int) octets = 20 octets
Chapitre I: Rappel sur les tableaux en C
Affichage du contenu d'un tableau
Exercice : Entée/Sorties des composantes d’un tableau
Donner un programme en C qui permet de saisir le contenu d’un
tableau des entiers à 5 éléments et d’afficher le contenu de ce tableau
| Chapitre I: Rappel sur les tableaux en C
en après.
20
Chapitre I: Rappel sur les tableaux en C
Affichage du contenu d'un tableau
| Chapitre I: Rappel sur les tableaux en C
Exemple: Entée/Sorties des composantes d’un tableau
21
Chapitre I: Rappel sur les tableaux en C
Tableaux à deux dimensions
| Chapitre I: Rappel sur les tableaux en C
Un tableau à 2 dimensions A est à interpréter comme un tableau (uni-dimensionnel) de
dimension L dont chaque composante est un tableau (uni-dimensionnel) de dimension C.
L le nombre de lignes et C le nombre de colonnes du tableau.
Un tableau à 2 dimensions contient donc L*C composantes.
22
Déclaration et mémorisation
Exemples: int A[10][10]; float B[10][10]; ….
Le nom d'un tableau est le représentant de l'adresse du premier élément du tableau (c.-à-d.
l'adresse de la 1ère ligne du tableau). Les composantes d'un tableau à deux dimensions sont
stockées ligne par ligne dans la mémoire.
Chapitre I: Rappel sur les tableaux en C
Déclaration et mémorisation
Exemple: Mémorisation d'un tableau à deux dimensions
| Chapitre I: Rappel sur les tableaux en C
long A[3][2] = { {1, 2},
{10, 20},
{100, 200} };
23
Un tableau de dimensions L et C, occupera L*C*M octets en mémoire.
Exemple: Une variable du type double occupe 8 octets (sizeof(double)=8), pour le
tableau T déclaré par: double T[3][2];
Le compilateur réservera L*C*M = 3*2*8 = 48 octets en mémoire.
Chapitre I: Rappel sur les tableaux en C
Tableaux à deux dimensions
Exercice : Entée/Sorties des composantes d’un tableau à deux
dimensions
Donner un programme en C qui permet de saisir le contenu d’un
| Chapitre I: Rappel sur les tableaux en C
tableau des entiers à deux dimensions 5 lignes 2 colonnes et
24
d’afficher le contenu de ce tableau en après.
Chapitre I: Rappel sur les tableaux en C
Affichage du contenu d'un tableau
| Chapitre I: Rappel sur les tableaux en C
Exemple: Entée/Sorties des composantes d’un tableau à deux dimensions
25
Chapitre I: Rappel sur les tableaux en C
| Chapitre I: Rappel sur les tableaux en C
END OF CHAPTER 1
26
Téléchargement