• Aucun résultat trouvé

1 Se préparer pour le Bac : Programmation

N/A
N/A
Protected

Academic year: 2022

Partager "1 Se préparer pour le Bac : Programmation"

Copied!
26
0
0

Texte intégral

(1)

Objectif:

Révision générale en programmation pour les élèves 4si

 Exercice 1 : Vecteur d’enregistrements

 Exercice 2 : Tri par comptage

 Exercice 3 : Vérifier si un tableau est Trié

 Exercice 4 : Traitement récurrent : Suite (1)

 Exercice 5 : Traitement récurrent : Suite (2)

 Exercice 6 : Algorithmes arithmétiques

 Exercice 7 : Décomposition en facteurs premiers

 Exercice 8 : Conversion entre les bases de numération

 Exercice 9 : Premier Factoriel

 Exercice 10 : Traitement récurrent : Suite (3)

(2)

Série de 10 exercices : Exercice 1 :

(Le vecteur d’enregistrements)

Soient les déclarations suivantes :

Objet Type / Nature Rôle

T F P1, P2 X, Y e

Vect Texte Personne Entier Octet

Tableau contenant les informations des de personnes Fichier texte

Deux personnes Stocker deux données Position de l’erreur

Travail à faire :

En se basant sur les déclarations précédentes, dire pour chacune des instructions

suivantes si elle est valide ou non. Dans le cas où l’instruction est invalide, justifier votre réponse.

Type date = Enregistrement J, M, A : mot Fin date

Personne = Enregistrement CIN : entierlong N, P : chaine [20]

T : chaine [8]

DN : date

S : tableau [1..12] de réel Fin Personne

Vect = Tableau [1..35] de Personne

(3)

Instruction Valide Invalide Justification

1 X  Ent(15.5) div 3 2 T[2].S[3]  1.5 + 2 3 Ecrire (P1.DN)

4 P1.CIN  -10 div 2 5 Valeur (X, P1.S[1], e) 6 P1.NP2.P

7 T[4].date.J 5 8 Lire_nl(F, abs(-122)) 9 P1.N  "Personne"

10 Ecrire_nl(F, P1) 11 Lire(T[1].DN.J) 12 T[1].S[13]  10/2

(4)

Solution exercice 1 :

Instruction Valide Invalide Justification

1 X  Ent(15.5) div 3 * L’opérateur div ne s’applique pas sur les réels et Ent(15.5) donne un réel

2 T[2].S[3]  1.5 + 2 *

3 Ecrire (P1.DN) * Impossible d’afficher un enregistrement tout entier mais champ par champ 4 P1.CIN  -10 div 2 *

5 Valeur (X, P1.S[1], e) * Le premier paramètre de la procédure valeur qui est X doit être de type chaine et non pas de type entier

6 P1.NP2.P *

7 T[4].date.J 5 * L’enregistrement personne n’a pas un champ nommé date mais un champ DN 8 Lire_nl(F, abs(-122)) * Le deuxième paramètre de la procédure

Lire_nl doit être un nom d’une variable et non pas une valeur.

9 P1.N  "Personne" *

10 Ecrire_nl(F, P1) * Il est impossible d’écrire un

enregistrement tout entier dans un fichier texte mais champ par champ 11 Lire(T[1].DN.J) *

12 T[1].S[13]  10/2 * La taille maximale du tableau S est 12 et non pas 13.

(5)

Exercice 2 :

(Le tri par comptage)

Soit le principe suivant de tri par comptage qu’on peut appliquer sur un tableau rempli par des entiers distincts afin de les trier par ordre croissant dans un deuxième tableau : Principe de tri comptage :

Pour chaque élément du tableau T :

1- Calculer le nombre nb d’éléments qui lui sont strictement inférieurs 2- Placer cet élément dans la position nb+1 du tableau V

1- Appliquer le principe précédant sur le tableau T suivant et remplir le tableau V.

14 2 21 5 7 36

