La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

Présentations similaires


Présentation au sujet: "DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé"— Transcription de la présentation:

1 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
Cours d’Informatique Initiation à l’informatique, à l’algorithmique et à la programmation 1ère année DEUG MIAS-MASS 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé MIP2 - Informatique ; Ph. Hunel

2 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
Emploi du temps Affiché au tableau Chaque élève aura une séance TD/TP tous les 15 jours. (2 heures/2 heures) MIAS: lundi AM ou PM MASS: Mercredi 9h-13h Ex Lundi prochain: MIAS groupes 1 et 3 (A-CO et J-PA) Mercredi prochain: MASS groupe A (A-K) 24 heures de cours 12 heures de TD 12 heures de TP 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

3 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
Objectif Familiariser les étudiants avec les techniques et outils permettant de concevoir et de comprendre, de réaliser puis traduire d’implémenter et enfin d’obtenir un programme produisant par son exécution sur un ordinateur, le résultat attendu.  rigueur de la démarche scientifique 24 heures de cours 12 heures de TD 12 heures de TP 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé MIP2 - Informatique ; Ph. Hunel

4 Chapitre 1 : Introduction à l’informatique
Chapitre suivant algorithmique 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé MIP2 - Informatique ; Ph. Hunel

5 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
1.1 : L’informatique ? Computer Science en anglais INFORMATIQUE ? INFORMATION AUTOMATIQUE Art d’entraîner automatiquement des actions Science de l’information Définition: L’informatique est la science qui regroupe l’ensemble des théories et des techniques permettant de traiter de l’information à l’aide d’un ordinateur Traitement automatique de l’information ORDINATEUR Machine automatique 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé MIP2 - Informatique ; Ph. Hunel

6 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
L’ordinateur Machine qui permet de traiter de l’information : d’acquérir et de conserver de l’information (acquisition, stockage) d’effectuer des traitements (calcul), de restituer les informations stockées (restitution) Permet de lier «information»  «données» (0 ou 1) Différents types d’informations : valeurs numériques, textes, images, sons, …: tout cela avec des 0 ou 1 Définition : Un ordinateur est 1 calculateur universel qui est : 1- composé d'un nombre variable d'unités spécialisées, 2- commandé par un même programme enregistré, 3- permet sans intervention humaine en cours de travail d'effectuer des opérations arithmétiques et logiques 1 : écran, clavier, unité centrale 2 : le programme permet d'indiquer à l'ordinateur ce qu'il doit faire (ensemble d'instruction) 3 : addition de 2 nombres ; si 1 nombre est égal à 0 Calculateur universel : un ordinateur n'est pas spécialisé pour un type de traitement donné Un ordinateur est une machine pouvant effectuer des tâches complexes en exécutant des opérations simples. La simplicité des opérations pouvant être exécutées par un ordinateur est compensée par la rapidité avec laquelle elles sont exécutées. La vitesse d’un ordinateur s’évalue en MIPS (Millions d’instructions par seconde) 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé MIP2 - Informatique ; Ph. Hunel

7 Traitement de l’information
Schéma de principe du traitement de l’information Données à l’état brut ENTREE Données corrigées Résultats TRAITEMENT Par ordinateur SORTIE 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

8 L’ordinateur / l’homme
Raison du remplacement : Vitesse (pour des opérations « bas niveau ») Fiabilité (répétitivité) Mémoire Coût 2 types d’ « informaticiens » les utilisateurs des outils informatiques les concepteurs de ces outils : votre but Tout traitement effectué par un ordinateur peut être réalisé par un être humain en exécutant les même opérations. Les ordinateurs remplacent cependant de plus les homes pour les tâches répétitives et fastidieuses. Vitesse : les ordinateurs exécutent au moins 1 MIPS Fiabilité : les ordinateurs font très rarement des erreurs ; bugs ; mal expliqué Mémoire : mémorisation de grandes quantités d ’informations et restitution fiable Coût : moins cher que le salaire d ’un employé ‘ informatique est donc à la fois une science et un outil. Outil utilisé par l ’homme pour alléger sa tâche ou pour éviter les tâches répétitives. 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé MIP2 - Informatique ; Ph. Hunel

9 Domaines de l’informatique
Domaine du matériel (hardware) partie physique de l’ordinateur composants constituant un ordinateur (microprocesseur …) support du traitement de l’information (disque dur …) Domaine du logiciel (software) instructions expliquant à l’ordinateur comment traiter un problème Cela nécessite de décrire des : algorithmes et représentations informatiques de ces instructions Pour aboutir à un programme 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé MIP2 - Informatique ; Ph. Hunel

10 1.2 : Matériel 121 Aperçu historique
Principe de base : John Von Newmann 1946 =véritable naissance de l’informatique Sinon les ancêtres et étapes importantes: Boulier chinois Numération binaire par Francis BACON en 1600 Machine à calculer de Pascal, 1642 : dépassée par l’apparition de l’électronique et des semi-conducteurs Machine de Falcon, Première à utiliser un « programme » sur plaquette de bois perforée Mémoire mécanique de Babbage, Conçoit une mémoire séparée des organes d’entrée et de sortie Algèbre de Boole 1850 (bases de l’automatisme) Machine de Hollerith, Il utilisa le premier la carte perforée, comme support universel d‘ information , mis en oeuvre dans les premières générations d‘ ordinateurs. 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé MIP2 - Informatique ; Ph. Hunel

11 Les ancêtres des ordinateurs
Machine de Pascal (1645) Machine de Babbage (1833) 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

12 1.2.2 - Générations d’ordinateurs
machines électroniques composées de circuits à lampes à vide (et non transistors à semi-conducteurs) place importante (équivalent d’une salle) performances de l’ordre de 1000 opérations/s programmation en langage binaire faible portabilité des programmes programme et données fournis sous forme de cartes perforées, résultats sur une imprimante (pas de stockage) Lampes à vide comme les ancien poste de radio et de télévision. Un programme en langage binaire est composé d ’une suite de 0 et de 1. Un programme est propre à chaque ordinateur ou chaque famille d ’ordinateur. Pour avoir le même programme sur un autre ordinateur, il faut pratiquement tout réécrire. 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé MIP2 - Informatique ; Ph. Hunel

13 1.2.2 - Générations d’ordinateurs
découverte des transistors qui remplaceront les circuits à lampes à vide Apparition des 1ère mémoires (à tores) évite l'échauffement, gain de place, fiabilité performances d’environ opérations/s programmation en langage binaire mais aussi à l’aide des premiers langages évolués (Fortran, Cobol, ...) 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé MIP2 - Informatique ; Ph. Hunel

14 1.2.2 - Générations d’ordinateurs
invention du circuit intégré permettant de placer des dizaines de transistors sur une puce de silicium performances  109 à 1012 opérations/s généralisation de la programmation en langage évolué Les Systèmes d'Exploitation (OS) Permettent de gérer plusieurs programmes différents sous le contrôle d'un programme central Circuit intégré : début des années 65 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé MIP2 - Informatique ; Ph. Hunel

15 1.2.2 - Générations d’ordinateurs
exploitation du circuit intégré à grande échelle: plusieurs dizaines de milliers (millions) de circuits peuvent être intégrés sur une même puce reproduction sur une seule puce d’une véritable micro machine : le micro processeur. (En 1971 l'Intel 4004 fut le premier microprocesseur) diminution de la place occupé par un ordinateur développement de l’ordinateur personnel. La programmation s'oriente vers la programmation OBJETS (orientés autour des données et non plus des actions) 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé MIP2 - Informatique ; Ph. Hunel

16 1.3 - Structure de l’ordinateur
Carte vidéo Disque Dur Ecran Mémoire Centrale Clavier Disquette Unité de traitement Souris CDROM Haut- parleurs Unité Centrale Carte son Périphériques de communication Unités d’échange Périphériques de mémorisation Bus Support de transfert d'information entre les différents ensembles d'un ordinateur). 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé MIP2 - Informatique ; Ph. Hunel

17 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
Périphériques 2 types de périphériques Une pièce de matériel qui peut effectuer une fonction particulière périphériques de communication, périphériques de mémorisation. Périphériques de communication Périphériques d’entrées clavier souris Périphériques de sorties écran imprimantes Périphériques d’entrées (communication Homme  Machine) Périphériques de sorties (communication Machine  Homme) Ecran parfois d’E/S Différents types d ’imprimantes : à aiguilles, à jet d ’encre laser 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé MIP2 - Informatique ; Ph. Hunel

18 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
Les périphériques ENTREES Clavier Souris MEMOIRES (entrées/sorties) Disque dur Disquette Disque optique (CD) SORTIES Ecran Imprimante 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

19 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
Périphériques de communication le modem Permet : interconnexion des ordinateurs pour communiquer, échanger des informations, partager des applications réseau d’ordinateur utilisation du réseau téléphonique pour communiquer  utilisation d’un MODEM Ordinateur : Transmission de signaux codés sous forme de bits 0 ou 1  signal numérique réseau téléphonique : Transmission de la voix (humaine)  signal analogique Le modem permet de transformer un signal numérique en signal analogique et inversement (Modulateur - DEModulateur) MODEM 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé MIP2 - Informatique ; Ph. Hunel

20 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
Convertisseurs A/N ou N/A Signal numérique : 0 et 1 Signal analogique: t et A continu => codage par modulation MODEM = modulation+démodulation 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

21 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
Périphériques de mémorisation permettent de sauvegarder et de restituer des informations quantité d’informations pouvant être mémorisée se mesure en Octet (8 éléments binaires) périphériques usuels de mémorisation: disque dur Disquette CDROM, DVD 1 octet = 8 bits 1 octet permet de coder 256 informations différentes On parle également : Kilo octet, Ko = 210 octets = octets ~103 Mega Octet, Mo = 220 octets = octets ~106 Giga Octet, Go = 230 octets = octets ~109 Tera Octet, To = 240 octets = octets ~1012 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé MIP2 - Informatique ; Ph. Hunel

22 Schéma d’une configuration informatique
Unité Centrale (cerveau) Unité de Traitement Unité de Commande et de Contrôle Unité Arithmétique et Logique Mémoire Centrale Périphériques d’Entrées Périphériques de Sorties Périphériques d’Entrées/Sorties Mémoires Auxiliaires Informations Commandes 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

23 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
La mémoire centrale Permet de stocker et de restituer des informations Correspond à un ensemble fini de cellules Une case mémoire (cellule) contient une donnée ou une instruction Chaque cellule est numérotée : adresse a1 a2 a3 a4 a5 Lorsqu’un donnée est utilisée dans un programme, seule son adresse est connue du programme. La mémoire centrale se décompose en 2 parties : - la mémoire morte ROM (Read Only Memory) - la mémoire vive RAM (Random Access Memory) Mémoire morte accessible uniquement en lecture, taille de qques Ko Contient des instructions nécessaire au démarrage de l ’ordinateur. Son contenu est déterminé par le constructeur et n ’est pas accessible à l ’utilisateur. Mémoire vive accessible en lecture et écriture, taille de qques Mo L ’information contenue dans la mémoire vive est dite volatile, perdue une fois l ’ordinateur éteint ; d ’où l ’utilisation de périphériques de mémorisation encore appelés mémoires auxiliaires Temps d ’accès faible 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé MIP2 - Informatique ; Ph. Hunel

24 1.3.2 - La mémoire centrale Zone de programme données
Contient le programme en cours d’exécution, ainsi que ses données. Par exemple, lors de la création d’un programme en langage C: Edition Compilation Exécution Zone de programme données Editeur de texte Compilateur Code exécutable Texte du programme en C Variables du programme Code exécutable 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

25 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
La mémoire auxiliaire La mémoire centrale a une capacité limitée et est volatile  Nécessité d’enregistrer les informations sur des supports de mémoire non volatile (en sortie) pour pouvoir les réutiliser par la suite (en entrée). FICHIER : élément de mémoire de stockage (mémoire de masse) contenant de l’information et repérable. Le codage de l’information définit le TYPE du fichier et détermine son utilisation comme donnée pour un programme ou comme programme exécutable. 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

26 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
La mémoire auxiliaire Les supports magnétiques à ACCES ALEATOIRE (on choisit la position que l’on veut) permettent une hiérarchisation des fichiers :  REPERTOIRE : fichier contenant le nom, l’adresse, … de plusieurs autres fichiers  RACINE : fichier répertoire crée automatiquement sur le support au moment du formatage (disque ou disquette) et portant le nom du volume (label)  CHEMIN D’ACCES : liste des répertoires permettant d ’atteindre un fichier à partir de la racine 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

27 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
La disquette 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

28 Les secteurs (sectors)
Les faces Comme tout disque, une disquette comporte deux faces utilisables pour y enregistrer l'information. Les pistes (tracks) Les disquettes sont donc structurées en pistes concentriques sur lesquelles l'information sera écrite et lue. Les pistes qui se font face sur les deux côtés de la disquette et qui portent donc le même nom constituent un cylindre. Ceux-ci sont numérotés de la même façon que les pistes. Chaque piste est divisée en plusieurs morceaux: les secteurs. Les secteurs (sectors) De la même façon qu'ne tarte est généralement découpée en morceaux de tailles égales, une disquette subit une découpe logique. Ainsi chaque piste est découpée en morceaux de tailles identiques appelés secteurs dont le nombre dépend du type de la disquette. Capacité = nombre de faces * nombre de pistes * nombre de secteurs * taille d'un secteur 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

29 1.3.3 - L’unité de traitement
Unité Centrale (cerveau) Unité de commandes unité de contrôle chef d’orchestre conduit le calcul (ordre des instructions) voulu par le programmeur Unité Arithmétique et logique unité de calcul exécute les opérations arithmétiques et logiques (+-*/ et ou …) d’un programme sous le contrôle de l’unité de commande Unité de Traitement Unité de Commande et de Contrôle Unité Arithmétique et Logique Mémoire Centrale 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé MIP2 - Informatique ; Ph. Hunel

30 L’unité centrale CI sur lequel on trouve
Emplacements de cartes d ’extensions CPU Supports de barrettes de mémoires Connecteurs de contrôleur de disquettes et disque dur Connecteurs de souris et clavier Puce du BIOS Batterie 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé MIP2 - Informatique ; Ph. Hunel

31 Unité arithmétique et logique
Le processeur (CPU) Séquenceur d ’instructions Interface du bus d ’instructions Décodeur d ’instructions Unité de traitement Unité arithmétique et logique Registres: Mémorise différents états binaires (environ 10) résultant des opérations élémentaires: Overflow Retenue Parité Unité de contrôle Unité de détection d’erreurs 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé MIP2 - Informatique ; Ph. Hunel

32 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
Les bus Unité de traitement Mémoire Centrale Clavier Ecran Souris Haut- parleurs Disque Dur Disquette CDROM Unité Centrale Permettent de faire le lien entre les différentes unités d’un ordinateur représente le chemin utilisé par les informations pour aller d’une unité à l’autre 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé MIP2 - Informatique ; Ph. Hunel

33 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
1.4 : Logiciel Domaine du logiciel (software) instructions expliquant à l ’ordinateur comment traiter un problème algorithmes et représentation informatiques de ces instructions programme 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé MIP2 - Informatique ; Ph. Hunel

34 1.4.1 - Algorithmes et programmes
suite des actions à effectuer pour réaliser un traitement donné résoudre un problème donné Exemples d’algorithme dans la vie courante pour tricoter un pull : (maille à l’endroit, …) pour faire la cuisine : recette pour jouer une sonate : partition 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé MIP2 - Informatique ; Ph. Hunel

35 1.4.1 - Algorithmes et programmes
Informations en entrée Algorithme informatique = procédure de calcul Rigueur scientifique IMPORTANT ! Sinon, information de sortie erronée En informatique, un algo décrit une procédure de calcul qui, à partir d informations en entrée produit des informations en sortie. Un algo est décrit en français Informations en sortie 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé MIP2 - Informatique ; Ph. Hunel

36 1.4.1 - Algorithmes et programmes
codage d’un algorithme afin que l’ordinateur puisse exécuter les actions décrites doit être écrit dans un langage compréhensible par l’ordinateur  langage de programmation (Assembleur (micropro), Basic, C, Fortran, Pascal, Cobol …) Un programme est donc une suite ordonnée d’instructions élémentaires codifiées dans un langage de programmation L ’exécution d ’un programme va consister à faire l ’ordinateur effectuer la suite d ’instructions demandées Un programme en cours d ’exécution est un processus 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé MIP2 - Informatique ; Ph. Hunel

37 1.4.2 - Langages de programmation
L’ordinateur construit autour d’un ensemble de circuits électroniques (le courant passe, le courant ne passe pas) traite donc que des signaux assimilables à 0 ou 1 une opération élémentaire  suite de 0 et de 1 = suite de bits (BInary digiT) ! Un champ de 8 bits constituant ce qu'on appelle 1 byte ou 1 octet. Importance des unités en science. Rappel: k(2^10) M et G . Pour que les programmes et les données soient compréhensibles par l’ordinateur il faut effectuer un codage binaire A la conception d ’un ordinateur, est défini l ’ensemble des opérations élémentaires qu ’il peut réaliser. Ces opérations doivent être le plus simple possible pour diminuer la complexité des circuits électroniques. L ’ensemble des opérations élémentaires est appelé langage machine. 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé MIP2 - Informatique ; Ph. Hunel

38 1.4.2 - Langages de programmation
Langage machine langage binaire ses opérations sont directement compréhensibles par l’ordinateur propre à chaque famille d’ordinateur Pour pouvoir manipuler du langage machine, on est obligé de passer par de l'Assembleur. Ecriture des premiers programme en langage machine A la conception d ’un ordinateur, est défini l ’ensemble des opérations élémentaires qu ’il peut réaliser. Ces opérations doivent être le plus simple possible pour diminuer la complexité des circuits électroniques. L ’ensemble des opérations élémentaires est appelé langage machine. 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé MIP2 - Informatique ; Ph. Hunel

39 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
Les langages Rédiger un programme consiste à préparer le travail à FAIRE FAIRE à la machine, sous forme d’une liste d’instructions. Les instructions que peut exécuter l’unité de traitement sont codées en langage binaire spécifique à chaque machine (langage machine). Langage du programmeur  langage machine (code binaire exécutable). La traduction est effectuée par un compilateur (qui est lui aussi un programme …). TYPES DE LANGAGES  STYLE DE PROGRAMMATION langages impératifs (Fortran, Pascal, C …) : Il s'agit de faire exécuter une suite d'ordres par une machine bête mais disciplinée. langages Déclaratifs: l'activité de programmation consiste essentiellement à décrire le rapport qui existe entre les données et les résultats que l'on veut obtenir, plutôt que la séquence de traitements qui mène des unes aux autres fonctionnels (Lisp, Scheme …) logiques (Prolog … ) langages objets (C++, VisualBasic, Delphi, Java …) 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

40 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
Habituellement, un programme c'est une suite d'instructions. L'ordinateur est très bête et il faut tout lui détailler: Mettre la main sur la poignée de la porte Tourner la poignée Pousser la porte Mettre le doigt sur l'interrupteur Appuyer sur l'interrupteur pour allumer l'ampouleLe programme principal Tout se passe très bien. Mais qu'est-ce qui se passe par exemple si on met une porte automatique ? Le programme sera incapable de trouver la poignée et d'ouvrir la porte ! En programmation objet, on associe aux objets des actions (aussi appellées méthodes). Par exemple, à l'objet porte on peut associer la méthode ouvrir. De même pour l'ampoule on pourrait associer une méthode allumer, éteindre, etc. Le programme devient plus simple: porte.ouvrir ampoule.allumer Le nouveau programme principal On a plus besoin de savoir comment la porte s'ouvre. On se contente de l'ouvrir. Pour indiquer qu'on applique la méthode (ouvrir) sur l'objet (porte), on note souvent objet.méthode (ici : porte.ouvrir). 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

41 Le programme principal : il est inchangé malgré le changement de porte
Bien sûr il faut détailler ce que fait la méthode ouvrir de porte et la méthode allumer de lumière. On ne va pas détailler dans le programme ce que fait la méthode ouvrir, mais on va le détailler dans l'objet lui-même. C'est normal, puisque la méthode ouvrir ne s'applique qu'à la porte, pas à la lumière: porte.ouvrir: Mettre la main sur la poignée Tourner la poignée Pousser la porte L'objet porte et sa méthode On peut changer la porte en mettant une porte automatique. On peut aussi l'ouvrir (même si la porte elle-même ne s'ouvre pas de la même façon): porte.ouvrir: Se placer devant la porte Attendre que la porte soit complètement ouverte L'objet porte automatique et sa méthode Mais votre programme pourra l'ouvrir sans rien changer: porte.ouvrir ampoule.allumer Le programme principal : il est inchangé malgré le changement de porte 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

42 1.5 : Système d’exploitation
Tout premier logiciel indispensable au bon fonctionnement de l’ordinateur Chargé de la gestion globale de l’ordinateur notamment : utilisation de la mémoire vive utilisation de la mémoire auxiliaire dialogue avec l’utilisateur (i.e. les entrée/sorties) 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé MIP2 - Informatique ; Ph. Hunel

43 Système d’exploitation
Gestion de la mémoire vive aller chercher sur la mémoire auxiliaire le code (exécutable) et les données nécessaires à l’exécution d’un programme demandé par l ’utilisateur Gestion des entrées/sorties interprétation des frappes de touches au clavier et des mouvements ou cliques de la souris visualisation d’informations à l’écran 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

44 Système d’exploitation
utilisateur Application 1 Application 2 Système d’exploitation Matériel RAM, disque dur, disquette, CD-ROM, clavier, souris, écran, imprimante Le système d’exploitation est chargé en mémoire vive dès la mise sous tension de l ordinateur. Tout logiciel charge par la suite s’exécute et communique avec le reste du système informatique (ensemble des logiciels et du matériel nécessaires pour satisfaire les besoins informatiques des utilisateurs) en passant obligatoire ment par le système d’exploitation. 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé MIP2 - Informatique ; Ph. Hunel

45 Système d’exploitation
Les plus courants : système mono utilisateur MS-DOS pour PC Windows pour PC MAC-OS pour Macintosh système multi utilisateurs OS/2 pour PC (IBM) Windows NT pour PC UNIX Linux sur PC (gratuit) ; Solaris sur SUN ; AIX sur IBM 3 types d’ordinateurs: - PC=perso (plusieurs marques compatibles) - Mac=perso - Stations de travail=professionnel ! compatibilité Les SE les plus courants offrent une interface utilisateur plus conviviale à l’utilisateur. Cette interface est graphique et se compose d’un ensemble de fenêtres et d’icônes. 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé MIP2 - Informatique ; Ph. Hunel

46 Système d’exploitation
Permet aussi d’organiser (gérer) les informations sur la mémoire auxiliaire FICHIER (file): ensemble d’information manipulables par l’ordinateur ; nom unique dans un répertoire ; taille en octets REPERTOIRE : dossier ou directory ; regroupement de fichiers ; nom unique RACINE (root): dossier situé au plus haut niveau CHEMIN D’ACCES (path): liste des répertoires permettant d’atteindre un fichier à partir de la racine 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

47 Système d’exploitation
Disque dur Users Données personelles Appli divers mias101 mias120 images info Exercices windows 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

48 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
1.6 : Les applications Une application est un logiciel fournissant à l ’utilisateur un environnement (fonctionnalités) lui permettant de créer, modifier et/ou consulter des documents contenant des informations. 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

49 Applications et documents
Interface (menus, barres d’outils, …) Fonctions de gestion des documents (ouvrir, enregistrer, …) Fonctions d’édition (couper, copier, coller, …) Fonctions de recherche et remplacement Insertions d’images, objets … (incorporations…) Outils de mise en forme (polices de caractères, styles …) …. 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

50 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
Editeur de texte Logiciel permettant de créer des documents contenant du texte au codage ASCII (C'est une norme de codage de 128 caractères alphanumériques sur 7 bits. Les versions étendues sur 8 bits, 256 caractères sont adaptées suivant les pays.) . Outil du système d’exploitation (fichiers de configuration, notices, …) Bloc-Notes 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

51 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
Traitement de texte Logiciel permettant de créer des documents contenant du texte mis en forme : police et styles de caractères, style et alignement des paragraphes, organisation du texte (sections, hiérarchisation, en-tête et pied de page, table des matières …) etc... WordPad Word 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

52 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
Traitement d’image Logiciel permettant de créer des images définies sous forme de matrice de points de couleurs (Pixels). Inconvénient: ligne=escalier Paint 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

53 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
Dessin vectoriel A la différence d’une image définie point par point, un élément de dessin vectoriel se définit par sa forme, sa position et sa taille. Un dessin se compose de plusieurs formes (rectangles, cercles, traits, …) et chaque forme est modifiable. Pas l’inconvénient du transparent précedent Dessin 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

54 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
Tableur Logiciel permettant de créer des documents contenant des feuilles de calcul constituées de cellules, organisées en ligne x colonne, pouvant contenir des informations sous différents formats (texte, nombres, dates …) ou des formules de calcul. Contient des outils d’analyse de ces informations permettant une visualisation sous forme de courbes ou diagrammes divers. Excel 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

55 Système de Gestion de Bases de Données
Logiciel permettant de créer des documents contenant des tables d’articles hiérarchisées ou liées par des champs communs (relations). Ex: Généalogie. Listes d’étudiants, avec adresse, téléphone, niveau, … Contient des outils d’analyse des tables permettant d’en extraire des informations à l’aide de requêtes. Ex: Combien d’étudiants de la fac habitent à Sainte Rose et sont en Deug Mass Access 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

56 Applications multimédia
Logiciels permettant de reproduire ou de créer des sons, des animations, des vidéo, … 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

57 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
Navigateur Logciel permettant de visualiser des pages écrites en langage HTML et disponibles sur le réseau Internet. Netscape 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

58 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
Présentations Il existe aussi des logiciels de présentation permettant d’afficher une suite de pages à l’écran sous forme de diaporama. PowerPoint 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

59 Chapitre 2 : Algorithmique
2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé MIP2 - Informatique ; Ph. Hunel

60 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
2.1 - Introduction Matériel / Logiciel Domaine du logiciel (software) instructions expliquant à l’ordinateur comment traiter un problème algorithmes et représentation informatiques de ces instructions programme 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé MIP2 - Informatique ; Ph. Hunel

61 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
2.1 - Introduction Les programmeurs sont amenés à concevoir des logiciels de plus en plus complexes pour répondre aux besoins des utilisateurs (applications en réseau, base de données réparties, …) maîtriser le développement des logiciels est très important Des études ont montré que sur différents grands projets, les coûts de maintenance sont situés entre 45% et 75% du coût total du projet. Cette maintenance concerne aussi bien le mise en œuvre d’adaptation par rapports aux souhaits de l’utilisateur, que la correction de diverses erreurs de conception ou d’implémentation. 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé MIP2 - Informatique ; Ph. Hunel

62 2.2 - Algorithmes et programmes
Notion précise d’algorithme a été découverte en 825 par le mathématicien arabe Muhammmad ibn Musa al-Kharezmi Moyen d’automatisation et d’économie de la pensée Petit Larousse : suite d’opérations élémentaires constituant un schéma de calcul ou de résolution de problème. 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé MIP2 - Informatique ; Ph. Hunel

63 2.2 - Algorithmes et programmes
Pour nous : Un algorithme est une séquence précise et non ambiguë d’une suite d’étapes pouvant être exécutées de façon automatique par un ordinateur pour résoudre un problème Spécification du schéma de calcul sous forme d’une suite finie d’opérations élémentaires obéissant à un enchaînement déterminé. 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé MIP2 - Informatique ; Ph. Hunel

64 2.2 - Algorithmes et programmes
Informations en entrée Algorithme informatique = schéma de calcul Un algorithme est une suite finie de règles à appliquer dans un ordre déterminé à un nombre fini de données, pour arriver en un nombre fini d’étapes, à un certain résultat, et cela indépendamment des données. En informatique, un algo décrit une procédure de calcul qui, à partir d informations en entrée produit des informations en sortie. Un algo est décrit en français Informations en sortie 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé MIP2 - Informatique ; Ph. Hunel

65 2.2 - Algorithmes et programmes
codage d’un algorithme afin que l’ordinateur puisse exécuter les actions décrites doit être écrit dans un langage compréhensible par l’ordinateur  langage de programmation Un programme est donc une suite ordonnée d’instructions élémentaires codifiées dans un langage de programmation L ’exécution d ’un programme va consister à faire l ’ordinateur effectuer la suite d ’instructions demandées Un programme en cours d ’exécution est un processus 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé MIP2 - Informatique ; Ph. Hunel

66 2.3 - Langages de programmation
RAPPEL: Langage machine langage binaire ses opérations sont directement compréhensibles par l’ordinateur propre à chaque famille d’ordinateur Ecriture des premiers programme en langage machine A la conception d ’un ordinateur, est défini l ’ensemble des opérations élémentaires qu ’il peut réaliser. Ces opérations doivent être le plus simple possible pour diminuer la complexité des circuits électroniques. L ’ensemble des opérations élémentaires est appelé langage machine. 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé MIP2 - Informatique ; Ph. Hunel

67 2.4 - Importance des algorithmes
Pour mener à bien un traitement sur un ordinateur il faut : Concevoir un algorithme qui décrit comment le traitement doit être fait Exprimer l’algorithme sous la forme d’un programme dans un langage de programmation adéquat Faire en sorte que l’ordinateur exécute le programme : compilation A la conception d ’un ordinateur, est défini l ’ensemble des opérations élémentaires qu ’il peut réaliser. Ces opérations doivent être le plus simple possible pour diminuer la complexité des circuits électroniques. L ’ensemble des opérations élémentaires est appelé langage machine. 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé MIP2 - Informatique ; Ph. Hunel

68 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
Algorithme programmation Programme en langage évolué traduction Programme en langage machine Interprétation par l’Unité Centrale de traitement le traitement souhaité est réalisé 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé MIP2 - Informatique ; Ph. Hunel

69 2.4 - Importance des algorithmes
Quels sont les aspects et propriétés des algorithmes qu’il est nécessaire d’étudier ? La calculabilité des algorithmes (convergence de l’algorithme et existence de l’algo) la méthode existe t elle ? (contre exemple: Dieu existe t il ?) La complexité des algorithmes (nombre d’opérations nécessaires) L’efficacité des algorithmes (vitesse des algo: raisonnable)  TEMPS D'EXÉCUTION - MÉMOIRE OCCUPÉE  A la conception d ’un ordinateur, est défini l ’ensemble des opérations élémentaires qu ’il peut réaliser. Ces opérations doivent être le plus simple possible pour diminuer la complexité des circuits électroniques. L ’ensemble des opérations élémentaires est appelé langage machine. 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé MIP2 - Informatique ; Ph. Hunel

70 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
Exemple de complexité Complexité en n Complexité en 2n² Ordre de grandeur pour n grand N=> si n*10, temps *10 N²=> si n*10, temps *100 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

71 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
Efficacité Simuler une partie d’échec: Trop d’états à mettre en mémoire On choisit des choses non-optimales mais efficaces Voyageur de commerce Comment minimiser le trajet du voyageur de commerce allant de villes en villes Enoncé simple, mais solution très difficile si nombre de villes est grand (n! possibilités) N=5 =>120, n=15 => 1300 G 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

72 2.5 – Affinement des algorithmes
Un algorithme doit décrire précisément le traitement qu’il doit exécuter et s’assurer que tous les cas de figures possible ont bien été prévus. Exemple : algorithme permettant de calculer la durée d’un voyage à partir du tableau d’affichage des aéroports Consulter l’heure de départ Consulter l’heure d’arrivé Soustraire l’heure de départ de celle d’arrivée 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé MIP2 - Informatique ; Ph. Hunel

73 2.5 – Affinement des algorithmes
Problèmes : fuseaux horaires différents Si un point applique l’heure d’Été et pas l’autre Pour éviter de telles erreurs le concepteur doit suivre une démarche rigoureuse et méthodique : Affinement progressive de l’algorithme Démarche descendant, top down Technique du « diviser pour mieux régner » 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé MIP2 - Informatique ; Ph. Hunel

74 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
Examen: le Mardi 16/4/2002 Tout réviser le cours + 2 TD/TP La moitié des points : QCM (notation précisée sur le sujet) ¼: analyse et modifier un programme ¼: Créer un programme Documents autorisés Bibliographie: Cours d’informatique: langages et programmation. MASSON. Scholl-Fauvet-Lagnier-Maraninchi Initiation à l’informatique et aux structures de données Volume 1. DUNOD Courtin-Kowarski 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

75 2.5 – Affinement des algorithmes
Exemple : robot domestique avec un algorithme de préparation d’une tasse de café soluble Faire bouillir l’eau Mettre le café Ajouter l’eau dans les tasses 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé MIP2 - Informatique ; Ph. Hunel

76 2.5 – Affinement des algorithmes
1. faire bouillir l'eau peut être affinée en 1.1. remplir la bouilloire d'eau 1.2. brancher la bouilloire sur le secteur 1.3. attendre l'ébullition 1.4. débrancher la bouilloire 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé MIP2 - Informatique ; Ph. Hunel

77 2.5 – Affinement des algorithmes
2. mettre le café dans la tasse pourrait être affiné en 2.1. ouvrir le pot à café 2.2. prendre une cuiller à café 2.3. plonger la cuiller dans le pot 2.4. verser le contenu de la cuiller dans la tasse 2.5. fermer le pot à café 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé MIP2 - Informatique ; Ph. Hunel

78 2.5 – Affinement des algorithmes
3. ajouter de l'eau dans la tasse pourrait être affinée en 3.1. verser de l'eau dans la tasse jusqu'à ce que celle-ci soit pleine 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé MIP2 - Informatique ; Ph. Hunel

79 2.5 – Affinement des algorithmes
1.1. remplir la bouilloire d'eau peut nécessiter les affinements suivants: mettre la bouilloire sous le robinet ouvrir le robinet attendre que la bouilloire soit pleine fermer le robinet 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé MIP2 - Informatique ; Ph. Hunel

80 2.5 – Affinement des algorithmes
Affinement ne se fait pas dans le vide Savoir où s’arrêter Connaître les capacités du processeur Exemple : Brancher la bouilloire, activité interprétable Remplir la bouilloire, activité non interprétable  affinement 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé MIP2 - Informatique ; Ph. Hunel

81 2.5 – Affinement des algorithmes
Processeur informatique : ordinateur, capacités d’interprétation connues Le concepteur d’un algorithme doit donc affiner ce dernier jusqu’à ce que les étapes puissent être écrites à l’aide d’un langage de programmation 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé MIP2 - Informatique ; Ph. Hunel

82 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
2.1 – Ecrire un algorithme Calcul de l'intérêt et de la valeur acquise par une somme placée pendant un an L'énoncé du problème indique Les données fournies: deux nombres représentant les valeurs de la somme placée et du taux d'intérêt les résultats désirés: deux nombres représentant l'intérêt fourni par la somme placée ainsi que la valeur obtenue après placement d'un an. 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé MIP2 - Informatique ; Ph. Hunel

83 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
2.1 - Exemple Formalisation de l’algorithme:En français prendre connaissance de la somme initiale et du taux d'intérêt multiplier la somme par le taux; diviser ce produit par 100; le quotient obtenu est l'intérêt de la somme additionner ce montant et la somme initiale; cette somme est la valeur acquise afficher les valeurs de l'intérêt et de la valeur acquise. SI=somme initiale T=taux d’intérêt (ex: 3 pour 3%) I=intérets=S*T/100 SF=somme finale=S+I 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé MIP2 - Informatique ; Ph. Hunel

84 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
2.1 - Exemple Formalisation de l’algorithme En langage de description : pseudo code, LDA (Langage de Description Algorithmique) écrire " Introduisez la somme initiale (en francs): " Lire SI écrire " Introduisez le taux d'intérêt (ex: 3 pour 3%): " lire T T  SI* T / 100 SF  SI + I écrire " L'intérêt fourni est de " , I , "francs " écrire " La somme après un an sera de " , SF , "francs " 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé MIP2 - Informatique ; Ph. Hunel

85 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
Instructions les instructions de lecture lire variable les instructions d'écriture ecrire expression les instructions d'assignation variable  expression 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé MIP2 - Informatique ; Ph. Hunel

86 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
2.2 - Instructions Exemple (TP 1) Exprimer un nombre de secondes sous forme d'heures, minutes, secondes. La seule donnée est le nombre total de secondes que nous appellerons nsec ; les résultats consistent en 3 nombres : h, m, s 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé MIP2 - Informatique ; Ph. Hunel

87 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
2.2 - Instructions écrire " Introduisez le nombre de secondes" lire nsec s  nsec mod 60 m  (nsec \ 60) mod 60 h  nsec \ 3600 écrire nsec, "valent: ", h, "heure(s) ", m, "minute(s) et", s, "seconde(s)" 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé MIP2 - Informatique ; Ph. Hunel

88 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
2.3 - Déclaratives Il est aussi nécessaire de préciser ce que les variables utilisées contiendront comme type de données. Il peut s'agir de nombres entiers, de nombres réels, de chaînes de caractères, ... Il faut faire précéder la description de l'algorithme par une partie dite déclarative où l'on regroupe les caractéristiques des variables manipulées. 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

89 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
3.3 - Déclaratives La partie déclarative est placée (généralement) en tête de l'algorithme et regroupe une ou plusieurs indications de la forme: entier variables ou décimaux (réel) variables 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

90 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
3.3 - Déclaratives entier nsec, h, m, s écrire " Introduisez le nombre de secondes" lire nsec s  nsec mod 60 m  (nsec \ 60) mod 60 h  nsec \ 3600 écrire nsec, "valent: ", h, "heure(s) ", m, "minute(s) et", s, "seconde(s)" 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé MIP2 - Informatique ; Ph. Hunel

91 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
3.4 – Traduction en C #include <stdio.h> décrit les fonctions de lecture et affichage sur l’ecran int nsec, h, m, s; déclarations main(){ marque le début du programme principal printf("Introduisez le nombre en secondes : "); scanf("%d", &nsec); s=nsec % 60; m=nsec / 60 % 60; h=nsec / 3600; printf("%d secondes valent %d heures %d minutes et %d secondes\n",nsec,h,m,s); } marque la fin du programme principal 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé MIP2 - Informatique ; Ph. Hunel

92 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
3.4 – Traduction en C Un identificateur (nom de variable, fonction, …) en C doit débuter par une lettre suivie par un nombre quelconque de lettres, chiffres ou de "_" (caractère souligné). Les identificateurs ne peuvent contenir d'espacement (caractère "blanc") ou de caractères tels que %, ?, *, ., - ,... mais peuvent être aussi longs que l'on veut. 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

93 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
3.4 – Traduction en C Les variables doivent faire l'objet d'une déclaration de type de la forme: type liste_des_variables ; Des points-virgules sont obligatoires pour séparer les instructions Les instructions de lecture et d'écriture se traduisent respectivement par SCANF et PRINTF suivis d'une liste de variables ou d'expressions placées entre parenthèses et séparées par des virgules. 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

94 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
4.1 - Structures Il a été démontré que pour représenter n'importe quel algorithme, il faut disposer des trois possibilités suivantes: La structure de séquence qui indique que les opérations doivent être exécutées les unes après les autres la structure de répétition qui indique qu'un ensemble d'instructions doit être exécuté plusieurs fois. la structure de choix qui indique quel ensemble d'instructions doit être exécuté suivant les circonstances 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

95 4.2. La structure alternative
Exemple : 2 joueurs A et B Chacun montre un certain nombre de doigts (de 0 à 5) Si la somme des nombres de doigts montrés est paire, le premier joueur a gagné Sinon c'est le second. Le problème est de faire prendre la décision par l'ordinateur. 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

96 4.2. La structure alternative
En Français : prendre connaissance du nombre de doigts de A prendre connaissance du nombre de doigts de B calculer la somme de ces deux nombres si la somme est paire, A est le gagnant si la somme est impaire, B est le gagnant. Remarque: Pour déterminer si un nombre est pair ou impair, il suffit de calculer le reste de la division par 2 (.. modulo 2): il vaut 0 dans le premier cas et 1 dans le second. 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

97 4.2. La structure alternative
En LDA : entier na,nb,reste lire na,nb reste (na + nb) mod 2 si reste = 0 alors écrire "Le joueur A a gagné." sinon écrire "Le joueur B a gagné." fsi écrire « Fin du jeu » 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

98 4.2. La structure alternative
La structure alternative se présente en général sous la forme : si expression alors première séquence d'instructions sinon deuxième séquence d'instructions fsi 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

99 4.2. La structure alternative
où expression conditionne le choix d'un des deux ensembles d'instructions. Cette expression peut être soit vraie soit fausse Si l'expression est vraie, la première séquence d'instruction sera exécutée et la seconde sera ignorée; Si l'expression est fausse, seule la seconde séquence d'instructions sera effectuée. 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

100 4.2. La structure alternative
Le mot sinon indique où se termine la première séquence d'instructions et où commence la seconde. Le mot fsi (abrégé de "fin de si") indique où se termine la seconde séquence d'instructions. 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

101 4.2. La structure alternative
Dans certains cas, lorsque l'expression est fausse, aucune instruction ne doit être exécutée. La condition s'exprime alors plus simplement sous la forme: si expression alors séquence d'instructions fsi Quoi qu’il arrive, les instructions qui suivent fsi seront exécutées. Chacune des séquences d'instructions d'un si ... fsi peut contenir des si...fsi. On dit alors que les structures sont imbriquées. 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

102 4.2. La structure alternative
Prendre l’habitude de décaler et d’utiliser les fsi si expression1 alors si expression2 alors instruction1 sinon instruction2 Différent de … 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

103 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
Remarque En C, l’expression est un nombre 0 ou 1 Donc … 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

104 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
Expressions logiques p q p et q p ou q VRAI FAUX Pour avoir vrai: OU= l’un ou l’autre doit être vrai ET= l’un et l’autre doivent être vrai 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

105 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
Expressions logiques Il existe des thèorèmes : non (p et q) est équivalent à (non p) ou (non q) non (p ou q) est équivalent à (non p) et (non q) p non p VRAI FAUX 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

106 4.3 - Expressions logiques et variables booléennes
a  1; b  2; c  3 (b > 8) ou (c < 1) ? F ou F = F (b > 0) ou (c > 1) ? V ou V= V (b > 9) ou (c > 1) ? F ou V = V (b > a) et (c > b) ? V et V =V (b > a) et (c < 0) ? V et F = F non (c < a) ? Non(F)=V non ((b > a) et (c > b)) ? Non(V et V)=non(V)=F ((b > a) et (c > b)) ou (a < 0) ? (V et V)ou(F)=V ou F=V 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

107 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
Variables booléennes Variable ne pouvant contenir que deux types de valeur : VRAI ou FAUX Peuvent donc stocker le résultat de l’évaluation d’une expression logique Définition algorithmique : Booléen variable Définition C : il n’existe pas de type booléen Utilisation du type entier Int OK, pair ; égal à 0  FAUX ; différent de 0 (ou 1) VRAI LDA : Assignation : OK  VRAI 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

108 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
4.4. L'alternative en C si expression alors séquence d'instructions fsi if (expression) { séquence_d_instructions; } une instruction sinon if (expression) une_instruction; else { 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

109 4.4. L'alternative en C (optionel)
#include <stdio.h> int NA, NB, reste; main () { printf("Introduisez le nombre de doigts montrés par le joueur A : "); scanf("%d",&NA); printf("Introduisez le nombre de doigts montrés par le joueur B : "); scanf("%d",&NB); reste = (NA+NB) % 2; if (reste==0) printf("Le joueur A a gagné\n"); else printf("Le joueur B a gagné\n"); printf("Bravo pour le gangnant\n"); } 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

110 Expression logique en C
< > == != >= <= && || 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

111 Chapitre 5 : La structure répétitive
2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé MIP2 - Informatique ; Ph. Hunel

112 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
5.1 - Introduction L’utilisation d’un ordinateur s’impose lorsque des volumes importants de données sont manipulées Exemple 1: Chercher dans une liste de noms et d'adresses, l'adresse d'une personne à partir de son nom. Le nombre de fois qu'il faudra comparer le nom donné aux noms de la liste est dans ce cas inconnu Exemple 2 : Calculer la Nème puissance entière d'un nombre x par multiplications successives du nombre par lui-même. Ici, le nombre de répétition (N) de l'instruction de multiplication est connu. 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

113 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
5.3 - La boucle " pour faire" Lorsque le nombre d’itération est connu Exemple de la table de multiplication En LDA : pour var_de_crt  prem_val à dern_val faire séquence d'instructions fpour 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

114 5.3 - La boucle " pour faire" var_de_crt : est la variable de contrôle, qui est initialisée à prem_val La variable de contrôle est incrémenté automatiquement à chaque itération L’itération s’arrête lorsque : var_de_crt > dern_val Si prem_val > dern_val la séquence d’instructions n’est jamais exécutée La variable de contrôle doit être de type énuméré La valeur de la variable de contrôle ne doit pas être directement modifiée dans la séquence d’instructions 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

115 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
5.3 - La boucle " pour faire" Écrire l’algorithme qui affiche la table de multiplication de 6. entier n lire n Pour i  1 à 10 faire écrire n, « fois », i, « font », n*i fpour 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

116 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
5.1 - Introduction Exemple 3: afficher la table de multiplication à l’ancienne : 6 fois 1 font 6 6 fois 2 font 12 6 fois 10 font 60 Il serait plus judicieux de faire répéter la ligne d’affichage en faisant varier le multiplicande Pour chaque valeur de n variant de 1 à 10 exécuter : Ecrire « 6 fois », n, « font », 6*n 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

117 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
5.2 - La boucle " tant que " lire nom_donné lire nom1 si nom1 = nom_donné alors écrire adresse1 sinon lire nom2 si nom2 = nom_donné alors écrire adresse2 lire nom3 si nom3 = nom_donné alors ... 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

118 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
5.2 - La boucle " tant que " Fait répéter une séquence d’instructions aussi longtemps qu’une condition est VRAI En LDA : Tant que condition faire séquence d’instructions Ftq 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

119 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
5.2 - La boucle " tant que " Au moment du premier passage dans la boucle la condition est évaluée; si elle est vérifiée, la séquence d’instructions est exécutée A la fin de l’exécution de cette séquence d’instructions, la condition est de nouveau évaluée et on répète l’exécution de la séquence d’instructions tant que la condition est vérifiée. Dès que la condition devient fausse, l’exécution du programme se poursuit à partir de la 1ère instruction qui suit immédiatement le mot-clé ftq. 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

120 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
5.2 - La boucle " tant que " Remarques : Si au premier passage la condition est évaluée à FAUX, le corps de la boucle (la séquence d’instructions) n’est jamais exécuté Si la séquence d’instructions ne change pas la valeur de la condition, la séquence d’instructions sera exécutée sans que l’on passe jamais à la suite : on exécute une boucle infinie Les variables qui interviennent dans la condition doivent être initialiser avant d’aborder la boucle 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

121 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
5.2 - La boucle " tant que " Remarques : Il est préférable d'exprimer l'expression logique sous la forme NON(condition(s) d'arrêt). Il est en effet plus simple de déterminer les raisons d'arrêter le processus répétitif que celles de continuer. La forme de ce type de boucle devient donc : tant que NON condition(s) d'arrêt faire séquence d'instructions ftq 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

122 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
5.2 - La boucle " tant que " lire nom_donné i  1 lire nomi tant que NON ((nomi = nom_donné) ou (fin de liste)) faire i  i+1 ftq si nomi = nom_donné alors écrire adressei sinon écrire "Le nom demandé ne se trouve pas dans la liste." fsi 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

123 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
5.2 - La boucle " tant que " Écrire l’algorithme qui affiche la table de multiplication de 6. entier n lire n i  1 tant que i  10 faire écrire n, « fois », i, « font », n*i i  i+1 ftq tant que NON (i > 10) faire 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

124 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
5.2 - La boucle " tant que " Considérons aussi l'exemple suivant : étant donnés deux nombres entiers m et n positifs ou nuls, calculer le PGCD. L'algorithme d'Euclide permet de résoudre ce problème : en prenant d'abord le reste de la division de m par n, puis le reste de la division de n par ce premier reste, etc. jusqu'à ce qu'on trouve un reste nul. Le dernier diviseur utilisé est le PGCD de m et n. 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

125 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
5.2 - La boucle " tant que " Pour m=1386 et n=140, on a successivement : 1386 = 140 * 140 = 126 * 126 = 14 * 9 + 0 et le PGCD de 1386 et 140 est bien 14. Dans cet exemple, il faut répéter le calcul du reste de la division d'un nombre par un autre. Appelons a le dividende, b le diviseur et r le reste 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

126 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
5.2 - La boucle " tant que " entier m,n,a,b,r,PGCD Début lire m, n a  m b  n tant que NON(b = 0) faire r  a mod b a  b b  r ftq PGCD  a écrire "Le PGCD de",m,"et",n,"est",PGCD Fin 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

127 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
5.4 – Les boucles en C En C, la boucle tant que se traduit par WHILE ( <expression logique>) instruction; ou WHILE ( <expression logique>) { séquence d’instructions; } 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

128 Algorithme Euclide (PGCD)
Soit r le reste de la division euclidienne de a par b : a = bq + r , r < b. Tout diviseur commun de a et b divise aussi r = a - bq, et réciproquement tout diviseur commun de b et r divise aussi a = bq + r. Donc le calcul du PGCD de a et b se ramène à celui du PGCD de b et r ; et on peut recommencer sans craindre une boucle sans fin, car les restes successifs sont strictement décroissants. Le dernier reste non nul obtenu est le PGCD cherché. 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

129 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
5.4 – Les boucles en C #include <stdio.h> int m,n,a,b,r,PGCD; main(){ printf("Nous allons calculer le PGCD de 2 nombres\n"); printf("Introduisez le premier nombre : "); scanf("%d",&m); printf("Introduisez le second nombre : "); scanf("%d",&n); a=m; b=n; while (b!=0) { r=a % b; a=b; b=r; } PGCD=a; printf("Le PGCD de %d et %d est %d\n",m,n,PGCD); a=60 b=42 r=18 a=42 b=18 r=6 a=18 b=6 r=0 a=6 b=0 2x 6 18 6 6x3 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

130 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
5.4 – Les boucles en C En C, la boucle pour se traduit par for (exp_init ; exp_cond ; exp_evol) <instruction;> Ou for (exp_init ; exp_cond ; exp_evol) { <séquence d’instructions;> } 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

131 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
5.4 – Les boucles en C exp_init : est une instruction d'initialisation ; elle est exécutée avant l’entrée dans la boucle exp_cond : est la condition de continuation ; elle est testée à chaque passage, y compris lors du premier ; l’instruction ou les instructions composant le corps du for sont répétées tant que le résultat de l’expression exp_cond est VRAI exp_evol : Est une instruction de rebouclage ; elle fait avancer la boucle ; elle est exécutée en fin de boucle avant le nouveau test de passage. 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

132 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
5.4 – Les boucles en C #include <stdio.h> main(){ int i,n; printf("Quelle table souhaitez-vous afficher ? : "); scanf("%d",&n); for (i=1;i<=10;i++) printf("%d fois %d font %d\n",n,i,n*i); } ++ : opérateur d’incrémentation i++ i=i+1 -- : opérateur de décrémentation i-- i=i-1 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

133 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
5.4 – Les boucles en C #include <stdio.h> main() { int i; for (i=1;i<=5;i++) printf("%d : Ca monte\n",i); printf(" \n"); for (i=5;i>=1;i--) printf("%d : Ca descend\n",i); } 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

134 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
1 : ca monte 2 : ca monte 3 : ca monte 4 : ca monte 5 : ca monte : ca descend 4 : ca descend 3 : ca descend 2 : ca descend 1 : ca descend 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

135 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
5.4 – Les boucles en C Somme des 10 premiers entiers : comparaison entre l’utilisation et de la boucle « tant que » de la boucle « pour » somme = 0; i=0; while (i<10) { somme = somme + i; i = i + 1; } for (i=0;i<10;i++) 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

136 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
5.4 – Les boucles en C Le langage C propose également une autre forme de la boucle tant que qui permet d’exécuter au moins une fois le corps de la boucle : DO <instruction;> WHILE ( <expression logique>); ou DO { <séquence d’instructions;> } WHILE ( <expression logique>); 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

137 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
5.4 – Les boucles en C #include <stdio.h> main() { int i, somme, N; somme=0; printf("Entrez le nombre d'élément que vous voulez sommer : "); scanf("%d",&N); i=1; while (i<N) { somme = somme +i; i=i+1; } printf("Somme des %d premiers entiers est : %d\n",N,somme); } 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

138 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
5.4 – Les boucles en C #include <stdio.h> main() { int i, somme, N; somme=0; printf("Entrez le nombre d'élément que vous voulez sommer : "); scanf("%d",&N); i=1; do { somme = somme +i; i=i+1; } while (i<N); printf("Somme des %d premiers entiers est : %d\n",N,somme); } 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

139 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
4.5 - Le choix multiple Supposons que l'on veuille demander à l'utilisateur de choisir dans un menu une des 3 possibilités offertes. Le choix présenté ne se limite pas à une alternative (soit - soit). Mais plutôt à une expression du type « selon que… » 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

140 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
4.5 - Le choix multiple En LDA : entier i lire i selon que i=1 faire bloc1 ou que i=2 faire bloc2 ou que i=3 faire bloc3 autrement écrire "Mauvais choix" Fselon autrement est comme dans l’alternative facultative 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

141 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
4.5 - Le choix multiple Peut toujours s’écrire avec des alternatives : entier i lire i Si i=1 alors bloc1 sinon si i=2 alors bloc2 si i=3 alors bloc3 écrire "Mauvais choix" Fsi 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

142 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
4.6 - Le choix multiple en C La traduction du choix multiple en C est assez restrictive, puisque la valeur de l’expression conditionnant le choix doit être entière (char, short, int). L’instruction switch permet de mettre en place une structure d’exécution qui permet des choix multiples parmi des cas de même type et faisant intervenir uniquement des valeurs constantes entières. 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

143 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
4.6 - Le choix multiple en C Switch ( <expression entière> ) { case <constante entière>: <instruction 1> <instruction N> default : } ATTENTION : si la dernière instruction n’est pas l’instruction break les autres « case » ainsi que le « default » seront exécutés 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

144 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
4.6 - Le choix multiple en C #include <stdio.h> int i; main() { printf("Entrez votre choix : "); scanf("%d",&i); switch(i) { case 1:printf("premier choix\n"); break; case 2:printf("deuxième choix\n"); case 3:printf("troisième choix\n"); default:printf("Autre choix que choix 1, 2 ou 3\n"); } Entrez votre choix : 1 premier choix Entrez votre choix : 2 deuxième choix troisième choix Autre choix que choix 1, 2 ou 3 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

145 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
4.6 - Le choix multiple en C #include <stdio.h> int i; main() { printf("Entrez votre choix : "); scanf("%d",&i); switch(i) { case 1:printf("premier choix\n"); break; case 2:printf("deuxième choix\n"); case 3:printf("troisième choix\n"); default:printf("Autre choix que choix 1, 2 ou 3\n"); } 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

146 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
Transition Les variables utilisées jusqu’à présent sont parfois inadaptées au traitement à réaliser Difficulté d’en utiliser un nombre important Particulièrement lorsqu’il s’agit de valeurs de même type Exemples : relevés mensuels, statistiques journalières 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

147 Chapitre 6 : Les tableaux
2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé MIP2 - Informatique ; Ph. Hunel

148 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
6.1 - Introduction Imaginons que nous ayons plusieurs traitements à effectuer sur des consommations mensuelles d’accès à Internet (en nombre de minutes) Pour conserver les valeurs en mémoire, il est possible de prendre 12 variables numériques, cons_Internet1, cons_Internet2, …, cons_Internet12. Pour calculer la consommation mensuelle moyenne sur l’année, la formule suivante peut être écrite : Moyenne  (cons_Internet1 + cons_Internet2 + cons_Internet3 + cons_Internet4 + cons_Internet5 + cons_Internet6 + cons_Internet7 + cons_Internet8 + cons_Internet9 + cons_Internet10 + cons_Internet11 + cons_Internet12) / 12 Difficile à faire avec 365 consommations journalières… 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

149 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
6.1 - Introduction Imaginons que nous ayons à compter le nombre de fois, chacune des notes, de 0 à 20, a été attribuée à une population d’un grand nombre d’étudiants. L’algorithme pourrait être le suivant : Initialiser les 21 variables à 0 Lire n Tant que n  99 faire si n=0 alors note0  note0 + 1 si n=1 alors note1  note1 + 1 si n=20 alors note20  note20 + 1 Ecrire « donnez la note suivante ou 99 pour terminer » lire n Ftq 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

150 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
6.1 - Introduction Pour simplifier cet algorithme, il suffirait de pouvoir désigner directement la note qui correspond à la valeur de la variable n La structure de données tableau regroupe une famille de variables et permet de résoudre ce genre de problème 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

151 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
6.2 – Tableaux à un indice Un tableau (encore appelé table ou variable indicée) est un ensemble de données, qui sont toutes de même type, désigné par un identificateur unique (le nom du tableau), et qui se distinguent les une des autres par leur numéro d’indice Exemple : les températures sous abri à 15h00 des jours d’une semaine seront les 7 valeurs de la variable température, qui est un tableau de 7 éléments (variables) de type réel désigné par : Température[1], Température[2], …, Température[7], 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

152 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
6.2 – Tableaux à un indice Représentation graphique : température Nom du tableau 1 25 2 30 3 23 4 36 5 33 6 22 7 27 Cette case du tableau représente la variable Température[3] dont la valeur est 23 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

153 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
6.2 – Tableaux à un indice L’utilisation d’un indice variable présente le principal intérêt des tableaux Si la variable k entière a pour valeur 3, alors Température[k] = 23 Température[k+1] = 36 Température[k-1] = 30 Mais attention l’écriture de Température[-2] ou Température[12] n’ont pas de sens car elles font référence à des éléments inexistants 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

154 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
6.2 – Tableaux à un indice De même le calcul de la température moyenne de la semaine se fera de façon très simple : Entiers somme, k Réel moyenne somme  0 Pour k  1 à 7 faire somme  somme + Température[k] fpour moyenne  somme / 7 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

155 6.3 – Déclaration des tableaux
Comme tout objet un tableau doit être déclaré avant tout utilisation 3 éléments fondamentaux définissent un tableau à un indice : Son nom : identificateur respectant les règles classiques des identificateurs d’un programme Le nombre de ses éléments Le type de données qu’il contient Tableau de 7 entiers Température Tableau de [1..7] d’entiers Température 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

156 6.4 – Tableaux à plusieurs indices
1 2 j n 1 2 3 j n 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

157 6.5 - Les tableaux en C Exemple : Principe :
int a[13]; char b[8][5][10]; float d [6][15][9]; Principe : <type><identificateur>[taille1][taille2]…[taillek]; N’importe quelle référence à une case peut être utilisé comme une simple variable : int i,j,k; a[i] b[i][j][k] 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

158 6.5 - Les tableaux en C La taille correspond au nombre de cases du tableau Attention : les indices, permettant de localiser le contenu d’une case d’un tableau, varient entre 0 et taille-1 Il est possible d’affecter un tableau à un ensemble de valeurs dès sa déclaration par : <type><identificateur>[taille1][taille2]…={val1, val2, …}; Exemple : Int matrice[2][3]={1,2,3,4,5,6}  2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

159 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
Exemple de programme C #include <stdio.h> main(){ int i, somme, temperature[7]; float moyenne; for (i=0;i<7;i++){ printf("Temperature[%d]=",i); scanf("%d",&temperature[i]); } somme=0; for (i=0;i<7;i++) somme=somme+temperature[i]; moyenne=somme/7; printf("la température moyenne de la semaine est %f\n",moyenne); } 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

160 Chapitre 7 : Les sous-programmes
2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé MIP2 - Informatique ; Ph. Hunel

161 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
7.1 - Introduction Jusqu’ici nous avons étudié les algorithmes selon une approche simple : Un seul algorithme exprime une fonction qui à partir de données initiales produit un résultat Cas plus général : Le calcul d’une fonction est le résultat de plusieurs algorithmes disjoints À chaque algorithme va donc correspondre un programme L’exécution restera quand même séquentiel  un seul programme s’exécute et exécute l’une de ses instructions 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

162 Exemple simple d’appels de sous-programmes
#include <stdio.h> main(){ float X, Y; printf("Entrez la valeur : "); appel du sous-programme d’affichage scanf(‘’%f’’,&X); appel du sous-programme de lecture Y = cos(X); appel du sous-programme cos printf(" %f’’ ,Y); appel du sous-programme d’affichage } 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

163 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
Fonctionnement Un programme particulier (cosinus), le programme principal, lance successivement un ensemble de sous-programmes, chacun d’eux pouvant d’ailleurs lancer ses propres sous-programmes. Cela revient à suspendre l’exécution du programme en cours, autrement dit le processus du programme principal et à lancer le processus associé au sous-programme. 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

164 Fonctionnement Suspension du processus appelant Reprise du
courant Suspension du processus appelant Sous-programme appelé Nouveau processus courant Reprise du processus appelant Retour vers l’appelant 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

165 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
Intérêts Diviser pour mieux régner Méthode modulaire de conception utilisant le découpage d’un problème en sous-problèmes distincts Permet de réutiliser des programmes (sous-programmes) déjà développés et surtout validés 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

166 Problématique de l’usage des sous-programmes
Quel est le rôle du sous-programme qui est exécuté le premier ? Peut-on définir des variables communes à plusieurs sous-programmes et comment sont-elles définies et/ou modifiées ? Comment peut-on transmettre des informations spécifiques à un sous-programme lors de son lancement ? Comment un sous-programme peut renvoyer des informations au programme appelant ? 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

167 7.2 – Environnement d’un sous-programme
L’environnement d’un sous-programme est l’ensemble des variables accessibles et des valeurs disponibles dans ce sous-programme, en particulier celles issues du programme appelant. Trois sortes de variables sont accessibles dans le sous-programme : Les variables dites globales Les variables dites locales Les paramètres formels 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

168 7.2 – Environnement d’un sous-programme
Les variables dites globales : Celles définies dans le programme appelant et considérées comme disponibles dans le sous-programme Elles peuvent donc être référencées partout dans le programme appelant et dans le sous-programme appelé Leur portée est globale 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

169 7.2 – Environnement d’un sous-programme
Les variables dites locales Celles définie dans le corps du sous-programme, utiles pour son exécution propre et accessibles seulement dans ce sous-programme Elles sont donc invisibles pour le programme appelant Leur portée est locale 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

170 7.2 – Environnement d’un sous-programme
Les paramètres formels Les variables identifiées dans le sous-programme qui servent à l’échange d’information entre les programmes appelant et appelé Leur portée est également locale. 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

171 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
7.3 – Les procédures Il s’agit de sous-programmes nommés qui représentent une ou plusieurs actions, et qui peuvent calculer et retourner une ou plusieurs valeurs. Une procédure « P » doit être définie une seule fois dans un algorithme « A » et peut être appelée plusieurs fois par « A » ou par une autre procédure de « A ». 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

172 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
7.3 – Les procédures Procédure Entrées Sorties 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

173 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
7.3 – Les procédures La définition d’une procédure comprend trois parties: Partie 1 : L’entête Procédure Nom_procédure (Liste de paramètres formels); Partie 2 : Déclaration des variables locales type_variable_i Nom_variable_i Partie 3 : Corps de la procédure Début Instructions Fin 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

174 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
7.3 – Les procédures Exemple : Calcul de la somme de deux matrices carrées A et B. Pour calculer la somme de deux matrices il faut lire d’abord ces deux matrices. Ainsi, au lieu d’écrire deux fois le sous-programme de lecture d’une matrice, il est possible d’écrire plutôt une procédure et de l’utiliser pour saisir A et B. 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

175 7.3.1 - Paramètres formels & paramètres effectifs
Dans la déclaration de la procédure « Saisir », Les paramètres « X » et « dim » sont appelés paramètres formels dans la mesure où ils ne possèdent pas encore de valeurs. Lors de l’utilisation de la procédure dans l’algorithme principal, « A », « B » et « n » sont des paramètres effectifs (ou réels). Remarque importante: Dans une procédure, le nombre de paramètres formels est exactement égal au nombre paramètres effectifs. De même à chaque paramètre formel doit correspondre un paramètre effectif de même type. 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

176 7.3.2 - Passage des paramètres
Lors de la définition d’une procédure il est possible de choisir entre trois modes de transmission de paramètres: Mode donnée (En C on parle de Passage par valeur) Mode Résultat (En C on parle de Passage par adresse). Mode Donnée/Résultat (En C on parle de Passage par adresse): 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

177 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
– Mode données Rappel Déclarer une variable de nom X Þ Réserver un emplacement mémoire pour X Lors de l’appel d’une procédure un emplacement mémoire est réservé pour chaque paramètre formel. De même, un emplacement mémoire est aussi réservé pour chaque paramètre effectif lors de sa déclaration. Cependant, lors de l’appel de la procédure, les valeurs des paramètres effectifs sont copiées dans les paramètres formels. 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

178 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
– Mode données L’exécution des instructions de la procédure se fait avec les valeurs des paramètres formels et toute modification de ces derniers ne peut affecter en aucun cas celles des paramètres effectifs. C’est le cas : dans la procédure « Saisir » du paramètre « dim » dans la procédure « Afficher » des paramètres « Y » et « dim » Dans ce type de passage de paramètres, les valeurs des paramètres effectifs sont connues avant le début de l’exécution de la procédure et jouent le rôle uniquement d’entrées de la procédure. 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

179 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
– Mode données En C, en principe il n’existe que des fonctions. Une fonction qui ne retourne aucun résultat (type void) peut traduire la notion de procédure. Procédure Afficher(Données Y:Matrice, Données n:entier) Se traduit en C par : void Afficher(Matrice Y, int n); Il y a eu initialisation des paramètres formels par des valeurs lors de l’appel de la procédure 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

180 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
– Mode données Procédure carrés(Données X,Y :entiers) Entiers A,B Début A  X B  Y A  AA B  BB Fin Entiers M1,M2 Début Lire M1, M2 carrés(M1,M2) écrire « M1= »,M1, « M2= »,M2 Fin 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

181 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
– Mode données Procédure carrés_bis(Données X,Y :entiers) Début X  XX Y  YY écrire « X= »,X, « Y= »,Y Fin Entiers M1,M2 Début Lire M1, M2 carrés_bis(M1,M2) écrire « M1= »,M1, « M2= »,M2 Fin 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

182 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
– Mode résultats Passage par adresse, par variable La différence principale entre le passage par valeur et le passage par adresse c’est que dans ce dernier un seul emplacement mémoire est réservé pour le paramètre formel et le paramètre effectif correspondant. Dans ce cas chaque paramètre formel de la procédure utilise directement l’emplacement mémoire du paramètre effectif correspondant. Toute modification du paramètre formel entraîne la même modification du paramètre effectif correspondant. 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

183 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
– Mode résultats Dans ce mode de passage de paramètres, les valeurs des paramètres effectifs sont inconnues au début de l’exécution de la procédure. Un paramètre formel utilisant ce type de passage ne peut être que le résultat de la procédure. D’où le nom du mode « Résultat ». Pour spécifier dans une procédure qu’il s’agit du mode « Résultat », il suffit d’ajouter dans l’algorithme la mention « Résultat » avant le paramètre formel Dans le programme Pascal il faut faire précéder le paramètre du mot clé « Var » 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

184 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
– Mode résultats Procédure Somme(Données D,F:entier, Résultat R:entier) Se traduit en C par : void Somme(int D, int F, int *R); Contrairement au passage par valeur, dans ce cas à l’appel de la procédure les valeurs des paramètres effectifs ne sont pas copiées dans les paramètres formels. Ces derniers utilisent directement l’emplacement mémoire (ou l’adresse) des paramètres effectifs. 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

185 Représentation mémoire
Sens de transmission des données A[1] A[2] A[3] ………… X[1] X[2] X[3] 15 8 2 ………… 15 8 2 Passage par valeur ……… X[1] A[1] X[2] A[2] X[3] A[3] ……… 15 8 2 Passage par adresse 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

186 7.3.2.3 – Mode Données/Résultats
Passage par adresse, par référence Les paramètres formels jouent simultanément le rôle de donnée (i.e. d’entrée) et de résultat (sortie) de la procédure: d’où l’appellation « Donnée/Résultat ». A l’appel de la procédure, les valeurs des paramètres effectifs sont connues au début de l’exécution de la procédure mais elles seront modifiées à la fin de cette exécution: d’ou la seconde appellation « Donnée Modifiée ». 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

187 7.3.2.3 – Mode Données/Résultats
Ces deux derniers modes (i.e. Résultat et Donnée Modifiée) se distinguent uniquement au niveau de l’algorithme. En C ces deux derniers modes sont exactement identiques : il s’agit dans les deux cas de passage par adresse. 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

188 7.3.2.3 – Mode Données/Résultats
On obtient donc la même représentation mémoire que pour le mode « Résultat » : ……… X[1] A[1] X[2] A[2] X[3] A[3] ……… 15 8 2 Passage par adresse 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

189 7.3.2.3 – Mode Données/Résultats
Pour spécifier dans une procédure qu’il s’agit du mode Donnée/Résultat (ou donnée modifiée), il suffit d’ajouter dans l’algorithme la mention « Donnée/Résultat » ou « Donnée Modifiée » devant le paramètre formel Dans le programme C le paramètre formel doit être un pointeur 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

190 7.3.2.3 – Mode Données/Résultats
Exemple : Algorithme d’une procédure permettant de remplacer par 0 toutes les valeurs inférieures à 10 des matrices. La matrice qu’il faut fournir à cette procédure doit être une donnée ( i.e. qui contient déjà des valeurs). Le résultat de cette procédure c’est cette même matrice modifiée. Ainsi, dans ce cas le mode que l’on doit utiliser est « Donnée/Résultat » (ou Donnée modifiée). 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

191 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
Procédure Remplacer (Donnée Modifiée M:Matrices;Donnée dim: entier); entiers i, j Début Pour i1 à dim faire Pour j 1 à dim faire Si M[i, j]<10 alors M[i, j]  0 Fsi Fpour Fin; 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

192 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
7.4 – Les fonctions Une fonction est un sous-programme qui calcule, à partir de paramètres éventuels, une valeur d’un certain type utilisable dans une expression du programme appelant. Les langages de programmation proposent de nombreuses fonctions prédéfinies : partie entière d’un nombre, racine carrée, fonctions trigonométriques, etc. 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

193 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
7.4 – Les fonctions Les fonctions sont comparables aux procédures à deux exceptions près : Leur appel ne constitue pas à lui seul une instruction, mais figure dans une expression ; Leur exécution produit un résultat qui prend la place de la fonction lors de l’évaluation de l’expression. 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

194 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
7.4 – Les fonctions La définition d’une fonction comprend aussi trois parties: Partie 1 : L’entête Fonction Nom_fonction(Liste de paramètres formels): Type_fonction Partie 2 : Déclaration des variables locales type_variable_i Nom_variable_i Partie 3 : Corps de la fonction Début Instructions Retour valeur retournée Fin 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

195 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
7.4 – Les fonctions Il s’agit donc de sous-programmes nommés et typés qui calculent et retournent une et une seule valeur. Le type de cette valeur est celui de la fonction. Fonction Sortie Entrées 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

196 7.4.1 - Passage des paramètres
Lors de la définition d’une fonction il ne doit, normalement, être utilisé qu’un seul mode de transmission de paramètres : Mode donnée (En C on parle de Passage par valeur) Cependant les langages de programmation permettent d’utiliser les autres modes. 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

197 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
7.4.2 – Fonction : exemple Fonction permettant de calculer ex pour x donnée avec une précision 10-3 et sachant que : 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

198 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
Constante utilisée E=0.001 Variables Réel x fonction expo(Donnée x: réel): réel Entier i réel f, ex Début f 1 ex 1 i 1 Tant que f  E faire f  f  ( x / i ) ex  ex + f i  i + 1 ftq Retour ex; Fin 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

199 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
Algorithme principal Début Écrire « Donner la valeur de x: » Lire x Écrire  « L’exponentielle de x= », x, « est : », expo(x) Fin 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

200 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
7.4.3 – Traduction en C #include <stdio.h> #define E 0.001 float expo(float x) { int i; float f,ex; f=1; ex=1; i=1; while (f>=E) { f=f*(x/i); ex=ex+f; i++; } return ex; #define E 0.001 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

201 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
7.4.3 – Traduction en C /*Programme principal */ main() { float x; printf("Donner la valeur de x : "); scanf("%f",&x); printf("L'exponentiel de x=%f est %f\n",x,expo(x)); } 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

202 7.5 – Fonctions récursives
Expression d’algorithme sous forme récursive : définition plus concise Démonstration par récurrence Principe : Utiliser pour décrire l’algorithme sur une donnée d, l’algorithme lui même appliqué à un sous-ensemble de d ou une donnée d’ plus petite Une fonction récursive possède donc la propriété de s’appeler elle-même dans sa définition Permet de coder des fonctions définies à partir de relations de récurrence 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

203 7.5 – Fonctions récursives
Exemple calcul du factoriel d’un nombre entier : 1ère définition : n! = 1 * 2 * 3 * 4 * … * n Traduction par une boucle : Je vous écoute 2ème définition : n! 1 si n=0 n * (n-1)! 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

204 7.5 – Fonctions récursives
fonction factoriel(Donnée n: entier): entier Entier fac Début si n = 0 alors fac  1 sinon fac  n * factoriel(n-1) fsi Retour fac; Fin 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

205 7.5 – Fonctions récursives
Dérouler cet algorithme pour : factoriel(5) Factoriel(5) Factoriel(4) Factoriel(3) Factoriel(2) . Factoriel(1) - Factoriel(0) 5 * 24 = 4 * 6 = 24 3 * 2 = 6 2 * 1 = 2 1 * 1 = 1 1 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

206 Chapitre 8 : Les algorithmes de tri
2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé MIP2 - Informatique ; Ph. Hunel

207 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
8.1 - Introduction Un tableau T est dit « trié en ordre croissant » si tous les éléments consécutifs du tableau vérifient : T[i-1]  T[i] Il est admis qu’un tableau vide est trié tableau ne contenant qu’un seul élément est trié 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

208 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
8.1 - Introduction D’où la définition : Un tableau vide (n=0) est ordonné (trié), Un tableau contenant un seul élément (n=1) est ordonné, Un tableau T[1..n], n>1, est ordonné si  i  [2..n], T[i-1]  T[i] 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

209 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
8.1 - Introduction Tri d’un tableau Soit un vecteur (tableau à une dimension) T[1..n] à valeurs dans un ensemble E de valeurs muni d’une relation d’ordre notée < Trier le vecteur T consiste à construire un vecteur T‘[1..n] tel que : T‘ soit trié, T‘ et T contiennent les mêmes éléments. Le plus souvent T et T‘ sont le même vecteur ; T‘ est construit en permutant entre eux les éléments de T . 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

210 8.2 – Tri par remplacement Cette méthode simple et intuitive est malheureusement très peu performante. Elle consiste à construire un tableau Ttrié[1..n] à partir de T[1..n] tel que : Ttrié[i-1]  Ttrié[i] ,  i  [2..n] Principe : Identifier le maximum du tableau Rechercher le minimum du tableau T Recopier ce minimum dans Ttrié à la position i Remplacer le minimum du tableau T par le maximum Recommencer pour i+1 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

211 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
8.2 – Tri par remplacement Procédure tri_remplacement (D/R T[1..n], R Ttrié[1..n] : tableau de …) Entier i,j E max Début max  maximum(T[1..n]) i  1 tant que i<n faire j  indice_min(T[1.n]) Ttrié[i]  T[j] T[j]  max i  i+1 ftq Ttrié[n]  max Fin Fonction maximum( D T[1..n] : tableau de …):E Entier i E max Début max  T[1] Pour i  2 à n faire si T[i]>max alors max  T[i] fsi fpour Retour max Fin 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

212 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
8.2 – Tri par remplacement Pour chaque élément rangé dans le tableau Ttrié, il faut parcourir tout le tableau T et non une partie du tableau T Nécessite un 2ème tableau, or si le nombre d’éléments à trier est important, cet algorithme requiert donc un espace mémoire double. 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

213 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
8.3 - Tri par insertion Cette méthode de tri insère (au ième passage) le ième élément T[i] à la bonne place parmi T[1],T[2]...T[i-1]. Après l'étape i, tous les éléments entre la première et la ième position sont triés. Il existe plusieurs méthode de tri par insertion selon le principe qui est utilisé pour rechercher le rang de l’élément à insérer parmi les éléments du début de la liste déjà triés 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

214 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
8.3 - Tri par insertion Rang de T[i] 1 temp k i Principe de l’algorithme : pour i  2 à n faire déplacer T[i] vers le début du tableau jusqu'à la position j<=i telle que T[j] < T[k] pour j<=k<i et (ou bien T[j]>=T[j-1] ou bien j=1). 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

215 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
8.3 - Tri par insertion 4 2 5 3 Vecteur de départ Les cellules 1 à 2 sont triées Les cellules 1 à 3 sont triées Les cellules 1 à 4 sont triées Les cellules 1 à 5 sont triées 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

216 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
8.3 - Tri par insertion Procédure tri_insertion (D/R T[1..n], : tableau de …) Entier i,j Début pour i 2 à n faire j  i-1 tant que j  1 et T[j] > T[j+1] faire échange(T,,j+1,,j) j  j-1 ftq fpour Fin Exemple visuel 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

217 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
8.4 – Tri par sélection Le principe du tri par sélection d'un vecteur est d'aller chercher le plus petit élément du vecteur pour le mettre en premier, puis de repartir du second, d'aller chercher le plus petit élément pour le mettre en second etc. Au ième passage, on sélectionne l’élément ayant la plus petite valeur parmi les positions i..n et on l'échange avec T[i]. 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

218 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
8.4 – Tri par sélection 4 2 5 3 Vecteur de départ Le plus petit élément est à sa place Les 2 plus petits éléments sont à leur place Les 3 plus petits éléments sont à leur place Les 4 plus petits éléments sont à leur place 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

219 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
8.4 – Tri par sélection Procédure tri_sélection (D/R T[1..n], : tableau de …) Entier i,j Début pour i 1 à n faire pour j i+1 à n faire si T[i] > T[j] alors échange(T,i,j) fsi fpour Fin Exemple visuel 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

220 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
8.5 – Tri à bulles Le principe du tri à bulles (bubble sort) est de comparer deux à deux les éléments e1 et e2 consécutifs d'un tableau et d'effecteur une permutation si e1 > e2 . On continue de trier jusqu'à ce qu'il n'y ait plus de permutation. 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

221 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
8.5 – Tri à bulles 4 2 5 3 Vecteur de départ Fin du premier passage Fin du deuxième et dernier passage 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

222 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
8.5 – Tri à bulles Procédure tri_bulles (D/R T[1..n], : tableau de …) Entier i,j Début pour i 1 à n-1 faire pour j n à i+1 faire {décroissant} si T[j-1] > T[j] alors échange(T,j-1,j) fsi fpour Fin 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

223 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
8.5 – Tri à bulles Évaluation du coût de l’algorithme Les comparaisons sont effectuées à l’intérieur de la boucle la plus interne Pour i=1, n-1 comparaisons sont effectuées Pour i=2, n-2 comparaisons sont effectuées … … … … Pour i=n-1, 1 comparaison est effectuée Le nombre total de comparaisons effectuées est donc : 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

224 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
8.5 – Tri à bulles Optimisation de l’algorithme Après avoir traité i-1 éléments (1  i  n) Les éléments de 1..i-1 sont triés Tous les éléments compris entre 1..i-1 sont inférieurs aux éléments compris entre i..n T[1..i-1]  T[i..n] Les éléments compris entre i..n ne sont pas traités Si les éléments compris entre i..n sont triés à la suite des permutations effectuées, il est inutile de poursuivre car : T[1..i-1] trié ; T[1..i-1]  T[i..n] ; T[i..n] trié  T[1..n] trié Exemple de BATEAUX 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

225 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
Procédure tri_bulles2 (D/R T[1..n], : tableau de …) Entier i,j Booléen onapermuté Début i 1 onapermuté  VRAI Tant que onapermuté faire onapermuté  FAUX pour j n à i+1 faire {décroissant} si T[j-1] > T[j] alors échange(T,j-1,j) fsi fpour i i+1 ftq Fin 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

226 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
PRODECURE Tri_bulle (D/R T[1..n], : tableau de …) Booleen permut Début REPETER permut  FAUX POUR i  1 à N-1 FAIRE SI T[i] > T[i+1] ALORS échange(T,i,i+1) permut  VRAI FSi Fpour Jusqu’à permut = FAUX FIN Exemple visuel 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

227 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
8.6 – Tri indirect Ce tri utilise un tableau auxiliaire qui indique, pour chaque élément du tableau à trier, le rang que celui-ci devrait occuper dans le tableau trié. Le principe consiste à compter, pour chaque élément du tableau à trier, le nombre d’éléments qui lui sont inférieurs ou égaux. Le nombre trouvé donnera la place (l’indice) de cet élément dans le tableau trié Le tri se fait donc ensuite par l'intermédiaire de cet index 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

228 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
8.6 – Tri indirect Procédure tri_indirect (D/R T[1..n], : tableau de …) Entier i Tableau d’entier ind Début pour i 1 à n faire ind[i]  1 fpour COMPTAGE DES ELEMENTS Ttrié[ind[i]]  T[i] Fin 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

229 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
8.6 – Tri indirect COMPTAGE DES ELEMENTS pour i 1 à n-1 faire pour k 1 à n faire si T[k] < T[i] alors ind[i]  ind[i] + 1 fsi fpour Exemple visuel 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

230 8.6 – Tri indirect AMELIORATION DU COMPTAGE DES ELEMENTS
pour i 1 à n-1 faire pour k i+1 à n faire si T[i] < T[k] alors ind[i]  ind[i] + 1 sinon ind[k]  ind[k] + 1 fsi fpour 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

231 Chapitre 9 : Les algorithmes de recherche
2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé MIP2 - Informatique ; Ph. Hunel

232 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
9.1 - Introduction Le but de des algorithmes de recherche est de trouver un élément donné parmi une liste d’éléments fourni par un vecteur. 9.2 – Recherche séquentielle dans un tableau non trié On sait faire Parcourir le tableau jusqu’à ce qu’on trouve l’élément recherché ou qu’on ait atteint la fin du tableau Dans le pire des cas nécessitera n comparaisons (n étant le nombre d’éléments du tableau) Cas où l’élément recherché n’appartient pas au tableau 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

233 9.3 – Recherche séquentielle dans un tableau trié
On sait faire Parcourir le tableau jusqu’à ce qu’on trouve l’élément recherché ou un élément supérieur à l’élément recherché ou encore qu’on ait atteint la fin du tableau Dans le pire des cas nécessitera n comparaisons (n étant le nombre d’éléments du tableau) Cas où l’élément recherché est plus grand que le dernier élément du tableau (i.e élément d’indice n) Amélioration possible : Regarder si l’élément recherché n’est pas plus grand que le dernier élément du tableau Mais le problème demeure si l’élément recherché est le dernier élément du tableau 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

234 9.4 – Recherche dichotomique dans un tableau trié
Existe-t-il un algorithme plus efficace (en nombre de comparaisons) qui permettrait de rechercher l’existence d’un élément donné dans un tableau trié? 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

235 9.4 – Recherche dichotomique dans un tableau trié
Supposons un tableau T[1..n] trié  i  [2..n], T[i-1]  T[i] Partitionnons le tableau T en 3 sous-tableaux T[1..m-1], T[m], T[m+1..n] En comparant l’élément recherché à T[m], s’il n’y a pas égalité, il est possible de dire à quel sous-tableau appartient l’élément recherché : À T[1..m-1] si l’élément recherché < T[m], À T[m+1..n] si l’élément recherché > T[m], On se retrouve alors dans le cas précédent mais avec les sous-tableaux T[1..m-1] ou T[m+1..n] 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

236 9.4 – Recherche dichotomique dans un tableau trié
Donc : Soit il a été trouvé un indice m tel que Élément recherché = T[m] et l’algorithme est terminé Soit il a été trouvé en un nombre fini d’itération un sous-tableau vide et dans ce cas Élément recherché  T[1..n] 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

237 9.4 – Recherche dichotomique dans un tableau trié
Il faut maintenant déterminer les sous-tableaux T1, T2, T3, …,Tk tel que chaque sous-tableau Ti soit de taille (nombre d’éléments) strictement inférieure à la taille du sous-tableau précédent Ti-1. Remarque : Si pour T1, T2, T3, …,Tk , on choisit T[1..n], T[2..n], T[3..n], …, T[k..n], on se ramène à la recherche séquentiel précédente. Généralement l’indice m est choisit de telle sorte que la taille de T[1..m-1] et T[m+1..n] soit la même à un élément près. 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

238 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
fonction dichoto (D T[1..n], : tableau de …; D elem_rech: …): booléen Entier inf, sup, m Booléen trouvé Début inf  1 sup  n trouvé  FAUX Tant que inf  sup et non trouvé faire m  (inf + sup) div 2 si T[m] = elem_rech alors trouvé  VRAI sinon si T[m] < elem_rech alors inf  m+1 sinon sup  m-1 fsi fsi ftq retour(trouvé) Fin 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

239 9.4 – Recherche dichotomique dans un tableau trié
Coût de l’algorithme : La taille des tableaux de la suite T1, T2, T3, …,Tk est divisé par 2 à chaque itération : n, n/2, …, n/2k-1 On aura donc la partie entière de log2(n) sous-tableaux non vides 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

240 Chapitre 10 : Types évolués
2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

241 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
10.1 – Les structures Les tableaux sont des paquets de données de même type. Les structures sont des ensembles de données non homogènes. Les données peuvent avoir des types différents. Les structures sont déclarées ou définies selon le modèle : 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

242 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
10.1 – Les structures Les structures sont déclarées ou définies selon le modèle : struct nom_de_structure_facultatif { la liste des données contenues dans la structure } la liste des variables construites selon ce modèle. 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

243 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
10.1 – Les structures Exemple : Struct etd { char nom[20]; char prenom[20]; float note_info; float note_phi; float moyenne; } anriolle; 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

244 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
10.1 – Les structures etd est un nom de modèle de structure anriolle est un objet de type struct etd. Les différentes parties de la structure anriolle sont accessibles par : anriolle.nom anriolle.prenom anriolle.note_info anriolle.note_phi anriolle.moyenne 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

245 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
10.2 – Les unions Les unions permettent l'utilisation d'un même espace mémoire par des données de types différents à des moments différents. Syntaxe de la définition d'une union Union nom_union { type1 nom_champ1; type2 nom_champ2; typeN nom_champN; } variables; 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

246 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
10.2 – Les unions Exemple : union zone { int entier; float flottant; } z1; Utilisation z1.entier = 1; z1.flottant = 2.5; 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé

247 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé
Fin 2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé


Télécharger ppt "DEUG MIAS-MASS 1ère année - Ph. Hunel - JN Provost - V Pagé"

Présentations similaires


Annonces Google