Japonais/Vocabulaire/Justice
Programmation LDA
Le but de ce cours est d'étudier comment on peut résoudre un problème en utilisant le Langage de Description des Algorithmes suivant l'approche Bertini et Tallineau. Il va donc falloir étudier les principes fondamentaux de la programmation, base valable quel que soit le langage utilisé. 
Pour pouvoir résoudre un problème et transposer la solution sur ordinateur, il est nécessaire de passer par différentes étapes. Dans un premier temps, il va falloir effectuer une analyse du problème. Lorsque cette analyse est terminée, il faut l'adapter à l'ordinateur en traduisant l'analyse en une suite d'actions plus ou moins élémentaires. 
L'algorithme.
Un algorithme est un ensemble de règles opératoires propres à un calcul ou l'enchaînement des actions nécessaires à l'accomplissement d'une tâche.
Un algorithme est un procédé reprenant un ensemble de suites élémentaires d'actions à exécuter afin de résoudre un problème à partir des données de départ et d'arriver à un résultat final déterminé.
L'algorithme est indépendant des langages de programmation : si vous prenez une méthode de tri d'un tableau, par exemple le tri bulle, vous pouvez l'écrire dans la plupart des langages de programmation usuels. L'algorithmique va donc s'attacher à l'étude de différentes méthodes permettant de résoudre un problème donné sans tenir compte des particularités de tel ou tel langage de programmation. À ce titre l'algorithmique se veut universelle.
Le schéma usuel de résolution d'un problème sera donc :
Problème à résoudre (Données à traiter) --> Algorithme --> Implémentation dans un langage de programmation ->Résultat final
Il est possible de décrire un algorithme de différente manière :
Il n'existe pas hélas de langages de description des algorithmes universellement reconnus. Nous proposerons ici une syntaxe particulière, qui ressemble aux langages algorithmiques usuellement utilisés.
Analyse du problème.
Avant de résoudre un problème, il faut l'analyser avec précision. Cette réflexion passe par certaines étapes incontournables :
On ne peut pas résoudre un problème si on ne l'a pas défini précisément ! Il faut donc fixer le plus clairement possible les différentes fonctionnalités du programme. 
Il faut définir les différentes étapes de notre programme depuis la saisie des données jusqu'à l'affichage du résultat. On peut définir un prototype qui décrira point par point comment doit fonctionner notre programme.
Avant de résoudre le problème, il faut définir la nature des dfférentes données que manipulera notre programme.
Il faut définir ici quelles sont les données au point de départ et quelles données doivent être sauvegardées.
C'est la phase technique où il faut proposer une méthode pratique permettant de résoudre notre problème.
Les arbres programmatiques (AP).
Cette méthode permet de représenter en arbre structuré les différents algorithmes du programme. Le programme (racine de l'arbre) peut se décomposer en sous-programmes (sous niveaux) toujours organisés en deux parties:
Les AP structurent le programme qui comprend : 
Le test fait l'objet d'un nœud en fonction d'une condition booléenne (True/False).
Au niveau 0, le programme (prg) est ici initialisé de droite à gauche entre les blocs de début (D-Prog) et de fin (F-Prog) et se hiérarchise en sous prg et itérations en descendant dans les niveaux (couches). AP définit la structure logique du programme et l'ordre d’exécution des traitements. On instruit les feuilles de haut en bas (Niveau 0 -> ...) et de droite à gauche.
On a donc :
LES DECLARATIONS.
Tout algorithme comprend deux parties :
 Bloc
 - declaration
 - instruction
 FBloc
Un algorithme va utiliser des variables. Une variable peut être vue comme une zone mémoire réservée permettant de stocker une valeur. Toute variable utilisé dans la partie « instruction » de l'algorithme doit faire l'objet d'une déclaration préalable. La phase de déclaration doit s'accompagner d'une réflexion sur les données manipulées par notre algorithme. Quelle sera leur nature précise ? Leur valeur sera-t-elle variable ? Loin d'être une contrainte, la phase de déclaration est une aide pour guider le programmeur dans sa réflexion. 
Les constantes.
Une constante permet d'attribuer un nom à une valeur ou une expression fixe relativement complexe à retranscrire ou relativement longue. Elle permet également une meilleure lisibilité du code.
La déclaration d'une constante permet une modification simplifiée d'une valeur reprise à maintes reprises au sein du code. L'utilisation des constantes permettra d'améliorer la lisibilité de notre algorithme et sa généralisation.
Déclaration des constantes.
Pour déclarer une constante on utilise le mot réservé CONST. La syntaxe générale de cette déclaration se présente sous la forme :
 CONST identificateur = valeur
 CONST pi = 3.14
 CONST ttl = "Message à afficher régulièrement"
 CONST oui=Vrai
 CONST résu=pi*2+5*(15+4)
Pour des raisons de facilté il est préférable d'utiliser des noms de constantes plus ou moins courts et représentatifs de leur contenu.
Il est possible d'utiliser des déclarations multiples.
 CONST pi=3.14
 ttl="Message à afficher"
 oui=Vrai
 résu=pi*2+5*(5+4)
Les variables.
Une variable est une zone réservée de la mémoire permettant de stocker une valeur. Pour atteindre cette zone mémoire on lui attribue un nom. La valeur ainsi stockée par la variable pourra être modifiée au cours de l’exécution du code. Pour pouvoir réserver la place nécessaire à la valeur, il va falloir déclarer le type du contenu et éventuellement sa taille.
Déclaration.
Pour déclarer une variable on utilise le mot réservé de VAR. La syntaxe générale de cette déclaration se présente sous la forme.
 VAR identificateur : type
Identificateur représente le nom que l'on attribue à la variable.
Type permet de spécifier l'ensemble des valeurs dans lequel la valeur de la variable pourra varier. Il permet également de déterminer la dimension de la zone mémoire à réserver et le type d'opérations que pourra supporter la valeur.
On peut classer les différents types en catégories. Ainsi on parle de type primitif, il s'agit d'un type qui existe de fait avec le langage de programmation, il est défini en même temps que le langage. On parle également de type scalaire, il s'agit d'un type qui possède un précédent (hormis la première valeur qui est la plus petite et un suivant hormis la dernière valeur qui est la plus grande) et est représentée ou codée par un entier dans la machine.
 Ascii (à chaque char correspond une valeur numérique)
 A=65
 B=66
 a=97
 b=98
 13->Numérique (1 bit) 
 13->Alphanumérique (2 bits) |1|3| = 49 & 51
 2^16=65536 -> 2 bytes = word
 4 byte=2^32+-4.10^9 -> double word
 8 bytes=2^64
 variable=zone mémoire allouée
Les types de variables.
On dispose de quatre types primitifs, tous ordonnés mais dont 3 sont scalaires et 1 non.
Premières notions.
La lecture d'une variable permet à l'utilisateur de saisir une valeur et de la stocker dans une variable.
 Var Age : Entier
 Entrer Age
Dans cet exemple, l'utilisateur tapera sur le clavier la valeur d'un entier et cette valeur sera stockée dans la variable Age.
L'écriture permet d'afficher un message à l'écran à destination de l'utilisateur de l'algorithme.
 Ecrire "Texte à afficher"
 Ecrire Nom," ",Prenom," ",Age
L'affectation permet d'effectuer un calcul et de stocker le résultat de ce calcul dans une variable. 
Syntaxe :
 identificateur <- expression 
Sémantique :
On commence par évaluer l'expression et on stocke le résultat dans la variable. 
Exemple : 
 Var Valeur : Entier
 Valeur<-15
 Valeur<-19
 Valeur<-Valeur*3
 Valeur=19*3
 Ecrire Valeur
Exécution de l'algorithme : 
Notre programme affiche :
57
 Voyelle<-'a'
 Phrase<-"Voici une voyelle:"
 Phrase<-Phrase+Voyelle
 Ecrire Phrase
 >Voici une voyelle:a
Les commentaires sont des explications destinées à un programmeur qui lit l'algorithme et lui permettent de mieux le comprendre. Un commentaire n’est pas exécuté au cours de l'exécution d’un algorithme. 
 !Texte du commentaire!
OPERATEURS.
exercices.
? Calculez le prix à payer en fonction de la quantité et du prix unitaire sachant que le taux de TVA est de 19 %
? Calculer surface et volume d'une sphère dont le rayon est introduit par l'utilisateur
? Calculer le laps de temps en seconde écoulé entre deux horaires exprimés en heure, en minute et en seconde
? Introduire deux nombres et les permuter
? Introduire 3 nombres et afficher la somme, la différence et le produit
? Introduire une somme en franc belge et la convertir en euro
? Calculer le déterminant d'une équation du second degré
? Introduire une valeur représentant des secondes et les convertir en heure, minutes, secondes
? On désire établir un prg permettant de calculer le nombre de rouleaux de papier peint nécessaire pour tapisser une pièce. Les dimensions d'un rouleau sont de 10m sur 95cm, sachant qu'une porte mesure 2m5 sur 80cm et qu'une fenêtre mesure 1m40 sur 1m. Sachant qu'on estime à 5% les chutes non réutilisables. Etablissez le programme permettant à l'utilisateur d'introduire les dimensions ainsi que le nombre de portes et fenêtres
LES STRUCTURES DE CONTROLE.
Séquence = suite ordonnée d'instructions (nœud ou feuille)
Alternative.
 Si condition Alors
 -sequence
 Sinon
 -sequence
 Fsi
 Selon que
 condition 1 Faire
 -sequence
 condition 2 Faire
 -sequence
 consition 3 Faire
 -sequence
 autrement Faire
 -sequence
 FSelon
On test le contenu d'une variable et en fonction de ses valeurs, dès qu'une condition est réalisée on quitte l'alternative.
exercices.
? Introduire 2 nombres et les afficher dans l'ordre croissant
? Introduire deux horaires en H/M/S et afficher dans l'ordre croissant
? Introduire la date de naissance d'une personne et date actuelle et sortir son age
? En fonction d'un resultat introduit afficher la mention obtenue</>
? On demande d'introduire 2 nombres entiers ainsi qu'un opérateur (+,-,*,/,^,m). Afficher le résultat
Répétitive.
 ≡}Séquence D-TantQue
 TantQue [Cond vraie] Faire
 ≡}traitement
 FTant
 ≡}Séquence F-TantQue
