elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Estoy Aprendiendo
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] 3 Ir Abajo Respuesta Imprimir
Autor Tema: Estoy Aprendiendo  (Leído 11,518 veces)
anonimo12121


Desconectado Desconectado

Mensajes: 1.813


Ver Perfil WWW
Re: Estoy Aprendiendo
« Respuesta #10 en: 17 Marzo 2011, 16:19 pm »

mira mi ejemplo lo que hace es insertar un trozo de codigo


En línea

Página para ganar Bitcoins y Dinero: http://earnbit.hol.es/
Video de YouTube con Hack para el LoL: http://adf.ly/5033746/youtube-lolemuhack
Si quieres ganar dinero con adfly entra y registrate aquí -> http://adf.ly/?id=5033746
Akai


Desconectado Desconectado

Mensajes: 823



Ver Perfil
Re: Estoy Aprendiendo
« Respuesta #11 en: 17 Marzo 2011, 17:32 pm »

No hay ninguna diferencia, lo que haces con un #define es declarar constantes. Ahora, esas constantes pueden ser un valor o una expresión.

ERROR Si la hay, y es ENORME.

define: lo que esté despues de, por así decirlo, la etiqueta, se EMPOTRA directamente en el código, por el preprocesador, no se hace comprobación de tipos ni nada por el estilo, simplemente se sustituye, y ya.
Ejemplo:
Código
  1. #define cuadrado((a)) (a)*(a)
con el siguiente ejemplo:

Código
  1. i=4;
  2. cuadrado(i++)

Resultado? 16, si, valor de la i=5? NO i=6. ¿WTF? Pensarán algunos.

Porque el preprocesador lo sustituye como:
Código
  1. i=4
  2. (i++)*(i++)

Y por precedencia de operadores, se realiza la multiplicación, y luego los post-incrementos

Por otro lado, un define NO ocupa más memoria que la que ocupe el código definido y dicha memoria será ocupada en el espacio dedicado a código, mientras que una constante, es una variable, y que por tanto, ocupará su espacio en el segmento de memoria dedicado a variables.


Por otro lado, utilizando el ejemplo del cuadrado, mirad que pasa si hacéis esto:
Código
  1. cuadrado(cuadrado(i)*cuadrado(i))

Lo ideal sería suponer una implementación de este estilo:
Código
  1. res1=resultado_cuadrado(i)*resultado_cuadrado(i)
  2. cuadrado(res1)

Pero, con los defines, al tratarse de código empotrado, se traduce como(es posible que me deje algo, pero básicamente es un infierno de calculo):
Código
  1. ((i*i)*(i*i))*((i*i)*(i*i))

Por qué? Porque primero, traduce el cuadrado de i en i*i, y luego, la multiplicación de cuadrados en (i*i)*(i*i) PERO como luego eso se lo pasamos como "argumento", y nuestro define, coge dicho argumento y lo multiplica por si mismo, tenemos la tira infernal de arriba.

Los defines (macros) son peligrosos.


« Última modificación: 18 Marzo 2011, 00:03 am por Akai » En línea

chocola

Desconectado Desconectado

Mensajes: 282



Ver Perfil
Re: Estoy Aprendiendo
« Respuesta #12 en: 17 Marzo 2011, 19:07 pm »

muy buena explicación Akai  ;-)

nos aconsejas algún guía o libro para seguir que nos haga ejemplos sobre programas con ejercicios para hacer ?=¿
En línea

Akai


Desconectado Desconectado

Mensajes: 823



Ver Perfil
Re: Estoy Aprendiendo
« Respuesta #13 en: 17 Marzo 2011, 19:17 pm »

Libro... el que utilizo como referencia es:

C++ estándar (Programación con el estándar ISO y la Biblioteca de Plantillas (STL))
Enrique Hernández Orallo, José Hernandez Orallo, Mª Carmen Juan Lizandra
Paraninfo - Thomson Learning
ISBN: 84-9732-040-9

(daría un enlace para descargarlo, pero no he encontrado, la vez que busqué, algún pdf o similar con el libro)

Por otro lado, Littlehorse (moderador del subforo) suele recomendar uno que hay colgado en este post: http://foro.elhacker.net/programacion_cc/librospapers_cc-t296234.0.html

Name: Cómo Programar en C/C++
Author(s): Harvey M. Deitel, Paul J. Deitel
Hardcover: 1072 pages
Publisher: Prentice Hall; 2nd edition (February 1998)
ISBN-10: 9688804711
ISBN-13: 978-9688804711

(hay un enlace para descargarlo)

Yo utilizo el de C++ estándar porque me gustó cuando me lo recomendó un profesor en la facultad y lo saqué una temporada de la bilioteca y al final me lo terminé comprando. Sobre el de Deitel & Deitel, no tengo mayor referencia que el hecho que Littlehorse lo recomiende. (Si vas a buscar el de Deitel & Deitel, intenta buscar una edición más actual, que imagino que la habrá)
« Última modificación: 17 Marzo 2011, 19:21 pm por Akai » En línea

chocola

Desconectado Desconectado

Mensajes: 282



Ver Perfil
Re: Estoy Aprendiendo
« Respuesta #14 en: 17 Marzo 2011, 19:30 pm »

muxas gracias por su respuesta

pero una duda que tengo :
mi profesor me esta apretando para que en vez de impezar con c++ impezar con el visual studio 2010 express

no se pero yo veo que muxa gente recomienda el c++ .
cuales tu opinion ?=¿ a favor de cual estas ?=¿

ahora yo ya tengo el compilador gcc instalado en windows y me va bien
pero no me importaría nada de nada tener que cambiar
si hay que cambiar se hace, no hay problema

nota : el profesor me da clase de sistemas  actualmente no estoy dando clase de programación es una cosa mía que llevo aparte

muxas gracias .
En línea

Akai


Desconectado Desconectado

Mensajes: 823



Ver Perfil
Re: Estoy Aprendiendo
« Respuesta #15 en: 17 Marzo 2011, 19:41 pm »

Visual studio 2010 express es un IDE (Entorno de Desarrollo Integrado) que trae entre otras cosas el compilador Visual C++ 2010 de Microsoft. Lo que quizá tu profesor quiera es que usando visual studio tengas mayor facilidad a la hora de utilizar librerías de windows. Eso no lo se.

En principio, si ya tienes algo instalado, y lo otro no supone una gran mejora no veo por qué haya que cambiar, salvo que exista alguna razón en concreto, como por ejemplo el debugger de Visual Studio.

Eso lo tendrías que hablar ya con tu profesor.

Por otro lado, si aprendes C++ estándar, en teoría debería dar igual si lo haces en Visual Studio, en Code::Blocks, en Eclipse con el plugin CDT o usando emacs y compilando con g++ (compilador de C++ de gcc). El problema está cuando, por ejemplo, aprendes en base a usar librerías de windows o de linux mientras aprendes C++ (véase el uso de conio como caso ejemplo de ello)
En línea

chocola

Desconectado Desconectado

Mensajes: 282



Ver Perfil
Re: Estoy Aprendiendo
« Respuesta #16 en: 17 Marzo 2011, 21:03 pm »

gracias por su respuesta

pero no me has dicho tu opinion personal  :o  :silbar:

que me aconsejas tu seguir el c++ o el visual studio  ?=¿
y cuales tu opinion sobre utilizar las librerias de windows o de linux
es mejor utilizar las librerias de windows o de linux?=¿


muxisimas gracias de antelación .
En línea

RyogiShiki


Desconectado Desconectado

Mensajes: 745


げんしけん - Hikkikomori FTW!!!


Ver Perfil WWW
Re: Estoy Aprendiendo
« Respuesta #17 en: 17 Marzo 2011, 21:08 pm »

gracias por su respuesta

pero no me has dicho tu opinion personal  :o  :silbar:

que me aconsejas tu seguir el c++ o el visual studio  ?=¿
y cuales tu opinion sobre utilizar las librerias de windows o de linux
es mejor utilizar las librerias de windows o de linux?=¿


muxisimas gracias de antelación .

Eso solo depende de Tí, quieres que tus programas sean portables? si así es entonces usa solo opciones Multiplataforma, pero en cambio ¿Quieres que tus aplicaciones solo funcionen en Windows? pues concentrate en WinAPI, o Solo en Linux?.

Por otro lado como partidario de las tecnologías libres siempre recomiendo GCC por la gran flexibilidad en las configuraciones y el basto soporte que tiene en la red. Pero entonces deberías usar los dos y analisar y definir en cual de los dos te sientes cómodo.

Saludos
En línea

Akai


Desconectado Desconectado

Mensajes: 823



Ver Perfil
Re: Estoy Aprendiendo
« Respuesta #18 en: 17 Marzo 2011, 21:27 pm »



que me aconsejas tu seguir el c++ o el visual studio  ?=¿
y cuales tu opinion sobre utilizar las librerias de windows o de linux
es mejor utilizar las librerias de windows o de linux?=¿

Vamos por partes (en principio, cada párrafo, respuesta a una de tus lineas):
Te recalco, C++ es un lenguaje de programación, Visual Studio es un entorno de desarrollo, nada que ver una cosa con la otra. Puedes "seguir el c++" en Visual Studio., o utilizar otros IDEs (Code::Blocks, Eclipse...). De la misma forma que en visual studio se pueden utilizar varios lenguajes, no únicamente C++

Mi opinión es que no se deberían utilizar librerías dependientes del Sistema Operativo cuando se enseña un lenguaje o se está empezando a enseñar programación.

Ver párrafo anterior. Una vez está eso claro... Yo únicamente he trabajo con las bibliotecas de Linux, y no tengo queja al respecto. Así que no puedo comparar unas y otras. En cualquier caso, si utilizas librerías de sistema, has de tener en cuenta que ya no la puedes utilizar en otro SO (Si usas las librerías de Windows, tu aplicación sólo podrá correr en windows. Si usas las de Linux, en sistemas compatibles con el estándar de Linux, y así)
En línea

anonimo12121


Desconectado Desconectado

Mensajes: 1.813


Ver Perfil WWW
Re: Estoy Aprendiendo
« Respuesta #19 en: 17 Marzo 2011, 23:23 pm »

Que asco dais me habeis quemado mi circuito con ese define y el incremento.
En línea

Página para ganar Bitcoins y Dinero: http://earnbit.hol.es/
Video de YouTube con Hack para el LoL: http://adf.ly/5033746/youtube-lolemuhack
Si quieres ganar dinero con adfly entra y registrate aquí -> http://adf.ly/?id=5033746
Páginas: 1 [2] 3 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Algunas Preguntas Sencillas (Recien estoy aprendiendo)
Programación Visual Basic
igustin 2 2,095 Último mensaje 23 Febrero 2013, 00:03 am
por engel lex
Estoy aprendiendo a programar web[Ayuda]
Desarrollo Web
jorpumon 2 2,844 Último mensaje 7 Agosto 2013, 23:12 pm
por moi_realine
estoy aprendiendo a programar en c++ y necsito ayuda con este programita
Programación C/C++
marcoaa 2 2,262 Último mensaje 22 Febrero 2015, 04:20 am
por rir3760
Estoy aprendiendo
Bases de Datos
Walle214 2 2,258 Último mensaje 18 Septiembre 2018, 03:56 am
por Machacador
Estoy aprendiendo en Desarrollo Web
Desarrollo Web
Walle214 0 1,360 Último mensaje 23 Septiembre 2018, 19:17 pm
por Walle214
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines