Algo.tn

Pascal-Bac 2017

Bac pratique 2017-Sujet 1:

Dans un tableau d'entier, l'existence d'au minimum de deux éléments pairs d'une façon consécutive forme ce qu'on appelle une séquence paire.
On se propose d'écrire un programme intitulé Occ_Pair qui permet de remplir un tableau T par N entiers (avec 3≤N≤20) et d'afficher le nombre de séquences paires de ce tableau ainsi que les entiers de chacune de ces séquences.
Exemple :
Pour N=15 et le tableau T suivant:

T 3 18 6 5 3 4 32 8 9 12 5 10 2 1 8
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
└────┘ └──────┘ └────┘
Séquence 1 Séquence 2 Séquence 3
Le programme affiche :
Le nombre de séquences paires est 3.
Les séquences d'entiers pairs sont :
18 , 6
4, 32 , 8
10 , 2
Pour cela, on donne l'algorithme du programme principal suivant:
0) Début Occ_Pair
1) Ecrire("Donner la taille du tableau :") , Lire(N)
2) PROC Remplir (T,N)
3) PROC Afficher (T,N)
4) Fin Occ_Pair

Travail demandé :

  1. Traduire l'algorithme Occ_Pair en un programme Pascal et ajouter les déclarations nécessaires.
  2. Transformer la séquence n°1 en un module en ajoutant les contraintes nécessaires et apporter les modifications nécessaires dans le programme principal.
  3. Développer le module Remplir qui permet de remplir le tableau T par N entiers strictement positifs.
  4. Développer le module Afficher qui permet d'afficher le nombre de séquences d'entiers pairs du tableau T ainsi que les entiers de chacune de ces séquences.

Bac pratique 2017-Sujet 2:

le jeu Numbermind est un jeu à deux qui consiste à deviner un numéro de téléphone.
Le principe du jeu est le suivant :

  • - Le premier joueur propose une combinaison de 8 chiffres représentant le numéro à deviner.
  • - Le deuxième joueur annonce une proposition de 8 chiffres, si cette proposition correspond au numéro à deviner, ce joueur est gagnant sinon on lui affiche sa proposition à laquelle on garde tous les chiffres bien placés et on remplace le reste par des tirets tout en mentionnant les chiffres corrects mais mal placés dans la proposition
  • - On répète l'étape précédente jusqu'a trouver le numéro cherché ou atteindre un nombre d'essais égale à 8.
Pour simuler ce jeu, on donne l'algorithme du programme principal suivant:
0) Début Numbermind
1) Répéter
    Ecrire("Saisir le numéro de téléphone à deviner :")
    Lire(num)
  Jusqu'a (Fn Verif(num))
2) Efface_ecran()
3) Deviner(num)
4) Fin Numbermind
NB:Efface_ecran est une procédure prédéfinie qui permet d'effacer l'écran. Son équivalent en Pascal est CLRSCR ;

Travail demandé :

  1. Traduire l'algorithme Numbermind en un programme Pascal et ajouter les déclarations nécessaires.
  2. Développer le module Verif qui permet de vérifier si le numéro de téléphone proposé est composé uniquement par 8 chiffres.
  3. Développer le module Deviner qui consiste à :
    • - vérifier chaque numéro proposé par le deuxième joueur, en gardant les chiffres bien placés et en remplaçant le reste par des tirets tout en mentionnant ceux qui sont correctes mais mal placés dans la proposition et le nombre d'essai qui lui reste.
    • - arrêter le jeu une fois que le deuxième joueur propose un numéro identique au numéro à deviner ou bien on atteint un nombre d'essai égale à 8.
    • - Afficher le message " Bravo, vous avez gagné" si le joueur 2 réussit à deviner le numéro et le message "Désolé, vous avez perdu " s'il ne devine pas le numéro après 8 essais
Exemple :
Pour le numéro de téléphone à deviner 68456231 , le programme affiche :

vous avez 8 essais
Proposer un numéro de téléphone :56426179
5 qui est à la position 1 dans la proposition n'est pas à sa bonne position
6 qui est à la position 2 dans la proposition n'est pas à sa bonne position
2 qui est à la position 4 dans la proposition n'est pas à sa bonne position
1 qui est à la position 6 dans la proposition n'est pas à sa bonne position
il vous reste 7 essais
--4-6---
Proposer un numéro de téléphone :63456331
3 qui est à la position 2 dans la proposition n'est pas à sa bonne position
3 qui est à la position 6 dans la proposition n'est pas à sa bonne position
il vous reste 6 essais
6-456-31
Proposer un numéro de téléphone :68456231
Bravo vous avez gagné

Bac pratique 2017-Sujet 3:

Dans le but de sécuriser les messages à envoyer, on peut faire appel à une méthode de cryptage.
Une des méthodes utilisées consiste à remplacer chaque lettre du message à crypter par celle qui la suit de p positions dans l'alphabet français, où p désigne le nombre de mots du message.
NB :

  • On suppose que le caractère qui suit la lettre "Z" est le caractère "A" et celui qui suit la lettre "z" est le caractère "a".
  • Le caractère espace ne subit aucune modification.
  • Le code ASCII de la lettre "a" est égal à 97 et celui de la lettre "A" est égal à 65.
Exemple : Pour le message "Examen Pratique En Informatique"
Etant donné que le message à crypter est formé de 4 mots, pour la lettre alphabétique "E" par exemple, elle sera remplacée par "I" car en ajoutant au code Ascii de "E" qui est 69 la valeur 4, on obtient 73 qui est le code Ascii de "I".
En continuant à appliquer ce principe de codage, le message crypté sera :
"Ibeqir Tvexmuyi Ir Mrjsvqexmuyi"
On se propose d’écrire un programme intitulé Cryptage qui permet de saisir un message M formé uniquement de lettres et d’espaces puis de l’afficher crypté, en utilisant le principe cité ci-dessus.
NB : Le message peut contenir des espaces superflus (inutiles).
Pour cela, on propose l’algorithme du programme principal suivant :
0) Début Cryptage
1) Répéter
    Ecrire ("Donner le message à crypter:")
    Lire(M)
  Jusqu’à (FN Valide (M))
2) p ←FN Nbmot (M)
3) Ecrire (FN Crypter (M,p))
4) Fin Cryptage

Travail demandé :

  1. Traduire l’algorithme Cryptage en un programme Pascal et ajouter les déclarations nécessaires.
  2. Transformer la séquence n°1 en un module et apporter les modifications nécessaires dans le programme principal.
  3. Développer le module Valide qui permet de vérifier si le message M est non vide et formé uniquement par des lettres et des espaces
  4. Développer le module Nbmot qui permet de déterminer le nombre de mots dans le message M à crypter en prenant en considération la possibilité d’existence des espaces superflus (inutiles).
  5. Développer le module Crypter qui permet de crypter un message M en utilisant le principe décrit précédemment.

Bac pratique 2017-Sujet 4:

Un IBAN ou numéro international de compte bancaire est une variété de caractères alphanumériques qui identifie de façon distincte, le compte d'un client tenu dans une institution bancaire partout dans le monde.
Exemple: TU3830004015870002601171 est un numéro IBAN où :
TU désigne les initiales du pays du client qui est la Tunisie,
38 est la clé IBAN
Le reste des chiffres représente le code RIB du client qui est de longueur constante relativement à un pays donné (20 pour la Tunisie). Sachant que RIB désigne le Relevé d’Identité Bancaire qui permet au titulaire d'un compte bancaire de transmettre ses coordonnées bancaires pour des virements ou des prélèvements.
La clé IBAN est obtenue en utilisant le procédé suivant :

  • - Former une chaine ch composée par les deux premières lettres en majuscules du nom du pays du client auxquelles on ajoute "00" à droite.
  • - Former un nombre à partir de la chaîne ch en remplaçant chaque lettre par le nombre qui lui correspond selon le tableau suivant :

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
  • -Calculer le reste de la division du nombre obtenu par 97
  • -Soustraire de 98 le reste obtenu. Si le résultat comporte un seul chiffre, insérer un zéro à gauche. Le nombre ainsi obtenu est la clé IBAN.
  • Exemple : Pour un client de la Tunisie, on obtient la chaîne suivante : TU00
    En remplaçant T par 29 et U par 30, on obtient le nombre suivant 293000.
    La clé IBAN correspondante à ce client est 38 obtenu comme suit : le reste de la division de 293000 par 97 donne 60 en la retranchant de 98 on obtient 98-60= 38 qui est la clé IBAN de la Tunisie.
On se propose d’écrire un programme Pascal qui permet de générer un code IBAN à partir des deux premières lettres du nom du pays d’un client et de son code RIB.
Pour cela on donne l’algorithme du programme principal suivant :
0) Début Generation
1) PROC Saisir (Init, RIB)
2) Cle← FN Cle_IBAN (Init)
3) Ecrire("L’IBAN correspondant est : ", Init+Cle+RIB)
4) Fin Generation

Travail demandé :

  1. Traduire l’algorithme Generation en un programme Pascal et ajouter les déclarations nécessaires.
  2. Développer le module Saisir qui permet de saisir :
    • Deux lettres majuscules qui représentent les initiales du pays.
    • Le RIB qui doit être une suite de chiffres, correspondant au pays du client, de longueur L avec 10≤ L≤ 30.
  3. Développer le module Cle_IBAN qui permet de générer la clé IBAN d’un client en utilisant le procédé décrit précédemment
  4. Ajouter ce qui est nécessaire au programme de façon à ce qu’il puisse générer plusieurs codes IBAN relativement à un groupe de clients dont le nombre est inconnu à l’avance.

Bac pratique 2017-Sujet 5:

Afin de répondre aux besoins des écoles primaires d’une région de la Tunisie, le ministère de l’Éducation charge une commission de visiter ces écoles, de chercher leurs besoins en matériels (Tableaux à craie et tables) et de déterminer le(s) école(s) ayant le besoin le plus élevé.
Pour automatiser les tâches de cette commission, on se propose d’écrire un programme permettant:

  • de remplir un premier tableau TE par les N codes des écoles primaires avec 2≤N≤250. Le code d’une école est une chaîne de 6 chiffres.
  • de remplir un deuxième tableau TB par les besoins matériels des écoles en tableaux à craie et en tables sous le format suivant : Nombre_de_tableaux#Nombre_de_tables sachant que chaque besoin ne doit pas dépasser 999. Exemples : "852#999", "0#105", "52#0"
  • de calculer dans un troisième tableau TBU, le budget nécessaire pour chaque école calculé comme suit : P1*Nombre_de_tableaux + P2* Nombre_de_tables sachant que P1 et P2 sont respectivement les prix d’un tableau à craie et d’une table et qui sont deux constantes dont les valeurs en dinars sont 80 et 160.
  • d’afficher toutes les écoles ayant le besoin budgétaire le plus élevé en matériels.
Pour cela on propose l’algorithme du programme principal suivant :
0) Début Besoin
1) Répéter
Ecrire ("Donner le nombre d’écoles à visiter : ")
Lire(N)
Jusqu’a (N dans [2..250])
2) PROC Remplir(TE,TB,N)
3) PROC Generer(TB,TBU,N)
4) PROCAfficher (TE,TBU,N)
5) Fin Besoin

Exemple : Pour N=8 et les deux tableaux TE et TB suivants :

TE 310600 035100 199600 001800 421200 600700 059700 776600
1 2 3 4 5 6 7 8

TB 10#8 100#16 17#0 32#50 8#0 0#0 5#5 2#10
1 2 3 4 5 6 7 8
Le tableau TBU sera :

TBU 2080 10560 1360 10560 640 0 1200 1760
1 2 3 4 5 6 7 8

En effet, l’école dont le code est "310600" a besoin de 10 tableaux à craie et de 8 tables ("10#8"). Le budget est calculé comme suit : 10*80+8*160=2080.
Le programme affiche :
Le besoin budgétaire le plus élevé est 10560 D et les écoles concernées sont : 035100 - 001800

Travail demandé :

  1. Traduire l'algorithme Besoin en un programme Pascal et ajouter les déclarations nécessaires.
  2. Développer le module Remplir qui permet de remplir deux tableaux TE et TB en respectant les contraintes décrites précédemment.
  3. Développer le module Generer qui permet de générer un troisième tableau TBU le budget nécessaire pour chaque école.
  4. Développer le module Afficher qui permet d’afficher le budget le plus élevé et le(s) école(s) concernée(s) par ce budget.

Bac pratique 2017-Sujet 6:

Sur les billets d’avion d’une Campanie aérienne, figure un code de 11 chiffres précédés d’une lettre majuscule. Exemple U19586900462.
Pour vérifier l’authenticité d’un billet, on remplace la lettre du code par son rang alphabétique pour obtenir un nombre de 12 ou de 13 chiffres.
Si le reste de la division par 9 de la somme des chiffres de ce nombre est égale à 8, ce billet est authentique, sinon c’est un faux billet
Exemple :
Le billet ayant pour code "U19586900462" est authentique. En effet,

  • -La lettre "U" a pour rang alphabétique 21.
  • - Le nombre formé sera : "2119586900462".
  • - La somme des chiffres de ce nombre est 2+1+1+9+5+8+6+9+0+0+4+6+2 =53.
  • - Le reste de la division de 53 par 9 est égale à 8.
On se propose d’écrire un programme qui permet de vérifier l’authenticité d’un billet à partir de son code. Pour cela, on donne l’algorithme du programme principal suivant :
0) Début Billet
1) Répéter
     Ecrire (" Saisir le code à valider :")
    Lire (code)
  Jusqu’à (FN Verif (code))
2) Si (FN Authentique (code))
   Alors Ecrire ("C’est un billet authentique")
   Sinon Ecrire ("Attention ! Ce billet n’est pas authentique")
   Fin Si
3) Fin Billet

Travail demandé :

  1. Traduire l'algorithme Billet en un programme Pascal et ajouter les déclarations nécessaires.
  2. Développer le module Verif qui permet de vérifier si le code proposé commence par une lettre majuscule suivie de 11 chiffres.
  3. Développer le module Authentique qui permet de vérifier l’authenticité du code en utilisant le procédé décrit précédemment
  4. Ajouter ce qui est nécessaire au programme de façon à ce qu’il puisse vérifier plusieurs billets dont le nombre est inconnu à l’avance.

Bac pratique 2017-Sujet 7:

Le jeu du pendu est un jeu à deux qui consiste à trouver un mot en devinant les lettres qui le composent. Pour ce faire, un premier joueur propose un mot à deviner ensuite, on affiche au deuxième joueur le mot à deviner d’une manière masquée en faisant apparaitre la première et la dernière lettre du mot et en remplaçant chacune des lettres restantes par un tiret ("-").
Pour deviner le mot, le deuxième joueur annonce une lettre. Si cette lettre fait partie du mot à deviner, on la dévoile en l’affichant à la place du tiret correspondant dans le mot masqué et ceci autant de fois que cette lettre apparait dans le mot.
Le jeu continue jusqu’à dévoiler toutes les lettres masquées ou atteindre un nombre d’essai égal à la longueur du mot à deviner.
Pour cela, on donne l’algorithme du programme principal suivant :
0) Début Jeu
1) Répéter
     Ecrire ("Saisir le mot à deviner :")
     Lire (mot)
  Jusqu’à (FN Verif (mot))
2) Efface_ecran ( )
3) masque←FN Masquer (mot)
4) PROC Deviner (mot, masque)
5) Fin Jeu
NB : Efface_ecran est une procédure prédéfinie qui permet d’effacer l’écran. Son équivalent en pascal est : CLRSCR;

Travail demandé :

  1. Traduire l'algorithme jeux en un programme Pascal et ajouter les déclarations nécessaires.
  2. Développer le module Verif qui permet de vérifier si le mot proposé est composé uniquement par des lettres et ayant une longueur comprise entre 5 et 20.
  3. Développer le module Masquer qui permet de générer le mot à deviner d’une manière masquée et ceci en dévoilant la lettre de début et celle de la fin et en remplaçant le reste des lettres par des tirets "-".
  4. Développer le module Deviner qui affiche au deuxième joueur le mot masqué et lui demande de proposer une lettre puis dévoile ses occurrences dans le mot masqué sans faire de distinction entre lettre majuscule et lettre minuscule.
  5. Apporter les modifications nécessaires au programme afin qu’il puisse donner au deuxième joueur la possibilité de :
    • - répéter l’action de deviner jusqu’à trouver le mot à deviner ou atteindre un nombre d’essai égal à la longueur de ce mot et afficher à chaque fois le nombre d’essais restants.
    • - afficher le message " Bravo, vous avez gagné" si le joueur 2 réussit à deviner le mot et le message "Désolé, vous avez perdu " s’il ne le devine pas après un nombre d’essais égal à la longueur de ce mot.
Exemple :
On suppose que le mot à deviner est Pascal:
Exécution 1

le mot à deviner est : P----l
il vous reste 6 essai(s)
Proposer un caractère: t
le mot à deviner est : P----l
il vous reste 5 essai(s)
Proposer un caractère: a
le mot à deviner est : Pa--al
il vous reste 4 essai(s)
Proposer un caractère: c
le mot à deviner est : Pa-cal
il vous reste 3 essai(s)
Proposer un caractère: s
Bravo, vous avez gagné
Le mot masqué est: Pascal

Exécution 2

le mot à deviner est : P----l
il vous reste 6 essai(s)
Proposer un caractère: t
le mot à deviner est : P----l
il vous reste 5 essai(s)
Proposer un caractère: r
le mot à deviner est : P----l
il vous reste 4 essai(s)
Proposer un caractère: s
le mot à deviner est : P-s--l
il vous reste 3 essai(s)
Proposer un caractère: i
le mot à deviner est : P-s--l
il vous reste 2 essai(s)
Proposer un caractère: c
le mot à deviner est : P-sc-l
il vous reste 1 essai(s)
Proposer un caractère: e
Désilé, vous avez perdu

Bac pratique 2017-Sujet 8:

Dans le but de sécuriser les messages à envoyer, on peut faire appel à une méthode de cryptage. Une des méthodes utilisées, pour crypter un message M de longueur paire et formé uniquement de lettres majuscules et d’espaces, consiste à :
    Etape 1 : Découper le message à envoyer en blocs de deux lettres.
    Etape 2 : Déterminer pour chaque lettre d’un bloc l’entier correspondant selon le tableau suivant :

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Espace
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
  • On obtient ainsi pour chaque bloc un couple d’entiers (x1, x2), où x1 est l’entier qui correspond au premier caractère du bloc et x2 est l’entier qui correspond au deuxième caractère du bloc.
    Etape 3 : Transformer le couple (x1, x2) de chaque bloc en un couple (y1, y2), tels que :
  • y1 est égal au reste de la division entière de 11*x1 + 3 * x2 par 27.
  • y2 est égal au reste de la division entière de 7*x1 + 4 * x2 par 27.
    Etape 4 : Transformer chaque entier des couples (y1, y2) en un caractère, en utilisant le tableau de correspondance de l’étape n° 2 et la chaîne obtenue sera le message crypté correspondant à M.
