Académique Documents
Professionnel Documents
Culture Documents
Comment a marche ?
programme crit l it en langage volu compilation p programme crit l it en langage machine excution rsultat de d l'excution
Un programme permet d'exploiter les capacits d'un ordinateur pour automatiser des ordres. Il existe des programmes de gestion, ducatifs, scientifiques, de jeux
Exemple en c++
Programme du jeu du nombre cach :
void main() { int valeur, essai, nbre = 1 ; valeur essai cout<<"Entrer le nombre chercher = " ; cin>>valeur ; clrscr() ; cout<<"Entrer un essai = " ; cin>>essai ; while (essai != valeur) { if (essai > valeur) cout<<"trop grand !" ; else cout<<"trop petit !" ; cout<<"Entrer un nouvel essai = " ; cin>>essai ; nbre++ ; } cout<<"Vous avez trouv en "<<nbre<<" fois"; }
Mmoire
valeur essai
nbre
3 2 1
Ecran
_ Entrer unnombre _ chercher = 38 le essai = 45 trop grand ! Entrer un nouvel essai = _3 23 2 trop petit ! 38 3 Entrer un nouvel essai = _8 Vous avez trouv en 3 fois
Version algo
Programme Jeu void main() { int valeur, essai,nbre = 1 ; Variables valeur, essai, nbre : entier debut nbre 1 cout<< Entrer cout<<"Entrer le nombre " ; nombre afficher "Entrer le nombre chercher =" cin>>valeur ; saisir valeur clrscr() ; cout<<"Entrer un essai = " ; afficher "Entrer un essai = " cin>>essai ; saisir essai while (essai != valeur) { tantque essai <> valeur if (essai > valeur) si essai > valeur alors cout<<"trop grand !" ; afficher "trop grand !" else sinon cout<<"trop petit !" afficher "trop petit !" ; finsi cout<<"Entrer = " ; afficher "Entrer un nouvel essai = " cin>>essai ; saisir essai nbre++ ; nbre nbre + 1 } fintantque cout<<"Vous avez trouv en " afficher "Vous avez trouv en ", nbre, <<nbre<<" fois"; " fois" } fin
Pourquoi ?
Structurer et de clarifier un problme dinformatisation en vue dun futur codage
Comment ? C t
En utilisant une normalisation indpendante des langages
Ce cours prsente une des normalisations. (Prenez lhabitude de toujours garder la mme normalisation)
Structure
Un algorithme comprend deux parties :
Lentte : qui contient la dclaration des constantes et des variables : pour chaque variable utilise, on dfinit le type de donnes quelle contient: entier, rel, logique ou alphanumrique (pour viter tout problme, les variables doivent tre dclares pralablement leur utilisation) utilisation). Le corps : contient lensemble des actions.
/*commentaires*/ ou // ou '
Instructions1 Instructions 2
Fin Fi
Attention aux indentations dans un algorithme, afin de faciliter sa lecture. UTILISEZ TOUJOURS LE MEME FORMALISME
Traitements
Voici les traitements possibles dans un algo :
Saisie Calcul
Affichage
Condition
Affectation (variables)
Itration
Variable et constante
Les variables et les constantes correspondent des zones de stockage de la mmoire vive. Elles permettent de conserver des valeurs en vue d un traitement.
Une constante, en revanche, est dfinie une fois pour toute lintrieur du programme (avant les dclarations de variables) et ne peut pas tre modifie par lutilisateur. Une constante correspond un paramtre.
10
11
Le type des donnes est dfini dans la section Dclaration de variables . Lorsque plusieurs variables sont de mme type, on peut les regrouper sur une mme ligne.
12
Programme TestDclaration
LaValeur : Entier Vnom, Vprenom, VAdresse : Ch V V VAd Chane
Dbut
Instructions
Fin Remarques : Le nom des variables doit tre significatif (parlant). Evitez dappeler une variable s pour Somme ou t pour TotalAchat ; Le nom des variables ne doit pas contenir de signes de ponctuation ponctuation, despaces et ne doit pas commencer par un chiffre ; Il faut toujours dclarer une variable, mme si certains langages de programmation peuvent les dclarer pour vous. Le type pris par dfaut ne sera pas forcment le plus adapt ; Les variables se dclarent toujours en dbut de programme, mme si, encore une fois, certains langages de programmation sont permissifs.
13
Affectation
variable
C est C'est quoi ?
Transfert d'une information dans une variable
valeur
(ou)
variable
Comment a marche ?
La valeur ou le contenu de la variable de droite est transfr en mmoire centrale dans la variable de gauche
Attention, si la variable de gauche contenait une valeur avant l'affectation, cette valeur sera crase par la nouvelle.
14
affectation
Exemple : Quel est l'tat de la mmoire aprs les instructions suivantes ? nom "Roswell" age 3 age 1 Quelles instructions peuvent initialiser la mmoire ainsi ? Mmoire
article prix nom age
Mmoire Roswell 3 1
15
Calcul
variable
C'est quoi ?
Transfert du rsultat d'un calcul dans une variable
calcul
16
Calcul
Oprateurs possibles :
+ * / ** div mod () addition soustraction multiplication division puissance division entire reste de division parenthses th somme 4 + 8 nbannee 18 - age prix 10 * 0,2 moy 30 / 3 surface_carre 4 **2 result 3 div 2 result 3 mod 2 total t t l ( (somme + t ) * remise tva) i
une expression logique (voir "condition") peut aussi tre affecte le rsultat est de type boolen ex : val <-- (A < B) ou non (B >= C)
17
Saisie
saisir nom_variable
C'est quoi ?
Saisie au clavier et transfert en mmoire
Comment a marche ?
Arrt momentan de l'excution (attente de la saisie) Transfert de l'information saisie dans la variable en mmoire Reprise de la suite de l'excution du programme
Les noms de variables sont libres mais rglements : caractres accepts : alphabtiques, numriques et _ Pensez aussi choisir des noms PARLANTS.
18
Affichage
afficher information
C'est quoi ?
Affichage d'une information l'cran
Comment a marche ?
Construction de l'information puis transfert vers l'cran
19
affichage
Exemple : Dans la mmoire, la variable nom contient "Nicolas" et age contient 12 afficher afficher afficher afficher nom "bonjour ", nom, " !" "12 * 2 = ", age*2 "12 * 2 = ", 24 Nicolas bonjour Nicolas ! 12 * 2 = 24 12 * 2 = 24
age age, " ans" nom, " a ", age, " ans" "Il sera majeur dans ", 18 - age, " ans"
20
Exemple : Affichage
instructions qui permettent au programme de communiquer des valeurs lutilisateur en les l utilisateur affichant lcran.
AFFICHER " Bonjour les IG " AFFICHER " Bonjour ", VNom , AFFICHER "La note obtenue par : ", VNom, "est de : ", VNote
10
21
Exemple : Saisir
Ds que le programme rencontre une instruction Saisir, q p g lexcution sinterrompt, attendant la frappe dune valeur au clavier .
Variables Vnom : Chaine Debut AFFICHER " Saisir votre nom : " SAISIR VNom AFFICHER " Bonjour " , Vnom Fin
22
11
23
Condition
si condition alors traitement(s) finsi
Comment a marche ?
Excution des traitements uniquement si la condition est vraie
24
Condition
Forme conditionnelle complte :
12
25
Condition
Autre forme conditionnelle :
Selon Cas variable valeur1 : traitement(s) ... valeurN : traitement(s) sinon traitement(s) FinSelon
Comment a marche ?
Comparaison du contenu de variable avec les diffrentes valeurs Excution des traitements dans le cas d'galit
26
Itration
C'est quoi ?
Une itration U i i est une rptition de traitements sous condition ii d i di i Il existe plusieurs catgories d'itrations, voici les 3 principales : Tantque Rpter Pour
Attention ne pas boucler l'infini ! (cependant il est parfois ncessaire de boucler l'infini dans le cas par exemple d'un serveur l'coute des clients)
13
27
Tantque
tantque condition traitement(s) fintantque
Comment a marche ?
Les traitements s'excutent tant que la condition est vraie q , p g p p q Lorsque la condition devient fausse, le programme reprend aprs le fintantque
28
Repeter
rpter traitement(s) jusqu' condition
Comment a marche ?
Les traitements s'excutent jusqu' ce que la condition soit vraie Lorsque la condition devient vraie le programme reprend aprs le jusqu' vraie, jusqu
14
29
Pour
pour cpt de depart arrivee [pas de pas] pas] traitement(s) finpour
Comment a marche ?
cpt est initialis depart, puis les traitements s'excutent A chaque passage de boucle, cpt est incrment de pas (ou 1 par dfaut) La sortie s'effectue quand cpt a dpass arrivee
30
Complments
Voici quelques complments :
Optimisation
Fonctions classiques
Tests
15
31
Caractres
Oprations sur les chanes de caractres :
Mmoire
concatnation de chanes
nom prenom
Exemple : saisir nom saisir prenom complet1 <-- prenom + nom complet2 <-- prenom + " " + nom afficher complet1 afficher complet2
complet1 complet2
Ecran
32
Fonctions
Ordres de conversions et fonctions classiques : abs(valeur) : valeur absolue d'un nombre
abs(-2) = 2 abs(4) = 4
16
33
Optimisation
Un programme ne doit pas se contenter de "marcher". Il doit tre "optimis". p
Exercice
34
Lisibilit
C'est quoi ?
Optimisation de la prsentation du code source
Pourquoi ?
Pour arriver relire facilement le code en cas d'amlioration ou maintenance
Comment ?
En amliorant la lisibilit qui intervient 3 niveaux :
17
35
Lisibilit
Rcrire le programme suivant en corrigeant les dcalages : debut rep "O" tantque rep = "O" saisir valeur si valeur > 1 alors pour i de 1 10 afficher valeur*i finpour sinon afficher "impossible" p finsi afficher "continuer ? (O/N) " repeter saisir rep jusqu' rep = "N" ou rep = "O" fintantque fin
36
Temps
C'est quoi ?
Optimisation du temps d'excution du programme
Pourquoi ?
Pour viter des temps d'attente trop longs Pour viter d'utiliser des ressources machine inutilement
Comment ?
En supprimant toutes les redondances et lourdeurs au niveau du code
Un gain de temps presque insignifiant peut s'avrer norme en exploitation grande chelle
18
37
Espace
C'est quoi ?
Optimisation de l'espace utilis par les donnes du programme
Pourquoi ?
Pour viter des temps d'attente trop longs lors de certains accs Pour viter d'encombrer inutilement la mmoire et/ou les supports de stockage
Comment ?
En supprimant toutes les redondances et lourdeurs au niveau des donnes
Il faut parfois trouver un compromis entre l'optimisation de l'espace, du temps et la lisibilit. Suivant le cas, certains doivent tre favoriss.
38
Tests
Un programme doit subir des tests avant d'tre exploit : C'est quoi ?
Ensemble de contrles des diffrentes fonctionnalits du programme
Pourquoi ?
Pour vrifier que tout marche bien !
Comment ?
Jeu d'essais prenant en compte le maximum de cas particuliers p p p * Tests de saisie * Tests de scurit * Tests des donnes et calculs * Tests des accs etc
19
39
Tests
Reprenons l'algo de la moyenne des ages (vu avec le "tantque") : dbut saisir age nb 0 total 0 tantque age <> 0 total total + age nb nb + 1 saisir age fintantque afficher "moyenne affiche "mo enne = " total / nb ", fin Faire les 2 traces suivantes : a)12 8 7 0 b)0 Que faut-il modifier ?
age
nb
total
40
Tests
Corriger les 4 erreurs qui se trouvent dans l'algo suivant :
programme multiples Var nombre : num borne-sup : num i : num Debut afficher "Saisir le nombre de dpart " saisir nombre afficher "Saisir la borne suprieure " saisir "borne-sup" afficher "liste des multiples de ", nombres " :" liste nombres, : pour i de nombre borne-sup pas de borne-sup afficher j finpour Fin Remarque : un multiple d'un nombre est une valeur qui est divisible par ce nombre Exemple : Les multiples de 3 sont 3,6,9,12,15etc (jusqu une borne suprieure)
20