• Aucun résultat trouvé

Accès à la mémoire

3.5 Exécution .1 Dans Eclipse

3.6.3 Accès à la mémoire

 La fenêtre située en haut à droite permet d’accéder à la mémoire du programme en cours d’exécution. En particulier, l’onglet Variables liste toutes les variables existantes et donne accès à leurs valeurs.

o L’exemple montre une variable nom, qui est une chaîne de caractères et dont le contenu est quelconque car elle n’a pas été initialisée.

o Les variables qui ont été modifiées par l’instruction qui vient d’être exécutée (ici un scanf) apparaissent en jaune.

o Il est possible de modifier manuellement la valeur d’une variable en cliquant dans la colonne Value.

Supports de cours vol.2 – Période 2005-2014

 Une autre possibilité intéressante est la possibilité d’évaluer des expressions pendant l’exécution, en utilisant les valeurs courantes des variables :

o Si l’onglet Expressions n’apparaît pas dans la fenêtre située en haut à droite :

 Cliquez sur l’onglet Variables.

 Allez dans Window>Show View>Other….

 Sélectionnez Debug>Expressions puis cliquez sur OK.  L’onglet Expressions devrait maintenant apparaître. o Sélectionnez l’onglet Expressions.

o Effectuez un clic droit dans le panel et cliquez sur Add Watch

Expression….

o Vous pouvez alors entrer l’expression à évaluer, en validant avec OK.

o Le panel de droite indique le résultat de l’évaluation de l’expression, ou bien un message d’erreur si votre expression ne peut pas être évaluée.

Supports de cours vol.2 – Période 2005-2014

4 Sujets de TP

Les sujets de TP sont rangés de manière suivre la progression du cours. Un TP donné se concentre généralement sur un nouveau point en particulier, mais il est susceptible d’utiliser les concepts manipulés dans les TP précédents.

Le premier tableau suivant liste les TP en précisant les concepts qu’ils utilisent. Les notions vraiment basiques, telles que la syntaxe du C, la structure d’un programme, les entrées-sorties texte, les boucles et les fonctions, ne sont pas explicitement représentées car elles sont utilisées dans quasiment tous les TP (après leur TP d’introduction). Les notions concernées sont dans l’ordre :

 L’utilisation des tableaux,

 Celle des chaînes de caractères,

 La création de bibliothèques spécifiques,

 L’utilisation de la SDL (et donc de fonctions graphiques),

 L’utilisation de pointeurs,

 La définition et l’utilisation de types énumérés,

 Celles de types structurés,

 La lecture et l’écriture dans des fichiers (autres que graphiques),

 L’allocation dynamique de mémoire,

 La définition de fonctions récursives,

 La manipulation de listes chaînées (simplement et doublement),

 L’utilisation de piles de données,

 Celle de files de données,

 L’implémentation d’algorithmes de tris,

 L’étude de la complexité algorithmique.

Le second tableau liste les principaux prérequis pour chaque TP, i.e. les notions qu’il faut avoir déjà abordées pour pouvoir effectuer le TP. Il précise aussi le(s) objectif(s) du TP. Ceux indiqués en gras correspondent aux notions abordées pour la première fois. De nombreux TP ont pour but d’approfondir des concepts déjà utilisés.

Supports de cours vol.2 – Période 2005-2014 Numéro Nom Tab lea u x Ch n e s Bi b lio th èqu e SDL Po inteu rs Énumérati o n s Stru ct u res Fic h iers A llo cati o n Réc u rsivité

Listes Piles Files Tris Comp

lexi

