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

IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation Programme, Objets et Algorithmique élémentaire.

Présentations similaires


Présentation au sujet: "IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation Programme, Objets et Algorithmique élémentaire."— Transcription de la présentation:

1 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation Programme, Objets et Algorithmique élémentaire

2 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 2 But du cours Concepts de bases de la Conception ( Orientée Objet ) de programmes informatiques

3 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 3 Plan du cours Vous avez dit « Programme » ? Données Traitements : Algorithmique

4 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 4 Chapitre I Vous avez dit « Programme » ? définition la machine nature des programmes

5 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 5 AlgorithmiqueDonnéesProgramme définition la machine nature des programmes Suite de manipulations prédéfinies de données pouvant entre autre communiquer avec divers acteurs extérieurs (utilisateur, capteurs, périphériques, …) Instructions, codeObjets informatiques Flots de communication, pilotes,...

6 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 6 Ecran ou console Clavier Unité centrale toto titi tutu Souris AlgorithmiqueDonnéesProgramme définition la machine nature des programmes

7 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 7 Mémoire centrale Carte mère Micro-processeur Carte vidéo Mémoire de masse : disque dur lecteur de disquettes lecteur de CD-ROM AlgorithmiqueDonnéesProgramme définition la machine nature des programmes Cf. cours Architecture

8 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 8 Mémoire de masse Disque dur Stockage hiérarchique de fichiers +grande capacité (2 Go à qq. To) +mémorisation persistante sans alimentation -lenteur d’accès (qq. ms) =>utilisation en mémoire de stockage AlgorithmiqueDonnéesProgramme définition la machine nature des programmes Cf. cours Architecture

9 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 9 Mémoire centrale Stockage d’informations binaires +assez grande rapidité d’accès (60 ns / 10 ns) -capacité assez limitée (16 Mo à qq. Go) -mémorisation nécessitant l’alimentation =>utilisation en mémoire de travail AlgorithmiqueDonnéesProgramme définition la machine nature des programmes Cf. cours Architecture

10 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 10 Micro-processeur Centre de calcul et de décision : très faible capacité mémoire disponible très grande rapidité de traitement connecté indirectement via la carte mère aux divers organes AlgorithmiqueDonnéesProgramme définition la machine nature des programmes Cf. cours Architecture

11 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 11 instructions et données en mémoire centrale binaires instructions chargées et exécutées une à une par le processeur AlgorithmiqueDonnéesProgramme définition la machine nature des programmes Programme en cours d’exécution Cf. cours Architecture & programmation

12 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 12 chargeur assez semblable au programme exécuté instructions et données binaires stocké sur mémoire de masse non exécuté par le processeur chargeable en mémoire centrale pour exécution AlgorithmiqueDonnéesProgramme définition la machine nature des programmes Programme binaire ou exécutable

13 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 13 Instructions binaires : peu compréhensibles par le programmeur 001101101...0110 ? dépendent du processeur AlgorithmiqueDonnéesProgramme définition la machine nature des programmes Langages de programmation : langages symboliques d’écriture de programmes plus « parlant » plus portable, indépendant du processeur ex : Cobol, Fortran, Basic, C, C++,...

14 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 14 fichier texte écrit dans un langage symbolique doit être traduit et exécuté directementpar un interprèteur ou traduit en programme exécutable par un programme spécialisé ( assembleur / compilateur ) AlgorithmiqueDonnéesProgramme définition la machine nature des programmes Programme source

15 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 15 AlgorithmiqueDonnéesProgramme définition la machine nature des programmes prg source Editeur de texte prg source Compilateur / assembleur 1. Création ou modification du source 2. Compilation ou assemblage prg exécutable Développement en langage compilé ou assemblé Clavier

16 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 16 AlgorithmiqueDonnéesProgramme définition la machine nature des programmes prg chargé, en cours d’exécution 3. Chargement et exécution prg exécutable Chargeur

17 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 17 AlgorithmiqueDonnéesProgramme définition la machine nature des programmes prg source 1. Création ou modification du source 2. Exécution interprétée Editeur de texte Interprèteur Développement en langage interprété Clavier

18 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 18 AlgorithmiqueProgrammeDonnées En Résumé : Programme données + traitements Développements en langages symboliques maniement de concepts programmatiques plus abstraits que les simples aptitudes du micro-processeur (données et instructions ) But du cours : maîtrise des concepts programmatiques rencontrés dans les langages symboliques Données (Objets) + Traitements (Algorithmique)

19 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 19 Chapitre II Données donnée / type vie des données variable

20 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 20 AlgorithmiqueProgrammeDonnées utilisable pendant l’exécution Espace mémoire centrale n octets contigus adresse ( n° 1 er octet ) longueur ( nb d’octets n ) Structure de stockage et d’interprétation du contenu binaire Type de la donnée Donnée informatique donnée / type vie des données variable

21 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 21 AlgorithmiqueProgrammeDonnées donnée / type vie des données variable N entiers naturels 0 1 2 … 11458 … Z entiers relatifs … -4587 … 0 … B booléens vrai faux R réels … -4587.01 … 0 … 1.0 … Cr caractères 'a' '$' '1' CHC chaîne de caractères "bonjour" FlotEntrée flot de réception de données IN : entrée standard(clavier/défaut) FlotSortie flot d'emmission de données OUT : sortie standard(écran/défaut) ERR : sortie erreurs(écran/défaut) Premiers types disponibles

