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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


  Mostrar Mensajes
Páginas: 1 2 3 4 5 6 7 8 [9] 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 ... 53
81  Foros Generales / Foro Libre / Re: Cuestionario político 2019 (España) en: 10 Marzo 2019, 05:04 am
Casi de izquierda y un casi nada de libertario, es el resultado que me ha dado pero vamos, que yo soy imparcial he respondido de la forma más objetiva y razonable. Y encima me han puesto que soy más de Ciudadanos (con un 70% de afinidad), UCD, Vox, ... y los últimos los partidos de izquierda, esto es algo incongruente.

Desde luego a Ciudadanos no voy a votar. Ya los voté y prometieron que no se aliarían con el PP y lo hicieron, y encima exigieron condiciones para gobernar con el PP que al final éste incumplió.

Posiblemente vote a Podemos pero tampoco es que me identifique con este partido.

Alguien debería crear el Partido del Sentido Común, seguramente triunfaría porque lo de los partidos políticos españoles actuales es de risa, sinceramente, ninguno me representa y si lo hacen los ideales de algunos no veas los miembros y representantes, vaya personajes.

82  Programación / Java / Re: Como pasar datos de un Jlist a un archivo .txt o .doc en: 8 Marzo 2019, 04:42 am
¿Qué contiene ese Jlist, texto? Si es así con simplemente recorrer el modelo que devuelve la función getModel() de Jlist con un for y guardarlo con FileWriter() sería suficiente. A la inversa para leer el fichero, un for y usando FileReader, y para introducir los elementos que has leído usa un array String y úsalo en el método setListData() del JList.

https://docs.oracle.com/javase/7/docs/api/javax/swing/JList.html
83  Programación / Programación C/C++ / Re: palabra class en la declaración de una variable.. en: 7 Marzo 2019, 20:23 pm
https://www.zator.com/Cpp/E4_13_2.htm
84  Programación / Programación C/C++ / Re: Preservacion del contenido de la memoria en contra de tiempo de vida de variable en: 7 Marzo 2019, 07:41 am
De antemano muchas gracias por tu tiempo , todo lo que anteriormente me mencionaste me ayudo mucho sin embargo aún sigo poniendo en duda esta parte. Entiendo que inicialmente el programa se incia en el main con lo cual en la pila se encuentra la funcion main con el respectivo almacenamiento de su variables sin embargo a la hora de hacerse un llamado a la función como 'h()' yo tengo entendido que realmente se crea un nuevo elemento en la pila que contiene informacion sobre la funcion 'h()' y ademas esa variable a la cual hago referencia mediante el apuntador global. El momento en donde entro en conflicto es cuando dices que la pila sigue ahi, te refieres a que una vez regresando al main la pila sigue ahi en el sentido de que la pila solo contiene la informacion relacionada con main o que ademas de seguir existiendo como primer elemento la informacion relacionada con 'main' se tiene que sigue existiendo todo lo relacionado con la funcion 'h()' que anteriormente fue llamada. El hecho de que sigan existiendo las dos funciones en las pila aun cuando ya se salio de la funcion 'h'[Mencionado que el puntero de la pila apunta a la funcion main] me hace dudar en el sentido de que:
A ver la información que exista de las funciones y variables en la pila permanece, de ahí que dijera que no se destruye(la prueba es contenido del puntero), lo que pasa es que la pila tiene un mecanismo que gestiona la pila como si fuera un array. Hay una serie de índices que indican a la máquina en que parte de la pila esta la información que necesita etc...

1. Puedo interpretar que si se tiene muchas funciones en un programa lo mas seguro es que como mencionas que la pila se genera desde el comienzo y solo es eliminada hasta el final entonces yo tengo una pila con 'n' elementos que representan a cada funcion que posiblemente puede ser llamada desde mi funcion main.

Un caso así sería la recursión, la pila va acumulando dinamicamente los valores en las sucesivas llamadas hasta tal punto que el indice de la pila sale del segmento, espacio reservado, y se genera el famoso stack overflow o desbordamiento de la pila.

2. En un programa donde se haga el llamado recursivo entonces el compilador deberia saber desde el comienzo del programa cuantos llamados a esa funcion se va realizar debido a que cada llamado a funcion debe tener distintos valores en sus variables y en dado caso rellenar la pila con informacion para cada uno de esos llamados lo que me lleva a que cuando termine de procesar todos los llamados a funciones no se va liberar/eliminar el elemento correspondiente a todas esas funciones en la pila.

No, cuando hay una función se cargan sus datos dinamicamente en la pila y el índice va sumando para que la siguiente información de la función no solape la anterior(se apila). Liberar espacio en la pila simplemente se traduce en mover el índice hacia atrás o restar. La función ya existe en el segmento de código pero un mecanismo interno va registrando que parte de la pila tiene asignada cada llamada.

