; ************************************************************ ; Programme: lab_t_7.txt version PEP813 sous Windows ; ; INF2171 - laboratoire traitement des tableaux ; 7) Lire un texte au terminal et afficher la(les) lettre(s) la(les) plus utilisées. ; ; auteur: Bernard Martin ; code permanent: non applicable ; courriel: martin.bernard@uqam.ca ; date: été 2019 ; cours: INF2171 ; *********************************************************** ; STRO msgbien,d lecture: CHARI caract,d ; caractère lu LDX avcaract,d ANDX 0x00DF,i ; transforme en majuscules les minuscules (les majuscules demeurent majuscules) CPX "A",i ; doit être entre A et Z BRLT paslettr CPX "Z",i BRGT paslettr SUBX 0x0041,i ; position dans l'alphabet LDBYTEA alphabet,x ADDA 1,i ; caractère trouvé + 1 STBYTEA alphabet,x ; ; paslettr:CPX "\n",i ; fin de ligne ? BRNE lecture ; ; la lecture est terminée ; ; vérification du maximum parmi les 26 lettres de l'alphabet ; LDX 0,i ; première lettre recherch:LDBYTEA alphabet,x CPA maximum,d BRLE rejet STA maximum,d rejet: ADDX 1,i CPX 26,i BRLT recherch ; ; le "maximum" a été trouvé ; ; nouvelle vérification du "maximum" parmi les 26 lettres de l'alphabet ; LDX 0,i LDA maximum,d BRNE plus STRO msgaucun,d ; aucune lettre retrouvée BR termine plus: CPA 1,i ; 1 ou plusieurs occurences BRNE plusieur STRO msgaff,d ; une seule occurence BR lettres plusieur:STRO msgaffs,d ; plusieurs occurences DECO maximum,d STRO msgfois,d ; lettres: LDBYTEA alphabet,x ; occurence pour une lettre analysée CPA maximum,d BRNE oublie STX sauvex,d ; lettre choisie ADDX 0x0041,i STBYTEX caract,d CHARO caract,d ; affichage de la lettre choisie CHARO " ",i LDX sauvex,d oublie: ADDX 1,i CPX 26,i BRLT lettres ; termine: STRO msgfin,d STOP ; ; variables ; N.B. Il est préférable d'afficher un long message sur plusieurs lignes car la largeur ; de la fenêtre d'output de PEP/8 n'est que de 52 caractères par défaut. msgbien: .ASCII "Bienvenue à ce programme de traitement d'un texte." .ASCII "\n\nVeuillez entrer un texte qui sera analysé" .ASCII "\npour son alphabet.\n\x00" msgaff: .ASCII "\nVoici la(les) lettre(s) utilisée(s) une seule fois:\n\x00" msgaffs: .ASCII "\nVoici la(les) lettre(s) utilisée(s) \x00" msgfois: .ASCII " fois:\n\x00" msgaucun:.ASCII "\nAucune lettre n'a été utilisée.\n\x00" msgfin: .ASCII "\n\nFin normale du programme.\x00" alphabet:.BLOCK 26 ; #1h26a maximum: .BLOCK 2 ; #2d sauvex: .BLOCK 2 ; #2h avcaract:.BLOCK 1 ; #1h caract: .BLOCK 1 ; #1h .END