WOW !! MUCH LOVE ! SO WORLD PEACE !
Fond bitcoin pour l'amélioration du site: 1memzGeKS7CB3ECNkzSn2qHwxU6NZoJ8o
  Dogecoin (tips/pourboires): DCLoo9Dd4qECqpMLurdgGnaoqbftj16Nvp


Home | Publier un mémoire | Une page au hasard

 > 

Structure de l'information digitale. Cas de conversion des nombres, des chaà®nes de caractères ainsi que des caractères spéciaux en code ascii ou dans une base donnée en vb6.0

( Télécharger le fichier original )
par Eric BIRINGANINE BYUMANINE
Université catholique de Bukavu RDC - Graduat en sciences de l'informatique 2012
  

précédent sommaire suivant

Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy

2.3 Etude des codes

2.3.1 Algorithme

De par l'objectif de l'application qui est celui de la conversion d'un nombre entier donné ou d'un caractère en code ASCII, divers algorithmes ont été utilisés, regroupés en fonctions, à savoir :

2.3.1.1 Conversion des nombres dans une base donnée et leur représentation en mémoire

a) La fonction de conversion décimal en binaire [COM2011]

Le code VB associé à la fonction de conversion du décimal en binaire se présente comme

suit :

Public Function DecimalABinaire(ByVal DecVal As Double) As String

'Variable temporaire qui sert lors du traitement du nombre à convertir

Dim NbTmp As Double

'Variable/Indice de boucle

Dim IndiceP As Integer

' declaration du compteur

NbTmp = DecVal

19

'L'indice est affecté à la variable décimale

For IndiceP = 1 to Int (Log (DecVal) / Log (2)) + 1

'Parcours de la boucle

DecimalABinaire = CDbl (NbTmp Mod 2) & DecimalABinaire

'Conversion du reste de la division de la variable temporaire à 2 en variable de type

Double

NbTmp = CDbl (Int (NbTmp / 2))

'Affectation à la variable temporaire sa propre valeur en entier divisée par 2, mais

convertie en Double

Next IndiceP

'Incrémentation du compteur

End Function

'Fin de la fonction.

b) La fonction DecimalAhexadécimal [COM2004]

Le code VB associé à cette fonction est :

Public Function DecimalAHexadecimal(ByVal nombre1 As Long) As String

'Variable temporaire qui sert lors du traitement du nombre à convertir

DecimalAHexadecimal = hex (nombre1) End Function

Cet algorithme est constitué d'une seule fonction, celle de la conversion du nombre décimal en hexadécimal.

c) La fonction HexadécimalAdécimal [SCH2009]

Le code VB associé à la fonction de conversion du nombre hexadécimal en décimal est :

Public Function HexadecimalADecimal(ByVal hex As String) As Long HexadecimalADecimal = Val ("&h" & hex)

End Function

Cet algorithme, comme le précédent, n'a qu'un seul argument de type chaine de caractères et la fonction principale ne consiste qu'à retransformer ces chaines de caractères en caractères décimaux.

Exemple : A=10

B=11 C=12 D=13 E=14 F=15

Cette opération consiste à affecter pour chaque variable A, B, C, D, E et F les valeurs correspondantes 10, 11, 12, 13, 14 et 15.

d) La fonction HexadécimalAbinaire [EAS2003]

Le code VB associé à la fonction est :

Public Function HexadecimalABinaire(ByVal hex As String) As String

20

'Variable temporaire qui sert lors du traitement du nombre à convertir

Dim i as Byte

'Déclaration de la variable i en entier simple

Dim resultat As String

'Déclaration du résultat en chaîne

For i = 1 To Len (hex)

'Pour i allant de 1 à la longueur de la fonction hexadécimale Select Case Mid (hex, i, 1)