22 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 22 AlgorithmiqueProgrammeDonnées adr mémoire 10000100 0000 0000 10040100 0001 0100 0010 0100 0001 0011 0010 10080100 0000 0000 10120000 0000 0000 0000 0010 1016 Réeld’adresse 1000 :2.0 Entierd’adresse 1008 :2 30 Caractèred’adresse 1004 :'A' Caractèred’adresse 1005 :'B' donnée couple (type, adresse) Entierd’adresse 1012 :2 Caractèred’adresse 1006 :'A' Caractèred’adresse 1007 :'2' Cf. cours Architecture donnée / type vie des données variable

23 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 23 AlgorithmiqueProgrammeDonnées donnée / type vie des données variable elle naît : réservationattribution exclusive de son espace. constructioninitialisation de son contenu. cohérente connexion éventuelle à des ressources (fichier, autre objet, …) et meurt : destructionclôture des connexions de l’objet à des ressources externes. récupérationde son espace réservé. Une donnée à une durée de vie

24 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 24 AlgorithmiqueProgrammeDonnées automatisée dans les langages symboliques assure l’exclusivité des attributions 2 instructions élémentaires : réservation Réserver récupération Rendre Gestion des espaces réservés donnée / type vie des données variable

25 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 25 AlgorithmiqueProgrammeDonnées par fonctions spéciales construction construire( [,paramètres]) destruction détruire ( ) automatisées seulement dans certains langages (C++, Java) Responsabilité du concepteur Construction et destruction donnée / type vie des données variable

26 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 26 AlgorithmiqueProgrammeDonnées Rappels : une donnée est un couple (type,adresse) le mécanisme de réservation choisi l'adresse Le programmeur préfère identifier sa donnée par un nom instructions spéciales : Associer à Oublier,,... donnée / type vie des données variable Cette association nom/donnée est appelée « variable »

27 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 27 AlgorithmiqueProgrammeDonnées Un nom peut être associé : à un nouvel objet ( cas courant, naissance de variable) Associer n à Réserver N à un objet préexistant ( création d’alias ) Associer i à n donnée / type vie des données variable

28 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 28 AlgorithmiqueProgrammeDonnées Instructions plus souples pour : associer des noms à des nouveaux objets Allouer N n,m R r Associer n à Réserver N Associer m à Réserver N Associer r à Réserver R éliminer des objets nommés et oublier leurs noms Eliminer n,m,r détruire (n), Rendre n détruire (m), Rendre m détruire (r), Rendre r Oublier n,m,r donnée / type vie des données variable

29 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 29 AlgorithmiqueProgrammeDonnées Allouer R r Résumé : La naissance d’une variable Réserver RAssocier r à... construire (r,2.0) r Réservé 0100 0000 0000 Réservé r Connexion à des ressources extérieures

30 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 30 AlgorithmiqueProgrammeDonnées Résumé : La mort d’une variable Eliminer r Oublier rRendre r détruire(r) rr ? Clôture des connexions à des ressources extérieures r Réservé 0100 0000 0000 Réservé r 0100 0000 0000

31 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 31 AlgorithmiqueProgrammeDonnées Résumé : La mise en place d’un alias Associer f à r 0100 0000 0000 Réservé r 0100 0000 0000 Réservé rf

32 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 32 AlgorithmiqueProgrammeDonnées Résumé : La suppression d’un alias f ? Oublier f 0100 0000 0000 Réservé r 0100 0000 0000 Réservé r f

33 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 33 Programme Instructions Fonctions Retour sur les données Chapitre III Traitements : Algorithmique

34 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 34 programme instructions fonctions AlgorithmiqueProgrammeDonnées Programme bonjour Début écrire ("coucou  ", OUT) Fin Programme : un exemple Nom du programme $ bonjour  coucou $ Bloc d' Instruction(s)

35 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 35 programme instructions fonctions AlgorithmiqueProgrammeDonnées Programme deux_et_deux Début écrire (2+2, OUT) écrire ("  ", OUT) Fin $ deux_et_deux  4 $ Instruction Programme : autre exemple

36 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 36 programme instructions fonctions AlgorithmiqueProgrammeDonnées Programme pair Début Allouer N n construire (n) écrire("entrez n : ", OUT) saisir(n, IN) Si n%2 == 0 Alors écrire("pair  ", OUT) Sinon écrire("impair  ", OUT) Fin, Eliminer n $ pair  entrez n : 2  pair $ Instruction Programme : encore un exemple Instruction $ pair  entrez n : 3  impair $ Instruction

37 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 37 programme instructions fonctions AlgorithmiqueProgrammeDonnées Instruction Une instruction peut être : simple : expression écrire (2+2, OUT) n = 2 … instruction spéciale Allouer …Eliminer … Si … Alors … Sinon … … composée : Début suite d’instructions Fin

38 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 38 Une expression peut être : une consultation de variable ou de constante n, OUT, "coucou", 2, 'a', 1.5 une opération n%2, 2+2, n=2 un appel de fonction construire (n,2), écrire (2+2, OUT) une expression conditionnelle selon évaluer ou fournit un résultatl’expression est donc typée opérandes/paramètres sont des expressions programme instructions fonctions AlgorithmiqueProgrammeDonnées Expression expression spéciales

39 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 39 selon test évaluer expV ou expF Le résultat de cette expression est : du type T commun aux 2 sous-expressions de droite calculé par évaluation de : expV si l’évaluation de test a donné Vrai expF sinon Expression conditionnelle programme instructions fonctions AlgorithmiqueProgrammeDonnées expression spéciales

