On se propose de concevoir un algorithme et un programme Python permettant de saisir une chaîne de caractères ch et de la crypter en formant une nouvelle chaîne par les miroirs des mots de ch dans leur ordre d’apparition. On rappelle que le miroir d’un mot consiste à permuter le premier caractère avec le dernier, le deuxième caractère avec l’avant dernier et ainsi de suite.
Remarque : La chaîne ch doit être non vide et de longueur inférieure à 50, contient seulement des lettres alphabétiques en minuscule et chaque deux mots consécutifs sont séparés par un seul espace.
Exemple :
Pour ch = "La vie est une aventure merveilleuse"
On obtient la chaîne cryptée : "aL eiv tse enu erutneva esuellievrem"
Dans cet algorithme, On va utiliser 5 fonctions :
Algorithme du programme Principal
1 2 3 4 5 |
Algorithme cryptage_chaine Debut ch<-saisie_chaine() Ecrire('La chaine cryptee est '+cryptage(ch)) Fin |
Déclaration des objets
Objet | Type / Nature |
---|---|
ch | chaîne des caractères |
La fonction supprimer_espaces
Cette fonction remplace les doubles espaces se trouvant dans une chaîne des caractères par un seul espace.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
fonction supprimer_espaces(ch:chaine):chaine Début Tant que(ch[0]=' ') faire # elimnier tous les espaces au début de la chaine ch<-Sous_chaine(ch,1,long(ch)) Fin tant que Tant que (ch[long(ch)-1]=' ') faire # elimnier tous les espaces a la fin de la chaine ch<-Sous_chaine(ch,0,long(ch)-1) Fin tant que Tant que (Pos(ch,' ')>0) faire ch<-ch.replace(" ", " ") # remplacer les doubles espaces apar un seul espace Fin tant que retourner ch Fin |
La fonction verif_lettres
Cette fonction vérifie que La chaîne ch est non vide et de longueur inférieure à 50, contient seulement des lettres alphabétiques en minuscule et chaque deux mots consécutifs sont séparés par un seul espace.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
fonction verif_lettres(ch:chaine):booleen Début Si 1<=long(ch)<=50 alors ch<-supprimer_espaces (ch) i=0 Tant que (i<long(ch)-1) et (('a'<=ch[i]<='z') ou (ch[i]=' ')) faire i<-i+1 Fin tant que retourner (('a'<=ch[i]<='z') ou (ch=' ')) Sinon retourner Faux Fin si Fin |
Déclaration des objets
Objet | Type / Nature |
---|---|
i | entier |
La fonction saisie_chaine
Cette fonction saisit une chaine non vide et de longueur inférieure à 50, contient seulement des lettres alphabétiques en minuscule et chaque deux mots consécutifs sont séparés par un seul espace.
1 2 3 4 5 6 7 8 9 10 |
fonction saisie_chaine():chaine Début Ecrire("donner une chaine forme au maximum 50 lettres minuscules et/ou espaces: ") Lire(ch) Tant que (verif_lettres(ch)=Faux) faire Ecrire("donner une chaine forme au maximum 50 lettres minuscules et/ou espaces: ") Lire(ch) Fin tant que retourner ch Fin |
Déclaration des objets
Objet | Type / Nature |
---|---|
ch | chaîne des caractères |
La fonction rotation_miroir
Cette fonction permute le premier caractère avec le dernier, le deuxième caractère avec l’avant dernier et ainsi de suite
1 2 3 4 5 6 7 8 |
fonction rotation_miroir(ch:chaine):chaine Début ch_rotation<-'' Pour i de 0 à long(ch)-1 faire ch_rotation<-ch[i]+ch_rotation Fin pour retourner ch_rotation Fin |
Déclaration des objets
Objet | Type / Nature |
---|---|
ch_rotation | chaîne des caractères |
La fonction cryptage
Cette fonction fait le cryptage d'une chaîne des caractères.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
fonction cryptage(ch:chaine):chaine Début ch=supprimer_espaces (ch) i=0 ch1<-'' ch_crypter<-'' Tant que (i<len(ch)) faire Si ('a'<=ch[i]<='z') alors ch1<-ch1+ch[i] Finsi Si ((ch[i]=' ') ou (i=long(ch)-1)) : ch_crypter<-ch_crypter+rotation_miroir(ch1)+' ' ch1<-'' Finsi i<-i+1 Fin tant que retourner ch_crypter Fin |
Déclaration des objets
Objet | Type / Nature |
---|---|
i | entier |
ch1 | chaîne des caractères |
ch_crypter | chaîne des caractères |
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 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# Fonction qui supprime des espaces de la chaine des carcatères def supprimer_espaces (ch) : while(ch[0]==' '): # elimnier tous les espaces au début de la chaine ch=ch[1:len(ch)] while(ch[len(ch)-1]==' '): # elimnier tous les espaces a la fin de la chaine ch=ch[0:len(ch)-1] while (ch.find(' ')>0): ch=ch.replace(" ", " ") # remplacer les doubles espaces apar un seul espace return ch def verif_lettres(ch) : if 1<=len(ch)<=50 : ch=supprimer_espaces (ch) i=0 while (i<len(ch)-1) and (('a'<=ch[i]<='z') or (ch[i]==' ')): i=i+1 return (('a'<=ch[i]<='z') or (ch==' ')) else: return False def saisie_chaine(): ch=input("donner une chaine forme au maximum 50 lettres minuscules et/ou espaces: ") while (verif_lettres(ch)==False) : ch=input("donner une chaine forme au maximum 50 lettres minuscules et/ou espaces: ") return ch def rotation_miroir(ch): ch_rotation='' for i in range(len(ch)): ch_rotation=ch[i]+ch_rotation return ch_rotation def crypter(ch): ch=supprimer_espaces (ch) i=0 ch1='' ch_crypter='' while (i<len(ch)): if ('a'<=ch[i]<='z'): ch1=ch1+ch[i] if ((ch[i]==' ') or (i==len(ch)-1)) : ch_crypter=ch_crypter+rotation_miroir(ch1)+' ' ch1='' i=i+1 return ch_crypter ch=saisie_chaine() print('La chaine cryptee est '+crypter(ch)) |
Exécution du programme:
Pour créer une application en Python et Designer QT qui crypte une chaîne des caractères, on va suivre ces étapes:
a- Ouvrez Qt Designer et créez un nouveau fichier de type Main Window.
b- Ajoutez ces widgets:
QLineEdit
nommé 'ch' pour entrer une chaîne des caractères.
QPushButton
nommé 'crypter_bt' pour crypter une chaîne des caractères.
QLabel
nommé 'msg' pour afficher des messages d'erreur et la chaîne des caractères cryptée.
Enregistrez le fichier avec l'extension .ui
, par exemple miroirs-mots-interface.ui
.
Voici un exemple de script Python qui utilise l'interface graphique générée par Qt Designer.
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 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
from PyQt5.uic import loadUi from PyQt5.QtWidgets import QApplication app = QApplication([]) windows = loadUi ("miroirs-mots-interface.ui") # Fonction qui supprime des espaces de la chaine des carcatères def supprimer_espaces (ch) : while(ch[0]==' '): # elimnier tous les espaces au début de la chaine ch=ch[1:len(ch)] while(ch[len(ch)-1]==' '): # elimnier tous les espaces a la fin de la chaine ch=ch[0:len(ch)-1] while (ch.find(' ')>0): ch=ch.replace(" ", " ") # remplacer les doubles espaces apar un seul espace return ch def verif_lettres(ch) : if 1<=len(ch)<=50 : ch=supprimer_espaces (ch) i=0 while (i<len(ch)-1) and (('a'<=ch[i]<='z') or (ch[i]==' ')): i=i+1 return (('a'<=ch[i]<='z') or (ch==' ')) else: return False def rotation_miroir(ch): ch_rotation='' for i in range(len(ch)): ch_rotation=ch[i]+ch_rotation return ch_rotation def play(): windows.msg.clear() ch = windows.ch.text() print(ch) if (verif_lettres(ch)) : ch=supprimer_espaces (ch) i=0 ch1='' ch_crypter='' while (i<len(ch)): if ('a'<=ch[i]<='z'): ch1=ch1+ch[i] if ((ch[i]==' ') or (i==len(ch)-1)) : ch_crypter=ch_crypter+rotation_miroir(ch1)+' ' ch1='' i=i+1 windows.msg.setText('La chaine cryptee est '+ch_crypter) else: windows.msg.setText("donner une chaine forme au maximum 50 lettres minuscules et/ou espaces:") windows.crypter_bt.clicked.connect(play) windows.show() app.exec_() |
Exécution du programme
Vous pouvez voir aussi :
La robotique éducative joue un rôle important dans l'éducation des enfants et des jeunes en les aidant à acquérir des compétences en science et technologie.
Dans ce cadre notre site web représente une excellente ressource pour les parents, les enseignants et les enfants qui souhaitent découvrir la robotique.
Zaouiet Kontech-Jemmel-Monastir-Tunisie
+216 92 886 231
medaliprof@gmail.com
Site robotique réalisé par Mohamed Ali-Prof Info