0% ont trouvé ce document utile (0 vote)
22 vues37 pages

Algorithmique 23 04 2020

Transféré par

mo
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
22 vues37 pages

Algorithmique 23 04 2020

Transféré par

mo
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

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
P1
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
bt*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

Vous aimerez peut-être aussi