Comment bien déclarer et utiliser en C un tableau de dimension 2 (matrice)
|
|
|
- Jérémie Lachance
- il y a 10 ans
- Total affichages :
Transcription
1 Comment bien déclarer et utiliser en C un tableau de dimension 2 (matrice) #include <stdio.h> #include <stdlib.h> #define NDIM1 3 #define NDIM2 5 // pour printf, puts, putchar // pour malloc, free // par exemple // par exemple Voici une routine d affichage utilisable dans le cas d un dimensionnement statique. En C, on peut seulement omettre la première dimension des tableaux c est-à-dire qu il faut impérativement que la fonction connaisse les autres dimensions. C est pour cela que cette fonction n est utilisable que dans le premier cas. void affiche_1 ( int T[][NDIM2], int n1, int n2 ) int i, j ; for ( j = 0 ; j < n2 ; ++j ) printf( " i = %3d, j = %3d ===> T1 = %5d \n", i, j, T[i][j] ) ; Voici une routine d affichage utilisable dans le cas d un dimensionnement dynamique d un objet considéré comme une matrice. void affiche_2 ( int * * T, int n1, int n2 ) int i, j ; for ( j = 0 ; j < n2 ; ++j ) printf( " i = %3d, j = %3d ===> T2 = %5d \n", i, j, T[i][j] ) ; Bernard PICHON Tableau_2D Page 1 sur 8
2 Voici une routine d affichage utilisable dans le cas d un dimensionnement dynamique d un objet considéré comme un vecteur. void affiche_3 ( int * V, int n1, int n2 ) int i, j, k ; for ( j = 0 ; j < n2 ; ++j ) k = i * n2 + j ; // calcul de l adresse printf( " i = %3d, j = %3d, k = %3d ===> V = %5d \n", i, j, k, V[k] ) ; Voici, après les routines d affichage (placées en tête que pour des raisons de compilation), le programme principal avec les différentes possibilités et les explications qui vont avec. Le cas 1 présente une allocation entièrement statique de la matrice. Dans le programme principal donné en illustration, le tableau déclaré ainsi aura comme nom ANZ. Le cas 2 présente une allocation entièrement dynamique de la matrice i.e. chaque ligne T[i] est (réellement) indépendante des autres et donc il n y a aucune raison que le stockage en mémoire des éléments de la matrice soit contigu (en revanche, chaque ligne peut ainsi être allouée avec une taille différente mais c est une autre application que celle, ici, de déclarer une matrice). En ce qui concerne les matrices triangulaires ou en bande, même si cette solution est admissible, la solution présentée au cas suivant, moyennant bien sûr une adaptation, est bien meilleure. Dans le programme principal donné en illustration, le tableau déclaré ainsi aura comme nom BP. Le cas 3 présente une allocation dynamique mais où on préserve la contiguïté des éléments. C est donc la solution préconisée et pour apprendre à s en servir, on se reportera aux explications données dans le programme principal. Dans ce programme principal, tableau déclaré ainsi aura comme nom PIC. void main (void) int i, j, n1 = NDIM1, n2 = NDIM2 ; int ANZ[NDIM1][NDIM2] ; int * * BP ; int * * PIC ; // dimensionnement statique // dimensionnement dynamique // dimensionnement dynamique Bernard PICHON Tableau_2D Page 2 sur 8
3 CAS STATIQUE (lignes contiguës) puts( " Cas 1 : ANZ mode \n" ) ; On regarde les tailles dans le cas du dimensionnement statique printf( " sizeof de ANZ : %d \n", sizeof(anz) ) ; printf( " taille de ANZ : %d \n", sizeof(anz)/sizeof(**anz) ) ; On peut donc remplir de suite le tableau (par exemple, avec un incrément de 10 par ligne) for ( i = 0 ; i < NDIM1 ; ++i ) for ( j = 0 ; j < NDIM2 ; ++j ) ANZ[i][j] = 10 * i + j ; Et regarder ce qu il y a dedans affiche_1 ( ANZ, NDIM1, NDIM2 ) ; // affiche_2 ( (int * *)ANZ, n1, n2 ) ; // run time error?! affiche_3 ( (int *)ANZ, n1, n2 ) ; puts( " =============================================== \n" ) ; CAS DYNAMIQUE (lignes non nécessairement contiguës) puts( " Cas 2 : BP mode \n" ) ; On alloue d abord le tableau contenant les pointeurs des lignes (bien voir la taille demandée) BP = (int * *) malloc( n1 * sizeof( int * ) ) ; if ( NULL == BP ) puts( " PB1 " ) ; Puis, on alloue chaque ligne à la longueur souhaitée mais on remarque que chaque ligne est bien totalement indépendante des autres. BP[i] = ( int * ) malloc( n2 * sizeof(int) ) ; if ( NULL == BP[i] ) printf( " PB2 : i = %d \n", i ) ; Bernard PICHON Tableau_2D Page 3 sur 8
4 On peut alors regarder les tailles, en fait maintenant celles des pointeurs. printf( " sizeof de BP : %d \n", sizeof(bp) ) ; printf( " sizeof de *BP : %d \n", sizeof(*bp) ) ; On peut donc alors remplir le tableau (par exemple, avec un incrément de 100 par ligne) for ( j = 0 ; j < n2 ; ++j ) BP[i][j] = 100 * i + j ; Et regarder de qu il y a dedans. Selon les ordinateurs, on peut constater, que l affichage par la routine affiche_3 qui suppose que les éléments sont réellement contigus, peut donner n importe quoi. affiche_2 ( BP, n1, n2 ) ; affiche_3 ( *BP, n1, n2 ) ; Et ne pas oublier, si l on veut être propre de libérer la mémoire le plus tôt possible i.e. ne pas attendre la fin du programme. On le fait, bien sûr, dans l ordre inverse de celui de l allocation. free( BP[i] ) ; free( BP ) ; puts( " =============================================== \n" ) ; CAS DYNAMIQUE (lignes contiguës) puts( " Cas 3 : PIC mode \n" ) ; On alloue d abord le tableau contenant les pointeurs des lignes (bien voir la taille demandée). Là, pas de changement par rapport au cas précédent. PIC = (int * *) malloc( n1 * sizeof( int * ) ) ; if ( NULL == PIC ) puts( " PB3 " ) ; Bernard PICHON Tableau_2D Page 4 sur 8
5 Puis, on alloue pour la première ligne la taille totale de la matrice (bien voir la taille demandée). Après, maintenant que la totalité de l espace de stockage consacrée à la matrice a bien été allouée, on le partitionne selon les tailles souhaitées à chaque ligne (c est à cet endroit que l on peut introduire les modifications correspondantes aux cas des matrices triangulaires ou des matrices bande). On se sert pour cela des propriétés de l arithmétique des pointeurs. PIC[0] = (int *) malloc( n1 * n2 * sizeof(int) ) ; if ( NULL == PIC[0] ) puts( " PB4 " ) ; for ( i = 1 ; i < n1 ; ++i ) PIC[i] = PIC[i-1] + n2 ; On peut alors regarder les tailles, en fait maintenant celles des pointeurs. printf( " sizeof de PIC : %d \n", sizeof(pic) ) ; printf( " sizeof de *PIC : %d \n", sizeof(*pic) ) ; On peut donc alors remplir le tableau (par exemple, avec un incrément de 1000 par ligne) for ( j = 0 ; j < n2 ; ++j ) PIC[i][j] = 1000 * i + j ; Et regarder ce qu il y a dedans. affiche_2 ( PIC, n1, n2 ) ; affiche_3 ( PIC[0], n1, n2 ) ; puts( " =============================================== \n" ) ; Et ne pas oublier, si l on veut être propre de libérer la mémoire le plus tôt possible i.e. ne pas attendre la fin du programme. On le fait, bien sûr, dans l ordre inverse de celui de l allocation. free( *PIC ) ; free( PIC ) ; puts( " \n C'est fini! \n" ) ; Bernard PICHON Tableau_2D Page 5 sur 8
6 Et voici les sorties de ce programme : Cas 1 : ANZ mode sizeof de ANZ : 60 taille de ANZ : 15 i = 0, j = 0 ===> T1 = 0 i = 0, j = 1 ===> T1 = 1 i = 0, j = 2 ===> T1 = 2 i = 0, j = 3 ===> T1 = 3 i = 0, j = 4 ===> T1 = 4 i = 1, j = 0 ===> T1 = 10 i = 1, j = 1 ===> T1 = 11 i = 1, j = 2 ===> T1 = 12 i = 1, j = 3 ===> T1 = 13 i = 1, j = 4 ===> T1 = 14 i = 2, j = 0 ===> T1 = 20 i = 2, j = 1 ===> T1 = 21 i = 2, j = 2 ===> T1 = 22 i = 2, j = 3 ===> T1 = 23 i = 2, j = 4 ===> T1 = 24 i = 0, j = 0, k = 0 ===> V = 0 i = 0, j = 1, k = 1 ===> V = 1 i = 0, j = 2, k = 2 ===> V = 2 i = 0, j = 3, k = 3 ===> V = 3 i = 0, j = 4, k = 4 ===> V = 4 i = 1, j = 0, k = 5 ===> V = 10 i = 1, j = 1, k = 6 ===> V = 11 i = 1, j = 2, k = 7 ===> V = 12 i = 1, j = 3, k = 8 ===> V = 13 i = 1, j = 4, k = 9 ===> V = 14 i = 2, j = 0, k = 10 ===> V = 20 i = 2, j = 1, k = 11 ===> V = 21 i = 2, j = 2, k = 12 ===> V = 22 i = 2, j = 3, k = 13 ===> V = 23 i = 2, j = 4, k = 14 ===> V = 24 =============================================== Cas 2 : BP mode sizeof de BP : 4 sizeof de *BP : 4 i = 0, j = 0 ===> T2 = 0 i = 0, j = 1 ===> T2 = 1 i = 0, j = 2 ===> T2 = 2 i = 0, j = 3 ===> T2 = 3 i = 0, j = 4 ===> T2 = 4 i = 1, j = 0 ===> T2 = 100 i = 1, j = 1 ===> T2 = 101 i = 1, j = 2 ===> T2 = 102 i = 1, j = 3 ===> T2 = 103 i = 1, j = 4 ===> T2 = 104 i = 2, j = 0 ===> T2 = 200 i = 2, j = 1 ===> T2 = 201 Bernard PICHON Tableau_2D Page 6 sur 8
7 i = 2, j = 2 ===> T2 = 202 i = 2, j = 3 ===> T2 = 203 i = 2, j = 4 ===> T2 = 204 i = 0, j = 0, k = 0 ===> V = 0 i = 0, j = 1, k = 1 ===> V = 1 i = 0, j = 2, k = 2 ===> V = 2 i = 0, j = 3, k = 3 ===> V = 3 i = 0, j = 4, k = 4 ===> V = 4 i = 1, j = 0, k = 5 ===> V = i = 1, j = 1, k = 6 ===> V = i = 1, j = 2, k = 7 ===> V = i = 1, j = 3, k = 8 ===> V = i = 1, j = 4, k = 9 ===> V = i = 2, j = 0, k = 10 ===> V = 0 i = 2, j = 1, k = 11 ===> V = 0 i = 2, j = 2, k = 12 ===> V = 20 i = 2, j = 3, k = 13 ===> V = 1 i = 2, j = 4, k = 14 ===> V = 46 =============================================== Cas 3 : PIC mode sizeof de PIC : 4 sizeof de *PIC : 4 i = 0, j = 0 ===> T2 = 0 i = 0, j = 1 ===> T2 = 1 i = 0, j = 2 ===> T2 = 2 i = 0, j = 3 ===> T2 = 3 i = 0, j = 4 ===> T2 = 4 i = 1, j = 0 ===> T2 = 1000 i = 1, j = 1 ===> T2 = 1001 i = 1, j = 2 ===> T2 = 1002 i = 1, j = 3 ===> T2 = 1003 i = 1, j = 4 ===> T2 = 1004 i = 2, j = 0 ===> T2 = 2000 i = 2, j = 1 ===> T2 = 2001 i = 2, j = 2 ===> T2 = 2002 i = 2, j = 3 ===> T2 = 2003 i = 2, j = 4 ===> T2 = 2004 i = 0, j = 0, k = 0 ===> V = 0 i = 0, j = 1, k = 1 ===> V = 1 i = 0, j = 2, k = 2 ===> V = 2 i = 0, j = 3, k = 3 ===> V = 3 i = 0, j = 4, k = 4 ===> V = 4 i = 1, j = 0, k = 5 ===> V = 1000 i = 1, j = 1, k = 6 ===> V = 1001 i = 1, j = 2, k = 7 ===> V = 1002 i = 1, j = 3, k = 8 ===> V = 1003 i = 1, j = 4, k = 9 ===> V = 1004 i = 2, j = 0, k = 10 ===> V = 2000 i = 2, j = 1, k = 11 ===> V = 2001 i = 2, j = 2, k = 12 ===> V = 2002 i = 2, j = 3, k = 13 ===> V = 2003 i = 2, j = 4, k = 14 ===> V = 2004 =============================================== Bernard PICHON Tableau_2D Page 7 sur 8
8 C'est fini! Bernard PICHON Tableau_2D Page 8 sur 8
Brefs rappels sur la pile et le tas (Stack. / Heap) et les pointeurs
Brefs rappels sur la pile et le tas (Stack / Heap) et les pointeurs (exemples en C) v1.11 - Olivier Carles 1 Pile et Tas Mémoire allouée de manière statique Mémoire Allouée Dynamiquement variables locales
Les structures de données. Rajae El Ouazzani
Les structures de données Rajae El Ouazzani Les arbres 2 1- Définition de l arborescence Une arborescence est une collection de nœuds reliés entre eux par des arcs. La collection peut être vide, cad l
Chapitre 1 : La gestion dynamique de la mémoire
Chapitre 1 : La gestion dynamique de la mémoire En langage C un programme comporte trois types de données : Statiques; Automatiques ; Dynamiques. Les données statiques occupent un emplacement parfaitement
1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.
1. Structure d un programme C Un programme est un ensemble de fonctions. La fonction "main" constitue le point d entrée pour l exécution. Un exemple simple : #include int main() { printf ( this
Cours d initiation à la programmation en C++ Johann Cuenin
Cours d initiation à la programmation en C++ Johann Cuenin 11 octobre 2014 2 Table des matières 1 Introduction 5 2 Bases de la programmation en C++ 7 3 Les types composés 9 3.1 Les tableaux.............................
Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :
Algorithmique et programmation : STRUCTURES DE DONNÉES A. Structure et enregistrement 1) Définition et rôle des structures de données en programmation 1.1) Définition : En informatique, une structure de
Conventions d écriture et outils de mise au point
Logiciel de base Première année par alternance Responsable : Christophe Rippert [email protected] Introduction Conventions d écriture et outils de mise au point On va utiliser dans cette
Java Licence Professionnelle CISII, 2009-10
Java Licence Professionnelle CISII, 2009-10 Cours 4 : Programmation structurée (c) http://www.loria.fr/~tabbone/cours.html 1 Principe - Les méthodes sont structurées en blocs par les structures de la programmation
Le langage C. Séance n 4
Université Paris-Sud 11 Institut de Formation des Ingénieurs Remise à niveau INFORMATIQUE Année 2007-2008 Travaux pratiques d informatique Le langage C Séance n 4 But : Vous devez maîtriser à la fin de
Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles [email protected]
Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles [email protected] Table des matières 1 Les bases 3 2 Variables et constantes 5 3 Quelques fonctions indispensables
Programmation impérative
Programmation impérative Cours 4 : Manipulation des fichiers en C Catalin Dima Organisation des fichiers Qqs caractéristiques des fichiers : Nom (+ extension). Chemin d accès absolu = suite des noms des
Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski [email protected]
Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski [email protected] Mars 2002 Pour Irène et Marie Legal Notice Copyright c 2002 Patrick Cégielski Université
Algorithmique, Structures de données et langage C
UNIVERSITE PAUL SABATIER TOULOUSE III Algorithmique, Structures de données et langage C L3 IUP AISEM/ICM Janvier 2005 J.M. ENJALBERT Chapitre 1 Rappels et compléments de C 1.1 Structures Une structure
INITIATION A LA PROGRAMMATION
2004-2005 Université Paris Dauphine IUP Génie Mathématique et Informatique INITIATION A LA PROGRAMMATION PROCEDURALE, A L'ALGORITHMIQUE ET AUX STRUCTURES DE DONNEES PAR LE LANGAGE C Maude Manouvrier La
Bases de programmation. Cours 5. Structurer les données
Bases de programmation. Cours 5. Structurer les données Pierre Boudes 1 er décembre 2014 This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License. Types char et
Programmation système I Les entrées/sorties
Programmation système I Les entrées/sorties DUT 1 re année Université de Marne La vallée Les entrées-sorties : E/O Entrées/Sorties : Opérations d échanges d informations dans un système informatique. Les
Premiers Pas en Programmation Objet : les Classes et les Objets
Chapitre 2 Premiers Pas en Programmation Objet : les Classes et les Objets Dans la première partie de ce cours, nous avons appris à manipuler des objets de type simple : entiers, doubles, caractères, booléens.
PROJET ALGORITHMIQUE ET PROGRAMMATION II
PROJET 1 ALGORITHMIQUE ET PROGRAMMATION II CONTENU DU RAPPORT A RENDRE : o Fiche signalétique du binôme o Listing des différents fichiers sources o CD sources o Il sera tenu compte de la présentation du
Les chaînes de caractères
Les chaînes de caractères Dans un programme informatique, les chaînes de caractères servent à stocker les informations non numériques comme par exemple une liste de nom de personne ou des adresses. Il
Exécutif temps réel Pierre-Yves Duval (cppm)
Exécutif temps réel Pierre-Yves Duval (cppm) Ecole d informatique temps réel - La Londes les Maures 7-11 Octobre 2002 Plan Exécutif Tâches Evénements et synchronisation Partage de ressources Communications
Introduction au langage C
Introduction au langage C Cours 1: Opérations de base et premier programme Alexis Lechervy Alexis Lechervy (UNICAEN) Introduction au langage C 1 / 23 Les premiers pas Sommaire 1 Les premiers pas 2 Les
Cours de Programmation Impérative: Zones de mémoires et pointeurs
Cours de Programmation Impérative: Zones de mémoires et pointeurs Julien David A101 - [email protected] Julien David (A101 - [email protected]) 1 / 1 Z`o n`e s `d`e m`é m`o i r`e Julien
Plan du cours 2014-2015. Cours théoriques. 29 septembre 2014
numériques et Institut d Astrophysique et de Géophysique (Bât. B5c) Bureau 0/13 email:[email protected] Tél.: 04-3669771 29 septembre 2014 Plan du cours 2014-2015 Cours théoriques 16-09-2014 numériques pour
Cours de Système : Gestion de Fichiers
Cours de Système : Gestion de Fichiers Bertrand Le cun et Emmanuel Hyon bertrand.le cun{at}u-paris10.fr et Emmanuel.Hyon{at}u-paris10.fr Université Paris Ouest Nanterre 25 octobre 2011 B.L.C. & E.H. (UPO)
Chap III : Les tableaux
Chap III : Les tableaux Dans cette partie, on va étudier quelques structures de données de base tels que : Les tableaux (vecteur et matrice) Les chaînes de caractères LA STRUCTURE DE TABLEAU Introduction
Architecture des ordinateurs
Architecture des ordinateurs Cours 7 17 décembre 2012 Archi 1/1 Fonctions, suite et fin Archi 2/1 Rappel Forme générale d un sous-programme (fonction) : etiquette sousprogramme: push ebp ; empile la valeur
Techniques de stockage. Techniques de stockage, P. Rigaux p.1/43
Techniques de stockage Techniques de stockage, P. Rigaux p.1/43 Techniques de stockage Contenu de ce cours : 1. Stockage de données. Supports, fonctionnement d un disque, technologie RAID 2. Organisation
Gestion de la mémoire
433 43 3 Gestion de la mémoire + 1. Qu'est-ce que la mémoire? - Définitions, exemples 2. Allocation contiguë en mémoire - Partitions de taille fixe, de taille variable 3. Pagination et mémoire virtuelle
Cours Programmation Système
Cours Programmation Système Filière SMI Semestre S6 El Mostafa DAOUDI Département de Mathématiques et d Informatique, Faculté des Sciences Université Mohammed Premier Oujda [email protected] Février
03/04/2007. Tâche 1 Tâche 2 Tâche 3. Système Unix. Time sharing
3/4/27 Programmation Avancée Multimédia Multithreading Benoît Piranda Équipe SISAR Université de Marne La Vallée Besoin Programmes à traitements simultanés Réseau Réseau Afficher une animation en temps
Initiation. àl algorithmique et à la programmation. en C
Initiation àl algorithmique et à la programmation en C Initiation àl algorithmique et à la programmation en C Cours avec 129 exercices corrigés Illustration de couverture : alwyncooper - istock.com Dunod,
Cours de C/C++ par la pratique. Hugues Talbot
Cours de C/C++ par la pratique Hugues Talbot 24 octobre 2008 2 Table des matières 1 Comment démarrer? 7 1.1 Un programme simple en C pur.......................... 7 1.2 Un programme en C ++...............................
Plan global Outils de développement et compilation. Plan. Objectifs des outils présentés. IDE, GCC/Clang, ASAN, perf, valgrind, GDB.
global Outils de développement et compilation IDE, GCC/Clang, ASAN, perf, valgrind, GDB Timothée Ravier LIFO, INSA-CVL, LIPN 1 re année cycle ingénieur STI 2013 2014 1 / 36 Objectifs des outils présentés
Travaux Dirigés n 1 : chaînes de caractères
UE LE315 Travaux Dirigés n 1 : chaînes de caractères Exercice 1 Ecrire une fonction int nombre_caract(char *chaîne) qui retourne la taille d une chaîne de caractères. Exercice 2 Ecrire la fonction void
6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, [email protected]
6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, [email protected] Interface d un SGF Implémentation d un SGF Gestion de la correspondance entre la structure logique et la structure
Les structures. Chapitre 3
Chapitre 3 Les structures Nous continuons notre étude des structures de données qui sont prédéfinies dans la plupart des langages informatiques. La structure de tableau permet de regrouper un certain nombre
Claude Delannoy. 3 e édition C++
Claude Delannoy 3 e édition Exercices Exercices C++ en en langage langage delc++ titre 4/07/07 15:19 Page 2 Exercices en langage C++ AUX EDITIONS EYROLLES Du même auteur C. Delannoy. Apprendre le C++.
Structure fonctionnelle d un SGBD
Fichiers et Disques Structure fonctionnelle d un SGBD Requetes Optimiseur de requetes Operateurs relationnels Methodes d acces Gestion de tampon Gestion de disque BD 1 Fichiers et Disques Lecture : Transfert
Analyse de sécurité de logiciels système par typage statique
Contexte Modélisation Expérimentation Conclusion Analyse de sécurité de logiciels système par typage statique Application au noyau Linux Étienne Millon UPMC/LIP6 Airbus Group Innovations Sous la direction
Travaux pratiques. Compression en codage de Huffman. 1.3. Organisation d un projet de programmation
Université de Savoie Module ETRS711 Travaux pratiques Compression en codage de Huffman 1. Organisation du projet 1.1. Objectifs Le but de ce projet est d'écrire un programme permettant de compresser des
Ordinateurs, Structure et Applications
Ordinateurs, Structure et Applications Cours 10, Les interruptions Etienne Tremblay Université Laval, Hiver 2012 Cours 10, p.1 Les interruptions du 8086 Une interruption interrompt l exécution séquentielle
Cours de C. Allocation dynamique. Sébastien Paumier
Cours de C Allocation dynamique Sébastien Paumier [email protected] Illustrations provenant du site http://tux.crystalxp.net/ 1 Les pointeurs pointeur=adresse mémoire+type type* nom; nom pointe sur une
Logiciel de base. Première année ENSIMAG
Logiciel de base Première année ENSIMAG 1 Procédures, paramètres, pile En assembleur une fonction est une étiquette, c'est l'adresse de sa première instruction Lors de l'appel d'une fonction, la pile sert
Le Langage C Licence Professionnelle Qualité Logiciel Pr. Mouad BEN MAMOUN [email protected] Année universitaire 2011/2012
Le Langage C Licence Professionnelle Qualité Logiciel Pr. Mouad BEN MAMOUN [email protected] Année universitaire 2011/2012 2011/2012 Pr. Ben Mamoun 1 Plan du cours (1) 1. Introduction 2. Types, opérateurs
DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51
DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51 PLAN DU COURS Introduction au langage C Notions de compilation Variables, types, constantes, tableaux, opérateurs Entrées sorties de base Structures de
Table des matières. Chapitre 4 : Variables pointeurs
Table des matières A.Principe du pointeur... 4 1.Qu'est ce qu'un pointeur?... 4 a.mémoire RAM... 4 b.une variable pointeur... 5 c.quatre opérateurs... 5 d.trois utilisations fondamentales des pointeurs...
Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples
Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation impérative et structures de données simples Introduction au langage C Sandrine Blazy - 1ère année 24 octobre 2007 Cours d Algorithmique-Programmation
Licence ST Université Claude Bernard Lyon I LIF1 : Algorithmique et Programmation C Bases du langage C 1 Conclusion de la dernière fois Introduction de l algorithmique générale pour permettre de traiter
C++ Programmer. en langage. 8 e édition. Avec une intro aux design patterns et une annexe sur la norme C++11. Claude Delannoy
Claude Delannoy Programmer en langage C++ 8 e édition Avec une intro aux design patterns et une annexe sur la norme C++11 Groupe Eyrolles, 1993-2011. Groupe Eyrolles, 2014, pour la nouvelle présentation,
OS Réseaux et Programmation Système - C5
OS Réseaux et Programmation Système - C5 Rabie Ben Atitallah [email protected] RPC - XDR Rappel RPC: Remote Procedure Call Besoin d un environnement de haut niveau pour le développement
Corrigé des exercices sur les références
Corrigé des exercices sur les références Exercice 3.1.1 dessin Pour cet exercice, vous allez dessiner des structures de données au moyen de petits schémas analogues à ceux du cours, comportant la pile
DOMAIN NAME SYSTEM. CAILLET Mélanie. Tutoriel sur le DNS. Session 2012-2014 Option SISR
DOMAIN NAME SYSTEM Tutoriel sur le DNS CAILLET Mélanie Session 2012-2014 Option SISR Table des matières DOMAIN NAME SYSTEM 2013 I. DNS Statique sous Linux (Ubuntu 12.04 LTS)... 3 A. DNS Principal... 3
TP, première séquence d exercices.
TP, première séquence d exercices. Benoît Valiron [email protected] 7 novembre 2010 Introduction Vous écrirez les réponses aux questions courtes sur une feuille à rendre à la fin de la
Corrigés des premiers exercices sur les classes
Corrigés des premiers exercices sur les classes Exercice 2.1.1 utilisation d une classe Voici le texte d une classe représentant de façon sommaire un compte bancaire et les opérations bancaires courantes.
Argument-fetching dataflow machine de G.R. Gao et J.B. Dennis (McGill, 1988) = machine dataflow sans flux de données
EARTH et Threaded-C: Éléments clés du manuel de références de Threaded-C Bref historique de EARTH et Threaded-C Ancêtres de l architecture EARTH: Slide 1 Machine à flux de données statique de J.B. Dennis
TP : Gestion d une image au format PGM
TP : Gestion d une image au format PGM Objectif : L objectif du sujet est de créer une classe de manipulation d images au format PGM (Portable GreyMap), et de programmer des opérations relativement simples
La programmation des PIC en C. Les fonctions, les interruptions.
La programmation des PIC en C Les fonctions, les interruptions. Réalisation : HOLLARD Hervé. http://electronique-facile.com Date : 26 août 2004 Révision : 1.2 Sommaire Sommaire... 2 Introduction... 3 Structure
Gestion mémoire et Représentation intermédiaire
Gestion mémoire et Représentation intermédiaire Pablo de Oliveira March 23, 2015 I Gestion Memoire Variables locales Les variables locales sont stockées: Soit dans un registre,
PROJET 1 : BASE DE DONNÉES REPARTIES
PROJET 1 : BASE DE DONNÉES REPARTIES GESTION D UNE BANQUE Elèves : David Bréchet Frédéric Jacot Charles Secrétan DONNÉES DU PROJET SSC - Bases de Données II Laboratoire de Bases de Données BD réparties
#include <stdio.h> #include <stdlib.h> struct cell { int clef; struct cell *suiv; };
#include #include struct cell int clef; struct cell suiv; ; / longueur. pc->suiv est l abréviation de (pc).suiv. pour cette fonction comme pour les suivantes, on donne, lorsqu il existe
Programmation système de commandes en C
Programmation système de commandes en C Cours de Programmation système Tuyêt Trâm DANG NGOC Université de Cergy-Pontoise 2012 2013 Tuyêt Trâm DANG NGOC Programmation système de commandes
as Architecture des Systèmes d Information
Plan Plan Programmation - Introduction - Nicolas Malandain March 14, 2005 Introduction à Java 1 Introduction Présentation Caractéristiques Le langage Java 2 Types et Variables Types simples Types complexes
Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère
L'héritage et le polymorphisme en Java Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère En java, toutes les classes sont dérivée de la
COMPARAISONDESLANGAGESC, C++, JAVA ET
REPUBLIQUE DU BENIN *******@******* MINISTERE DE L ENSEIGNEMENT SUPERIEUR ET DE LA RECHERCHE SCIENTIFIQUE(MESRS) *******@******* UNIVERSITE D ABOMEY CALAVI(UAC) *******@******* ECOLE POLYTECHNIQUE D ABPOMEY
Formulaire pour envoyer un mail
Formulaire pour envoyer un mail AVERTISSEMENT : Ce tuto est une compilation de plusieurs sources trouvées sur internet, dont les références sont données à la fin de cet article. Le but de ce tutoriel n'est
Partie 7 : Gestion de la mémoire
INF3600+INF2610 Automne 2006 Partie 7 : Gestion de la mémoire Exercice 1 : Considérez un système disposant de 16 MO de mémoire physique réservée aux processus utilisateur. La mémoire est composée de cases
IN 102 - Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C
IN 102 - Cours 1 Qu on le veuille ou non, les systèmes informatisés sont désormais omniprésents. Même si ne vous destinez pas à l informatique, vous avez de très grandes chances d y être confrontés en
Le prototype de la fonction main()
Le prototype de la fonction main() 1. Introduction...1 2. Paramètres et type de retour de la fonction main()...1 3. Exemple 1...2 4. La fonction exit() du C...2 5. Détecter le code de retour d un programme
1 Introduction C+ + Algorithm e. languag. Algorigramm. machine binaire. 1-1 Chaîne de développement. Séance n 4
1 Introduction 1-1 Chaîne de développement Algorithm e C+ + Algorigramm e languag e machine binaire Le programme est écrit à l aide de Multiprog sous forme d algorigramme puis introduit dans le microcontrôleur
Généralités sur le Langage Java et éléments syntaxiques.
Généralités sur le Langage Java et éléments syntaxiques. Généralités sur le Langage Java et éléments syntaxiques....1 Introduction...1 Genéralité sur le langage Java....1 Syntaxe de base du Langage...
Cours de C++ François Laroussinie. 2 novembre 2005. Dept. d Informatique, ENS de Cachan
Cours de C++ François Laroussinie Dept. d Informatique, ENS de Cachan 2 novembre 2005 Première partie I Introduction Introduction Introduction Algorithme et programmation Algorithme: méthode pour résoudre
Les fichiers. Chapitre 4
Chapitre 4 Les fichiers Jusqu à maintenant tous les programmes que nous avons conçus travaillaient sur des données qui étaient perdues après chaque session de travail. On peut cependant, c est bien naturel,
Algorithmique et Programmation, IMA
Algorithmique et Programmation, IMA Cours 2 : C Premier Niveau / Algorithmique Université Lille 1 - Polytech Lille Notations, identificateurs Variables et Types de base Expressions Constantes Instructions
CAC, DAX ou DJ : lequel choisir?
CAC, DAX ou DJ : lequel choisir? 1. Pourquoi cette question Tout trader «travaillant 1» sur les indices s est, à un moment ou un autre, posé cette question : «je sais que la tendance est bien haussière
UE C avancé cours 1: introduction et révisions
Introduction Types Structures de contrôle Exemple UE C avancé cours 1: introduction et révisions Jean-Lou Desbarbieux et Stéphane Doncieux UMPC 2004/2005 Introduction Types Structures de contrôle Exemple
Programmation C. J.-F. Lalande. 15 novembre 2012
Programmation C J.-F. Lalande novembre 0 Ce cours est mis à disposition par Jean-François Lalande selon les termes de la licence Creative Commons Attribution - Pas d Utilisation Commerciale - Partage à
et Programmation Objet
FACULTE POLYTECHNIQUE DE MONS Service d Informatique et Programmation Objet Mohammed Benjelloun 2 ème Bachelier Année académique 2008-2009 Table des matières Avant-propos--------------------------------------------------------------------------
Compression de Données - Algorithme de Huffman Document de Conception
ROLLET Samuel SALLE Jennifer Compression de Données - Algorithme de Huffman Document de Conception Projet d'algorithmique et Structure des Données 1 SOMMAIRE 1. Domaine d application....4 1.1 Objectifs
Systèmes de transmission
Systèmes de transmission Conception d une transmission série FABRE Maxime 2012 Introduction La transmission de données désigne le transport de quelque sorte d'information que ce soit, d'un endroit à un
Programmation en langage C
Programmation en langage C Anne CANTEAUT INRIA - projet CODES B.P. 105 78153 Le Chesnay Cedex [email protected] http://www-rocq.inria.fr/codes/anne.canteaut/cours C 2 Table des matières 3 Table des
Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test
Grandes lignes Analyseur Statique de logiciels Temps RÉel Embarqués École Polytechnique École Normale Supérieure Mercredi 18 juillet 2005 1 Présentation d 2 Cadre théorique de l interprétation abstraite
Le système de gestion des fichiers, les entrées/sorties.
Le système de gestion des fichiers, les entrées/sorties. Luigi Santocanale Laboratoire d Informatique Fondamentale, Centre de Mathématiques et Informatique, 39, rue Joliot-Curie - F-13453 Marseille 19
Les processus légers : threads. Système L3, 2014-2015 1/31
Les processus légers : threads Système L3, 2014-2015 1/31 Les threads Les threads sont des processus légers exécutés à l intérieur d un processus L exécution des threads est concurrente Il existe toujours
Arguments d un programme
Arguments d un programme L2 SPI, Bruno Jacob 1 Arguments Quand on appelle un programme dans un environnement UNIX ou MS- DOS, on compose une ligne de commandes de la forme : nom-du-programme argument1
École Polytechnique de Montréal. Département de Génie Informatique et Génie Logiciel. Cours INF2610. Contrôle périodique.
École Polytechnique de Montréal Département de Génie Informatique et Génie Logiciel Cours INF2610 Contrôle périodique Automne 2013 Date : 11 octobre 2013 de 18h à 20h Professeur : Boucheneb Hanifa Documentation
Le Projet BINSEC. Automatiser l analyse de sécurité au niveau binaire. Airbus group, CEA, IRISA, LORIA, Uni. Joseph Fourier. p.
Le Projet BINSEC Automatiser l analyse de sécurité au niveau binaire Airbus group, CEA, IRISA, LORIA, Uni. Joseph Fourier p. 1/22 Introduction Panorama de BINSEC Cadre de travail Projet ANR INS, appel
UE Programmation Impérative Licence 2ème Année 2014 2015
UE Programmation Impérative Licence 2 ème Année 2014 2015 Informations pratiques Équipe Pédagogique Florence Cloppet Neilze Dorta Nicolas Loménie [email protected] 2 Programmation Impérative
30.avr.10 Présentation miniprojet. 9.mars.10 Cours 3 4.mai.10 Cours C++ 1. 16.mars.10 Cours 4 11.mai.10 Cours C++ 2
2ème partie de cours: 23.fév.10 Cours 1 20.avr.10 TEST 24.fév.10 TP1 21.avr.10 miniprojet 26.fév.10 TP réserve 23.avr.10 miniprojet 2.mars.10 Cours 2 27.avr.10 Présentation miniprojet 3.mars.10 TP2 28.avr.10
TP11 - Administration/Tuning
TP11 - Administration/Tuning MIAGE #3-2006/2007 January 9, 2007 1 Architecture physique d une base Oracle 1.1 La structure physique Une base de données Oracle est composé de fichiers (au sens du système
Un ordonnanceur stupide
Un ordonnanceur simple Université Paris Sud L objet des exercices qui suivent est de créer un ordonanceur implantant l algorithme du tourniquet ( round-robin scheduler ). La technique utilisée pour élire
INTRODUCTION A JAVA. Fichier en langage machine Exécutable
INTRODUCTION A JAVA JAVA est un langage orienté-objet pur. Il ressemble beaucoup à C++ au niveau de la syntaxe. En revanche, ces deux langages sont très différents dans leur structure (organisation du
www.evogue.fr SUPPORT DE COURS / PHP PARTIE 3
L i a m T A R D I E U www.evogue.fr SUPPORT DE COURS / PHP PARTIE 3 Sommaire Sommaire... 2 Eléments initiaux... 3 Base de données... 3 Tables... 4 membres... 4 commandes... 4 articles... 4 details_commandes...
Programmation avec des objets : Cours 7. Menu du jour
1 Programmation avec des objets : Cours 7 Menu du jour 1. Retour sur la classe Liste 2. Précisions sur l interface 3. Difficultés dans le cas d erreurs 4. Soulever des exceptions 5. Utilisation des Listes
Introduction à la Programmation Parallèle: MPI
Introduction à la Programmation Parallèle: MPI Frédéric Gava et Gaétan Hains L.A.C.L Laboratoire d Algorithmique, Complexité et Logique Cours du M2 SSI option PSSR Plan 1 Modèle de programmation 2 3 4
Le point sur les services en ligne employeurs
DATE Émetteur rappel du titre général de la présentation Le point sur les services en ligne employeurs de l Assurance Maladie Déclaration d accident du travail ou de trajet, attestation de salaire, bordereaux
Fonctions de plusieurs variables
Module : Analyse 03 Chapitre 00 : Fonctions de plusieurs variables Généralités et Rappels des notions topologiques dans : Qu est- ce que?: Mathématiquement, n étant un entier non nul, on définit comme
Découverte du logiciel ordinateur TI-n spire / TI-n spire CAS
Découverte du logiciel ordinateur TI-n spire / TI-n spire CAS Mémento Ouvrir TI-Nspire CAS. Voici la barre d outils : L insertion d une page, d une activité, d une page où l application est choisie, pourra
Outils pour la pratique
Cinquième partie Outils pour la pratique 121 CHAPITRE 1 Les bases des séances de TP Avant de lire cettre section, il est suggéré de relire vos notes de cours se rapportant au système d exploitation Unix.
Web Tier : déploiement de servlets
Web Tier : déploiement de servlets 1 / 35 Plan 1 Introduction 2 Servlet : Principe de fonctionnement 3 Création et développement sur un serveur JEE 4 Quelques méthodes de l API des servlets 5 Utilisation
BTS IRIS Cours et Travaux Pratiques. Programmation C. A. Lebret, TSIRIS, Lycée Diderot, 1995/06. en conformité avec le référentiel du BTS IRIS
BTS IRIS Cours et Travaux Pratiques Programmation C A. Lebret, TSIRIS, Lycée Diderot, 1995/06 en conformité avec le référentiel du BTS IRIS Activité Codage et Réalisation Tâches T3.3, T3.4 et T3.5 Temps
