Jueves 14 de Noviembre de 2024, 04:11
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
duda en C
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: duda en C (Leído 1344 veces)
cltomas
Nuevo Miembro
Mensajes: 20
duda en C
«
en:
Sábado 19 de Marzo de 2011, 15:19 »
0
Tengo este trozo de código que forma parte de un programa que utiiza funciones:
Código: C
resultado
=
cubo
(
n
)
;
/* Hacemos la llamada a la función */
printf
(
"El cubo de %.2f es %.2fn"
,
n
,
resultado
)
;
Alguien me puede explicar, porque cuando coloco ese trozo al reves es decir:
Código: C
printf
(
"El cubo de %.2f es %.2fn"
,
n
,
resultado
)
;
resultado
=
cubo
(
n
)
;
/* Hacemos la llamada a la función */
El programa me genera resultados inesperados, por ejemplo si ejecuto e programa con el codigo anterior,el cubo de 2 me da 0.00
, pero si lo hago con el primer trozo de código, me genera el resultado correcto
Tweet
m0skit0
Miembro de PLATA
Mensajes: 2337
Nacionalidad:
Re: duda en C
«
Respuesta #1 en:
Sábado 19 de Marzo de 2011, 17:39 »
0
Porque en el primer trozo asignas un valor a la variable resultado ANTES de imprimirlo. En el segundo sin embargo primero imprimes el valor de la varuabke (que como no pones cómo has inicializado la variable pues será X) y después le asignas el valor devuelto por la función.
Fr33k K0mpu73r
ProfesorX
Moderador
Mensajes: 796
Nacionalidad:
Re: duda en C
«
Respuesta #2 en:
Sábado 19 de Marzo de 2011, 17:40 »
0
Ja ja, esto si me dio risa, nunca habia visto alguien preguntar algo asi de obvio, pero bueno, supongo que nunca llevaste alguna materia de diseño de algoritmos.
Bueno, fuera de la risa te dare la respuesta (aunque es obvia), la razon es que en el segundo codigo:
Código: C++
// resultado aun no contiene el valor del cubo, lo estas imprimiendo antes de calcularlo
printf
(
"El cubo de %.2f es %.2fn"
, n, resultado
)
;
resultado
=
cubo
(
n
)
;
/* Hacemos la llamada a la función */
la variable resultado aun no contiene el resultado del calculo, ya que estas imprimiendo
antes
de calcular, de hecho, si tu no le asignas un valor manualmente a la variable resultado despues de crearla, contendra un valor "indederminado" (
basura
) pero la razon de que contenga cero es que algunos compiladores "inicializan" automaticamente las variables
globales
con cero. Puedes comprobarlo si en lugar de declarar resultado como global, la declaras como local, y veras que ahora tendra un valor diferente de cero.
En programacion no aplica la regla de la multiplicacion "el orden de los factores no afecta el producto". En programacion, el orden en que se ejecutan las lineas
SI
puede afectar el resultado final de un programa, es por eso que la programacion es mas delicada, y a veces mas dificl de encontrar y corregir errores (depurar) te encontraras muchisimos mas casos en que si cambias una sola linea de lugar, obtienes resultados totalmente diferentes, es por eso que hay que revisar con cuidado el codigo, pero afortunadamente en los compiladores modernos tenemos muchas herramientas para realizar la ejecucion de codigo linea por linea para depurarlo correctamente.
Saludos
NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================
cltomas
Nuevo Miembro
Mensajes: 20
Re: duda en C
«
Respuesta #3 en:
Sábado 19 de Marzo de 2011, 18:00 »
0
risa te da por la pregunta
... Deja decirte, soy un autodidacta y como tal tengo ingentes dudas, pero hay libros y manuales que dan las cosas por sentado que tu las sabes, y si hubiera sabido que en C o cualquier otro lenguaje de programación el orden de los productos afecta el resultado, me lo hubiera pensado antes de hacer la pregunta, es más no la hubiera hecho.
Todos te dicen que un int almacena valores desde -32.768 a 32.767, pero nadie te dice de donde se obtiene ese valor, así que imaginate el tiempo que "pierdes" tratando de comprender de donde sale eso, no me basta con solo saber que un int almacena de -32.768 a 32.767..
Así que si consideras que mi pregunta es demasiado obvia no la tendrías que haber contestado...De todas formas muchas gracias por tu respuesta ya me queda mucho más claro, mi problema..
ProfesorX
Moderador
Mensajes: 796
Nacionalidad:
Re: duda en C
«
Respuesta #4 en:
Sábado 19 de Marzo de 2011, 20:10 »
0
Disculpa si pareci rudo y te ofendi, no me rei de ti, sino de la pregunta, es bueno que seas autodidacta, yo tambien lo soy de hecho yo aprendi a programar en C/C++ antes de llevar la materia, por cuestiones de trabajo, lo que me ayudo mucho cuando lleve el curso, pues ya sabia las bases del lenguaje
, tambien aprendi a programar en C#, y Java por mi cuenta, en la escuela no lleve ninguno de esos dos lenguajes, a lo que me referia es que se notaba que nunca llevaste algoritmos, eso no es malo, a menos que no sepas algoritmos por flojera de no haber estudiado bien la materia (conozco muchos casos de gente floja, que no pone empeño en aprender), pero si nunca llevaste algoritmos, solo significa que debes aprender mas. Es bueno que tengas el animo de aprender el porque, sigue asi.
Solo rematare con una frase mas, "No hay preguntas tontas, solo hay tontos que no preguntan"
Saludos y suerte
NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
duda en C