Consultar ensayos de calidad


La Esencia de la Lógica de Programación - Variables, Constantes y Operadores



La Esencia de la Lógica de Programación
27

Capítulo 3

Variables, Constantes y Operadores
Variable
Informalmente algo variable es algo que puede cambiar de un momento a otro. Técnicamente una variable es un campo de memoria al que se le puede cambiar su contenido cuantas veces sea necesario. Primera aclaración, un campo de memoria es un pedacito de la memoria principal del computador en donde podemos guardar un dato. Segunda aclaración, a pesar de que en la memoria es donde se guarda la información exactamente ésta se almacena en variables. Esto le ha de representar a usted que es a través de variables como se puede utilizar la memoria del computador.



Ha notado usted que la maleta de una guitarra es diferente a la maleta de un violín o de una trompeta? Sabe entonces qué es lo que diferencia la maleta de un instrumento musical de la maleta de otro instrumento musical..? Pues precisamente la única diferencia es su contenido es decir el instrumento en sí. Y esto qué tiene que ver con el tema que estamos tratando..? Pues muy sencillo, la diferencia entre una variable y otra radica precisamente en su contenido o mas bien en el tipo de su contenido.

Para poder utilizar variables en el desarrollo de un programa de computador se debe primerodecir qué tipo de dato van a almacenar pues las variables son como unas cajitas de diferentes tamaños y por tal motivo se deben declarar previamente para que el computador las dimensione de acuerdo a las necesidades. Cuales son los tipos de datos que pueden ser almacenados en una variable? A pesar del avance de la tecnología, los tipos de datos de las variables pueden ser :


28



Tipo Entero
Un dato de tipo entero es un número que no tiene punto decimal, por lo tanto en sus operaciones jamas va a generar decimales. Por ejemplo 25, -96 y 0. El hecho de que los datos de tipo entero no generen decimales significa que operan con un juego de reglas llamado Aritmética Entera. Una variable que se declare de tipo entero podra almacenar solamente datos de tipo entero.

Tipo Real
Un dato de tipo real es un número que tiene punto decimal, por lo tanto en sus operaciones puede generar decimales. Por ejemplo 12.3, -78.56 o 45.0. El hecho de que los datos de tipo real generen decimales significa que operan con un juego de reglas llamado Aritmética Real. Una variable que se declare de tipo real podra almacenar solamente datos de tipo real.

Por lo dicho en las anteriores dos definiciones qué tipo de dato sería 5. (así con el puntoy todo). Pensaríamos que es un entero pero en realidad no. La definición de dato entero es que no tiene punto decimal y la de dato Real es que tiene punto decimal, por lo tanto 5. es un dato real.

Tipo Caracter
Un dato tipo caracter es un equivalente del Código ASCII ( American Standard Code for Interchange Information ). Qué es el código ASCII..? Es el Código Internacional de equivalencias Internas en el Sistema Binario. A nivel mundial, los computadores estan construidos en un sistema numérico llamado sistema binario, sistema que se basa solamente en la utilización de unos (1s) y ceros (0s). Este sistema tiene una relación directa con el sistema decimal y por lo tanto fue adoptado ya que permitía aprovechar características físicas de los componentes electrónicos. Dada la gran importancia que poco a poco fueron adquiriendo los computadores, se adoptó un solo código interno para la interpretación de todas y cada una de las teclas (de su teclado, obviamente).

De esta forma cuando usted presiona en su teclado la letra A realmente se genera por dentro de su computador el número 65 pero expresado en código binario, es decir 0100 0001, y cuando usted presiona la tecla 1 se genera internamente el número 49 pero expresado igualmente en código binario, es decir 0011 0001. Cada unade las teclas que usted presione tendra un equivalente interno y por supuesto expresado (internamente) en sistema binario. Cada cero o cada uno utilizado en este sistema se conoce como bit (abreviatura de binary digit) y un conjunto de 8 bits (medida en la cual se expresa el código ASCII) se conoce como un byte (pronúnciese bait).

Como el código ASCII esta expresado en bytes y cada byte tiene 8 bits y cada bit puede tener un 0 8 ó un 1 ( o sea dos estados ) entonces se puede concluir que el código completo consta de 2 combinaciones (o sea 256 equivalencias). A continuación relaciono la tabla completa de equivalencias ASCII.




29

CODIGO ASCII
Tabla de Equivalencias Binarias
Equivalencia en Sistema Decimal Equivalencia en Sistema Binario Equivalencia en Sistema Decimal Equivalencia en Sistema Binario

Caracter que usted digita

Caracter que usted digita

0

48

0011 0000

G

71

0100 0111

1

49

0011 0001

H

72

0100 1000

2

50

0011 0010

I

73

0100 1001

3

51

0011 0011

J

74

0100 1010

4

52

0011 0100

a

97

0110 0001

5

53

0011 0101

b

98

0110 0010

6

54

0011 0110

c

99

0110 0011

7

550011 0111

d

100

0110 0100

8

56

0011 1000

e

101

0110 0101

9

57

0011 1001

f

102

0110 0110

A

65

0100 0001

g

103

0110 0111

B

66

0100 0010

h

104

0110 1000

C

67

0100 0011

i

105

0110 1001

D

68

0100 0100

j

106

0110 1010


30



Como puede usted notar estas son apenas algunas de las 256 equivalencias que tiene la tabla ASCII. Es obvio pensar que también tienen equivalencia los caracteres especiales como la coma, el punto o el paréntesis.

Cuando se tiene un conjunto de caracteres se dice técnicamente que se tiene una cadena por lo tanto el nombre del autor “OMAR” es una cadena. El contenido de una cadena no es evaluado por el computador y se acostumbra acotarlo o encerrarlo entre comillas dobles, así la cadena – 7 es igual a 8” a pesar de no ser lógica ni correcta matematicamente es valida para el computador ya que él en ningún momento evalúa las cadenas.

Cómo se llevan los datos a las variables. .? o sea Cómo se “cargan” las variables..? Pues a través de un signo muy conocido por usted y es el signo =. Este signo tiene, en el caso de los algoritmos computacionales y programas, una connotación un poco diferente a laque se le da en matematicas. El signo igual (=) significa que el computador va a realizar lo que esta a la derecha del igual y lo va a almacenar en la variable que se encuentre a la izquierda del igual. De manera que ya usted puede ver claramente en esta definición que a la izquierda del igual solo puede haber una variable y al lado derecho del igual puede haber una constante, una variable ó una expresión.

De manera que cualquiera de los siguientes esquemas son validos

a=8

Le indica al computador que guarde la constante 8 en la variable a

b=a

Le indica al computador que guarde en la variable b el contenido de la variable a que en la instrucción había sido “cargada” con 8, por lo tanto en la variable b queda el valor de 8 al igual que en la variable a

c=a+b

Le indica al computador que guarde en la variable c el resultado de sumar el contenido de la variable a con el contenido de la variable b. Como la variable a tenía el contenido 8 y la variable b también tenía el contenido 8 entonces el computador sumara 8+8 y ese 16 de resultado lo almacenara en la variable c

Puede notarse en este ejemplo que en la variable a se ha almacenado una constante, en la variable b se ha almacenado el contenido de otra variable y en la variable c se ha almacenado el resultado deuna expresión. Y qué pasara si luego de tener estas tres instrucciones adicionamos la siguiente

b=9

Pues, muy sencillo, el anterior contenido de la variable b que era 8 va a ser reemplazado por el nuevo contenido de la variable b que es 9. Ello significa que cada que se asigna un nuevo valor (proveniente de una constante, una variable o como resultado de una expresión) el valor anterior de la misma variable se pierde.

Así si se quisieran escribir los contenidos de las variables a, b y c el computador nos reportaría para a el contenido 8, para b el contenido 9 y para c el contenido 16.

Todo lo que debe tener en cuenta con la asignación o carga de las variables es lo siguiente




31

a. b. c. d.

Al lado izquierdo del igual solo puede haber una variable Al lado derecho del igual puede haber una constante, una variable o una expresión El computador siempre resuelve lo de la derecha del igual y su resultado lo almacena en la variable que esté a la izquierda del igual Cada vez que se le entra un nuevo valor a una variable, el valor anterior se pierde

De acuerdo a lo dicho vamos a resolver el siguiente conjunto de instrucciones:

Entero: A, B, C

Declara de tipo entero las variables A, B yC de manera que solo podran almacenar datos enteros Almacena la constante 10 en la variable A Almacena la constante 15 en la variable B Almacena la constante 20 en la variable 20 Almacena en la variable A el resultado de sumar el contenido de A mas el contenido de B o sea 10+15 que es igual a 25 Almacena en la variable B el resultado de sumar el contenido de B con la constante 8 o sea 15+8 que es igual a 23 Almacena en la variable C el resultado de sumar el contenido de la variable C mas el contenido de la variable A o sea 20+25 que es igual a 45. Recuérdese que en esta línea se utiliza el último valor de almacenado en la variable A Almacena en la variable C el resultado de sumar el contenido de la variable A mas la constante 5 es decir 25+5 que es igual a 30 Almacena en la variable B el resultado de sumar el contenido de la variable B mas la constante 3 o sea 23+3 que es igual a 26 Almacena en la variable C el resultado de sumar el contenido de la variable C mas la constante 2 o sea 45+2 que es igual a 47 Almacena en la variable A el resultado de restarle al contenido de la variable A el contenido de la variable B o sea 30-26 que es igual a4 Almacena en la variable B el resultado de restarle al contenido de la variable A el contenido de la variable B o sea 4-26 que es igual a -22A = 10 B = 15 C = 20 A=A+B

B=B+8

C=C+A

A=A+5

B=B+3

C=C+2

A=A–B

B=A–B


32



C=A–B

Almacena en la variable C el resultado de restarle al contenido de la variable A el contenido de la variable B o sea 4 (-22) que por propiedades algebraicas es igual a 4+22 o sea 26

Los resultados finales en las tres variables son

Variable A Variable B Variable C

4 -22 26

No olvide que para el manejo de variables cada nuevo valor que se le asigne a una variable borra el valor anterior. Nótese que en este conjunto de instrucciones las tres últimas son iguales en su forma pero no en sus resultados. Para hacerlo mas breve, el seguimiento de este conjunto de instrucciones podríamos detallarlo de la siguiente forma

VARIABLES

Entero: A, B, C A = 10 B = 15 C = 20 A=A+B B=B+8 C=C+A A=A+5 B=B+3 C=C+2 A=A–B B=A–B C=A–B

A 10 10 10 25 25 25 30 30 30 4 4 4

B

C

15 15 15 23 23 23 26 26 26 -22 -22 20 20 20 45 45 45 47 47 47 26

Era evidente que teníamos que llegar al mismo resultado. Esto que acabamos de hacer es precisamente la PRUEBA DE ESCRITORIO de este conjunto de instrucciones.




33

También puede notarse que cada nuevovalor asignado a cada variable reemplaza el valor anterior de la misma variable por esa razón por cada nuevo resultado (en una determinada variable) se va tachando el resultado anterior para indicar que ése ya no es valido.

Ejercicios
1.
a = 10 b = 20 c=5 a=a+3 b=b+4 –a c=a+b+c a=a+c b=4 c=c+3 -b+2 Qué valores quedan almacenados en las variables a, b y c ?

2. a=5 b = 18 c = 15 d = 25 a = a + 10 b=b+5–c c=c+4+b d=d+b+a a=a+1 b=b+c c=b+c d=b+b Qué valores quedan almacenados en las variables a, b, c y d ?

3. a=9 b=6 a=a+4 b=b+2 a = a + 10 b = b – 25 a = a – 20 b=b+5 a=a+4 b=b+2 a = a + 10 b = b – 10 Qué valores quedan almacenados en las variables a y b ?


a = 18 b = 18 c = 18 d = 18 a=a+b b=a-b c=a+b d=a-b a=a-b b=a+b c=a -b d=a+b Qué valores quedan almacenados en las variables a, b, c y d ?

5. a = 10 b=5 a=a-5 b=b+6 a = a + 18 b = b – 23 a = a – 21 b=b-5 a=a-4 b=b-2 a = a + 10 b = b + 10 Qué valores quedan almacenados en las variables a y b ?

6. a=8 b=7 c=5 d=8 a=a+b–c+d b=a+b–c+d c=a+b–c+d d=a+b–c+d a=a+b–c+d b=a+b–c+d c=a+b–c+d d=a+b–c+d Qué valores quedan almacenados en las variables a, b c y d ?




35

Operadores
Los operadores sonsignos que nos permiten expresar relaciones entre variables y/o constantes, relaciones de las cuales normalmente se desprende un resultado. Ya hemos manejado dos operadores que son el de la suma (+) y el de la resta (-) pero no son los únicos. En un algoritmo computacional también se pueden utilizar los siguientes operadores

^ * /

Para expresar la potenciación Para expresar la multiplicación Para expresar la división

Debo anotar que la notación para potenciación que vamos a utilizar en este libro no es standard para todos los lenguajes de programación y en algunos casos el mismo signo tiene otro significado. Por tal motivo sugiero que cuando vaya a utilizar este operador en un programa determinado donde necesite realizar operaciones de potenciación consulte primero el manual del Lenguaje en el cual esté trabajando. Por lo menos lo vamos a utilizar en el desarrollo de este libro.

Algo que debemos tener en cuenta cuando vamos a escribir una expresión es que el computador solo entiende las expresiones en formato linealizado esto quiere decir escritas en una sola línea. De tal manera que si queremos escribir la ecuación

var

=

a + b c + d

No se la podemos entregar al computador tal y cual como esta aquí escrita sino que debemos “transformarla” de manera quequede escrita en una sola línea. Supondríamos en primera instancia que su equivalente (en una sola línea) sería

var = a + b / c + d

Sin embargo aunque a primera vista pareciera ser la misma ecuación, esta expresión podría tener varias interpretaciones. Le pregunto y a usted amigo lector, la ecuación computacional

var = a + b / c + d

a cual de las siguientes ecuaciones reales correspondería..?

var =

a +b c+ d

var = a +

b +d c


36



a+b var = +d c

var = a +

b c+d

Gran pregunta pues es muy obvio que cada una de estas ecuaciones va a dar un resultado diferente. Para solucionar esta gran inquietud todos los computadores tienen implementada una jerarquía de operadores que no es mas que un conjunto de reglas que le permiten a un computador evaluar de una y solo una forma una expresión matematica para que no haya espacio para ambigüedades.

Lo primero que el computador evalúa y realiza son las potencias revisandolas de derecha a izquierda. Lo segundo que el computador evalúa y realiza son las multiplicaciones y divisiones y lo último que revisa son las sumas y restas. Tanto para el nivel de multiplicaciones y divisiones como para el nivel de sumas y restas la evaluación es totalmente indistinta estoquiere decir que en la medida que va encontrando sumas y restas (si esta en este nivel) las va ejecutando.

Veamos entonces el ejemplo inicial

var = a + b / c + d

Sera interpretado por el computador de la siguiente manera. Primero evalúa en esta expresión si existen potencias como no las hay para al siguiente nivel y vuelve a recorrer la expresión evaluando si existen (indistintamente y no necesariamente en ese orden) multiplicaciones y divisiones y encuentra que existe una división de manera que lo primero que realiza es la división de b/c, luego vuelva a recorrer la expresión buscando (en el tercer nivel) sumas y restas (indistintamente y no necesariamente en ese orden) y encuentra la suma de a mas lo que ya había calculado y luego realiza la suma de este último resultado mas d.

