Algorithmique Cours 5

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

Cours d Algorithmique et de Langage C v 3.0


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

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

Introduction à l héritage en C++

PROJET ALGORITHMIQUE ET PROGRAMMATION II

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

Claude Delannoy. 3 e édition C++

Algorithmique et Programmation, IMA

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

Introduction à l algorithmique et à la programmation M1102 CM n 3

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

Informatique Générale

Rappels Entrées -Sorties

Chap III : Les tableaux

Chapitre 10 Arithmétique réelle

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

SUPPORT DE COURS. Langage C

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

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

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

Programme Compte bancaire (code)

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

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

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

Chapitre 1 : La gestion dynamique de la mémoire

Génie Logiciel I. Cours VI - Typage statique / dynamique, fonctions virtuelles et classes abstraites, flots d entrées / sorties, et string

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

Programmation en langage C

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

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

Introduction au langage C

Codage d information. Codage d information : -Définition-

Notions fondamentales du langage C# Version 1.0

Logiciel de Base. I. Représentation des nombres

Les structures. Chapitre 3

Programmation en C/C++

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

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

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

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

Projet L1, S2, 2015: Simulation de fourmis, Soutenance la semaine du 4 mai.

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

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

Le langage C. Introduction, guide de reference

Représentation des Nombres

Programmation impérative

Programmation en Java IUT GEII (MC-II1) 1

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

Programmation stochastique

Chap17 - CORRECTİON DES EXERCİCES

Programmation en C. École Nationale Supérieure de Techniques Avancées. Pierre-Alain Fouque et David Pointcheval

Probabilités. I Petits rappels sur le vocabulaire des ensembles 2 I.1 Définitions... 2 I.2 Propriétés... 2

Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie

TP : Gestion d une image au format PGM

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

Le langage C. Séance n 4

as Architecture des Systèmes d Information

Cours: Administration d'une Base de Données

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

TP 1. Prise en main du langage Python

Créer le schéma relationnel d une base de données ACCESS

INFO-F-105 Language de programmation I Séance VI

REPUBLIQUE ALGERIENNE DEMOCRATIQUE ET POPULAIRE UNIVERSITE M HAMED BOGARA DE BOUMERDES

Représentation d un entier en base b

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

Conversion d un entier. Méthode par soustraction

ALGORITHMIQUE ET PROGRAMMATION En C

TD : Codage des images

Programmation Classique en langage C

INF 321 : mémento de la syntaxe de Java

Cours 1: Java et les objets

et Programmation Objet

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

Langages et Concepts de Programmation Introduction à la programmation en langage C

Département Automatisation et Informatisation Année Programmation en C++ Institut des Sciences et Techniques de l Ingénieur d Angers

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

Ecran : Processeur : OS : Caméra : Communication : Mémoire : Connectique : Audio : Batterie : Autonomie : Dimensions : Poids : DAS :

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

Les chaînes de caractères

Introduction au pricing d option en finance

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Construire une base de donnée pour bibliothèque

IRL : Simulation distribuée pour les systèmes embarqués

Programmation en langage C d un µcontrôleur PIC à l aide du compilateur C-CCS Sommaire

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Introduction à C++ et à wxwidgets

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

INTRODUCTION À LA PROGRAMMATION PRATIQUE DU LANGAGE C. M. Le Gonidec

Chapitre VI- La validation de la composition.

Découverte de Python

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

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte

Introduction à NetCDF

Création et Gestion des tables

Cours de C/C++ par la pratique. Hugues Talbot

1/ Présentation de SQL Server :

Conventions d écriture et outils de mise au point

Transcription:

Algorithmique Cours 5 IUT Informatique de Lens, 1ère Année Université d Artois Frédéric Koriche koriche@cril.fr 2011 - Semestre 1

Sommaire L objectif de ce cours est d étudier les énumérations et structures en algorithmique et programmation C++. 1 Typage 2 Enumérations 3 Structures

Sommaire L objectif de ce cours est d étudier les énumérations et structures en algorithmique et programmation C++. 1 Typage 2 Enumérations 3 Structures

Rappel des types simples Un type simple est un domaine de valeurs, qui peuvent être des booléens, des caractères, des nombres entiers ou des nombres réels. Nom C++ Octets Domaine booléen bool 1 0 et 1 caractère char 1 de 128 à 127 (codage ASCII) entier short 2 de 2 15 à 2 15 1 int 4 de 2 31 à 2 31 1 long long 8 de 2 63 à 2 63 1 réel float 4 ±3.410 ±38 (7 décimales) double 8 ±1.710 ±308 (15 décimales)

Rappel des types simples Un type simple est un domaine de valeurs, qui peuvent être des booléens, des caractères, des nombres entiers ou des nombres réels. Nom C++ Octets Domaine booléen bool 1 0 et 1 caractère char 1 de 128 à 127 (codage ASCII) entier short 2 de 2 15 à 2 15 1 int 4 de 2 31 à 2 31 1 long long 8 de 2 63 à 2 63 1 réel float 4 ±3.410 ±38 (7 décimales) double 8 ±1.710 ±308 (15 décimales) Note En C++, il est possible de construire des types non signés (nombres positifs) en utilisant le mot clé unsigned devant le type de données (ex : unsigned int).

Conversions Une conversion de type est une transformation permettant d effectuer des opérations sur des données de types différents. Conversion implicite : le compilateur réalise automatiquement de la conversion Conversion explicite : le programmeur doit intervenir pour réaliser la conversion

Conversions Une conversion de type est une transformation permettant d effectuer des opérations sur des données de types différents. Conversion implicite : le compilateur réalise automatiquement de la conversion Conversion explicite : le programmeur doit intervenir pour réaliser la conversion Conversions implicites Les types simples sont convertis implicitement en obéissant à la règle de promotion : bool char short int float double long long

Conversions Une conversion de type est une transformation permettant d effectuer des opérations sur des données de types différents. Conversion implicite : le compilateur réalise automatiquement de la conversion Conversion explicite : le programmeur doit intervenir pour réaliser la conversion Exemple : quelques conversions implicites #include <iostream> using namespace std; int main() bool b = true; int n = 1000; float f = 1.0/3.0; f = n; n = b; } Initialisation d un booléen Initialisation d un entier Initialisation d un flottant

Conversions Une conversion de type est une transformation permettant d effectuer des opérations sur des données de types différents. Conversion implicite : le compilateur réalise automatiquement de la conversion Conversion explicite : le programmeur doit intervenir pour réaliser la conversion Exemple : quelques conversions implicites #include <iostream> using namespace std; int main() bool b = true; int n = 1000; float f = 1.0/3.0; f = n; n = b; } Initialisation d un booléen Initialisation d un entier Initialisation d un flottant Conversion implicite d un entier en flottant ; f prend la valeur 1000 Conversion implicite d un booléen en entier ; n prend la valeur 1

Conversions Une conversion de type est une transformation permettant d effectuer des opérations sur des données de types différents. Conversion implicite : le compilateur réalise automatiquement de la conversion Conversion explicite : le programmeur doit intervenir pour réaliser la conversion Conversions explicites La conversion d un type en un autre peut être réalisée explicitement à l aide d un opérateur de cast ; le type est explicité entre parenthèses. #include <iostream> using namespace std; int main() int a = 4; int b = 5; float f; f = a / b; f = (float)a / b; } Initialisation de deux entiers Initialisation d un flottant

Conversions Une conversion de type est une transformation permettant d effectuer des opérations sur des données de types différents. Conversion implicite : le compilateur réalise automatiquement de la conversion Conversion explicite : le programmeur doit intervenir pour réaliser la conversion Conversions explicites La conversion d un type en un autre peut être réalisée explicitement à l aide d un opérateur de cast ; le type est explicité entre parenthèses. #include <iostream> using namespace std; int main() int a = 4; int b = 5; float f; f = a / b; f = (float)a / b; } Initialisation de deux entiers Initialisation d un flottant A cause de la division entière, la valeur de f est 0 Par conversion explicite du numérateur en flottant, la valeur de f est 0.8

Enumérations Une énumération (ou type énuméré) est un type dont le domaine de valeurs est défini par le programmeur. Pseudo-code Pseudo-code énumération Nom valeur 1, valeur 2,, valeur n } variables... début... fin

Enumérations Une énumération (ou type énuméré) est un type dont le domaine de valeurs est défini par le programmeur. Pseudo-code Pseudo-code énumération Nom valeur 1, valeur 2,, valeur n } variables... début... fin Une énumération est un type et figure donc avant la déclaration de variables

Enumérations Une énumération (ou type énuméré) est un type dont le domaine de valeurs est défini par le programmeur. #include <iostream> using namespace std; enum Nom valeur 1, valeur 2,, valeur n }; int main()... }

Enumérations Une énumération (ou type énuméré) est un type dont le domaine de valeurs est défini par le programmeur. #include <iostream> using namespace std; enum Nom valeur 1, valeur 2,, valeur n }; int main()... } Ne pas oublier le point virgule!

Exemple : couleurs Pseudo-code // Déclaration du type Couleur énumération Couleur bleu, vert, rouge, jaune, cyan, magenta, blanc}

Exemple : couleurs Couleurs en pseudo-code // Déclaration du type Couleur énumération Couleur bleu, vert, rouge, jaune, cyan, magenta, blanc} variables // Déclaration de deux variables de type Couleur Couleur x,y début // Affectation de x à bleu x bleu // Si x est bleu alors y devient rouge si x = bleu alors y rouge fin fin

Exemple : couleurs #include <iostream> using namespace std; // Déclaration du type Couleur enum Couleur bleu, vert, rouge, jaune, cyan, magenta, blanc };

Exemple : couleurs #include <iostream> using namespace std; // Déclaration du type Couleur enum Couleur bleu, vert, rouge, jaune, cyan, magenta, blanc}; int main() // Déclaration de deux variables de type Couleur Couleur x,y; // Affectation de x à bleu x = bleu; // Si x est bleu alors y devient rouge if(x == bleu) y = rouge; }

Exemple : jours de la semaine #include <iostream> using namespace std; // Déclaration du type Jour enum Jour lundi, mardi, mercredi, jeudi, vendredi, samedi, dimanche }; int main() // Déclaration d une variable de type Jour Jour x; // Affectation de x à mardi x = mardi; }

Stockage des énumérations En C+, les valeurs des énumérations sont traitées comme des entiers, numérotés de gauche à droite en démarrant à 0. Exemple : jours de la semaine enum Jour lundi, // 0 mardi, // 1 mercredi, // 2 jeudi, // 3 vendredi, // 4 samedi, // 5 dimanche // 6 };

Opérateurs de comparaison Les comparaisons sur les énumérations s effectuent par conversion implicite enum en int Nom Exemple égal == jour == mardi différent!= jour!= mardi plus petit < jour1 < jour2 plus grand > jour > mercredi

Opérateurs de comparaison Les comparaisons sur les énumérations s effectuent par conversion implicite enum en int Nom Exemple égal == jour == mardi différent!= jour!= mardi plus petit < jour1 < jour2 plus grand > jour > mercredi Opérateurs arithmétiques La conversion implicite int en enum n étant pas autorisée, les manipulations arithmétiques doivent se faire par conversion explicite Jour j = lundi; int x ; x = j; x++; j = (Jour) x;

Opérateurs de comparaison Les comparaisons sur les énumérations s effectuent par conversion implicite enum en int Nom Exemple égal == jour == mardi différent!= jour!= mardi plus petit < jour1 < jour2 plus grand > jour > mercredi Opérateurs arithmétiques La conversion implicite int en enum n étant pas autorisée, les manipulations arithmétiques doivent se faire par conversion explicite Jour j = lundi; int x ; x = j; x++; j = (Jour) x; Conversion implicite, la variable x prend la valeur 0 Conversion explicite, la variable j prend la valeur mardi

Structures Une structure est un objet composite formé par plusieurs types groupés ensembles Déclaration de type Pseudo-code structure Nom Type 1 nom 1 Type 2 nom 2... Type k nom k variables... début... fin

Structures Une structure est un objet composite formé par plusieurs types groupés ensembles Déclaration de type Pseudo-code structure Nom Type 1 nom 1 Type 2 nom 2... Une structure est un type et figure donc avant la déclaration de variables Type k nom k variables... début... fin

Structures Une structure est un objet composite formé par plusieurs types groupés ensembles Déclaration de type #include <iostream> using namespace std; struct Nom type 1 nom 1 ; type 2 nom 2 ;... type k nom k ; }; int main()... }

Structures Une structure est un objet composite formé par plusieurs types groupés ensembles Déclaration de type #include <iostream> using namespace std; struct Nom type 1 nom 1 ; type 2 nom 2 ;... type k nom k ; }; Ne pas oublier le point virgule! int main()... }

Exemple : Cercles C r Pseudo-code structure Cercle réel abscentre réel ordcentre réel rayon

Exemple : Cercles Pseudo-code structure Cercle réel abscentre réel ordcentre réel rayon variables // Déclaration d une variable de type cercle Cercle moncercle début // Initialisation du centre moncercle.abscentre 0 moncercle.ordcentre 0 // Initialisation du rayon moncercle.rayon 1 fin

Exemple : Cercles #include <iostream> using namespace std; // Déclaration du type Cercle struct Cercle float abscentre; float ordcentre; float rayon; }; int main() // Déclaration d une variable Cercle Cercle moncercle; // Initialisation des valeurs de moncercle moncercle.abscentre = 0; moncercle.ordcentre = 0; moncercle.rayon = 1; }

Cartes à Jouer (jeu de 32) Pseudo-code // Couleur de la carte énumération Couleur trêfle, carreau, pique, coeur} // Face de la carte énumération Face sept, huit, neuf, dix, valet, dame, roi, as} // Déclaration du type Carte structure Carte Couleur couleur Face face

Cartes à Jouer (jeu de 32) #include <iostream> using namespace std; // Couleur de la carte enum Couleur trefle, carreau, pique, coeur}; // Face de la carte enum Face sept, huit, neuf, dix, valet, dame, roi, as}; // Déclaration du type Carte struct Carte Couleur couleur; Face face; };

Cartes à jouer (jeu de 32) #include <iostream> using namespace std; // Couleur de la carte enum Couleur trefle, carreau, pique, coeur}; // Face de la carte enum Face sept, huit, neuf, dix, valet, dame, roi, as}; // Déclaration du type Carte struct Carte Couleur couleur; Face face;}; int main() // Initialisation de deux cartes Carte carte1 = pique,as}; Carte carte2 = coeur,valet}; // Comparaison des faces if(carte1.face >= carte2.face) cout "Le joueur 1 a gagne!" endl; }

Films Pseudo-code // Genre du film énumération Genre action, animation, comédie, drame, sci-fi} // Déclaration du type Film structure Film caractère titre[50] caractère metteurenscène[50] entier durée Genre genre

Films #include <iostream> using namespace std; // Genre du film enum Genre action, animation, comedie, drame, scifi, thriller}; // Déclaration du type Film struct Film char titre[50]; char metteurenscene[50]; short duree; Genre genre; };

Films #include <iostream> using namespace std; enum Genre action, animation, comedie, drame, scifi, thriller}; struct Film char titre[50]; char metteurenscene[50]; short duree; Genre genre; }; int main() // Déclaration d un film Film monfilm; monfilm.titre = "Memento"; monfilm.metteurenscene = "Christopher Nolan"; monfilm.duree = 113; monfilm.genre = thriller; }

Films #include <iostream> using namespace std; enum Genre action, animation, comedie, drame, scifi, thriller}; struct Film char titre[50]; char metteurenscene[50]; short duree; Genre genre; }; int main() // Autre forme de déclaration Film film1 = "Memento", "Christopher Nolan", 113, thriller}; Film film2 = "Démineurs", "Kathryn Bigelow", 131, action}; }

Films #include <iostream> using namespace std; enum Genre action, animation, comedie, drame, scifi, thriller}; struct Film char titre[50]; char metteurenscene[50]; short duree; Genre genre; }; int main() // Déclaration d une bibliothèque de 50 films Film bibliothèque[50]; }

Stockage des structures Une structure est représentée en mémoire comme un tableau de données, chacune correspondant à un élément de la structure. struct Film char titre[50]; char metteurenscene[50]; short duree; Genre genre; }; Une structure en C++ titre metteurenscene duree genre 1023... 1073... 1123 1125 Stockage de la structure en mémoire

Opérateurs sur les structures Comme les structures ne peuvent pas être converties en types simples, la seule opération autorisée est l affectation (ex : initialisation).

Opérateurs sur les structures Comme les structures ne peuvent pas être converties en types simples, la seule opération autorisée est l affectation (ex : initialisation). Programmation structurée La plupart des données informatiques peuvent être représentées par des structures, des tableaux, ou des tableaux de structures (ex : bases de données).

Opérateurs sur les structures Comme les structures ne peuvent pas être converties en types simples, la seule opération autorisée est l affectation (ex : initialisation). Programmation structurée La plupart des données informatiques peuvent être représentées par des structures, des tableaux, ou des tableaux de structures (ex : bases de données). Programmation orientée objets Les classes, étudiées l année prochaine, sont des structures associées avec des opérateurs (ex : comparer deux films) et des fonctions (ex : retourner le metteur en scène du film).