Fonction inverse( mot )

publicité
Notions fondamentales
d’Algorithmique
François Bonneville - ARICIA
1
Ethymolologie


Algorithme : du mathématicien perse
Al-Khawarizmi (mort en 850 à Bagdad),
le « père » de l’algèbre
l’algo n’est donc pas « rythmique »,
à la différence du rock’n roll.
Avez-vous déjà indiqué un chemin à un touriste égaré ?
Avez vous fait chercher un objet à quelqu’un par téléphone ?
Avez-vous déjà suivi une recette de cuisine ?
Si oui, vous avez déjà conçu et fait exécuter des algorithmes.
2
Définition d’un algorithme
Suite finie de règles à appliquer dans
un ordre donné à un nombre fini de
données pour arriver en un nombre fini
d’étapes à un résultat
 Un algorithme est indépendant du
langage dans lequel il est écrit et de
l’ordinateur qui l’exécute

3
Qualités nécessaires pour concevoir
un algorithme




Avoir une certaine intuition : aucune méthode
ne permet de savoir quelles instructions
permettront d’obtenir le résultat voulu.
Suivre le paradigme « diviser pour régner » :
réduire chaque problème en problèmes plus
petits
Etre méthodique : évitez de sauter les étapes.
Être rigoureux : chaque fois qu’on écrit une
série d’instructions qu’on croit justes, vérifier
systématiquement en se plaçant mentalement
comme la machine qui va les exécuter.
4
Qualité d’un algoritme




Lisibilité : respecter l’indentation, choisir
judicieusement les noms de variables et de fonctions
Terminaison : atteindre le résultat en un nombre fini
d’étapes
Validité : le résultat doit répondre au problème posé
Faible complexité :
 en temps : nombre d’instructions élémentaires, nécessaires à sa
réalisation
 en mémoire occupée
5
L’algorithmique : un art
plus qu’une technique
 Pas de méthode générale
 Nécessite du talent = expérience + intuition
 Rechercher la simplicité : le simple est
toujours beau
 Penser universel :savoir généraliser pour
pouvoir réutiliser
6
Structures
Un algorithme est une boite noire composée


de mécanismes d’entrée / sortie de données
de structures de données permettant de mémoriser les
données du problème
 Variables typées
 Tableaux
 Structures chaînées par des pointeurs

de structures de contrôle permettant de manipuler ces
données
 Tests
 Itérations

de structures fonctionnelles permettant de décomposer et de
formaliser la succession des traitements
7
Types de programmation

Programmation impérative
décrit les opérations en séquences d'instructions
Fortran, Cobol, Basic, Pascal, C, C++, Ada, Java, Python

Programmation déclarative


Programmation logique
ensemble de règles et de fait
Prolog
Programmation fonctionnelle
évaluation de fonctions
Lisp, Scheme, Oz
8
Programmation impérative
2 types d'instructions : affectations et structures
de contrôle
L'affectation :
opération qui permet d'attribuer une valeur à
une variable.
$variable = 4; (affectation d'une valeur)
$variable = 4 + 3; (affectation d'une expression)
$variable = 'Je suis '.$pseudo (utilisation d'une
autre variable)
9
Entrées-Sorties
Méthodes pour accéder aux périphériques :
Clavier, souris, écran, réseau, fichiers, cartes E/S



Obtenir des données
afficher
enregistrer des données
10
Structures de contrôles (1)
programme impératif = séquence d'instructions
séquence = structure de contrôle implicite qui
donne l'ordre d'exécution des instructions,
souvent séparées par un point-virgule ou par
des retours chariots.
Bloc d'instruction : encadré par {} ou par des
déclarations de fonctions ou de procédures
11
Structures de contrôles (2)
Tests conditionnels
SI Test
Instruction 1
SINON
Instruction 2
FIN SI
Instruction 3
12
Structures de contrôles (3)
Itérateur
POUR compteur DE debut à fin
Instruction 1
FIN POUR
Instruction 2
13
Structures de contrôles (4)
Boucle "tant que" à précondition
TANTQUE Test
Instruction 1
FIN TANTQUE
Instruction 2
14
Structures de contrôles (5)
Boucle "jusqu'à ce que" à postcondition
REPETE
Instruction 1
JUSQUACEQUE Condition 1
Instruction 2
15
Fonctions
Une fonction possède :




Un nom
Des paramètres
Un bloc de code
Une valeur de retour
int max(int a, int b)
{
if a > b return a else return b;
}
16
Quelques exemples marquants
Trouver le plus grand de 3 nombres a, b, c
Mauvais réflexe : se précipiter sur la solution
« évidente »
Si a > b alors max_temp = a
sinon max_temp=b
Si c > max_temp alors max = c
sinon max= max_temp
17
Règle n°1 : DIVISER POUR REGNER
Réduire le problème en un problème plus
simple : écrire une fonction Max
Fonction max (n , m) {
Si n>m alors max=n sinon max=m
}
La solution apparait alors simple et belle
Maximum = max(max(a,b),c)
18
Règle n°2 : réfléchir avant de coder
Problème : Ecrire une fonction qui teste si un mot est
un palindrome (mot qui peut se lire de la même
manière de gauche à droite ou de droite à gauche)
Exemple : radar
Mauvaise méthode : se précipiter à comparer la
première lettre avec la dernière, puis la seconde avec
l’avant dernière, etc…
Réfléchir et constater qu’un palindrome est égal à
son inverse
Appliquer la règle n°1 : écrire une fonction inverse
19
Palindrome (itératif)
Fonction inverse( mot ) {
resultat= '' ;
Pour i=1 à longueur(mot)
resultat=char(mot,i)+resultat ;
}
Fonction palindrome( mot ) {
si mot=inverse(mot)
alors palindrome= vrai
sinon palindrome=faux
20
Récursivité
Fonction inverse( mot ) {
inverse=inverse(mot(2,fin))
+ mot(1);
}
21
Structures de données
Variables simples
Types de données

Nombres




Entiers
Réels
Booléen
Chaînes de caractères
Types composés
Langages objet : types composés + fonctions
22
Structures de données complexes
Tableau de données
Données accessibles par un index
Réservation en mémoire → taille figée
Exemples :
tableauEntier[] = {9,4,2,6,8,7}
tableauChaine[] = {'Bonjour','Au revoir', 'Salut'}
TableauReels[] = new float[20]
23
Structures de données complexes
Files et Piles
File : premier arrivé, premier sorti
Pile : dernier arrivé, premier sorti
Collections
Liste, ensemble
24
Conclusion
Un bon algorithme est comme un couteau tranchant
il fait exactement ce que l’on attend de lui, avec un
minimum d’efforts. L’emploi d’un mauvais
algorithme pour résoudre un problème revient à
essayer de couper un steak avec un tournevis : vous
finirez sans doute par obtenir un résultat digeste,
mais vous accomplirez beaucoup plus d’efforts que
nécessaire, et le résultat aura peu de chances d’être
esthétiquement satisfaisant
25
Téléchargement