Utilisation des tableaux en C



Documents pareils
Chap III : Les tableaux

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr

Les chaînes de caractères

Cours d initiation à la programmation en C++ Johann Cuenin

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

Chapitre 1 : La gestion dynamique de la mémoire

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Bases de programmation. Cours 5. Structurer les données

03/04/2007. Tâche 1 Tâche 2 Tâche 3. Système Unix. Time sharing

SUPPORT DE COURS. Langage C

Architecture des Systèmes d Information Architecture des Systèmes d Information

Exo7. Calculs de déterminants. Fiche corrigée par Arnaud Bodin. Exercice 1 Calculer les déterminants des matrices suivantes : Exercice 2.

UE C avancé cours 1: introduction et révisions

Algorithmique et Programmation, IMA

Cours de Programmation Impérative: Zones de mémoires et pointeurs

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

Claude Delannoy. 3 e édition C++

INITIATION A LA PROGRAMMATION

Cours d Algorithmique et de Langage C v 3.0


Cours de C++ François Laroussinie. 2 novembre Dept. d Informatique, ENS de Cachan

Assurance Qualité. Cours de génie logiciel. Renaud Marlet. LaBRI / INRIA (d'après A.-M. Hugues) màj 23/04/2007

Introduction à MATLAB R

Recherche dans un tableau

Programmation en langage C

Les structures de données. Rajae El Ouazzani

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Algorithmique, Structures de données et langage C

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Pensez à vous inscrire... si ce n est pas encore fait

Utilisation d objets : String et ArrayList

1.6- Génération de nombres aléatoires

Langage C. Patrick Corde. 22 juin Patrick Corde ( Patrick.Corde@idris.fr ) Langage C 22 juin / 289

TP : Gestion d une image au format PGM

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Conventions d écriture et outils de mise au point

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

CHAPITRE V SYSTEMES DIFFERENTIELS LINEAIRES A COEFFICIENTS CONSTANTS DU PREMIER ORDRE. EQUATIONS DIFFERENTIELLES.

Analyse de sécurité de logiciels système par typage statique

Anis ASSÈS Mejdi BLAGHGI Mohamed Hédi ElHajjej Mohamed Salah Karouia

Algorithmes récursifs

et Programmation Objet

Brefs rappels sur la pile et le tas (Stack. / Heap) et les pointeurs

ALGORITHMIQUE ET PROGRAMMATION En C

introduction Chapitre 5 Récursivité Exemples mathématiques Fonction factorielle ø est un arbre (vide) Images récursives

Cours Informatique Master STEP

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Programme Compte bancaire (code)

Calcul matriciel. Définition 1 Une matrice de format (m,n) est un tableau rectangulaire de mn éléments, rangés en m lignes et n colonnes.

as Architecture des Systèmes d Information

CORRECTION EXERCICES ALGORITHME 1

TP, première séquence d exercices.

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

I. Introduction aux fonctions : les fonctions standards

Initiation à LabView : Les exemples d applications :

Introduction à la programmation concurrente

alg - Classes, instances, objets [oo] Exercices résolus

(51) Int Cl.: H04L 29/06 ( ) G06F 21/55 ( )

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

Corrigé des exercices sur les références

Jean-Philippe Préaux

REPUBLIQUE ALGERIENNE DEMOCRATIQUE ET POPULAIRE UNIVERSITE M HAMED BOGARA DE BOUMERDES

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski

TRIGONOMETRIE Algorithme : mesure principale

Introduction au langage C

TD3: tableaux avancées, première classe et chaînes

Algorithmique et programmation : les bases (VBA) Corrigé

Université Bordeaux 1, Licence Semestre 3 - Algorithmes et struct...

Les structures. Chapitre 3

Travaux Dirigés n 1 : chaînes de caractères

Structurer ses données : les tableaux. Introduction à la programmation

Les arbres binaires de recherche

Algorithmes et Programmes. Introduction à l informatiquel. Cycle de vie d'un programme (d'un logiciel) Cycle de vie d'un programme (d'un logiciel)

