• Martes 13 de Mayo de 2025, 20:07

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - Enko

Páginas: 1 ... 23 24 [25] 26 27 ... 77
602
La taberna del BIT / Re: Mala Suerte?
« en: Martes 7 de Noviembre de 2006, 23:37 »
Cita de: "ibito"
No es mala suerte, son cosas que pasan...
Y los de la cochera no se hacen cargo?

603
Pascal / Re: Programa Numero Perfecto
« en: Martes 7 de Noviembre de 2006, 23:35 »
y que es lo que no te sale?
Leer desde el archivo? Encontrar si el numero leido es perfecto?
En donde tenés el problema?

604
Trucos / Contruyendo Tabla Periodica
« en: Lunes 6 de Noviembre de 2006, 21:27 »
Este post, es la respuesta en base a un mail que me envio Deiv.
La idea de este post, es mostrar y dar algunas ideas de como organizar un proyecto grande de contruccion de una tabla periodica didactica.

Lo primero que se debe considerar, son las clases de los elementos de las tablas periodicas, estos pueden ser metalesy no metales. Asi pues conformariamos un tipo de dato llamado Grupo así:
Código: Text
  1.  
  2. TGrupo = (gMetal, gNoMetal); //g minuscula quiere decir grupo
  3.  
  4.  
A su vez, los dos grandes gurpos se dividen en varios subgrupos; para los metales estan los alcalinos, alcalinos terreos... y para los no metales estan los halogenos, carbanoides, nitrogenoides....
Hay que tener cuidado en no tener asignado un subgrupo a un elemento que pertenece a otro grupo cosa que puede ser hecha usando una propiedad, desgracadiamente siempre uno esta ante el error de asignar un subgrupo metalico incorrecto a un metal,eso solo se puede prevenir prestando mucha atencion :P.
Código: Text
  1.  
  2. TSubGrupo = (sgAlcalino, sgHalogeno, sgAlcalinoTerreo, sgCarbonoide);
  3. //"sg" quiere decir sub_grupo
  4.  
  5.  
Asi, para seguir una estructura, nuestra Clase de un Elemento quimico quedaria por ahora en:
Código: Text
  1.  
  2. TElemento = class
  3.    private
  4.      FSubGrupo: TSubGrupo;
  5.     procedure SetSubGrupo(const Value: TSubGrupo);
  6.    public
  7.      Grupo: TGrupo;
  8.      property SubGrupo: TSubGrupo read FSubGrupo write SetSubGrupo;
  9.    end;
  10. ........
  11. procedure TElemento.SetSubGrupo(const Value: TSubGrupo);
  12. begin
  13.   //EsMetal() es una funcion que devulve true si el subrupo pertenece a los metales...
  14.   //hace muchos ifs nada mas :P
  15.   if (Grupo=gMetal) and (not EsMetal(Value)) then
  16.   begin
  17.      ERangeError.Create('Esta asignano a un Metal un subgrupo de un NoMetal!')
  18.      Exit;
  19.   end
  20.    else if (Grupo=gNoMetal) and (EsMetal(Value)) then
  21.   begin
  22.      ERangeError.Create('Esta asignano a un Metal un subgrupo de un NoMetal!')
  23.      Exit;
  24.   end;
  25.   FSubGrupo := Value;
  26. end;
  27.  
  28.  

Ahora vamos con las propiedades necesarias basicas empezando primero por las sencillas:
Código: Text
  1.  
  2. TElemento = class
  3.    private
  4.      FSubGrupo: TSubGrupo;
  5.     procedure SetSubGrupo(const Value: TSubGrupo);
  6.    public
  7.      NumeroAtomico: Byte;
  8.      MasaAtomica: Single;
  9.      PesoAtomico: Single;
  10.      Densidad: Single;
  11.      PuntoFusion: Single;
  12.      PuntoEbullicion: Single;
  13.      Simbolo: String[2]; //H, He, Li, Be, B, C, N, O, F, Ne....
  14.      Electronegativiad: Single;
  15.      Grupo: TGrupo;
  16.      property SubGrupo: TSubGrupo read FSubGrupo write SetSubGrupo;
  17.    end;
  18.  
  19.  
La que me falto es el Nro. Oxidacion o como antes se le decia, el Numero de Valencia.
Este es particular porque son varios numeros segun el elemento, la cantidad de esos numeros puede ser 1,2,3,4, 5 y 0 para los gases inhertes.
El valor ronda entre -3 y  +7
Lo mas facil seria tener un array con 5 elementos y un numero que indique cuantos valores de ese array son validos.
Código: Text
  1.  
  2. CantidadNrosOxidacion: Byte;
  3. NroOxidacion: array[1..5] of ShortInt;
  4.  
  5.  
Por ejemplo, el Hidrogeno tiene un solo numero de oxidacion, por eso:
CantidadNrosOxidacion = 1;
NroOxidacion[1] = 1;
El Cloro tiene 5:
CantidadNrosOxidacion = 5;
NroOxidacion[1] = -1;
NroOxidacion[2] = 1;
NroOxidacion[3] = 3;
...
respecto a las terminaciones para la formacion de sales que son oso, ico y lo prefijos  hipo y per
La cosa este respecto de CantidadNrosOxidacion:
Si son 2
entonces para el NroOxidacion[1] se usa iso (el menor si no me equivoco)
y pra NroOxidacion[2] se usa ico
Si son 4
para el NroOxidacion[1] hipo-oso
....esta parte me la salteo, es como en el caso anterior pero con el numero  2,3
para el NroOxidacion[4] per-ico

Como saber con que valencia actua cada elemento?
Con el que quiera, todo depende de las circunstancias de la reaccion quimica, en el caso del hiero el numero oxidacion puede ser 2 o 3 por lo que forma con oxigeno FeO y Fe2O3. Generalmente se forman las dos en distintas proporciones.

cargando datos
Lo mas facil seria tener archivos con los datos para cada elemento quimico, como ejemplo usaremos archivos de text. El titulo del archivo de texto es comodo que sea el numero atomico: 1.xt, 2.txt, 3.txt.....
El contenido seria algo asi (";" representa comentarios):
Citar
;simbolo
He
;grupo: 0 metal, 1 no metal
1
;nro atomico
1
;peso atomico
1.00079
;cantidad numeros oxidacion
1
;nro oxidacion
1
;densidad
0.071
;etc..............
Asi que tendriamos agregar a nuestra clase de TElemento un metodo para cargar datos desde un archivo de texto.
Código: Text
  1.  
  2.  TElemento = class
  3.    private
  4.      FSubGrupo: TSubGrupo;
  5.     procedure SetSubGrupo(const Value: TSubGrupo);
  6.    public
  7.      NumeroAtomico: Byte;
  8.      MasaAtomica: Single;
  9.      PesoAtomico: Single;
  10.      Densidad: Single;
  11.      PuntoFusion: Single;
  12.      PuntoEbullicion: Single;
  13.      Simbolo: String[2]; //H, He, Li, Be, B, C, N, O, F, Ne....
  14.      Electronegativiad: Single;
  15.      Grupo: TGrupo;
  16.      property SubGrupo: TSubGrupo read FSubGrupo write SetSubGrupo;
  17.      **********
  18.      procedure LoadFromFile(const FileName: String);
  19.    end;
  20.  
  21.  
Ahora simplemente se podria hacer
Código: Text
  1.  
  2. TTablaPeriodica = class
  3. public
  4.   ........
  5.    Elemento: array[1..103] of TElemento;
  6.  ..........
  7.     constructor Create;
  8. end;
  9. constructor TTAblaPeriodica.Create;
  10. begin
  11.   inherited Create;
  12.   for i:=1 to 103 do
  13.       Elemento[i].LoadFromFile(IntToStr(i) + '.txt');
  14. end;
  15.  
  16.  
Para Aceder a cualquier elemento de la tabla, es mediante el numero atomico:
Código: Text
  1.  
  2. WriteLn(TAblaPeriodica.Elemento[1].Simbolo); //da como salida: "H"
  3.  

PD: Deiv, espero que esto te de una pauta, si siguies teniendo dudas, puedes preguntar tranquilamente en este post, inclusive, si lo deseas, adjunta aqui el PDF que me mandaste con las preguntas.

Saludos

605
La taberna del BIT / 88888 Mensajes Escritos
« en: Viernes 3 de Noviembre de 2006, 23:10 »
Me pareció interesante el numero nomas....

606
La taberna del BIT / Re: Mi Juego "in-development"
« en: Miércoles 1 de Noviembre de 2006, 16:06 »
Cita de: "su -"
:scream: No me gusta la calidad del video, se ve un poco mal y tienes que arreglar algo, la sangre no se ve.
 :whistling:
que video, ¿no era un juego  con super texturas?

607
La taberna del BIT / Re: El Globo, El Ingeniero Y El Jefe
« en: Miércoles 1 de Noviembre de 2006, 15:59 »
Cita de: "JuanK"
Cita de: "su -"
Ahora si tomamos en cuanta que el tipo del globo estava a 40 metros, del ingeniero y diria que por lo menos a unos 15 nudos (corriente de aire) el ingeniero lo toco correr y gritar fuerte para que este tipo lo escuchara... creo que no estavan en una ciudad, de lo contrario... el globo estava atado a algo  :huh:  bueno me tire el chiste pero tenia que decirlo...  <_<
En ningún lado decía que fuera en el planeta tierra,
de hecho ni siquiera decía que fuera en este universo, por lo que las leyes de la física fácilmente podrían ser otras.  :whistling:
Juank, ¿trabajas como alpha tester?
Es lo que hubiera hecho un probador de software. :devil:

TODOS  IGNORAN  LOS BUGS  :P :whistling:  :P

608
C/C++ / Re: Implementacion Ping???
« en: Martes 31 de Octubre de 2006, 22:41 »
Código: Text
  1.  
  2. ping www.foros.solocodigo.com >>salida.txt
  3.  
  4.  
Crea un archivo llamado salida.txt en el directorio actual con toda la salida del ping

609
Delphi / Re: Inspectorbar Tms (outlookbar) Por Código
« en: Domingo 29 de Octubre de 2006, 17:01 »
Nunca trabajé con componentes que no sean los que trae delphi en las pesatañas de Standart, Extra, Dialog, System. (salgo delphiX). :unsure:

610
Delphi / Re: Como Grabar Mi Aplicación Con Otro Icono
« en: Viernes 27 de Octubre de 2006, 22:04 »
En el menu de Delphi:
Project>>Options>>Application>>Icon

611
Pascal / Re: Presentacion Mr. Pascal
« en: Viernes 27 de Octubre de 2006, 15:48 »
Hola y  bienvenido al foro. :lol:

612
Delphi / Re: Ventajas E Inconvenientes De Vcl.net
« en: Viernes 27 de Octubre de 2006, 14:17 »
la VLC.NET no tiene chiste. Las aplicaciones ocupan lo mismo que con la VCL comun, y solo corren bajo la framework  de Windows  :scream: Al fin y al cabo, el resultado es el mismo, aplicaciones que ocupan bastante espacio y solo corren bajo windows.
¿Hay alguna ventaja de VCL contra la VCL.NET? que yo sepa no, la aplicaciones .NET la ventaja que tienen es solo si estan escritas con BCL de Microsoft, así ocupan mucho menso espacio ya que usan el nucleo de la framework.

613
C# / Re: Instalacion de Visual Studio
« en: Miércoles 25 de Octubre de 2006, 16:56 »
Si te corre WinXP no creo que tengas problemas. (salgo un poco de retrazo :P)

614
Pascal / Re: Ayuda Porfavor
« en: Martes 24 de Octubre de 2006, 17:32 »
linea horizontal:
Código: Text
  1.  
  2. for i:=1 to 20 do
  3. begin
  4.   GotoXY(i,2);
  5.   Write('*');
  6. end;
  7.  
  8.  

linea vertical
Código: Text
  1.  
  2. for i:=1 to 20 do
  3. begin
  4.   GotoXY(2,i);
  5.   Write('*');
  6. end;
  7.  
  8.  

615
Delphi / Re: Inspectorbar Tms (outlookbar) Por Código
« en: Martes 24 de Octubre de 2006, 15:08 »
Como no conozco el componente que usas..... te lo ejemplifico con un  TButton.
La idea es que crees un elemento con el constructor Create con los parametros que te pida, y luego le asignas el evento, que tiene que ser como te lo escribo abajo.
Código: Text
  1.  
  2. TForm1 = class TForm
  3. public
  4.    botonPrueba: Button;
  5.    procedure miEventeo(Sender: TObject);
  6. end;
  7.  
  8. ....
  9.  
  10. botonPrueba := Button.Create(nil); //AOwner puede ser nil, self, Form1....
  11. botonPrueba.Parrent := Form1; //si o si, form1, o form2, es donde se muestra
  12. botonPrueba.Top, Left, Button, ...... lugar
  13. boton.OnClick := miEvento; //ABAJO DEFINO miEvento
  14.  
  15. procedure miEvento(sender: TObject);
  16. begin
  17. if Sender is TButton then
  18. begin
  19.   TButon(Sender).Caption := 'boton presionado';
  20.    ShowMessage('presionaste un boton');
  21. end;
  22. end;
  23.  
  24.  
si quieres crear cantidad indefenida de butones o de lo que sea......
Código: Text
  1.  
  2. with TButton.Create do
  3. begin
  4.   Parrent := Form1;
  5.   Top := 50;
  6.   Left......
  7.   OnClick := miEvento;
  8. end;
  9.  
  10.  
algo de info al respecto:
http://mc-computing.com/Languages/Delphi/D...Components.html

616
C# / Re: Copiar Clases
« en: Sábado 21 de Octubre de 2006, 18:28 »
busca informacion sobre constructores de copia.
http://msdn2.microsoft.com/en-us/library/ms173116.aspx

617
La taberna del BIT / Re: Que Hacen En Sus Tiempos Libres ?
« en: Viernes 20 de Octubre de 2006, 17:01 »
Citar
Y lo más importante wub.gif Paso tiempo con mi novia wub.gif
Eso no es pasatiempo, es indispensable. (como dormir, comer..) :P

618
Dudas informáticas / Re: Fondo Transparente En Las Imagenes.
« en: Viernes 20 de Octubre de 2006, 16:44 »
GIF, y tambien PNG tiene transparencia.
Lo que si, no conozco ningun programa que cree transparencias.

619
La taberna del BIT / Re: Que Hacen En Sus Tiempos Libres ?
« en: Viernes 20 de Octubre de 2006, 14:19 »
Yo justamente.... además de estudiar para la Facultadad de Derecho (Abogacia), trabajar a la mañana en un negocio de venta atendiendo al publico...
...en mis ratos libres programo o estudio algo de programacion, sino toco guitarra. Lástima que ahora no tengo tiempo para aprender temas nuevos, pero con los que se, todavía no me aburro. (la mayoria son de Bach).
resumiendo: Se podría decir que en mis ratos libres programo o toco guitara

620
C# / Re: Copiar Clases
« en: Jueves 19 de Octubre de 2006, 15:08 »
lo que pasa es que en esa asignacion estas asignando  a "d" el objeto a que referencia "da".
Deberias hacer:
Código: Text
  1.  
  2. class prueba
  3. {
  4. datos d;
  5. prueba(datos dd)
  6. {
  7.    d = new datos();
  8.    this.d.precio=dd.precio;
  9. }
  10. }
  11.  
  12.  

621
Software / Re: Conversor De 3gp A Mpg ???
« en: Jueves 19 de Octubre de 2006, 14:56 »
VLC puede convertir formatos, en algun lado está la opcion cuando  cargas la peli.

622
Software / Re: Conversor De 3gp A Mpg ???
« en: Miércoles 18 de Octubre de 2006, 22:05 »
Cita de: "shakka"
Para verlo, solo instalada... es mas solo descomprime portable VLC y listo.
El VLC es el mejor reproductor de video que conozco. Reproduce cualquier cosa.
Sino, puedes usar el Reproductor multimedia de Nokia, es gratuito y lo podes bajar en la página oficial.
Si ya entendí, tenés un LG pero el formato 3gp es el mismo :P

623
Pascal / Re: Conseguir Pascal
« en: Miércoles 18 de Octubre de 2006, 22:03 »
Si no están los archivos y TURBO.EXE o TPX.EXE se ejecutan, entonces no hay problema. (esos archivos estarian en la carpeta BIN con las dos ejecutables citadas arriba)

Si buscas programar para Windows y conoces la WinAPI32 puedes usar el Free Pascal para Windows. Sino, tienes la opcion de Delphi que es un RAD para desarollar aplicaciones de todo tipo para Windows.

624
Hardware / Re: Mi Pc No Arranca
« en: Miércoles 18 de Octubre de 2006, 14:59 »
Podés arrancar desde un CD Boteable?

625
Delphi / Re: Crecimiento Del Ejecutable Con Archivos Res
« en: Martes 17 de Octubre de 2006, 21:22 »
Respecto a la base de datos.... mh... podría ser, pero aumentarias la dependencia de tu programa con el BorlandDatabaseEngine (BDE) de Borland.

Entre usar un record y una clase, la diferencia sería que cuando tengas que modificar algo con un procedimiento en un record harías:
Código: Text
  1.  
  2. ModificarDato(Elemento[1].Dato);
  3.  
  4.  

y si es OOP poria ser algo asi:
Código: Text
  1.  
  2. TablaPerdica.Elementos[1].Dato;
  3.  
  4.  
Donde Dato es una propiedad!
Código: Text
  1.  
  2. TElemento = class
  3. private
  4.   FDato: Integer;
  5. public
  6.   propiety Dato read FData write SetData;
  7.   // o read FData write SetData;
  8.  
  9.  
Y claro, la tabla periodica seria una clase mas como lo mestre arriba:
Código: Text
  1.  
  2. TTablaPerdica = class
  3. private
  4.    FElementos: array [1..120] of TElemento;
  5.  public
  6.     propiety Elemento[X: Integer]: TElemento read GetElemento write SetElemento;
  7. end;
  8.  
  9.  
Si llevas esto a una instancia superior... podrias realizar un componente visual de una tabla periodica.

Pd: se nota que me gusta la poo? :whistling:

Páginas: 1 ... 23 24 [25] 26 27 ... 77