Sei sulla pagina 1di 17

Escuela Politcnica Nacional

Programacion GR7
Profesor:
Integrantes:

Ing. Luis Urquiza


-Diego Delgado
-Dayana Erazo
-Katya Pastua
Periodo 2016B
2016/11/11

Resumen
TIPOS DE DATOS
1. Carcter.
Un dato de tipo carcter (char en lenguaje C) es aquel que puede tomar por valor
un carcter perteneciente al conjunto de los caracteres que puede representar el
ordenador.
En lenguaje C, el valor de un dato de tipo carcter se debe representar entre
comillas simples (').
1.1.

Caractersticas:

Tamao de un carcter: 1 Byte (8 bits).


27

26

25

1
64

24
1

32

23

22

16

21

20

1
4

1
2

127

Indica el sigo del nmero.

Positivo

Negativo

ASCII SENCILLO: cuando se usa hasta el sptimo bit, 27, almacena 127
caracteres.

ASCII EXTENDIDO: cuando se usa el octavo bit como un nmero ms,


27, almacena 255 caracteres.

1.2. Operaciones aritmticas con caracteres


Tal como especificamos en la definicin de carcter, el tipo de dato char
almacena nmeros, por lo tanto se puede realizar cualquier tipo de operacin
aritmtica con caracteres, teniendo como resultado otro nmero.

Ejemplos:

2. Enteros
Es un tipo de dato que puede representar un subconjunto finito de los nmeros
enteros. El nmero mayor que puede representar depende del tamao del espacio
usado por el dato y la posibilidad (o no) de representar nmeros negativos.
Los tipos de dato entero disponibles y su tamao dependen del lenguaje de
programacin usado as como la arquitectura en cuestin.
Por ejemplo, si para almacenar un nmero entero disponemos de 4 bytes de
memoria tememos que:
4 Bytes = 4x8 = 32 bits
Con 32 bits se pueden representar 232=4294967296 valores:
Slo positivos (enteros sin signo): del 0 al 4294967295
Positivos y negativos (enteros con signo): del -2147483648 al 2147483647
Esta informacin la encontramos ms detallada en la siguiente tabla:
Declaracin

Rango de presentacin

Tamao
en bytes

Especificador de
formato

Char

-128 a 127

%hhd

Short int (o short)

-327768 a 32767

%hd

Int

-2147483648 a 214748367

%d

Long int (o long)

-9223372036854775808 a
9223372036854775807

%ld

Unsigned char

0 a 255

%hhu

Unsigned short int (o


unsigned short)

0 a 65535

%hu

Unsigned int (o
unsigned)

0 a 4294967295

%u

Unsigned long int(o


unsigned long)

0a 18446744073709551615

%lu

2.1. Operaciones con enteros


Las tpicas operaciones aritmticas: suma, resta, multiplicacin y divisin se
pueden realizar con datos de tipo entero.
En el caso de la divisin, el resultado podra ser un valor real, en ese caso, si el
resultado se ha de almacenar como entero la parte decimal del resultado ser
eliminada.

Otra operacin importante que se puede realizar con nmero enteros es la


operacin de mdulo o resto de la divisin entera, es decir:
184 dividido 3 = 61 (residuo 1) --> 184 mdulo 3 = 1

3. Real
El tipo de dato real es un tipo de dato en programas informticos que representa la
aproximacin de un nmero real.
Al igual que los nmeros enteros, el tipo real est limitado superior e inferiormente
segn la cantidad de memoria que haya disponible para almacenarlo.
Otro elemento importante a tener en cuenta en este tipo de datos es la precisin con
que se pueden representar nmeros con decimales, cuantos decimales se pueden
representar. Esta caracterstica tambin est directamente relacionada con la
cantidad de memoria disponible para almacenar un valor real.

2.1. Operaciones con tipos de datos reales

Al igual que con los otros tipos de datos, se puedes realizar las tpicas operaciones
aritmticas: suma, resta, multiplicacin, divisin.
Tipo
elemental

Declaracin

Rango de
representacin

Tamao
en bytes

Especificador
de formato

Float

+,- 1.1754945*10-30

%f (decimal)

+,- 3.4028232*10+30
Double
DECIMAL

+,- 2.225*10-308

%e (cientfica)
8

+,-1.798*10-308
Long double

+,- 8.410-4937
+,-5.9*10+4937

%lf (decimal)
%le (cientfica)

16

%Lf (decimal)
%Le
(cientfica)

4. Tipos de conversiones
Dado que a C# se le asignan tipos estticos en tiempo de compilacin, despus de
declarar una variable, no se puede volver a declarar ni tampoco utilizar para
almacenar valores de otro tipo, a menos que dicho tipo pueda convertirse en el tipo
de la variable. Por ejemplo, no existe conversin de un entero a una cadena
arbitraria cualquiera. Por lo tanto, despus de declarar i como entero, no puede
asignarle la cadena "Hello", como se muestra en el cdigo siguiente.
int i;
i = "Hello"; // Error: "Cannot implicitly convert type 'string' to 'int'"
Sin embargo, en ocasiones puede que sea necesario copiar un valor en un
parmetro de mtodo o variable de otro tipo. Por ejemplo, puede que tenga una
variable de tipo entero que deba pasar a un mtodo cuyo parmetro es de tipo
double. Estos tipos de operaciones se denominan conversiones de tipos. En C#,
puede realizar los siguientes tipos de conversiones:

Conversiones implcitas: no se requiere una sintaxis especial porque la


conversin se realiza con seguridad de tipos y no se perdern datos. Entre
los ejemplos se incluyen las conversiones de tipos enteros de menor a mayor
y las conversiones de clases derivadas en clases base.
Conversiones explcitas (conversiones de tipos): las conversiones
explcitas requieren un operador de conversin. Las variables de origen y
destino son compatibles, pero existe el riesgo de perder datos debido a que el
tipo de la variable de destino es ms pequeo que (o es una clase base de) la
variable de origen.
Conversiones definidas por el usuario: las conversiones definidas por el
usuario se realizan a travs de mtodos especiales que puede definir para
habilitar las conversiones explcitas e implcitas entre tipos personalizados
que no tienen una relacin de clase base-clase derivada.
Conversiones implcitas
En los tipos numricos integrados, puede realizarse una conversin implcita
cuando el valor que se va a almacenar puede ajustarse a la variable sin necesidad
de truncamiento o redondeo. Por ejemplo, una variable de tipo longlong
(Referencia de C#) (entero de 8 bytes) puede almacenar cualquier valor que pueda
almacenar a su vez un elemento intint (Referencia de C#) (4 bytes en un equipo de
32 bits). En el ejemplo siguiente, el compilador convierte implcitamente el valor
de la derecha en un tipo long antes de asignarlo a bigNum.
// Implicit conversion. num long can
// hold any value an int can hold, and more!
int num = 2147483647;
long bigNum = num;

Tabla de conversiones numricas implcitas


La tabla siguiente muestra las conversiones numricas implcitas predefinidas. Las
conversiones implcitas se pueden dar en muchas ocasiones, incluidas la
invocacin a mtodos y las instrucciones de asignacin.
De

sbyte

short, int, long, float, double o decimal

byte

short, ushort, int, uint, long, ulong, float, double o


decimal

short

int, long, float, double o decimal

ushort

int, uint, long, ulong, float, double o decimal

int

long, float, double o decimal

uint

long, ulong, float, double o decimal

long

float, double o decimal

char

ushort, int, uint, long, ulong, float, double o decimal

float

Double

ulong

float, double o decimal

Comentarios
Las conversiones de int, uint o long a float y de long a double pueden
causar una prdida de precisin, pero no una prdida de magnitud.
No existen conversiones implcitas al tipo char.

No hay ninguna conversin implcita entre los tipos de punto flotante y el


tipo decimal.
Una expresin constante de tipo int se puede convertir a sbyte, byte, short,
ushort, uint o ulong, siempre que el valor de la expresin constante quede
dentro del intervalo del tipo de destino.
Conversiones explcitas
Sin embargo, si no se puede realizar una conversin sin riesgo de perder
informacin, el compilador requiere que se realice una conversin explcita,
denominada conversin de tipo. Una conversin de tipo es una manera de informar
al compilador de forma explcita de que pretende realizar la conversin y que est
al tanto de que puede producirse una prdida de datos. Para realizar una conversin
de tipo, especifique entre parntesis el tipo al que se va a aplicar dicha conversin
delante del valor o la variable que se va a convertir. El programa no se compilar
sin el operador de conversin de tipo.
class Test
{
static void Main()
{
double x = 1234.7;
int a;
// Cast double a int.
a = (int)x;
System.Console.WriteLine(a);
}
}

Tabla de conversiones numricas explcitas


Las conversiones numricas explcitas se utilizan para convertir cualquier tipo
numrico a cualquier otro tipo numrico, para el que no existe conversin
implcita, mediante una expresin que utilice el operador de conversin explcita.
La siguiente tabla muestra estas conversiones.

De

Para

sbyte

byte, ushort, uint, ulong o char

byte

Sbyte o char

short

sbyte, byte, ushort, uint, ulong o char

ushort

sbyte, byte, short o char

int

sbyte, byte, short, ushort, uint, ulongo char

uint

sbyte, byte, short, ushort, int o char

long

sbyte, byte, short, ushort, int, uint, ulong o char

ulong

sbyte, byte, short, ushort, int, uint, long o char

char

sbyte, byte o short

float

sbyte, byte, short, ushort, int, uint, long, ulong, charo decimal

double sbyte, byte, short, ushort, int, uint, long, ulong, char, floato decimal
decimal sbyte, byte, short, ushort, int, uint, long, ulong, char, float o double

Comentarios
Las conversiones numricas explcitas pueden producir prdida de precisin
o provocar excepciones.
Cuando se convierte un valor decimal en un tipo integral, este valor se
redondea hacia cero al valor entero ms prximo. Si el valor entero
resultante queda fuera del intervalo del tipo de destino, se produce una
excepcin OverflowException.

Cuando se convierte un valor double o float en un tipo integral, el valor se


trunca. Si el valor entero resultante queda fuera del intervalo del valor de
destino, el resultado depende del contexto de comprobacin de
desbordamiento. En un contexto comprobado, se produce una excepcin
OverflowException, mientras que en un contexto no comprobado, el
resultado es un valor no especificado del tipo de destino.
Cuando se convierte double en float, el valor double se redondea al valor
float ms prximo. Si el valor de tipo double es demasiado pequeo o
demasiado grande para ajustarse al tipo de destino, el resultado ser cero o
infinito.
Cuando se convierte float o double en decimal, el valor de origen se
convierte en una representacin decimal y se redondea al nmero ms
prximo despus de la vigsimo octava posicin decimal si es necesario.
Segn el valor de origen, se puede producir uno de los siguientes resultados:

Si el valor de origen es demasiado pequeo para representarlo como


decimal, el resultado se convierte en cero.

Si el valor de origen es NaN (no es un nmero), infinito o demasiado


grande para ser representado como decimal, se produce una excepcin
OverflowException.

Cuando se convierte decimal en float o double, el valor decimal se


redondea al valor double o float ms prximo.

Ejemplos:
EJERCICIO 1
1) Pida por teclado dos nmeros (datos enteros).
2) Calcule la suma y multiplicacin de ambos nmeros.
3) Muestre por pantalla:

"La suma es mayor.", en caso de que sea mayor que la multiplicacin de ambos nmeros.

"La multpilicacin es mayor.", en caso de que sea mayor que la suma de ambos nmeros.

"La suma y multiplicacin son iguales.", en caso de que as sea.

#include <stdio.h>
int main()
{
int a, b, suma, multiplicacion;
printf( "Introduzca primer numero (entero): " );
scanf( "%d", &a );
printf( "Introduzca segundo numero (entero): " );
scanf( "%d", &b );
suma = a + b;
multiplicacion = a * b;
if ( suma > multiplicacion )
printf( "La suma es mayor." );
else
/* Inicio del anidamiento */
if ( multiplicacion > suma )
printf( "La multiplicacion es mayor." );
else
printf( "La suma y multiplicacion son iguales." );
/* Fin del anidamiento */
return 0;

Una segunda solucin es:


#include <stdio.h>
int main()
{
int a, b;
printf( "Introduzca primer numero (entero): " );
scanf( "%d", &a );
printf( "Introduzca segundo numero (entero): " );
scanf( "%d", &b );
if ( a + b > a * b )
printf( "La suma es mayor." );
else
/* Inicio del anidamiento */
if ( a * b > a + b )
printf( "La multplicacion es mayor." );
else
printf( "La suma y multiplicacion son iguales." );
/* Fin del anidamiento */
return 0;
}

EJERCICIO 2
1) Pida por teclado dos nmeros (datos enteros).
2) Muestre por pantalla el resultado de realizar la divisin entera del primer nmero introducido por el
usuario entre el segundo, y el resto.

