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

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


  Mostrar Mensajes
Páginas: 1 [2] 3 4 5 6 7 8 9
11  Programación / Java / Re: Hola... ¿Este comportamiento es falla del socket? en: 12 Enero 2017, 22:55 pm
Pues yo empecé a mirar los sockets en java en mi clase el otro dia y obtuve ese error de "connect refused" porque ejecutaba el programa cliente antes que el servidor. Prueba a ejecutar antes el servidor y luego el cliente.
12  Programación / Java / Acceder a una pagina automaticamente que necesita registro en: 12 Enero 2017, 22:51 pm
Con la clase URL es bastante facil obtener el fichero HTML de una determinada direccion, pero ¿Que pasa si necesitas registrarte antes en otra pagina? Es decir supongamos que si me registro en una pagina web se me carga una pagina HTML pero si no lo hago se me carga otro HTML aun siendo en ambos casos la misma direccion url. ¿Como puedo obtener ambos ficheros HTML? ¿Como puedo ingresar como un determinado usuario automaticamente? Y sobre todo... ¿Como puedo rellenar automaticamente los campos de algun formulario y enviarlo, tambien automaticamente? En algunos casos los datos del formulario se envian a traves de la direccion url, por lo que en esos casos seria facil, Pero ¿que hay de los otros casos en los que no es asi?
13  Programación / Programación C/C++ / Re: ejercicio abecegrama C error en: 12 Enero 2017, 21:04 pm
Para empezar, lo tienes mal identado. Asi es casi imposible saber donde empieza y termina un bucle o un if...
Ademas, creo que no estaria de mal añadir algunos comentarios para aclarar lo que haces en el codigo.
Código
  1. #include<stdio.h>
  2. #include<conio.h>
  3. #include <ctype.h>
  4. int main (){
  5. //cadenacont[28] es un array que contiene el numero de apariciones de cada letra
  6. int cadenacont[28],i,j;
  7.  
  8. //cadena[500] es el array que contiene la cadena que queremos comprobar
  9. //su valor lo introducimos por teclado
  10. char cadena[500];
  11.  
  12. //cadenabc[] es un array que contiene todas las letras del abecedario
  13. char cadenabc[] ="abcdefghijklmnñopqrstuvwxyz";
  14.  
  15. printf("Introduzca cadena\n");
  16. scanf("%s",cadena);
  17.  
  18. //ponemos en minuscula todas las letras que hemos introducido por teclado
  19. for(i = 0; cadena[i]!='\0'; i++)
  20. cadena[i] = tolower(cadena[i]);
  21.  
  22. for (j=0; j<28; j++){
  23. cadenacont[j] = 0;
  24. }//contador a 0
  25.  
  26. //cada vez que se encuentra una letra del abecedario incrementamos el numero de apariciones del mismo
  27. for(i=0; cadena[i]!='\0';i++){//sumar caracteres dos bucles anidados
  28. for(j=0; j<27; j++){
  29. if(cadena[i]==cadenabc[j]){
  30. cadenacont[j]++;
  31. break;
  32. }
  33. }
  34. }
  35.  
  36. //comprobamos que el numero de apariciones de cada letra es 1
  37. for(j=0;j<=27;j++){
  38. if(cadenacont[j]==1){
  39.  
  40. }
  41. else{
  42. break;
  43. }
  44. }//comprobar si es abecegrama
  45.  
  46. if(j>=27){
  47. printf("abecegrama");
  48. }
  49. else{
  50. for(i=0; i<27; i++){
  51. printf("%c = %d\n",cadenabc[i],cadenacont[i]);
  52. }
  53. }
  54. getch();
  55. }
  56.  
De todos modos, creo que deberia de funcionar, aunque desde luego hay muchas muy mejores formas de hacer este ejercicio.
Si te da algun error, describelo. Di que es lo que te pasa. ¿Sale alguna salida extraña por pantalla? ¿O simplemente te dice, por ejemplo, que son abecedegramas algunos strings que en realidad no lo son (o viceversa)?
Aunque no creo que tenga mucho que ver, el metodo main() retorna un int, asi que al final tienes que poner return 0;
14  Programación / Programación C/C++ / Re: [AYUDA] Dos dudas para mostrar por pantalla en: 7 Enero 2017, 19:33 pm
En primer lugar aqui no le hacemos los deberes a nadie, solo respondemos dudas.
En segundo lugar:
-Para mostrar el guion una determinada cantidad de veces, puedes crear un array con capacidad para guardar la cantidad de guiones que sea y llenarlo con guiones, y despues recorrerlo imprimiendo cada elemento del array, o puedes crear un array con un elemento mas y ponerle al final el caracter nulo e imprimir directamente el array como si de un string se tratase. De hecho, puedes incluso imprimir un guion la cantidad de veces que necesites.
-Para el otro ejercicio, vas imprimiendo los numeros de uno en uno y si el numero que vas a imprimir es cero imprimes espacio de lo contrario imprimes el numero.
15  Programación / Java / Re: ¿Por que solo hay que importar una clase cuando la escribes en el codigo? en: 22 Diciembre 2016, 22:53 pm
He formulado la misma pregunta en stack overflow para ver si ellos me entienden y me han respondido algo que no tiene nada que ver con tu explicacion.
Parece ser que cuando pones "import paquete.Clase" lo que estarias haciendo en C seria algo asi como "#define Clase paquete.Clase"
16  Programación / Java / Re: ¿Por que solo hay que importar una clase cuando la escribes en el codigo? en: 22 Diciembre 2016, 19:49 pm
Todos los objetos al heredar de Object contiene el metodo getClass() con el cual se puede identificar a que clase pertenece
¿Y como puedes saber que el objeto tiene una funcion llamada getC() con getClass()? La unica forma que se me ocurre es haciendo uso de una cosa que se llama "Reflection", pero obviamente no creo que sea asi como se hace, ya que de esa forma se consume muchos mas recursos.
17  Programación / Java / Re: Por qué se declaran atributos de tipo private y no de tipo public en: 22 Diciembre 2016, 19:45 pm
todas los atributos por defecto son de tipo publica, por lo que se puede llegar a ellos desde cualquier programa para obtener o alterar su valor.
Te equivocas, por defecto son de tipo "package", que significa que ese atributo (o metodos, si estos tampoco se declaran con public o private o protected) puede ser accedido desde cualquier clase que este dentro del mismo paquete. Una cosa curiosa del tipo de dato "package" es que la unica forma de declararlo como tal es omitiendo el tipo de acceso (public, private o protected, como ya he dicho). De modo que si no se escriben ninguna de estas 3 palabras solo entonces es package.
me gustaría saber porque se declaran de esta manera, y no de forma publica. Yo he llegado a la conclusión de que puede ser por seguir el paradigma, segmentar el programa, en métodos, pero no se si es por eso.  :-[
Lo normal no solo es declararlo de forma private los atributos sino ademas crear un metodo getAtributo() y setAtributo() para obtener el atributo y cambiar el valor del mismo.
Antes que nada tienes que entender que java es completamente POO, y la POO se hizo mas que nada para trabajar en equipo. Cada programador crea una clase de forma independiente y al final las combinan todas para formar el programa mas facilmente.
La idea mas que nada es la siguiente: Imaginate que en un proyecto ENORME se utiliza en muchiiisimos sitios un atributo de una clase. Ahora imaginate que, por alguna razon, cada vez que se accede a dicho atributo necesitas ejecutar una funcion o cambiar algunos datos de la misma clase. Si el atributo fuera publico esto seria un problemón, ya que tienes que adaptar el codigo de 300 clases en donde quiera que sea que se haya utilizado ese atributo para cada vez que lo haga hacer lo que sea que se tenga que hacer. Bueno pues si en vez de eso hicieras el atributo privado e hicieras los metodos getter y setter (asi es como se le llaman a los metodos setAtributo y getAtributo) entonces solamente tendrias que modificar el metodo getter y voilá, ya está hecho.
También es util para control de errores: supongamos que tienes un atributo de tipo int al que solo te interesa que se le de un valor entre 5 y 20. Entonces dentro del setter tendrias que mostrar un mensaje de error y terminar el programa si el valor que se le pasa por parametro no cumple la condicion de que esté entre 5 y 20. (No se si habrás visto el control de errores con el bloque try catch y los throw que sirven para controlar cuando se produce un error como meter un valor que no este entre 5 y 20 en este caso, pero lo suyo seria utilizar throw)
18  Programación / Java / Re: ¿Por que solo hay que importar una clase cuando la escribes en el codigo? en: 22 Diciembre 2016, 19:28 pm
cuando llamas a getB() te retorna la referencia donde se encuentra el objeto pero no sabe de que tipo es, lo unico que puedes hacer es importar la clase a la que pertenece o  asginarlo a una variable de tipo Object que es la clase la cual todos los objetos heredan.
Si no reconoce la clase, ¿Como es posible ejecutar un metodo de la misma sin importarla? Como en este caso, que seria el metodo getB(). ¿Como reconoce este metodo sin reconocer la clase?
19  Programación / Java / Re: ¿Por que solo hay que importar una clase cuando la escribes en el codigo? en: 22 Diciembre 2016, 19:08 pm
Acabo de editar el post para que me entendais mejor.
Como ha comentado miltonprogramador, si dejas un ejemplo practico del cual viene tu duda podriamos darte una axplicacion.  Ya que por ejemplo:
Código
  1. A a = new A();
  2. C c = a.getB().getC();
No es posible si declaras una funcion que retorne un objeto tipo String como en el siguiente ejemplo que dare.
Supongamos que tengo 3 clases: A, B y C, y que la clase A tiene un metodo: getB(), que devuelve un objeto de la clase B, y que B tambien tiene un metodo, getC(), que devuelve un objeto de la clase C.
¿Que parte de "la clase A tiene un metodo: getB(), que devuelve un objeto de la clase B" no entiendes?
Si estoy diciendo que devuelve un objeto de la clase B, ¿Por que me saltas con que no es posible si retorna un objeto de tipo String? ¿No estoy diciendo que retorna un objeto de la clase B?  >:( :P
20  Programación / Java / ¿Por que solo hay que importar una clase cuando la escribes en el codigo? en: 21 Diciembre 2016, 20:47 pm
Supongamos que tengo 3 clases: A, B y C, y que la clase A tiene un metodo: getB(), que devuelve un objeto de la clase B, y que B tambien tiene un metodo, getC(), que devuelve un objeto de la clase C.

Si hiciera lo siguiente:
Código
  1. A a = new A();
  2. B b = a.getB();
  3. C c = b.getC();
Tendria que importar la clase A,B y C. Sin embargo, si yo hiciera esto:
Código
  1. A a = new A();
  2. C c = a.getB().getC();
No tendria que importar la clase B. ¿Por que?
Si es porque la clase B ya importa la clase C, entonces ¿Por que en el primer caso tengo que importarla si ya viene incluida al incluir C?

EDIT:Voy a poner la definición de las clases A, B y C para que me entendáis mejor:
Código
  1. package paquete_a;
  2.  
  3. import paquete_b.B;
  4.  
  5. public class A{
  6.    public B getB(){
  7.        return new B();
  8.    }
  9. }
Código
  1. package paquete_b;
  2.  
  3. import paquete_c.C;
  4.  
  5. public class B{
  6.    public C getC(){
  7.        return new C();
  8.    }
  9. }
Código
  1. package paquete_c;
  2.  
  3. public class C{
  4.    //Esta clase no tiene nada
  5. }
Código
  1. package test;
  2.  
  3. import paquete_a.A;
  4. import paquete_b.B;
  5. import paquete_c.C;
  6.  
  7. public class Test_1{
  8.    public static void main(String[] args){
  9.        A a = new A();
  10.        B b = a.getB();
  11.        C c = b.getC();
  12.    }
  13. }
Código
  1. package test;
  2.  
  3. import paquete_a.A;
  4. //No es necesaria la importación de la clase B
  5. import paquete_c.C;
  6.  
  7. public class Test_2{
  8.    public static void main(String[] args){
  9.        A a = new A();
  10.        C c = a.getB().getC();
  11.    }
  12. }
EDIT 2: Vamos a suponer que en C++ tenemos 3 archivos headers (esos que tienen la extension ".h"): Uno para la clase A, otro para la clase B y otro para la clase C, que basicamente seran iguales que las clases que acabo de mostrar, pero con la unica diferencia de que estan escritos en C++. Supongamos tambien que tenemos 2 archivos: test1.cpp y test2.cpp, que solo tienen un metodo main que simplemente hacen lo mismo que el metodo main de la clase Test_1 y Test_2 de java que he mostrado antes para ver como seria un ejemplo. Bueno pues en C++ cuando tu incluyes un archivo (En este caso, algo como #include A.h ó #include B.h) lo que realmente pasa es que se "inserta" tal cual el archivo encima de aquel en el que lo incluyes, de modo que si un archivo solo tiene el siguiente codigo:
Código
  1. #include <stdio.h>
  2.  
  3. int main(
y otro incluye al anterior y solo tiene el siguiente codigo:
Código
  1. ){
  2.    printf("Hola Mundo");
  3. }
Compilará sin problemas y si ejecutamos nos mostrará el mensaje "Hola Mundo".
Ahora bien, si en el archivo que contiene la clase A incluyo el archivo de la clase B, y en el archivo que contiene la clase B incluyo el archivo que contiene la clase C, entonces el resultado seria el mismo que si hubiese creado un archivo con las 3 clases. Si en el archivo test1.cpp incluyo el archivo que contiene la clase A, entonces nisiquiera tendre que incluir el archivo que contiene la clase C para que el codigo equivalente de C++ de este trozo de codigo
Código
  1.    A a = new A();
  2.    B b = a.getB();
  3.    C c = b.getC();
Se pueda compilar y ejecutar sin problemas. Sin embargo con java no pasa esto, sino que algunas veces (Como el primer caso que muestro arriba del todo) hay que importar la clase B, y en otros (Como el ejemplo de codigo que viene inmediatamente despues) no es necesario para ejecutar getC(). ¿Por que? ¿Por que unas veces si y otras veces no?
Páginas: 1 [2] 3 4 5 6 7 8 9
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines