Vous êtes sur la page 1sur 4

PROPOSITION DE CORRECTION DE L’EPREUVE D’ALGORITHME ET

STRUCTURES DES DONNEES :

Questions de cours :

1. Donner la différence entre un paramètre effectif et un paramètre formel

La différence entre un paramètre formel et un paramètre effectif réside dans leur rôle et
leur emplacement dans une procédure ou une fonction.

1. Paramètres formels:
o Figurent dans la définition de la procédure ou de la fonction.
o Ce sont les noms de variables utilisés dans la signature de la procédure.
o Ils définissent les types et les noms des valeurs que la procédure attend en
entrée.
o Les paramètres formels sont locaux à la procédure et ne sont visibles que
dans le corps de celle-ci.
2. Paramètres effectifs:
o Figurent dans l’appel de la procédure ou de la fonction.
o Ce sont les valeurs réelles que vous fournissez lorsque vous appelez la
procédure.
o Ils sont manipulés par la procédure pendant son exécution.
o Les paramètres effectifs sont passés à la procédure lors de l’appel et
remplacent les paramètres formels.

En résumé, les paramètres formels sont les noms de variables définis dans la signature de la
procédure, tandis que les paramètres effectifs sont les valeurs réelles passées lors de l’appel de
la procédure. Ils permettent à une procédure d’interagir avec les données fournies par
l’utilisateur.

2. Pourquoi calcul-t-on la complexité d’un algorithme ?

La complexité d’un algorithme est essentielle pour mesurer sa performance. Elle permet de
comparer différents algorithmes résolvant le même problème. Voici pourquoi on calcule la
complexité d’un algorithme:

 Comparaison des performances: L’analyse de la complexité permet de déterminer quel


algorithme est le plus efficace parmi plusieurs options.
 Optimisation: Comprendre la complexité aide à améliorer les performances en identifiant les
parties coûteuses de l’algorithme.
 Choix éclairé: Lors de la conception d’un algorithme, connaître sa complexité permet de faire
des choix judicieux pour des problèmes spécifiques.

3. Quelle différence faites-vous entre une procédure et une fonction ?

Rédigé par SIMO WAFFO BREL MOREL ITT1B Page 1


Une procédure ne renvoie pas de valeur après son exécution. Alors qu’une fonction
renvoie une valeur après son exécution.

4. Citer trois caractéristiques d’un algorithme

 Efficacité : Un bon algorithme doit résoudre un problème de manière efficace en


utilisant le minimum de ressources
 Déterminisme : Un algorithme doit produire le même résultat pour une même
entrée à chaque exécution.
 Clarté : Les étapes de l’algorithme doivent être précises et non ambiguës.

5. Donner deux exemples de sous –programmes que vous connaissez et dire les quatre
intérêts que visent l’utilisation d’un sous programmes en algorithmique.

Exemple de sous-programmes : Les procédures et les fonctions

Intérêts que visent l’utilisation des sous programmes en algorithmique :

- Factoriser les programmes


- Donner une structuration et une meilleure lisibilité du programme
- Facilité la maintenance du code
- Permettre l’inter utilisation des groupes d’instructions dans plusieurs
programmes

Exercice N°1 :

Ecrire une fonction récursive qui permet de calculer les n termes de la suite Fib définie par :

{ Et calculer sa complexité.

Fonction Fib(n: entier) : entier


Si n= 1 OU n= 2 alors
Retourner 1
Sinon
Retourner Fib(n - 1) + Fib(n - 2)
Fin Si
Fin Fonction
Complexité : O(n)

Exercice N°2 :

Nous voulons calculer la valeur de N=(x !-(3y-x) !)*z ! sachant que x, y et z sont des entiers
strictement positifs (lus au clavier).

1- Ecrire un algorithme dans lequel :


- On déclare les variables globales nécessaires

Rédigé par SIMO WAFFO BREL MOREL ITT1B Page 2


- On déclare un sous-programme (fonction) factoriel qui calcule le factoriel d’un
entier
- On écrit les instructions qui permettent de calculer N en appelant le sous-
programme factoriel.
-

Algorithme CalculFactorielAvecFonction
Var x, y, z, N: entiers

Fonction Factoriel(n: entier) : entier


Si n = 0 OU n = 1 alors
Retourner 1
Sinon
Retourner n * Factoriel(n - 1)
Fin Si
Fin Fonction

Début
Écrire ("Entrez la valeur de x:")
Lire (x)
Écrire ("Entrez la valeur de y:")
Lire (y)
Écrire ("Entrez la valeur de z:")
Lire (z)

N <- Factoriel(x) - Factoriel(3 * y - x) * Factoriel(z)

Écrire ("La valeur de N est:", N)


Fin
2- Réécrire l’algorithme de la question 1 en remplaçant la fonction factoriel par une
procédure factoriel.

Algorithme CalculFactorielAvecProcedure
Var : x, y, z, N, fact_1, fact_2, fact_3: entiers

Procédure CalculerFactoriel(n: entier, var result: entier)


Var f: entier
Début
Si n=0 OU n=1 alors
f <- 1
Sinon
Pour i <- 2 à n faire
f <- f * i
FinPour
Fin Si
result <- f
Fin Procédure

Début
Écrire ("Entrez la valeur de x:")

Rédigé par SIMO WAFFO BREL MOREL ITT1B Page 3


Lire (x)
Écrire ("Entrez la valeur de y:")
Lire (y)
Écrire ("Entrez la valeur de z:")
Lire (z)

CalculerFactoriel(x, fact_1)
CalculerFactoriel((3*y-x), fact_2)
CalculerFactoriel(z, fact_3)

N <- fact_1 – fact_2* fact_3

Écrire ("La valeur de N est:", N)


Fin
Exercice 3 :

Soient deux fichiers textes Exo1.txt et Exo2.txt. Ecrire un algorithme permettant de copier le
contenu de Exo1.txt dans Ex02.txt.

Algorithme copy
Var Exo1, Exo2 : Fichier de caractère
x : chaine de caractère
Début
//Création du fichier Exo1.txt
Exo1<- ouvrir(‘Exo1’, ‘E’)
Lire (x)
Tantque (x ≠FDF) faire
Ecrire (Exo1, x)
Lire (x)
Fintantque
Fermer(Exo1)
//Copie du fichier Exo1.txt vers le fichier Ex02.txt
Exo1<- ouvrir(‘Exo1’, ‘L’)
Exo2<- ouvrir(‘Exo2’, ‘E’)
Tantque (x ≠FDF) faire
Lire (Exo1, x)
Ecrire(x)
Ecrire(Exo2, x)
Fintantque
Fermer(Exo1)
Fermer(Exo2)
Fin

NB : Cette proposition de correction peut éventuellement comporter des erreurs.

Rédigé par SIMO WAFFO BREL MOREL ITT1B Page 4

Vous aimerez peut-être aussi