Vous êtes sur la page 1sur 44

Révision Algo théorique BAC Info

Révision Algo théorique

I. Enregistrement et fichier

1
Révision Algo théorique BAC Info

2
Révision Algo théorique BAC Info

3
Révision Algo théorique BAC Info

4
Révision Algo théorique BAC Info

Exercice n°1.

Exercice n°2.

5
Révision Algo théorique BAC Info

Exercice n°3.

Exercice n°4.

6
Révision Algo théorique BAC Info

Exercice n°5.
Répondre par V(VRAI) ou F(FAUX) :
1. Soit f un fichier de chaine, Lire (f, V) :
Permet de lire tous le Permet de lire une ligne V doit être de type chaine
contenu de f dans V dans V

2. Soit f un fichier texte :


On peut écrire dans f On peut écrire dans f On peut écrire dans f des
n’importe quel type uniquement des chaines chaines ou des caractères

3. Soit E une variable de type maison (un enregistrement), soit F un fichier de maison :
On peut transférer le On peut lire le contenu de On peut supprimer une
contenu de F dans un fichier E dans F ligne de F champ par
texte champ

4. Soit ‘’F’’ un fichier qui sera remplit par 100 chaines, pour déclarer F on peut utiliser:
Uniquement le type Fichier Uniquement le type Fichier Fichier de chaine ou fichier
de chaine texte texte

5. Pour modifier le contenu d’un fichier texte déjà remplit on peut l’ouvrir par le mode :
‘’w’’ ‘’a’’ ‘’r’’

6. A quel(s) type(s) de fichier s'applique la procédure écrire :


Seulement aux fichiers Seulement aux fichiers A tous les types
textes. binaires
7. Un fichier contient 5 lignes, après la lecture de la quatrième ligne, le pointeur se trouve :
sur la ligne d’indice quatre après a ligne d’indice Avant a ligne d’indice
quatre quatre

8. Un fichier binaire est déjà vide, on peut l’ouvrir en écriture avec le mode:
‘’w’’ ‘’ab’’ ‘’wb’’

Exercice n°6. Bac

7
Révision Algo théorique BAC Info

Exercice n°7. TDO


Soit un appartement définit par : Objet Type/Nature
- num un entier
e1, e2, e3 appartement
- ville une chaine
T Tableau de 20 appartement
Questions :
N Entier
1) Déclarer un type appartement S Réel
2) Soit les déclarations suivantes : Ch, V chaine

a. Compléter le tableau suivant par V(Vrai) ou F(Faux) en justifiant uniquement les


réponses fausses :
Expressions V/F Justification si Faux
Lire(e1.ville) …………… …………………………………………………………………
ecrire(e1.ville[1]) …………… …………………………………………………………………
T[N] e2 …………… …………………………………………………………………
e1>e2 …………… …………………………………………………………………
T[0] T[1] …………… …………………………………………………………………
Fonction trait(e1 :chaine) :entier …………… …………………………………………………………………
ch ville …………… …………………………………………………………………
saisir (@e : appartement) …………… …………………………………………………………………
N estnum(e3) …………… ………………………………………………………
E1.nume2.num+e3.long(ville) …………… …………………………………………………………………
Exercice n°8.
a. soit la solution algorithmique suivante d’une fonction ‘’Quoi’’ :
Fonction Quoi(T : Tab, N : Entier, V : chaine) : entier
Début
Nb 0
pour i de 0 à N-1 faire
Si T[i].ville=V alors
Nb Nb+1
Fin si
Fin pour
Retourner Nb
Fin
Donner la trace d’exécution de la fonction ‘’Nombre’’ pour N=7, V=’’Tunis’’, et le
tableau T suivant :
100 50 501 25 301 127 2910
Tunis Bizerte Tunis Nabeul Manouba Tunis Ariana
0 1 2 3 4 5 6
b. Modifier la fonction ‘’Quoi’’ pour qu’elle permet de vérifier si une ville V existe dans
un tableau T de N ville.

8
Révision Algo théorique BAC Info

Exercice n°9.

9
Révision Algo théorique BAC Info

Exercice n°10.

10
Révision Algo théorique BAC Info

II. Les algorithmes de tri

11
Révision Algo théorique BAC Info

Exercice n°11.

Exercice n°12.

12
Révision Algo théorique BAC Info

Exercice n°13.

Exercice n°14.

13
Révision Algo théorique BAC Info

Exercice n°15.

14
Révision Algo théorique BAC Info

III. Matrice et exécution a la main


