EFM - Algorithme - 2013-2014
Questions de cours : (8 points)
- Quelle est la différence entre le passage de paramètres d’une fonction par adresse et le passage de paramètres par valeur ? citez un exemple. (4 points)
- Quelle sont les avantages de la recherche rapide (dichotomique) par rapport à la recherche classique (séquentielle) ? (4 points)
Partie pratique : (32 points)
Exercice 1 : (4 points)
Ecrire un algorithme qui demande un entier N à l’utilisateur et calcule la somme suivante :
Sn=1+1/2!+1/3!+….+1/N! avec X! =1*2*3*…*X
Exercice 2 : (4 points)
Ecrire un algorithme qui demande la saisie d’un tableau des entiers T, de mettre les éléments pairs dans un tableau T1 et les éléments impairs dans un tableau T2.
Exercice 3 : (5 points)
Ecrire un algorithme qui demande la saisie d’un tableau des réels, de le trier par ordre croissant, ensuite demander à l’utilisateur un entier X et l’insérer dans le tableau en gardant ce dernier trié par ordre croissant.
Exercice 4 : (5 points)
-
Ecrire une fonction qui prend un entier en paramètre et retourne 1 si cet entier et parfait et 0 sinon.
NBUn nombre parfait et un entier qui est égal à la somme de ses diviseurs (Exemple : le nombre 6 est parfait car 6=1+2+3)
- Ecrire une fonction qui retourne le nombre des entiers parfaits entre deux entiers passés en paramètres en utilisant la fonction précédente.
Exercice 5 :(14 points)
- Définir une structure Produit caractérisée par les champs Code(numérique), Nom et PrixUnitaire. (2 points)
- Créer une fonction LireProduit qui demande à l’utilisateur les informations d’un enregistrement de type produit pour le lire et le retourner. (3 points)
- Créer une procédure AfficherProduit qui prend un tableau de produits en paramètre et l’affiche à l’écran. (3 points)
- Ecrire un algorithme qui affiche à l’utilisateur le menu suivant : (6 points)
1: Lire les produits 2: Afficher la liste des produits 3: Quitter le programme
et réalise l’opération demandée par l’utilisateur en utilisant les fonctions définies précédemment.
Questions de cours :
- Quelle est la différence entre le passage de paramètres d’une fonction par adresse et le passage de paramètres par valeur ? citez un exemple.
- Dans le passage par valeur : la fonction utilise une copie des paramètres effectifs. Après appel de la fonction les paramètres effectifs gardent leurs valeurs initiales.
- Dans le passage par adresse : la fonction utilise les adresses des paramètres effectifs. Alors ces paramètres peuvent changer après appel de la fonction
- Exemple : Fonction de Permutation
-
Quelle sont les avantages de la recherche rapide (dichotomique) par rapport à la recherche classique (séquentielle) ?
L’algorithme de recherche dichotomique est très rapide pour les tableaux de taille important (triés). Il consiste à diviser l'intervalle de recherche en deux sous-intervalles de même taille ce qui permet d’optimiser le nombre d’itérations nécessaires.
Partie pratique :
Exercice 1 :
DEBUT Entier : i, j, N, S ← 0, F Afficher("Entrer le nombre de termes N : ") Lire(n) Pour i ← 1 à N F ← 1 Pour j ← 1 à i F ← F * j FinPour S ← S + 1/F FinPour Afficher("La somme est : ", S) FIN
Exercice 2 :
DEBUT Entier : i, j, k, N, T[ ], T1[ ], T2[ ] Afficher("Entrer la taille du tableau: ") Lire(n) Afficher("Donner les éléments du tableau : ") Pour i ← 0 à N-1 Lire( T[i] ) FinPour j ← 0 k ← 0 Pour i ← 0 à N-1 Si (T[ i ] Mod 2 = 0) T1[ j ] ← T[ i ] j ← j + 1 Sinon T2[ k ] ← T[ i ] k ← k + 1 FinSi FinPour Afficher("Tableau des éléments pairs :") Pour i ← 0 à j-1 Afficher ( T[i] ) FinPour Afficher("Tableau des éléments impairs :") Pour i ← 0 à k-1 Afficher( T[i] ) FinPour FIN
Exercice 3 :
DEBUT Entier : i, j, k, N Réel : T[ ], A, X Afficher("Entrer la taille du tableau: ") Lire(n) Afficher("Donner les éléments du tableau : ") Pour i ← 0 à N-1 Lire( T[i] ) FinPour Pour i ← 0 à N -1 Pour j ← i à N-1 Si(T[ i ] > T[ j ]) A ← T[ i ] T[ i ] ← T[ j ] T[ j ] ← A FinSi FinPour FinPour Afficher("Affichage du tableau trié: ") Pour i ← 0 à N-1 Afficher ( T[i] ) FinPour //Insertion Afficher("Donner l’élément à insérer : ") Lire(X) //Déplacer les éléments plus grands que X d'une position vers l'arrière. Pour i ← N à 1 (Pas de -1) Si( X < T[ i - 1]) T[ i ] ← T[ i -1 ] Sinon Arrêter la boucle FinSi FinPour T[ i ] ← X N ← N + 1 Afficher("Affichage du tableau après insertion: ") Pour i ← 0 à N-1 Afficher ( T[i] ) FinPour FIN
Exercice 4 :
//Question 1 Entier Parfait(Entier A) Début Entier i, S ← 0 Pour i ← 1 à A/2 Si(a Mod i = 0) S ← S + 1 FinSi Fin pour Si(S = A) Renvoyer(1) Sinon Renvoyer(0) FinSi FinFonction //Question 2 Entier NbEntierParfait (Entier A, Entier B) Début Entier i, C ← 0 Si(A < B) Min ← A Max ← B Sinon Min ← B Max ← A FinSi Pour i ← Min à Max Si(Parfait(i) = 1) C ← C + 1 FinSi FinPour Renvoyer(C) FinFonction
Exercice 5 :
//Question 1 Structure Produit Entier : Code Chaine : Nom Réel : Prix FinStructure
//Question 2 Produit LireProduit( ) Debut Produit P Lire(P.Code) Lire(P.Nom) Lire(P.Prix) Renvoyer(P) FinFonction
//Question 3 Procédure : Afficher(Produit P[ ], Entier N) Debut Entier i Pour i ← 0 à N-1 Afficher ( "Code : ", T[i].Code) Afficher ( "Nom : ", T[i].Nom) Afficher ( "Prix Unitaire : ", T[i].Prix ) FinPour FinProcedure
//Question 4 DEBUT Produit T[ ]; Entier N, choix; Faire Afficher("-------------Menu-------------"); Afficher("1: Lire les produits."); Afficher("2: Afficher la liste des produits."); Afficher("3: Quitter le programme."); Afficher("Tapez votre choix :"); Lire(choix); Selon(choix){ Valeur 1: Afficher("Donner le nombre de produits: "); Lire(N); Pour i ← 0 à N-1 T[ i ] ← lireProduit() Fin Pour Valeur 2: AfficherProduit(T,N); Valeur 3: Afficher("Fin du programme"); Sinon: Afficher("Choix invalid!"); FinSelon TantQue(choix ≠ 3) FIN PROGRAMME
Nom | Taille | Clics | Téléchargements |
Examen de Fin de Module - TPS - Session Janvier 2014 | 123.43 Ko | 4168 | Télécharger |