ex:
 Entrer b
 Tantque b=0 Faire
 Ecrire "erreur"
 Entrer b
 Ftant
 ≡}Séquence D-Jusque
 Jusque [Cond vraie] Faire
 ≡}traitement
 FTant
 ≡}Séquence F-Jusque
ex:
 Entrer b
 Jusque b=0 Faire
 Ecrire "erreur"
 Entrer b
 FJusque
 Pour [Var] De [val. init] A [val. fin] Pas [val] Faire
 ≡}traitement
 FPour
ex:
 Pour x De 8 A 20 Pas 1 Faire
 Ecrire x
 FPour
exercices.
? Afficher table de multiplication de 8
? Calcul de somme, moyenne, min, max d'une série de nombres introduits au clavier. Valeur 0 indiquant la fin de la serie.
? Etablir un tableau reprenant la liste des nombres entre 1 et 20, leur exposant 2 et 3.
LES STRUCTURES COMPOSEES.
exercices.
? Additionner tous les nombres pairs entre 2 nombres introduits par l'utilisateur
LES TABLEAUX.
Ensemble de valeurs
Unidimensionnel.
Dans un VECTEUR de X : Type
Multidimensionnel.
Dans une MATRICE de X * X : Type
Programme permettant de permuter les valeurs d'une matrice carrée de 10 selon sa diagonale principale
LES SOUS-PROGRAMMES.
Ensemble nommé d'instructions paramétrable et appelable.
Procédures.
Sans sortie:
Fonctions.
Avec sortie.
? faire une fonction qui retourne le carre d'un nombre
LA RECURSIVITE.
La récursivité consiste en une procédure ou une fonction faisant appel à elle même.
exercices.
? Ecrire une fonction récursive permettant de trouver la valeur d'un élément du triangle de pascal connaissant sa position
? Ecrire une procédure permettant de convertir une valeur décimale en une valeur binaire et une procédure convertissant une valeur décimale en une valeur hexadécimale
LES TRIS.
Réorganisation de données
LES ENREGISTREMENTS.
Un enregistrement permet de regrouper sous un identificateur commun des variables de types différents
? Faire une fiche personnelle
LES POINTEURS.
Les pointeurs sont des directeurs de gestion d'allocations.
Les listes à simple chaînage.
Structure de données linéaires unidirectionnelles
Les listes à double chaînage.
Structure de données linéaires bidirectionnelles
Les arbres binaires.
Structures de données non linéaires
? Compter le nombre de feuilles et sommets d'un AB
LES FICHIERS.
Piles stockées
Sequentiels.
Stockage de données
Acces Directs.
Stockage d'enregistrements
Exercices.
? Soit un FAD et un FS contenant des infos similaires on demande de créer un nouveau FAD fusionnant alternativement les enregistrements des 2 fichiers