Você está na página 1de 28

Lenguaje C (turboC/C++3.

1) Tokens Palabras claves ( reservadas) de C Las 32 palabras clave definidas por el estndar ANSI double int else long enum register extern return float short for signed goto sizeof if static

auto break case char const continue default do

struct switch typedef union unsigned void volatile while

Tipos de datos Tipo char int float double void Tipos de datos bsicos Tamao en bits 8 16 32 64 0 Rango 0 a 255 -32768 a 32767 3.4E-38 a 3.4E+38 1.7E-308 a 1.7E+308 sin valor

A excepcin del tipo void , los tipos de datos bsicos pueden ser precedidos por varios modificadores. Un modificador altera el significado del tipo base para que se ajuste ms a cada necesidad. Los modificadores son : signed unsigned long short Los modificadores signed, short, long y unsigned se pueden aplicar a los tipos base entero y carcter . Sin embargo , long tambin se pude aplicar a double. Todas las combinaciones posibles de los tipos bsicos y los modificadores de C Tipo Tamao en bits Rango char 8 -128a 255 unsigned char 8 0 a 255 signed char 8 -128 a 127 int 16 -32768 a 32767 unsigned int 16 0 a 65535 signed int 16 -32768 a 32767 short int 16 -32768 a 32767 unsigned short int 16 0 a 65535 signed short int 16 -32768 a 32767 long int 32 -2147483648 a 2147483647 unsigned long int 32 0 a 4294967295 signed long int 32 -2147483648 a 2147482647 float 32 3.4E-38 a 3.4E+38 double 64 1.7E-308 a 1.7E+308

long double

64 Constantes

1.7E-308 a 1.7E+308

Las constantes en C se refieren a valores fijos que no pueden ser alterados por el programa . Pueden ser de cualquier tipo de datos. C admite otro tipo de constante, adems de los tipos de datos predefinidos . Se trata de la cadena. Una constante de cadena siempre est encerrada entre comillas dobles. Identificadores La longitud de un identificador en C puede variar entre uno y 32 caracteres. El primer carcter debe ser una letra o un smbolo de subrayado y los caracteres siguientes pueden ser letras, nmeros o smbolos de subrayado . C permite tambin usar el smbolo $ en un nombre de un identificador , pero no se trata de algo estndar, siendo recomendable no hacerlo. En C las minsculas y las maysculas se tratan como distintas. Por ejemplo hola, Hola y HOLA son tres identificadores distintos. Un identificador no puede ser igual que una palabra clave de C y no debe tener el mismo nombre que alguna funcin ya escrita o que se encuentre en la biblioteca de C Operadores En C hay tres clases generales de operadores : aritmticos, relacionales y lgicos Operadores aritmticos operador accin resta, tambin menos monario + suma * multiplicacin / divisin % Divisin en mdulo -decremento ++ incremento Es de recordar que cuando se aplica una divisin a un entero o a un carcter , cualquier resto es suprimido. Por ejemplo 10/3 el resultado ser 3 en divisin entera. El operador % proporciona el resto de una divisin entera. Por ello no puede aplicarse a tipos de coma flotante Incremento y decremento El operador ++ (incremento) aade 1 a su operando y -- (decremento) le resta 1. Por lo tanto las siguientes operaciones son equivalentes : x=x+1 ; es lo mismo que ++x ; Tambin x = x-1 ; es lo mismo que --x : En estas operaciones es lo mismo poner ++x ; y x++ ; (para el decremento ) y es lo mismo --x ; y x-- ; (para el decremento)

Pero no es lo mismo cuando se usan los operadores en una expresin . Cuando un operador de incremento o decremento precede al operando, C lleva a cabo la operacin de incremento o decremento antes de usar el valor del operando. Por ejemplo : x=4 y = ++x ; En este caso, se pone a y en 11. Pero, si se escribe el cdigo como x = 10 ; y = x++ ; y toma el valor de 10. Es de mucha importancia tener en cuenta que en ambos casos x queda como 11 ; la diferencia est en cundo cambia el valor. Precedencia de los operadores aritmticos. Mayor Menor ++ --(monario) /% +-

Operadores relacionales y lgicos El terminode operador relacional se refiere a la relacin entre unos valores y otros . En el termino operador lgico la palabra lgico se refiere a las formas en que esas relaciones pueden conectaese entre s siguiendo las reglas de la lgica formal. En los operadores lgicos se trabaja el 0 como falso y el 1 como verdadero

Operadores relacionales operador accin > mayor >= mayor o igual < menor <= menor o igual == igual != no igual operador && || ! Operadores lgicos accin y o no

Tanto los operadores relacionales como los lgicos tienen un nivel de precedencia menor que los aritmticos. Esto significa que una expresin como 10>3+2 se evala como si hubiera escrito 10>(1+12) Precedencia relativa entre los operadores relacionales y lgicos Mayor ! >= < <=

Menor

== != && ||

Como en el caso de las expresiones aritmticas , se pueden usar parntesis para alterar el orden natural de evaluacin en una expresin relacional o lgica. Por ejemplo : !1 &&0 Es falso , porque primero se evala ! y luego se evala &&. Sin embargo cuando se usan parntesis en la misma expresin el resultado es verdadero : !(1&&0) Operador ? C contiene un operador muy conveniente para sustituir ciertas sentencias de la forma if-then-else. El operador ternario ? toma la forma general : Exp1 ? Exp2 :Exp3 ; donde Exp1 , Exp2 y Exp3 son expresiones. El operador ? funciona de la siguiente forma : evala Exp1 . Si es cierta, evala Exp2 y toma ese valor para la expresin. Si Exp1 es falsa, evala Exp3 tomando su valor para expresin. Por ejemplo : x=10 ; y= x>9 ? 100 : 200 En este ejemplo, a y se le asigna el valor de 100, si x hubiera sido menor que 9, y habra recibido el valor de 200 Los operadores de puntero & y * Un puntero es la direccin de memoria de una variable. Una variable puntero es una variable especficamente declarada para contener un puntero a su tipo especfico. El primer operador de punteros es &, un operador monario que devuelve la direccin de memoria del operando. Por ejemplo : m = &cont ; coloca en m la direccin de la memoria de la variable cont. Esta es la direccin de la posicin interna en la computadora de la variable. No ! tiene nada que ver con el valor de cont. El segundo operando de puntero es * , el complementario de &. Es un operador monario que devuelve el valor de la variable ubicada en la direccin que se especifica. Para declarar una variable como puntero se pone : tipo de dato *nombre de la variable Por ejemplo : char *cadena ; En este ejemplo hay que aclarar que cadena no es un carcter, sino un puntero a un carcter La coma como operador Como operador, la coma encadena varias expresiones. La parte izquierda del operador coma siempre se evala como void. Esto significa que la parte derecha se convierte en el valor de la expresin total separada por coma. Por ejemplo : x = (y=3, y+1) ; Primero se asigna el valor de 3 a y y luego se asigna el valor de 4 a x . Los parntesis son necesarios debido a que el operador coma tiene menor precedencia que el operador de asignacin. Los operadores . y

Los operadores . (punto) y (flecha) referencian elementos individuales de las estructuras y de las uniones. Las estructuras y las uniones son tipos de datos compuestos que se pueden referenciar bajo un solo nombre. El operador punto se usa cuando se trabaja realmente con la estructura o la unin . El operador flecha se usa cuando es usa un puntero a una estructura o a una unin. Por ejemplo, dada la estructura : struct empleado{ char nombre[70] ; int edad ; float sueldo ; }emp ; Se usa el siguiente cdigo para asignar el valor 500,55 al elemento sueldo de la estructura emp emp.sueldo = 500,55 ; Sin embargo, la misma asignacin usando un puntero a la estructura emp sera empsueldo=500,55 ; Operadores [ ] y ( ) En C , los parntesis son operadores que aumentan la precedencia de las operaciones que la contienen. Los corchetes sirven para la indexacin de arrays. Operador = Es un operador binario que sirve en C para las asignaciones . Su asociatividad a diferencias de todos los operadores binarios es de derecha a izquierda. Cuando el operador = es subsiguiente a un operador binario sirve para abreviar expresiones tales como : x = x+10 ; puede escribirse como x+=10 ; Asociatividad de los operadores en C Los operadores del lenguaje C los operadores binarios a excepcin del operador = poseen una asociatividad de izquierda a derecha y los operadores monarios *,& y el operador ternario ? se asocian de derecha a izquierda. Precedencia de los operadores de C Mayor ()[] ! ++ -- * & * / % +< <= > >= == != && || ? = += -= *= /= Menor ,

Control de flujo Secuencias

Las secuencias en C, son un numero finito de sentencias. Por ejemplo : #include <stdio.h> void main (void){ int a=10 ; printf(%d,a) ; } Decisiones En C una prueba condicional da un resultado cierto cuando arroja un numero distinto de cero y falso cuando es cero. C soporta dos tipos de datos condicionales : if y switch. Adems , el operador ? que es una alternativa de if en ciertas ocasiones. if La forma general de la sentencia if es : if (expresin) sentencia ; else sentencia ; Si la expresin es cierta se ejecuta la sentencia o el bloque de sentencias que es el objetivo de if ; en cualquier otro caso se ejecuta la sentencia o el bloque de sentencias que constituye el objetivo de else. Por ejemplo : #include <stdio.h> void main (void){ int numero=321 ; int intento ; printf(adivine el numero) ; scanf(%d,&intento) ; if(intento==numero) printf(correcto) ; else printf(mala suerte) ; } operador ? Se puede usar el operador ? para reemplazar las sentencias if/else con la forma general : if(condicin) expresin else expresin La restriccin clave es que el objetivo de if y del else deben ser expresiones simples - no otra sentencia de C. La ? tiene la forma general Exp1 ? exp2 : Exp3 Si desea ver un ejemplo de este operador se puede remitir a la parte del trabajo donde se tratan los operadores de C. switch Esta sentencia compara sucesivamente una variable con una lista de constantes enteras o de caracteres. Cuando se encuentra una correspondencia se ejecuta una sentencia o bloque de sentencias. La forma general de la sentencia switch es la siguiente : switch (variable){ case constante1 : secuencia de sentencias

break ; case constante2 : secuencia de sentencias break ; . . default : secuencia de sentencias } donde la sentencia default se ejecuta si no se encuentra ninguna correspondencia Hay tres cosas importantes que se deben saber de la sentencia switch : 1 Solo puede comprobar igualdad 2 No puede haber 2 constantes case en el mismo switch 3 Si se utilizan Constantes de tipo carcter en la sentencia switch, se convierte automticamente a sus valores. Un ejemplo de swith puede ser : void menu (void){ char c ; printf(1.se calculan derivadas \n) ; printf(2. Se calculan integrales) ; c=getche() ; switch(c){ case 1 : derivar() ; break ; case 2 : integrar() ; break ; default : print(ninguna opcin seleccionada) ; } } Iteraciones Las sentencias de iteracin(bucles) son for,while y do. For La forma general de la sentencia for es for(inicializacin ; condicin ; incremento) sentencia ; Un ejemplo de for puede ser : #include <stdio.h> void main (void){ int i ; for(i=0 ;i<=10 ;i++) printf(%d,i) ; } Este programa imprime los numeros del 1 al 10. While La forma general de la sentencia while es : while (condicin)sentencia ; La condicin puede ser cualquier expresin y cualquier valor distinto de cero es cierto. El bucle itera mientras la condicin es cierta. Cuando la condicin se hace falsa, el control del programa pasa a la lnea siguiente del cdigo del bucle.

Un ejemplo de while #include <stdio.h> void main (void){ int i =1; while (i <=10){ printf(%d,i) ; i++ ; } } Este programa imprime los nmeros del 1 al 10. Do/while A diferencia de los bucle for y while, que analizan la condicin del bucle al principio del mismo, el bucle do/while analiza la condicin al final del bucle. Esto significa que el bucle do/while siempre se ejecuta al menos una vez. La forma general del bucle do/while es do{ secuencia de sentencias ; }while (condicin) ; Un ejemplo de do/while #include <stdio.h> void main (void){ int i =1; do{ printf(%d,i) ; i++ ; }while(i<=10) ; Este programa imprime los nmeros del 1 al 10.

Variables Todas las variables han de ser declaradas antes de poder usarlas. La forma general de declaracin es la que se muestra a continuacin : tipo lista_de_variables ; Por ejemplo : int carro ; Variables locales o automticas Estas variables pueden usar la palabra opcional auto para declararlas (pero es innecesario) Son las que se declaran dentro de una funcin . Pueden ser referenciadas solo por sentencias que estn dentro del mismo bloque en el que han sido declaradas. Un bloque comienza donde hay una llave abierta y finaliza donde con una llave cerrada. Estas variables solo existen mientras se est ejecutando el bloque de cdigo en el que son declaradas, cuando sale de este bloque la variable se destruye. Variables globales Su declaracin se hace fuera de cualquier funcin. Posee una visibilidad para todas las funciones del programa y su ciclo de vida es de todo el programa. Especificadores de clase de almacenamiento Existen cuatro especificadores de clase de almacenamiento admitidos por C. se trata de los siguientes :

extern static register auto Estos especificadores indican al compilador cmo debe almacenar la variable que le sigue. El especificador de almacenamiento precede al resto de la declaracin de variable. Su forma es : especificador_de_almacenamiento tipo nombre_de_variable ; Extern Dado que C permite enlazar juntos distintos mdulos de un gran programa compilados por separado con el fin de acelerar la compilacin y ayudar en la gestin de grandes proyectos, la forma de que todos los archivos conozcan las variables globales requeridas en el programa es : declarando todas las variables globales en un archivo y usar declaraciones extern en los otros archivos. Por ejemplo : int y,x=123 ; main (void){ y=100 ; } archivo 1 archivo 2 extern int y,x ; void funcionmatera(void){ x=y/2 ; }

