MODULE M13 : INFORMATIQUE 2
Séance du 23 Avril 2020
[Link]
Année Universitaire: 2019-2020
Tableau à une dimension
Exercice 21
Ecrire un algorithme demandant à l'utilisateur de saisir
dans 2 tableaux les composantes de 2 vecteurs V1 et V2
de IR20 et de calculer leur produit scalaire. L’algorithme
devra aussi tester si ces 2 vecteurs sont orthogonaux
2
Tableau à une dimension
Exercice 21 Analyse
On déclare 2 Tableaux V1 et V2 à 20 éléments de Réels
On déclara la Variable i le compteur de type Entier
Ecrire un algorithme demandant à Manipulation
l'utilisateur de: Saisie des éléments de de V1 et V2 dans une boucle Pour
Calcul du produit scalaire de V1 et V2
On déclare une variable Prod_Scal, initialisée à 0
1) saisir dans 2 tableaux les composantes Prod_Scal = V1[1]*V2[1]+ V1[2]*V2[2]+…+
de 2 vecteurs V1 et V2 de IR20 V1[20]*V2[20]
Pour i=1, Prod_Scal = V1[1]*V2[1]
2) calculer le produit scalaire de V1 et V2. Pour i=2,
Prod_Scal = (V1[1]*V2[1]) +V1[2]*V2[2]
3) L’algorithme devra aussi tester si ces 2 …
vecteurs sont orthogonaux Pour i: Prod_Scal = l’ancienne valeur de de Prod_Scal )
à la quelle on ajoute V1[i]*V2[i]
A la sortie de la boucle on aura la somme globale
On affiche la valeur de Prod_scal
Une fois Prod_scal calculé, on fait le test pour conclure si
Rappel : Si V1= (a1, a2,…,a20) et V1 et V2 sont orthogonaux
V2= (b1, b2,…,b20) Prod_scal=0?
<V1,V2> = a1* b1+ a2* b2+…+ a20* b20 On affiche enfin le résultat du test
V1 et V2 sont orthogonaux si leur produit
scalaire est nul
3
Tableau à une dimension
Exercice 21
Algorithme Vecteurs_ortogonaux
Tableau V1[10], V2[10] : Réel
Variables i : Entier
Ecrire un algorithme demandant à Prod_Scal : Réel
l'utilisateur de: Début
Pour i 1 à 20 faire
1) saisir dans 2 tableaux les composantes Ecrire("saisir V1[", i , "]")
de 2 vecteurs V1 et V2 de IR20 Lire(V1[i])
Ecrire("saisir V2[", i , "]")
2) calculer le produit scalaire de V1 et V2. Lire(V2[i])
Fin Pour
3) L’algorithme devra aussi tester si ces 2 Prod_Sca 0
vecteurs sont orthogonaux Pour i 1 à 20 faire
Prod_Sca Prod_Sca + V1[i]*V2[i]
Fin Pour
Ecrire("Le produit scalaire de V1 et V2 est :", Prod_Sca)
Si Prod_Sca = 0 alors
Ecrire("Les vecteurs V1 et V2 sont orthogonaux")
Fin si
4
Fin
Tableau à une dimension
Exercice 25
Ecrire un algorithme permettant de saisir un tableau à N
éléments réels puis :
1) d’ajouter un élément à la fin du tableau.
2) de modifier un élément du tableau.
3) de supprimer un élément du tableau.
4) De décaler à droite les éléments du tableau et de les
mettre dans un nouveau tableau
5
Tableau à une dimension
Exercice 25
Analyse
Ecrire un algorithme permettant de saisir
un tableau à N éléments réels puis : On déclare un Tableau T à 100 éléments de
Réels
1) d’ajouter un élément à la fin du On déclara la Variable i le compteur de type
tableau. Entier
2) de modifier un élément du tableau. D’un réel X
Manipulation
3) de supprimer un élément du tableau.
Saisie des éléments de T dans une boucle
4) De décaler à droite les éléments du Pour
tableau et de les mettre dans un nouveau Saisie du réel X à ajouter
tableau On peut ajouter une réponse pour ajouter X
ou non
6 10 15 4 5 27 1 Si oui, on incrémente N (il y aura un
élément en plus ) et on affecte au dernier
X=8 élément crée la valeur X
6 10 15 4 5 27 1 8 6
Tableau à une dimension
Exercice 25
Tableau T[100], T1[100] : réels
Variable N, i, P : entier
X, tmp : réel
Rep : caractère
Ecrire un algorithme permettant de saisir Début
un tableau à N éléments réels puis : * Saisie des éléments du tableau*
Ecrire (" Saisir le nombre d’éléments du tableau T ; N> 0
1) d’ajouter un élément à la fin du et N<=100 : " )
tableau. Lire(N)
Pour i 1 à N faire
Ecrire ("Saisir l’élément T[", i , "] " )
Lire (T[i])
Fin Pour
Ecrire("entrer la valeur de l’élément à ajouter : ")
Lire(X)
Ecrire("Confirmer l’ajout (O/N) : ")
Lire(Rep)
Si (Rep ="O" ou Rep ="o" ) alors
N N+1
T[N] X
Finsi
Ecrire("l’élément ajouté est : ", T[N]) 7
Tableau à une dimension
Exercice 25 Analyse
La saisie du tableau est supposée faite
On précise l’élément du tableau à modifier, son indice est
Ecrire un algorithme permettant de saisir donc à déclarer
un tableau à N éléments réels puis : Manipulation
Saisie de l’indice P
2) de modifier un élément du tableau. Saisir puis Affecter la nouvelle valeur X
Suite de l’algorithme
Ecrire("entrer l’indice de l’élément à modifier : ")
Lire(P)
Si (P<1) ou (P>N) alors
Ecrire("Position hors limites du tableau ")
6 10 15 4 5 27 1
Sinon
Ecrire("L’ancienne valeur dans cette position est : ", T[P])
Si L’indice = 3 et X=9, on Finsi
Ecrire("Entrer la nouvelle valeur : ")
6 10 9 4 5 27 1 Lire(X)
T[P] X
Ecrire("La nouvelle valeur à l’indice de l’élément modifié
est : ", T[P]) 8
Tableau à une dimension
Exercice 25
Analyse
Ecrire un algorithme permettant de saisir
un tableau à N éléments réels puis : La saisie du tableau est supposée faite
On précise l’élément du tableau à supprimer,
3) de supprimer un élément du tableau. son indice est donc à déclarer
Manipulation
On peut ajouter une réponse pour supprimer
l’élément ou non
Si oui, on décrémente N (il y aura un
6 10 15 4 5 27 1 élément en moins )
P=2
9
Tableau à une dimension
Exercice 25
Suite de l’algorithme
Ecrire un algorithme permettant de saisir Ecrire("saisir l’indice de l’élément à supprimer :")
un tableau à N éléments réels puis : Lire(P)
3) de supprimer un élément du tableau. Si (P<1) ou (P>N) alors
Ecrire("Position hors limites du tableau ")
Sinon
Ecrire("la valeur dans cette position est : ", T[P])
6 10 15 4 5 27 1 Finsi
Ecrire("Confirmer la suppression (O/N) ")
P=2 Lire(Rep)
Si (Rep ="O" ou Rep ="o" ) alors
6 15 4 5 27 1 8 N N+1
Pour i P à (N-1) Faire
T[i] T[i+1]
Fin pour
N N-1
*il y aura un élément en moins*
Fin si
10
Tableau à une dimension
Exercice 25
Analyse
Ecrire un algorithme permettant de saisir La saisie du tableau est supposée faite
un tableau à N éléments réels puis : On précise le décalage à droite et on
introduit une variable « temp »’ où on va
4) De décaler à droite les éléments du
stocker l’élément à décaler
tableau et de les mettre dans un nouveau
tableau
On déclare aussi un tableau T1
Suite de l’algorithme
tmp T[1]
*tmp variable intermédiaire*
6 10 15 4 5 27 1
Pour i 1 a N-1 Faire
T[i] T[i+1]
T1 est tel que: Fin Pour
T[N] tmp
10 15 4 5 27 1 6 Pour i 1 à N Faire
T1[i] T[i]
*saisie dans un nouveau tableau*
Ecrire ("T1[", i , "] = " , T1[i] )
11
Fin pour
Tableau à plusieurs dimensions
Exemple introductif :
On souhaite gérer 8 notes obtenues par 20 étudiants. Un tableau à une
dimension ne permet de gérer que les 8 notes obtenues par un étudiant,
mais pas par plusieurs
On pourrait déclarer 20 tableaux (un par étudiant), mais cette solution
est "lourde"
Solution : déclarer un tableau à deux dimensions
La représentation graphique est alors un tableau avec des lignes
(correspondant aux étudiants) et des colonnes (correspondant aux
différentes notes)
12
Déclaration d'un Tableau à deux dimensions
Syntaxe de la déclaration :
Tableau à deux dimensions (Matrice):
Tableau nom_Tableau[nombre de valeurs supportées en dimension1,
nombre de valeurs supportées en dimension 2] : Type
Exemple :
Tableau Tablo[3, 2] : Réel
Tablo[2][1] -1.2 ou bien Tablo[2, 1] -1.2
Met la valeur –1.2 dans la case 2,1 du tableau
Le même principe peut être utilisé pour des tableaux de dimension supérieure
13
Déclaration d'un Tableau à deux dimensions
Syntaxe de la déclaration :
Tableau à deux dimensions (Matrice):
Tableau Tableau[nombre de valeurs supportées en dimension1,
nombre de valeurs supportées en dimension 2] : Type
Exemple :
Tableau Tablo[3, 2] : Réel
Tablo[2][1] -1.2 ou bien Tablo[2, 1] -1.2
Met la valeur –1.2 dans la case 2,1 du tableau
Le même principe peut être utilisé pour des tableaux de dimension supérieure
14
Déclaration d'un Tableau à deux dimensions
Exemples :
1) Tableau d’entiers de dimension 2 de taille (4, 5)
11 5 8 10 0
Tableau Tablo[4, 5] : Entier
1 6 7 8 3
Variable i, j : Entier 15 6 4 -2 -9
13 0 -1 9 10
2) Tableau de caractères de dimension 2 de taille (10, 10)
a b c d e f g h i J
Tableau T [10, 10] : Caractère
10 lignes
15
10 colonnes
Déclaration d'un Tableau à deux dimensions
Exemples :
3) Tableau de réel de dimension 3 de taille (4, 4, 4)
Tableau Tablo[4, 4, 4] : Réel
Variable i, j , k : Entier
Largeur :4
Hauteur 4
Profondeur :4
16
Tableau à deux dimensions
1 2 3 4 5 6 7
1 10 3 25 14 2 1 8
2 9 20 7 122 4 7
Accès en lecture :
- Écrire (Tab[1,7])
*la valeur contenue en ligne 1 colonne 7 est affichée à l'écran*
Accès en écriture :
Lire (Tab[2,4])
*la valeur saisie est enregistrée en ligne 2, colonne 4*
- Tab[2,4] 122 17
Les Tableaux à deux dimensions
Exercice :
Écrire un algorithme permettant de saisir et d'afficher deux
matrices A et B (3,3) d'entiers, ensuite d'afficher la matrice
C telle que C = A + B
18
Tableau à deux dimensions
Solution :
Algorithme Somme de matrices Suite * Affichage des 3 matrices *
Tableau A[3, 3], B[3, 3], C[3, 3]: Entier Pour i 1 à 3 faire
Pour j 1 à 3 faire
Variable i , j : entier
Début Écrire (A[i,j ], " " )
Pour i 1 à 3 faire Fin Pour
Pour j 1 à 3 faire Fin Pour
Écrire (A['', i, j , ''] = '') Pour i 1 à 3 faire
Lire (A[i,j]) Pour j 1 à 3 faire
Écrire ('' B['', i, j ,''] = '') Écrire (B[i,j], " ")
Lire (B[i, j]) Fin Pour
Fin Pour Fin Pour
Fin Pour Pour i 1 à 3 faire
Pour i 1 à 3 faire Pour j 1 à 3 faire
Pour j 1 à 3 faire Écrire(C[i,j], " ")
C[i,j] A[i,j]+ B[i,j] Fin Pour
Fin Pour Fin Pour
Fin Pour Fin 19
Les Fonctions et Les Procédures
Définition :
Ce sont des sous-programmes auxquels on peut faire
référence à l''intérieur d'un programme . Ils sont conçus pour
éviter les répétitions et pour découper des programmes jugés
trop longs ce qui facilite la lisibilité du programme principal.
Remarques :
1°- Les Fonctions et les Procédures sont caractérisées par des
paramètres d'entrée et des paramètres de sortie.
2°-La fonction retourne une seule valeur tandis que La
20
procédure peut retourner plusieurs valeurs ou aucune.
Les Fonctions et Les Procédures
Peut être réécrit:
21
Les Fonctions et Les Procédures
Sous-algorithmes et sous programmes
Un sous algorithme définit une fonction ou une procédure
Un algorithme appelle un sous-algorithme : cet algorithme passe
"momentanément" le contrôle de l'exécution du traitement au sous-
algorithme.
Un sous-algorithme est conçu pour faire un traitement bien défini,
bien délimité, si possible indépendamment du contexte particulier de
l’algorithme appelant.
Ces relations restent valables entre programmes et sous-
programmes ou modules
Remarque : un sous-algorithme ou sous programme peut en appeler
22
Les Procédures
Structure d’une procédure
En-tête et partie déclaration du programme principal
Procédure Nom_Procédure
Partie déclaration de la procédure
Début la procédure
Instructions
Fin
Début
Instructions Partie exécutable de l’algorithme principal
Fin 23
Les Procédures
Structure d’une procédure
Procédure NomProc(liste : types , VAR liste : types)
<déclarations>
Paramètres de la procédure
Début
<Bloc d ’instructions>
Fin
• Une procédure est appelée dans un algorithme par son nom suivi
de la liste des arguments correspondant à sa liste de paramètres.
• Dans une procédure, la liste des paramètres peut être vide.
24
Les Procédures
Exemple
A l’aide d’une procédure, ranger par ordre alphabétique deux caractères donnés
Titre : Tri Suite
variable cl, c2 : caractère
Procédure tricaractere
*Algorithme principal*
variable c : caractère
Début Début
si c1>c2 alors Écrire (' donnez 2 caractères :
')
c c1
c1 c2 Lire(cl, c2)
c2 c tricaractere
Finsi Écrire(cl, c2)
Fin Fin 25
Les Procédures
Exemple2
Algorthme calcul_Cube
Variable a : Entier
Procedure cube(t : Entier)
Variable b : Entier
Début
b t * t * t
Ecrire('' le cube de t est : '', b)
Fin
Début
Ecrire('' Donner un entier : '')
Lire(a)
cube(a)
Fin
26
Les Fonctions
Syntaxe du sous programme défini par une fonction
Function NomFonc(liste variables : types): typeSortie;
<déclarations locales>
begin
<Bloc d ’instructions>
NomFonc:=…..
end;
Les fonctions sont un cas particulier des procédures
Une fonction est un sous-programme qui retourne une valeur
Lors de l'appel d'une fonction, la valeur retournée doit être exploitée
dans une instruction (affectation, expression arithmétique ou logique,
27
affichage, ...)
Les Fonctions
Exemple : Calcul des puissances d’un nombre
Algorithme Calcul_puissance
Fonction Puissance( a : Réell , m : entier ) : Réel
Variable i : Entier
P: Réel
Début
P1
Pour i 1 à m faire
P P* a
Ecrire(a, '' puissance '' , m, '' = '' , P)
Fin 28
Les Fonctions
Exemple : Suite
{Fin du sous algorithme et début de l’algo principal}
Variable resultat, x : Réel
n : Entier
Début
Ecrire ('' Donner un nombre : '' )
Lire(x)
Ecrire('' Donner un exposant > 0 : '' )
Lire(n)
resultat Puissance ( x , n )
Ecrire (resultat)
29
Fin.
Les Fonctions et Les Procédures
Conclusion :Intérêt de la programmation modulaire
• Permettre une analyse descendante d'un problème :
- identifier les différents traitements contribuant au travail demandé
- organiser l'enchaînement des étapes
• Permettre une mise au point progressive, module par module
• Faciliter la maintenance des programmes
- modifier le traitement lui-même sans changer le rôle particulier
d'un module
30
Les Fonctions et Les Procédures
Portée des variables
Deux types de variables:
Variable locale = variable déclarée et manipulée dans le sous
programme, inconnue pour le reste du programme
Variable Globale = variable déclarée dans la partie déclaration du
programme principal; peut être utilisée par tous les sous programmes
appelés par le programme principal
31
Les Fonctions et Les Procédures
Exemple
Algorithme calculCube
Variable a : entier *a est une variable globale*
Procedure cube(t : Entier )
Variable b : Entier * b est une variable locale*
Début
bt*t*t
Ecrire('' le cube de a est : '', b)
Fin
Début
Ecrire('' Donner un entier : '')
Lire(a)
cube(a)
Fin
32
Les Fonctions et Les Procédures
Modes de transmission d'arguments:
Transfert par valeur
Lesvaleurs ou variables transmises sont dupliquées en
mémoire.
Les calculs se font sur ces duplicata
A la sortie du sous programme, les variables rentrées ne
sont pas affectées, car à leurs adresses mémoires aucun
calcul ne les a modifiées.
Exemple :
procedure tricar (c1, c2 : char) ; {Transmission par valeur} 33
Les Fonctions et Les Procédures
Modes de transmission d'arguments:
Transfert par Adresse
Les variables transférées avec VAR, ne sont transmises
que par leurs adresses.
En mémoire ces variables peuvent être modifiées par les
calculs demandés (le calcul se faisant directement à leurs
adresses mémoires).
En sortie ces variables seront peut-être modifiées
Exemple :
procedure somme(t : integer ; var som : integer );
{Transmission par adresse} 34
Les Fonctions et Les Procédures
Modes de transmission d'arguments:
En conclusion
Pour une variable d ’entrée.
–Pas de Var.
–Paramètre transféré par ‘ valeur ’
Pour une variable d’entrée / sortie
–le mot VAR figure dans l’identification
–Paramètre transféré par ‘ adresse ’
35
Les Fonctions et Les Procédures
Modes de transmission d'arguments:
Exercice
Écrire un programme permettant le calcul de la somme
des dix premiers entiers ainsi que la somme de leur
carré
36
Fin du Semestre
37