Exemple :
Pour le message M = "A MODIFIER", le message crypté correspondant en appliquant la méthode décrite précédemment sera "IXMFD ZNOP" obtenu comme suit :
Le message M à crypter:A    M   O   D   I   F   I   E   R
Etape1:Découpage en bloc de deux caractèresAM   OD   IF   IE   R
Etape 2 : Détermination du couple (x1,x2)(x1,x2)(0,26)(12,14)(3,8)(5,8)(4,17)
Etape 3 : Calcul du couple (y1,y2)(y1,y2)(8,23)(12,5)(3,26)(25,13)(14,15)
Etape 4 : Détermination du message cryptéI   XM   FD   Z   NO   P

On se propose d’écrire un programme Pascal intitulé « Cryptage » qui permet de saisir un message M de longueur paire et constitué seulement par des lettres majuscules et d’espaces, puis d’afficher le message crypté correspondant en appliquant la méthode décrite ci-dessus.
Pour cela on propose l’algorithme du programme principal suivant :
0) Début Cryptage
1) Répéter
     Ecrire ("Donner une chaîne à coder :")
     Lire(M)
  Jusqu’a (FN Valide (M))
2) Ecrire (FN Crypter (M))
3) Fin Cryptage

Travail demandé :

  1. Traduire l'algorithme Cryptage en un programme Pascal et ajouter les déclarations nécessaires.
  2. DTransformer la séquence n°1 en un module et apporter les modifications nécessaires dans le programme principal.
  3. Développer le module Valide qui permet de vérifier si le message M est de longueur paire et constitué seulement par des lettres majuscules et d’espaces
  4. Développer le module Crypter qui permet de crypter un message M en appliquant la méthode décrite précédemment.

Bac pratique 2017-Sujet 9:

Le ministère de l’éducation organise une compétition nationale en informatique pour évaluer le niveau algorithmique des élèves. Chaque participant à cette compétition a un code composé de trois lettres majuscules représentant les trois premières lettres du nom de son gouvernorat suivi de trois chiffres. Suite au passage de l’épreuve, une note comprise entre 0 et 20 est accordée à chaque participant.
On se propose d’écrire un programme « Competition » qui permet :

  • - de remplir un tableau TC par les codes des N participants en respectant les contraintes mentionnées ci-dessus avec N un entier de l’intervalle [5..100].
  • - de remplir un tableau TN par les notes des N participants.
  • - d’afficher le taux de réussite nationale (TRN) calculé comme suit :
    TRN = Npr / N avec Npr représente le nombre de participants qui ont réussi sachant qu’un participant est déclaré réussi si et seulement si il a une note ≥10.
  • - d’afficher le taux de réussite relatif à un gouvernorat donné (TRG) connaissant son nom qui est une chaine d’au maximum 15 lettres alphabétiques :
    TRG = Nprg/ Ntpg avec Nprg et Ntpg représentent respectivement le nombre de participants d’un gouvernorat qui ont réussi et le nombre total de participant de ce gouvernorat.

Pour cela, on propose l’algorithme du programme principal suivant :
0) Début Competition
1) Répéter
     Ecrire ("Donner le nombre de participants :")
     Lire(N)
  Jusqu’à (N dans [5..100])
2) PROC Remplir(TC,TN,N)
3) PROC Afficher(TC,TN,N)
4) Fin Competition

Exemple:
Pour N=7 et lesdeux tableau TC et TN suivants

TC JENI120 TUN121 JEN125 TUN135 BIZ234 SFA234 JEN236
1 2 3 4 5 6 7

TN 15,25 16,50 9,75 7,50 13,25 15,00 16,75
1 2 3 4 5 6 7
Si le gouvernorat donné est Jendouba le programme affiche:
Le taux de réussite nationnal est de 71.43% en effet puisque Nbr=5 et N=7 alors
TRN =5/7*100=71.43%
Le taux de réussite de Jendouba est 66.67% en effet Nprg=2 et Ntpg=3 alors
TRG=2/3*100=66.67%

Travail demandé :

  1. Traduire l’algorithme Competition en un programme Pascal et ajouter les déclarations nécessaires
  2. Transformer la séquence n°1 en un module et apporter les modifications nécessaires dans le programme principal.
  3. Développer le module Remplir qui permet de remplir deux tableaux TC et TN respectivement par les codes et les notes des N participants (avec N est un entier de l’intervalle [5..100]) en respectant les contraintes décrites précédemment.
  4. Développer le module Afficher qui permet d’afficher le taux de réussite national et le taux de réussite d’un gouvernorat donné qui est une chaîne d’au maximum 15 lettres alphabétiques en respectant le format d’affichage en pourcentage avec deux chiffres après la virgule.

Bac pratique 2017-Sujet 10:

Le terme Bigramme désigne la combinaison de deux lettres consécutives et distinctes dans un mot. On se propose d’écrire un programme qui permet d’afficher le nombre d’occurrences de chaque Bigramme d’une chaîne de caractères Ch non vide et formée uniquement de lettres minuscules.
Pour cela, on donne l’algorithme du programme principal suivant :
0) Début Bigramme
1) Répéter
     Ecrire ("Donner une chaîne:")
     Lire (Ch)
  Jusqu’à (FN Valide(Ch))
2) PROC Afficher(Ch)
3) Fin Bigramme

Travail demandé :

  1. Traduire l’algorithme Bigramme en un programme Pascal et ajouter les déclarations nécessaires.
  2. Transformer la séquence n°1 en un module et apporter les modifications nécessaires.
  3. Développer le module Valide qui permet de vérifier si la chaîne Ch est non vide et formée uniquement de lettres minuscules.
  4. Développer le module Afficher qui permet de déterminer et d’afficher le nombre d’occurrences de chaque Bigramme de la chaîne Ch.

Exemple:
  • Pour Ch = "mamapappacma"
  • Le programme affiche :
  • Le nombre d’occurrences de ma est 3
  • Le nombre d’occurrences de am est 1
  • Le nombre d’occurrences de ap est 2
  • Le nombre d’occurrences de pa est 2
  • Le nombre d’occurrences de ac est 1
  • Le nombre d’occurrences de cm est 1

Bac pratique 2017-Sujet 11:

Une séquence nulle d’un tableau d’entiers T est un ensemble d’éléments consécutifs dont la somme de valeurs est égale à zéro.
On se propose d’écrire un programme intitulé « Sequence » qui permet de remplir un tableau T par N entiers non nuls (avec 3 ≤ N ≤ 15) et d’afficher le nombre de séquences nulles de ce tableau ainsi que les éléments de chacune.
Exemple :
Pour N=12 et le tableau T suivant:

Séquence nulle Séquence nulle
car 15-11-4=0 car 4 - 4 = 0
┌────────┐ ┌──────┐
T -4 5 12 -6 -11 -23 -2 15 -11 -4 4 -4
1 2 3 4 5 6 7 8 9 10 11 12
└───────────┘ └──────┘
Séquence nulle Séquence nulle
Car 5+12-6-11=0 car -4+4=0
└────────────────────┘
Séquence nulle car 15-11-4+4-4=0
L nombre de séquences nulles de ce tableau est 5 qui sont :
  • 5,12,-6,-11
  • 15,-11,-4
  • -4,4
  • 4,-4
  • 15,-11,-4,4,-4
Pour cela, on donne l’algorithme du programme principal suivant :
0) Début Sequence
1) Répéter
     Ecrire ("Donner la taille du tableau :")
    Lire(N)
  Jusqu’à (N dans [3..15])
2) Proc Remplir(T, N)
3) Proc Afficher(T, N)
4) Fin Sequence

Travail demandé :

  1. Traduire l'algorithme Sequence en un programme Pascal et ajouter les déclarations nécessaires.
  2. Transformer la séquence n°1 en un module et apporter les modifications nécessaires dans le programme principal.
  3. Développer le module Remplir qui permet de remplir le tableau T par N entiers non nuls.
  4. Développer le module Afficher qui permet d’afficher le nombre de séquences nulles du tableau T ainsi que les éléments de chacune.

Bac pratique 2017-Sujet 12:

Le club culturel d’un lycée organise un jeu de lettres entre les élèves de l’établissement. Le jeu se joue à deux sous forme de tours en appliquant le principe suivant :

  • -On propose 10 lettres alphabétiques majuscules.
  • - Chacun des deux joueurs est appelé à former un mot significatif dans la langue française composé par des lettres parmi les 10 proposées.
  • - Le score du tour de chacun des joueurs sera égal au nombre de lettres du mot proposé une fois validé par l’enseignant.
Pour simuler un tour de ce jeu, on donne l’algorithme du programme principal suivant :
0) Début Jeu
1) PROC Generer (ch) 2) Ecrire (" Les 10 lettres sont:", ch)
3) Ecrire ("Donner la proposition du joueur1 : "), Lire (mot1)
4) Ecrire ("Donner la proposition du joueur2 : "), Lire (mot2)
5) Si (FN Verif (mot1, ch))
     Alors Score1←long(mot1)
   Fin Si
6) Si (FN Verif (mot2, ch))
    Alors Score2 ←long (mot2)
  Fin Si
7) Si (Score1= Score2)
     Alors Ecrire ("Egalité entre les deux joueurs ")
    Sinon Si (Score 1> Score 2)
         Alors Ecrire ("C’est le premier joueur qui a gagné")
         Sinon Ecrire ("C’est le deuxième joueur qui a gagné ")
  Fin Si
8) Fin Jeu