'Sélection de cas en parcourant la boucle Case "0": resultat = resultat & "0000" Case "1": resultat = resultat & "0001" Case "2": resultat = resultat & "0010" Case "3": resultat = resultat & "0011" Case "4": resultat = resultat & "0100" Case "5": resultat = resultat & "0101" Case "6": resultat = resultat & "0110" Case "7": resultat = resultat & "0111" Case "8": resultat = resultat & "1000" Case "9": resultat = resultat & "1001" Case "A": resultat = resultat & "1010" Case "B": resultat = resultat & "1011" Case "C": resultat = resultat & "1100" Case "D": resultat = resultat & "1101" Case "E": resultat = resultat & "1110" Case "F": resultat = resultat & "1111"

End Select

Next i

HexadecimalABinaire = resultat End Function

Cette fonction est constituée d'un seul argument de type chaine de caractères du fait qu'un nombre hexadécimal peut être en caractère ou en chiffre comme ci-haut évoqué.

Elle est constituée en plus de deux variables dont une de type Byte c'est-à-dire entier simple et une autre de String c'est-à-dire chaîne de caractères.

C'est dans cette optique qu'elle a été utilisée dans notre algorithme pour le test de chaque caractère lors du parcours aux occurrences existantes en hexadécimal à savoir : les caractères 0 à 9 et les lettres A à F.

e) La fonction binaireAdécimal [PIE2008]

Elle est l'inverse de la fonction décimalAbinaire évoquée dans les pages précédentes. Elle a pour argument une valeur de type chaine de caractères et a comme variable de type entier servant de compteur et de type décimal servant de conteneur de résultat.

Le code VB associé à la fonction de conversion du binaire en décimal est :

Public Function BinaireADecimal(ByVal bin As String) As String

21

'Variable temporaire qui sert lors du traitement du nombre à convertir

Dim i as Byte

Dim resultat As Long

resultat = 0

For i = 1 To Len (bin)

If Mid (bin, Len (bin) - i + 1, 1) =1 Then

'La fonction Mid va parcourir la boucle pour i allant de 1 à la longueur du binaire

resultat = resultat + 2

End If

Next i

BinaireADecimal = resultat

f) Les fonctions octales à toutes les autres bases [UNI2008]

Pour l'élaboration de ces différentes fonctions, les algorithmes ont été les suivants :

y' Octal à binaire

Le code VB associé à cette fonction est :

Public Function CnvOctBin(ByVal Nb As String) As String

'Variable temporaire qui sert lors du traitement du nombre à convertir

Dim Tmp as String

Nb = («01234567")

For i = 1 to Len (Nb)

C = Mid (Nb, i, 1)

' Affectation de la variable C au parcourt de la boucle i

Select Case c

Case "0": c = "000"

Case "1": c = "001"

Case "2": c = "010"

Case "3": c = "011"

Case "4": c = "100"

Case "5": c = "101"

Case "6": c = "110"

Case "7": c = "111"

End Select

Tmp = Tmp + c

Next

CnvOctBin = Tmp

Exit Function

End Function

y' Octal à hexadécimal

Le code VB associé à cette fonction est :

Public Function CnvOctHex(ByVal Nb As String) As String

'Variable temporaire qui sert lors du traitement du nombre à convertir Dim Tmp as String

Nb = (Nb, "01234567")

22

For i = 1 to Len (Nb)

C = Mid (Nb, i, 1)

Select Case c

Case "0": c = "000"

Case "1": c = "001"

Case "2": c = "010"

Case "3": c = "011"

Case "4": c = "100"

Case "5": c = "101"

Case "6": c = "110"

Case "7": c = "111"

End Select

Tmp = Tmp + c

Next

CnvOctHex = CnvBinHex (Tmp)

Exit Function

End Function

La procédure de résolution d'une équation de conversion d'une base octale à une base hexadécimal indique tout d'abord de passer par la conversion octal à binaire, ensuite reconvertir de la base octale en hexadécimal. Pour notre cas, la fonction précédente, celle de conversion d'octal à binaire, intervient pour passer de l'octal à la base binaire et enfin faire appel à la fonction allant du binaire à la base hexadécimal.

g) Le bouton convertir [HAR2007]

