csii1a algo/progr1 les bases algorithmiques algorithmique csii1a

42
CSII1a Algo/Progr 1 Les bases algorithmiques Algorithmique CSII1A

Upload: cerf-baudry

Post on 03-Apr-2015

115 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: CSII1a Algo/Progr1 Les bases algorithmiques Algorithmique CSII1A

CSII1a Algo/Progr 1

Les bases algorithmiques

Algorithmique CSII1A

Page 2: CSII1a Algo/Progr1 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:

Page 3: CSII1a Algo/Progr1 Les bases algorithmiques Algorithmique CSII1A

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), ...

Page 4: CSII1a Algo/Progr1 Les bases algorithmiques Algorithmique CSII1A

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

Page 5: CSII1a Algo/Progr1 Les bases algorithmiques Algorithmique CSII1A

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

Page 6: CSII1a Algo/Progr1 Les bases algorithmiques Algorithmique CSII1A

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

Page 7: CSII1a Algo/Progr1 Les bases algorithmiques Algorithmique CSII1A

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

Page 8: CSII1a Algo/Progr1 Les bases algorithmiques Algorithmique CSII1A

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,…

Page 9: CSII1a Algo/Progr1 Les bases algorithmiques Algorithmique CSII1A

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:

Page 10: CSII1a Algo/Progr1 Les bases algorithmiques Algorithmique CSII1A

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...

Page 11: CSII1a Algo/Progr1 Les bases algorithmiques Algorithmique CSII1A

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

Page 12: CSII1a Algo/Progr1 Les bases algorithmiques Algorithmique CSII1A

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)

Page 13: CSII1a Algo/Progr1 Les bases algorithmiques Algorithmique CSII1A

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

Page 14: CSII1a Algo/Progr1 Les bases algorithmiques Algorithmique CSII1A

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)

Page 15: CSII1a Algo/Progr1 Les bases algorithmiques Algorithmique CSII1A

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

Page 16: CSII1a Algo/Progr1 Les bases algorithmiques Algorithmique CSII1A

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

Page 17: CSII1a Algo/Progr1 Les bases algorithmiques Algorithmique CSII1A

CSII1a Algo/Progr 17

ConstantesA l’inverse des variables, les programmes utilisent parfois des valeurs invariantes pendant leur exécution

Exemple: PI = 3.1415

Page 18: CSII1a Algo/Progr1 Les bases algorithmiques Algorithmique CSII1A

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

Page 19: CSII1a Algo/Progr1 Les bases algorithmiques Algorithmique CSII1A

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

Page 20: CSII1a Algo/Progr1 Les bases algorithmiques Algorithmique CSII1A

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

Page 21: CSII1a Algo/Progr1 Les bases algorithmiques Algorithmique CSII1A

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

Page 22: CSII1a Algo/Progr1 Les bases algorithmiques Algorithmique CSII1A

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:

Page 23: CSII1a Algo/Progr1 Les bases algorithmiques Algorithmique CSII1A

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)

Page 24: CSII1a Algo/Progr1 Les bases algorithmiques Algorithmique CSII1A

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

Page 25: CSII1a Algo/Progr1 Les bases algorithmiques Algorithmique CSII1A

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 !=

Page 26: CSII1a Algo/Progr1 Les bases algorithmiques Algorithmique CSII1A

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

Page 27: CSII1a Algo/Progr1 Les bases algorithmiques Algorithmique CSII1A

CSII1a Algo/Progr 27

Type booléenEnsemble des valeurs: vrai , fauxOpérateurs logiques: ET, OU, NONOpérateurs relationnels: idem entier

faux < vrai

Page 28: CSII1a Algo/Progr1 Les bases algorithmiques Algorithmique CSII1A

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

Page 29: CSII1a Algo/Progr1 Les bases algorithmiques Algorithmique CSII1A

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’

Page 30: CSII1a Algo/Progr1 Les bases algorithmiques Algorithmique CSII1A

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’

Page 31: CSII1a Algo/Progr1 Les bases algorithmiques Algorithmique CSII1A

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

Page 32: CSII1a Algo/Progr1 Les bases algorithmiques Algorithmique CSII1A

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:

Page 33: CSII1a Algo/Progr1 Les bases algorithmiques Algorithmique CSII1A

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

Page 34: CSII1a Algo/Progr1 Les bases algorithmiques Algorithmique CSII1A

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

Page 35: CSII1a Algo/Progr1 Les bases algorithmiques Algorithmique CSII1A

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.

Page 36: CSII1a Algo/Progr1 Les bases algorithmiques Algorithmique CSII1A

CSII1a Algo/Progr 36

Les Instructions itératives3 types de boucles:

Pour

TantQue

Répéter Jusqu’a

Page 37: CSII1a Algo/Progr1 Les bases algorithmiques Algorithmique CSII1A

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

Page 38: CSII1a Algo/Progr1 Les bases algorithmiques Algorithmique CSII1A

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

Page 39: CSII1a Algo/Progr1 Les bases algorithmiques Algorithmique CSII1A

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

Page 40: CSII1a Algo/Progr1 Les bases algorithmiques Algorithmique CSII1A

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

Page 41: CSII1a Algo/Progr1 Les bases algorithmiques Algorithmique CSII1A

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.

Page 42: CSII1a Algo/Progr1 Les bases algorithmiques Algorithmique CSII1A

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.