Tipos de datos de C++.
El primer objetivo de un programa informático es el manejo
de datos. Un dato es toda aquella información que se puede tratar en un
programa informático.
En este artículo vamos a conocer los tipos de datos que
podemos manejar programando en C.
Existen unos datos de entrada y unos datos de salida.
Los datos de entrada se manipulan en el programa produciendo
unos datos de salida.
Datos de entrada
--------->>>
programa----->>> datos
de salida
Un dato dentro de un programa se caracteriza por llevar
asociado un identificador, un tipo y un valor.
Identificador: Nombre para referenciar al dato dentro del programa
Tipo: el
tipo de un dato determina el rango de valores que puede tomar el dato y su
ocupación en memoria durante la ejecución del programa
Valor: Sera
un elemento determinado dentro del rango de valores permitidos por el tipo de
dato definido.
Algunos ejemplos de datos son: la edad, el saldo de una
cuenta bancaria, el nombre de una persona, la letra del piso de una dirección,
etc.
A continuación vamos a describir los distintos tipos de
datos que existen.
TIPOS DE DATOS
Hay dos clases de tipos de datos: tipos fundamentales y
tipos derivados.
Únicamente vamos a ver los tipos de datos fundamentales.
Tipo entero: representa números enteros con o sin signo, que
estarán compuestos por los dígitos del 0 al 9, pudiendo ser precedidos por los
signos + o -.
Algunos ejemplo de datos enteros son: 0, 23, -176, -1, etc.
Para definir variables en C se antepone la palabra reservada
del tipo al identificador de la variable. El tipo de datos entero se define en
el lenguaje de programación C por la palabra reservada int.
Para definir un tipo de dato en C se escribe lo siguiente:
Int nombre variable = valor;
No es necesario que la variable tenga un valor
predeterminado. Se puede definir sin asignarle ningún valor.
Si tenemos varios datos que son del mismo tipo, se pueden
definir todas en la misma línea de código escribiendo un único int, separando
el nombre de las variables por “,”. Una vez que se haya acabado de definir
variables, se cierra la línea de código con “;”,
Por ejemplo: int edad = 24;
Int edad;
int edad, num, contador;
Tipo real: Se emplean para representar números reales (con
decimales).
Para definir datos reales se antepone la palabra reservada
float al identificador de la variable.
float identificador = valor;
Por ejemplo: float numero1, numero2;
float numero3 = 123.43;
float numero3;
Tipo carácter: Este tipo de datos se emplea para representar
un carácter perteneciente a un determinado código utilizado por el ordenador
(normalmente el código ASCII).
Para representar este tipo de dato se antepone la palabra
reservada char al identificador de la variable.
Char identificador = ‘valor’;
Una constante tipo char se representa como un solo carácter
encerrado entre comillas simples.
Por ejemplo: char letra, letra2;
char letra=’a’;
Tipo cadena de caracteres: una cadena de caracteres es un
número de caracteres consecutivos (incluso ninguno) encerrado entre unos
delimitadores determinados, que en el lenguaje C son las comillas dobles.
Para definir variables de tipo cadena, estas se definen como
vectores de caracteres, esto es, anteponiendo la palabra reservadachar al
identificador de la variable, y después entre corchetes la longitud máxima de
cadena.
Char identificador [cantidad] = “ mensaje ”;
Por ejemplo: char cadena [20];
char cadena [20] = “Hola mundo”;
char cadena [] = “HOLA”;
En la siguiente tabla se hace un resumen de los distintos
tipos de datos:
Tipo de dato
|
Palabra reservada
|
Ejemplo
|
|
Entero
|
Int
|
Int
numero=0;
|
|
Real
|
Float
|
Float
numero=12.2;
|
|
Carácter
|
Char
|
Char
letra = ‘a’;
|
|
Cadena de carácter
|
Char
|
Char
palabra[10] = “HOLA”;
|
Secuencias de escape
Las secuencias de escape son órdenes que serán interpretados
por la pantalla, archivo o una impresora de alguna manera. Esas secuencias no
vienen más que hacer símbolos. En Borland C++ todas las secuencias empieza con
la barra invertida \.
Secuencias de escape - Descripción
\n Esta
secuencia ordena a la pantalla ubicar el cursor al principio del renglón
siguiente.
\r Ubica el
cursor al inicio del renglón en el que estaba.
\t Desplaza
el cursor una distancia igual a una tabulación.
\a Enciende
un pitido del sonido del sistema.
\' Muestra
un apostrofe en la pantalla.
\" Muestra
una comilla en la pantalla.
\\ Muestra
una barra invertida en la pantalla.
Operadores aritméticos
En Borland C++ se definen 5 operadores básicos que nos
servirán para construir operaciones más complejas.
Operador Acción
- (menos) Este
el símbolo menos y se usará para restar números de cualquier tipo.
+ (mas) Este símbolo se usará para sumar
dos números de cualquier tipo.
* (por) Este símbolo se usará para
multiplicar dos números de cualquier tipo.
/ (división) Este
símbolo se usará para dividir dos números de cualquier tipo.
% (módulo) Este
símbolo se usará para hallar el resto de la división de dos números enteros.
Operadores relacionales
Los operadores relacionales, también denominados operadores
binarios lógicos y de comparación, se utilizan para comprobar la veracidad o
falsedad de determinadas propuestas de relación (en realidad se trata
respuestas a preguntas). Las expresiones que los contienen se denominan
expresiones relacionales. Aceptan diversos tipos de argumentos, y el resultado,
que es la respuesta a la pregunta, es siempre del tipo cierto/falso, es decir,
producen un resultado booleano.
Si la propuesta es cierta, el resultado es true (un valor
distinto de cero), si es falsa false (cero). C++ dispone de los siguientes:
< Menor que
> Mayor que
<= Menor o igual
que
>= Mayor o igual
que
== Igual que (identidad)
!= Desigual que
(desigualdad)
Ejemplo en borland c++
expresión-relacional
< shift-expresion
expresión-relacional
> shift-expresion
expresión-relacional
<= shift-expresion
expresión-relacional
>= shift-expresion
expresión-de-igualdad == expresión-relacional
expresión-de-igualdad != expresión-relacional
Operadores lógicos
Los operadores lógicos producen un resultado booleano, y sus
operandos son también valores lógicos o asimilables a ellos (los valores
numéricos son asimilados a cierto o falso según su valor sea cero o distinto de
cero). Por contra, recuerde que las operaciones entre bits producen valores
arbitrarios.
Los operadores lógicos son tres; dos de ellos son binarios,
el último (negación) es unario. Tienen una doble posibilidad de representación en
el Estándar C++ actual: la representación tradicional que se indica a
continuación, y la natural introducida recientemente que se detalla más
adelante .
• Y
lógico && AND
• O
lógico || OR
• Negación
lógica ! NOT
Las expresiones conectadas con los operadores && y
|| se evalúan de izquierda a derecha, y la evaluación se detiene tan pronto
como el resultado verdadero o falso es conocido (muchos programas tienen una
lógica que se basa en este propiedad).
&& Operador Y lógico
También denominado por su nombre en inglés (generalmente en
mayúsculas) AND lógico. Devuelve un valor lógico true si ambos operandos son
ciertos. En caso contrario el resultado es false.
Sintaxis
expr-AND-logica && expresion-OR-inclusive
Precedencia de operadores.
La interpretacion de cualquier expresion en C++ esta determinada por la precedencia y asociatividad de los operadores en dicha expresion. Cada operador tiene una precedencia, y los operadores en una expresion se evalúan en orden de mayor a menor precedencia. La evaluacion de operadores con la misma precedencia viene determinada por su asociatividad. Y, al igual que en matematicas, los paréntesis anulan las reglas de precedencia.En la siguiente tabla se listan los operadores en C++, su precedencia y su asociatividad. Los operadores se listan en orden de prioridad decreciente (los situados mas arriba tienen mayor prioridad). Los operadores en la misma línea horizontal tienen la misma precedencia.
Operador
|
Proposito
|
Asociatividad
|
::
|
Scope
(unario)
|
De
derecha a izquierda
|
::
|
Scope
(binario)
|
De
izquierda a derecha
|
-> .
|
Seleccion
de miembros
|
De
izquierda a derecha
|
[]
|
Índices
|
De
izquierda a derecha
|
()
|
Llamada
a funcion
|
De
izquierda a derecha
|
++
|
Postincremento
|
De
izquierda a derecha
|
--
|
Postdecremento
|
De
izquierda a derecha
|
sizeof
|
Tamaño
de un objeto
|
De
derecha a izquierda
|
++
|
Preincremento
|
De
derecha a izquierda
|
--
|
Predecremento
|
De
derecha a izquierda
|
* &
+ - ! ~
|
Operadores
unarios
|
De
derecha a izquierda
|
new
|
Crea un
objeto
|
De
derecha a izquierda
|
delete
|
Borra
un objeto
|
De
derecha a izquierda
|
()
|
Conversion
de tipo (type cast)
|
De
derecha a izquierda
|
->*
.*
|
Puntero
a un miembro
|
De
izquierda a derecha
|
* / %
|
Operadores
multiplicativos
|
De
izquierda a derecha
|
+ -
|
Operadores
aditivos
|
De
izquierda a derecha
|
<<
>>
|
Operadores
bitwise
|
De
izquierda a derecha
|
<
> <= >=
|
Operadores
de relacion
|
De
izquierda a derecha
|
== !=
|
Operadores
de igualdad
|
De
izquierda a derecha
|
&
|
Y
bitwise
|
De
izquierda a derecha
|
^
|
bitwise
O exclusivo
|
De
izquierda a derecha
|
|
|
bitwise
O inclusivo
|
De
izquierda a derecha
|
&&
|
Y
logico
|
De
izquierda a derecha
|
||
|
O
logico
|
De
izquierda a derecha
|
?:
|
Operador
condicional
|
De
derecha a izquierda
|
= *= /=
+= -= >*gt;=
&= ^= |= %= <<= |
Operadores
de asignacion
|
De
derecha a izquierda
|
,
|
Operador
coma
|
De
derecha a izquierda
|
En C++ las reglas de precedencia y asociatividad de operadores corresponden a las reglas matematicas. Sin embargo, esto no funcionara, por ejemplo, con los operadores bitwise. Para tales operadores, se debe utilizar la tabla anterior, o bien paréntesis.
El operador ::
El operador :: (scope) es una característica nueva, puesto que no existe nada similar en C. Permite el acceso a una variable global aunque exista una variable local con el mismo nombre. El uso de :: delante del nombre de la variable, indica al compilador que debe utilizar la variable global, en lugar de la local. Ejemplo:
#include <iostream.h>
int indice = 13;
main() {
float indice = 3.2567;
cout <<'El valor de la variable local es:'<< indice << '\n';
cout <<'El valor de la variable global es:'<< ::indice << '\n';
::indice = indice + 7;
cout <<'El valor de la variable local es:'<< indice << '\n';
cout <<'El valor de la variable global es:'<< ::indice << '\n';
}
La salida de este programa es:
El valor de la variable local es:3.2567
El valor de la variable global es: 13
El valor de la variable local es:3.2567
El valor de la variable global es: 10
Manipuladores de flujo más comunes en C++
Para acceder a la biblioteca iostream se debe incluir el archivo iostream.h. Este archivo contiene información de diferentes funciones de E/S. Define también los objetos cin y cout.
Manipuladores de salida
La biblioteca iostream define varios operadores particulares, llamados manipuladores, que le permiten controlar precisamente, el formato de los datos visualizados. Situando un manipulador en la cadena de operadores <<, se puede modificar el estado del flujo.
Una característica importante de un flujo que debe tratar con valores numéricos es la base de los números. Hay tres manipuladores (dec, hex y oct) para controlar la situación. La base por omisión es 10 y por tanto sólo será necesario indicar dec cuando se haya fijado la base a otro valor:
cout <<oct<<x<<endl;
cout <<dec<<x<<endl;
Los manipuladores que toman argumentos se declaran en iomanip.h, el resto en iostream.h.
A continuación mostraremos un listado con los manipuladores, su aplicación y la descripción. Cada uno de ellos lo separaremos mediante --
dec -- cout<<dec<<x; -- Conversión a decimal
dec -- cin>>dec>>x; -- Conversión a decimal
Hex -- out<<hex<<x; -- conversión a hexadecimal
Hex -- cin>>hex>>x; -- conversión a hexadecimal
oct -- cout<<oct<<x; -- Conversión a octal
oct -- cin>>oct>>x; -- conversión a octal
ws -- cin>>ws; Salta espacios en la entrada
ende -- cout<<endl; -- Envía carácter fin de línea
flush -- cout<<flush; -- Limpia el buffer
setfill(int) -- cout<<setfill('*'; -- Fija el carácter de rellenado
setprecision(int) -- cout<<setprecision(6); -- Fija la conversión en coma flotante al nº de dígitos especificado
setw(int) -- cout<<setw(6)<<x; cin>>setw(10)>>x; -- Fija la anchura
Con setw() los valores numéricos se justifican a derechas y los datos carácter a izquierdas.
La información de la justificación de la salida se almacena en un modelo o patrón de bits de una clase llamada ios, que constituye la base de todas las clases de flujos. Puede establecer o reinicializar bits específicos utilizando los manipuladores setiosflags() y resetiosflags() respectivamente.
Para utilizar cualquiera de los indicadores de formato hay que insertar el manipulador setiosflags() con el nombre del indicador como argumento. Hay que utilizar resetiosflags() con el mismo argumento para invertir el estado del formato antes de utilizar el manipulador setiosflags().
Indicador -- Significado del indicador activado
ios::left -- Justifica la salida a la izquierda
ios::right -- Justifica la salida a la derecha
ios::scientific -- Utiliza notación científica para números de coma flotante
ios::fixed -- Utiliza notación decimal para números de coma flotante
ios::dec -- Utiliza notación decimal para enteros
ios::hex -- Utiliza notación hexadecimal para enteros
ios::oct -- Utiliza notación octal para enteros
ios::showpos -- Muestra un signo positivo cuando se visualizan valores positivos
Problema 4, 5, 6 y 7. De libro de texto. pagina 134
Problema 4
En la primera operación:
15/4 haciendo manualmente me sale 3.75 pero en el programa
c++ solo sale 3
En la segunda operación :
15%4 en el programa de c++
me da como resultado 3
En la tercera operación :
3-(6*4) en el programa
de c++ sale -22 y también sale lo mismo a mano.
Problema 5
Determine los errors
en cada una de las siguietes instrucciones:
a)
cout <<"\n << 15) en esta intrruccion le hace falta el sierrre de
comillas y también el punto y como ( “ “
y ; ).
b)
cout <<"setw(4)"<<3; este intruccion no tiene ningun error
c)
cout
<<"setprecision(5)"<<526..768; no tiene ningún error
d)
"hello world" >>cuot; a esta
intruccion tiene que llebar el cout al principio
e)
cout <<47<<setw(6); le hace falta
compleentar bien la función.
f)
cout<<47<<set(10)<<526.768<<setprecision(2);
esta intruccion le hace falta el poner bien el “setw”.
Problema 6
Escriba el despliege producido o las
siguientes instrucciones.
cout<<"|"<<5<<"|" <<endl;
cout<<"|"<<setw(4)<<5<<"|"
<<endl;
cout<<"|"<<setw(4)<<56829<<"|"<<endl;
cout<<"|"<<setw(5)<<setiosflags(ios::fixed)<<setprecision(2)<<5.26<<"|"
<<endl;
cout<<"|"<<setw(5)<<setiosflags(ios::fixed)<<setprecision(2)<<5.267<<"|"<<endl;
cout<<"|"<<setw(5)<<setiosflags(ios::fixed)<<setprecision(2)<<53.264<<"|"<<endl;
cout<<"|"<<setw(5)<<setiosflags(ios::fixed)<<setprecision(2)<<534.254<<"|"<<endl;
cout<<"|"<<setw(5)<<setiosflags(ios::fixed)<<setprecision(2)<<534.
<<"|"<<endl;
Problema 7
Escriba el despliege producido o las siguientes
instrucciones.
a.-
cout<<"el numero es
"<<setw(6)<<setiosflags(ios::fixed)<<setprecision(2)<<26.27
<<endl;
cout<<"el numero es
"<<setw(6)<<setiosflags(ios::fixed)<<setprecision(2)<<682.3
<<endl;
cout<<"el numero es
"<<setw(6)<<setiosflags(ios::fixed)<<setprecision(2)<<1.968
<<endl;
b.-
cout<<setw(6)<<setiosflags(ios::fixed)<<setprecision(2)<<26.27
<<endl;
cout<<setw(6)<<setiosflags(ios::fixed)<<setprecision(2)<<682.3
<<endl;
cout<<setw(6)<<setiosflags(ios::fixed)<<setprecision(2)<<1.968
<<endl;
cout<<"------\n";
cout<<setw(6)<<setiosflags(ios::fixed)
<<setprecision(2)
<<26.27+682.3+1.968<<endl;
c.-
cout<<"el
numero es
"<<setw(5)<<setiosflags(ios::fixed)<<setprecision(2)<<26.27
<<endl;
cout<<"el
numero es "<<setw(5)<<setiosflags(ios::fixed)<<setprecision(2)<<682.3
<<endl;
cout<<"el
numero es
"<<setw(5)<<setiosflags(ios::fixed)<<setprecision(2)<<1.968
<<endl;
cout<<"------\n";
cout<<"el numero es
"<<setw(5)<<setiosflags(ios::fixed)
<<setprecision(2)
<<26.27+682.3+1.968<<endl;
d.-
cout<<setw(5)<<setiosflags(ios::fixed)<<setprecision(2)<<36.164
<<endl;
cout<<setw(5)<<setiosflags(ios::fixed)<<setprecision(2)<<10.003
<<endl;
cout<<"-----\n"<<endl;





No hay comentarios:
Publicar un comentario