Exercice n°16.
Ecrire l’algorithme d’un module qui permet de faire la transposition d’une matrice carré M
d’ordre n comme le montre l’exemple ci-dessous.

NB : M et n sont déjà saisis au niveau du programme appelant.


Exemple :
Matrice initiale :
7 -12 33 10
19 31 -9 8
13 44 5 -3
-4 0 22 57

Matrice résultat:
7 19 13 -4

-12 31 44 0

33 -9 5 22

10 8 -3 57

Exercice n°17.
Soit l’algorithme et le Tableau de Déclaration des Nouveaux Types suivants :

0)Def proc Inconnue (N :entier ;var M :mat)


1) Pour L de 1 à N faire
Pour C de 1 à L faire T.D.N.T
M[L,C] 1 Type
Pour P de C-1 à 1 faire (pas = -1) Mat = tableau de 10*10 d’entiers
M[L,P]  M[L,P] + M[L,P-1]
Fin pour
Fin pour
Fin pour
2) Fin Inconnue
Question :
1. Dresser le tableau de déclaration des objets locaux de la procédure Inconnue (0, 5)
2. Quel est le résultat retourné par cette procédure pour N=4 (2)
3. En déduire le rôle de cette procédure (0.5)

15
Révision Algo théorique BAC Info

Exercice n°18.
Pour chacune des propositions ci-dessous, mettre dans la case correspondante la lettre V si la
réponse est correcte ou la lettre F dans le cas contraire.

a. La suite d’instructions permettant de vérifier dans la variable test l’existence d’un entier
x dans un tableau de N entiers :
Test ← Faux
i← -1
j←N i←0
Tant que non test et i < j Tant que i < N et T[i] ≠ x
Pour i de 0 à N-1 faire
Faire Faire
test ← x = T[i]
i ← i+1 i ← i+1
Fin Pour
j ← j-1 Fin Tant que
test ← T[i] = x ou T[j] test ← i < N
=x
Fin Tant que

b. La suite d’instructions permettant de calculer la somme des éléments d’une diagonale D


d’une matrice carrée M de N * N entiers avec D entre 0 et N-1 :
(D)
0 1 2 3 4 5

0 5 9 6 7 8 9

1 2 3 8 9 3 1

2 10 3 9 1 2 5

3(D) 1 9 14 25 6 7

4 9 10 11 25 6 7

5 3 7 8 1 5 20

Exemple : pour D = 3 la somme obtenue est 19


S←0
Pour i de 0 à N – 1 faire
S←0
Pour j de 0 à N – 1 Faire S←0
Pour i de 0 à D Faire
Si i + j = D Alors Pour i de 0 à D Faire
S ← S + M[D-i, i]
S ← S+ M[i,j] S ← S + M[i, D-i]
Fin Pour
Fin Si Fin Pour
Fin Pour
FinPour

16
Révision Algo théorique BAC Info

Exercice n°19.

Exercice n°20.

17
Révision Algo théorique BAC Info

Exercice n°21.
On propose ci-dessous l’algorithme de la procédure suivante :
0) Procédure inconnu (Var T : Tab ; n : entier)
1) Pour i de 1 à n-1 Faire
Pour j de 1 à n-i Faire
Si (T [ j ] < T [ j+1]) Alors
Proc Permut (T [ j ] , T [ j+1])
Fin si
Fin Pour
Fin Pour
2) Fin inconnu
Remarque : Le module Permut (a, b) permute le contenu de deux entiers a et b.
Questions :
Soit n = 6
T 15 7 45 19 0 13
1- Exécuter manuellement la procédure inconnu en utilisant l’exemple précédant.
T

2- Donner le rôle de cette procédure avec précision en donnant la méthode utilisée..


Exercice n°22.

18
Révision Algo théorique BAC Info

IV. Récurrence et récursivité

19
Révision Algo théorique BAC Info

20
Révision Algo théorique BAC Info

Exercice n°23.

Exercice n°24.
Soit la fonction suivante :

Def fn inconnue (n :entier) : ..................


0) Si (n=0) alors
inconnue  ""
Sinon
Si (n mod 2 = 0) Alors
inconnue  FN inconnue (n div 2) + "0"
Sinon
inconnue  FN inconnue (n div 2) + "1"
Fin Si
Fin Si
1) Fin inconnue

1. Quel est le type du résultat de cette fonction ?


2. Donnez la trace d’exécution de la fonction « inconnue » pour n = 12
3. Quel est le rôle de cette fonction ?

21
Révision Algo théorique BAC Info