01 Entrées-sorties 02 Types simples 03 Variables & opérateurs 04 Structures de contrôle 05 Crible d'Érathostène X 06 Chaînes de caractères X 07 Tableaux multidimensionnels X 08 Diagrammes en mode texte 09 SDL & codage X 10 Couleurs d'une image X 11 Passage de paramètres 12 Algorithme de Bresenham X 13 Histogramme des couleurs X X 14 Propriétés arithmétiques X 15 Algorithmes pour l'arithmétique 16 Bibliothèque chaine X X X X 17 Décomposition d'une permutation X X X 18 Nombres binaires X X X 19 Algorithme de Johnson X X 20 Manipulation de dates X X X X X 21 Carrés latins X X 22 Représentation d'une promotion X X X X X 23 Partition d'un entier X X X 24 Rotation d'un carré X X X 25 Zoom d'une image X X X 26 Automates finis X X 27 Championnat de football X X X X 28 Floutage d'une image X X X X 29 Flous avancés X X X X 30 Gestion d'un lexique X X X 31 Allocation dynamique X X X X 32 Générateur pseudo-aléatoire X X X 33 Nombres hexadécimaux X X X 34 Répertoire téléphonique X X X X 35 Fichiers & arguments de programme X X X 36 Diaporama X X X X X X 37 Stock d'une librairie X X X X X 38 Automates cellulaires X X X X X X 39 Fonctions récursives X X 40 Approximations numériques X 41 Figures fractales X X 42 Listes chaînées X X 43 Disques & guirlandes X X X X X 44 Listes de caractères X X 45 Tapis de Sierpiński X X X X 46 Suite de Syracuse X X X X 47 Enveloppe d'un nuage de points X X X 48 Marches de Graham et Jarvis X X X X X 49 Analyse d'expressions X X 50 Conversion d'expressions X X X X 51 Détection de palindromes X X X X X 52 Tours de Hanoï X X X X 53 Remplissage de formes X X X X X 54 Parcours d'un labyrinthe X X X X X 55 Génération d'un labyrinthe X X X 56 Tri par dénombrement X X X 57 Tri cocktail X X X X 58 Représentation des tris X X X 59 Tris sur listes X X X 60 Représentation de l'ADN X X X 61 Nombres de grande taille X X X 62 Table de symboles X X X X 63 Plus longue sous séquence commune X X X 64 Arbres binaires X X

Supports de cours vol.2 – Période 2005-2014

N° Nom Prérequis principaux Objectifs

01 Entrées-sorties Syntaxe du langage C Écrire une fonction principale Afficher/saisir du texte

02 Types simples Écrire une fonction principale Afficher/saisir du texte Manipuler les types simples du C Codage d'un nombre 03 Variables & opérateurs Notion de fonction Opérateurs arithmétiques Position des variables en mémoire Valeur et type d'une expression 04 Structures de contrôle Instructions conditionnelles/répétition Faire un tableau de situation Utiliser les instructions conditionnelles Utiliser les instructions de boucle 05 Crible d'Érathostène Syntaxe des tableaux Utiliser des boucles Manipuler des tableaux Approfondir les boucles

06 Chaînes de caractères Manipuler des tableaux Syntaxe des chaînes de caractères Manipuler des chaînes de caractères Approfondir les tableaux 07 Tableaux multidimensionnels Manipuler des tableaux Utiliser des boucles Manipuler des matrices Tableaux multidimensionnels en mémoire 08 Diagrammes en mode texte Syntaxe des fonctions Utiliser des boucles Définir des fonctions Passer des paramètres

09 SDL & codage Définir des fonctions Créer/configurer un projet SDL Dessiner des figures simples

10 Couleurs d'une image Utiliser la SDL Codage des couleurs Charger/afficher une image Modifier une image 11 Passage de paramètres Utiliser la bibliothèque mathématique Approfondir les fonctions Passer un paramètre par adresse

12 Algorithme de Bresenham Utiliser la SDL Notions de géométrie Tracer des segments Approfondir la SDL

13 Histogramme des couleurs Utiliser la SDL Charger une image Créer une bibliothèque Réutiliser des fonctions existantes 14 Propriétés arithmétiques Manipuler des tableaux Approfondir les tableaux Approfondir le passage par adresse

15 Algorithmes pour l'arithmétique Définir des fonctions Notions d'arithmétique

ddd

Faire une preuve de programme

16 Bibliothèque chaine Syntaxe des chaînes de caractères Syntaxe des pointeurs Manipuler les chaînes de caractères Approfondir la création de bibliothèque 17 Décomposition d'une permutation Créer une bibliothèque Syntaxe des pointeurs Manipuler des pointeurs Notions sur les permutations

18 Nombres binaires Créer une bibliothèque Manipuler des pointeurs Approfondir les tableaux Approfondir les pointeurs 19 Algorithme de Johnson Syntaxe des énumérations Définir de types personnalisés Définir des types personnalisés Manipuler les énumérations 20 Manipulation de dates Syntaxe des structures/énumérations Définir des types personnalisés Définir des structures Approfondir les énumérations 21 Carrés latins Définir des énumérations Manipuler des matrices Approfondir les matrices Approfondir les énumérations 22 Représentation d'une promotion Un peu tout ce qui a été vu précédemment Approfondissement général

23 Partition d'un entier Manipuler des structures Manipuler des pointeurs Approfondir les structures Approfondir les pointeurs 24 Rotation d'un carré Manipuler des structures Manipuler des matrices Approfondir les structures

25 Zoom d'une image Manipuler des images Approfondir les matrices

26 Automates finis Manipuler des structures Manipuler des matrices Approfondir structures Notion d'automate fini 27 Championnat de football Manipuler des types personnalisés Manipuler des matrices Approfondir les pointeurs Approfondir les structures 28 Floutage d'une image Manipuler des images Approfondissement général Notion de floutage

29 Flous avancés Floutage d'images Manipuler des images Approfondir le floutage

30 Gestion d'un lexique Manipuler des chaînes de caractères Manipuler des pointeurs Manipuler des tableaux de pointeurs Approfondir les chaînes 31 Allocation dynamique Manipuler des pointeurs Manipuler des tableaux Allocation dynamique Gestion de la mémoire

Supports de cours vol.2 – Période 2005-2014

N° Nom Prérequis principaux Objectifs

33 Nombres hexadécimaux Manipuler des chaînes Allocation dynamique Approfondir allocation dynamique Approfondir chaînes de caractères 34 Répertoire téléphonique Allocation dynamique Définir des structures Approfondir indirections multiples Approfondir tableaux de pointeurs 35 Fichiers & arguments de programme Syntaxe de la fonction main Lecture/écriture dans un fichier Arguments en ligne de commande

36 Diaporama Allocation dynamique Manipuler des fichiers Approfondir les fichiers Utiliser la triple indirection 37 Stock d'une librairie Allocation dynamique Manipuler des fichiers Approfondissement général

38 Automates cellulaires Manipuler des fichiers Allocation dynamique Approfondir les fichiers Approfondir l'allocation dynamique 39 Fonctions récursives Écrire des fonctions Notion de récursivité Fonctions récursives

40 Approximations numériques Fonctions récursives Approfondir la récursivité Approximation numérique

41 Figures fractales Fonctions récursives Approfondissement de la récursivité Notion de fractale

42 Listes chaînées Notion de liste Écrire une fonction Manipuler des listes

43 Disques & guirlandes Manipuler des listes Approfondir les listes Approfondir les types structurés

44 Listes de caractères Manipuler des fichiers Manipuler des listes Approfondir les listes Approfondir les fichiers 45 Tapis de Sierpiński Fonctions récursives Manipuler des listes Approfondir la récusivité Approfondir les listes 46 Suite de Syracuse Fonctions récursives Manipuler des listes Approfondir la récursivité Tracer des graphiques 47 Enveloppe d'un nuage de points Manipuler de listes Manipuler des structures Manipuler des listes doubles Approfondir les types structurés 48 Marches de Graham et Jarvis Enveloppe d'un nuage de points Manipuler des listes Approfondir les listes

49 Analyse d'expressions Manipuler des chaînes de caractères Notion de pile de données Manipuler les piles de données

50 Conversion d'expressions Manipuler des piles de données Analyse d'expressions Approfondir les piles de données Approfondir la récursivité 51 Détection de palindromes Manipuler des piles de données Fonctions récursives Approfondir les piles de données Approfondir l'allocation dynamique 52 Tours de Hanoï Fonctions récursives Utiliser des énumérations Approfondir récursivité

53 Remplissage de formes Manipuler des piles de données Fonctions récursives Calculer des complexités Approfondir les piles de données 54 Parcours d'un labyrinthe Manipuler des piles Notion de file de données Manipuler les files de données Approfondir piles de données 55 Génération d'un labyrinthe Manipuler des énumérations Manipuler un labyrinthe Approfondissement général

56 Tri par dénombrement Manipuler des tableaux Notion de tri Trier un tableau Approfondir le calcul de complexité 57 Tri cocktail Manipuler des tableaux Tri à bulle Approfondir le tri de tableau Approfondir le calcul de complexité 58 Représentation des tris Trier un tableau Approfondir les tris Approfondir la SDL

59 Tris sur listes Manipuler des listes Trier un tableau Trier une liste Manipuler des listes

60 Représentation de l'ADN Manipuler des listes Fonctions récursives Approfondir les listes Approfondir le calcul de complexité 61 Nombres de grande taille Manipuler des listes Fonctions récursives Approfondir la récursivité Approfondir le calcul de complexité 62 Table de symboles Manipuler des listes Manipuler des chaînes de caractères Introduction au hachage

63 Plus longue sous séquence commune Fonctions récursives Calcul de complexité Programmation dynamique Approfondir le calcul de complexité 64 Arbres binaires Fonctions récursives Arbres binaires Arbre binaires de recherche

Université Galatasaray

Documents relatifs