Cours Programmation I
Cours Programmation I
-22
Objectifs
Pr Sara RIAHI
2022/2023
Introduction
Introduction
Chapitre 1 : Les éléments de base d’un algorithme
Chapitre 2 : Les structures alternatives et répétitives Algorithme : mot dérivé du nom du mathématicien Al_Khawarizmi qui a vécu au
Chapitre 3 : Les Tableaux 9ème siècle, était membre de l’académie des sciences à Bagdad .
Chapitre 4 : Les structures • Un algorithme prend des données en entrée, exprime un traitement particulier et
fournit des données en sortie.
Chapitre 5 : Les fonctions prédéfinies
• Programme : série d’instructions pouvant s’exécuter en séquence, ou en parallèle
Chapitre 6 : Les algorithmes de tri et de recherche (parallélisme matériel) qui réalise (implémente) un algorithme
Exercices corrigés
POURQUOI UN COURS D’ "ALGO" ?
Introduction
1
déc.-22
Complexité
• Préparation du traitement
• En combien de temps un algorithme va -t-il atteindre le résultat escompté?
données nécessaires à la résolution du problème
• De quel espace a-t-il besoin?
• Traitement
Calculabilité
résolution pas à pas, après décomposition en sous-problèmes si nécessaire
• Existe-t-il des tâches pour lesquelles il n'existe aucun algorithme ?
• Edition des résultats
• Etant donnée une tâche, peut-on dire s'il existe un algorithme qui la résolve ?
impression à l’écran,
Correction
dans un fichier, etc.
• Peut-on être sûr qu'un algorithme réponde au problème pour lequel il a été conçu ?
Quelques définitions avant de commencer Pourquoi apprendre l’algorithmique pour apprendre à programmer ?
Un algorithme est une suite ordonnée d’instructions qui
indique la démarche à suivre pour résoudre une série de
problèmes équivalents Parce que l’algorithmique exprime les instructions résolvant un problème donné
L’algorithmique est la science des algorithmes , s’intéresse indépendamment des particularités de tel ou tel langage.
▪ Algorithme à l’art de construire des algorithmes ainsi qu’a caractériser
leur validité , robustesse , réutilisabilité , complexité et Apprendre l’algorithmique, c’est apprendre à manier la structure logique d’un programme
▪ Algorithmique leur efficacité informatique.
La validité d’un algorithme est son aptitude à réaliser
▪ Validité d’un Algorithme exactement la tache pour laquelle il a été conçu.
Il y a eu notamment une représentation graphique, avec des carrés, des losanges, etc. qu’on Historiquement, deux façons pour représenter un algorithme:
appelait des organigrammes. Aujourd’hui, cette représentation est quasiment abandonnée,
pour deux raisons.
▪ L’Organigramme: représentation graphique avec des symboles (carrés, losanges, etc.)
D’abord, parce que dès que l’algorithme commence à grossir un peu, ce n’est plus pratique
du tout du tout………. ➢ Offre une vue d’ensemble de l’algorithme
Ensuite parce que cette représentation favorise le glissement vers un certain type de ➢ Représentation quasiment abandonnée aujourd’hui
programmation, dite non structurée, que l’on tente au contraire d’éviter.
▪ Le pseudo-code: représentation textuelle avec une série de conventions ressemblant à un
C’est pourquoi on utilise généralement une série de conventions appelée « pseudocode », langage de programmation (sans les problèmes de syntaxe)
qui ressemble à un langage de programmation authentique dont on aurait évacué la plupart ➢ Plus pratique pour écrire un algorithme
des problèmes de syntaxe
➢ Représentation largement utilisée
2
déc.-22
Chapitre 1
Structure générale d’un algorithme
Chapitre 1 : Les éléments de base d’un algorithme
Un algorithme est composé de trois parties principales: Le moule d’un Algorithme
Un Algorithme comportera
l’en-tête : cette partie sert à donner un nom à l’algorithme.
Elle est précédée par le mot Algorithme ;
Une partie déclaration
Une partie encadrée par Debut – Fin où sont décrite les actions
la partie déclarative : dans cette partie, on déclare les différents
objets que l’algorithme utilise (constantes, variables,
Déclaration des Constantes
etc.) Déclaration des Variables
Déclaration des Fonctions
le corps de l’algorithme : cette partie contient les instructions de
l’algorithme. Elle est délimitée par les mots Début et Fin.
Suite d’instructions
Structure Alternatives
Structure Répétitive
3
déc.-22
4
déc.-22
Chapitre 2
II.2 Structure Alternative Complète : Organigramme !!
▪ Si ….Alors …..Sinon……FinSi
Cette instruction se lit :
Si la condition est vérifiée Alors le bloc d’instructions serait exécuté Sinon il serait ignoré Pseudocode
Syntaxe :
Organigramme
5
déc.-22
II. 4 Les structures répétitives /itératives - Les boucles II.4.1 La boucle Tant que…Faire / While …...do :
Une structure répétitive, encore appelée boucle, est utilisée quand une instruction ou une La boucle TantQue permet de répéter un traitement tant que la condition est vraie.
liste d’instructions, doit être répétée plusieurs fois. La répétition est soumise à une
condition. Syntaxe :
Les boucles servent à répéter l'exécution d'un groupe d'instructions un certain nombre de
fois.
On distingue trois sortes de boucles en langages de programmation :
L’exécution de la boucle dépend de la valeur de la condition. Si elle est vraie, le programme
▪ Les boucles Tant que……faire : on y répète des instructions tant qu'une certaine condition exécute les instructions qui suivent, jusqu’à ce qu’il rencontre la ligne FinTantQue.
est réalisée Il retourne ensuite sur la ligne du TantQue, procède au même examen, et ainsi de suite.
▪ Les boucles Pour avec compteur : on y répète des instructions en faisant évoluer un ▪La condition (condition de contrôle de la boucle) est évaluée avant chaque itération
compteur (variable particulière) entre une valeur initiale et une valeur finale
▪Si la condition est vraie, on exécute les instructions (corps de la boucle), puis on retourne
▪ Les boucles Répéter ….. Tant que :Comme pour la boucle Tant que , le nombre d'itération tester la condition. Si elle est encore vraie, on répète l'exécution, …
n'est pas connu à l'avance. La boucle est exécuté au moins une fois.
▪ Si la condition est fausse, on sort de la boucle et on exécute l'instruction qui est après
Dans ce cours, on va s'intéresser essentiellement aux boucles Tant que et boucles Pour qui sont plus utilisées FinTantQue La boucle ne s’arrête que lorsque la condition prend la valeur fausse,
et dans ce cas le programme poursuit son exécution après FinTantQue
6
déc.-22
▪Le nombre de répétitions est connu à l’avance : c’est le cas des boucles itératives .
▪Le nombre de répétitions n’est pas connu ou variable : c’est le cas des boucles conditionnelles .
✓Dans tout les cas où la boucle Pour est appliquée nous pouvons utiliser la boucle Tant que
✓En général , si la première itération est réalisée sans condition , on peut utiliser l’instruction
répéter au lieu de tant que ,
✓La boucle répéter est équivalente à la boucle tant que
7
déc.-22
Exercice 2: Exercice 3 :
Ecrire un algorithme
Ecrire un algorithme qui calcul la permettant de saisir N notes ,
factorielle d’un nombre entier n. de calculer la somme et la
moyenne de ces notes .
Chapitre 3
➢ Boucles Infinies : Chapitre 3 : Les Tableaux
Une boucle infinie est, en programmation informatique, une boucle dont la condition de sortie
n'a pas été définie ou ne peut pas être satisfaite. Un programme peut être amené à manipuler de nombreuses variables représentant des
valeurs distinctes mais de même nature.
Par exemple, un relevé de plusieurs températures en plusieurs endroits et à plusieurs dates
nécessitera autant de valeurs entières que de températures à stocker.
Il est difficilement envisageable de définir « manuellement » autant de variables que de
valeurs à stocker.
Les tableaux, en informatique, permettent de résoudre ce problème en proposant la
création de plusieurs variables de même type, d’une manière très compacte.
Définition :
Un tableau se définit en indiquant son nom, le type des éléments stockés dans le tableau,
ainsi que leur nombre, écrit entre crochets. Ce nombre se nomme également la taille
En conséquence, la boucle ne peut se terminer qu'à l'interruption du programme qui l'utilise. maximale du tableau.
Syntaxe :
Comment CHOISIR LE TYPE DE BOUCLE à utiliser? VAR nom_du_tableau : type_des_éléments [taille_maximale]
8
déc.-22
Exemple
Relation entre tableaux et boucles :
VAR tab : entier[100]
Est la définition d’un tableau nommé tab qui peut stocker 100 valeurs de type entier au
maximum. La taille maximale d’un tableau doit être une constante numérique. Les boucles sont extrêmement utiles pour les algorithmes associés aux tableaux.
Indication En effet, de nombreux algorithmes relatifs au tableau nécessitent de parcourir les éléments du
tableau dans un certain ordre, le plus souvent dans le sens des indices croissant.
Un tableau est en réalité une variable comme les autres, mais son type est d’une nature
radicalement différent des types présentés plus haut. En particulier, ce n’est pas le type des Le traitement de chacun des éléments étant souvent le même, seule la valeur de l’indice est
amenée à changer.
éléments stockés.
Ainsi : Une boucle est donc parfaitement adaptée à ce genre de traitements.
• Un tableau stockant des entier n’est pas un entier . Les éléments d’un tableau sont des L’utilisation de ces éléments se fait en suite , via le
variables indicées qui s’utilisent exactement nom du tableau et son indice .Ce dernier peut être
• Un tableau stockant des réel n’est pas un réel . comme n’importe quelles autres variables soit une valeur ( Tab[3]) , soit une variable (Tab[i])
• Un tableau stockant des caractères n’est pas un caractère. classiques. Elles peuvent faire l’objet d’une ou encore une expression (Tab[i+1]).
affectation , elles peuvent figurer dans une
expression arithmétique , dans une Il ne faut pas confondre l’indice d’un élément d’un
comparaison , elles peuvent être affichées tableau avec son contenu.
et saisies .
9
déc.-22
À chaque définition d’un tableau est associée la définition de sa taille utile. En déclarant un tableau par :
T: tableau [1 .. 10]de Entier ;
Ceci doit être systématique.
On définit un tableau T de 10 composantes , indicées de 1 à 10.
Cette taille utile peut évoluer lorsque :
Composante de T T[1] T[2] T[3] T[4] T[5] T[6] T[7] T[8] T[9] T[10]
• Un élément est ajouté au tableau, dans ce cas la taille utile est augmentée de 1 (ou encore
incrémentée). Avant d’ajouter un élément, il faut vérifier qu’il reste au moins une case
Indice 1 2 3 4 5 6 7 8 9 10
disponible : la taille utile doit être inférieure strictement à la taille maximale du tableau. Cette
vérification est réalisée par l’emploi d’un test (instruction si).
•Un élément est retiré du tableau, dans ce cas la taille utile est diminuée de 1 (ou Pour accéder aux composantes du tableau T , on spécifie le nom du tableau et l’indice de la
décrémentée). Avant d’enlever un élément du tableau, il faut vérifier que la taille utile est composante:
strictement positive, c’est-à-dire qu’il y a au moins un élément dans le tableau. Enfin, cette T[1] , T[2] ,….., T[10]
variable stockant la taille utile d’un tableau n’a pas de nom qui lui est spécifiquement dédié.
Pour des raisons de lisibilité, cette variable sera nommée util ou tai_ut par exemple.
Lorsqu’on déclare un tableau , on déclare aussi de façon implicite toutes les variables indicées
qui le constituent .Nous utiliserons souvent la valeur 1 comme premier indice mais on peut
aussi utiliser un autre indice minimum, comme 0 .Dans ce cas l’indice maximum sera égal au
nombre d’éléments-1 .
Quelques Instructions :
▪L’instruction suivante affecte à la variable X la valeur du premier élément du tableau Note .
X ← Note [1]
▪L’instruction suivante affiche le contenu du quatrième élément du tableau Note.
Ecrire (Note [4])
▪L’instruction suivante affecte une valeur introduite par l’utilisateur à l’élément trois du tableau
Note
Lire (Note [3])
Exercice 1:
10
déc.-22
Exercices d’applications Tri d’un tableau à une dimension dans l’ordre croissant
Exercice 2: 6 4 1 2 16 5
Ecrire un algorithme qui calcul la Etape 1 : rechercher la plus grande valeur dans le tableau pour l’indice i variant de 1 à 6 .
somme des éléments d’un Etape 2 : rechercher la plus grande valeur dans le tableau pour l’indice i variant de 1 à 5 .
tableau.
Etape 3 : rechercher la plus grande valeur dans le tableau pour l’indice i variant de 1 à 4 .
Etape 4 : rechercher la plus grande valeur dans le tableau pour l’indice i variant de 1 à 3 .
Etape 5 : rechercher la plus grande valeur dans le tableau pour l’indice i variant de 1 à 2 .
Après ces étapes on aura le tableau trié dans l’ordre croissant
Etape 1 : rechercher la plus grande valeur dans le tableau pour l’indice i variant de 1 à 6 . Etape 2: rechercher la plus grande valeur dans le tableau pour l’indice i variant de 1 à 5 .
5 16
On trouve le maximum Max =16 qui se trouve à la position pi =5. On trouve le maximum Max =6 qui se trouve à la position pi =1.
On échange le maximum Max=16avec la dernière composante T[6] On échange le maximum Max=6 avec la composante T[5]
On aura le tableau suivant : Max ← T[pi] ; On aura le tableau suivant : Max ← T[pi] ;
T[pi] ← T[6] ; T[pi] ← T[5] ;
5 16 T[6] ← Max ; 6 T[5] ← Max ;
En Algorithmique
En Algorithmique
Max ← T[6-1+1]; // initialisation de Max à T[6]
Max ← T[6-2+1]; // initialisation de Max à T[5]
Pour i ← 1 à 6 Faire
Pour i ← 1 à 5 Faire
Si ( T[i]> Max) alors
Si ( T[i]> Max) alors
Max ← T[i];
Max ← T[i];
pi ← i; // pi est la position du Max
pi ← i; // pi est la position du Max
FinSi
FinSi
FinPour
1 ère étape FinPour 2 ème étape
Max ← T[pi] ;
Max ← T[pi] ;
T[pi] ← T[6] ; // T[6] = T[6-1+1]
T[pi] ← T[5] ; // T[5] = T[6-2+1]
T[6] ← Max ;
T[5] ← Max ;
Etape 3: rechercher la plus grande valeur dans le tableau pour l’indice i variant de 1 à 4 . Etape 4: rechercher la plus grande valeur dans le tableau pour l’indice i variant de 1 à 3.
5 6 16 52 5 6 16
On trouve le maximum Max =5 qui se trouve à la position pi =1. On trouve le maximum Max =4 qui se trouve à la position pi =2.
On échange le maximum Max=5 avec la composante T[4] On échange le maximum Max=4 avec la composante T[3]
On aura le tableau suivant : Max ← T[pi] ; On aura le tableau suivant : Max ← T[pi] ;
T[pi] ← T[4] ; T[pi] ← T[3] ;
2 5 6 T[4] ← Max ; 2 1 4 5 6 T[3] ← Max ;
En Algorithmique En Algorithmique
Max ← T[6-3+1]; // initialisation de Max à T[4] Max ← T[6-4+1]; // initialisation de Max à T[3]
Pour i ← 1 à 4 Faire Pour i ← 1 à 3 Faire
Si ( T[i]> Max) alors Si ( T[i]> Max) alors
Max ← T[i]; Max ← T[i];
pi ← i; // pi est la position du Max pi ← i; // pi est la position du Max
FinSi FinSi
FinPour 3 ème étape FinPour 4 ème étape
Max ← T[pi] ; Max ← T[pi] ;
T[pi] ← T[4] ; // T[4] = T[6-3+1] T[pi] ← T[3] ; // T[3] = T[6-4+1]
T[4] ← Max ; T[3] ← Max ;
11
déc.-22
Etape 5: rechercher la plus grande valeur dans le tableau pour l’indice i variant de 1 à 2. Recherche de la plus grande valeur dans un tableau L’algorithme de tri sera donc
Exercices d’applications
Tri par sélection d’un tableau à une dimension
55 10 82 2 94 6 2 12 94 11
Parmi les nombreux algorithmes de tri existants, celui dont on a parlé aujourd'hui a
l'avantage d'être un des plus faciles à mettre en œuvre. Exercice 3:
Même si on l'implémente ici avec une liste d'entiers, il fonctionne parfaitement avec
n'importe quelle entité que l'on peut comparer (caractères, flottants, structures, etc...) Ecrire un algorithme permettant de lire
N entiers dans un tableau et de
déterminer la plus grande et la petite
Principe
valeur dans un tableau d’entiers A .
Afficher ensuite la valeur et la position
L'idée est simple : rechercher le plus grand élément (ou le plus petit), le placer en fin de du maximum et du minimum .
tableau (ou en début), recommencer avec le second plus grand (ou le second plus petit),
le placer en avant-dernière position (ou en seconde position) et ainsi de suite jusqu'à
avoir parcouru la totalité du tableau.
III.1.2 Déclaration d’un tableau à deux dimensions : Reprenons l’exemple des notes en considérant cette fois qu’un étudiant a plusieurs notes
Il est possible de définir des tableaux à plusieurs dimensions en les indiquant dans des (une note par chaque matière).Pour quatre étudiants , nous aurions le tableau de relevés des
crochets successifs lors de la définition du tableau. notes suivant: Etudiant 1 Etudiant 2 Etudiant 3 Etudiant 4
Pour des propos d’illustration l’exemple se limitera à deux dimensions, la généralisation à N Informatique 12 13 9 10
dimensions est immédiate. 12,5 14 12 11
Comptabilité
Définition : Mathématiques 15 12 10 13
Un tableau à deux dimensions T est à interpréter comme une juxtaposition de plusieurs Syntaxe:
tableaux de dimension C (nombre de colonnes ) .Le nombre de tableaux de dimension C est la
dimension L (nombre de lignes ) 1 2 3 ………………………………. C Variable identificateur: tableau [1..nb_lignes, 1..nb_colonnes]de type
Tableau T 1 Variable identificateur: tableau [nb_lignes, nb_colonnes] de type
2
Les tableaux à deux dimensions se
Exemple :
représentent comme une matrice L’instruction suivante déclare un tableau Note de type réel à deux dimensions composé de 3
…...
12
déc.-22
Exercices d’applications
Accès aux composantes d’un tableau à deux dimensions:
Exercice 1 :
Pour accéder à une composante d’un tableau , on spécifie son adresse par :
Nom_ Tableau [Numéro_de_lignes, Numéro_de _colonnes]
La composante de la Nième ligne et Mième colonne est notée : Ecrire un algorithme permettant la saisie des
Nom_ Tableau [N,M] La composante de la 3ème ligne et 2ème colonne est notée: T[3,2] notes d’une classe de 30 étudiants en 5
La composante de la 4ème ligne et 5ème colonne est notée: T[4,5] matières .
En déclarant un tableau par : La composante de la 5ème ligne et 7ème colonne est notée: T[5,7]
T: tableau [5,7] de Entier ; 1 2 3 4 5 6 7
1
On définit un tableau 2
T de 5x7
3 T[3,2]
composantes
4 T[4,5]
5 T[5,7]
Exercices d’applications
Exercice 2 :
13