Exercice n°25.
Soit l’algorithme de la fonction récursive "Quoi" suivante :
Fonction Quoi (ch1, ch2 : Chaîne) : Booléen
Début
Si ch1 = "" Alors Quoi  Vrai
Sinon Si Pos (ch1[1], ch2) = 0 Alors Quoi  Faux
Sinon
Efface (ch1, 1, 1)
Quoi  FN Quoi (ch1, ch2)
Fin Si
Fin
Questions :

1) Donner deux valeurs des chaînes ch1 et ch2 pour que la fonction "Quoi" retourne la valeur Vrai
2) Donner deux valeurs des chaines ch1 et ch2 pour que la fonction "Quoi" retourne la valeur faux
Exercice n°26.

Exercice n°27.

22
Révision Algo théorique BAC Info

Exercice n°28.
On veut écrire des sous-programmes récursifs qui traitent des tableaux d’entiers de tailles inférieures
à 100.

1) Module d’affichage d’un tableau T par des entiers positifs.


2) Module de calcule de la somme des éléments d’une matrice carrée comportant NxN entiers
3) Module de recherche d’un entier X d’un tableau t.
4) Module de vérification si le tableau est trié dans l’ordre croissant ou non.
5) Module de calcul du maximum, du minimum et de leurs rangs respectifs dans un tableau.

Exercice n°29.
Ecrire une fonction récursive nommée anag qui détermine si deux chaînes sont anagrammes.

Deux chaînes ch1, ch2 sont dites anagrammes, si les lettres qui composent la 1 er chaîne existent tous
dans la 2ème chaîne.

Exemple : ch1 = chien et ch2 = niche

Exercice n°30.
On appellera totalgramme une chaîne dont chacun de ses mots commence et se termine par la
même lettre.

Ecrire une analyse et un algorithme d’un module récursif intitulé totalgramme qui permet de vérifier
si une chaîne de caractères est totalgramme

Exemple : La chaîne "ALLALA EMPRUNTE TEMPORAIREMENT À DAOUD SES SOULIERS " est
totalgramme

NOTE : On suppose que deux mots consécutifs sont séparés par un seul espace

Exercice n°31.

Exercice n°32.
Écrire une analyse récursive ConvChEnt d’une fonction qui convertit une chaîne formée de chiffres en
sa valeur entière, sans utiliser la procédure prédéfinie Val. On suppose que la chaîne est formée
uniquement de chiffre et qu’elle peut être vide.
ConvChEnt ("123") renvoie l’entier 123
ConvChEnt ("") renvoie l’entier 0
NB :
➢ Pour réaliser cette fonction vous pouvez utiliser la fonction prédéfinie ORD.

23
Révision Algo théorique BAC Info

➢ ORD ("0") = 48.


Exercice n°33.

Exercice n°34.

Exercice n°35.

24
Révision Algo théorique BAC Info

V. Les algorithmes arithmétiques


Exercice n°36.

Exercice n°37.

Exercice n°38.

Exercice n°39.
Soit la suite suivante définie par :

U0 = 1

(−2) n
Un =
2 * U n −1

Travail demandé :
1. Donner la valeur de U1 et de U2.
2. Quel est l’ordre de récurrence de cette suite. justifier votre réponse.
3. Ecrire une analyse d’un module permettant de déterminer pour un entier n le terme Un

25
Révision Algo théorique BAC Info

Exercice n°40.

Exercice n°41.

Exercice n°42.

Exercice n°43.

26
Révision Algo théorique BAC Info

Exercice n°44.

Exercice n°45.
Ecrire un algorithme qui permet de déterminer une valeur approchée de la constante Pi à
10-5 près, à partir de l’égalité suivante, obtenue selon l’une des formules de Ramanujan :

Exercice n°46.

Exercice n°47.

27
Révision Algo théorique BAC Info

Exercice n°48.
On vous rappel que un nombre premier est un entier naturel qui admet exactement deux diviseurs
distincts entiers et positifs (qui sont alors 1 et lui-même).
Un quadruplet de premiers est un couple constitué de 4 nombres jumeaux premiers successifs,
séparés d'une distance de 4 de la forme suivante : ( p , p + 2 , p + 6 , p + 8 )
Exemple :
Les quadruplets de premiers jumeaux sont :
(5, 7, 11, 13), (11, 13, 17, 19), (101, 103, 107, 109)…………
En 1919 Vigo Brun (1885–1978) à prouvé que la somme de la série des inverses des nombres
premiers jumeaux converge vers une constante (B) dite constante de Brun :

Travail demandé :

1. Donner l’algorithme de la fonction premier.


