¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
  1. Libros y videos
  2. Algoritmia - Técnicas fundamentales de programación
  3. Técnicas fundamentales de programación
Extrait - Algoritmia - Técnicas fundamentales de programación Ejemplos en PHP (numerosos ejercicios corregidos)
Extractos del libro
Algoritmia - Técnicas fundamentales de programación Ejemplos en PHP (numerosos ejercicios corregidos) Volver a la página de compra del libro

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

El símbolo de asignación "images/flechegauche.PNG" forma parte de una gran familia conocida como operadores. Como su nombre indica, un operador se utiliza para y en operaciones. El símbolo "images/flechegauche.PNG" es un operador de asignación. Existen varios operadores que se utilizan para cálculos, asignaciones, comparaciones, rotaciones (de bits), agrupaciones, etc.

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  
  PIimages/flechegauche.PNG3,1415927  
  rimages/flechegauche.PNG5,2  
  superficieimages/flechegauche.PNGPI * r * r  
  perimetroimages/flechegauche.PNG2 * 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:

superficieimages/flechegauche.PNGPI * r * r  
superficieimages/flechegauche.PNG3,1415927 * 5,2 * 5,2  
superficieimages/flechegauche.PNG84.948666608  
  
perimetroimages/flechegauche.PNG2 * PI * r  
perimetroimages/flechegauche.PNG2 * 3,1415927 * 5,2  
perimetroimages/flechegauche.PNG32.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  
Aimages/flechegauche.PNG2  
Bimages/flechegauche.PNGA+4  
Aimages/flechegauche.PNG4  
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  
Aimages/flechegauche.PNG1  
Bimages/flechegauche.PNG3  
Cimages/flechegauche.PNGA+B  
Aimages/flechegauche.PNG5  
Cimages/flechegauche.PNGB-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  
Aimages/flechegauche.PNG2  
Bimages/flechegauche.PNGA+3  
Aimages/flechegauche.PNGA+5  
Bimages/flechegauche.PNGA-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  
Aimages/flechegauche.PNG1  
Bimages/flechegauche.PNG3  
Aimages/flechegauche.PNGB  
Bimages/flechegauche.PNGA  
FIN 

Ejercicio 5

¿Qué muestra el siguiente algoritmo?

VAR 
A,B:cadena 
INICIO  
Aimages/flechegauche.PNG"12" 
Bimages/flechegauche.PNG"34" 
Visualizar A+B 
FIN 

Ejercicio 6

¿Qué muestra el siguiente algoritmo?

VAR  
A,B:cadena  
INICIO   
Aimages/flechegauche.PNG"12"  
Bimages/flechegauche.PNG"34"  
Visualizar A&B  
FIN 

Ejercicio...