• Aucun résultat trouvé

Programmation I : Cours de programmation (C++) Révisions

N/A
N/A
Protected

Academic year: 2022

Partager "Programmation I : Cours de programmation (C++) Révisions"

Copied!
11
0
0

Texte intégral

(1)

Objectifs Synthèse Fondamentaux Modularisation Révisions

cEPFL 2016-17 Jamila Sam

& Jean-Cédric Chappelier

Programmation I :

Cours de programmation (C++) Révisions

Jamila Sam

Laboratoire d’Intelligence Artificielle Faculté I&C

Programmation I – Cours 13 : Révisions – 1 / 11

(2)

Objectifs

Synthèse Fondamentaux Modularisation Révisions

cEPFL 2016-17 Jamila Sam

& Jean-Cédric Chappelier

Objectifs du cours d’aujourd’hui

Nous voici donc arrivés au terme de cette première partie du cours.

L’objectif de ces quelques transparents est de vous rafraîchir la mémoire en rappelant les principaux points.

Nous avons abordé :

1. Bases de programmation

2. Approfondissements : E/S, gestion des erreurs On va se focaliser ici sur lesrappels de programmation.

Programmation I – Cours 13 : Révisions – 2 / 11

(3)

Objectifs Synthèse

Fondamentaux Modularisation Révisions

cEPFL 2016-17 Jamila Sam

& Jean-Cédric Chappelier

Qu’avons nous vu en programmation ?

programmer c’estdécomposerunetâcheà automatiser en une séquence d’instructions(traitements) et desdonnées

Algorithme S.D.A.

Traitements Données

Variables Expressions & Opérateurs

Structures de contrôle

Fonctions Portée

Chaînes de caractères Tableaux statiques Tableaux dynamiques Structures

Pointeurs Entrées/Sorties

+il faut que voussoyez au clairsur chacune de ces notions : 1. qu’est-ce que c’est ?

2. à quoi ça sert ? 3. comment ça s’utilise ?

Programmation I – Cours 13 : Révisions – 3 / 11

(4)

Objectifs Synthèse Fondamentaux

Modularisation Révisions

cEPFL 2016-17 Jamila Sam

& Jean-Cédric Chappelier

FONDAMENTAUX

1. déclarez avant d’utiliser

I variables int i;

vector<double> v;

I fonctions + prototype double sin(double x);

bool cherche_valeur(Listechainee l, Valeur v);

2. modularisez/ décomposez / pensez « atomique » 2.1 conception(qu’est ce qu’on veut ?)

2.2 implémentation(comment ça se réalise ?) 2.3 syntaxe(comment ça s’écrit ?)

2.4 tests(où sont mes fautes, comment pourrais-je les tester ?)

Programmation I – Cours 13 : Révisions – 4 / 11

(5)

Objectifs Synthèse Fondamentaux Modularisation Révisions

cEPFL 2016-17 Jamila Sam

& Jean-Cédric Chappelier

« Modularisez » : exemple

Exemple : affichage d’une tour de Hanoï Je veux afficher le jeu

→c’est-à-dire afficher 3 « piliers »

→c’est-à-dire afficher de haut en bas

I soit vide

I soit un disque

=⇒ c’est-à-dire savoir afficher un disque

afficher un disque→c’est-à-dire afficherncaractères similaires

Programmation I – Cours 13 : Révisions – 5 / 11

(6)

Objectifs Synthèse Fondamentaux Modularisation Révisions

cEPFL 2016-17 Jamila Sam

& Jean-Cédric Chappelier

Exemple d’approche modulaire (2)

Supposons qu’on ait déjà les objets de base : // le disque -> sa taille (rayon) typedef unsigned int Disque;

// 0 signifiant pas de disque Disque const PAS_DE_DISQUE(0);

// un pilier est une pile d’au plus N disques:

typedef array<Disque, N> Pilier;

// le jeu est constitue de 3 piliers:

typedef array<Pilier, 3> Jeu;

On fait alors alorsexactementce qui est écrit plus haut : on commence par spécifier tour à tour ces fonctions

void affiche(Jeu jeu);

void affiche(Disque d);

void affiche(char c, unsigned int n = 1);

puis on écritsimplementce qu’on a conçu.

C’est simple car on adécomposéla tâche.