2. Donner l’algorithme de la fonction Calcul_B qui permet de calculer et retourner une valeur
approché de la constante B. Le calcul s’arrête quand la différence entre deux sommes
successives devient inférieure ou égale à une erreur « Epsilon » (0<Epsilon<0.0001) .

Exercice n°49.
Soient les deux propriétés arithmétiques suivantes :
1ère propriété :
Un entier sans facteur carré est un entier qui n'est divisible par aucun carré parfait, excepté 1.
Par exemple :
▪ 10 est "sans facteur carré" car il n'est divisible par aucun carré parfait.
▪ 18 n'est pas "sans facteur carré" car il est divisible par 9 qui est un carré parfait (3 2).
NB : Un nombre entier est dit un "carré parfait" s’il est le carré d'un autre nombre entier.
Exemple : 16 est un carré parfait car 16=4².
2ème propriété :
Un nombre refactorisable est un entier strictement positif qui est divisible par le nombre total
de ses diviseurs.
Par exemple :
▪ 10 n’est pas refactorisable car il n’est pas divisible par le nombre total de ses diviseurs (4).
En effet, les diviseurs de 10 sont 1, 2, 5 et 10.
▪ 18 est un nombre refactorisable car il est divisible par le nombre total de ses diviseurs (6).
En effet, les diviseurs de 18 sont 1, 2, 3, 6, 9 et 18.
On se propose d’écrire un programme permettant :
▪ de saisir un entier N (avec 3 < N < 100) qui représente la taille du fichier F.
▪ de créer et de remplir un fichier F sauvegardé sur la racine du disque D:\ par N entiers
strictement positifs.
▪ d’éclater le fichier F en 2 fichiers F1 et F2 de même type, de la manière suivante :
- F1 contient les éléments de F qui sont "sans facteur carré".
- F2 contient les éléments de F qui sont "refactorisables".
▪ d’afficher les contenus des fichiers F1 et F2.

28
Révision Algo théorique BAC Info

VI. Conversions entre les bases


Exercice n°50.

Exercice n°51.
Le système quaternaire est un système de numération à base 4 dont les valeurs sont {0, 1, 2, 3}.
Une nouvelle représentation des chiffres quaternaires a été inventée, portant le nom de Base
Shadok comme indiqué dans le tableau suivant :
Chiffre en base 4 0 1 2 3
Equivalent en base Shadok Ga Bu Zo Meu
Exemple : 109(10) = BuZoMeuBu(shadok)
En effet :
109 4
1 27 4
3 6 4
1231(4) = BuZoMeuBu(shadok)
2 1 4
1 0

Ecrire un algorithme d’un module qui permet de retourner la conversion d'un nombre décimal
N en son équivalent en Shadok. NB : N est saisi dans le programme appelant.

29
Révision Algo théorique BAC Info

Exercice n°52.

Exercice n°53.
Pour se connecter a une application de messagerie instantanée sur Internet (exemple MSN), les
utilisateurs doivent taper leurs adresses e-mail (login) et leurs mots de passe. Ces derniers sont
envoyés a un serveur distant et enregistrer automatiquement dans un fichier texte intitule
« password.txt » sous la racine du serveur.

Chaque ligne de ce fichier contient un mot de passe crypte sous forme d’une séquence binaire, de
façon que chaque caractère soit représenté sur un Octet (8bits).

Pour décrypter un mot de passe il suffit de :

· Convertir chaque Octet binaire en son équivalent hexadécimal (sans passer par la base 10).

· Convertir les chaines hexadécimales obtenues en base 10 (décimale).

· Chaque nombre obtenu correspond au code ASCII d’un caractère du mot de passe.

Ecrire un programme qui permet d’afficher les mots de passe du fichier texte.

30
Révision Algo théorique BAC Info

Exercice n°54.

Exercice n°55.

Exercice n°56.

31
Révision Algo théorique BAC Info

VII. Approximation
Exercice n°57.
Il existe une méthode pour calculer une valeur
approchée de π en utilisant la fonction
Sin(x).Cette méthode utilise le faite que π est
une solution de la fonction Sin(x).De plus, cette
solution se trouve entre 2 et 4.

La fonction Sin(x) est strictement décroissante


dans l’intervalle [2..4].On vous donne la
représentation graphique de la fonction Sin(x) dans cet intervalle .Comme π se trouve dans l’intervalle
[2..4], on désire écrire un programme qui permet de chercher la valeur approchée de π en utilisant la
méthode suivante :

- Diviser l’intervalle [2..4] en n sous intervalles avec n entier donné compris entre 10 et 100
- Sauvegarder tous les abscisses ( xi ) 1≤i≤n dans un vecteur de n d’enregistrements au 1er champ,
l’abscisse x commence par 2.
- Déterminer l’image de chaque abscisse par la fonction Sin(x) et la sauvegarder dans le 2 ème
champ.
- Incrémenter x par le pas p avec p=largeur du sous intervalle.
- Finalement la valeur approchée de π est égale à l’abscisse qui correspond à la valeur minimale
de la valeur absolue de son image dans le vecteur d’enregistrement
Travail demandé :

-Ecrire un algorithme d’une procédure Remlir_tab(n,T) permettant de remplir le vecteur


d’enregistrements par les n abscisses et leurs images.

-Ecrire un algorithme d’une fonction Calcul_pi(n,T) qui permet de retourner une valeur approchée
de π .

Exercice n°58.

32
Révision Algo théorique BAC Info

Exercice n°59.

Exercice n°60.

33
Révision Algo théorique BAC Info

Probleme n°1.

34
Révision Algo théorique BAC Info

Probleme n°2.
Le système d'exploitation Linux permet de définir des droits d'accès différents sur un même fichier selon
la catégorie de l'utilisateur. A chaque catégorie d'utilisateurs : user(u), group(g) ou other(o), on associe
un triplet de droits : lecture (r), écriture (w) et exécution (x).
En effet, dans l'exemple suivant, la représentation des droits d'accès à un fichier est illustrée comme suit
:

rwx r-x r--


user(u) group(g) other(o)
L'exemple précédent se traduit comme suit :
▪ Si la catégorie de l'utilisateur est user, il disposera de tous les droits (r, w et x).
▪ Si la catégorie de l'utilisateur est group, il disposera uniquement des droits de lecture (r) et
d'exécution (x). Le droit d'écriture est refusé, il est donc représenté par le caractère "-".
▪ Si la catégorie de l'utilisateur est other, il disposera uniquement du droit de lecture (r). Les
autres droits ont été refusés.
D'autre part, la commande chmod permet de changer les droits d'accès à un fichier. Elle présente la
forme générale suivante : chmod expression nom_fichier
où expression contient une liste des utilisateurs (u, g, o) suivie par la liste des droits (r, w, x) à ajouter
ou à retirer. Un droit est ajouté à l'aide du signe "+" et est retiré à l'aide du signe "-".
Exemple :
Etant donnés les droits d’accès associés à un fichier intitulé document.doc suivants : rwxr-xr-x
▪ La commande chmod ug-x document.doc permettra de retirer des utilisateurs (user) et (group)
le droit d’exécution sur le fichier document.doc
Ainsi, les droits d’accès après la modification seront : rw-r--r-x
▪ La commande chmod o+w document.doc permettra de donner aux utilisateurs (other) le droit
d’écriture sur le fichier document.doc.
Ainsi, les droits d’accès après la modification seront : rw-r--rwx
▪ La commande chmod ugo+rwx document.doc permettra de donner tous les doits à tous les
utilisateurs.
Ainsi, les droits d’accès après la modification seront : rwxrwxrwx

Etant donnés un fichier texte intitulé droits.txt, dont chaque ligne contient les droits d’accès suivi par
le nom d'un fichier séparés par un espace et un fichier texte intitulé chmod.txt, dont chaque ligne
contient la commande chmod suivi d’un espace suivi de l’expression suivi d’un espace suivi du nom du
fichier. On se propose d'écrire un programme permettant :
• d'appliquer les commandes se trouvant dans le fichier chmod.txt sur les droits d’accès
enregistrés dans le fichier droits.txt et stocker les nouveaux droits dans un nouveau fichier texte
intitulé resultat.txt.
• de trier le fichier resultat.txt dans l’ordre alphabétique croissant des noms des fichiers.
• d'afficher le contenu du fichier resultat.txt.
NB : Les fichiers droits.txt, chmod.txt et resultat.txt se trouvent sur la racine du disque C:
Exemple :

35
Révision Algo théorique BAC Info

Probleme n°3.

36
Révision Algo théorique BAC Info

Probleme n°4.
Soient les deux propriétés arithmétiques suivantes :
1ère propriété :
Un entier sans facteur carré est un entier qui n'est divisible par aucun carré parfait,
excepté 1.
Par exemple :
▪ 10 est "sans facteur carré" car il n'est divisible par aucun carré parfait.
▪ 18 n'est pas "sans facteur carré" car il est divisible par 9 qui est un carré parfait
(32).
NB : Un nombre entier est dit un "carré parfait" s’il est le carré d'un autre nombre entier.
Exemple : 16 est un carré parfait car 16=4².

2ème propriété :
Un nombre refactorisable est un entier strictement positif qui est divisible par
le nombre total de ses diviseurs.
Par exemple :
▪ 10 n’est pas refactorisable car il n’est pas divisible par le nombre total de ses
diviseurs (4).
En effet, les diviseurs de 10 sont 1, 2, 5 et 10.
▪ 18 est un nombre refactorisable car il est divisible par le nombre total de ses
diviseurs (6).
En effet, les diviseurs de 18 sont 1, 2, 3, 6, 9 et 18.

On se propose d’écrire un programme permettant :


▪ de saisir un entier N (avec 3 < N < 100) qui représente la taille du fichier F.
▪ de créer et de remplir un fichier F sauvegardé sur la racine du disque D:\ par N
entiers strictement positifs.
▪ d’éclater le fichier F en 2 fichiers F1 et F2 de même type, de la manière suivante :
- F1 contient les éléments de F qui sont "sans facteur carré".
- F2 contient les éléments de F qui sont "refactorisables".
▪ d’afficher les contenus des fichiers F1 et F2.

TRAVAIL DEMANDÉ
1. Analyser le problème en le décomposant en modules.
2. Ecrire les algorithmes des différents modules proposés.

37
Révision Algo théorique BAC Info

Probleme n°5. (bac 2016)

38
Révision Algo théorique BAC Info

Probleme n°6.
Une calculatrice, ou calculette, est une machine conçue pour simplifier, et fiabiliser, des
opérations de calculs.
Dans les années 1970, elles se miniaturisent pour devenir portables grâce à l'affichage à sept segments
Les afficheurs 7 segments sont un type d'afficheur très présent sur les calculatrices et les montres à
affichage numérique : les chiffres s'écrivent en allumant ou en éteignant des segments. Quand les 7
segments sont allumés, on obtient le chiffre 8.
Un segment allumé est représente par le caractère 1
Un segment éteint est représente par le caractère 0
Voici quelques exemples représentés avec l'affichage à 7 segments :

1110000 0110000 1111001


• Pour que la calculatrice affiche la valeur 7 il faut que les segments a,b,c doivent allumer et les
segments d,e,f,g éteint (1110000).
• Pour que la calculatrice affiche la valeur 3 il faut que les segments a,b,c,d,g doivent allumer et
les segments e , f éteint.( 1111001)
Etant donnée un fichier d’enregistrement intitulé « calculatrice.dat », où chaque enregistrement est
composé de deux champs :
• Un champ chiffre contenant un chiffre
• Un champ code contenant le code de chiffre (suite de o et 1) selon l’état des segments allumé
ou éteint en commencent par le segment a puis b … jusqu'à g(ordre alphabetique)
Le fichier « calculatrice.dat » est le suivant :
0 1 2 3 4 5 6 7 8 9
11111 01100 11011 11110 01100 10110 10111 11100 11111 11101
10 00 01 01 11 11 11 00 11 11
En Utilisant le fichier « calculatrice.dat », on se propose de calculer les opérations
enregistrées dans le fichier texte intitulé « operations.txt » et de sauvegarder le résultat de chaque
opération dans un fichier texte « resultat.txt » .
- chaque ligne du fichier operations.txt contient une seule opération.
- chaque chiffre est une chaîne de 7 caractères binaires.
Exemple : 1101101+01100111110000+11111111111110
Si le contenu du fichier « operation.txt »
1111001+1011111

Après le calcule et le codage, le programme remplir et affiche le contenu fichier


« resultat.txt » suivant :
011000011011011110111
1110111
En effet : 1101101+01100111110000+11111111111110
2 + 4 7 + 8 0
= 2+47+80= 129
1 2 9

0110000 1101101 1110111


NB le candidat n’est pas appelé à remplir le deux fichier « calculatrice.dat » et
« operation.txt »

39
Révision Algo théorique BAC Info

Probleme n°7.
Considérons un fichier typé « Nombre.dat », contenant X enregistrements « Nombre » dont
la structure est la suivante :

a b n
(Entier) (Entier) (Entier)

On désire calculer et afficher pour chaque enregistrement, l’expression (a+b)n


Pour cela on va utiliser la démarche suivante :
-Remplir le triangle de Pascal dans une matrice carrée M d’ordre (n+1)*(n+1)
n

-Calculer la valeur de (a+b)n sachant que (a+b)n =  (M [n + 1, i]) * (a


k =0
n−k
) * (b k )

-Enregistrer les résultats dans un fichier texte nommé « puissance.txt » de telle façon que
chaque ligne soit de la forme suivante :
(a+b) exposant n= « valeur calculée »

Exemple :
Soit le fichier « Nombre.dat » suivant :

3 3 2 2 5 4 4 7 3 4 7 3
Enreg0 Enreg1 Enreg2 Enreg3

Prenons par exemple l’enregistrement « Enreg2 »  (a,b,n)=(4,7,3)


Le triangle de Pascal (pour n=3) sera le suivant :
1
1 1
1 2 1
1 3 3 1
Le calcul de (4+7)3 sera comme suit :

(4+7)3 =(M[4,1]*43*70)+(M[4,2]*42*71)+(M[4,3]*41*72)+(M[4,4]*4 0*73)

Pour le fichier «Nombre.dat » cité ci-dessus, le fichier « puissance.txt » aura le contenu suivant :

(3+3) exposant 2=36

(2+5) exposant 4=2401

(4+7) exposant 3=1331


Questions :
(3+5) exposant 4=4096
1-Analyser ce problème en le décomposant en modules et déduire l’algorithme du
programme principal qui permet de réaliser le traitement décrit précédemment.
2-Analyser chacun des modules envisagés précédemment et en déduire les algorithmes
correspondants.

40
Révision Algo théorique BAC Info

Probleme n°8.
On se propose d’écrire un programme qui permet de corriger les fautes d’orthographe d’un fichier
texte «C:\bac2009\docum.txt » puis de l’afficher. Ce fichier renferme plusieurs lignes dont chacune
renferme une phrase ; sachant que chaque phrase est une suite des mots et deux mots successifs sont
séparés par un seul espace.

La correction se fait en se referant à un fichier dictionnaire suivant «C:\bac2009\dico.dic » qui


renferme des mots de 25 caractères au maximum.

Le processus de correction se déroule comme suit :

On consulte le fichier texte à corriger puis on vérifie l’existence de chacun de ses mots dans le
dictionnaire. Si un mot n’existe pas alors un menu sera affiché présentant les choix suivants :

1- Ignorer l’erreur : dans ce cas le mot sera conservé tel qu’il est
2- Ajouter au dictionnaire : dans ce cas le mot sera ajouté à la fin du dictionnaire.
3- Suggestion : le programme détermine et affiche une liste de 5 mots au maximum qui ont un
degré de ressemblance au mot à corriger > à 75%. si la liste de suggestion est vide alors le
programme affichera le message « aucune suggestion » sinon l’utilisateur donne l’indice du
mot à utiliser à partir de la liste des mots suggérés pour corriger le fichier texte.
On définit le degré de ressemblance entre deux mots par :

DR= (NCCBP² + NCCMP )/( L1*L2)*100

Avec :

NCCBP : nombre de caractères communs et bien placés


NCCMP : nombre de caractères communs et mal placés
L1, L2 : sont respectivement les longueurs du mot1 et du mot2
Exemples :

Exemple 1: Exemple 2 :
Mot1=’Ecol’ Mot1=’abbcda’
Mot2=’Ecole’ Mot2=’acbdx’
NCCBP=4 NCCBP=2
NCCMP=0 NCCMP=2
L1=4 L1=6
L2=5 L2=5
DR=(4²+0)/(4*5)*100=16/20*100=80 % DR=(2²+2)/(6*5)*100=6/30*100=20 %

N.B. : On ne peut pas modifier une ligne dans un fichier texte ; on peut utiliser un fichier texte
intermédiaire.

Travail demandé :

1- Donner les structures des données nécessaires pour résoudre ce problème.


2- Analyser le problème en le décomposant en modules.
3- Analyser les différents modules envisagés

41
Révision Algo théorique BAC Info

Probleme n°9.
Un serveur de noms (DNS) permet d’associer une adresse IP a chaque URL. Dans un réseau, on
associe une adresse IP unique à chaque machine. Mais si une adresse est facile à manipuler par un
ordinateur, elle est difficile à mémoriser par un humain. Le serveur de noms DNS permet de trouver
l’adresse IP a partir du nom (URL) de la machine (ou inversement). Pour résoudre un nom en adresse
IP, la méthode la plus simple consiste à mettre tous les noms des machines et leurs adresses
associent dans un fichier.

Exemple : Chaque machine est définie par 3 champs :

192.168.1.1 site1.org 1

127.0.0.1 localhost.localdomain 0

