Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
Publié parGilles Le gal Modifié depuis plus de 9 années
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
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.