Travaux dirigés 5 : les tableaux de variables

Documents pareils
Le langage C. Séance n 4

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

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

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

Chap III : Les tableaux

Définitions. Numéro à préciser. (Durée : )

TP, première séquence d exercices.

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)


Programmation C. Apprendre à développer des programmes simples dans le langage C

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

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

Algorithmique et Programmation, IMA

Algorithmique et structures de données I

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

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

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

Programmation C++ (débutant)/instructions for, while et do...while

Initiation à l algorithmique

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

Java Licence Professionnelle CISII,

Initiation à la programmation en Python

USTL - Licence ST-A 1ère année Codage de l information TP 1 :

Traduction des Langages : Le Compilateur Micro Java

Les structures. Chapitre 3

Représentation d un entier en base b

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

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

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

MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C

1 Année LMD-STSM Algorithmique et Programmation. Série de TD 2

Les arbres binaires de recherche

Algorithmique I. Algorithmique I p.1/??

Correction TD algorithmique

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

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

1 Recherche en table par balayage

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

Algorithmique & Langage C IUT GEII S1. Notes de cours (première partie) cours_algo_lgc1.17.odp. Licence

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

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

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

Cours 1: Java et les objets

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

Solutions du chapitre 4

Initiation. àl algorithmique et à la programmation. en C

Sub CalculAnnuite() Const TITRE As String = "Calcul d'annuité de remboursement d'un emprunt"

Cours 1 : La compilation

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview.

Algorithmique et programmation : les bases (VBA) Corrigé

Mise en œuvre des serveurs d application

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

Cours d Algorithmique et de Langage C v 3.0

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

Premiers Pas en Programmation Objet : les Classes et les Objets

Introduction au langage C

Machines virtuelles Cours 1 : Introduction

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

COMMANDER A DISTANCE LE ROBOT-PONG ETUDE DE LA TELECOMMANDE (2 nde PARTIE)

PROJET ALGORITHMIQUE ET PROGRAMMATION II

Introduction à l algorithmique et à la programmation (Info 2)

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

INTRODUCTION AUX SYSTEMES D EXPLOITATION. TD2 Exclusion mutuelle / Sémaphores

Chapitre 10 Arithmétique réelle

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

Rappels d architecture

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

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

1 de 46. Algorithmique. Trouver et Trier. Florent Hivert. Mél : Florent.Hivert@lri.fr Page personnelle : hivert

Quelques éléments de compilation en C et makefiles

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

Conventions d écriture et outils de mise au point

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1

LES TYPES DE DONNÉES DU LANGAGE PASCAL

ALGORITHMIQUE ET PROGRAMMATION En C

Algorithme. Table des matières

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

I. Introduction aux fonctions : les fonctions standards

USTL - Licence ST-A 1ère année Initiation à la programmation TP 1

TP Protocoles SMTP et POP3 avec Pratiquer l algorithmique

TP 1. Prise en main du langage Python

Chap 4: Analyse syntaxique. Prof. M.D. RAHMANI Compilation SMI- S5 2013/14 1

MISE A NIVEAU INFORMATIQUE LANGAGE C - EXEMPLES DE PROGRAMMES. Université Paris Dauphine IUP Génie Mathématique et Informatique 2 ème année

Sujet proposé par Yves M. LEROY. Cet examen se compose d un exercice et de deux problèmes. Ces trois parties sont indépendantes.

Introduction à MATLAB R

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

Seance 2: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu.

1 Lecture de fichiers

Cours Informatique Master STEP

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

Informatique. Les réponses doivent être données en cochant les cases sur la dernière feuille du sujet, intitulée feuille de réponse

Utilisation d objets : String et ArrayList

Feuille TD n 1 Exercices d algorithmique éléments de correction

Examen d informatique première session 2004

Logiciel Libre Cours 3 Fondements: Génie Logiciel

Architecture des ordinateurs

Transcription:

Université Paris-Nord L1 Institut Galilée Année 2009-2010 Licence 1-1er semestre Travaux dirigés 5 : les tableaux de variables L objectif de ce TD est d apprendre à déclarer, initialiser et utiliser les tableaux de variables (impératives) en C. La boucle for sera utilisée pour itérer sur les différentes variables du tableau, en engendrant leur indice. On parle de parcours de tableaux. La feuille d exercices se poursuit en TP. Note aux chargés de TD. En cours, ils ont vu les dernières notions de compilation du semestre (notamment, l utilisation du pré-processeur C pour la définition de constantes symboliques : #define de constantes utilisateurs, #include fichiers déclarant des constantes prédéfinies (INT_MAX etc.)). Les tableaux leur ont été présentés de la façon décrite au paragraphe 1. L exercice type calcul du minimium d un tableau a déjà été vu en cours. Nous poursuivons les exercices type (les colles sont en semaine 6, à voir avec l emploi du temps). Ils doivent savoir résoudre/reproduire les exos marqués exercices type et faire leur trace sur un exemple quelconque. Bien insister sur la procédure permettant d attaquer un problème de programmation. Il semble qu ils ne savent toujours pas l appliquer. La procédure : on se donne des exemples on trouve un algorithme en francais on traduit l algorithme en C en s aidant de commentaires on test sur les exemples qu on s est donnes Le TD est à terminer en TP pour permettre à tout le monde de finir les exos types. Nous avons ajouté quelques idées d exos dans la correction pour ceux qui n ont pas de retard. Il est peut-être préférable de revenir sur des exos types non compris. L algorithmique des tableaux parle de cases, et un parcours se présente de la façon suivante : - pour chaque case du tableau : - affecter 2 a la case - afficher la case -... En C, on peut être plus tenté par : pour chaque indice de case. Cependant, la plupart des langages modernes (Java, Python etc.) ont introduit des conteneurs avec des parcours qui font référence aux éléments. On reste sur les cases pour l instant et il faut sans doute expliquer la subtilité. 1

1 Déclaration et initialisation d un tableau ; affectation de ses variables Un tableau de variables est une structure de données permettant de déclarer une collection de variables de même type, dans une zone contigüe en mémoire. Ces variables sont référencées par l indice de leur place dans le tableau. 1. Que fait le programme suivant? 1 2 3 4 5 6 7 8 9 10 11 12 13 int tab[3] = 2,-4,8; 14 15 tab[0] = 0; 16 tab[1] = 1; 17 tab[2] = 2; 18 19 printf("tab[0] = %d\n",tab[0]); 20 printf("tab[1] = %d\n",tab[1]); 21 printf("tab[2] = %d\n",tab[2]); 22 23 24 25 26 Le programme : déclare et initialise un tableau, s appelant tab, de 3 variables entières avec les valeurs suivantes : 2,-4 et 8 ; affecte 0 à la variable d indice 0, tab[0] ; affecte 1 à la variable d indice 1, tab[1] ; affecte 2 à la variable d indice 2, tab[2] ; affiche les valeurs des variables du tableau ; par abus de langage, on parle de cases d un tableau. 2. Faire la trace du programme. Qu affiche le programme? 2

ligne tab[0] tab[1] tab[2] affichage (sortie/écriture à l écran) ----------------------------------------------------------------------------- initialisation 2-4 8 15 0 16 1 17 2 19 tab[0] = 0\n 20 tab[1] = 1\n 21 tab[2] = 2\n 3. Modifier le programme afin d effectuer une permutation circulaire vers la droite des valeurs des variables (ou cases) du tableau. int tab[3] = 2,-4,8; int aux; /* var auxiliaire pour realiser la permutation */ /* permutation circulaire vers la droite des valeurs des cases */ aux = tab[2]; tab[2] = tab[1]; tab[1] = tab[0]; tab[0] = aux; /* affichage du tableau */ printf("tab[0] = %d\n",tab[0]); printf("tab[1] = %d\n",tab[1]); printf("tab[2] = %d\n",tab[2]); 3

2 Affichage des éléments d un tableau Écrire un programme qui : déclare et initialise le tableau de variables entières : 5,2,4,3,0 pour chaque case du tableau : affiche la case int tab[5] = 5,2,4,3,0; /* tableau a afficher */ int i; /* var. de boucle */ /* affichage de la case */ printf("tab[%d] = %d\n",i,tab[i]); 3 Exercice type : Initialisation des cases d un tableau à zéro Soit un tableau d entiers, déclaré d une taille quelconque. Écrire un programme qui : affiche le tableau non initialisé initialise chaque case à zéro affiche le tableau initialisé Un exemple d exécution pour un tableau de taille 5 est : affichage du tableau non initialise : 4

tab[0] = 134513308 tab[1] = -1208832012 tab[2] = 134518316 tab[3] = -1076845768 tab[4] = 134513753 affichage du tableau initialise : tab[0] = 0 tab[1] = 0 tab[2] = 0 tab[3] = 0 tab[4] = 0 L exemple plus haut correspond à l exécution sur un PC 32 bits. Bien insister sur les valeurs arbitraires des variables non initialisées, qui dépendent des programmes qui ont été exécutés avant etc. On les représente par le symbole? dans la trace. algo: - affichage du tableau non initialise - pour chaque case du tableau : - affecte 0 a la case - affichage du tableau initialise int tab[5]; /* tableau a initialiser */ int i; /* var. de boucle */ /* affichage du tableau non initialise */ printf("affichage du tableau non initialise :\n"); /* affichage de la case */ printf("tab[%d] = %d\n",i,tab[i]); /* initialisation des cases a 0 */ 5

/* initialisation de la case a 0 */ tab[i] = 0; /* affichage du tableau initialise */ printf("affichage du tableau initialise :\n"); /* affichage de la case */ printf("tab[%d] = %d\n",i,tab[i]); 4 Exercice type : Calcul de la somme des éléments d un tableau Soit un tableau d entiers, initialisé à une taille et des valeurs quelconques. Écrire un programme qui calcule et affiche à l écran la somme des éléments du tableau. int tab[5] = 2,-4,8,12,-1; int somme = 0; /* element neutre pour l addition */ int i; /* var. de boucle */ 6

/* ajoute la case a la somme partielle */ somme = somme + tab[i]; /* somme vaut 0 + 2-4 + 8 + 12-1 */ printf("somme = %d\n",somme); 5 Exercice type : Calcul du minimum d un tableau Soit un tableau d entiers, initialisé à une taille et des valeurs quelconques. Écrire un programme qui calcule et affiche à l écran la valeur minimum des éléments du tableau. #include <limits.h> /* INT_MAX */ int tab[5] = 2,-4,8,12,-1; int min = INT_MAX; /* +infini >= valeurs tableau*/ int i; /* var. de boucle */ if(tab[i] < min) /* plus petit que min courant */ /* nouveau min courant */ min = tab[i]; 7

/* min contient le minimum de tous les elements du tableau */ printf("le minimum des elements du tableau est : %d\n",min); 6 Exercices optionnels Calcul du produit des éléments d un tableau Soit un tableau d entiers, initialisé à une taille et des valeurs quelconques. Écrire un programme qui calcule et affiche à l écran le produit des éléments du tableau. Calcul du nombre d occurrences d un entier dans un tableau Soit un tableau d entiers, initialisé à une taille et des valeurs quelconques ; soit une variable n, initialisée à une valeur quelconque. Écrire un programme qui calcule et affiche à l écran le nombre d occurences de la valeur de n dans le tableau. 8