Travail demandé :

  1. Dans un fichier intitulé Version1, traduire l’algorithme Jeu en un programme Pascal et ajouter les déclarations nécessaires.
  2. Dans un fichier intitulé Version2, copier le contenu du fichier Version1 et effectuer les modifications suivantes :
    • b.1 Développer le module Generer qui permet de générer aléatoirement une chaîne ch de 10 lettres majuscules.
    • b.2 Développer le module Verif qui permet de vérifier si le mot proposé est composé uniquement par des lettres de la chaîne ch et qu’il est un mot significatif dans la langue française selon l’avis d’un professeur au quel on se réfère.
    • NB : Le professeur au quel on se réfère valide le mot proposé en introduisant la lettre "O" dans le cas où le mot est significatif et introduit la lettre "N" dans le cas contraire.
    • b.3 Modifier le programme de façon à ce que le jeu dure plusieurs tours jusqu’à ce que le score total de l’un des joueurs dépasse 15 comme le montre l’exemple ci-dessous :
      • *Tour 1* Les lettres proposées sont : JKXRBOTNUM
        Proposition du premier joueur: Bonjour
        Le mot existe dans la langue française ou non ? o
        Proposition du deuxième joueur: jour
        Le mot existe dans la langue française ou non ? o
        Score du joueur 1 : 7 ******* Score du joueur 2: 4
        *Tour 2* Les lettres proposées sont : TCBNRUSOXJ
        Proposition du premier joueur: Concours
        Le mot existe dans la langue française ou non ? o
        Proposition du deuxième joueur: ron
        Le mot existe dans la langue française ou non ? n
        Score du joueur 1 : 15 ******* Score du joueur 2: 4
        C'est le premier joueur qui a gagné

Bac pratique 2017-Sujet 13:

Dans le but de sécuriser les messages à envoyer, on peut faire appel à une méthode de cryptage. Soit la méthode de cryptage suivante qui consiste à crypter par transposition de caractères, un message M de longueur L décrite comme suit:

  • -Déterminer tous les diviseurs de L autres que 1 et lui même.
  • -Pour chaque diviseur d de L et en commençant par le plus petit, on inverse symétriquement les caractères de chaque bloc de longueur d.
Exemple :
Pour le message "INFORMATIQUE" dont la longueur L = 12.
  • Les diviseurs de 12 autres que 1 et 12 sont : 2, 3, 4 et 6.
  • Les inversions des blocs de caractères seront effectuées comme suit :
    • Après inversion de chaque bloc de 2 caractères de la chaîne "INFORMATIQUE", on aura la chaîne "NIOFMRTAQIEU".
    • Après inversion de chaque bloc de 3 caractères de la chaîne " NIOFMRTAQIEU ", on aura la chaîne "OINRMFQATUEI".
    • Après inversion de chaque bloc de 4 caractères de la chaîne " OINRMFQATUEI ", on aura la chaîne "RNIOAQFMIEUT".
    • Après inversion de chaque bloc de 6 caractères de la chaîne " RNIOAQFMIEUT ", on aura la chaîne "QAOINRTUEIMF"
On se propose d’écrire un programme Pascal intitulé « Cryptage » qui permet de saisir un message M dont la longueur est un nombre non premier et supérieur à 4 et d’afficher le message crypté en utilisant la méthode décrite précédemment.
Pour cela on donne l’algorithme du programme principal suivant :
0) Début Cryptage
1) Répéter
     Ecrire ("Donner le message à crypter :")
    Lire(M)
  Jusqu’a (FN Valide (M))
2) Ecrire (FN Crypter (M))
3) Fin Cryptage

Travail demandé :

  1. Traduire l’algorithme Cryptage en un programme Pascal et ajouter les déclarations nécessaires.
  2. Transformer la séquence n°1 en un module et apporter les modifications nécessaires dans le programme principal
  3. Développer le module Valide qui permet de vérifier si la longueur du message M est un nombre non premier et supérieur à 4.
  4. Développer le module Crypter qui permet de crypter un message M en utilisant le principe décrit précédemment.

Bac pratique 2017-Sujet 14:

L’ISSN (International Standard Serial Number) est un code international normalisé qui permet d’identifier de manière univoque toute publication en série indépendamment du pays d’édition, de la langue de publication et du support (imprimé, ressource en ligne, CD, DVD...).
L’ISSN prend la forme suivante : ISSN Bloc1-Bloc2 où chaque bloc est formé de quatre chiffres.
Le dernier chiffre du deuxième bloc est un chiffre de contrôle d’authenticité qui doit être égal au reste de la division par 11 du nombre formé par les 7 autres chiffres ( les 4 chiffres du Bloc1 suivis des 3 premiers chiffres du Bloc2) ; il sera remplacé par "X" si ce reste est égal à 10.
Exemple :
ISSN 0317-8472 est un ISSN authentique.
En effet, 2 représente le reste de la division entière de 317847 par 11.
ISSN 1050-125X est un ISSN authentique.
En effet, X remplace 10 qui est égal au reste de la division entière de 1050125 par 11.
ISSN 0317-8473 n’est pas un ISSN authentique.
En effet, 3 ne représente pas le reste de la division entière de 317847 par 11.