Variables estticas Dentro de su propia funcin o archivo, las variables static son variables permanentes . Difieren de las variables globales en que no son conocidas fuera de su funcin o archivo, aunque mantienen sus valores entre llamadas. Variables estticas locales Cuando se le aplica el modificador static a una variable local , el compilador crea un almacenamiento permanente para ella de una forma muy parecida a cuando crea un almacenamiento a una variable local ,o sea que no se destruye al salir de la funcin, la gran diferencia entre la variable local static y una global es que la variable local static solo es conocida en el bloque en que est declarada. Variables estticas globales Cuando se aplica el modificador static a una variable global , se indica al compilador que cree una variable global conocida nicamente en el archivo en el que se declara la variable global static Variables registro El especificador register nicamente se puede aplicar a variables locales y a los parmetros formales de una funcin, las operaciones sobre variables registro se llevan mucho ms rpido que sobre las variables guardadas en memoria . Usualmente se usan para control de ciclos Estructuras En el lenguaje C, una estructura es una coleccin de variables que se referencia bajo un nico nombre, proporcionando un medio eficaz de mantener junta la informacin relacionada. Una declaracin de estructura forma una plantilla que puede utilizarse para crear variables de estructura . Las variables que componen la estructura se llaman elementos de la estructura. En general, cada elemento de la estructura est lgicamente relacionados con los otros. La forma general de una estructura es : struct etiqueta{ tipo nombre_de_variable ; tipo nombre_de_variable ; .

. } variables_de_estructura ; el nombre con que se identifica una estructura en particular es la etiqueta. Las variables de estructura no necesariamente tienen que estar declaradas despus de la declaracin de la estructura, se pueden declarar en otras partes de la funcin as : struct etiqueta variable_de_estructura ; Un ejemplo de una estructura podra ser : struct directorio{ char nombre[30] ; char direccin[40] ; char ciudad[20] ; char departamento[30] ; }; struct directorio paciente ; Tipos definidos por el usuario Typedef C permite definir explcitamente un nuevo tipo de dato usando la palabree typedef. Realmente no se crea una nueva clase de dato, sino que se define un nuevo nombre para un tipo existente. Este proceso puede ayudar a hacer ms transportables los programas con dependencias con la mquina ; solo habr que cambiar las sentencias typedef . La forma general de la sentencia typedef es : typedef tipo nombre ; Donde tipo es cualquier posible tipo de dato y nombre es el nuevo nombre para ese tipo. El nuevo nombre que se define es una adicin, no ! un reemplazamiento del nombre de tipo existente. Por ejemplo, se puede crear un nuevo nombre para float usando typedef float intereses; En esta sentencia se indica al compilador que ha de reconocer intereses como otro nombre de float. A continuacin se puede crear una variable de tipo float usando intereses : intereses Carlos ; Aqu, Carlos, es una variable de tipo intereses, que es otro nombre de float. Funciones Las funciones son los bloques constructores de C y el lugar donde se da toda la actividad en el programa. La forma general de la funcin es : especificador_de_tipo nombre_de_la_funcin(lista de parmetros) { cuerpo de la funcin } El especificador_de_tipo especifca el tipo de valor que devuelve la funcin mediante la sentencia return . El valor puede ser cualquier tipo vlido. Si no se especifica ningn tipo, el compilador asume que la funcin devuelve como resultado un entero. La lista de parmetros es la lista de nombres de variable separados por comas con sus tipos asociados que reciben los valores de los argumentos cuando se llama la funcin. Una funcin puede no tener parmetros en cuyo caso la lista de parmetros contiene solo la palabra void. En general se pueden pasar argumentos a las funciones de formas. El primer mtodo se denomina llamada por valor y el segundo mtodo se denomina llamada por referencia la cual se basa en apuntadores. Un ejemplo de una funcin usando el mtodo de llamada por valor podra ser : #include <stdio.h> int cuad (int x) ; main (void){

int t=10 ; printf ("%d", cuad(t)); return 0 ; } cuad (int x) { x*=x ; return x ; } En este programa se ha de tener en cuenta que el argumento recibido por la funcin cuad no altera de forma alguna a la variable t de la funcin principal, caso contrario al usar el mtodo de llamada por referencia , por ejemplo : #include <stdio.h> int cuad (int *x) ; main (void){ int t=2 ; printf ("%d", cuad(&t)); return 0 ; } cuad (int *x) { (*x)*=*x ; return *x ; } En este caso la variable t de la funcin principal si se altera, t queda con el valor de 4 Entrada y salida La entrada y salida en C se llevan a cabo mediante el uso de funciones de la bibioteca ; no hay palabras claves de C que realicen las operaciones de E/S. Antes de empezar a mencionar algunas instrucciones de E/S es bueno conocer el concepto de flujo. El sistema de E/S de C suministra un nivel de abtraccion entre el programador y el dispositivo que se esta usando. A esta abstraccion se le llama flujo . Toda la E/S tiene lugar a traves de flujos. Todos los flujos son iguales. El sistema de archivos enlaza un flujo a un archivo , que es cualquier dispositivo capaz de llevar a cabo E/S . los E/S que se van a mensionar en este trabajo son E/S de consola, pero se puede redirigir la E/S por consola a otros dispositivos.. getche( ) y putchar( ). Las funciones mas simples de E/S por consola son getche(), que lee un carcter del teclado , y putchar que imprime un carcter en la pantalla en la posicion actual del cursor. La funcion getche () espera hasta que se pulsa una tecla y entonces devuelve su valor. El eco de la tecla pulsada aparece automaticamente en la pantalla Los prototipos de getche() y putchar() son : int getche(void) ; int putchar (int0 ; gets() y puts() Estas funciones permiten leer y escribir cadenas de caracteres por consola . La funcion gets() lee una cadena de caracteres introducida por el teclado y la situa en la direccion apuntada por su argumento de tipo puntero a carcter. La funcion puts() escribe su argumeto de cadena en la pantalla seguido de un carcter de salto de linea. Un ejemplo de gets() y puts() puede ser : #include <stdio.h> #include <string.h>

void main (void){ char cadena [20] ; gets(cadena) ; puts(cadena) ; } printf() el prototipo de printf() es int printf(const char *cadena de formato,...) ; en donde cadena de formato consiste en dos tipos de elementos : caracteres que se mostraran en la pantalla y ordenes de formato que definen la forma en que muestran los argumentos posteriores. Una orden de formato empieza con el signo porcentaje y va seguido por el codigo del formato. Por ejemplo : printf(hola %d, 10) ; scanf() Es una rutina de entrada por consola de proposito general. Puede leer todos los tipos de datos que suministra el compilador y convierte los numeros automaticamente al formato interno apropiado. Los especificadores de formato de entrada van precedidos por un signo % e indican a scanf() que tipo de dato se va a leer a continuacion. Todas las variables que utilizan para recibir valores a traves de scanf() se deben pasar por sus direcciones. Por ejemplo : scanf(%d,&cuenta) ; OBJETOS : En los programas que analizaremos a continuacion se utilia la metodologia de programacion orientada a objetos .De la cual hablaremos unos conceptos basicos en lo que sigue : Modularidad y flexibilidad : esto nos permite crear programas faciles de modificar y entender. Pudiendo o permitiendo este suprimir , aumentar el codigo a su minima o a su maxima expresion sin deterriorar o alterar la escencia y finalidad del mismo. Podemos hacer un simil de esta metodologia con el juego de unir fichas (Lego) ; dichas fichas hacen las veces de objetos , capacitando al programador para poder cambiar la posicion, suprimiendolas o anadiendolas segn sus requerimientos o caprichos . Que es la herencia ? : Consiste en que todas las propiedades, capacidades o caracteristicas de una clase son tambien propiedad, capcidad o caracteristica de una clase ,instancia o metodo que se cree dentro de ella, reduciendo de esta forma las definiciones y por ende el codigo. Que es una clase ? Es un tipo de dato que almacena un conjunto de atributos o caracteristicas que sirve para asociar una serie de metodos o instancias en una solo plataforma o base. Que es un objeto ? Es una especie de dato o contenedor de instrucciones cuya principal caracteristica es ser independiente a otros objetos y con capacidad de adherencia o desvinculacion a estos (tambien se le llama instancia). Que es un Metodo ? Es un a accion que ejecuta el programa escrito en el lenguaje. Puede ser parte de un a clase o de un objeto. JAVA VERSION BETA 1

Palabras reservadas : Abstract Boolean Break Byte case cactch char class const continue do double else extends final finaly float for goto if implements import instanceof int interface long native new null package private protected public return short static super switch synchonized this throw thorws transient try void volatile while

COMENTARIOS

/* Comentario de varias lineas */ // Comentario de una sola linea /** Comentario Javadocs */ LITERALES numero Tipo int numero [1| L] Tipo int 0xhex Entero hexadecimal 0octal Entero octal [numero]. Numero Tipo duble numero [f|f] Tipo float numero [d|d] Tipo double [+|-] numero con signo numeroenumero Exponente numeroEnumero Exponente carcter Un solo carcter Carcter Cadena Cadena vacia /b Retroceso /f Tabulador /n Alimentacion de linea /F Alimentacion de forma /r Regreso del carro / Comillas dobles / Comilla sencilla \ Diagonal inversa /uNNNN Escape Unicode (NNNN eshexadecimal) true Booleano false Booleano

ASIGANACION DE VARIABLES

Variable = valor Variable ++ ++Varaible Variable---Variable Variable += Valor Variable -= Valor Variable /= Valor Variable = Valor Variable & = valor Variable | = Valor Varialble ^=Valor Variable <<= Valor Variable >>= Valor Variable >>>= Valor

Asignacion Incremento sufijo Incremento prefijo Decremento sufijo Decremento sufijo Sumar y asignar Restar y asignar Multuplicar y asignar Dividir y asignar AND y asignar OR y aisgnar XOR y asignar Desplazamiento a la izquierda y asignar Desplazamiento a la derecha y asignar Complemento cero despalzamiento a la derecha y asignar .

OPERADORES

arg + arg SUMA arg - arg RESTA arg * arg MULTIPLICACION arg / arg DIVICION arg % arg MODULO arg < arg MENOR QUE arg > arg MAYOR QUE arg <= arg MENOR O IGUIA L arg = = IGUAL arg != arg DIFERENTE arg && arg AND LOGICO arg || arg OR LOGICO ! arg NOT LOGICO arg & arg AND arg | arg OR arg ^ arg XOR arg<< arg DESPLAZAMIENTO A LA IZQUIERDA arg>> arg DESPLAZAMIENTO A LA DERECHA arg>>> arg COMPLEMENTO CERO DESPLAZAMIENTO A LA DERECHA ~ arg COMPLEMENTO (tipo) Objeto FORZADO arg Instance of class INSTANCIA DE prueba ? Operverdadero : OPERADOR TERNARIO (IF) operfalso TIPO DE DATOS

En java existen varios tipos de datos divididos en dos clases : 1- 8 tipos de datos llamdos datos primitivos 2- Una clase o interfaz 3- Un arreglo Tipos primitivos : Estos tipos de datos estan integados al sistema y no son objetos en realidad lo cual hace sus usu mas eficiente ademas de que son independientes de la computadorea lo cual ahce confiable que su tamano y caracteristicas sean consistentes en el programa. En la siguiente tabla se muestra la clasificacion de los 8 tipos primitivos . TIPO byte short int long 9223372036854775807 TAMANO ENEROS 8 bits 16 bits 32 bits 64 bits -128 a 127 -32,768 a 32,767 -2,147,483,648 a 2,147,483,647 -9223372036854775808 a RANGO

float double

PUNTOS FLOTANTES

CARACTERES char true falso BOOLEANOS

TIPOS DE CLASE O NOMBRE DE INTERFAZ

En este se incluyen los tipos graficos, los objetos, binarios y los tipos definidos por el usuario. String lastName Font basicFont OvalShape myOval Final CONSTANTES

IDENTIFICADORES

Los identificadores en Java se pueden utilizar de cualquier forma teniendo en cuenta que Java hac distincion entre letras mayusculas y minusculas, ofrede posibilidad de utilizar caracteres ASCCI ademas Java utiliza el conjunto de caracteres UNICODE sobre 00c0 ; La unica restriccion sobre los identificadores en Java es la conserniente con las variables las cuales pueden ser nombradas iniciando con un guion de subarayado, un signo de dollares o una letra de ningun modo con un numero. Despues del primer carcter las variables pueden incluir cualquier tipo de carcter.

SINTAXIS

2- Tipos de clase e instancia .

2.1 El nombre de una clase o interfaz Un tipo de dato de puede declarar de esta forma para mantener instancias de una clase dada y sus subclases 2.2 Tipos de objetos Una clase se puede ver como una especie de creacion de un nuevo tipo de datos compuestos al utilizar struc, typedef y union que en Java se han suprimido en favor de las calses .

SINTAXIS

OPERACIONES REALIZADAS SOBRE LA INFORMACION ASIGNACION CONTROL DE FLUJO Sentencias Las secuencias en Java son un numero finito de sentencias al igual que en los otros lenguajes 1.1 Sentencias de desicion if (prueba) bloque else bloque condicional con else. Switch (prueba) { switch , solo con tipos enteros o carcter

case valor : enunciados case valor : enunciados ... default : enunciados } 1.2 Sentencias de iteracion For (inicializadro ; prueba ; change) bloque While (prueba ) Do bloque while (prueba) Lebel ciclos etiquetados

ESTRUCTURAS En Java no existen estructuras definidas mediante struc sino que el solo hecho de crear una clase se esta definiendo una especie de estructura y el acceso a sus elementos se hace pr medio de comandos generales ya definidos.

TIPOS DEFINIDOS POR EL USUARIO Java no cuenta con un enunciado typedef para declarar nuevos tipos de datos, de hecho en Java se crar verdaderos nuevos tipos de datos pero para ello debe primero debe declarar una nueva clase, luego las variables, metodos, intancias, subclases podran declararse para que sean de ese mismo tipo de clase o crearse dentro de ella y con ello asumira automaticamente el tipo por medio de la herencia.

TOPICOS ESPECIALES

Manejo de memoria y de ntrada y salida La administacion de la memoria en Java es automatica ; La memoria se asigna de forma automatica al crear un objeto y un recolectro de basura a tiempo de ejecucion (el gc) libera esa memoria cuando ese objeto ya no se usa . Las funciones de C malloc() y free() no existen en Java. Para forzar la liberacion de un objeto elimine todas la referencia a este (asigne todas la variables y elementos del arreglo que lo contienen a nulo). La siguiente vez que se ejecute gc, ese objeto sera requerido. Entrada y salida . Para la entrada y salida de la informacion en Java se utilizan bibliotecas de clases y objetos ya definidos en el lenguaje de pendiendo del resultado o de lo que se quiere hacer : ejemplo : Imprimir un letrero en la pantalla que diga hola mundo. 1 :Class holaMundo { 2 public static void main ( String arg[] ) { 3 System.out.println(hola mundo) ; 4 } 5}

PARALELO ENTRE PASCAL, C, C++ y JAVA

Nota : De las siguientes anotaciones se excluyen las relaciones de igualdad entre estos lenguajes.
COMENTARIOS JAVA con JAVA con

relacion a C y C++ JAVA posee un tipo de cometario adicional (/** Javadoc).

relacion a C y C++ JAVA utiliza identificadores sin limites de campo, puede utilizar caracteres ASCCI y UNICODE en cambio C y C ++ el limite de campo es de 32 caracteres y no acepta UNICODE, comparten la restriccion de inicio en ningun caso numero y reconose mayusculas.

JAVA con JAVA con

relacion a C y C++ en JAVA no existen tipos de datos sin signo.

relacion a C y C++ en JAVA el tipo Boolean regresan balores true y false en ningun caso es entero aunque se pue forzar a cero y uno.
JAVA y C++

con relacion a C y PASCAL crea realmente nuevos tipos de datos ; Esta diferencia consite en que en C se crea es un sinonimo de un tipo de dato conocido.( En java no existe el enunciado typedef, para definir un nuevo tipo de dato se dee primero crear una clase con esa o esas caracteristicas y luego se asocian las variables, metodos, instancias e inclusive otras clases a este tipo de clase o dato).
JAVA en

realcion a C++ el forzado de tipos de datos esta mas controlado, el forzaod automatico ocurre solamente cuando no existe perdida de informacion los demas forzados deberan ser explicitos ; Los tipos primitivos no podran forzarse a objetos o viserversa.
JAVA JAVA

en relacion a C los operadores se comportan de igual forma.

La palabra clave new se enlasa mas estrechamente que la notacin de (.) la cual tiene un comportamiento distinto que cn C++ observe el siguiente ejemplo : new cinco( ).excelente ; esta exprecion funciona como si se ubiera escrito asi : (new cinco()).excelente La sobrecarga de operadores al igual que en C++ no se puede realizar en Java.
JAVA con

relacion a C tiene los operadores >>,<< ,>>> y ~ estos generan desplazamientos o redireccionamientos sin signo, teniendo en cuenta que en Java no existen tipos de datos sin signo.
JAVA con

realcion a C y C++ no cuenta con punteros explicitos (*, &) para sustituir esto todas la referencias se logran con la creacion de nodos de lista con variables que apunten al siguiente o anterior nodo (referencias implicitas) con la limitante que no puede realizar aritmetica de apuntadores ; Despues para insertar elementos en la lista asigne esas variables a otros objetos tipo nodo.
JAVA con JAVA con

relacion a C y C++ utiliza el + para unir cadenas de caracteres .

relacion a C y C++ no tiene arreglos bidimencionales o matrices en cambio se puede declarar y crear un arreglo de arreglos ( y esos erreglos pueden contener arreglos y asi en lo sucesivo, en tantas dimenciones como lo necesite y tener acceso a el como lo haria en una matriz en C o C++ ; La unica condicion que cumple es que un arreglo no soporta varios tipos de datos simultaneamente.
JAVA con

relacion a C y C++ sus cadenas son arreglos que a diferencia de C y C++ no terminan en un carcter nulo y tampoco puede sobrepasar el limite de dicho arreglo ; por ende se tratan con las dificultades inherentes de rastrear la aritmetica del apuntador que como ya se dijo no existe en Java.
JAVA con JAVA con

relacion a C y C++ no utiliza variables globales .

relacion a C y C++ aunque las expresiones if, while, for y do en C y C++ retornan un valor entero en cambio Java asume el retoro falso o verdadero
JAVA con JAVA con

relacion a C++ no cuenta con clases de plantillas como en C++.

relacion a C++ las herencias son sencillas lo cual quiere decir que cada clase solo puede tener una y solo una superclase.

JAVA con

relacion a C y C++ No cuenta con funciones puesto que todas estas deben ser metodos y no puede haber ninguno de estos que no este enlasado a una clase.
JAVA con

relacion a C y C++ La palabra reservada goto no esta implementada ; para conmutar o construir ejecuciones de ciclos se puede utilizar break y continue para entrar y salirse de un ciclo.
JAVA con JAVA con JAVA con

relacion a C y C++ NO cuenta con el tipo register el cual ejecuta la variable en la Cpu. relacion a C y C++ No cuenta con un procesador y por ello no ostenta #defines o macros.

relacion a C y C++ Puede declarar constantes pero solamente de clase o de instancia en ningun modo para variables locales .
JAVA con

relacion a C y C++ La independencia de plataforma es una de las diferencias mas marcadas con relacion a otros lenguajes y en particular para los sistemas que necesitan funcionar en varias plataformas . Java mantiene esta independencia tanto a nivel de codigo fuente como del binario. OO/C++ C++ es un Lenguaje "orientado a objetos". La programacin orientada a objetos es una solucin a los problemas de los grandes paquetes de software que fueron desarrollados primero en los aos 70. Todos los Lenguajes orientados a objetos tratan de lograr tres cosas como una manera de frustrar los problemas inherentes en proyectos grandes:

1.

2.

3.

Todos los Lenguajes orientados a objetos implementan la "abstraccin de los datos" en una manera clara usando un concepto llamado clases; Brevemente, la abstraccin de los datos es una manera de combinar datos con las funciones manipulando los datos para que se escondan detalles de la implementacin del programador. La Abstraccin de los datos hace los programas mucho ms fciles de mantener y actualizar. Todos los Lenguajes orientados a objetos tratan de hacer partes de los programas mas fcilmente usables y extensibles; de ac es donde la palabra "objeto" viene. Los programas son quebrados en objetos reusables, Se pueden agrupar estos objetos entonces juntos en maneras diferentes para formar programas nuevos, objetos ya existentes pueden ser tambin extendidos, dndole a los programadores un camino fcil para reusar cdigos; es mucho mas fcil escribir programas ensamblando piezas existentes. Los lenguajes orientados a objetos tratan de hacer que la existente codificacin sea fcilmente modificable, sin realmente tener que cambiar la codificacin. ste es un concepto nico y muy poderoso, usando dos nuevos conceptos poliformismo y herencia es posible usar solo eso, el objeto existente permanece igual, y algn cambio para este quedan encima de el; la habilidad de que el programador de mantener y ajustar el cdigo en una forma que es drsticamente mejor usando ese camino.

Desde que C++ es un Lenguaje orientado a objetos, este posee tres beneficios orientados a objetos. C++ tambin tiene otros dos dos mejoramientos propios para arreglar algunos problemas en el C original o para hacer la programacin en C++ mas fcil que en C.

1.

2.

C++ agrega un concepto llamado "operator overloading", esta caracterstica permite especificar nuevos caminos de usar operadores estndar como + y >> en sus propios programas. Por ejemplo si usted quiere agregar un nuevo tipo como un numero complejo a un programa C, la implementacin no ser simple. Para agregar dos nmeros complejos usted debe crear una funcin llamada add y luego decir c3=add(c1,c2); donde c1, c2 y c3 son valores del el nuevo tipo de numero complejo, en cambio en C++ usted puede overload (sobrecargar) los operadores + y =, as que usted puede decir: c3 = c1 + c2. De esta forma nuevos tipos son agregados al lenguaje, completamente en una manera mas fcil. El concepto overloading (sobrecargar) se extiende para todas las funciones creadas en C++. C++ tambin remueve algunas de las implementaciones de varias porciones del el lenguaje C, las mas importantes I/O (entrada/salida) y la asignacin de la memoria. Las nuevas implementaciones han sido creadas mirando hacia la sobrecarga de los operadores (operators overloading), as es mas fcil agregar nuevos tipos y proveer menos operaciones de i/o y asignaciones de memoria.

Este ejemplo puede ser visto en cada librera interna de C, el problema esta demostrado en el siguiente cdigo, que tenemos una string con un valor y luego concatenamos otra string dentro de esta : char s[100]; strcpy(s, "Hola "); strcat(s, "Mundo"); Este cdigo no esta muy bueno, pero el formato es tpico en cada librera que tu creas en C. El tipo de string es construido dentro de el tipo de caracteres nativos del C. Porque el nuevo tipo no es parte del lenguaje original, el programador es forzado a usar la funcin calls para hacer algo con esta. Lo que usted tiene que hacer es ser capaz de crear un nuevo tipo y tenerlo listo para el resto del lenguaje, algo como esto: string s; s = "hola "; s += "mundo"; Si esto fuera posible, entonces el lenguaje seria infinitamente extensible. C++ soporta este tipo de extensin a travs del overloading del operador y las clases, Ntese que cuando se usa el tipo string la implementacin es completamente oculta. Por eso es mas fcil cambiar la implementacin de un tipo en el futuro sin afectar el cdigo existente. Otro problema que usted puede tener como programador de C, involucra en cuando usted tiene que cambiar de libreria, digamos por ejemplo que usted esta usando la funcion printf definida en la libreria stdio pero usted quiere modificar esta, de modo que pueda manejar un nuevo tipo que usted a creado recientemente, digamos que usted quiere modificar printf para poder imprimir numeros complejos, usted estara sin suerte a menos que tenga el source (codigo fuente) de printf, y aun si usted tiene el source, la modificacion no hara mucho porque ese source no es transportable o usted no tiene el derecho para copiar este. No hay forma realmente de extender una libreria en C facilmente una vez esta haya sido compilada, para resolver su problema de salida, usted debera crear ua nueva funcion para imprimir su nuevo tipo, si usted tiene mas de un nuevo tipo luego usted probablemente debera crear varias funciones diferentes de salida, y todas ellas seran diferentes. C++ maneja todas esos problemas con su nueva tecnica para (standards outputs) salidas estandar. Una combinacion de sobrecarga de operador y clases, permiten a nuevos tipos integrarsen dentro del esquema C++ I/O standards. Mientras pensando en la funcion printf, piensa en su diseo y preguntate tu mismo esto : es una buena forma de disear un codigo? Dentro de printf hay una declaracion switch que le da el formato a la string, un %d es usado para numeros decimales, un %c es usado para caracteres, un %s es usado para strings (frases), y asi sucesivamente. Hay por lo menos tres problemas con esta implementacion: 1. el programador debe de mantener esa declaracion de switch y modificarlo para cada nuevo que ha de ser manipulado. La modificacion significa que nuevos bugs(fallos) seran introducidos. 2. No hay garantia de que el usuario encajara los parametros del dato con el formato de la string, asi que todo el sistema puede fallar catastrficamente. 3. Este no es expandible, a menos que usted tenga el codigo de origen usted no podra extender la declaracion printf. C++ resuelve estos problemas completamente forzando al programador a estructurar el codigo en una nueva forma, la declaracion switch is ocultada y manejada automaticamente por el compilador a traves de la function overloading, (sobrecarga de la funcion), es imposible equivocarse en los parametros, prmero porque estos no son implementados como parametros en C++, y segundo porque el tipo de variable automaticamente controla el mecanismo del switch que es implementado por el compilador. C++ resuelve algunos otros problemas como bien. Todo los que se escribe en C funciona en C++. Por supuesto , en muchos casos C++ ofrece una mejor manera de manejar una tarea dada, en otros casos C++ ofrece una segunda forma de hacer algo y la opcin le da a usted mas flexibilidad. Comentarios en C++ C++ soporta el estilo viejo de comentario multi-linea, como bien uno nuevo de linea sencilla denotado por el simbolo: //. Por ejemplo: // get_it funcion que lee los valores de entrada void get_it()

{ // haga algo. } Todo desde el // hasta el final de la linea es ignorado. Usted puede usar ambos estilos de comentario intercambiablemente en un programa C++. Descripcion de variables En C, usted puede describir un tipo de variable colocando un nombre de tipo en parentesis y colocandolo en el fente de el nombre de la variable come se muestra a continuacion: int i; float f; f = (float) i; En C++ un segundo formato es tambien aceptado. Este hace ver la descripcion como una llamada de funcion, como se muestra a continuacion: int i; float f; f = float(i); Esto lo miraremos mas adelante cuando estaremos discutiendo clases, para ver que hay una razon para este nuevo formato. Entrada y Salida Terminal I/O Una de las mas obvias diferencias entre C y C++ es el reemplazo de la libreria stdio en C con la libreria iostream in C++. La libreria iostream toma ventaja de un numero de caracteristicas de las extenciones orientadas a objetos de C++, y por eso hace la adicion de nuevos typos de I/O definidos por el usuarios mucho mas facil. La librera iostream tambien reemplaza todas las capacidades encontradas en la libreria stdio, asi que es mas importante saber las caracteristicas basicas de la nueva libreria mientras pasas codigo hacia C++. El uso de la libreria iostream para entradas y salidas basicas es mejor. Dos ejemplos simples son mostrados a continuacion: cout << Hola\n; o equivalentemente: cout << "Hola" << endl; Ambas formas producen la misma salida, y hacen que la palabra Hola seguida de una linea nueva aparezca en la salida estndar. La palabra cout indica salida estandar. Como la destinacion para la salida, y el operador << (el operador insercin) es usado para recolectar los elementos, otros dos predefinidos standards output (salidas estandars) son: cerr para informacion erronea no bufferiada y clog para informacion erronea bufferiada. Uno de los tipos estandar puede ser escrito usando la misma tecnica mostrada a continuacion : integers, floats, chars, y apuntadores todos pueden ser escritos, multiples elementos pueden ser metidos en una simple linea o separados en multiples lineas, por ejemplo: int i = 2; y lo mismo seria : float f = 3.14 char c = 'A'; cout << s << c; char *s = "hello"; cout << f; cout << s << c << f << i << endl; cout i << endl; produce la salida : helloA3.142 El mecanismo de cout automaticamente entiende las direcciones y formatos para las salidas hex. por ejemplo si i es un entero, luego la declaracion : cout << &i << endl; imprime la direccion i en formato hexadecimal, si p es un apuntador a i, entonces imprimir p tambien imprime la direccion i en formato hex, hay casos por supuesto donde esta regla de formato no se mantiene; imprimendo s, donde s es un apuntador a un caracter, produce una string apuntada por s en vez de la direccion coontenida por s, para remediar esta situacion cast (moldee) s para impedir que el apuntador como se muestra a continuacion si usted quiere ver su direccion: cout << (void *) s;

Ahora la direccion contenida por s sera mostrada en formato hex, si usted dessea mostrar la direccio como un numero decimal en vez de formato hex, moldee este a un entero largo. cout << long(& i); Esta linea imprime la direccionde i en formarto decimal, de la misma forma, un int es usado para imprimir el valor entero de un caracter. cout << int('A'); // produce 65 como salida. Usted se dara cuenta de que el operador << ,Conocido en C como Shift left operator, ha sido ronado para manipular salidas en C++. Si usted desea usar este para tirar datos hacia la izquierda dentro de una linea de salida, entonces dbe usar el parentesis asi: cout << (2 << 4); // produce 32 como salida. para darle formato a la salida usted podra usar varias tecnicas; la declaracion : cout << "[" << setw (6) << setfill('*') << 192; cout << "]" << endl; cout << hex << "[" << setw (6); cout << setfill('*') << 192 << "]" << endl; cout << setprecision(4) << 3.14159 << endl; produce: [***192] [****c0] 3.142 La entrada de datos es mannipulada en una manera similar, usando la funcion cin y el operador de extraccion >>, por ejemplo la sgte declaracion: int i,j,k; cin >> i >> j >> k; Leera tres valores enteros de entrada estandar en i, j y k. El espacio en blanco es automaticamente usado como separador y es ignorado, cuando se esta leyendo dentro de una variable string, la entrada es leida palabra por palabra, donde las palabras son separadas por espacios en blanco, los espacios en blanco son ignorados cuando se lee dentro de un caracter; esto puede ser anulado leyendo strings y/o lineas explicitamente, asi: todos los typos estandars estan manipulados por cout son manejados por cin : while (cin >> i) cout << i; cin automaticamente parte las entradas en palabras y termina en un EOF. Entrada y Salida de/a Archivos Entrada y salida a archivos de texto son manipuladas incluyendo la libreria fstream.h y luego declarando variables del tipo ifstream y ofstream respectivamente; por ejemplo el siguiente programa lee desde un archivo llamado xxx y escribe a un archivo llamado yyy.. #include <iostream.h> #include <fstream.h> void main() { char c; ifstream infile("xxx"); ofstream outfile("yyy"); if (outfile && infile) // Seran 0 si algun error. while (infile >> c) outfile << c; } Las variables infile y outfile son pasadas a el archivo en la inicializacion, y son usadas solo cuando cin y cout son usados., este cdigo no funciona como lo esperbamos por supuesto, porque espacios, tabs y caracteres \0 al final de cada linea son ignorados como espacios en blanco cuando usamos << sobre un caracter, en ves de eso podemos usar la funcin get como se muestra a continuacin : while (infile.get(c)) outfile << c; o: while (infile.get(c)) outfile.put(c);

Es tambien posible leer lineas completas llamando la funcon getline en la misma forma como usamos la funcion get, para abrir un archivo o para agregarlo a otro, usamos lo siguiente: ofstream("xxx", iosapp); Notese de que no usamos la guncion close para la entrada y la salida, Un archivo automaticamente se cierra el solo cuando la variable del archivo se sale del limete, pero si usted necesita explcitamente cerrar un archivo usted puede usar : outfile.close(); String I/O La entrada de datos tambien puede ser leida desde strings en la memoriam y la salida puede ser enviada a strings en la memoria duplicando la accion de sscanf y sprintf, para hacer esto usted debe incluir la libreria strstream.h y luego declarar strings de salida y entrada char s[100]; ostrstream outstring(s,100); outstring << 3.14 << " es pi" << ends; cout << s; La string s es llenada con el texto 3.14 es pi. Si s es sobrellenada, outstring automaticamente se detendra de ponerle valores a esta. Si la string s existe y usted quiere leer de esta, usted puede usar una string de entrada como se muestra : char *s = "3.14 12 cat"; istrstream instring(s, strlen(s)); float f; int i; char t[100]; instring >> f >> i >> t; La libreria iostream tiene muchas otras capacidades que no han sido discutidas aqui. DECLARACION DE VARIABLES Las variables son declaradas en C++ igual que como en C. Las Variables pueden ser declaradas en cualquier parte del codigo en C++, la variable empieza a existir desde el momento en que es declarada, y termina de existir cuando el fin de el brazo } de el bloque actual es alcanzado, por ejemplo en el siguiente codigo: { int i; ... codigo ... int j; ... codigo ... int k=func(i,j); ... codigo ... } Todas tres variables empiezan a existir cuando son declaradas y desaparecen al final del brazo que cierra el bloque. CONSTANTES En C usted crea una constante usando el preprocesador de macros, ejemplo: #define MAX 100 Cuando el programa es compilado, el preprocesador encuentra cada ocurrencia de la palabra max y reemplaza esta con la string 100. En cambio en C++ se usa la palabra const ejemplo: const int MAX=100; La porcion int MAX=100;es formatiada exactamente en la misma forma que una declaracion normal; la palabra const en frente de esta simplemente define que la variable MAX no puede ser cambiada subsecuentemente. El uso de mayusculas para la definicion de constantes es solo una tradicion en C. SOBRECARGA DE FUNCIONES. Una de las mas poderosas caractersticas nuevas del C++ es llamada "function overloading" (sobrecarga de funciones). Una funcion sobrecargada tiene diferentes listas de parametros, el lenguaje distingue que

funcion llamar basandose en el tipo de listas del parametro. Aqu est una demostracin sumamente simple del proceso: #include <iostream.h> void func(int i) { cout << "function 1 called" << endl; cout << "parameter = " << i << endl; } void func(char c) { cout << "function 2 called" << endl; cout << "parameter = " << c << endl; } void func(char *s) { cout << "function 3 called" << endl; cout << "parameter = " << s << endl; } void func(char *s, int i) { cout << "function 2 called" << endl; cout << "parameter = " << s; cout << ", parameter = " << i << endl; } main() { func(10); func('B'); func("hello"); func("string", 4); return 0; } Cuando este cdigo es ejecutado, cada version de la funcion func es llamado basandose el encajamiento con la lista de parametros. Esto es una capacidad muy util del C++, por ejemplo si usted crea una funcion que inicializa un modulo, usted puede tener este para que llame diferentes codigos dependiendo del cualiesquiera tipo esta siendo pasado, una string, un entero, un numero de pnt flotante y asi sucesivamente. ARGUMENTOS POR DEFECTO C++ tambien le permite a usted dar diferentes valores a los parametros, si el parametro no es pasado, el valor de por defecto es usado, esta capacidad es demonstrada en el siguiente codigo. #include <iostream.h> void sample(char *s, int i=5) { cout << "parameter 1 = " << s << endl; cout << "parameter 2 = " << i << endl; } main() { sample("test1"); sample("test1",10); return 0; } El primer llamado de la funcion dara una salida del valor que por defecto es 5 para el parametro i, mientras el segundo llamado dara de salida un 10. Cuando se crean parametros de por defecto usted necesita evitar ambigedad entre el parmetro estndar de lista y otros parametros sobrecargados en las listas del parmetro. ASIGNACION DE LA MEMORIA

C++ reemplaza la funcin de asignacin de memoria del C, malloc ; y la funcin de removimiento free con new y delete respectivamente. Y en el proceso estas se hacen mucho mas fciles de usar. New y delete permiten crear tipos de usuario y ser asignados tan facilmente como tipos ya existentes. El siguiente codigo muestra el uso simple de new y delete. int *p; p = new int; *p = 12; cout << *p; delete p; Es tambin posible asignar bloques constados de filas de longitud variante usando una tcnica similar. Note el uso de delete[ ] para borrar la fila. int *p; p = new int[100]; p[10] = 12; cout << p[10]; delete [] p; El valor 100 pude ser una variable si se desea. Cuando se trabaja con tipos definidos por el usuario, new trabaja de la misma forma: typedef node { int data; node *next; } node; main() { node *p; p=new node; p->date = 10; delete p; } DECLARACIONES DE LA REFERENCIA En C, los apuntadores son frecuentemente usados para pasar parametros a las funciones. Por ejemplo la siguiente funcin swap intercambia los dos valores pasados: void swap(int *i, int *j) { int t = *i; *i = *j; *j = t; } main() { int a=10, b=5; swap(& a, & b); cout << a << b << endl; } C++ provee un operador de referencia para limpiar y acortar la sintaxix un poco: void swap(int& i, int& j) { int t = i; i = j; j = t; } main() { int a=10, b=5; swap(a, b);

cout << a << b << endl; } Los parametros i y j declarados como el tipo int& actuan como referencia a los enteros pasados. VOCABULARIO DEL C++ Mire el mundo alrededor suyo. Puede entender un pedazo bueno acerca de la estructura, vocabulario, y organizacin de C++ mirando la estructura y organizacin del mundo real tan satisfactorio como el vocabulario que usamos para hablar acerca de l. La jerarqua se extiende hacia ambos sentidos, hacia el general y el ms especfico. Ejemplo un solo libro en particular. En la POO, tiene un "ejemplo" de la clase "libro." Los libros tienen atributos seguros que son compartidos por todos los libros: Tienen una tapa, varios captulos, publicidad, y as sucesivamente. El rasgo ms importante que diferencia C++ de C es esta idea de una "clase," ambos a un nivel sintctico y conceptual. Las clases permiten que usted use todas las caracteristicas de la programacion orientada a objetos en sus programas C++: encapsulacion, herencia, y poliformismo. Tambin son el armazn en otros rasgos, tal como "sobrecarga de operador" (la habilidad de redefinir operadores tal como "+" y ">" para datos recientemente creados), son construidos. LA EVOLUCION DE CLASES Dada la cantidad de poder conceptual se encarn en el concepto de la clase, interesa notar que la sintaxis queda justamente sincera. Una clase es simplemente una extensin de una estructura C. Bsicamente una clase le permite a usted crear una estructura, y entonces permanentemente enlazar todas esas funciones relacionadas a esa estructura. Este proceso es conocido como encapsulacion. Es un concepto muy simple, pero es el corazn de la programacion orientada a objetos: datos + funciones = objeto. Las clases tambien pueden ser construidas sobre otras clases usando la herencia. Bajo la herencia, una nueva clase se extiende como clase de base. Finalmente, nuevas clases pueden modificar la conducta de sus clases origen, una capacidad conocida como poliformismo. Uno de los mejores formas para entender las clases y su importancia para uno como programador es entender como y porque ellas estan involucradas. Las raices del concepto de clase estan el el topico conocido como: Abstraccin de datos. C++ Y ABSTRACCION DE DATOS Los lenguajes orientados a objetos como C++ ofrecen faciles y extensas formas de implementar la abstraccion de datos, todo lo que usted tiene que hacer es modificar su forma de pensar para pensar acerca de los problemas en una forma abstracta, primero que todo usted tiene que pensar en terminos de tipos de datos; la otra tecnica escencial es pensar en forma generica especifica. OPERADORES EN C++ Casi cada operador en C++ se puede cargar excesivamente o sobrecargar: + * / % ^ & | ~ ! , = < > <= >= ++ -<< >> == != && || += -= /= %= ^= & = |= *= <<= >>= [ ] ( ) -> ->* new delete muchos de estos nunca son vistos, y mucho menos sobrecargados, pero sobrecargando los operadores mas comunes como + y == usted puede hacer una clase mucho mas facil de usar. FUNCIONES POR DEFECTO. Cuando usted quiera crear una clase nueva, cuatro funciones por defecto son creadas automaticamente, a menos de que usted anule estas creando sus propias, estas son : el constructor por defecto la copia del constructor por defecto la asignacion del operador por defecto el destructor por defecto. El constructor por defecto es invocado cuando usted declara una instancia de clase y pasa esta sin parametros, por ejemplo si usted crea una clase de ejmplo y usted no le crea constructores a esta, entonces

otroas declaraciones invocan el constructor por defecto. El destructor por defecto es llamado cuando una variable se sale de su alcance, y entonces el operador asignado por defecto es llamado cuabndo una asignacion normal ocurre, usted puede impedir algunas de las funciones por defecto creando sus funciones propias, por ejemplo si usted crea algun constructor, entonces el constructor por defecto no es creado. QUE ES LA ENCAPSULACION ? Es prevenir el acceso no autorizado a alguna pieza de informacion o funcionalidad. LA encapsulacin pone una barrera de fuego alrededor de un pedazo de codigo, que previene otros pedazos de codigo acceder las partes volatiles de este, otros pedazos de codigo pueden acceder unicamente las partes estables. En contexto de software Orientado a Objetos un pedazo de codigo es normalmente una clase o un grupo de clases. QUE ES UN FRIEND ? Es algo que le permite a tu clase tener acceso a otra clase o funcion. Los Friends pueden ser funciones o otras clases. Una clase le da los privilegios de acceso a sus friends. Los friends no violan la encapsulacin si estos son usados propiamente, estos actualmente mejoran la encapsulacin. Las ventajas y desventajas de usar funciones friends son que estas proveen un grado de libertad en las opciones del diseo de la interface. Las funciones member y las friend estan igualmente privilegiadas, la mayor diferencia es que una funcion friend es llamada como f(x), mientras que la funcion member es lamada x.f(). Mas la habilidad de escoger entre funciones member (x.f( )) y las friend (f(x)) le permiten al diseador seleccionar la sintaxis mas legible, que rebaja los costos de mantenimiento. La mayor desventaja de las funciones friend es que estas requieren una kinea extra de codigo cuando usted quiere hacer un enlace dinamico. ES LA HERENCIA IMPORTANTE PARA EL C++ Si. La herencia es lo que separa la programacion de tipos de datos abstractos, de la programacion orientada a objetos.

Você também pode gostar