2- Donner l’algorithme d’un module tri par comptage qui permet d’ordonner par ordre croissant les éléments d’un vecteur T de type TAB dans un deuxième tableau V de même type sachant que le vecteur T peut contenir N entiers.

NB : N est déjà saisie et le tableau T est déjà rempli dans le programme appelant.

T

...

V

(6)

Solution exercice 2 :

1/ Application du principe précédant sur le tableau T et remplissage du tableau V.

14 2 21 5 7 36

2 5 7 14 21 36

2/

0) DEF PROC Tri_comptage(T :tab ; var V :tab ; N :entier) 1) pour i de 1 à N faire

nb0

pour j de 1 à N faire si T[j]<T[i] alors nbnb+1 Fin si

Fin pour

V[nb+1]  T[i]

Fin pour

2) fin Tri_comptage

T

...

V

(7)

Exercice 3:

(Le tri)

Soit l’algorithme de la fonction f suivante :

0) DEF FN Quoi (T :TAB ; N : entier) : …………

1) i 1 Répéter

i i+1

ok T[i-1] > T[i]

Jusqu’a ( Non (ok) ) ou (i = N) 2) Quoi ok

3) Fin Quoi

Avec TAB un type utilisateur représentant un tableau de 20 réels et T un tableau de N éléments.

Questions :

1) Dresser le Tableau de Déclaration des Objets Locaux de la fonction Quoi 2) Donner le type de la fonction Quoi

3) Soit le tableau U suivant :

U 2 7 ………. 15.3 29 ………. 30

1 2 3 4 5 6 7

Et soit l’appel de la fonction Quoi dans un programme : Si Quoi(U,N) alors

ecrire ('' les valeurs sont correctes'') Sinon

ecrire ('' les valeurs ne sont pas correctes'') FinSi

Proposer deux valeurs à mettre dans la 3éme et la 6éme case du tableau U, pour que le programme appelant affiche le message '' les valeurs sont correctes''

4) Quel est le rôle de cette fonction ?

(8)

Solution exercice 3:

1) Le TDOL de la fonction Quoi : Objet Type / Nature Rôle i

ok Entier

Booléen Compteur

Variable de test

2) Le type de la fonction Quoi : Booléen

3)

4) Le Rôle de la fonction Quoi :

La fonction Quoi vérifie si un tableau formé par N réels est trié par ordre décroissant ou non. Si oui elle renvoie Vrai sinon elle renvoie Faux.

