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

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  [SRC] [Funcion] Get_Electronic_Configuration [by *PsYkE1*]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [SRC] [Funcion] Get_Electronic_Configuration [by *PsYkE1*]  (Leído 1,711 veces)
Psyke1
Wiki

Desconectado Desconectado

Mensajes: 1.089



Ver Perfil WWW
[SRC] [Funcion] Get_Electronic_Configuration [by *PsYkE1*]
« en: 20 Julio 2010, 17:23 pm »

Hola, aqui os dejo una función para obtener la configuracion electronica de cualquier elemento de la tabla periódica... :)

Mas info: http://es.wikipedia.org/wiki/Configuraci%C3%B3n_electr%C3%B3nica

Código
  1. ' ////////////////////////////////////////////////////////////////
  2. ' // *Autor: *PsYkE1* [vbpsyke1@mixmail.com]                    //
  3. ' // *Fecha: 20/7/10                                            //
  4. ' // *Podeis agrandar o reducir el codigo, siempre y cuando se  //
  5. ' //  respete la autoria y se me comuniquen esos cambios.       //
  6. ' // *Agradecimientos a raul338                                 //
  7. ' // *Visita http://foro.rthacker.net                           //
  8. ' ////////////////////////////////////////////////////////////////
  9.  
  10. Option Explicit
  11.  
  12. Public Function Get_Electronic_Configuration(ByVal bElementValence As Byte) As Collection
  13.  
  14.    Const ELECTRONIC_CONF        As String = "1s,2s,2p,3s,3p,4s,3d,4p,5s,4d,5p,6s,4f,5d,6p,7s,5f,6d"
  15.    Const EXCEPTION_VALENCES_A   As String = "24,29"               '# Cr & Cu
  16.    Const EXCEPTION_VALENCES_B   As String = "41,42,44,45,46,47"   '# Zr, Nb, Tc, Ru, Rh, Pd & Ag
  17.    Const EXCEPTION_VALENCES_C   As String = "78,79"               '# Pt & Au
  18.  
  19.    Const LIMIT_SUBLEVEL_S   As Byte = 2
  20.    Const LIMIT_SUBLEVEL_P   As Byte = 6
  21.    Const LIMIT_SUBLEVEL_D   As Byte = 10
  22.    Const LIMIT_SUBLEVEL_F   As Byte = 14
  23.  
  24.    Dim cTemp               As New Collection
  25.    Dim sSubLevel()         As String
  26.    Dim sActualItem         As String * 2
  27.    Dim bInvalidValenceA    As Boolean
  28.    Dim bInvalidValenceB    As Boolean
  29.    Dim bInvalidValenceC    As Boolean
  30.    Dim bElectron           As Byte
  31.    Dim bActualLimit        As Byte
  32.    Dim x                   As Byte
  33.    Dim n                   As Byte
  34.    Dim y                   As Byte
  35.  
  36.    If bElementValence > 0 And bElementValence < 112 Then '# Hasta el elemento Roentgenio [Uuu]
  37.        sSubLevel() = Split(ELECTRONIC_CONF, ",")
  38.  
  39.        '# Compruebo si la valencia introducida es una excepción
  40.        bInvalidValenceA = CBool (InStr(EXCEPTION_VALENCES_A, CStr(bElementValence)))
  41.        bInvalidValenceB = CBool (InStr(EXCEPTION_VALENCES_B, CStr(bElementValence)))
  42.        bInvalidValenceC = CBool (InStr(EXCEPTION_VALENCES_C, CStr(bElementValence)))
  43.  
  44.        For x = 0 To UBound(sSubLevel())
  45.            sActualItem = sSubLevel(x)
  46.  
  47.            '# Reviso el subnivel en el que me encuentro
  48.            Select Case Right$(sActualItem, 1)
  49.                Case "s": bActualLimit = LIMIT_SUBLEVEL_S
  50.                Case "p": bActualLimit = LIMIT_SUBLEVEL_P
  51.                Case "d": bActualLimit = LIMIT_SUBLEVEL_D
  52.                Case "f": bActualLimit = LIMIT_SUBLEVEL_F
  53.            End Select
  54.  
  55.            '# Relleno cada capa de eletrones
  56.            For y = 1 To bActualLimit
  57.                If n <> bElementValence Then n = n + 1 Else Exit For
  58.  
  59.                '# Hay excepciones: Si la configuración electrónica acaba en d4 o en d9
  60.                '# el subnivel anterior cede un electrón para estabilizarlo (en la mayoria de los casos)
  61.                If (sActualItem = "4s" And bInvalidValenceA = True) Or (sActualItem = "5s" And bInvalidValenceB = True) Or _
  62.                sActualItem = "6s" And bInvalidValenceC = True Then
  63.                    bElectron = 1
  64.                    Exit For
  65.                Else
  66.                    bElectron = bElectron + 1
  67.                End If
  68.            Next y
  69.  
  70.            '# Añado el Item con los electrones que tenga
  71.            cTemp.Add sActualItem & CStr(bElectron)
  72.  
  73.            If n = bElementValence Then Exit For
  74.            bElectron = 0
  75.        Next x
  76.        Set Get_Electronic_Configuration = cTemp
  77.    End If
  78. End Function

Para que veais, un ejemplo:
Código
  1. Private Sub Form_Load()
  2.    Dim sResult        As String
  3.    Dim vItem          As Variant
  4.    Dim z              As Byte
  5.  
  6.    z = 29 '# El Cobre [Cu]
  7.  
  8.    For Each vItem In Get_Electronic_Configuration(z)
  9.        sResult = sResult & vItem & " "
  10.    Next vItem
  11.  
  12.    Debug.Print sResult
  13. End Sub

Me devuelve esto:
Citar
1s2 2s2 2p6 3s2 3p6 4s1 3d10

Si en la variable z pongo 97 (Berkelio [Bk]) me da esto:
Citar
1s2 2s2 2p6 3s2 3p6 4s2 3d10 4p6 5s2 4d10 5p6 6s2 4f14 5d10 6p6 7s2 5f9

Bueno esto es todo... ;)

PD: Saludo a mi profesora de clases Marta Suarez  :-* :laugh:

DoEvents¡!
:P


« Última modificación: 22 Julio 2010, 03:35 am por *PsYkE1* » En línea

FFernandez

Desconectado Desconectado

Mensajes: 128



Ver Perfil
Re: [SRC] [Funcion] Get_Electronic_Configuration [by *PsYkE1*]
« Respuesta #1 en: 20 Julio 2010, 17:43 pm »

Muy bueno!!!



                                              Un saludo


En línea

Debci
Wiki

Desconectado Desconectado

Mensajes: 2.021


Actualizate o muere!


Ver Perfil WWW
Re: [SRC] [Funcion] Get_Electronic_Configuration [by *PsYkE1*]
« Respuesta #2 en: 20 Julio 2010, 21:07 pm »

Yo hice esto pero mas complejo el año pasado xD

Mira alomejor lo porteo a Java :D

Saludos
En línea

Psyke1
Wiki

Desconectado Desconectado

Mensajes: 1.089



Ver Perfil WWW
Re: [SRC] [Funcion] Get_Electronic_Configuration [by *PsYkE1*]
« Respuesta #3 en: 20 Julio 2010, 21:14 pm »

Perfecto!! :D
Más complejo?¿
Lo unico que se me ocurre a añadir es que simplificara las configuraciones... :silbar:

Un ejemplo:

El Manganeso [Mn] ; z = 25
Su configuración electronica seria esta:
Citar
1s2 2s2 2p6 3s2 3p6 4s2 3d5
Se podria simplificar tomando como base la configuración electronica del Argón [Ar], así:
Citar
[Ar] 4s2 3d5


No tengo ni idea de java, pero estaria bien que subieras tu code ;)

DoEvents¡! :P
« Última modificación: 20 Julio 2010, 21:22 pm por *PsYkE1* » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines