(gH) : Transparents (année 1995) pour
pour l'Algorithmique, les Langages
et les Styles de Programmation
Voir aussi des parties sélectionnées du cours complet de 1995...TABLE DES MATIERESListe des Langages présentés
les Aphorismes de l'algorithmicien
Quelques thèmes abordés
Plan des cours
partie 1 : Analyse algorithmique
partie 2 : Algorithmes et programmes
partie 3 : Programmes opérationnels
Etapes d'un développement logiciel
Structuration
"Moyenner" !
Rédiger
Ecriture d'un Module
Modularité fonctionnelle et concision en Apl
Mode direct et modularité en Dbase
Equivalence des boucles Pour et Tant_Que
Modularité et fichiers en Pascal
Modularité fonctionnelle sous Lisp
Exemples en :
Ada Apl Awk C Cobol Dbase Lisp Maple Mathematica Pascal Prolog Rexx Smalltalk WinBatch Retours : à la page (gH) à la page ALSPlan des Cours
- Savoir Effectuer une Analyse Algorithmique
- Voir, Comprendre des Algorithmes & programmes
- Réaliser, Optimiser des Programmes Opérationnels
Retours : à la page (gH) à la page ALSAnalyse Algorithmique
- Présentation générale
- Analyse, Structuration, Modularité
- Le problème de Comar
- Les langages d'analyse algorithmique
Retours : à la page (gH) à la page ALSExemples d'Algorithmes & programmes
- Traduction des algorithmes dans un langage
- Exemples élémentaires de programmation
- Exemples spécifiques de programmation
- Algorithmes classiques et Styles de programmation
Retours : à la page (gH) à la page ALSProgrammes Opérationnels
Maquettage, Interfaçage et Exploitation Exemple 1 : Classifications taxonomiques Exemple 2 : Edition de graphes hiérarchiques Retours : à la page (gH) à la page ALSles Aphorismes de l'algorithmicien
un algorithme sans programme est inutile, un programme sans algorithme ni documentation est inutilisable
vocabulaire, syntaxe, sémantique sont indissociables
programmer est facile, bien programmer est un art
un commentaire est comme un ascenseur, non obligatoire, mais si pratique !
Retours : à la page (gH) à la page ALSQuelques thèmes abordés
quel langage choisir ? comment mieux programmer ?
gérer la cohérence du tout et la perfection des parties
maquettage et automatisation, mise au point et exploitation
décomposer, structurer ; traduire, s'adapter
LE langage idéal ne peut pas exister
Retours : à la page (gH) à la page ALS
Etapes d'un développement logiciel
analyse et m.e.p. du cahier des charges fonctionnels
écriture de la méthode, des étapes de résolution
rédaction des algorithmes et de la documentation
traduction dans un langage de programmation
mise au point et vérification sur jeux d'essais
maintenance
Retours : à la page (gH) à la page ALSStructuration
actions répétitives et actions élémentaires
une action = un verbe = un module
Exemple : "afficher la moyenne d'une liste de nombres"
Retours : à la page (gH) à la page ALS"Moyenner" !
1. Lecture :Obtenir la liste
2. Calcul :"Moyenner" la liste
3. Ecriture :Présenter le résultat
Découpage et Nommage des étapes
Lisibilité des identificateurs
1.a) Lire au clavier NbElt et Lst
ou1.b) Lire Lst sur fichier et en déduire NbElt
Retours : à la page (gH) à la page ALSRédiger
{ #1. Saisie du nombre Nbelt de valeurs et } { de la liste Lst des valeurs } appeler le module Obtenir(Nbelt,Lst,) { #2. Calcul de la moyenne dans Moy } appeler le module Myenne(Nbelt,Lst,Moy) { #3. Affichage des résultats } appeler le module Prsent(Nbelt,Lst,Moy)Retours : à la page (gH) à la page ALSEcriture d'un module
module Moyenner
paramètres NbT par valeur { nb de termes } Lis { liste } par valeur Moy réel par adresse {moyenne } globales (aucune) locales Som { somme des termes } ... { autres variables locales } début du module Moyenner/em> ... { instructions du module Moyenner} fin du module MoyennerRetours : à la page (gH) à la page ALSModularité fonctionnelle et concision en Apl
ou même en détaillant comme pour l'algorithme
Retours : à la page (gH) à la page ALSMode direct et modularité en Dbase
AVERAGE LST TO MOY
? MOY
public Nbelt, Moy, Lst... DO obtenir DO menne with Lst DO prsnter with Nbelt,Moy STORE 0 TO SUM STORE 1 TO I DO WHILE I <= N STORE I+1 TO I ... ENDDO
Retours : à la page (gH) à la page ALSEquivalence des boucles Pour et Tant_Que
SOM <-- 0 POUR I DE1A NBELT SOM <-- SOM + ...FIN POUR I DE1A NBELT MOY <-- SOM / NBELT {boucle POUR réécrite en TANT QUE }
SOM <-- 0 I <-- 1 TANT QUE I <= NBELT SOM <-- SOM + ...I <-- I + 1 FIN TANT QUE I MOY <-- SOM / NBELT Retours : à la page (gH) à la page ALSModularité et fichiers en Pascal
PROGRAM ObtenirMoyennerPresenter ;
Const NbMax=1000;
Type Entier=integer; Reel=real;
Liste= Array[1..NbMax] of Entier ;
Var Nbelt:entier; List:Liste; Moy:reel;
(*$I SousProg.Pas*)
BEGIN
Obtenir(Nbelt,List);
Moyenner(List,Nbelt,Moy);
Presenter(Moy)
END.
Retours : à la page (gH) à la page ALSModularité fonctionnelle sous Lisp
(PRESENTER (MOYENNER (OBTENIR )))
OU(SETQ LST (OBTENIR ))
(SETQ MOY (MOYENNER LST))
(PRESENTER MOY)
Retours : à la page (gH) à la page ALS