INF111. Initiation à la programmation impérative en C amini/cours/l1/inf111/ Massih-Reza Amini

Cours Programmation Système

MINIMUM. connaissances nécessaires à la programmation des microcontrôleurs PIC18 en langage C (une introduction au langage c A.N.S.

INF 104 (SELC) Introduction au langage C

Le Langage C Licence Professionnelle Qualité Logiciel Pr. Mouad BEN MAMOUN ben_mamoun@fsr.ac.ma Année universitaire 2011/2012

Généralités sur le Langage Java et éléments syntaxiques.

INITIATION AU LANGAGE JAVA

Simulation d une économie monétaire (programmation impérative, sujet 3)

Les algorithmes de base du graphisme

Initiation à la programmation en Python

UE Programmation Impérative Licence 2ème Année

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

Programmation système de commandes en C

Plan du cours. Historique du langage Nouveautés de Java 7

4. Les structures de données statiques

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

1 Recherche en table par balayage

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

Master IMA - UMPC Paris 6 RDMM - Année Fiche de TP

Cours de C. Petits secrets du C & programmation avancée. Sébastien Paumier

École Polytechnique de Montréal. Département de Génie Informatique et Génie Logiciel. Cours INF2610. Contrôle périodique.

Transcription:

Utilisation des tableaux en C L. Mounier UJF - M2 CCI - PL1 1 er octobre 2013 1 / 19

Les Tableaux en C Plan 1 Les Tableaux en C 2 Représentation contiguë de séquence 3 Chaînes de caractères 4 Tableaux à plusieurs dimensions 2 / 19

Les Tableaux en C Définir un tableau Tableau = constructeur de type collection bornée d éléments de même type accès direct aux éléments index défini sur un intervalle discret [a..b] intervalle discret = entiers, caractères, type énuméré,... Notation algorithmique : E : un type {type d un élément } Tab : tableau sur [a..b] de E En C : #define N... E Tab[N] ; // Tab = tableau sur [0..N-1] d elem. de type E Remarque : N fixé à la compilation tableau statique 3 / 19

Les Tableaux en C Opérations sur les tableaux (1) Valeur initiale : int T[10] = {0, 3, -9, 7, 8} ; // initialise les 5 premieres valeurs // (valeurs suivantes initialisees a 0) char nom[8] = { m, a, r, t, i, n } ; // on verra une meilleure solution Accès aux éléments : T i T[i], avec i dans l intervalle [0..N-1] 4 / 19

Les Tableaux en C Opérations sur les tableaux (2) Affectation : int T1[10] ; int T2[10] ; T1 = T2 ; // interdit... schéma de parcours pour copier T2 dans T1 élém. par élém. Comparaison int T1[10] ; int T2[10] ; if (T1 == T2)... // ne compare pas les 2 tableaux! schéma de recherche pour comparer T1 et T2 élém. par élém. 5 / 19

Les Tableaux en C Schéma de parcours en C Appliquer un même traitement à tous les éléments de T Notation algorithmique : pour i allant de a à b : traiter T i En C : #define N... int T[N] ; unsigned int i ; for (i=0 ; i<n ; i++) { traiter T[i]... } Exemple : incrémenter tous les éléments d indice pair de T 6 / 19

Les Tableaux en C Schéma de recherche en C un élément vérifiant une propriété P dans T? Notation algorithmique : i a tantque (i b et puis non P(T i )) : i i+1 {si i b alors P(T i )} En C : #define N... int T[N] ; unsigned int i ; i = 0 ; while (i<n &&!(P(T[i]))) { i = i+1 ; } // si i<n alors P(T[i]) 7 / 19

Les Tableaux en C Schéma de recherche en C (autre solution) Instruction for et instruction break : #define N... int T[N] ; unsigned int i ; for (i=0 ; i<n ; i++) { if ( P(T[i]) ) break ; } // si i<n alors P(T[i]) Exemple : recherche d un élément de valeur négative 8 / 19

Les Tableaux en C Valeurs d index sur un intervalle (discret) quelconque Principe général : Transformer [a..b] en [0..N-1] se ramener à un intervalle d indice sur les entiers appliquer une translation vers [0..N-1] N = b-a+1 (nbre d éléments), [a..b] [0..b-a] T i T[i-a] Exemple : T : tableau [5..23] de caractères ; T x c ; #define N 19 // 23-5+1 char T[N] ; T[x-5] = c 9 / 19

Représentation contiguë de séquence Plan 1 Les Tableaux en C 2 Représentation contiguë de séquence 3 Chaînes de caractères 4 Tableaux à plusieurs dimensions 10 / 19

Représentation contiguë de séquence Le problème Représenter une séquence de p éléments : S = [e 0, e 1,... e p 1 ] (avec e i de type E) représentation contiguë dans un tableau T : T i contient e i Pbs : dimensionner T : choisir N > p pour toute évolution de S... gérer la longueur courante de S Deux solutions : mémoriser explicitement la longueur de S utiliser une marque de fin 11 / 19

Représentation contiguë de séquence Solution avec longueur explicite Séquence : le type < T : tableau sur [0..N-1] de E, L : un entier sur 0..N > #define N... typedef... E ; // type d un element typedef struct { E T[N] ; unsigned int L ; // longueur de la sequence S } Sequence ; Sequence S ; Exercices : parcours / recherche dans S ajouter un élément en début/fin de S supprimer l élément d indice i de S 12 / 19

Représentation contiguë de séquence Marque de fin MarqueFin : la constante... de type E Séquence : le type tableau sur [0..N-1] de E #define MarqueFin... #define N... // prevoir une case pour la marque de fin! typedef E Sequence[N] ; Sequence S ; Choix de la marque de fin? un élément de type E ne pouvant pas être confondu avec un élément de S 13 / 19

Chaînes de caractères Plan 1 Les Tableaux en C 2 Représentation contiguë de séquence 3 Chaînes de caractères 4 Tableaux à plusieurs dimensions 14 / 19

Chaînes de caractères Représentation en C Une chaîne de caractères est un tableau de caractères : #define N... char S[N] ; Avec : L utilisation par défaut d une marque de fin : \0 Une notation pour les constantes : "ceci est une chaine" Un format d entrées-sorties : %s char T[10] ; scanf("%s", T) ; une librairie d opérateurs prédéfinis : <string.h> 15 / 19

Chaînes de caractères La librairie <string.h> Affectation : char s1[n], s2[n] ; strcpy(s1, s2) // s2 est affectee a s1 La taille de s1 doit être suffisante... Comparaison : char s1[n], s2[n] ; int r ; r = strcmp(s1, s2) r négatif si s1 < s2, positif si s1 > s2 et nul si s1 = S2. Longueur : char s1[n] ; unsigned int l ; l = strlen(s1) // longueur de s1 (marque de fin exclue) 16 / 19

Tableaux à plusieurs dimensions Plan 1 Les Tableaux en C 2 Représentation contiguë de séquence 3 Chaînes de caractères 4 Tableaux à plusieurs dimensions 17 / 19

Tableaux à plusieurs dimensions Définition Géralisation directe des tableaux à 1 dimension (tableaux de tableaux) Notation Algorithmique : L, C : des constantes de type entier > 0 T : un tableau sur [1..L] de tableaux sur [1..C] d entiers En C : #define L... // nbre de lignes #define C... // nbre de colonnes int T[L][C] ; // T tableau sur [0..L-1, 0..C-1] d entiers Accès aux éléments : T i,j T[i][j] 18 / 19

Tableaux à plusieurs dimensions Exemple Image 2D en noir et blanc : tableau 2 dimensions de pixels (noirs ou blancs) #define L... #define H... typedef enum {Noir, Blanc} Pixel ; Pixel Image[H][L] ; Calcul de l image inverse vidéo : int i, j ; for (i=0; i<h ; i++) { for (j=0 ; j<l ; j++) { T[i][j] = (T[i][j] + 1) % 2 ; } ; } 19 / 19