Une valeur comprise entre ]29 .. 30[

Une valeur comprise entre ]7 .. 15.3[

(9)

Exercice 4 :

(Le traitement récurrent : Suite 1) Soit la suite U définie par :

U

1

= 5

U

n

= 2 * U

n-1

+ 1

1- Calculer U2, U3, U4 et U5.

2 – Quel est l’ordre de récurrence de la suite U ? justifier votre réponse.

3- Donner la fonction écrite en Pascal qui prend en paramètre un entier N et renvoie la valeur du Nième terme de la suite.

Solution exercice 4 :

1- Calculer U2, U3, U4 et U5. U2 = 2 * 5 + 1 = 11 U3 = 2 * 11 + 1 = 23 U4 = 2 * 23 + 1 = 47 U5 = 2* 47 + 1=95

2 – Quel est l’ordre de récurrence de la suite U ? justifier votre réponse.

La valeur d’un terme de la suite U dépend d’une seule valeur précédente Un-1 donc l’algorithme qui calcule le terme de la suite U est un algorithme récurrent d’ordre 1.

3- Donner la fonction écrite en Pascal qui prend en paramètre un entier N et renvoie la valeur du Nième terme de la suite.

(10)

Exercice 5 :

(Le traitement récurrent : Suite 2) Soit la suite U définie par :

U

1

= 5 U

2

= x

U

n

= 2 * U

n-1

+ U

n-2

+ K ,

avec x un entier naturel non nul et K un réel 1- Sachant que x=3 et k=1/2 Calculer U3, U4 et U5.

2 – Quel est l’ordre de récurrence de la suite U ? justifier votre réponse.

3- Donner la fonction écrite en Pascal qui prend en paramètre N, x et K et renvoie la valeur du Nième terme de la suite.

(11)

Solution exercice 5 :

1- Sachant que x=3 et k=1/2 Calculer U3, U4 et U5. U3 = 2 * U2 + U1 + 0.5 = 2*3 + 5 + 0.5 = 11.5 U4 = 2 * U3 + U2 + 0.5 = 2* 11.5 + 3 + 0.5 = 26.5 U5 = 2 * U4 + U3 + 0.5 = 2* 26.5 + 11.5 +0.5 = 65

2 – Quel est l’ordre de récurrence de la suite U ? justifier votre réponse.

L’ordre de récurrence de la suite U est égal à 2 car pour calculer la valeur d’un terme U de la suite on a besoin de deux termes précédents Un-1 et Un-2.

3- Donner la fonction écrite en Pascal qui prend en paramètre N, x et K et renvoie la valeur du Nième terme de la suite.

(12)

Exercice 6 :

(Algorithmes arithmétiques)

Donner l’algorithme d’un module permettant de calculer et retourner la somme S suivante sachant que N est un entier positif et x un réel positif déjà saisis au niveau du programme appelant.

𝑆 = 3 − 𝑥

1! + 𝑥

2

2! − 𝑥

3

3! + ⋯ (𝑥)

𝑁−1

(𝑁 − 1)!

solution exercice 6:

0) DEF FN SOMME (N :entier ; x :réel) : réel 1) sig -1 , s 3

Pour i de 1 à N-1 faire

s s+ sig * (FN puis(x,i) / FN fact(i)) sig- sig

Fin pour 2) SOMME S 3) Fin SOMME

Objet Type / Nature Rôle i

sig s puis fact

Entier Entier Réel Fonction Fonction

Compteur Signe Somme

Calculer la puissance Calculer la factorielle

(13)

0) DEF FN Puis (x :réel ; y:entier) : réel 1) P1

Pour i de 1 à y faire P P*x

Fin pour 2) Puis P 3) Fin Puis

Objet Type / Nature Rôle i

P Entier

réel Compteur

La valeur de la puissance

0) DEF FN fact (x :entier) : entierlong 1) F1

Pour i de 1 à x faire FF*i

Fin pour 2) fact F 3) Fin Fact

Objet Type / Nature Rôle i

F Entier

entierlong Compteur

La valeur de la factorielle

(14)

Exercice 7 :

(Décomposition en facteurs premiers)

On demande de faire l’algorithme d’un module qui prend en paramètre un entier strictement positif X et l’affiche sous forme d’un produit de ses facteurs premiers comme le montre l’exemple suivant :

Exemple :

Pour X=112 le programme doit afficher :

112 = 2*2*2*2*7

Solution exercice 7 :

0) def proc factprem (x :entier) 1) i2 , convch(x,ch), chch + "="

2) repeter

si (x mod i = 0) alors convch(i,r) chch+r+ "*"

xx div i sinon ii+1 fin si

jusqu'à(x=1) 3) ecrire (ch) 4) fin factprem

Le TDOL de la fonction factprem :

Objet Type / Nature Rôle i

ch r

Entier Chaine chaine

Compteur

Le résultat à afficher

Stocker la valeur du compteur i sous forme de chaine

(15)

Exercice 8 :

(Conversion entre les bases de numération) Soit R un réel de l'intervalle 0, 1.

En binaire, R s'écrit sur n chiffres après la virgule comme suit : 0.C1C2C3C4C5…Cn-1Cn avec Ci est un chiffre binaire (0 ou 1)

Pour déterminer les chiffres après la virgule de l'équivalent binaire du réel R, on suit le procédé suivant :

1. Calculer C1 en multipliant R par 2

 Si 2 * R < 1, alors C1 est égal à zéro et on remplace R par 2 * R

 Si 2 * R ≥ 1, alors C1 est égal à 1 et on remplace R par 2 * R – 1 2. Répéter n fois l'étape 1 jusqu'à calculer Cn

Exemple 1 :

Pour R = 0.825 et n = 5, l'équivalent binaire de R est 0.C1C2C3C4C5 se calcule comme suit :

 2 * 0.825 = 1.65 ≥ 1 d'où C1 = 1 et on remplace R par 0.65 = (2 * 0.825 – 1)

 2 * 0.65 = 1.3 ≥ 1 d'où C2 = 1 et on remplace R par 0.3 = (2 * 0.65 – 1)

 2 * 0.3 = 0.6 < 1 d'où C3 = 0 et on remplace R par 0.6 = (2 * 0.3)

 2 * 0.6 = 1.2 ≥ 1 d'où C4 = 1 et on remplace R par 0.2 = (2 * 0.6 – 1)

 2 * 0.2 = 0.4 < 1 d'où C5 = 0 et on remplace R par 0.4 = (2 * 0.2) D'où l'équivalent binaire à 5 chiffres après la virgule de 0.825 est 0.11010 Exemple 2 :

Pour R = 0.625 et n = 4, l'équivalent binaire de R est 0.C1C2C3C4 se calcule comme suit :

 2 * 0.625 = 1.25 ≥ 1 d'où C1 = 1 et on remplace R par 0.25 = (2 * 0.625 – 1)

 2 * 0.25 = 0.5 < 1 d'où C2 = 0 et on remplace R par 0.5 = (2 * 0.25)

 2 * 0.5 = 1.0 ≥ 1 d'où C3 = 1 et on remplace R par 0 = (2 * 0.5 – 1)

 2 * 0 = 0 < 1 d'où C4 = 0 et on remplace R par 0 = (2 * 0) D'où l'équivalent binaire à 4 chiffres après la virgule de 0.625 est 0.1010 Travail demandé

Écrire un algorithme d'une fonction de type chaîne, nommée RBin, qui dépend des deux paramètres R, n et permet de retourner "0.C1C2C3C4C5…Cn-1Cn" : la représentation binaire, sur n chiffres après la virgule, d'un réel R de l'intervalle 0, 1 en utilisant le procédé décrit ci-dessus.

(16)

Solution exercice 8 :

(17)

Exercice 9 :

(Premier Factoriel)

Un nombre PF est dit premier factoriel s’il vérifie les deux propriétés suivantes :

 PF est un nombre premier

 et PF s’écrit sous la forme d’un factoriel incrémenté ou décrémenté de 1 (PF=F!+1 ou PF=F! – 1) Sachant que le factoriel de F noté F! est égale à F*(F-1) * ... * 1

Exemples :

 7 est un nombre premier factoriel car 7 est premier et il s’écrit sous la forme 3!+1.

 719 est un nombre premier factoriel car 719 est premier et il s’écrit sous la forme 6! -1.

Travail demandé :

1- Faire une fonction booléenne (en pascal) qui vérifie si un entier X est premier factoriel ou non. Sachant que X est un entier positif déjà saisi au niveau du programme appelant.

2- Faire un module(en pascal) qui affiche les N premiers nombres premiers factoriels (avec 4<N<10) en utilisant la fonction précédente.

Solution exercice 9 :

1 2

(18)

Exercice 10:

(Le traitement récurrent : Suite 3) Soit la suite (U) définie par :

U0 = 2 U1 = 3

Un = Un-1 + 2* Un-2 1- Calculer U3 et U4

2- Supposant que cette suite est croissante, écrire un programme pascal permettant de lire un entier x (x>3), de vérifier et d’afficher s’il est un terme de la suite U ou non.

Dans l’affirmative, afficher son rang.

