{"id":21988,"date":"2017-01-05T10:52:57","date_gmt":"2017-01-05T15:52:57","guid":{"rendered":"http:\/\/blog.espol.edu.ec\/estg1003\/?p=467"},"modified":"2026-04-16T09:26:36","modified_gmt":"2026-04-16T14:26:36","slug":"alfabeto-teclado-qwery-pmf","status":"publish","type":"post","link":"https:\/\/blog.espol.edu.ec\/algoritmos101\/stp-aplica\/alfabeto-teclado-qwery-pmf\/","title":{"rendered":"2. Alfabeto - Teclado Qwerty PMF"},"content":{"rendered":"\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-6c531013 wp-block-group-is-layout-flex\">\n<p><a href=\"#concepto\">QWERTY<\/a><\/p>\n\n\n\n<p><a href=\"#alfabetopmf\">alfabeto PMF<\/a><\/p>\n\n\n\n<p><a href=\"#algoritmo\">algoritmo<\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"concepto\">1. Teclado QWERTY<\/h2>\n\n\n\n<p><strong><em>Referencia:<\/em><\/strong> <a href=\"https:\/\/es.wikipedia.org\/wiki\/Teclado_QWERTY\">Teclado Qwerty Wikipedia<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Uso del teclado QWERTY<\/h3>\n\n\n\n<figure class=\"wp-block-image alignright size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"600\" height=\"399\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2017\/07\/qwertyTeclado02.jpg\" alt=\"Teclado Qwerty maquina de escribir\" class=\"wp-image-22296\" \/><\/figure>\n\n\n\n<p>El nombre del teclado QWERTY proviene de las primeras seis letras de su fila superior, fue dise\u00f1ado y patentado por Christopher Sholes en 1868 y vendido a Remington en 1873.<\/p>\n\n\n\n<p>La distribuci\u00f3n QWERTY se dise\u00f1\u00f3 con objetivo de separar las letras m\u00e1s usadas de la zona central del teclado, para evitar que se atascaran las m\u00e1quinas de escribir de primera generaci\u00f3n. Actualmente, \u00e9sta propiedad no es m\u00e1s requerida, sin embargo se ha heredado la distribuci\u00f3n en los teclados de computadora.<\/p>\n\n\n\n<p>A partir de la frecuencia de uso de las letras del alfabeto, se requiere conocer la frecuencia de uso de cada fila del teclado. Los valores de frecuencia para cada letra se encuentran en el archivo: <a href=\"https:\/\/www.dropbox.com\/s\/eijw79ezr03prd6\/usoletras.txt?dl=0\">usoletras.txt<\/a>&nbsp;que por cada l\u00ednea registra la letra y frecuencia relativa separadas por una coma ','.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>archivo: usoletras.txt:\na, 0.11422682511 \nb, 0.0118959769969 \nc, 0.0464006717728 \nd, 0.0543525280541 \n...<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">1.1 QWERTY por filas - Algoritmo en Python<\/h3>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# Analiza teclado QWERTY\n# Datos desde Archivo 'usoletras.txt'\nimport numpy as np\n\n# Ingreso\nnarchivo = input('Nombre del archivo:')\nveces    = &#x5B;]\narchivo  = open(narchivo,'r')\nlinea    = archivo.readline()\nwhile not(linea == ''):\n    partes = linea.split(',')\n    letra  = partes&#x5B;0]\n    frecuencia = float(partes&#x5B;1])\n    veces.append(&#x5B;letra,frecuencia])\n    linea = archivo.readline()\narchivo.close()\n\n# PROCEDIMIENTO\nsuperior = 'qwertyuiop'\nmedia    = 'asdfghjkl\u00f1'\ninferior = 'zxcvbnm'\nk = len(veces)\nusofila = np.zeros(3,dtype=float)\nfor i in range(0,len(veces),1):\n    if (veces&#x5B;i]&#x5B;0] in superior):\n        usofila&#x5B;0] = usofila&#x5B;0]+veces&#x5B;i]&#x5B;1]\n    if (veces&#x5B;i]&#x5B;0] in media):\n        usofila&#x5B;1] = usofila&#x5B;1]+veces&#x5B;i]&#x5B;1]\n    if (veces&#x5B;i]&#x5B;0] in inferior):\n        usofila&#x5B;2] = usofila&#x5B;2]+veces&#x5B;i]&#x5B;1]\n\n# SALIDA\nprint(usofila)\n<\/pre><\/div>\n\n\n<p>resultado:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#091; 0.48999975  0.32815084  0.18184941]<\/code><\/pre>\n\n\n\n<p>La gr\u00e1fica para pmf se obtiene al a\u00f1adir las instrucciones:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# GRAFICA\nimport matplotlib.pyplot as plt\nplt.stem(&#x5B;0,1,2],usofila)\nplt.title('PMF filas teclado QWERTY')\nplt.xlabel('fila superior, media e inferior')\nplt.show()\n<\/pre><\/div>\n\n\n<figure class=\"wp-block-image aligncenter\"><a href=\"https:\/\/blog.espol.edu.ec\/algoritmos101\/estg1003\/files\/2017\/07\/qwertyTeclado03pmf.png\"><img loading=\"lazy\" decoding=\"async\" width=\"375\" height=\"278\" src=\"https:\/\/blog.espol.edu.ec\/algoritmos101\/estg1003\/files\/2017\/07\/qwertyTeclado03pmf.png\" alt=\"\" class=\"wp-image-468\" \/><\/a><\/figure>\n\n\n\n<p><strong>Tarea<\/strong>: En cada caso, realice la gr\u00e1fica de funciones de probabilidad de masa (pmf) y la funci\u00f3n de probabilidades acumulada (cdf)<\/p>\n\n\n\n<p>Encuentre la frecuencia de uso de cada mano, presente la divisi\u00f3n propuesta de el teclado en dos partes: izquierda y derecha.<\/p>\n\n\n\n<p>Realice el ejercicio para determinar la frecuencia de uso de cada dedo de cada mano. Presente un modelo gr\u00e1fico de cada tecla, para mostrar de mejor forma la medida a obtener para cada mano.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"alfabetopmf\">2. Alfabeto - PMF<\/h2>\n\n\n\n<p><strong>Referencia: <\/strong> Ross 2.2 p25, <a href=\"https:\/\/es.wikipedia.org\/wiki\/Teletipo\">Telex, TTY o teletipo(Wikipedia)<\/a><\/p>\n\n\n\n<p><strong>Funciones de probabilidad de masa para alfabeto<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image alignright size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"429\" height=\"371\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2017\/07\/Teletipo_01.jpg\" alt=\"Maquina de Teletipo\" class=\"wp-image-22294\" \/><\/figure>\n\n\n\n<p>Para el \"TELEX\", \"TTY\", \"teletype\" o sistema de transmisi\u00f3n\/recepci\u00f3n de mensajes de texto mecanografiados, al desconocer el contenido del mensaje se podr\u00eda considerar que cada letra presenta un comportamiento aleatorio. Se puede intuir que hay letras que son poco comunes como 'x' y otras muy comunes como 'e'.<\/p>\n\n\n\n<p>Para el modelo se requiere estimar funci\u00f3n de probabilidad de masa (pmf), tomando como base solo el alfabeto incluyendo la letra '\u00f1', sin discriminar may\u00fasculas y min\u00fasculas.<\/p>\n\n\n\n<p>Para un ensayo, se usar\u00eda un texto con una cantidad considerable de letras, como por ejemplo una obra literaria.<\/p>\n\n\n\n<p>Por ejemplo: '<a href=\"https:\/\/www.dropbox.com\/s\/7qpx0qumuiap8om\/elaguacate_Letra.txt?dl=0\">elaguacate_Letra.txt<\/a>'<\/p>\n\n\n\n<p><em><strong>Referencia<\/strong><\/em>: <a href=\"https:\/\/www.museopasillo.gob.ec\/wp-content\/uploads\/2023\/12\/Guerrero_Tamayo_Cesar_Letra_El_Aguacate.pdf\">https:\/\/www.museopasillo.gob.ec\/wp-content\/uploads\/2023\/12\/Guerrero_Tamayo_Cesar_Letra_El_Aguacate.pdf<\/a><\/p>\n\n\n\n<p>Para procesar el texto se usa como entrada un archivo en formato .txt, analizando por l\u00ednea, por s\u00edmbolo y contando las <strong>veces<\/strong>&nbsp;que aparece cada letra del <strong>alfabeto<\/strong>. La frecuencia relativa de cada letra&nbsp;respecto al total de <strong>letras,&nbsp;<\/strong>permitir\u00e1 visualizar la forma de la funci\u00f3n probabilidad de masa (pmf) para el alfabeto.<\/p>\n\n\n\n<p>Nota: Considere solo el total de letras, no el total de s\u00edmbolos (no incluye \",;.!?\" etc.)<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"algoritmo\">3. Alfabeto PMF - Algoritmo con Python<\/h2>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# procesar un archivo de texto\n# Determinar la funci\u00f3n de probabilidad de masa\n# para las letras del alfabeto(incluye \u00f1)\nimport numpy as np\n\n# INGRESO\n# archivo=input('archivo a leer.txt: ')\nnombrearchivo='elaguacate_Letra.txt'\n\n# PROCEDIMIENTO\nalfabeto='abcdefghijklmn\u00f1opqrstuvwxyz'\nk=len(alfabeto)\nveces=np.zeros(k,dtype=int)\ntotal=0\n# procesa el archivo\narchivo = open(nombrearchivo,'r')\nunalinea = archivo.readline()\nwhile not(unalinea==''):\n    n=len(unalinea)\n    unalinea = unalinea.strip('\\n')\n    unalinea = unalinea.lower()\n    m=len(unalinea)\n    for j in range(0,m,1):\n        unsimbolo=unalinea&#x5B;j]\n        donde = alfabeto.find(unsimbolo)\n        if (donde&gt;=0): #Si no encuentra es negativo\n            veces&#x5B;donde]=veces&#x5B;donde]+1\n            total=total+1\n    unalinea = archivo.readline()\narchivo.close()\n\nfrelativa=veces\/total\nalfa=np.arange(0,len(alfabeto))\n\n# SALIDA\nprint('Letras contadas: ', total)\nprint('i,letra,veces,frelativa')\nfor i in range(0,len(alfabeto),1):\n    print(i, alfabeto&#x5B;i],veces&#x5B;i], frelativa&#x5B;i])\n<\/pre><\/div>\n\n\n<p>el resultado obtenido es:<\/p>\n\n\n\n<pre class=\"wp-block-code alignwide\"><code>Letras contadas:  253\ni,letra,veces,frelativa\n0 a 25 0.098814229249\n1 b 1 0.00395256916996\n2 c 5 0.0197628458498\n3 d 7 0.0276679841897\n4 e 25 0.098814229249\n5 f 4 0.0158102766798\n6 g 0 0.0\n7 h 2 0.00790513833992\n8 i 22 0.0869565217391\n9 j 1 0.00395256916996\n10 k 0 0.0\n11 l 15 0.0592885375494\n12 m 15 0.0592885375494\n13 n 20 0.0790513833992\n14 \u00f1 0 0.0\n15 o 24 0.0948616600791\n16 p 4 0.0158102766798\n17 q 3 0.0118577075099\n18 r 16 0.0632411067194\n19 s 21 0.0830039525692\n20 t 16 0.0632411067194\n21 u 16 0.0632411067194\n22 v 3 0.0118577075099\n23 w 0 0.0\n24 x 0 0.0\n25 y 7 0.0276679841897\n26 z 1 0.00395256916996<\/code><\/pre>\n\n\n\n<p>para la gr\u00e1fica se a\u00f1ade al algoritmo:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# GRAFICA\nimport matplotlib.pyplot as plt\nplt.stem(alfa,frelativa)\nplt.title('PMF alfabeto')\nplt.xlabel(alfabeto)\nplt.show()\n<\/pre><\/div>\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/blog.espol.edu.ec\/algoritmos101\/estg1003\/files\/2017\/07\/alfabetopmf02.png\" alt=\"\" \/><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<p>otro experimento realizado con:<br>Poe, Edgar Allan. Eureka. Vol. 13. EDAF, 2006.<\/p>\n\n\n\n<p>tiene el siguiente resultado:<\/p>\n\n\n\n<pre class=\"wp-block-code alignwide\"><code>Letras contadas:  78598\ni,letra,veces,frelativa\n0 a 8978 0.11422682511\n1 b 935 0.0118959769969\n2 c 3647 0.0464006717728\n3 d 4272 0.0543525280541\n4 e 10455 0.133018651874\n5 f 658 0.00837171429298\n6 g 818 0.010407389501\n7 h 632 0.00804091707168\n8 i 5792 0.0736914425303\n9 j 161 0.00204839817807\n10 k 36 0.000458026921805\n11 l 4203 0.0534746431207\n12 m 2541 0.0323290668974\n13 n 6126 0.0779409145271\n14 \u00f1 46 0.000585256622306\n15 o 6725 0.0855619735871\n16 p 2271 0.0288938649838\n17 q 692 0.00880429527469\n18 r 4899 0.0623298302756\n19 s 5988 0.0761851446602\n20 t 3792 0.0482455024301\n21 u 3362 0.0427746253085\n22 v 647 0.00823176162243\n23 w 34 0.000432580981704\n24 x 177 0.00225196569887\n25 y 491 0.00624697829461\n26 z 220 0.00279905341103<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/blog.espol.edu.ec\/algoritmos101\/estg1003\/files\/2017\/07\/alfabetopmf.png\" alt=\"\" \/><\/figure>\n\n\n\n<p>Ser\u00e1 necesario que realizar el experimento muchas veces para tener un comportamiento m\u00e1s general, se propone realizar al estudiante su experimento con otros textos.<\/p>\n\n\n\n<p>Con los resultados, se requiere:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Realizar la pmf para vocales<\/li>\n\n\n\n<li>Realizar la pmf para consonantes<\/li>\n\n\n\n<li>determine las letras con menor probabilidad de cada grupo<\/li>\n\n\n\n<li>escriba alguna recomendaci\u00f3n para mejorar el experimento<\/li>\n\n\n\n<li>escriba al menos una conclusi\u00f3n<\/li>\n<\/ol>\n\n\n\n<p>Considere lo siguiente:<\/p>\n\n\n\n<p>Si en una transmisi\u00f3n de texto, por ruido en el canal se cambian aleatoriamente algunos caracteres,<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u00bfCu\u00e1les cambios ser\u00edan los que afectan menos al mensaje?<\/li>\n\n\n\n<li>\u00bfCu\u00e1les cambios ser\u00edan los que afectan m\u00e1s al mensaje?<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<p>En caso de presentar el resultado de frecuencias relativas en un archivo:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# Archivo\nnarchivo='usoletras.txt'\narchivo=open(narchivo,'w')\nfor i in range(0,k,1):\n    linea=alfabeto&#x5B;i]+','+str(frelativa&#x5B;i])+'\\n'\n    archivo.write(linea)\narchivo.close()\n<\/pre><\/div>\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>QWERTY alfabeto PMF algoritmo 1. Teclado QWERTY Referencia: Teclado Qwerty Wikipedia Uso del teclado QWERTY El nombre del teclado QWERTY proviene de las primeras seis letras de su fila superior, fue dise\u00f1ado y patentado por Christopher Sholes en 1868 y vendido a Remington en 1873. La distribuci\u00f3n QWERTY se dise\u00f1\u00f3 con objetivo de separar las [&hellip;]<\/p>\n","protected":false},"author":8043,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"wp-custom-template-entrada-stp-ejercicios","format":"standard","meta":{"footnotes":""},"categories":[202],"tags":[],"class_list":["post-21988","post","type-post","status-publish","format-standard","hentry","category-stp-aplica"],"_links":{"self":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/21988","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/users\/8043"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/comments?post=21988"}],"version-history":[{"count":4,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/21988\/revisions"}],"predecessor-version":[{"id":24327,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/21988\/revisions\/24327"}],"wp:attachment":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/media?parent=21988"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/categories?post=21988"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/tags?post=21988"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}