Variables y operadores
Variables
1. Consideraciones iniciales
Gracias al capítulo anterior ya sabe cómo representa el ordenador los números: en forma binaria. Del mismo modo, la memoria del ordenador, que está formada por celdas, puede contener información, incluidos estos famosos números. En programación, necesita algo sencillo, práctico y flexible de manipular para representar estos números.
Cada celda de memoria está numerada. Si la memoria tiene 256 bytes y cada celda puede contener un byte, entonces hay 256 celdas numeradas de 0 a 255. Por lo tanto, podemos obtener el valor de la celda a partir de su número. Esto significa que podemos obtener el valor de una celda a partir de su número, diciendo que la celda 74 contiene el valor 212. Donde la cosa se complica es cuando la memoria de los ordenadores alcanza un número muy grande de celdas. Con 1 GB de memoria, tiene 1.073.741.824 celdas, cada una de las cuales puede contener un byte. ¿Cómo se puede recordar cada número de una celda? Es imposible, por supuesto.
Por el contrario, si da un nombre o etiqueta a cada valor contenido en la celda o a una serie de valores en varias celdas, para poder recordarlos más fácilmente, resulta mucho más obvio. A esto se le llama variable. En informática, una variable es la asociación de una etiqueta con un valor. Usted da un nombre al valor. La variable representa el valor y lo sustituye. La variable es, por tanto, el valor. Pero, como su nombre indica, este valor puede cambiar con el tiempo, ya sea porque la variable ya no representa la(s) misma(s) celda(s) de memoria o porque el valor de la celda ha cambiado.
¿Qué nombre debo dar a un valor? El nombre que quiera y, si es posible, algo que tenga que ver con lo que representa el valor. Puede ser una letra, una combinación de letras y números u otros símbolos. El formalismo de los nombres de las variables depende del lenguaje utilizado. A veces, un carácter específico indica el tipo (que conocerás más adelante) de la variable: lo que puede contener.
Algunos lenguajes aceptan nombres en minúsculas, mayúsculas, con números, caracteres especiales como el subrayado, etc. Algunos lenguajes, incluido Java, distinguen entre minúsculas y mayúsculas. Aunque, por lo general, puede utilizar un nombre...
Operadores y cálculos
1. Asignaciones
2. Operadores aritméticos
Para que los algoritmos puedan realizar cálculos, al menos deben poder realizar operaciones sencillas. Para ello, utilizarán los siguientes símbolos:
-
+: adición,
-
-: resta,
-
* o x: multiplicación (es más fácil escribir una x de veces que una estrella),
-
/: división,
-
% o mod: módulo ;
-
DIV: la división entera.
Un módulo es el resto de una división entera. Por ejemplo, 15/2 vale 7, pero el resto es 1. Decimos que 15 módulo 2 es 1.
Estos operadores se denominan binarios porque se utilizan con dos valores: uno antes del símbolo y otro después. Los valores antes y después pueden ser datos (del mismo tipo que la variable que recibe los resultados) o variables. He aquí un ejemplo de operaciones en un algoritmo sencillo que calcula el área y el perímetro de un círculo.
PROGRAMA CIRCULO
VAR
r, PI, surperficie,perimetro:reales
INICIO
PI
3,1415927
r
5,2
superficie
PI * r * r
perimetro
2 * PI * r
Visualizar superficie,perimetro
FIN
Aquí sólo hay multiplicaciones. Ya ve que puede encadenar perfectamente Sus cálculos y mezclar datos y variables. Simule los dos cálculos:
superficie
PI * r * r
superficie
3,1415927 * 5,2 * 5,2
superficie
84.948666608
perimetro
2 * PI * r
perimetro
2 * 3,1415927 * 5,2
perimetro
32.67256408
En PHP:
<html>
<head><meta/>
<title>Círculo</title>
</head>
<body>
<?php
$pi=3.1415927;
$r=5.2;
$superficie=$pi*$r*$r; ...
Para ir más allá
1. Números negativos
Un número con signo de 8 bits, por ejemplo, contiene un bit reservado para el signo. Al menos, así es como se lo presentamos, para facilitar su comprensión. Generalmente, el bit más significativo, el que está más a la izquierda, se utiliza para el signo: a 0 el número es positivo, a 1 es negativo.
Por ejemplo, -9(10) se debería representar por 10001001(2). Sin embargo, esta representación práctica para el lector no lo es en absoluto para el ordenador. Si se suman -9 y 30, se obtiene 21.
En binario, 30 es igual a 00011110. La suma binaria se realiza del mismo modo que la decimal: 1+1=10, así que lleva 1 y así sucesivamente:
00011110 (30)
+10001001 (-9)
=10100111 (-39)
Hay un problema. Deberías obtener 21, es decir, 00010101. En realidad, un número negativo no se representa así. El ordenador es "hábil" con las manipulaciones binarias. El truco consiste en tomar el complemento a uno del valor binario absoluto (-9 => 9) y sumarle uno (se obtiene un complemento a dos). El complemento a uno consiste en sustituir todos los ceros (0) por unos (1) y todos los unos por 0s.
11111111 (complemento a uno)
00001001 (9)
=11110110 (todo se invierte)
+00000001 (+1)
=11110111 (equivale a -9 representación máquina)
Si suma un número a su complemento a dos, obtiene 0 (más un resto).
Ahora sume este resultado a 30:
11110111 (equivale a -9 representación máquina)
+00011110 (30)
=00010101 (21 - más un resto)
Ya lo tiene. En la práctica, el microprocesador no realiza todos estos cálculos de conversión porque puede representar todos estos valores de forma nativa internamente.
2. Representación de los números reales
Mientras que es fácil representar un número entero en binario, parece más complejo con un número con punto decimal. El propio principio del binario significa que cada valor representa una potencia de 2 según su posición de 0 a n y, por tanto, es un valor entero. Además, los números reales nunca tienen el mismo tamaño: más o menos cifras antes de la coma, más o menos después. Tenemos que ver el problema al revés: ¿no...
Tipos y lenguajes
1. Lenguajes tipados y no tipados
Algunos lenguajes son muy flexibles con las variables. Primero puede poner números en ellas, luego texto, luego números otra vez. Estos lenguajes se denominan "no tipados". Algunos llevan el razonamiento bastante lejos: una variable puede contener el número 3 y la otra el texto "3 cerditos" y será capaz de sumarlos (lo que debería dar 6). Por ejemplo, es el caso de PHP: el tipo de la variable depende del contexto en el que se utilice y el lenguaje intenta convertir su contenido siempre que sea posible.
Por el contrario, otros lenguajes tienen "tipado fuerte", en el que todas las variables se deben declarar de forma extremadamente precisa: el tipo, el signo, la longitud y cualquier conversión deben ser explícitos.
En los algoritmos, basta con dar el nombre, el tipo y, posiblemente, el tamaño de la variable, que conservará sus propiedades a lo largo del algoritmo, aunque, por supuesto, su valor puede cambiar.
2. Gestión de la memoria
La gestión de la memoria es el calvario de los programadores en lenguajes de bajo nivel, o incluso de alto nivel, cuando éstos dejan que sea el propio programador quien gestione la memoria. Es el caso de lenguajes como C o C++. Imaginemos una cadena de caracteres llamada "Hello World! ". Está formada por 12 caracteres, incluidos los signos de puntuación...
Ejercicios
Ejercicio 1
¿Cuáles serán los valores de las variables A y B después de ejecutar las siguientes instrucciones?
VAR
A,B:enteros
INICIO
A
2
B
A+4
A
4
FIN
Ejercicio 2
¿Cuáles serán los valores de las variables A, B y C después de ejecutar las siguientes instrucciones?
VAR
A,B,C:enteros
INICIO
A
1
B
3
C
A+B
A
5
C
B-A
FIN
Ejercicio 3
¿Cuáles serán los valores de las variables A y B después de ejecutar las siguientes instrucciones?
VAR
A,B:enteros
INICIO
A
2
B
A+3
A
A+5
B
A-4
FIN
Ejercicio 4
¿Cuáles son los valores de A y B al final del siguiente código? Adapte el algoritmo para intercambiar los valores de A y B.
VAR
A,B:enteros
INICIO
A
1
B
3
A
B
B
A
FIN
Ejercicio 5
¿Qué muestra el siguiente algoritmo?
VAR
A,B:cadena
INICIO
A
"12"
B
"34"
Visualizar A+B
FIN
Ejercicio 6
¿Qué muestra el siguiente algoritmo?
VAR
A,B:cadena
INICIO
A
"12"
B
"34"
Visualizar A&B
FIN
Ejercicio...