#include <stdio.h>
int main()
{
int dividendo, divisor, cociente, resto;
printf( "Introduzca dividendo (entero): " );
scanf( "%d", &dividendo );
printf( "Introduzca divisor (entero): " );
scanf( "%d", &divisor );
cociente = dividendo / divisor;
resto = dividendo % divisor;
printf( "%d div %d = %d ( Resto = %d )",
dividendo, divisor, cociente, resto );
return 0;
}

Una segunda solucin es:


#include <stdio.h>
int main()
{
int dividendo, divisor;
printf( "Introduzca dividendo (entero): " );
scanf( "%d", &dividendo );
printf( "Introduzca divisor (entero): " );
scanf( "%d", &divisor );
printf( "%d div %d = %d ( Resto = %d )", dividendo,
divisor,dividendo / divisor, dividendo % divisor );
return 0;
}

Ejemplos de Casting (Conversin)

EJERCICIO 3
1

Ingrese por teclado una variable de tipo int, realizar un cast para que se muestre un float, un
double y un char en un printf.

#include <stdio.h>
int main()
{
int a;
printf(Ingrese un valor numerico: \t)
scanf(%d,&a)
//Ejemplo cast de a en printf
printf("\n a:%d \n *(float)a:%.3f \n (char)a: %c\n\n\n", a,(float)a,
(double)a,(char)a);
return 0;
}

EJERCICIO 4
1

Crear un programa que lea 2 datos ingresados, un float y un char, y realizar el cast de cada una,
dando como resultado un int, un doubl y un char.

#include <stdio.h>
int main()
{
float b;
char c;
int a;
printf(Ingrese un valor numrico decimal y un carcter alfabetico: #.#letra\t)
scanf(%f-%c,&b,&c)

printf (\n b: %.3f \n(int)b: %d \n(double)b:%.3f \n(char)b: %c\n\n\n, b,(int)b,


(double)b, (char)b);
prinf(\n c: %c \n (int)c: %d \n (float)c:%3.f \n\n\n, c, (int)c, (float)c);
return 0;
}

EJERCICIO 5
1 Realize un programa, que lea 2 valores numericos ingresados por teclado y que
muestre el resultado como un float, en el caso de que no sea un division exacta
#include <stdio.h>
int main()
{
float x;
int a, b;
printf(Ingrese dos valores numricos: (numero-numero) \t) ;
scanf(%d-%d,&a,&b);
x=a/ (float)b;

printf (\n x: %.2f\n, x);


return 0;
}

Bibliografas
https://es.wikipedia.org/wiki/Tipo_de_dato_real
https://es.wikipedia.org/wiki/Entero_(tipo_de_dato)
http://www.carlospes.com/ejercicios_de_lenguaje_c/entrada_y_salida_estandar_002.php
http://programacionnerd.blogspot.com/2012/05/c-conversiones-de-tipo-casting-en-c.html

Potrebbero piacerti anche