Académique Documents
Professionnel Documents
Culture Documents
Exercice
Int a = 23 ; - Donner la valeur des variables après les instructions suivantes :
Int b Int
= 5i ;= 13;
Int jla=valeur
Affecter 5; de a à b et la valeur b à a.
i = i % 5; Programmation fondamentale
j = j * i + 2;
float k = (i * 71)
+ j)Introduction
/ 5;
i=? 2)? Concepts
j= k = ?et principes fondamentaux de la programmation
3) Constantes et variables
4) Typage
5) Opérateurs arithmétiques
6) Affectation
7) Algorithme
8) Mon premier programme
9) Lecture et Ecriture
10) Tester vos algorithmes (Algobox)
11) Instructions conditionnelles
12) Répétition conditionnelle d'instructions (Les boucles)
13) Les tableaux
14) Procédures et Fonctions
15) Travaux pratiques
Objectif du cours
Il s'agit de poser les notions de base de la programmation
- Concepts et principes fondamentaux de la programmation
- Algorithme
- Expressions et instructions.
- Constantes et variables, affectation.
- Types de données simples : nombres entiers ou non entiers, booléens, caractères et chaînes
de caractères.
- Expressions et instructions conditionnelles.
- Répétition conditionnelle d'instructions (boucle tant que). Répétition non conditionnelle
d'instructions (boucle pour).
- Fonctions et procédures. Paramètres formels, paramètres effectifs et autres.
1. Introduction
1.1 Informatique
1) Théorie et traitement de l'information à l'aide de programmes mis en œuvre sur
ordinateurs.
Votre ordinateur est une machine bizarre, c'est le moins que l'on puisse dire. On ne peut
s'adresser à lui qu'en lui envoyant des 0 et des 1. Ainsi, si je traduis « Fais le calcul 3 + 5 » en
langage informatique, ça pourrait donner quelque chose comme (j'invente, je ne connais quand
même pas la traduction informatique par cœur) :
0010110110010011010011110
Ce que vous voyez là, c'est le langage informatique de votre ordinateur, appelé langage binaire
(retenez bien ce mot !). Votre ordinateur ne connaît que ce langage-là et, comme vous pouvez le
constater, c'est absolument incompréhensible.
Donc voilà notre premier vrai problème :
Comment parler à l'ordinateur plus simplement qu'en binaire avec des 0 et des 1 ?
Votre ordinateur ne parle pas l'anglais et encore moins le français. Pourtant, il est inconcevable
d'écrire un programme en langage binaire. Même les informaticiens les plus fous ne le font pas,
c'est vous dire !
Eh bien l'idée que les informaticiens ont eue, c'est d'inventer de nouveaux langages qui seraient
ensuite traduits en binaire pour l'ordinateur. Le plus dur à faire, c'est de réaliser le programme qui
fait la « traduction ». Heureusement, ce programme a déjà été écrit par des informaticiens et nous
n'aurons pas à le refaire (ouf !). On va au contraire s'en servir pour écrire des phrases comme : «
Fais le calcul 3 + 5 » qui seront traduites par le programme de « traduction » en quelque chose
comme : «0010110110010011010011110».
Le schéma suivante résume ce que je viens de vous expliquer.
• La soustraction ;
• La multiplication ;
• La division.
3. Constantes et variables
3.1 Constantes
La manière la plus simple de manipuler des valeurs dans un programme est d’écrire directement
ces valeurs. Ainsi, on pourra écrire 24 pour désigner un nombre entier, 176.54 pour désigner le
12
nombre réel correspondant, 2.54E+12 pour désigner le nombre 2.54 × 10 , ’a’ pour indiquer un
caractère, "Jean-Paul" pour désigner une chaîne de caractères, et true pour indiquer la valeur
booléenne «vrai ».
Toutes ces valeurs sont des constantes. Je peux par exemple demander à un programme
d’afficher le résultat de l’opération 1+1. Le seul problème est bien entendu que si je souhaite
effectuer une autre opération, il faudra modifier le programme, par exemple en écrivant 1+2. Or
l’un des intérêts de la programmation est justement de pouvoir décrire une démarche opératoire
qui reste la même alors que les données du problème peuvent changer. Par exemple, il est clair
que l’opération «créditer un compte bancaire » correspond au même algorithme et au même
programme, quels que soient le solde initial du compte et le montant dont on doit le créditer.
Il est donc indispensable de ne pas rester limité à l’emploi de constantes dans les programmes
informatiques.
3.2 Variables
Le but d'un programme est de faire quelque chose avec des données ou, en d'autres termes, avec
les choses que vous mettez dans votre programme. Souvent, votre programme utilisera une ou
plusieurs variables pour manipuler les données. Plus précisément, une variable est un conteneur
utilisé pour stocker un élément de données dont votre programme pourrait avoir besoin.
Comme mentionné dans la vidéo, une variable peut être vue comme une boîte qui contient une
valeur. Cette boîte est stockée sur une étagère dans un entrepôt gigantesque. L'emplacement de
chaque boîte de cet entrepôt est soigneusement enregistré, tout comme votre ordinateur
enregistre l'emplacement de votre variable en mémoire.
La programmation est basée sur ces deux concepts nécessaires, les variables et les instructions.
Sans eux, rien ne serait possible.
Les variables correspondent aux récipients utilisés dans une recette et les instructions aux
différentes étapes de la recette. En suivant les étapes de la recette, les instructions du programme,
nous manipulons des aliments dans les récipients, ce qui correspond aux données que nous
mettons dans les variables. Ces manipulations vont faire évoluer les aliments en quelque chose
de nouveau.
Dans les recettes, la chimie permet de transformer les aliments en un produit fini tout nouveau,
avec une texture et un comportement spécifique. En programmation, ce sont les mathématiques
qui vont jouer ce rôle de transformateur sur les données dans les variables. À vous de choisir vos
instructions avec soin pour obtenir les bonnes transformations et aller vers le résultat attendu.
Une donnée placée dans une variable s'appelle une valeur. En utilisant l'analogie des boîtes,
différentes boîtes peuvent stocker différentes valeurs. Par exemple, vous pouvez utiliser une
boîte pour ranger de l'argent pour vos dépenses courantes et une autre pour économiser en vue
d'une occasion particulière, comme un voyage. Vous pouvez également vider les boîtes ou
changer leur contenu quand vous ajoutez ou retirez de l'argent.
Pour savoir à quoi sert chaque boîte, vous devez les étiqueter. Avec la programmation, c'est la
même chose : vous attribuez un nom à votre variable.
Le nom d'une variable doit refléter la signification de son contenu, comme des étiquettes sur une
boîte. Voici quelques recommandations générales pour la création de noms :
• utilisez des noms descriptifs tout au long de votre code.
Ça risque d'être un peu long ! Cependant, les noms descriptifs sont bien pratiques à long
terme pour vous et pour votre équipe, car ils offrent une meilleure lisibilité et facilitent
ainsi la compréhension du code pour les autres développeurs. Par exemple, si vous voulez
stocker des cookies sans sucres, l'utilisation d'un nom descriptif comme
cookiesSansSucres est bien plus précis que, disons, cookies ou cookiesSains.
• Soyez complet.
Évitez si possible d'abréger ou de raccourcir les mots, même si une version plus courte
semble évidente. Par exemple, chiffreDAffairesAnnuel est préférable à chifAfAnn.
• Suivez une convention d'appellation commune.
L'une des conventions d'appellation les plus populaires est le Camel Case : une phrase
composée de plusieurs mots sans espaces ni ponctuation. Le premier mot est écrit en
minuscules et tous les autres mots commencent par une majuscule. Par exemple,
monBudget.
4. Typage
En programmation, il est nécessaire de stocker des données. Les données sont stockées en
mémoire. Les emplacements de mémoire qui stockent des données sont appelés variables.
le type de variable est un peu comme le type des récipients. Chaque récipient appartient à une
grande famille. Il y a les saladiers, les poêles, les faitouts, etc.
Chaque famille de récipient s’utilise d’une manière qui lui est propre, offre des services
spécifiques.
Retenez qu’une variable va être limitée en fonction de son type tout comme un récipient est
limité en fonction de sa famille.
De même, je peux additionner des nombres, pas des caractères.
Enfin, dans les faits cela dépend du langage que vous utilisez. J’entre plus dans les détails ci-
dessous.
Il y a 4 grands types en programmation :
• les nombres entiers
• les nombres flottants, c’est-à-dire les nombres avec une virgule, Reel
• les chaines de caractères
• les booléens
Sachez qu’il existe une certaine diversité pour chacun de ces types, pour chaque langage. Vous
devez regarder les caractéristiques de votre langage pour connaitre les types existants et leurs
caractéristiques.
Chaque emplacement de mémoire peut stocker un type de données spécifique. La taille de la
mémoire pour chaque type de données est différente. Dans les langages de programmation tels
que Python, le programmeur n'a pas besoin de déclarer le type de la variable. Dans les langages
de programmation tels que Java, le programmeur doit déclarer le type de variable. Il existe un
certain nombre de types de données tels que char, int, float et double. Le type de données char est
utilisé pour stocker une valeur de caractère unique. Le type de données int est utilisé pour stocker
des valeurs numériques sans points décimaux. Les types de données float et double sont utilisés
pour stocker des valeurs numériques avec des points décimaux.
– boolean : booléen, peut valoir true ou false
– byte : entier sur 8 bits [-128, 127]
– char : caractère Unicode codé sur 16 bits
– short : entier codé sur 16 bits [-32 768, 32 767]
– int : entier codé sur 32 bits
– long : entier codé sur 64 bits
– float : réel codé sur 32 bits, au format IEEE
– double : réel double précision codé sur 64 bits, au format IEEE
NB : Le float nécessite moins de mémoire que le double.
4.3 En pratique
Bon, c’est bien beau, je vous dis que la programmation n’est pas possible sans variable, mais
pour le moment ce n’est pas forcément si clair. Je vous propose donc un petit exemple
Calculer l’âge moyen d’une famille de 4 personnes
Réfléchissez à l’algorithme vous permettant de calculer l’âge moyen d’une famille de 4
personnes. Faites une pause et tentez, là tout de suite, d’écrire cet algorithme.
• Entier ageMere;
• Entier agePere;
• Entier ageEnfant1;
• Entier ageEnfant2;
• Reel ageMoyenFamille;
Facile
En résumé
Voici ce que nous avons découvert dans ce module sur les variables :
Une variable est un moyen de stocker des valeurs. Pour utiliser une variable, on doit à la fois la
déclarer pour permettre au programme de la connaître puis on doit lui "affecter" une valeur pour
permettre au programme de savoir quelle valeur nous avons stockée dans la variable.
Voici comment déclarer une variable appelée Age
Entier Age,
Maintenant, on peut lui affecter la valeur 10 :
Age = 10,
Si on veut (et on le veut souvent ! ), on peut déclarer et affecter une variable en une seule
instruction :
Entier Age = 10,
Si, pour une raison quelconque, on veut modifier la valeur d'une variable, on peut lui réaffecter
une valeur :
Age = 20,
5. Opérateurs arithmétiques
Un jeu riche d’opérateurs pour écrire toutes sortes d’expressions arithmétiques et logiques est
disponible. Des règles de priorité entre opérateurs permettent d’écrire les expressions de la
manière la plus «naturelle » possible; par exemple, a + b * c équivaut à a + (b * c) et non à (a +
b) * c. Ceci étant, en cas de doute, rien ne vous empêche de parenthéser vos expressions.
Les opérateurs arithmétiques binaires sont présentés dans le tableau ci-après.
Op. Exemple Description / remarques
- b-c soustraction
* 13 * x multiplication
/ a/b Division
&& (a>0) && (b<0) et logique – le deuxième opérande n’est évalué que si le
premier opérande est vrai
|| (a>0) || (b<0) ou logique – le deuxième opérande n’est évalué que si
le premier opérande est faux
& (a>0) & (b<0) et logique – les deux opérandes sont toujours évalués –
Utilisation déconseillée
Je vous conseille de prendre l’habitude d’utiliser par défaut les versions && et || des opérateurs
et/ou.
6 L’affectation
L’affectation est une opération fondamentale dans les langages de programmation impératifs.
Elle consiste à changer la valeur d’une variable, c’est-à-dire à stocker une nouvelle valeur à
l’emplacement désigné par la valeur de la variable. De manière conceptuelle, on la note
habituellement x ? y , qui signifie qu’on stocke la r-valeur de y à l’adresse désignée par la l-
valeur de x. En Java, cette opération s’écrit x = y .
Il est très fréquent d’ajouter ou de soustraire une valeur à une variable, par exemple d’écrire a =
a + 3; .Vous avez donc la possibilité d’écrire la même chose de manière raccourcie;
de même pour les autres opérations arithmétiques, ainsi que les opérations bit à bit :
a += 3; // équivaut à a = a + 3
a -= 3; // équivaut à a = a – 3
a *= 3; // équivaut à a = a * 3
a /= 3; // équivaut à a = a / 3
a %= 3; // équivaut à a = a % 3 a
etc.
Parmi ces opérations, le cas particulier de l’incrémentation et de la décrémentation est assez
fréquent pour justifier d’une notation particulière :
a++; // équivaut à a += 1 ou à a = a +1
Exercice 1 : Moyenne
Faire la moyenne de 3 notes 16, 11, 20
Afficher le resultat
exercice 1 : 15,67
exercice 2 : 216 euros
exercice 3 : 13400 abonnée
7. Algorithme
Un algorithme est une manière de résoudre un problème.
Un algorithme est la description précise, sous forme de concepts simples, de la manière dont on
peut résoudre un problème.
Dans la vie de tous les jours, nous avons souvent besoin de résoudre des problèmes. Surtout si on
considère la notion de "problème" au sens large.
7.2 Omniprésence des algorithmes
Un exemple de problème qui nous concerne tous (oui, même vous) est celui de la cuisine : vous
êtes dans une cuisine, vous trouvez du riz, comment le cuire ? Voici une marche à suivre simple :
• remplir une casserole d'eau ;
•y ajouter une pincée de sel ;
• la mettre sur le feu ;
• attendre l'ébullition de l'eau ;
• mettre le riz dans la casserole ;
• le laisser cuire 10 à 15 minutes ;
• égoutter le riz.
J'ai décrit une solution au problème "il faut faire cuire du riz", sous forme de concepts simples.
Vous remarquerez qu'il y a pourtant beaucoup de choses implicites : j'ai précisé que vous étiez au
départ en possession du riz, mais il faut aussi une casserole, de l'eau, etc. On peut se trouver dans
des situations spécifiques où tous ces objets ne sont pas disponibles, et il faudra alors utiliser un
autre algorithme (ou commencer par construire une casserole...).
Les instructions que j'ai utilisées sont "précises", mais on pourrait préciser moins de choses, ou
plus. Comment fait-on pour remplir une casserole d'eau, plus précisément ? Si le cuisinier à qui
la recette est destinée ne sait pas interpréter la ligne "remplir une casserole d'eau", il faudra
l'expliquer en termes plus simples (en expliquant comment utiliser le robinet, par exemple).
De même, quand vous programmez, le degré de précision que vous utilisez dépend de nombreux
paramètres : le langage que vous utilisez, les bibliothèques que vous avez à disposition, etc.
Notion de structure de données
En plus de manipuler l'information, il faut aussi la stocker. La manière dont on organise cette
information stockée peut avoir des conséquences très importantes sur leur manipulation.
Concrètement, prenez par exemple un dictionnaire : on peut définir un dictionnaire comme "un
ensemble de mots et leur définition". Cependant, pourrait-on utiliser correctement un
dictionnaire dont les mots sont placés dans le désordre ? Certainement pas, parce qu'il serait très
difficile de trouver la définition d'un mot que l'on cherche (c'est encore possible, il suffit de lire le
dictionnaire page par page jusqu'à ce qu'on trouve le mot). L'ordre alphabétique est clairement
une solution très efficace pour pouvoir retrouver rapidement le mot que l'on cherche.
Il y a des liens forts entre les algorithmes (qui décrivent des méthodes) et les structures de
données (qui décrivent une organisation). Typiquement, certaines structures de données sont
indispensables à la mise en place de certaines méthodes, et à l'inverse certains algorithmes sont
nécessaires aux structures de données : par exemple, si on veut rajouter un mot dans un
dictionnaire classé alphabétiquement, on ne peut pas juste l'écrire dans l'espace libre sur la
dernière page, il faut utiliser un algorithme pour l'ajouter au bon endroit. L'étude des structures
de données est donc inséparable de celle des algorithmes.
Nom de l’algorithme :
• Il permet tout simplement d’identifier un algorithme parmi d’autres.
• La partie entête d’un
algorithme permet tout simplement de donner un nom à notre
algorithme. Ce nom n’influence en rien le bon déroulement de l’algorithme.
• En générale il faut donner des noms parlants à nos algorithmes, ceci pour permettre au
lecteur d’avoir une idée de ce que fera l’algorithme qu’il lira.
Les déclarations :
C’est une liste exhaustive de variables utilisées et manipulées dans le corps de I ‘algorithme.
c’est une liste exhaustive des objets, grandeurs utilisés et manipulés dans le corps de
l’algorithme. Cette liste est placée en début d’algorithme.
Les Constantes :
Elles représentent des chiffres, des nombres, des caractères, des chaînes de caractères. … dont la
valeur ne peut pas être modifiée au cours de l’exécution de l’algorithme.
Une constante c’est une partie de l’algorithme qui permet de déclarer des constantes.
Une constante est un objet dont le contenu reste invariant lors de l’exécution d’un algorithme.
Les Variables :
Elles peuvent stocker des chiffres des nombres, des caractères, des chaînes de caractères,… dont
la valeur peut être modifiée au cours de l’exécution de l’algorithme.
Une variable est un objet dont le contenu peut changer au cours de l’exécution de l’algorithme.
Les Structures :
Elles permettent de rassembler plusieurs variables ou constantes sous un même identificateur, on
parle également d’entités ou d’objets.
Les constantes et les variables sont définies dans la partie déclarative par deux caractéristiques
essentielles, à savoir :
L’ identificateur :
Il représente le nom de la variable, de la constante ou de la structure. Il est composé
généralement de lettres mais peut également contenir et de chiffres. Il ne doit pas commencer par
des chiffres Il ne doit pas contenir d’espaces, de caractères de ponctuation ou de caractères
accentués (il existe des langages qui acceptent des caractères accentues au niveau de
l’identificateur).
Le type :
Il représente la nature de la variable ou de la constante (entier, réel, booléen, chaîne de
caractères…)
Exemples : var age : réel ; var sexe, adresse, ville : chaine ; var nbr_enfants , etage : entier ;
Le corps de l’algorithme :
Dans cette partie de l’algorithme sont placées les tâches (instructions opérations …) à exécuter
par notre algorithme.
Les commentaires :
• Pour permettre une lecture plus aisée et plus compréhensive de l’algorithme
• Remarque rend la ligne non-exécutable
Syntaxe
Algorithme nomAlgorithme
// Déclarations
Début
// Liste des instructions
Fin
Algorithme moyenneEtudiantCetinfo
Variable note1 réel,
Variable note2 réel,
Variable note3 réel,
Variable noteTotal réel,
Variable moyenne réel
Début
ère
Ecrire « Entrer la 1 note »
Lire note1
Ecrire « Entrer la 2ème note«
Lire note2
ème
Ecrire « Entrer la 3 note«
Lire note3
noteTotal = note1 + note2 + note3,
moyenne= noteTotal / 3 ,
Ecrire « Moyenne : moyenne «
Fin
Algorithme Age
Variable Age entier
Début
Ecrire “ Entrer age ”
Lire Age
Si Age < 18
Ecrire “Mineur”
Sinon
Ecrire « Majeur«
Fin
9. Lecture et Ecriture
Trifouiller des variables en mémoire vive par un chouette programme, c’est vrai que c’est très
marrant, et d’ailleurs on a tous bien rigolé au chapitre précédent. Cela dit, à la fin de la foire, on
peut tout de même se demander à quoi ça sert.
En effet. Imaginons que nous ayons fait un programme pour calculer le carré d’un nombre,
mettons 12. Si on a fait au plus simple, on a écrit un truc du genre :
Variable A Reel
Début
A ← 12^2
Fin
D’une part, ce programme nous donne le carré de 12. C’est très gentil à lui. Mais si l’on veut le
carré d’un autre nombre que 12, il faut réécrire le programme. Bof.
D’autre part, le résultat est indubitablement calculé par la machine. Mais elle le garde
soigneusement pour elle, et le pauvre utilisateur qui fait exécuter ce programme, lui, ne saura
jamais quel est le carré de 12.
Dans un sens, ces instructions permettent à l’utilisateur de rentrer des valeurs au clavier pour
qu’elles soient utilisées par le programme. Cette opération est la lecture.
Dans l’autre sens, d’autres instructions permettent au programme de communiquer des valeurs à
l’utilisateur en les affichant à l’écran. Cette opération est l’écriture.
Remarque essentielle : A première vue, on peut avoir l’impression que les informaticiens
étaient beurrés comme des petits lus lorsqu’ils ont baptisé ces opérations ; puisque quand
l’utilisateur doit écrire au clavier, on appelle cette instruction la lecture, et quand il doit lire sur
l’écran on l'appelle l’écriture. Mais avant d’agonir d’insultes une digne corporation, il faut
réfléchir un peu plus loin. Un algorithme, c’est une suite d’instructions qui programme la
machine, pas l’utilisateur ! Donc quand on dit à la machine de lire une valeur, cela implique que
l’utilisateur va devoir écrire cette valeur. Et quand on demande à la machine d’écrire une valeur,
c’est pour que l’utilisateur puisse la lire. Lecture et écriture sont donc des termes qui comme
toujours en programmation, doivent être compris du point de vue de la machine qui sera chargée
de les exécuter, et non de l'utilisateur qui se servira du programme. Et là, tout devient
parfaitement logique. Et toc.
Tout bêtement, pour que l’utilisateur entre la (nouvelle) valeur de Titi, on mettra :
Lire Titi
Dès que le programme rencontre une instruction Lire, l’exécution s’interrompt, attendant la
frappe d’une valeur au clavier. L'interruption peut durer quelques secondes, quelques minutes ou
plusieurs heures : la seule chose qui fera exécuter la suite des instructions, c'est que la touche
Entrée (Enter) ait été enfoncée.
Aussitôt que c'est le cas, il se passe deux choses. Pour commencer, tout ce qui a été frappé avant
la touche Entrée (une suite de lettres, de chiffres, ou un mélange des deux) est rentré dans la
variable qui suit l'instruction Lire (ici, Titi). Et ensuite, immédiatement, la machine exécute
l'instruction suivante.
Lire est donc une autre manière d'affecter une valeur à une variable. Avec l'instruction
d'affectation, c'est le programmeur qui choisit à l'avance quelle doit être cette valeur. Avec
l'instruction Lire, il laisse ce choix à l'utilisateur.
Dans le sens inverse, pour écrire quelque chose à l’écran, c’est aussi simple que :
Ecrire Toto
Parenthèse : « les bonnes manières du programmeur » : avant de Lire une variable, il est très
fortement conseillé d’écrire des libellés à l’écran, afin de prévenir l’utilisateur de ce qu’il doit
frapper (sinon, le pauvre utilisateur passe son temps à se demander ce que l’ordinateur attend de
lui… et c’est très désagréable !) :
Lecture et Ecriture sont des instructions algorithmiques qui ne présentent pas de difficultés
particulières, une fois qu’on a bien assimilé ce problème du sens du dialogue (homme →
machine, ou machine ← homme).
Et ça y est, vous savez d’ores et déjà sur cette question tout ce qu’il y a à savoir…
Exercice
1. Ecrire un programme qui demande un nombre à
l’utilisateur, puis qui calcule et affiche le carré de ce
nombre.
Algorithme prixDachat
Variable produit1 reel
produit2 reel
produit3 reel
resultat reel
tax reel
rabais reel
resultatFinal
Debut
Ecrire ‘’’entrer produit1’’
Lire produit1
Ecrire ‘’’ entrer produit2’’
Lire produit2
Ecrire ‘’entrer produit3’’
Lire produit3
Resultat= produit1 + produit2+ produit3
Tax = resultat *1 0/100
Rabais= resultat *5/100
resultatFinal= resultat + tax - rabais
Ecrire ‘’ le resultat est + resultatfinal’’
fin
Algorithme carreNombre
variable nombre reel
Variable resultat reel
Début
Ecrire « Entrer un nombre«
Lire nombre
Resultat = nombre * nombre
Ecrire « Le resultat est Resultat «
Fin
Algorithme Salutation
Variable prenom chaine de caractere
Début
Ecrire «Entrer votre prenon «
Lire prenom
Ecrire « Bonjour + prenom «
Fin
Algorithme prix
Variable prixarticle
Variable nombrearticle
Variable couttransport
Variable prixderevient
Debut
Ecrire <Entrez prixarticle>
Lire prixarticle
Ecrire <entrez nombrearticle>
Lire nombrearticle
Ecrire <Entrez couttransport>
Lire couttransport
Prix de revient=prixarticle*nombrearticle+couttransport
Ecrire <Le prix de revient est +prixderevient>
Fin
Algorithme Age
Variable age reel
Début
Ecrire “Votre Age”
Lire age
Si age > 17
Ecrire “Majeur”
Sinon
Ecrire “Mineur”
Fin
De 0 à 12 enfant
De 12 à 17 Ado
De 18 à 35 Jeune
De 36 à x Adulte
► Exemple du lancer de dé
Le principe
Choisir un nombre entier compris entre 1 et 6, l’indiquer à la machine.
Lancer un dé (utiliser le simulateur de tirage aléatoire).
Si le nombre affiché par la face supérieure correspond au nombre choisi afficher « Gagné »,
sinon afficher « Perdu ».
En langage naturel, une condition peut se formuler ainsi : « si… alors… sinon… ». En anglais et
dans plusieurs langages de programmation : « if… then… else… ». Éventuellement, une
instruction de fin de condition est ajoutée.
Si alors (sinon)
La structure si–alors (parfois appelé si–alors–sinon) est commune à de nombreux langages de
programmation. Bien que la syntaxe varie quelque peu selon le langage, la structure de base
(sous forme de pseudocode) ressemble à ceci :
Quand un interprète trouve un Si, il attend une condition booléenne – par exemple, x > 0, ce qui
signifie « la variable x contient un nombre qui est supérieur à zéro » – et évalue cette condition.
Si la condition est vraie, les instructions suivant le alors sont exécutées. Dans le cas contraire,
l'exécution se poursuit jusqu'au branchement suivant – soit au niveau du block sinon (qui est
usuellement optionnelle), ou s'il n'y a pas de branchement sinon, alors après le fin Si.
Après qu'un branchement a été exécuté, le contrôle revient au point après fin Si.
Exercice 1 (Saison)
Écrivez un programme qui demande de taper «p» pour printemps, «e» pour été, «a» pour
automne, «h» pour hiver et affiche le nom de la saison correspondante. Le programme retournera
un message d’erreur si la lettre tapée ne correspond pas à une saison.
Exercice 2 (Rabais)
Un client achète N pommes. Chaque pomme a le même
prix. S’il achète plus que 5 pommes il obtient un rabais de
5%. S’il achète entre 3 et 5 pommes, il obtient un rabais
de 3%. S’il achète moins que 3 pommes, il n’y a pas de
rabais. Écrivez un programme qui calcule le prix total.
Exercice 3 (Moyenne de notes)
Écrivez un programme qui lit et calcule trois notes d’examens,
en précisant« éliminé » de 0 à 49, « ajournée » de 50 et 64 «
admissible » de 65 à 89 et « Excellent » de 90 à 100.
Exercice 4 (Moyenne de notes)
Ecrire un algorithme qui demande l’âge d’un
enfant à l’utilisateur. Ensuite, il l’informe de sa
catégorie :
• ”Bebe” de 0 à 5 ans
• ”Poussin” de 6 à 7 ans
• ”Pupille” de 8 à 9 ans
• ”Minime” de 10 à 11 ans
Dans certains cas, il est nécessaire d'exécuter les mêmes instructions un nombre de fois variable
selon les valeurs d'entrée de l'algorithme. Plus précisément, on répétera ces instructions tant
qu'une condition est remplie. Dans ce cas, on utilisera une boucle
Imaginez que vous ayez un bloc de code que vous devez répéter plusieurs fois. Vous pouvez
l'inclure dans une fonction et appeler cette fonction autant de fois que vous le voulez. Cela
pourrait faire l'affaire. Pourtant, la plupart du temps, vous ne savez même pas à l'avance combien
de fois vous devrez l'appeler.
Les boucles permettent de résoudre ce problème !
En programmation, une boucle est une technique qui permet de répéter une ou plusieurs
instructions sans avoir à retaper le même ensemble d'instructions plusieurs fois. Elle est parmi les
plus basiques et les plus puissantes des concepts de programmation. Une boucle dans un
programme d’ordinateur est une instruction qui se répète jusqu’à ce qu’une condition spécifiée
soit atteinte. Dans une structure en boucle, elle pose une question,et si la réponse exige une autre
action, elle sera exécutée automatiquement. La même question est posée successivement jusqu’à
ce qu’aucune action supplémentaire ne soit nécessaire. Cette action est communément appelée
itération.
9*1=9
9 * 2 = 18
Les boucles énumérées (Pour) sont des boucles qui sont utilisées si vous savez à l'avance
combien de fois vous voulez faire une boucle.
Dans ce cas, la boucle doit continuer pendant que ("while") ou « aussi longtemps que ». Le
nombre de répétitions n'est pas défini par les limites inférieure et supérieure d'un énumérateur,
mais par une condition telle que celle d'une instruction "si".
Elle peut être interprétée comme « tant que l'expression logique est vraie, répétez les
instructions ».
Voilà comment cela fonctionne en détail :
Cerise sur le gâteau, si en plus on est dans une situation on l’on ne peut pas savoir d’avance
combien il y aura de valeurs à traiter, là on est carrément cuits.
C’est pourquoi la programmation nous permet de rassembler toutes ces variables en une seule, au
sein de laquelle chaque valeur sera désignée par un numéro. En bon français, cela donnerait donc
quelque chose du genre « la note numéro 1 », « la note numéro 2 », « la note numéro 8 ». C’est
largement plus pratique, vous vous en doutez.
On peut créer des tableaux contenant des variables de tous types : tableaux de
numériques, bien sûr, mais aussi tableaux de caractères, tableaux de booléens, tableaux
de tout ce qui existe dans un langage donné comme type de variables. Par contre, hormis
dans quelques rares langages, on ne peut pas faire un mixage de types différents de
valeurs au sein d’un même tableau.
L’énorme avantage des tableaux, c’est qu’on va pouvoir les traiter en faisant des boucles. Par
exemple, pour effectuer notre calcul de moyenne, cela donnera par exemple :
13. Procédures et Fonctions
Une application, surtout si elle est longue, a toutes les chances de devoir procéder aux mêmes
traitements, ou à des traitements similaires, à plusieurs endroits de son déroulement. Par
exemple, la saisie d’une réponse par oui ou par non (et le contrôle qu’elle implique), peuvent être
répétés dix fois à des moments différents de la même application, pour dix questions différentes.
La manière la plus évidente, mais aussi la moins habile, de programmer ce genre de choses, c'est
bien entendu de répéter le code correspondant autant de fois que nécessaire. Apparemment, on ne
se casse pas la tête : quand il faut que la machine interroge l'utilisateur, on recopie les lignes de
codes voulues en ne changeant que le nécessaire, et roule Raoul. Mais en procédant de cette
manière, la pire qui soit, on se prépare des lendemains qui déchantent...
D'abord, parce que si la structure d'un programme écrit de cette manière peut paraître simple, elle
est en réalité inutilement lourdingue. Elle contient des répétitions, et pour peu que le programme
soit joufflu, il peut devenir parfaitement illisible. Or, le fait d'être facilement modifiable donc
lisible, y compris - et surtout - par ceux qui ne l'ont pas écrit est un critère essentiel pour un
programme informatique ! Dès que l'on programme non pour soi-même, mais dans le cadre d'une
organisation (entreprise ou autre), cette nécessité se fait sentir de manière aiguë. L'ignorer, c'est
donc forcément grave.
En plus, à un autre niveau, une telle structure pose des problèmes considérables de maintenance :
car en cas de modification du code, il va falloir traquer toutes les apparitions plus ou moins
identiques de ce code pour faire convenablement la modification ! Et si l'on en oublie une,
patatras, on a laissé un bug.
Il faut donc opter pour une autre stratégie, qui consiste à séparer ce traitement du corps du
programme et à regrouper les instructions qui le composent en un module séparé. Il ne restera
alors plus qu'à appeler ce groupe d'instructions (qui n'existe donc désormais qu’en un exemplaire
unique) à chaque fois qu’on en a besoin. Ainsi, la lisibilité est assurée ; le programme devient
modulaire, et il suffit de faire une seule modification au bon endroit, pour que cette modification
prenne effet dans la totalité de l’application.
Le corps du programme s’appelle alors la procédure principale, et ces groupes
d’instructions auxquels on a recours s’appellent des fonctions et des sous-procédures.
Mauvaise Structure :
...
Ecrire "Etes-vous marié ?"
Rep1 ← ""
TantQue Rep1 <> "Oui" et Rep1 <> "Non"
Ecrire "Tapez Oui ou Non"
Lire Rep1
FinTantQue
...
Ecrire "Avez-vous des enfants ?"
Rep2 ← ""
TantQue Rep2 <> "Oui" et Rep2 <> "Non"
Ecrire "Tapez Oui ou Non"
Lire Rep2
FinTantQue
...
On le voit bien, il y a là une répétition quasi identique du traitement à accomplir. A chaque fois,
on demande une réponse par Oui ou Non, avec contrôle de saisie. La seule chose qui change,
c'est l'intitulé de la question, et le nom de la variable dans laquelle on range la réponse. Alors, il
doit bien y avoir un truc.
La solution, on vient de le voir, consiste à isoler les instructions demandant une réponse par Oui
ou Non, et à appeler ces instructions à chaque fois que nécessaire. Ainsi, on évite les répétitions
inutiles, et on a découpé notre problème en petits morceaux autonomes.