Está en la página 1de 5

Gu a tutorial de programaci on en C++*

Copyright c 2004 Cambridge University Engineering Department

Roberto Cipolla 27 de octubre de 2010

Acerca del tutorial


Este documento provee una introducci on a la computaci on y al lenguaje de programaci on C++.

Parte IV

Asignaci on de variables
Sentencia de asignaci on
Es esencial que a cada variable en un programa le sea dado expl citamente un valor antes de cualquier intento de usarla. Tambi en es muy importante que el valor asignado sea del tipo correcto. La forma m as com un de sentencia en un programa en un programa usa el operador asignaci on, =, y una expresi on o una constante para asignarla a una variable: variable = expresion ; variable = constante ; El s mbolo del operador de asignaci on se parece al operador matem atico de la igualdad pero en C++ su signicado es diferente. La sentencia de asignaci on indica que el valor dado por la expresi on al lado derecho del operador asignaci on (s mbolo =) debe ser almacenado en la variable al lado izquierdo. El operador asignaci on debe leerse como se vuelve igual a y signica que el valor
* Este tutorial es una traducci on el del Tuorial Guide to C++ Programing escrito por Roberto Cipolla en el departamento de ingenier a de la universidad de Cambridge, 1 de septiembre del 2002

Operador + / %

Operaci on adici on substracci on multiplicaci on divisi on m odulo (divisi on m odulo)

de la variable al lado izquierdo ha cambiado por el valor de la expresi on al lado derecho. Para que la asignaci on trabaje exitosamente, el tipo de la variable al lado izquierdo debe ser del mismo que el tipo devuelto por la expresi on. La sentencia en la l nea 12 del programa sumador simple es un ejemplo de una sentencia de asignaci on que involucra una expresi on aritm etica. total = a + b; Toma los valores de a y b, los suma y asigna el resultado a la variable total. As como se ha discutido, puede pensarse a las variables como cajas con identicaci on dentro de las cuales se pueden almacenar valores. Siempre que el nombre de una caja (una variable) aparece en una expresi on, representa el valor actualmente almacenado en la caja. Cuando una sentencia de asignaci on es ejecutada, un nuevo valor es soltado dentro de la caja, reemplazando el valor anterior. As , la l nea 12 del programa signica coge el valor almacenado en la caja identicada con a, a n adelo al valor almacenado en la caja identicada con b y almacena el resultado en la caja identicada con total. total = total + 5; es as una sentencia v alida ya que el valor nuevo de total de vuelve el valor anterior de total m as 5. Recuerda que el operador asignaci on (=) no es lo mismo que el operador de igualdad en las matem aticas (que se representa en C++ con el operador ==).

1.

Expresiones aritm eticas

Las expresiones pueden construirse con variables, constantes, operadores y par entesis. Los operadores aritm eticos o matem aticos usados com unmente incluyen: Las deniciones de los primeros cuatro operadores son como se esperaba. La operaci on divisi on m odulo (m odulo) con un entero es el residuo luego de la divisi on, por ejemplo, 13 modulo 4 (13\ %4 da el resultado 1. Obviamente no tiene sentido para nada usar esta operaci on con variables oat y el compilador dar a una advertencia si intentas hacer eso. Aunque la adici on, substracci on y multiplicaci on son lo mismo para ambos enteros y reales (n umeros punto otante) la divisi on es diferente. Si escribes

4+23 (4+2)3 34 43 4(3) 0.5(a+b) (a+b)/2

igual a 10 igual a 18 igual a 12 igual a 12(pero debe evitarse) igual a 12 ilegal (no se coloc o el operador multiplicaci on) igual al promedio de a y b solo si ellos son del tipo oat

(ver despu es acerca de declaraciones e instanciaciones de variables en la misma l nea): f l o a t a =13.0 , b =4.0 , r e s u l t ; r e s u l t = a /b ; entonces se realiza una divisi on real y se asigna 3.25 a result . Un resultado diferente se hubiera obtenido si las variables se hubieran denido como enteros: int i =13 , j =4, r e s u l t ; result = i/j ; donde se le asigna a result el valor entero 3. El resto despu es de la divisi on puede ser determinado con el operador divisi on m odulo (m odulo), \ %. Por ejemplo, el valor de i \ %j ser a 1.

2.

Precedencia y anidamiento de par entesis

El uso de par entesis es recomendable para la correcta evaluaci on de expresiones complejas. Aqu hay algunos ejemplos: El orden de ejecuci on de las operaciones matem aticas est a regido por reglas de precedencia. Son similares a las expresiones algebraicas. Los par entesis siempre son evaluados primero, seguidos de los operadores multiplicaci on, divisi on y m odulo. Adici on y substracci on son de u ltimo. Sin embargo, lo que mejor se puede hacer, es usar los par entesis en vez de intentar recordar las reglas.

3.

Inicializaci on de variables

Se pueden asignar valores a las variables cuando son denidas (conocido como inicializaci on): tipo variable = constante l i t e r a l ; float proporcion = 0.8660254; int miEdad = 1 9 ; char r e s p u e s t a = s ; bool l l u e v e = f a l s e ;

Los t erminos en la parte derecha son llamados constantes. (Date cuenta que el conjunto de caracteres ASCII est a representado por el tipo char. Cada constante car acter se especica encerr andolo entre comillas simples (para distinguirlo del nombre de una variable). Solo se puede asignar a cada variable char un u nico car acter. Estos son almacenados como c odigos num ericos. La inicializaci on de palabras y cadenas de caracteres se discutir a luego en la secci on de t opicos avanzados). La declaraci on de una variable y la asignaci on de su valor en la misma sentencia puede ser usado para denir variables en la medida en que son necesarias en el programa. tipo variable = expresion ; float producto = f a c t o r 1 f a c t o r 2 ; Por supuesto que las variables en la parte derecha de la expresi on deben haber sido declaradas y tener un valor asignado a ellas. Advertencia: Cuando se declaren e inicialicen variables en el medio de un programa, la variable existe (es decir, hay memoria asignada para almacenar valores de la variable) hasta que la primera llave que cierre sea encontrada, excluyendo las llaves anidadas intermedias, {}. Para el sencillo programa descrito aqu , usualmente ser a la llave que cierra del programa. Sin embargo, luego veremos que las llaves pueden ser introducidas en muchas partes del programa para hacer sentencias compuestas.

4.

Expresiones con variables de tipo mixto

A bajo nivel, una computadora no es capaz de realizar una cooperaci on aritm etica sobre dos tipos de datos diferentes. En general, solo las variables y contantes del mismo tipo deber an combinarse en una expresi on. El compilador tiene reglas estrictas de vericaci on de tipo para chequear esto. En casos donde aparezcan tipos num ericos mezclados en una expresi on, el compilador reemplaza todas las variables con copias del tipo de mayor presici on. las promueve de manera que en expresiones con variables enteras y punto El otantes, el entero se convierte autom aticamente a su equivalente punto otante solo para el prop osito del c alculo. El valor del entero no es cambiado en memoria. Por lo tanto, lo que sigue es legal: int i =13; float x =1.5; x = (x i ) + 23; ya que los valores de i y 23 son convertidos autom aticamente a n umeros punto otante y el resultado es asignado a la variable punto otante x. Sin embargo, la expresi on:

int i =13 , j =4; float resultado ; resultado = i / j ; es evaluada como divisi on entera y por lo tanto produce la asignaci on incorrecta de 3.0 como valor de resultado. Debes intentar evitar expresiones de este tipo pero ocasionalmente necesitaras computar una fracci on de n umeros enteros. En estos casos el compilador necesita ser instruido espec camente a convertir las variables del lado derecho del operador asignaci on a tipo oat. Esto se hace por medio de una conversi on. En el lenguaje C++ esto se hace usando la construcci on: static cast< tipo > expresion (En el lenguaje C esto se hace con una construcci on diferente, usando:(tipo)expresion). Por ejemplo: int c u e n t a =3, N=100; float fraccion ; f r a c c i o n = s t a t i c c a s t <f l o a t >( count ) /N; convierte el valor almacenado en la variable count en un punto otante, 3.0. En entero N es entonces promovido a un n umero punto otante para dar un resultado punto otante.

5.

Declaraci on e inicializaci on de constantes simb olicas

Las variables simb olicas tienen tipo y nombre, igual que las variables. Una constante es declarada e inicializada en una manera similar que las variables pero con una instrucci on espec ca al compilador para que el valor no pueda ser cambiado por el programa. Los valores de las constantes deben ser asignados cuando son creadas, siempre. const const const tipo float int nombre c o n s t a n t e = c o n s t a n t e l i t e r a l ; Pi = 3 . 1 4 1 5 9 2 6 5 ; MAX = 1 0 0 0 0 ;

El uso de constantes ayuda a los programadores a evitar alteraciones inadvertidas de informaci on que no deber a nunca cambiar. El uso de nombres apropiados para las constantes en vez de usar n umeros tambi en ayuda a hacer los programas m as legibles.

También podría gustarte