3.Si no se libera entonces esta memoria que se vincula para cada llamado de funcion entonces yo podria estar seguro de que la zona de memoria que ocupo mi variable en alguna funcion no va poder ser modificada por una nueva demanda de memoria por parte del programa. En el caso de que realmente entonces si se vaya  liberando toda esa información vinculada a la funcion entonces caeria denuevo en cuenta de que es posible que realmente esa localidad en memoria que fue asignada para la variable 'a'  pueda ser modificada por alguien distinto al puntero, por ejemplo una asignación de memoria de una variable que fue utilizada en una función posterior.

Está explicado en los puntos anteriores, son registros que actúan como índices en la pila y diversos mecanismos que se me hacen difícil explicar y puedes hallar en documentación referentes a ensamblador, gestión de la pila, llamadas a funciones, etc..

Disculpame si soy algo terco, los casos anteriores solo son para la situación en la cual la pila sigue conservando todos los llamados a funciones aun cuando su llamado a finalizado que creo que es lo que he entendido  de tu anterior comentario.No descarto que tengas la razón pero en mi cabeza aún siguen sin encajar esas piezas. De nuevo te agradezco por tu tiempo.Todo lo anterior tambien lo digo por el hecho de que en los demas comentarios pareciera ser que la mayoria hagan inferencia de que no me puedo fiar de que la zona en donde apunta el apuntador  conserve el valor que yo asigne inicialmente en la funcion.
Si, ya veo que eres duro de molleja pero hasta aquí puedo ayudarte. Quizás deberías aprender ensamblador de cualquier arquitectura para comprenderlo mejor cosa que toma tiempo.

Bueno te deseo suerte con el tema, saludos.
85  Programación / Programación C/C++ / Re: Preservacion del contenido de la memoria en contra de tiempo de vida de variable en: 7 Marzo 2019, 04:15 am
1. En la memoria 'stack' yo tendria inicialmente a la funcion main con todas su variables y en la memoria global tendria al puntero.
En tú caso no se bien si tendrías algo en la pila porque main() lo declaras sin parámetros y el puntero está sin inicializar.

2. Entra a la funcion 'h()' por lo cual en la memoria 'stack' se ve almacenada la informacion de la funcion y con ella la variable 'a'.( El proyecto dentro de una empresa empieza y me asigna una oficina ).
Así es, en la pila los primeros elementos serían los conformados por el valor del entero, 333. Eso dependería del sistema, los bytes que ocupe en la pila, pero con un usigned char se vería más claro (1 byte).

3. El puntero apunta a la dirección de memoria que tiene la variable 'a' . ( Tengo una llave que me ayuda a abrir la oficina ).
Si, en ese momento se toma la referencia del primer elemento de la pila a.

Para probar ésto simplemente declara la variable pero no la inicialices y luego imprime su valor. Ejemplo:

Código
  1. #include <iostream>
  2.  
  3. char * p;
  4.  
  5. void fu() {
  6. char a;
  7. printf("a = %c", a); // Esta accion algunos compiladores no te lo permiten, ya que esta sin inicializar.
  8. a = 'A';
  9. p = &a;
  10. }
  11.  
  12. int main()
  13. {
  14. fu();
  15. printf("%c puntero %p\n",(*p), p);
  16. (*p) = 'F';
  17. fu(); // Verás que el valor de "a", aun sin inicializar ahora te da "F"...
  18. printf("%c puntero %p\n", (*p), p); // y sigue apuntando al mismo elemento.
  19.  
  20. return 0;
  21. }

4. Termina la función 'h()' y por lo tanto se regresa a la funcion main con lo cual para el programa tanto las variables 'a' como el segmento de memoria que ella ocupaba ya no esta ocupado aun que yo tenga un puntero global apuntado anteriormente a ella ( El proyecto finaliza pero se me permite seguir conservando la llave ).
Ojo, que la pila sigue ahí, ya que fue reservada al inicio del programa. La pila sólo es liberada al finalizar el programa.

5. Finalmente se puede dar que con el puntero final yo pueda seguir accediendo a ese segmento de memoria y succeda algo de lo siguiente:
      -El segmento de memoria sigue conservando el valor que yo asigne a la variable 'a'.
      -El segmento de memoria contenga valores que el compilador asigno cuando se salio de la funcion para representar que esta vacio.
      -Que yo pueda seguir viendo el mismo valor de 'a' por gran parte del programa pero que pueda que tenga la mala suerte que ese segmento de memoria llegue a ser ocupado por el valor de una nueva variable y que al yo seguir haciendo referencia con el puntero global  no me puedo fiar en que ese segmento de memoria siga conteniendo el valor de 'a' que se le asigno inicialmente.
Mientras no finalice el programa tú puntero conserva la referencia al primer elemento de la pila (ver ejemplo del tercer punto).

Finalmente entonces para asegurar que el puntero global pueda seguir conservando el valor 'a' sin problemas deberia hacer uso de una reservacion de memoria de manera dinamica con ayuda de new o malloc y asignarle el valor de la variable 'a'.
:-\ No, puedes conservar el puntero, no hay problema, pero cuando trabajas con punteros y quieres reservar memoria al usar new, alloc o lo que sea... el sistema te reserva memoria en otro segmento, no en el segmento de la pila. El segmento que te dan al reservar memoria dinámica es el que muestra en el vídeo como Heap o Monto. Trabajar con memoria dinámica o con la pila tiene sus ventajas y desventajas, por ejemplo con pila la gestión es más rápida pero en contra tienes que suele estar limitada a un tamaño pequeño, por ejemplo un mega o algo así (depende). La memoria dinámica siempre debes liberarla cuando no la uses porque podrías quedarte sin memoria.
86  Programación / Java / Re: Android - Componente ListView (grabar sus datos con la clase SharedPreferences) en: 7 Marzo 2019, 00:46 am
Antes que nada decirte que la presentación del código es nefasta, ilegible, no puedes amontonarlo así como si fuera basura. Me ha costado sudores saber que coño código era eso.

1) Tengo entendido que en los métodos setOnItemLongClickListener y setPositiveButton se envía cómo parámetro un método anónimo de las clases respectivas (AdapterView.OnItemLongClickListener y DialogInterface.OnClickListener). ¿Estoy en lo correcto?
No, el uso de estructuras clases, interfaces, funciones, etc.. anónimas se usa cuando se quiere implementar código que únicamente se usará ahí, por lo contrario, si haces uso del mismo código en otras partes del programa lo suyo es crear una función, clase o lo que sea e instaciar o lo que sea. Además no queda legible.

2) Si los métodos anónimos no le pertenecen a la clase a la cual le pertenece el atributo "datos", ¿cómo es posible que estos métodos tengan acceso a los atributos de una clase ajena?

3) Suponiendo que de alguna forma los métodos anónimos si tienen acceso a la clase a la cual le pertenece el atributo "datos", ¿cómo es posible que el método anónimo de la clase DialogInterface.OnClickListener tenga acceso a la variable local "posicion" del método anónimo de la clase AdapterView.OnItemLongClickListener?
Pues te contesto a las dos con una sola respuesta; por medio de los argumentos. Al dispararse el evento en el objeto lv1, este llama a la función que tienes sobreescrita, onItemLongClick() y le pasa por parámetro los datos intrínsecos del objeto. Aparte para que posición sea visible en todo el ámbito, incluso de otros ámbitos dentro de éste, el código usa la instrucción final.

PD Si el código estuviera bien tabulado con saltos de línea al final de cada punto y coma se vería más claro.
87  Programación / Java / Re: Ejercicio JAVA en: 7 Marzo 2019, 00:22 am
Dile al profesor que deje la droga y explique mejor la tarea, que encima ni el ejemplo que pone coincide con lo explicado y los datos de la tabla.

Citar
Numírico se escribe "53134" y en Enteral "46952"

ENTRADA || SALIDA
5 6               19
2 71              71
3 556            555
140 19           71
87 555          556
71 3              C?
140
2
87
2
3
4

 :-\
88  Programación / PHP / Re: ordenar tabla en: 7 Marzo 2019, 00:01 am
Con Ajax quedaría bien pero en vista de tus pobres conocimientos te recomiendo que lo hagas en plan fácil, pon en la cabecera de la tabla, en la cual usas tr en vez th, a cada campo del título pones un vínculo, etiqueta HTML a, y el vínculo que apunte a la página Php que muestras pero le pasas un parámetro por ejemplo así :

Código
  1. ...
  2. <th><a href="https://mipagina/tabla?ordenar=id">Id</a></th>
  3. <th><a href="https://mipagina/tabla?ordenar=nombre">Nombre</a></th>
  4. <th><a href="https://mipagina/tabla?ordenar=genero">Género</a></th>
  5. ...

y luego en Php lo despachas con una consulta MySQL en base al parámetro.

https://www.w3schools.com/php/php_superglobals.asp
89  Programación / Programación C/C++ / Re: Necesito ayuda para hacer un programa de c++ en: 6 Marzo 2019, 23:39 pm
Son 7 filas nada más, mejor usa if else .
90  Programación / Programación C/C++ / Re: Ayuda con interfaces gráficas en C++ en: 6 Marzo 2019, 23:30 pm
Te lo resumo en tres palabras : Programación Orientada a Objetos.

Crea una clase estática que gestione la parte gráfica. En teoría si el resultado de las operaciones que realiza tú programa son puras matrices simplemente crea un método que tome esas matrices como argumento y simplemente lo convierta a algo gráfico. De esa forma además te permite portar más fácilmente a otras plataformas y entornos.

Páginas: 1 2 3 4 5 6 7 8 [9] 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 ... 53
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines