csii1a algo/progr1 les bases algorithmiques algorithmique csii1a
TRANSCRIPT
CSII1a Algo/Progr 1
Les bases algorithmiques
Algorithmique CSII1A
CSII1a Algo/Progr 2
Algorithmique, définition
C’est une méthode de résolution de problèmes,
Qu’est ce que l’algorithmique?
Développer des logiciels, écrire des programmes
S’applique à toutes sortes de problèmes mais plus particulièrement à l’informatique:
CSII1a Algo/Progr 3
Objectif d’un logicielMettre en œuvre au sein d’un programme des fonctionnalités plus ou moins complexes
Reçoit des données en entrées, applique des traitements et renvoie des résultats en sorties
Logiciel:
Traitements
Données en entrées
Résultats en sorties
Stocke les données dans une base de données
Gère les interactions avec l’utilisateur au travers d’une interface (IHM), ...
CSII1a Algo/Progr 4
Démarche algorithmique
Il est très difficile d’écrire directement un programme aux fonctionnalités complexes
Elle permet de passer du problème au programme, en écrivant un algorithme
L’algorithmique ou "démarche algorithmique " est une étape intermédiaire
CSII1a Algo/Progr 5
Objectif de l’algorithmique
Modéliser les fonctionnalités nécessite de:
-Identifier les données en entrées
L’algorithmique se focalise sur l’aspect traitement: Modéliser les fonctionnalités à implémenter
La réalisation de la structure des données s’appuie aussi sur une phase de réflexion: l’analyse (Merise)
-Identifier les résultats en sorties
-Définir les traitements à appliquer
CSII1a Algo/Progr 6
Du problème au programme
Passer du problème au programme:
Le problème:Fonctionnalités à mettre en œuvre dans un programe
Langage naturel
Le programme:Executable qui implémente les fonctionnalités
Langage informatique
L’algorithme:Données en entrées,
Résultats à obtenir,
traitements
Langage algorithmique
Par une étape intermédiaire: l’algorithme
CSII1a Algo/Progr 7
Les langagesLes fonctionnalités à mettre en œuvre sont exprimées en langage naturel
Un algorithme est exprimé en pseudo-langage ou langage structuré
Un programme est écrit dans un langage de programmation donnéLe but est de traduire des instructions ou actions complexes en instructions compréhensibles par la machineCes instructions machines sont appelées primitives
CSII1a Algo/Progr 8
Que contient un algorithmeUn algorithme contient la liste des actions à effectuer représentant un programme ou logiciel
Ceci indépendamment de l’implémentation sur machine et des détails qui en découlent:
-Syntaxe et utilisation du langage de programmation cible
-Déclaration et utilisation des bibliothèques, des fonctions, des types à utiliser,…
CSII1a Algo/Progr 9
Représentation d’un algorithmePlusieurs manières de représenter un algorithmeOn peut l’exprimer en langage naturel, exemple une recette de cuisine
Ingrédients: (données en entrée)- 250gr de farine, 250gr de sucre, 250gr de beurre,250ml De lait, 3 oeufs
Objectifs: (résultat en sortie) Faire (et réussir) un gâteau quatre-quart
Exemple de recette: le Quatre-Quart:
CSII1a Algo/Progr 10
RecetteRecette: (les traitements: l’algorithme )
-Faire fondre le beurre
-Mélanger la farine le sucre et les oeufs
-Rajouter le beurre
-Rajouter le lait jusqu’à obtention d’une pâte onctueuse
-Mettre au four 20min thermostat 7
-Dégustez...
CSII1a Algo/Progr 11
Pseudo-langageC’est un langage simplifié proche du langage naturelLa syntaxe est souple contrairement à un langage de programmation
L’intérêt est dans la construction de la solution, sa cohérence et non dans les détails de mise en oeuvre
CSII1a Algo/Progr 12
Pseudo-langage, exempleExemple affiche un message selon la grandeur d’une personneAlgo LaTailledébut Saisir taille si taille > 1,80 Alors Afficher ‘Grand’ sinon Afficher ‘petit’ fin
Comporte des mots clés qui permettent de structurer le langage: Algo, debut-fin, Si-Alors-Sinon
Afficher et Saisir sont des actions (instructions)
CSII1a Algo/Progr 13
OrganigrammeModélisation du même algorithme sous forme d’un organigramme
DEBUT
Saisir Taille
FIN
NonTaille > 1,80 ?
Afficher ‘Petit’ Afficher ‘Grand’
Oui
CSII1a Algo/Progr 14
Représentation, résuméL’idéal est de pouvoir écrire un algorithme directement en langage naturelEn l’état actuel de la technologie (machines et softs), c’est impossibleEn informatique de développement (écrire des programmes) on utilise le pseudo-langage
Les organigrammes seront plutôt utilisés en informatique industrielle: assembleur, automatisme (grafcet)
CSII1a Algo/Progr 15
Les variablesL’exécution d’un programme nécessite de traiter, de calculer un grand nombre de données
Il est indispensable de pouvoir stocker ces données de manière temporaire durant le fonctionnement d’un programme
On va pour cela utiliser des variables
CSII1a Algo/Progr 16
Variables, suiteVariable= Nom unique qui permet d’accéder à un emplacement en mémoire pour y stocker une valeur
Le contenu d’une variable et susceptible d’évoluer (modifier) tout au long de la durée de vie du programme
a 12
CSII1a Algo/Progr 17
ConstantesA l’inverse des variables, les programmes utilisent parfois des valeurs invariantes pendant leur exécution
Exemple: PI = 3.1415
CSII1a Algo/Progr 18
Règles de nommageTous les identifiants dans un même programme doivent être unique
Concerne: Les variables, les constantes, le nom du programme, les procédures & fonctions,...
Ces identifiants doivent respecter une syntaxe
-Le 1er caractère doit être une lettre ou le souligné _
-Les car. suivants: idem + chiffres
-Pas de car. espace, pas de car. spéciaux
CSII1a Algo/Progr 19
Exemple d’identifiantsA correctUser_1 correctNom prenom erreur
1b erreur
Nom_prenom correct
Eviter d’utiliser les caractères accentués
CSII1a Algo/Progr 20
Déclaration des variablesIl faut déclarer les variables et constantes avant de les utiliser, en début de programmeLes variables doivent être typéesExemple:
Algo LaTaillevar taille : réel début Saisir taille si taille > 1,80 Alors Afficher ‘Grand’ sinon Afficher ‘petit’ fin
CSII1a Algo/Progr 21
Déclaration des constantesExemple:
Algo LePerimetreconst PI = 3.1415 var Per : réel début instructionsfin
La déclaration des constantes diffère de celle des variables: pas de type spécifiéNom constante = valeur
CSII1a Algo/Progr 22
Affectation des variablesBut de l’affectation: Placer une valeur dans une variable, la valeur est mémorisée
a := 12 oua <- 12
Syntaxe: variable := valeur ( := ou <- )
Exemple:
CSII1a Algo/Progr 23
Instructions d’entrées/sortiesCes instructions permettent d’interagir avec l’utilisateurAfficher un résultat: Afficher(<valeur>)
Saisir une valeur: Saisir <var>
Exemple: Afficher ( ‘x?’) Afficher ( ‘tva=’,tva)
exemple: Saisir (a)
CSII1a Algo/Progr 24
Types de donnéesLes données manipulées par les programmes doivent toutes être typéesLes variables sont typés explicitement:
var : type
Les constantes sont typées implicitement PI = 3.1415, PI sera un réel
Les types : entier, réel, booléen, caractère, Chaîne de caractères, tableau
CSII1a Algo/Progr 25
Type entierEnsemble des valeurs: ZOpérateurs arithmétiques: +, -, *
-DIV division entière
-MOD Modulo, reste de la division entière
-ENT Partie entière d’un réel
Exemple: 15 DIV 9 = 1, 15 MOD 9 = 6 ENT(3.1415) = 3
Opérateurs relationnels: =, <, >, >=, <=, <>
-Différent: <> ou !=
CSII1a Algo/Progr 26
Type réelEnsemble des valeurs: ROpérateurs arithmétiques: +, -, *, /Opérateurs relationnels: idem entierReprésentation des nombres réels: notation scientifiqueExp: 3.1415 0.31415 . 10+1
CSII1a Algo/Progr 27
Type booléenEnsemble des valeurs: vrai , fauxOpérateurs logiques: ET, OU, NONOpérateurs relationnels: idem entier
faux < vrai
CSII1a Algo/Progr 28
Type caractèreChaque caractère est codé par un entiertable ASCII
Cette table permet de représenter 256 caractèresLe système UNICODE tend aujourd’hui à remplacer ASCII: Un caractère est représenté sur 2 octetsUNICODE permet de d’intégrer les principaux alphabets du monde (cyrillique, grec, asiatique,…)
Pour garder la compatibilité avec l’existant, le début d’UNICODE est la table ASCII
CSII1a Algo/Progr 29
Type caractère, suite
Les caractères sont ordonnés (sur leur code ASCII):
‘0’ < ‘9’ < ‘A’ < ‘Z’ < ‘a’ < ‘z’On peut leur appliquer les opérateurs relationnelsAutres opérations:- ord(‘A’) = 65
Le caractère ‘A’ vaut 65, ‘B’= 66, ‘0’= 48,...
- chr(65) = ‘A’
CSII1a Algo/Progr 30
Type Chaîne de caractères Regroupe plusieurs caractères, stocke du texte
Permet de représenter des mots, des phrases
Construire une chaîne à partir de 2 chaînes de caractères: opération de concaténation
Exemple: s1 := ‘bon’ s2 := ‘jour’ str := s1 + s2Str contiendra: ‘bonjour’
CSII1a Algo/Progr 31
Type TableauStocke plusieurs données de même type
Tableau à 1 dimension, exemple:
tab : Tableau [1..100] d’entiers
Tableau à 2 dimensions, exemple:
tab : Tableau [1..100, 1..100] de réels
On peut créer des tableaux de dimension n
Accès à un élément du tableau: lecture ou écritureLecture: Afficher(tab[i])Ecriture: tab[i]:= val
CSII1a Algo/Progr 32
Les instructions
-Instructions alternatives (ou sélectives)
-Instructions itératives (ou répétitives)
Ce sont les instructions de base en algorithmique-programmation que l’on retrouve dans tous les langages informatiques
Il existe 2 catégories d’instructions:
CSII1a Algo/Progr 33
Les instructions alternativesInstruction Si-Alors, forme simple
Si condition Alors action(s) FinSi
-La condition est traitée, si elle est vrai, alors l’action (ou les) est exécutée
Instruction Si-Alors-sinon
Si condition Alors action1 sinon action2 FinSi
-La condition est traitée, si elle est vrai, alors l’action1 (ou les) est exécutée,-Si la condition est fausse, alors c’est l’action2 qui sera exécutée
CSII1a Algo/Progr 34
Imbrications de siIl est possible d’imbriquer des structures si-alors-sinon dans la clause si et la clause sinonExemple:
Si cond Alors Si cond2 Alors act2 FinSiSinon Si cond3 Alors act3 Sinon act4 FinSiFinSi
Ne pas dépasser 4 ou 5 niveaux d’imbrication
CSII1a Algo/Progr 35
Instruction de choixEquivalent à des Si-alors imbriqués, exemple:
Si cond Alors Act1Sinon Si cond2 Alors Act2Sinon Si cond3 Alors Act3Sinon Si cond4 Alors Act4 ...
S’écrira plus facilement avec une structure Choix:Choix var Faire val1: act1 val2: act2 val3: act3 Sinon Act5FinChoix
Remarque:var doit être de type ordinal: booléen, entier, car.
CSII1a Algo/Progr 36
Les Instructions itératives3 types de boucles:
Pour
TantQue
Répéter Jusqu’a
CSII1a Algo/Progr 37
Instruction PourStructure du Pour:Pour var := valInit A valFin Faire ActionFinPour
Exemple:Pour i := 0 A 5 Faire Afficher ‘Bonjour n°’, iFinPour
Résultat:Bonjour n°0Bonjour n°1Bonjour n°2Bonjour n°3Bonjour n°4Bonjour n°5
i en sortant de la boucle vaut 6
CSII1a Algo/Progr 38
Instruction TantQueStructure du TantQue:TantQue condition Faire Action // exécutée tant que condition est VRAIFinTantQue
Exemple:i := 0TantQue i <= 5 Faire Afficher ‘Bonjour n°’, i i := i +1FinTantQue
Résultat:Bonjour n°0Bonjour n°1Bonjour n°2Bonjour n°3Bonjour n°4Bonjour n°5
CSII1a Algo/Progr 39
Instruction répéter-JusquaStructure du Répéter-Jusqu’a:Répéter Action // exécutée jusqu’à ce que Jusqua Condition // la condition deviennent VRAI
Exemple:i := 0Répéter Afficher ‘Bonjour n°’, i i := i +1Jusqua i > 5
Résultat:Bonjour n°0Bonjour n°1Bonjour n°2Bonjour n°3Bonjour n°4Bonjour n°5
CSII1a Algo/Progr 40
Exercices, TD n°1Exercice 1:Saisir un nombre et afficher s’il est pair ou impair.
Exercice 2:Résoudre l’équation du 1er degré ax + b = 0,les coefficients a et b seront saisis
Exercice 3:Résoudre l’équation du 2nd degré ax² + bx+c = 0,les coefficients a et b et c seront saisis
CSII1a Algo/Progr 41
TD n°1, suiteExercice 4a:Saisir un nombre et afficher si c’est un nombre premier ou non.
Exercice 4b:Afficher les 100 premiers nombres premiers.
CSII1a Algo/Progr 42
TD n°1, exercice 5Exercice 5:Faire rechercher un nombre à l’utilisateur en 5 coups maximum. Afficher à chaque étape
-Afficher à chaque étape ‘trop grand’ ou ‘trop petit’
-Afficher à la fin ‘gagné’ ou ‘perdu’ ainsi que le nombre de coups.