Qué es lo que se persigue con esta jerarquía de operadores? Pues sencillamente que cuando el computador vaya a resolver una expresión, en donde por supuesto participen operadores aritméticos, siempre tenga listos los valores que va a operar. De esta forma la evaluación de la expresión en mención se hace en los siguientes pasos




37

var = a + b / c + d

I II

III

Por lo tanto, escribir la expresión así

var= a + b / c + d

SOLAMENTE equivale a la expresión

b var=a + +d c
Y si queremos alterar esa jerarquía porque la expresión que queríamos escribir no era esta qué hacemos? Para eso se hicieron los paréntesisprecisamente para alterar esta jerarquía.

El hecho de que los computadores se basen es esta jerarquía de operadores para realizar sus operaciones es lo único que garantiza que para una determinada expresión el resultado en cualquier computador sea el mismo. Cuando se utilizan paréntesis, el computador detecta el primer paréntesis mas interno y dentro de él aplica la tabla de jerarquía de operadores. Cómo sabe el computador que se encuentra dentro de un “paréntesis mas interno El computador considera un juego de paréntesis como “ as interno” cuando dentro de él no existe ningún otro juego de m paréntesis.

Haciendo uso de la facilidad de los paréntesis podemos entonces expresar computacionalmente las siguientes fórmulas así:

var =

a + b c + d

var = a +

b +d c

VAR = (a + b ) / ( c + d )

VAR = a + b / c + d

var = a +

b c+d

var=

a+b +d c

VAR = a + b / ( c + d )

VAR = ( a + b ) / c + d


38



Puede usted, amigo lector, suponer el papel tan importante que hacen aquí losparéntesis, precisamente porque cuando a través de ellos se altera la jerarquía de operadores es cuando se llega a las fórmulas que queremos que el computador realice. Igualmente ha de saber que un paréntesis mal colocado finalmente hace que los resultados que calcule el computador sean diferentes a los esperados. Veamos el siguiente ejemplo :

VAR = ( a + b / c – d ) / ( a + b / ( c ^ d+ d / ( a – b / c * d ) ) )

Recuerde el computador busca los paréntesis mas internos, sobre ellos aplica la tabla de jerarquía de operadores (primero potencias, segundo multiplicaciones y divisiones y tercero sumas y restas). Luego el orden de resolución de esta ecuación, suponiendo que son variables que tienen ya unos valores asignados, es el siguiente:

VAR = ( a + b / c – d ) / ( a + b / ( c ^ d+ d / ( a – b / c * d ) ) ) I II III VIII IX X XI XII VI VII IV V

El objetivo fundamental de mantener esta jerarquía es que cuando el computador vaya a realizar una operación entre dos operandos, siempre va a tener definidos los operandos. Veamoslo paso a paso y vamos reemplazando por cada uno de los resultados que va encontrando el computador señalando cada resultado por el número ordinal del paso

Primero se ubica en el primer paréntesis mas interno y dentro de él aplica la jerarquía de operacionesVAR = ( a + b / c – d ) / ( a + b / ( c ^ d+ d / ( a – b / c * d ) ) ) VAR = ( a + I – d ) / ( a + b / ( c ^ d+ d / ( a – b / c * d ) ) ) VAR = ( VAR = ( II III – d ) / ( a + b / ( c ^ d+ d / ( a – b / c * d ) ) ) ) / ( a + b / ( c ^ d+ d / ( a – b / c * d ) ) )




39

Luego se ubica en el siguiente paréntesis mas interno. Recuerde que un paréntesis es “mas interno” si no tiene mas paréntesis adentro

