El manejo de texto en computador requiere una representación de los símbolos o letras que se usan en un idioma.
Cada símbolo, letra o «caracter» que se presenta al escribir en pantalla se convierte en una sucesión ordenada de imágenes, semejante a agrupar las fichas del juego Scrabble
Una palabra se puede observar como las casillas de un vector, dando la pauta para el manejo de texto en el computador.
En Python, el texto para los mensajes en las preguntas input y las salidas print se escriben entre comillas " o apóstrofes '. Cada letra de una palabra se puede identificar por su posición como en un vector.
Si al unir palabras se forma una oración, el concepto se extiende a programación como «concatenar«. Básicamente concatenar es la unión de varias palabras para formar una oración un título o un mensaje.
Para convertir una frase o palabra a mayúsculas o viceversa, se usan las instrucciones: palabra.upper() y palabra.lower().
Siguiendo el ejemplo anterior, el ejemplo de uso es:
>>> frase
'El saber no ocupa lugar'
>>> enmayusculas = frase.upper()
>>> enmayusculas
'EL SABER NO OCUPA LUGAR'
>>> enminusculas = frase.lower()
>>> enminusculas
'el saber no ocupa lugar'
>>>
Comparar cadenas o strings
También es posible comparar caracteres, o cadenas entre si, por ejemplo para buscar cuántas vocales tiene una palabra. Considere que los caracteres o ‘dibujos de letras’ mayúsculas son diferentes a los de minúsculas.
Se puede comparar el orden alfabético de los caracteres, pues el computador los almacena en una posición ordenada, semejante a un vector [‘a’,’b’,’c’, … ]
En Python se pueden obtener los datos de las matrices desde archivos, o almacenar las matrices hacia archivos. Así, cuando las matrices son de grandes dimensiones, no será necesario tener que escribir los valores de las matrices cada vez que se requiera hacer una operación.
En librería Numpy , existen funciones incorporadas para guardar o abrir una matriz desde un archivo en formato .txtcon las instrucciones: np.savetxt(), np.loadtxt()
Guardar matriz en archivo.txt con Numpy
Para guardar una matriz a un archivo use: numpy.savetxt('matriz.txt', matriz)
se puede encontrar en archivo.txt en el directorio de trabajo de Python
El archivo puede ser abierto para observar desde el «block de notas»
Abrir archivo.txt de una matriz con Numpy
Continuando con el ejercicio anterior, para abrir o leer desde un archivo en formato de texto ‘matriz.txt‘, se dispone de la instrucción de Numpy: np.loadtxt('matriz.txt',dtype=int)
La instrucción permite indicar el tipo de datos que se usan en el arreglo.
>>> A = np.loadtxt('matriz00.txt',dtype=int)
>>> A
array([[1, 2, 3],
[4, 5, 6]])
>>> B = np.loadtxt('matriz00.txt')
>>> B
array([[ 1., 2., 3.],
[ 4., 5., 6.]])
Nota: lo importante es el formato del archivo en tipo texto. Algunas veces los archivos tienen extensión .dat que también pueden ser leídos.
Las matrices en programación se manejan como arreglos de Numpy.
La interpretación de los datos de una Matriz o arreglo puede ser desde un sistema de ecuaciones, una tabla de goles de un campeonato o una hoja de calendario.
Al igual que los vectores, las matrices en arreglos tienen como componentes: «nombre», «índice» y «tamaño». Los valores de tamaño dependen de las dimensiones de la matriz. Para los primeros ejercicios serán rectangulares de nxm.
Los índices a diferencia de el álgebra, inician en cero.
En los ejercicios, la matriz de dos dimensiones usa como índices de filas la variable «i» y para columnas «j».
Para un mejor manejo de matrices en programación, se usan las funciones de la librería Numpy (Numerical Python) que se incorporan en el bloque de inicio con el alias np.
import numpy as np
Definir una matriz de nxm, con ceros o llena de unos, requiere la instrucción:
El tipo de matriz (dtype=int) se añade para indicar que la matriz tiene datos tipo entero, la forma predeterminada para los datos es tipo real (dtype=float)
Las dimensiones de la matriz se obtienen mediante la instrucción con Numpy:
La secuencia de Fibonacci es muy reconocida en la matemática. Como introducción al tema se recomienda observar el video de «misterio de las matemáticas» que tiene una explicación interesante entre los tiempos 2:33 y 6:40, por lo que el video inicia en el minuto 2:33.
La secuencia se desarrolla a partir de dos números: 1 y 1
El siguiente término se obtiene sumando los dos anteriores:
1 1 2 3 5 8 13 21 ...
a+b=c
a+b=c
a+b=c
El algoritmo primero se presenta en el diagrama de flujo para facilidad visual de los pasos.
Al requerir mostrar toda la secuencia, en lugar de un solo valor, aparece la necesidad de usar un vector.
Para éste caso usamos la librería numpy para obtener los siguientes resultados:
Al disponer de varios de datos de igual tipo y relacionados se manejan como un conjunto. Ejemplo: una lista de calificaciones de una lección o las edades de los estudiantes.
estudiante
edad[estudiante]
1
17
2
21
3
19
El conjunto de datos se maneja como un “arreglo” que tiene las siguientes características:
Todos los datos son de igual tipo (enteros, reales, lógicos, etc.)
Se conoce su “tamaño”, es decir la cantidad de elementos en el arreglo.
El arreglo se identifica por medio del nombre del conjunto ordenado de datos.
Cada elemento se identifica por una variable índice que da su posición.
edad = \begin{pmatrix} 17\\21\\19 \end{pmatrix}
En éste ejemplo se puede observar que:
todos los datos de las edades son tipo entero, int
el tamaño o cantidad de estudiantes es n=3 en el arreglo
los datos corresponden a la “edad”, nombre del arreglo
mediante su posición en la lista i, se identifica al estudiante. El estudiante 2, i=2, la edad es edad[2]=21.
Otro ejemplo , temperaturas por día. Los datos son tipo Real, float:
día
1
2
3
4
temperatura[día]
28.6
24.9
26.5
25.1
Tamaño n=4, temperatura[2]=24.9
Para éste caso, el arreglo contiene las mediciones de temperatura en varios días, para éste caso es de 4 días, por lo que el arreglo es de tamaño 4. Todos los datos son números reales, si se quiere conocer la temperatura de un día específico se usa la variable índice día, con lo que se obtiene el valor de 24.9.
Los arreglos en algoritmos se manejan como vectores y matrices en álgebra. Python dispone de la librería Numpy para manejo de arreglos, por lo que en el bloque de inicio se requiere pedir la librería "numpy" con el álias "np".
import numpy as np
En el caso que se usen arreglos, los bloques de ingreso deben reflejar las acciones para llenar los datos.
Bloque de Ingreso
La primera pregunta para llenar una lista de temperaturas es para conocer cuántos datos se encuentran registrados. Por lo que primero se preguntará el tamañon del arreglo .
El ingreso de datos es de forma ordenada, por lo que se inicia el índice para solicitar el valor del primero de la lista. Por ejemplo:
día=1,
Luego se solicita el ingreso de la temperatura de cada día: temperatura[día] .
Se continúa el siguiente índice , sumándole uno, para repetir la operación hasta completar el ingreso de todos los datos.
Se repite el procedimiento para cada elemento del arreglo «temperatura«.
Los índices en arreglos se manejan de forma semejante a un vector en álgebra. Sin embargo, la numeración de casillas empieza en cero.
i
0
1
2
3
día
1
2
3
4
temperatura[día]
28.6
24.9
26.5
25.1
Por lo que el día 2, tiene índice 1. El índice está en el arreglo desplazado en una posición.
import numpy as np
temperatura = np.array([28.6, 24.9, 26.5, 25.1])
>>> temperatura[2]
26.5>>> temperatura[1]
24.9>>>>>>len(temperatura)
4>>>
Asunto para recordar cuando se realicen las operaciones en el arreglo.
Bloque de procedimiento
Al manejar el conjunto de datos ordenado se puede realizar los cálculos individualmente sobre cada elemento. O se puede manejar el conjunto con las reglas de vectores o matrices.
Por ejemplo, promediar la temperaturas, requiere sumar todas las temperaturas y dividirlas para la cantidad de datos (tamaño)
# PROCEDIMIENTO
promedio = np.sum(temperatura)/n
Bloque de Salida
Para la presentación de datos, cuando se dicta o se muestra uno por uno, se procede de forma semejante al bloque de ingreso.
En algunos lenguajes estructurados, existen formas de presentar todo el conjunto mediante una sola instrucción.
# temperaturas promedioimport numpy as np
# INGRESO
n = int(input('cuántos días: '))
temperatura = np.zeros(n,dtype=float)
dia = 0
whilenot(dia>=n):
temperatura[dia] = float(input('t: '))
dia = dia + 1
# PROCEDIMIENTO
promedio = np.sum(temperatura)/n
# SALIDAprint('promedio t: ',promedio)
print(temperatura)
Bases numéricas se usan para diferentes propósitos, para interpretarlas apropiadamente se requieren algoritmos que usan cocientes, residuos y acumuladores.
Se presentan algunos ejercicios resueltos en los que se requiere realizar el cambio de bases numérica desarrollados con Python.
Para convertir el número Decimal 5 en Binario hay que descomponer el número en la nueva base numérica, para luego trabajar con los residuos y ubicar cada uno desde la posición menos significativa a la más significativa.
Las operaciones se basan principalmente en el uso de cocientes, residuos y acumuladores y el proceso se muestra en la figura:
Observe la diferencia en las operaciones para el divisor y la base, las operaciones son similares a las del ejercicio de Binario a Decimal.
Cambia el divisor y la ponderación usadas, sin embargo las operaciones seguirán siendo básicamente las mismas.
Con esta observación se pueden plantear los cambios de base con otras bases numéricas, por ejemplo la de base 8 también conocida como Octal.
[ Decimal a Binario ] [ Ejercicio ] [ Algoritmo ] || [ Binario a Decimal ] ..
3. Algoritmo Decimal a Binario
Puesto que el ejercicio es una variante del mostrado como Binario a Decimal, se muestra directamente su forma en: Diagrama de flujo, pseudo-código y en Python.
El ejemplo en seudo-código:
Proceso DecimalBinario
Leer decimal
binario ← 0
i ← 0
Mientras decimal > 0
digito ← decimal mod 2
decimal ← trunc(decimal/2)
binario ← binario+digito*10^i
i ← i + 1
FinMientras
Escribir binario
FinProceso
Algoritmo en Python
# Decimal a binario# INGRESO
decimal = int(input("número decimal: "))
# PROCEDIMIENTO
binario = 0
i = 0
while (decimal>0):
digito = decimal%2
decimal = int(decimal//2)
binario = binario+digito*(10**i)
i = i+1
# SALIDAprint("en binario: ",binario)
Resultados en Python
número decimal:5
en binario: 101
>>>
Ejercicios:
Realizar los algoritmos Binario a Decimal y Decimal a Binario usando el lazo Repita-Hasta.
Crear un algoritmo para convertir un número de base numérica x a base y.
Comprobar el algoritmo usando los valores: 23x númeroy. Sugerencia, convierta el número de la base x primero a decimal y luego transforme el resultado a la siguiente base numérica y.