On se propose d’écrire un programme Pascal qui permet de remplir un premier tableau Pub par N noms de publications avec 5≤ N≤10 et dans un deuxième tableau Code les N codes ISSN correspondants puis d’afficher uniquement les publications authentiques sachant qu’une publication est dite authentique si et seulement si son code ISSN est authentique.
Pour cela, on propose l’algorithme du programme principal suivant :
0) Début Verification
1) Répéter
    Ecrire (" Saisir le nombre de publications à vérifier :")
    Lire (N)
  Jusqu’à ( N dans [5..10])
2) PROC Remplir (Pub, code, N)
3) Pour i de 1 à N faire
    Si (FN authentique (Code[i]))
    Alors Ecrire (Pub[i])
    Fin Si
  Fin Pour
4) Fin Verification

Travail demandé :

  1. Traduire l’algorithme Verification en un programme Pascal et ajouter les déclarations nécessaires.
  2. Développer le module Remplir qui permet de saisir les noms des N publications dans un tableau nommé Pub ainsi que les N codes ISSN correspondants dans un tableau nommé Code sachant qu’un code ISSN doit être une chaine représentée comme suit : ISSN Bloc1-Bloc2 où Bloc1 et Bloc2 sont deux groupes de quatre chiffres chacun.
  3. Développer le module Authentique qui permet de vérifier l’authenticité d’un code ISSN en utilisant le procédé décrit précédemment.

Bac pratique 2017-Sujet 15:

Le ministère de l’éducation organise une olympiade d’informatique à l’échelle nationale.
Pour générer un code pour chaque participant à cette olympiade, on se propose d’écrire un programme intitulé Olympiade qui permet de:

  • remplir deux tableaux TN et TG respectivement par, les noms et les gouvernorats d’origine des N participants avec 5 ≤ N ≤ 26. Il est à noter que le nom d’un participant ne doit pas dépasser 15 lettres et celui du gouvernorat est d’au maximum 10 lettres.
  • générer dans un troisième tableau TC, un code pour chaque participant. Ce code est formé de 5 caractères dont :
    • les trois premiers caractères représentent les trois premières lettres du gouvernorat du participant
    • et les deux derniers caractères est un nombre de 2 chiffres représentant le rang du participant par rapport aux autres participants du même gouvernorat
  • afficher pour chaque participant, son nom et son code.
Exemple :
Pour N = 9 et les deux tableaux TN et TG suivants :
TN Rahma AyoubAyaAliMohamedBilelMeriemSanaAnis
12345 6789
TG Jendouba MonastirBèjaJendoubaTataouineJendoubaMonastirSfaxSfax
12345 6789
Après génération des codes, le tableau TC sera :
TC Jen01 Mon01Bèj01Jen02Tat01Jen03Mon02Sfa01Sfa02
12345 6789
En effet, la participante Rahma aura le code Jen01 puisque les trois premières lettres de son gouvernorat est Jen et elle est la première participante du gouvernorat de Jendouba.
Le participant Anis aura le code Sfa02 puisque les trois premières lettres de son gouvernorat est Sfa et il est le deuxième participant du gouvernorat de Sfax.
Le programme affiche :
Rahma    Jen01
Ayoub    Mon01
Aya    Bèj01
Ali    Jen02
Mohamed    Tat01
Bilel    Jen03
Meriem    Mon02
Sana    Sfa01
Anis    Sfa02
Pour cela on propose l’algorithme du programme principal suivant :
0) Début Olympiade
1) Répéter
Ecrire ("Donner le nombre de participants :")
Lire(N)
Jusqu’à (N dans [5..26])
2) Pour i de 1 à N faire
    Repeter
      Ecrire ("Donner le nom du participant :")
      Lire(TN[i])
    Jusqu’à ( FN Verif ( TN[i], 15))
    Repeter
      Ecrire ("Donner le nom du gouvernorat :")
      Lire (TG[i])
    Jusqu’à ( FN Verif ( TG[i], 10))
  Fin Pour
3) PROC Generer (TG,TC, N)
4) PROC Afficher (TN, TC, N)
5) Fin Olympiade

Travail demandé :

  1. Traduire l’algorithme Olympiade en un programme Pascal et ajouter les déclarations nécessaires.
  2. Développer le module Verif qui permet de vérifier si une chaine est composée uniquement par des lettres et de longueur L donnée
  3. Développer le module Generer qui permet de générer le tableau TC comme décrit précédemment.
  4. Développer le module Afficher qui permet d’afficher pour chaque participant, son nom et son code.

Algo.tn ©