40 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 40 Ex : écrire ( selon n%2 == 0 évaluer "pair  " ou "impair  ", OUT) produit le même résultat que dans le programme pair programme instructions fonctions AlgorithmiqueProgrammeDonnées expression spéciales Une seule des 2 expressions est évaluée tout « effet de bord » présent dans l’autre expression ne sera pas opéré Si n%2 == 0 Alors écrire("pair  ", OUT) Sinon écrire("impair  ", OUT)

41 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 41 modification de la valeur stockée dans une variable opérateur = Réaffectation programme instructions fonctions AlgorithmiqueProgrammeDonnées expression spéciales r = 1.0 0100 0000 0000 Réservé r 0011 1111 1000 0000 0000 Réservé r Valeur 2.0 Valeur 1.0

42 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 42 Précédence des opérateurs Certaines expressions complexes peuvent être ambiguës a + ( b * c ) a + b * c ? ( a + b ) * c seules les précédences « naturelles » seront utilisées : priorité ^ * / + - = autres cas d'ambiguïté systématiquement parenthèsés programme instructions fonctions AlgorithmiqueProgrammeDonnées expression spéciales

43 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 43 Description fonctionnelle des types Les opérateurs, fonctions et constantes disponibles sont répertoriés dans des documents d’information sur les types qu’on appelle « Fiches de description fonctionnelle » programme instructions fonctions AlgorithmiqueProgrammeDonnées expression spéciales

44 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 44 Fiche de description fonctionnelle Nom : toto Rôle : Interface utilisateur Fonctions et opérateurs : Propriétés : Informations diverses (COO) Nom de la classe Propriétés que doivent vérifier les objets de ce type Définition de l’interface Opérateurs et fonctions Description du rôle de la classe « Que représentent les instances de la classe ? » programme instructions fonctions AlgorithmiqueProgrammeDonnées expression spéciales

45 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 45 Prototypes provisoires des fonctions et opérateurs Nom ( [ paramètres ] ) [ objet retourné ] ex inverse ( r R ) res R fonction op + ( r1 R, r2 R ) res R opérateur + Les opérateurs sont des fonctions de noms particuliers ! Surcharge : 2 fonctions ou opérateurs peuvent avoir le même nom si leurs paramètres permettent de les différencier programme instructions fonctions AlgorithmiqueProgrammeDonnées expression spéciales

46 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 46 Nom : N Rôle : Interface utilisateur Propriétés : programme instructions fonctions AlgorithmiqueProgrammeDonnées expression spéciales

47 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 47 Nom : Z Rôle : Interface utilisateur Propriétés : programme instructions fonctions AlgorithmiqueProgrammeDonnées expression spéciales

48 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 48 Nom : R Rôle : Interface utilisateur Propriétés : programme instructions fonctions AlgorithmiqueProgrammeDonnées expression spéciales

49 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 49 Nom : B Rôle : Interface utilisateur Propriétés : programme instructions fonctions AlgorithmiqueProgrammeDonnées expression spéciales

50 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 50 Gestion de variables Allocations, mise en place d’alias Morts, suppressions d’alias Structures algorithmiques Instructions conditionnelles Boucles Déroutements programme instructions fonctions AlgorithmiqueProgrammeDonnées Instructions spéciales expression spéciales

51 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 51 Allocations, mise en place d’alias en début de bloc Allouer …Associer … à … Morts, suppressions d’alias dans la fin de bloc Fin [, Eliminer …][,Oublier … ] programme instructions fonctions AlgorithmiqueProgrammeDonnées Gestion des variables expression spéciales Programme Exemple Début Allouer N a,b Associer i à b … Fin, Eliminer a,b, Oublier i

52 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 52 Si test Alors L’instruction n’est exécutée que si « test » est évalué comme Vrai programme instructions fonctions AlgorithmiqueProgrammeDonnées Instructions Conditionnelles expression spéciales test Bloc Alors Vrai Faux Instruction précédente Instruction suivante

53 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 53 Si test Alors Sinon Si test évalué à Vrai :exécution du bloc Alors sinonexécution du bloc Sinon programme instructions fonctions AlgorithmiqueProgrammeDonnées expression spéciales test Bloc Alors Vrai Faux Bloc Sinon Instruction précédente Instruction suivante

54 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 54 ProgrammeDonnées Programme pair Début Allouer N n construire (n) écrire("entrez n : ", OUT) saisir(n, IN) Si n%2 == 0 Alors écrire("pair  ", OUT) Sinon écrire("impair  ", OUT) Fin, Eliminer n $ pair  entrez n : 2  pair $ $ pair  entrez n : 3  impair $ programme instructions fonctions Algorithmique expression spéciales

55 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 55 Selon cas : … cas : [défaut : ] Fin-Selon évaluation de l’expression de choix puis exécution : du bloc associé à la valeur obtenue du bloc défaut si la valeur obtenue n ’est pas mentionnée dans les clauses cas absence de clause défaut clause défaut vide programme instructions fonctions AlgorithmiqueProgrammeDonnées expression spéciales

56 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 56 programme instructions fonctions AlgorithmiqueProgrammeDonnées expression spéciales Bloc défautBloc v1,v3 Expression de choix v1 v2 v3 … vn ?? Bloc v2,vn Ordinogramme équivalent... Instruction précédente Instruction suivante

57 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 57 Programme TypeCr Début Allouer Cr c construire (c) écrire("entrez c : ", OUT)saisir(c, IN) Selon c cas ’0’,’1’,’2’,’3’,’4’,’5’,’6’,’7’,’8’,’9’ : écrire("Chiffre  ", OUT) cas ’a’, …,’z’: écrire("minuscule  ", OUT) cas ’A’, …,’Z’: écrire("Majuscule  ", OUT) défaut: écrire("Symbole  ", OUT) Fin-Selon Fin, Eliminer c programme instructions fonctions AlgorithmiqueProgrammeDonnées $ TypeCr  entrez c : 2  Chiffre $ $ TypeCr  entrez c : $  Symbole $ $ TypeCr  entrez c : g  minuscule $

