Foros del Web » Programación para mayores de 30 ;) » Programación General »

Preguntas de principiante

Estas en el tema de Preguntas de principiante en el foro de Programación General en Foros del Web. Hola ¿que tal? Me gustaría consultar sobre estos dos temas en particular. Tal vez alguien pueda darme algunas palabras según su experiencia! :) 1. Operador ...
  #1 (permalink)  
Antiguo 12/11/2006, 20:32
 
Fecha de Ingreso: diciembre-2004
Mensajes: 721
Antigüedad: 19 años, 5 meses
Puntos: 2
Preguntas de principiante

Hola ¿que tal?

Me gustaría consultar sobre estos dos temas en particular. Tal vez alguien pueda darme algunas palabras según su experiencia! :)

1. Operador Condicional "?".

Según el material que estoy leyendo se puede utilizar este operador de la siguiente forma:

c = (a>b) ? x : y;

Al ver esto me doy cuenta que podrían ahorrarse muchas líneas de código utilizandolo. Pero ¿En qué ocaciones podría esto suplantar por ejemplo, un "IF"? ¿Cual sería una buena aplicación de este condicional?


2. endl; vs \n:

Entiendo que "endl" limpia un buffer... pero no comprendo con precisión qué es exactamente lo que hace y cuando debería utilizar ENDL; en vez de \n.


Me gustaría pedirles también, si no fuese molestia, alguna recomendación ó algun material para leer que me pueda servir para ir aprendiendo a programar bien, sin mal gastar memoria ni procesamiento de CPU.
El proyecto que tengo en mente va a requerir de mucho procesamiento y cuanto mejor lo programe mejor va a funcioanr.

Desde ya, muchas gracias por su tiempo y por compartir sus experiencias!!

Saludos!!!
  #2 (permalink)  
Antiguo 12/11/2006, 21:14
 
Fecha de Ingreso: diciembre-2004
Mensajes: 721
Antigüedad: 19 años, 5 meses
Puntos: 2
¡Hola otra vez!

Estuve practicando el punto 1, encontre las siguientes utilidades:

/* Para cargar una variable */

a = (c > b) ? 0:1;


/* Para utilizarlo directamente dentro de un statement*/

cout << "El valor de 'a' es: " << ((c > b) ? 0:1) << endl;


/* Para alterar la dinamica de un FOR. ¡Como una compuerta! */


for (i=0; i <= ((c > b) ? 10:20); i++) {
cout << i << "\n";
}


/* Esto nos ahorraría el siguiente if: */

// if (b > c) { escribe("Mayor"); } else { escribe("Menor"); }



(b > c) ? escribe("Mayor") : escribe("Menor");


Lo que no sé exactamente es si, en el último caso (donde reemplazlo el IF) obtengo algun beneficio. ¿Cómo puedo saber que tanta memoria y CPU utiliza mi programa? (Uso Dev C++ en Windows).

Saludos!
  #3 (permalink)  
Antiguo 13/11/2006, 11:19
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años, 1 mes
Puntos: 17
Suponiendo que hablas de C/C++:

1. Cuando su uso deje el código más claro.

2. endl es una constante de C++ para streams, \n es un caracter de nueva línea para cadenas.

3. Sí, cuanto mejor programes algo mejor funcionará.
  #4 (permalink)  
Antiguo 13/11/2006, 20:19
 
Fecha de Ingreso: diciembre-2004
Mensajes: 721
Antigüedad: 19 años, 5 meses
Puntos: 2
Se lo que es "\n" max, gracias.

Me preguntaba si podrían aclararme, como comentaba en el POST, qué hace exactamente ENDL; (aparte de ser una constante para streams de C++ que es lo que estoy intentando aprender bien ahora)...

Seguiré buscando en google, gracias.
  #5 (permalink)  
Antiguo 14/11/2006, 02:04
 
Fecha de Ingreso: abril-2006
Ubicación: Acapulco Gro. México
Mensajes: 483
Antigüedad: 18 años, 1 mes
Puntos: 2
en realidad ya lo mencionaste antes:

endl es una plantilla de funcion muy similar a la sobrecarga del operador <<.
no es miembro de ninguna clase, tal vez amiga de basic_ostream pero lo ignoro.

lo que hace es introducir en el buffer de salida el caracter '\n', y despues lo Vacía.
Por tanto puedes ver que con tan solo '\n' haces la tarea que se espera de endl. cuando requieras realmente vacíar el buffer es cuando se recomienda usar endl. (a menos que este equivocado).

la razón por la cual no se usa como funcion, es que el operador << tiene una sobrecarga que tienen como parametro un puntero a funcion.


Saludos.

Última edición por Nivel7; 14/11/2006 a las 02:25
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:10.