VAR = ( VAR = ( VAR = (

III III III

) / ( a + b / ( c ^ d+ d / ( a – ) / ( a + b / ( c ^ d+ d / ( a – ) / ( a + b / ( c ^ d+ d / (

IV * d ) ) ) V VI ))) )))

Sigue buscando y resolviendo los paréntesis que vayan quedando aplicando en cada uno la tabla de jerarquía de operadores

VAR = ( VAR = ( VAR = (

III III III

) / ( a + b / ( c ^ d+ d / ) / ( a + b / ( VII + d / ) / ( a + b / ( VII + VIII

VI VI

)) )) ))

VAR = (

III

)/(a+b/(

IX

))

En la medida en que se van resolviendo completamente los paréntesis, estos van desapareciendo y la expresión se va simplificando

VAR = ( VAR = ( VAR = (

III III III

)/(a+b/ )/(a+ )/( XI X

IX

) ) )

Finalmente la expresión queda reducida a resolver

VAR = VAR = XII

III

/

XI

Bueno y si quisiéramos saberesta fórmula linealizada a que fórmula algebraica correspondería no es sino seguir los mismos pasos que siguió el computador para resolverla y llegaremos a la siguiente fórmula

VAR = ( a + b / c – d ) / ( a + b / ( c ^ d+ d / ( a – b / c * d ) ) )


40



Equivale algebraicamente a

var =

a + a + c
d

b − d c b d + b a − * d c

Ejercicios
Todos los siguientes ejercicios deberan desarrollarse utilizando las reglas de la aritmética entera.



a = 10 b = 20 c = 10 a = a + 15 b = b + 12 c=a*c Qué valores quedan en las variables a, b y c ?



a=3 b=8 c=1 a=5 b=9 c=7 a=a+1 b=b+2 c=c+3 Qué valores quedan en las variables a, b y c ?



a = 10 b=5 c = 10 a=a+b -5 b=a+b -5 c=a+b-5 a=a+5*b/2 b=a+5*b/2 c=a+5*b/2 Qué valores quedan en las variables a, b y c ?






a=5 b=5 c=5 a=a+a b=b+b c = c +c a=a+b+c b=a+b+c c=a+b+c Qué valores quedan en las variables a, b y c ?



a = 10 b = 10 c = 10 a=a+5 b=a+3 c=a+2 a=b+4 b=b+5 c=c+8 Qué valores quedan en las variables a, b y c ?



a = 10 b=1 c=4 a=a+c b=a+c c=a+c a=c+5 b=c+b c=a+b+c Qué valores quedan en las variables a, b y c ?



a=1 b=1 c=1 a=a+a b=b+a c=c+a a=a+ab=b+a c=c+a Qué valores quedan en las variables a, b y c ?



a = 10 b = 50


42



c = 30 a=a–b b=b–c c=c–a a=a–1 b=b–a c=c+a –b Qué valores quedan en las variables a, b y c ?



a=1 b=2 c=3 a=a+b b=a–b c=a*b a=a–b b=a+b c=a*b Qué valores quedan en las variables a, b y c ?

10. a = 1 b=2 c=3 a=a+2 b=a+2+b c=a+2+c a=a/2 b=b/2 c=c/2 Qué valores quedan en las variables a, b y c ?

“Linealizar” las siguientes expresiones (no se olvide que linealizar significa escribir una expresión algebraica en una sola línea). En cada uno de los siguientes ejercicios escribir el orden en que el computador realizaría las operaciones.

11

x =

a a b

+ +

b c c

12.

x =

a + b + c

a b




43

13.

x

=

a a

a + a −

b b

14.

a + x =

b a + b + b c

a +

b c + a

15.

x

=

a

+ a

b +

+ b c

c

16.

a + b + x =

c d * a c a + b * d

17.

x =

a

+

b c a

+

d


44



18.

x

=

a b a b

+ −

b c b c

19.

x

=

a

+

a

+ a

a + c + a + b

b d

20.

x = a + b +

c d

+

a b − c a b + c


Política de privacidad