58 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 58 TantQue Faire L’instruction est exécutée tant que le test est évalué comme Vrai programme instructions fonctions AlgorithmiqueProgrammeDonnées Boucles expression spéciales test Bloc Faire Vrai Faux Instruction précédente Instruction suivante

59 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 59 Faire TantQue Les instructions sont exécutées une fois puis réexécutées tant que le test est évalué comme Vrai programme instructions fonctions AlgorithmiqueProgrammeDonnées expression spéciales test Bloc Faire Vrai Faux Instruction précédente Instruction suivante

60 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 60 programme instructions fonctions AlgorithmiqueProgrammeDonnées expression spéciales titi Vrai Faux Instruction précédente Instruction suivante toto titi Vrai Faux Instruction précédente Instruction suivante toto TantQue titi Faire toto Faire toto TantQue titi

61 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 61 Vrai Pour de à [ pas ] Faire programme instructions fonctions AlgorithmiqueProgrammeDonnées expression spéciales toto i!=fin Faux Instruction précédente Instruction suivante i=deb i = i+p Pour idedeb àfin pasp Faire toto 1 si absent

62 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 62 programme instructions fonctions AlgorithmiqueProgrammeDonnées expression spéciales Pour i de deb à fin pas p Faire toto Vrai toto i!=fin Faux Instruction précédente Instruction suivante i=deb i = i+p i=deb TantQue i!=fin Faire Début toto i=i+p Fin

63 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 63 programme instructions fonctions AlgorithmiqueProgrammeDonnées expression spéciales Programme tablemul Début Allouer N n,r,i construire(n) construire(r,0) construire(i,0) écrire("entrez n : ", OUT) saisir(n, IN) TantQue i < 11 Faire Début écrire(r, OUT) écrire(’ ’,OUT) r = r+n i = i+1 Fin écrire("  ", OUT ) Fin, Eliminer n,r,i $ tablemul  entrez n : 7  0 7 14 21 28 35 42 49 56 63 70 $

64 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 64 programme instructions fonctions AlgorithmiqueProgrammeDonnées expression spéciales Programme tablemul Début Allouer N n,r,i construire(n) construire(r,0) construire(i,0) écrire("entrez n : ", OUT) saisir(n, IN) Pour i de 0 à 11 pas 1 Faire Début écrire(r, OUT) écrire(’ ’,OUT) r = r+n Fin écrire("  ", OUT ) Fin, Eliminer n,r,i $ tablemul  entrez n : 7  0 7 14 21 28 35 42 49 56 63 70 $

65 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 65 programme instructions fonctions AlgorithmiqueProgrammeDonnées expression spéciales Programme tablemul Début Allouer N n,r,i construire(n) construire(r,0) construire(i,0) écrire("entrez n : ", OUT) saisir(n, IN) Faire écrire(r, OUT) écrire(’ ’,OUT) r = r+n TantQue ( i = i+1 ) < 11 écrire("  ", OUT ) Fin, Eliminer n,r,i $ tablemul  entrez n : 7  0 7 14 21 28 35 42 49 56 63 70 $

66 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 66 Invariant de boucle Une méthodologie de conception de boucles justes : programme instructions fonctions AlgorithmiqueProgrammeDonnées expression spéciales Description quelconque (mathématique, graphique, littéraire, …) propriétés invariantes vérifiées par les variables juste avant chaque passage sur le test rôle de chaque variable dans le “codage” d’un état de résolution quelconque

67 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 67 L’invariant détermine alors les éléments de la boucle : Valeurs initiales des variables Test de poursuite Progression, “corps de la boucle” programme instructions fonctions AlgorithmiqueProgrammeDonnées expression spéciales

68 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 68 Valeurs initiales : en se plaçant dans l’état de début (résolution non commencée) on obtient les valeurs initiales des variables programme instructions fonctions AlgorithmiqueProgrammeDonnées expression spéciales

69 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 69 Test de poursuite : en se plaçant en fin de résolution (problème résolu) on obtient la condition d’arrêt. Par inversion on obtient le test de poursuite programme instructions fonctions AlgorithmiqueProgrammeDonnées expression spéciales

70 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 70 Progression, “corps de la boucle” : formuler les traitements à effectuer et les valeurs des variables en fin de passage à partir des valeurs en début de passage en comparant les 2 états de résolution en assurant que : 1si les valeurs des variables en début de passage respectaient l’invariant, celles de fin aussi 2on se rapproche du cas d’arrêt programme instructions fonctions AlgorithmiqueProgrammeDonnées expression spéciales

71 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 71 Preuves de la justesse de la boucle : à chaque passage l’invariant est vérifié : démonstration par récurrence Vrai au premier passage (valeurs initiales) Si Vrai au passage n° i Alors Vrai en i+1 (progression, point 1) la boucle s’arrète (progression, point 2) la boucle s’arrète quand le problème est résolu (test d’arrêt d’après invariant assuré) programme instructions fonctions AlgorithmiqueProgrammeDonnées expression spéciales

72 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 72 programme instructions fonctions AlgorithmiqueProgrammeDonnées expression spéciales 0*n1*n 10*n Affichages désirés i affichages réalisés r(=i*n) prochain affichage Exemple : programme tablemul … … r