194.146.255.213 atis.clicforum.com 100

196.168.50.20 www.footsite1.com 20

· Le premier champ est l’adresse IP,

· Le deuxième champ est le nom (URL) de la ressource (site web, image…)

· Le troisième champ désigne la distance (nombre de machines) entre le serveur et la machine cible.

Dans la suite, on suppose que le serveur de noms sauvegarde ces informations dans le fichier
"hosts.dat" enregistre sous le dossier "C:\config".

Les opérations effectuées par le serveur de noms sont les suivantes :

▪ Chercher l’adresse IP d’une ressource donnée : Si elle existe, on afficherait son adresse IP, sinon on
afficherait le message "la ressource est indisponible".
▪ Ajouter les informations d’une nouvelle machine : Si des nouvelles machines viennent se
connecter au réseau alors le serveur ajoute celles ci a la fin du fichier "hosts.dat".
▪ Supprimer les informations d’une machine : Si une machine se déconnecte du réseau, le serveur
supprimerait les informations relatives a cette machine.
On se propose d’écrire un programme qui offre un menu permettant d’exécuter l’une des opérations:

- "A" : Pour ajouter une nouvelle machine a la fin du fichier.


- "R" : Pour chercher l’adresse IP d’un nom URL donne.
- "S" : Pour supprimer une machine du réseau.
- "T" : Pour trier les machines selon l’ordre croissant de la distance par rapport au serveur. Le tri se
fait au niveau de la mémoire centrale. Une fois triées, les données seront remises au fichier d’origine.
- "Q" : Pour quitter le programme.
Travail demandé :

1- Quelles sont les structures de données adéquates à la résolution de ce problème.


2- Analyser le problème en le décomposant en modules et en déduire l’algorithme du programme
principal.
3- Analyser chacun des modules envisages précédemment et en déduire les algorithmes
correspondants.

42
Révision Algo théorique BAC Info

Probleme n°10.
Un nombre binaire est un nombre formé uniquement par des chiffres binaires 0 et 1. Ce nombre peut
être signé ou non signé, nous allons adopter par la suite une notation sur 8 bits qui représente les
nombres binaires signés c’est-à-dire que ces nombres peuvent être positifs ou négatifs. Le bit 7 de
poids le plus fort (bit le plus à gauche) sert pour le signe :
➢ Bit 7 = 0 : nombre positif
➢ Bit 7 = 1 : nombre négatif
Exemple :
00010011 est un nombre positif, 10111001 est un nombre négatif
On désire faire des opérations de calcul sur des nombres binaires signés codés sur 8 bits.
➢ Addition de deux nombres binaires positifs (on ne traite pas les cas de débordement)
➢ Valeur absolue d’un nombre binaire (positif ou négatif)
Sachant que :
L’addition des nombres binaires se fait de la même façon qu’avec les nombres décimaux, c’est-à-dire
que l’addition se fait bit par bit en commençant par la droite et en appliquant la méthode des
retenues.
Exemple :

Valeur absolue d’un nombre binaire :

➢ Si le nombre est positif (Bit de signe = 0) alors la valeur absolue est égale à la valeur des 7bits.
Exemple : Valeur absolue de 00100011 est 100011
➢ Si le nombre est négatif (Bit de signe = 1) alors la valeur absolue est calculée de la manière
suivante en utilisant la méthode du complément à deux : On inverse tous les bits du nombre
(les 0 deviennent des 1, les 1 deviennent des 0) et on ajoute 1 au résultat (les dépassements
sont ignorés).
Exemple : Menu
Valeur absolue du nombre binaire 11111100 (-4 en décimal) 1. Addition
On inverse les bits on obtient : 00000011 2. Valeur absolue
On ajoute 1 on obtient le résultat 00000100 qui correspond à +4 3. Affichage
en décimal
4. Quitter
Les résultats des opérations sont stockés dans un fichier texte nommé
"resultat.txt" enregistré dans "d:\OPERATIONS". Chaque résultat est enregistré dans une ligne.
On propose d’écrire un programme qui offre un menu de 4 choix :

➢ Le premier choix permet de calculer la somme de deux nombres binaires


➢ Le deuxième choix permet de calculer la valeur absolue d’un nombre binaire
➢ Le troisième choix permet d’afficher les résultats des opérations effectuées à partir d’un
fichier texte utilisé auparavant pour enregistrer les résultats trouvés.
➢ Le quatrième choix permet d’arrêter le programme.

43
Révision Algo théorique BAC Info

Probleme n°11.

44

Vous aimerez peut-être aussi