Sinon c’est beaucoup plus compliqué =⇒ on peut plus facilement faire des erreurs Programmation I – Cours 13 : Révisions – 6 / 11

(7)

Objectifs Synthèse Fondamentaux Modularisation Révisions

cEPFL 2016-17 Jamila Sam

& Jean-Cédric Chappelier

Exemple d’approche modulaire (3)

Afficher le jeu = afficher 3 « piliers » = afficher de haut en bas les 3 disques

/* ---

* Affiche un jeu

* Entree : le jeu a afficher

* --- */

void affiche(Jeu jeu)

{ // pour toutes les lignes:

for (unsigned int i(0); i < N; ++i) {

// affichage d’un disque du 1er pilier:

affiche(jeu[0][i]);

// affichage du 2eme:

affiche(jeu[1][i]);

// affichage du 3eme:

affiche(jeu[2][i]);

cout << endl;

} }

Programmation I – Cours 13 : Révisions – 7 / 11

(8)

Objectifs Synthèse Fondamentaux Modularisation Révisions

cEPFL 2016-17 Jamila Sam

& Jean-Cédric Chappelier

Exemple d’approche modulaire (4)

Afficher un disque

I soit vide

I soitncaractères identiques (n=taille du disque) /* ---

* Affiche un disque

* Entree : le disque a afficher

* --- */

void affiche(Disque d) {

if (d == PAS_DE_DISQUE) { affiche(’ ’, N-1);

cout << ’|’;

affiche(’ ’ , N);

} else {

affiche(’ ’ , N-d);

affiche(’-’ , 2*d-1);

affiche(’ ’ , N-d+1);

} }

Programmation I – Cours 13 : Révisions – 8 / 11

(9)

Objectifs Synthèse Fondamentaux Modularisation Révisions

cEPFL 2016-17 Jamila Sam

& Jean-Cédric Chappelier

Exemple d’approche modulaire (5)

« atome » de notre décomposition : afficherncaractères /*---

* Affiche n fois un caractere

* Entree : le caractere a afficher et le nombre de fois

* --- */

void affiche(char c, unsigned int n) {

for (unsigned int i(0); i < n; ++i) cout << c;

}

Programmation I – Cours 13 : Révisions – 9 / 11

(10)

Objectifs Synthèse Fondamentaux Modularisation Révisions

cEPFL 2016-17 Jamila Sam

& Jean-Cédric Chappelier

Proposition de méthode de révision

I prendre le tableau synthétique dutransparent 3

I prendre les fiches résumé

I et pour chacun des points, se demander si on sait :

I de quoi ça parle ?

I ce que ça veut dire ?

I l’utiliser ?

+se focaliser sur lesconcepts.

Les détails de syntaxe (comment ça s’écrit) peuvent êtreensuite rapidement retrouvés dans la fiche résumé, si on sait ce qu’on cherche (c’est-à-dire si on a le concept)

Programmation I – Cours 13 : Révisions – 10 / 11

(11)

Objectifs Synthèse Fondamentaux Modularisation Révisions

cEPFL 2016-17 Jamila Sam

& Jean-Cédric Chappelier

Etude de cas

I Exemple de test

Programmation I – Cours 13 : Révisions – 11 / 11

Références

Documents relatifs

urent PointalDépartement Mesures Physiques Cours d’Informatique Scientifique 6/8 5

Pour définir une matrice de petite taille, on donne la liste des éléments de la matrice entre crochets, les éléments de chaque ligne étant séparés par des virgules (ou des espaces)

 Une expression expression peut être une valeur, une variable ou une opération constituée par des valeurs, des constantes et des variables reliées entre elles par des

Les instructions (corps de la boucle) sont exécutées tant que la condition est vraie, on sort de la boucle dès que la condition devient fausse.  dans la boucle while le test

 Les variables déclarées au début de la fonction principale main ne sont pas des variables globales, mais elles sont locales à main.  Une variable locale cache la variable

Écrire un programme qui prend 3 arguments fic, alire, pivot sur la ligne de commande, vérifie que fic est composé uniquement de chiffres et si c’est le cas, stocke dans une chaîne

● Pour voir le résultat d'une opération, on peut demander au programme de l'afficher. ● On utilise la fonction System.out.print

● Le code source est ensuite soit traduit vers un langage compréhensible par la machine (langage binaire), on parle de compilation, soit il est interprété par un interpréteur