Solution exercice 10 : 1- U0 = 2

U1= 3

U2= 3+2*2 = 7 U3=7+2*3= 13 U4=13+2*7 = 27

(19)
(20)

Problème 1 :

1- Lancer l’éditeur de texte disponible sur votre machine et créer le fichier

"c:\calcul.txt" et y saisir les opérations d’additions suivantes : 21+15+1+12+17

1+521+2

255+120+19+15+10+14+5 11+5

170+1258+10 12+190+12+100

2- On vous demande de faire le programme pascal qui permet de créer un deuxième fichier "c:\resultats.txt" contenant sur chaque ligne une opération du fichier

"c:\calcul.txt", suivi du signe "=" suivi du résultat de l’opération d’addition comme le montre l’exemple suivant :

3- Afficher le contenu du fichier "c:\resultats.txt"

21+15+1+12+17=66 1+521+2=524

255+120+19+15+10+14+5=438 11+5=16

170+1258+10=1438 12+190+12+100=314 Le fichier "c:\resultats.txt"

(21)

Solution Probleme 1:

(22)

Problème 2 :

On désire faire un programme Pascal intitulé PALINDROME qui permet de:

1- Remplir un fichier texte D:\mots.txt par des chaines de caractères à raison d’une chaine par ligne. La saisie s’arrête une fois la réponse à la question ''autre saisie O/N ? '' est ''N'' ou ''n'' . Sachant que chaque chaine de caractères doit être non vide et formée unquement par des lettres alphabétiques.

2- Afficher toutes les chaines palindromes qui se trouvent dans le fichier D:\mots.txt Remarque :

Une chaine est dite palindrome si elle peut être lue de droite à gauche comme de gauche à droite.

Exemple de chaines palindromes :

radar, AzizA, sos, (2+2) ….

(23)

Solution Problème 2:

(24)
(25)

Problème 3 :

Ecrire un programme Pascal nommé alphabet qui permet de:

1- Remplir une matrice M carrée d’ordre N (avec 5 ≤ N < 20) par des lettres alphabétiques majuscules de façon aléatoire.

2- Afficher le contenu de la matrice ligne par ligne comme le montre l’exemple.

3- Calculer et afficher le nombre des voyelles ainsi que celui des consonnes qui se trouvent dans la matrice M comme le montre l’exemple.

4- Ecrire votre nom et prénom sous forme de commentaire au début du programme.

Exemple :

Pour N = 5 et la matrice M suivante remplie aléatoirement, le programme doit afficher les resultats suivants :

(26)

Solution Problème 3:

Références

Documents relatifs

On décompose le volume du liquide en rotation en couronnes cylindriques de rayon r, d’épaisseur dr et de hauteur z(r). Exprimer le volume dV d’une telle couronne. En supposant que

Elle est d’autant plus importante que la masse de la charge est grande et s’oppose à la mise en mouvement. Elle est caractérisée par le moment d’inertie J, qui s’exprime en

Le tableau suivant indique les pourcentages de part de marché que la firme F peut espérer obtenir suivant les circuits choisis par elle et la concurrence :... Combien de

Si l'on en croit Jesse Fox, auteur principal d'une étude et professeur assistante en communication à l'Université de l'Ohio, les hommes qui publient beaucoup de selfies sur

Les élèves ne disposant pour l’instant que d’informations qualitatives sur l’énergie potentielle et l’énergie cinétique d’un système, le but de

marge brute – remise – prix d’achat net – prix de vente hors taxe – coût d’achat prix de vente toute taxe comprise – prix d’achat net – frais d’achat – prix

En traction, torsion ou flexion il est possible de résoudre un système qui est hyperstatique et d’en déterminer sa déformation, ou la contrainte. Pour cela la même méthode pour

Les réactifs sont les ions Ag + et le cuivre métallique car les courbes correspondantes ont un coefficient directeur négatif.. Les produits sont le métal Ag et les ions Cu 2+ car