La procédure associée au bouton de conversion est :

Private Sub btconvertir_Click ()

Dim i as Integer

If Combo1.Text = Combo1.List (0) and Combo2.Text = Combo2.List (0) Then

lblresultat.Caption = txtnombre.Text

ElseIf Combo1.Text = Combo1.List (0) and Combo2.Text = Combo2.List (1) Then

For i = 1 To Len (txtnombre.Text)

If (Mid (txtnombre.Text, i, 1) > 1) Then

MsgBox "Ce nombre n'est pas binaire.", "Rappel..."

lblresultat.Caption = ""

End If

Next

End sub

L'algorithme joue naturellement avec la base de départ et la base de conversion. Le teste

s'effectue au niveau de la zone de liste modifiable. Un certain nombre d'erreurs, comme dit

précédemment, sont affichées en cas de défaut d'opération.

h) Le bouton représenter [IRE2005]

Le code VB associé au bouton de représentation des nombres en mémoire est : Function representer (nombre)

23

Dim i, Tableau ()

For i = 8 To 0

Tableau (i - 1) = mid (nombre, i - 1, 1)

If tableau (i - 1) = "" Then

Tableau (i - 1) = "0"

End If

representer = representer & tableau(i - 1)

Next i

End Function

Ce bouton joue un rôle essentiel de notre application, celle de représenter en mémoire le résultat obtenu des différents calculs entre les différentes bases. Il joue avec la zone de liste modifiable de choix du bit de représentation. D'abord, il faut noter que la représentation en mémoire se fait toujours pour un nombre converti en base binaire. De ce fait, une base autre que binaire est tout d'abord reconvertie en base binaire avant sa représentation. Pour ce la, un teste est fait sur la deuxième liste modifiable pour chercher à savoir si la base de conversion a été binaire ou non. Si elle est binaire, la conversion est faite directement. Dans le cas contraire, le résultat obtenu est reconverti en base binaire puis représenté en mémoire. Pour cela, les algorithmes sont les suivants :

V' pour la représentation en 8 bit : la fonction fait appel à une autre fonction utilisée

qui est celle de conversion en binaire. Ensuite, le nombre de caractères est compté pour déterminer combien de 0 faut-il ajouter au début de la suite binaire. La boucle va de 1 jusqu'à 7 diminué de nombre de caractère du nombre binaire. Une soustraction est faite pour déterminer combien d'espace vide seront vu pour y affecter des 0 ; et enfin l'affectation des 0 intervient.

Pour les autres représentations, la procédure est identique sauf pour la boucle qui va de 1 à 15 pour le 16 bits, 1 à 31, pour le 32 bits et enfin de 1 à 63 pour le 64 bits.

i) Conversion des caractères et nombres en ASCII ou dans une base donnée [HAR2005]

Le code VB associé à la procédure est :

Private Sub Form_KeyPress (KeyAscii as Integer)

Label2.Caption = Chr$(KeyAscii)

'Cette instruction convertit le caractère tapé au clavier et qui sera stocké dans l'étiquette 2

Label4.Caption = Asc(Label2.Caption)

'Cette instruction convertit en ASCII le caractère tapé au clavier et qui sera stocké dans

Label6.Caption = Oct(KeyAscii)

'Cette instruction convertit en octal le caractère tapé au clavier et qui sera stocké dans Label8.

Caption = hex(KeyAscii)

'Cette instruction convertit en hexadécimal le caractère tapé au clavier et qui sera stocké dans

l'étiquette 8

Label12.Caption = UCase(Label2.Caption)

'Cette instruction convertit en majuscule le caractère tapé au clavier et qui sera stocké dans

l'étiquette 12

End Sub

24

précédent sommaire suivant






Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy








"Ceux qui vivent sont ceux qui luttent"   Victor Hugo