En el escrito anterior habíamos
definido que es un vector que es analógicamente es un arreglo en programación,
se continuara con otros conceptos de vectores, así como la definición de una
bandera y su función en una estructura, además se desarrollara algunas
aplicaciones de problemas en que se podrá evidenciar el uso de vectores como la
mejor alternativa para el desarrollo de los programas.
Lo habitual es que un vector tenga una
cantidad fija de memoria asignada, aunque dependiendo del tipo de vector y del
lenguaje de programación un vector podría tener una cantidad variable de datos
en el mismo programa. En este caso, se les denomina vectores dinámicos, en
oposición, a los vectores con una cantidad fija de memoria asignada se los
denomina vectores estáticos. El uso de vectores dinámicos requiere realizar una
apropiada gestión de memoria dinámica. Un uso incorrecto de los vectores
dinámicos, o mejor dicho, una mala gestión de la memoria dinámica, puede
conducir a una fuga de memoria. Al utilizar vectores dinámicos siempre habrá
que liberar la memoria utilizada cuando ésta ya no se vaya a seguir utilizando.
Habiendo definido los vectores de una
forma general, aunque existen libros que definen muchos tipos de vectores,
hasta el momento nos conformaremos con los conceptos que hemos visto, ya que en
todos los artículos hemos hablado de programación en una forma básica y en
paralelo con el lenguaje de programación de MATLAB.
Ahora bien. Cuando se diseñan
algoritmos que incluyen estructuras de control repetitivas, existen ciertas
variables que cumplen una función específica en cada iteración del ciclo; las
más comunes son: las variables contadoras, las variables acumuladoras y las
variables bandera.
¿Pero que es una Variables bandera?
¡Pues fácil! Una variable bandera es
utilizada dentro de la condición del ciclo, ya sea sin negar, negada o
conectada con una expresión booleana, ¿Cómo así booleana?, ¡pues fácil! En datos
lógicos que puede representar valores de lógica binaria. Para determinar cuándo un ciclo se sigue
iterando o cuando no. De esta manera una variable bandera debe ser de tipo
booleano.
Ejemplo. Realizar un programa que lea
una serie de números reales y los sume. El programa debe preguntar al usuario
cuando desea ingresar un siguiente dato y si el usuario responde que no desea
ingresar más datos el programa debe confirmar la respuesta. Si el usuario desea
continuar ingresando datos se debe seguir solicitando datos y si el usuario
confirma su deseo de salir, el programa debe mostrar la suma de los datos
leídos y terminar.
Especificación:
Donde,
datos es la colección de n números reales que el usuario ingresa hasta que
decide no continuar ingresando datos y sumaÎ R es la suma de dichos números.
Algoritmo
Solución
bandera:
booleano
suma:
real
dato:
real
c:
caracter
bandera
:= verdadero
suma
:= 0.0
mientras
(bandera) hacer
escriba(
“Ingrese un dato:” )
leer
(dato)
suma
:= suma + dato
escriba(
“Desea continuar ingresando datos (S/N):” )
lea(
c )
si
(c = ‘N’ | c = ‘n’) entonces
escriba(
“Realmente desea salir (S/N):” )
lea(
c )
si
(c = ‘S’ | c = ‘s’) entonces
bandera
:= falso
Fin
(si)
Fin
(si)
Fin_mientras
escriba(
“La suma es:”)
escriba(
suma )
Vale la pena recordar que una variable
del tipo booleano toma valores de verdad y por lo tanto, por sí sola es una
expresión lógica. Adicionalmente, la expresión lógica bandera = verdadero es
equivalente a la expresión lógica bandera.
A continuación vas a ver una serie de
aplicaciones donde se evidencia la utilización de vectores para dar solución a
cada problema.
Ejercicio
1
Escriba un algoritmo que muestre por
pantalla el contenido de un vector. Los valores de las componentes de vector se
introducen por teclado (hasta que introduzca el numero 0).
Algoritmo
Variables
Entero: i, num
Vector Entero: a
Inicio
i = 0
Escriba(“Introduzca un valor de una
componente del vector o 0
para
finalizar”)
Lea (num)
Mientras (num <> 0) hacer ¡Relleno el
vector con los valores
leídos
desde teclado
a[i] = num
i = i+1
Fin (Mientras)
i
= i - 1
Mientras
(i >= 0) hacer
Escriba a[i]
i = i-1
Fin (Mientras)
Fin
Ejercicio 2
Considere una encriptación de mensajes
muy antigua inventada por Isaac newton, la cual se basa en que a cada letra de
un mensaje se le asocia un número (el orden en el abecedario), luego se suma al
número de cada letra otro número la
clave y el resultado es una nueva letra, mira en el abecedario. Por ejemplo, el
mensaje “cruzad el rubicon”, se transformaría en “dsvabeUfmUsvcjdpo” si le sumo
el número clave 1 a cada letra (ya que la
primera letra del mensaje cifrado, la ‘d’, es la que va tras la ‘c’, etc.).
Note que la ch, ll, ñ no existen, y que después de la ‘z’ va la ‘a’. Además los
espacios en blanco se convierten en letras U
si la clave es 1, en V si es 2, etc.
Para ello, elabore en pseudocódigo un algoritmo que a partir de un texto
(cadena de caracteres leída por teclado)
imprima texto cifrado con la clave entera, también leída desde teclado. Pista:
Dentro del bucle que debe recorrer todas las letras del texto, use la siguiente
fórmula para encriptar:
Texto_encriptado[i] =(texto_original[i]-'a'+clave)%26+'a';
/*26 es el número de letras del alfabeto
ASCII*/
Algoritmo Encriptación
Constante
Entero: LetrasASCII, N ¡N es la longitud del
texto
Variable
Entero: i, clave
Vector Caracter: texto_encriptado,
texto_original
Inicio
LetrasASCII = 26
Escriba(“Leer el texto a encriptar:”)
Para i<-0 hasta N-1 hacer
Lee
texto_original[i]
Fin (Para)
Para i<-0 hasta N-1 hacer
texto_encriptado[i]
=(texto_original[i]-'a'+clave)%26+'a')
Fin (Para )
Escriba( “El texto encriptado es:”)
Para i<-0 hasta N-1 hacer
Escriba( texto_encriptado[i] )
Fin (Para)
Fin
POR CAMILO BORJA © 2015 ALL RIGHTS RESERVED.
Fuentes consultadas.
INTRODUCCIÓN A LA ALGORITMICA (FUNDAMENTOS
DE INFORMÁTICA). (Curso 03-04). 2011.E.U.P. Universidad de Sevilla
Tipos
de variables .Conceptos.2014. cursos.ingenieria.
Alegsa.
Definición bandera algoritmos.informatica.2015
0 comentarios:
Publicar un comentario