viernes, 21 de septiembre de 2012

Tareas unidad 2 grupo A



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