73 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 73 programme instructions fonctions AlgorithmiqueProgrammeDonnées expression spéciales 0*n10*n Affichages désirés i=0 affichages réalisés r=(i*n)=0*n … Valeurs initiales : se placer en début de résolution i=0r=0

74 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 74 programme instructions fonctions AlgorithmiqueProgrammeDonnées expression spéciales 0*n11*n10*n Affichages désirés i=11 affichages réalisés r=11*n … Test d’arrêt : se placer en fin de résolution Arrêt : i==11 Poursuite : i!=11 i<11

75 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 75 Corps de boucle : un pas de résolution respectant l’invariant progressant vers la fin programme instructions fonctions AlgorithmiqueProgrammeDonnées expression spéciales 0*n1*n 10*n i d affichages en début de passage r d (=i d *n ) … … rdrd Afficher r d i f = i d +1 r f = i f *n = i d *n+n = r d +n i f affichages en fin de passage rfrf r f (=i f *n )

76 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 76 programme instructions fonctions AlgorithmiqueProgrammeDonnées expression spéciales Programme tablemul Début Allouer N n,r,i construire(n) construire(r,0) construire(i,0) écrire("entrez n : ", OUT) saisir(n, IN) TantQue i < 11 Faire Début écrire(r, OUT) écrire(’ ’,OUT) r = r+n i = i+1 Fin écrire("  ", OUT ) Fin, Eliminer n,r,i Valeurs initiales Test de poursuite Corps de boucle

77 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 77 programme instructions fonctions AlgorithmiqueProgrammeDonnées expression spéciales 0*n1*n 10*n Affichages désirés reste i affichages r prochain affichage programme tablemul : autre invariant possible … … r

78 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 78 programme instructions fonctions AlgorithmiqueProgrammeDonnées expression spéciales 0*n10*n Affichages désirés reste i=11 affichages r=0*n … Valeurs initiales : se placer en début de résolution i=11r=0

79 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 79 programme instructions fonctions AlgorithmiqueProgrammeDonnées expression spéciales 0*nr10*n Affichages désirés reste i=0 affichages r … Test d’arrêt : se placer en fin de résolution Arrêt : i==0 Poursuite : i!=0 i>0

80 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 80 Corps de boucle : un pas de résolution respectant l’invariant progressant vers la fin programme instructions fonctions AlgorithmiqueProgrammeDonnées expression spéciales 0*n1*n 10*n reste i d affichages en début de passage rdrd … … rdrd Afficher r d i f = i d -1 r f = r d +n reste i f affichages en fin de passage rfrf r f =r d +n

81 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 81 programme instructions fonctions AlgorithmiqueProgrammeDonnées expression spéciales Programme tablemul Début Allouer N n,r,i construire(n) construire(r,0) construire(i,11) écrire("entrez n : ", OUT) saisir(n, IN) TantQue i > 0 Faire Début écrire(r, OUT) écrire(’ ’,OUT) r = r+n i = i-1 Fin écrire("  ", OUT ) Fin, Eliminer n,r,i Valeurs initiales Test de poursuite Corps de boucle

82 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 82 Il peut être utile de disposer d’un mécanisme permettant en cas de situation exceptionnelle d’interrompre le programme. Ce mécanisme doit : assurer la destruction de tous les objets utilisés permettre au programmeur de gérer le problème programme instructions fonctions AlgorithmiqueProgrammeDonnées Déroutements, Exceptions expression spéciales Tous les langages ne proposent pas ce mécanisme.

83 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 83 Début … Début … Dérouter par toto … Fin, Eliminer … … Fin, Eliminer … Dérouter par Passage en mode déroutement : seules les clauses de fin de bloc sont exécutées sorties directes des blocs programme instructions fonctions AlgorithmiqueProgrammeDonnées expression spéciales Instruction de déroutement : Type et valeur « codent » la nature du problème

84 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 84 Assure : Interruption du programme : sortie de tous les blocs « actifs » Destruction de tous les objets utilisés : exécution des clauses de fin de bloc reste à rendre possible la récupération par le programmeur bloc spécial dont la clause fin peut permettre de stopper le processus de déroutement programme instructions fonctions AlgorithmiqueProgrammeDonnées expression spéciales

85 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 85 Les clauses Récupérer sont exécutées, dans l’ordre, selon : programme instructions fonctions AlgorithmiqueProgrammeDonnées expression spéciales Essayer Fin[, Eliminer …][, Oublier …] Récupérer Début Fin … Récupérer Début Fin Bloc de récupération Instructions susceptibles de générer des déroutements Clause de Fin Si déroutement par objet compatible avec le paramètre Alors retour au mode normal exécution du bloc associé Sinon passer

86 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 86 programme instructions fonctions AlgorithmiqueProgrammeDonnées expression spéciales Programme Div DébutAllouer R a,b construire(a) construire (b) Essayer saisir(a,IN) saisir (b,IN) écrire(a/b,OUT) écrire ("  ",OUT) Fin Récupérer e nouv ErrFormat Début écrire ("???  ",ERR) Fin Récupérer e nouv DivPar0 Début écrire ("Div / 0  ",ERR) Fin écrire ("Fini  ",OUT) Fin, Eliminer a,b Exemple

87 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 87 Programme Div DébutAllouer R a,b construire(a) construire (b) Essayer saisir(a,IN) saisir (b,IN) écrire(a/b,OUT) écrire ("  ",OUT) Fin Récupérer e nouv ErrFormat Début écrire ("???  ",ERR) Fin Récupérer e nouv DivPar0 Début écrire ("Div / 0  ",ERR) Fin écrire ("Fini  ",OUT) Fin, Eliminer a,b programme instructions fonctions AlgorithmiqueProgrammeDonnées expression spéciales $ Div  7 2  3.5 Fini $

88 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 88 Programme Div DébutAllouer R a,b construire(a) construire (b) Essayer saisir(a,IN) saisir (b,IN) écrire(a/b,OUT) écrire ("  ",OUT) Fin Récupérer e nouv ErrFormat Début écrire ("???  ",ERR) Fin Récupérer e nouv DivPar0 Début écrire ("Div / 0  ",ERR) Fin écrire ("Fini  ",OUT) Fin, Eliminer a,b programme instructions fonctions AlgorithmiqueProgrammeDonnées expression spéciales $ Div  7 0  Div / 0 Fini $

89 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 89 Programme Div DébutAllouer R a,b construire(a) construire (b) Essayer saisir(a,IN) saisir (b,IN) écrire(a/b,OUT) écrire ("  ",OUT) Fin Récupérer e nouv ErrFormat Début écrire ("???  ",ERR) Fin Récupérer e nouv DivPar0 Début écrire ("Div / 0  ",ERR) Fin écrire ("Fini  ",OUT) Fin, Eliminer a,b programme instructions fonctions AlgorithmiqueProgrammeDonnées expression spéciales $ Div < toto  ??? Fini $ toto 3 a

90 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 90 Programme Div DébutAllouer R a,b construire(a) construire (b) Essayer saisir(a,IN) saisir (b,IN) écrire(a/b,OUT) écrire ("  ",OUT) Fin Récupérer e nouv ErrFormat Début écrire ("???  ",ERR) Fin Récupérer e nouv DivPar0 Début écrire ("Div / 0  ",ERR) Fin écrire ("Fini  ",OUT) Fin, Eliminer a,b programme instructions fonctions AlgorithmiqueProgrammeDonnées expression spéciales $ Div < toto  Exception... $ toto 3 2 Pb physique

91 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 91 FonctionsDéroutements possibles construire(FlotEntree,CHC)ErrConnFlot construire(FlotSortie,CHC)ErrConnFlot saisir (N,FlotEntree)ErrLecture,ErrFormat saisir (Z,FlotEntree)ErrLecture,ErrFormat saisir (R,FlotEntree)ErrLecture,ErrFormat saisir (B,FlotEntree)ErrLecture,ErrFormat saisir (  T,FlotEntree)ErrLecture[, ??? ] op / (N,N) NDivPar0 op / (Z,Z) ZDivPar0 op / (R,R) RDivPar0 programme instructions fonctions AlgorithmiqueProgrammeDonnées expression spéciales Fonctions déroutables connues

92 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 92 programme instructions fonctions AlgorithmiqueProgrammeDonnées Fonction Bloc d’instructions exécutable depuis un endroit quelconque du code par instruction d’appel ou lancement retournant à la suite de l’appel quand il se termine

93 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 93 Coucou() Début écrire (" Coucou  ", OUT) Fin Programme Coucous Début écrire (1,OUT) Coucou () écrire (2,OUT) Coucou () écrire (3,OUT) Coucou () Fin programme instructions fonctions AlgorithmiqueProgrammeDonnées $ Coucous  1 Coucou 2 Coucou 3 Coucou $

94 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 94 programme instructions fonctions AlgorithmiqueProgrammeDonnées Paramètres variables types prévus et noms choisis dans la fonction noms associés à de nouvelles variables n nouv N passé “par valeur” ou “par copie” ou à des objets existant avant (alias) n ex N passé “par référence”, objet modifiable par la fonction n cons N passé “par référence à constant”, objet non modifiable par la fonction nés donc initialisés avant appel mort ou oubli en fin de fonction

95 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 95 Inverser(s nouv R, d ex R) Début d = 1.0 / s s = d Fin, Eliminer s, Oublier d Programme Inverse Début Allouer R f,i construire(f) construire(i) écrire("f ? ",OUT) saisir (f,IN) Inverser (f,i) écrire("inv (", OUT)écrire(f,OUT) écrire(")=", OUT) écrire(i,OUT) écrire("  ", OUT) Fin, Eliminer f,i programme instructions fonctions AlgorithmiqueProgrammeDonnées $ Inverse  f ? 2  inv(2)=0.5 $

96 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 96 Inverser(s nouv R, d ex R) Début d = 1.0 / s s = d Fin, Eliminer s, Oublier d Programme Inverse Début Allouer R f,i construire(f) construire(i) écrire("f ? ",OUT) saisir (f,IN) Inverser (f,i) écrire("inv (", OUT)écrire(f,OUT) écrire(")=", OUT) écrire(i,OUT) écrire("  ", OUT) Fin, Eliminer f,i programme instructions fonctions AlgorithmiqueProgrammeDonnées s nouvelle variable dupliquant f d alias de i Impossible si d déclaré « cons »

97 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 97 programme instructions fonctions AlgorithmiqueProgrammeDonnées 0100 0000 0000 Réservé f 0000 Réservé i 2.0 0100 0000 0000 Réservé s 2.0 d Inverser(f,i) : mise en place de s et d 1. Naissance de s par copie de f 2. Associer d à i 0.0

98 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 98 programme instructions fonctions AlgorithmiqueProgrammeDonnées 0100 0000 0000 Réservé f 0011 1111 0000 Réservé i 2.0 0100 0000 0000 Réservé s 2.0 d Inverser(f,i) : traitement d = 1.0 / s 0.5

99 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 99 programme instructions fonctions AlgorithmiqueProgrammeDonnées 0100 0000 0000 Réservé f 0011 1111 0000 Réservé i 2.0 0011 1111 0000 Réservé s 0.5 d Inverser(f,i) : traitement s = d 0.5

100 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 100 programme instructions fonctions AlgorithmiqueProgrammeDonnées 0100 0000 0000 Réservé f 0011 1111 0000 Réservé i 2.0 0011 1111 0000 Inverser(f,i) : traitement Fin, Eliminer s, Oublier d 0.5 f est intact alors que i est modifié

101 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 101 variable (Algo) type prévu et nom choisi dans la fonction associé (en Algo) à une nouvelle variable res nouv N retour par valeur Alloué mais pas construit avant appel construit par la fonction mort après retour de fonction et première utilisation ou à un objet survivant à l’appel (alias) res ex N retour par référence associé par la fonction oubli automatique après première utilisation programme instructions fonctions AlgorithmiqueProgrammeDonnées Résultat

102 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 102 Inv (s nouv R) res nouv R Début construire (res, 1.0 / s) Fin, Eliminer s Programme Inverse Début Allouer R f,i construire(f) construire(i) écrire("f ? ",OUT) saisir (f,IN) i = Inv (f) écrire (i,OUT) écrire("  ", OUT) Fin, Eliminer f,i programme instructions fonctions AlgorithmiqueProgrammeDonnées $ Inverse  f ? 2  0.5 $

103 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 103 Inv (s nouv R) res nouv R Début construire (res, 1.0 / s) Fin, Eliminer s Programme Inverse Début Allouer R f,i construire(f) construire(i) écrire("f ? ",OUT) saisir (f,IN) i = Inv (f) écrire (i,OUT) écrire("  ", OUT) Fin, Eliminer f,i programme instructions fonctions AlgorithmiqueProgrammeDonnées 2. construction par la fonction 1. Allocation par code appelant 3. Elimination par le code appelant

104 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 104 Inv (s nouv R) res nouv R Début construire (res, 1.0 / s) Fin, Eliminer s … i = Inv (f) … programme instructions fonctions AlgorithmiqueProgrammeDonnées Allouer R res Allouer R s construire (s,f) Lancer Inv i=res Eliminer res

105 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 105 programme instructions fonctions AlgorithmiqueProgrammeDonnées 0100 0000 0000 Réservé f ???? Réservé res 2.0 0100 0000 0000 Réservé s 2.0 Inv (f) : Début ???

106 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 106 programme instructions fonctions AlgorithmiqueProgrammeDonnées Inv (f) : Retour 0100 0000 0000 Réservé f 0011 1111 0000 Réservé res 2.0 0011 1111 0000 0.5

107 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 107 Inverser (d ex R) res ex R Début d = 1.0 / d Associer res à d Fin, Oublier d … i = Inverser (f) … programme instructions fonctions AlgorithmiqueProgrammeDonnées Associer d à f Lancer Inverser i=res Oublier res

108 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 108 programme instructions fonctions AlgorithmiqueProgrammeDonnées 0100 0000 0000 Réservé f 2.0 Inverser (f) d Réservé fd 0011 1111 0000 0.5 d = 1.0 / d Début

109 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 109 programme instructions fonctions AlgorithmiqueProgrammeDonnées 0011 1111 0000 Réservé f Inverser (f) d Réservé f 0011 1111 0000 0.5 Associer res à dFin, Oublier d 0.5 res

110 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 110 toto (d nouv R) res ex R Début Allouer R r … r Associer res à d Fin, Eliminer r,d programme instructions fonctions AlgorithmiqueProgrammeDonnées Le résultat par référence doit être associé à un objet qui survit à la fonction. 0011 1111 0000 resd Au retour, res est associé à un objet mort connections éventuelles perdues espace libéré peut être réutilisé par un autre objet

111 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 111 programme instructions fonctions AlgorithmiqueProgrammeDonnées Lancement d’une fonction : « méta-algorithme » suivant Si retour par valeur Alors Allouer objet résultat Pour chaque paramètre Faire Si passage par valeur Alors Allouer paramètre et le construire par copie de l’objet passé Sinon Associer le paramètre à l’objet passé Lancer Fonction Si retourAlorsUtilisation résultat Eliminer ou Oublier résultat Fin construit / Associe le résultat Elimine / Oublie les paramètres

112 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 112 programme instructions fonctions AlgorithmiqueProgrammeDonnées doivent faire apparaître : déroutements possibles nature (nouv / ex / cons) et type des paramètres ex besoin de modifier l’objet passé qui ne devrait pas être éphémère mais durable par rapport à l’appel consévite la naissance d’un nouvel objet nature et type de l’objet retourné nouvnécessité de créer un nouvel objet à durée de vie non imposée (non durable) expermet la réutilisation du résultat comme paramètre ex d’un autre appel Prototypes définitifs

113 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 113 programme instructions fonctions AlgorithmiqueProgrammeDonnées exemples : op = (a ex N,b cons N) res ex N saisir(i ex N,f ex FlotEntrée) Déroutable par ErrLecture, ErrFormat Réaffectation de a : Modification de a Retour : référence à a Saisie de i: Modification de i Saisie dans f : Modification de f Déroutements possibles Évite la création d’un objet copie

114 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 114 programme instructions fonctions AlgorithmiqueProgrammeDonnées Cela revient à résoudre le problème posé en : supposant la fonction capable de résoudre un sous- problème un peu plus « simple » et de même nature construisant la solution globale à partir de la solution partielle fournie par appel de la fonction sur ce sous- problème. Récursivité Définition : Une fonction récursive se relance dans certains cas

115 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 115 programme instructions fonctions AlgorithmiqueProgrammeDonnées Exemples de problèmes exprimés récursivement : Inverser une chaîneconcaténer l’Inverse de la sous-chaîne démarrant en 1 et le caractère n° 0 Afficher une liste Afficher le premier élément Afficher le reste de la liste a b c d "a b c d" "d c b"+" a"

116 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 116 ProgrammeDonnées Il faut veiller à ce que : il existe au moins un cas d’arrêt de la récursivité chaque appel récursif rapproche du (d’un) cas d’arrêt Méthode : 1. exposer le(s) cas d’arrêt et la (les) solution(s) associée(s) la (les) règle(s) de récurrence comment construire les solutions globales d’après les solutions partielles 2. Coder Si cas général Alors solution générale (récursive) Sinonsolution(s) particulière(s) programme instructions fonctions Algorithmique

117 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 117 ProgrammeDonnées Si : les solutions particulières sont correctes les règles de récurrence construisent correctement les solutions globales à partir des solutions partielles Alors les solutions proposées sont toutes correctes programme instructions fonctions Algorithmique raisonnement par récurrence

118 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 118 programme instructions fonctions AlgorithmiqueProgrammeDonnées Fonctions récursives exemples : cas d ’arrêt : p=0 C (n nouv N, p nouv N) res nouv N Début construire(res, selon p>0 évaluer (n-p+1)*C(n,p-1)/p ou 1 ) Fin, Eliminer n,p

119 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 119 programme instructions fonctions AlgorithmiqueProgrammeDonnées Inverser une chaîneconcaténer l’Inverse de la sous-chaîne démarrant en 1 et le caractère n° 0 cas d’arrêt :chaîne de longueur <= 1 retourner la même chaîne Inv (S nouv CHC) res nouv CHC Début Allouer N lg construire (lg,Long(S)) construire (res, selon lg>1 évaluer Inv(SsCh(S,1,lg))+ CHC éphémère(Carno(S,0)) ou S ) Fin, Eliminer S,lg Cf. plus loin

120 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 120 AlgorithmiqueProgrammeDonnées Les données que nous avons utilisées sont : des constantes ( 0, 'a', "toto" ) des objets éphémères résultats de sous-expressions écrire (a+b,OUT) écrire (a Et b,OUT) des variables locales qui naissent et meurent avec un bloc fonctionnel des paramètres de fonction qui naissent et meurent avec l’appel de fonction qui les utilise Il existe d’autres natures de données Rappel sur les natures de données connues instructions fonctions retour sur les données

121 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 121 AlgorithmiqueProgrammeDonnées son espace lui est réservé pendant toute la durée du programme déclaration par Variables à durée de vie globale Définition : Une variable à durée de vie globale naît au chargement du programme et meurt au déchargement Chargement Allouer N toto … construire (toto,…) … Déchargement, Eliminer toto … instructions fonctions retour sur les données

122 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 122 AlgorithmiqueProgrammeDonnées On en distingue 2 sortes : Variable globale déclarée à l’extérieur de toute fonction (ou prg), utilisable dans toute fonction (ou prg) Chargement Allouer N toto … construire (toto,…) … Déchargement, Eliminer toto … … Programme truc Début … toto … Fin instructions fonctions retour sur les données

123 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 123 AlgorithmiqueProgrammeDonnées Variable locale « statique » déclarée au niveau d’un bloc fonctionnel utilisable dans ce bloc uniquement … f(…) … Chargement Allouer N toto … construire (toto,…) … Déchargement, Eliminer toto … Début … toto … Fin instructions fonctions retour sur les données

124 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 124 AlgorithmiqueProgrammeDonnées f() Chargement Allouer N n construire (n,0) Déchargement, Eliminer n Début Allouer N i construire (i,0) i=i+1n=n+1 écrire(n,OUT) écrire(':',OUT) écrire(i,OUT) écrire('  ',OUT) Fin, Eliminer i Programme toto Début f() f() f() Fin instructions fonctions retour sur les données $ toto  1:1 2:1 3:1 $ n i

125 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 125 instructions fonctions retour sur les données AlgorithmiqueProgrammeDonnées Il s'avérera utile de savoir créer un objet particulier utilisé pour un besoin éphémère dans une expression Pour ce faire les méta-fonctions suivantes seront supposées exister pour tout type T et toute liste de paramètres licite pour construire un T : T éphémère ( paramètres ) res nouv T Début construire (res, paramètres ) Fin[, Eliminer paramètres/copie ] [, Oublier paramètres/référence ] Objets éphémères autres que résultats

126 IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation, 126 AlgorithmiqueProgrammeDonnées De même, il s'avérera utile de savoir créer des objets non nommés durables (nb et valeurs inconnus à la compilation) Pour ce faire les méta-fonctions suivantes seront supposées exister pour tout type T et toute liste de paramètres licite pour construire un T : T durable ( paramètres ) res nouv Adr de T débutAllouer T t construire (t, paramètres ) construire (res, Adresse(t)) Fin[, Eliminer paramètres/copie ], Oublier t [, paramètres/référence ] t oublié, non éliminé Cf. cours Structures de Données instructions fonctions retour sur les données Objets durables non nommés Cf. COO, patrons


Télécharger ppt "IUT Léonard de Vinci, ReimsDpt Info, Y.Remion Bases de la Programmation Programme, Objets et Algorithmique élémentaire."

Présentations similaires


Annonces Google