Il Bar dell'Ingegneria

Verifiche sezioni complesse in c.a. agli SLE ed SLU

« Older   Newer »
 
  Share  
.
  1. afazio
        +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Administrator
    Posts
    8,163
    Reputation
    +294

    Status
    Offline
    CITAZIONE (francesco.coppola @ 27/9/2012, 09:26) 
    Il fatto che i commenti inizino con il simbolo (') e terminino con (*/) è un semplice refuso della traduzione dal C al VBA?
    Oppure tutto il testo dal (') fino alla fine della riga è da intendersi commento? E poi si ricomincia con il codice?
    (In C il commento deve essere per forza compreso tra (/*) e (*/), oppure in C++ tra (//) iniziale e (//) finale).

    Alcuni campi della struttura dati relativa al poligono mi paiono superflui per il semplice calcolo (tipo selez o bloc), ma evidentemente avranno un senso nell'interfaccia del programma....

    Non è un refuso dato che in VBA il commento non deve essere delimitato come in C, ma basta solo che inizi con l'apostrofo. Tutto quello che ci sta a seguire nel rigo è considerato commento.
    In questo modo io ho evitato di togliere il delimitatore di chiusura presente nell'originale codice di Zax.

    Vedrai che anche nella altre stutture dati sono presenti campi che adesso sembrano superflui come nelle armature messe a congelare in frigo.
    Intanto traduco pedissequamente il codice che mi sono proposto di tradurre, rinviando al 3d di origini per approfondimenti, in alternativa dovrei inserire il codice che necessita nella fase analizzata e successivamente otornare indietro per aggiungere le definizioni che via via spunteranno essere necessarie.

    Per ogni buon conto ti invito a leggere il 3d che ho linkato al terzo rigo del presente topic e che riporto ancora una volta qui:
    http://ingegneriaforum.it/index.php?topic=1870.0

    vedrai che la cosa si sviluppa in ben 9 pagine strazeppe di commenti e codice

    CITAZIONE (francesco.coppola @ 27/9/2012, 09:34) 
    ....

    Altra cosa.
    Riguardo i numeri in virgola mobile, in VBA esiste il solo tipo double?
    Oppure è una tua abitudine dichiarare tutte le variabili 'reali' con questo tipo?

    Lo chiedo perchè in C:
    float --> Numero in virgola mobile a precisione singola (di solito rappresentato utilizzando 32 bit)
    double --> Numero in virgola mobile a precisione doppia (di solito rappresentato utilizzando 64 bit)

    tipi numerici predefiniti in VBA:

    Byte: intero tra 0 e 255 (occupa 1 byte)
    Integer: intero tra -32.768 a 32.767 (occupa 2 byte)
    Long: intero tra -2.147.483.648 a 2.147.483.6477 (occupa 4 byte)


    Single: a virgola mobile Da -3,402823E38 a -1,401298E-45 per valori negativi; da 1,401298E-45 a 3,402823E38 per valori positivi (impegna 4 byte)
    Double: a virgola mobile Da -1.79769313486231E308 a
    -4,94065645841247E-324 per valori negativi; da 4,94065645841247E-324 a 1,79769313486232E308 per valori positivi. (impegna 8 Byte)


    Poi ci sarebbe anche il decimal cosi definito:

    Decimal: +/-79.228.162.514.264.337.593.543.950.335 senza virgola;
    +/-7,9228162514264337593543950335 con 28 decimali; il numero minore diverso da zero è
    +/-0,0000000000000000000000000001 ed impegna 14 byte

    infine altri tipi che gestiscono le valute e le date, oltre ovviamente alle stringe, ai booleani. Restano ancora tre tipi particolari:

    Variant che impegna ben 22 byte e che puo' contenere qualsiasi tipo precedentemente definito. Si usa questo oneroso tipo quando la variabile che sarà trattata puo assumere diversi tipi (per esempio quando scrivo le funzioni che restituiscono uno o l'altro valore in base al flag passato, puo capitare di dover restituire una stringa o un numero, ed allora occorre definire il tipo del dato restituito dalla funzione come Variant)

    Object: è un semplice riferimento (puntatore) alla locazione di memoria dove risiede un qualsiasi oggetto.

    Tipi definito dall'utente, come quello sopra definito




    La definizione del tipo di una variabile destinata a contenere le armature:

    CODICE
    ' -------------------------------------------------------------------------- */
    ' Struttura dati in cui sono definiti i dati delle singole barre di armatura */
    ' presenti nella sezione                                                     */
    ' -------------------------------------------------------------------------- */
    Public Type armature_sezione
       af(0 To NMAXARM - 1) As Double     ' area della barra di armatura */
       diam(0 To NMAXARM - 1) As Double ' diametro della barra */
       x(0 To NMAXARM - 1) As Double     ' coordinata x della barra */
       y(0 To NMAXARM - 1) As Double     ' coordinata y della barra */
       numarm As Integer          ' numero di barre per l'intera sezione */
       omogarm As Double       ' coefficiente di omogeneizzazione (per verifiche SLE) */
       selez(0 To NMAXARM - 1) As Integer  ' 1=armatura selezionata 0=armatura non selezionata */
       cong(0 To NMAXARM - 1) As Integer  ' 0=non congelato 1=congelato */
    End Type
     
    Top
    .
390 replies since 26/9/2012, 10:47   29394 views
  Share  
.