Newsgroup: it.lavoro.informatica
Titolo: Test per un lavoro

Mi hanno fatto questo test per lavoro:
// Somma dei primi 5 numeri naturali
// nel PLC siemens ci sono due accumulatori usati come uno stack quando si 
inserisce un valore in accu1 il vecchio valore viene passato ad accu2, le 
operazioni matematiche usano
// entrambi gli accumulatori
// mentre nella sintassi MW4 ci si riferisce alla word di indirizzo a byte 4 
di lunghezza 16 bit
// con il registro di indirizzi AR1 l'indirizzamento e' a bit quindi per 
farlo puntare alla MW4 deve valere 8*4=32
      L     1                           // accu1=1
      L     -1                          // accu2=1 accu1=-1
      +I                                // somma gli accumulatori
      T     MW     0                    // nella word 0 viene messo 1-1=0
// --------------
      L     1                           // accu2=accu1 accu1=1
      T     MW     4                    // la word 4 contiene il primo 
valore da sommare
      L     2                           // accu2=accu1 accu1=2
      T     MW     6                    // la word 6 contiene il secondo 
valore da sommare
      L     3                           // accu2=accu1 accu1=3
      T     MW     8                    // la word 8 contiene il terzo 
valore da sommare
      L     4                           // accu2=accu1 accu1=4, in pratica 
usa i due accumulatori come uno stack RPN
      T     MW    10
      L     5                           // carica in accu1 5
      T     MW    12                    // carica l'accu1 nella word 12
// --------------
      L     32                          // indirizzo della word 4 (AR1 punta 
con indirizzi a bit quindi 4*8bit=32bit)
      LAR1                              // carica nel registro indirizzi 
(AR1) l'accu1 cioe' 32 AR1=32
cicl: L     MW [AR1,P#0.0]              // carica nell'accumulatore il 
contenuto della word puntata da AR1 con spiazzamento 0 (AR1 deve essere un 
indirizzo a bit) accu1=[AR1]
      L     MW     0                    // carica la word 0 in accu1
      +I                                // somma i contenuti dei due 
accumulatore in pratica fa la somma degli ultimi due caricamenti
      T     MW     0
      TAR1                              // accu2=accu1, memorizza AR1 il 
registro indirizzi nell'accumulatore1
      L     16
      +I
      LAR1
      TAR1
      L     96
      ==I                               // controlla se i due accumulatori 
sono uguali
      SPBN  cicl                        // salta se diverso
// --------------
      L     MW     0                    // nella word 0 verrebbe caricata la 
somma delle word 4 6 8 10 12 (cioe' 1+2+3+4+5=15), ma c'e' un errore nel 
programma
// invece di 15=1+2+3+4+5 la somma fa 10=1+2+3+4, dov'e' l'errore?


Nel senso che era una vera è proprio preselezione.
Dov'e' l'errore?

 Mi hanno fatto questo test per lavoro:
L'errore è nell'interrompere il ciclo quando il primo accumulatore vale 96. 
La somma parte dalla word 4 (bit 32), ne prende due per volta (16 bit) e 
deve terminare con la word 12 (bit 96); ma la word 12 deve essere inclusa, 
quindi il ciclo non deve interrompersi quando i due accumulatori sono 
uguali, bensì quando il secondo diventa *maggiore* di 96.
In pratica, è come se fosse scritto "for i = 32;i < 96;i += 16", laddove 
sarebbe dovuto essere "for i = 32;i <= 96;i += 16".
Nota a margine: non so chi tu sia e perché cercassi questo lavoro, ma se ho 
risolto l'esercizio io che di PLC Siemens non so assolutamente nulla, 
evidentemente così difficile non doveva essere...
Massimo

 evidentemente così difficile non doveva essere...
Il test era esplicitamente rivolto ad un programmatore che potesse adattarsi 
ad un PLC, mi è stato detto che con i commenti a margine non c'era bisogno 
di sapere di PLC siemens, ora sono tranquilla dovrei aver passato il test, 
anch'io sono arrivata alle stesse conclusioni. :)

 // invece di 15=1+2+3+4+5 la somma fa 10=1+2+3+4, dov'e' l'errore?
opinabile, visto che alcuni algebristi considerano i naturali escluso lo 
zero, cioè da 1.
Certo che in linea di massima per le applicazioni nei naturali lo 0 è 
incluso quindi la somma fa 10, ma avresti potuto commentare la soluzione 
in questo modo e li avresti fregati ;-)

inserisce un valore in accu1 il vecchio valore viene passato ad accu2, le 
Secondo me, essendo tu una donna, dovresti lasciar perdere queste cose e
dedicarti al taglio&cucito o alla cucina.

 dedicarti al taglio&cucito o alla cucina.
Secondo me, vista la tua passione per le flame, dovresti lasciar perdere 
tutto e fare il fuochista.

 dedicarti al taglio&cucito o alla cucina.
Sai programmare PC PLC e ROBOT industriali? 

Sai prog[]
è ora di pranzo, vai a preparare il sugo.

 è ora di pranzo, vai a preparare il sugo.
Ho un uomo che me lo prepara. 


www.danilobottone.com
 (.it)
E' piů difficile disintegrare un pregiudizio che un atomo. (Einstein) 

Ho un uomo che me lo prepara. 
Ecco, questi disastri succedono quando si permette alle donne di uscire
di casa da sole, di lavorare e di frequentare la scuola e l'universitŕ.
Si deve tornare ai bei vecchi tempi, altro che storie.