ottoz Inserito: 21 aprile 2020 Segnala Inserito: 21 aprile 2020 ciao a tutti ho provato a fare questo esempio di for trovato su un manuale si scl per s7300 FUNCTION_BLOCK FOR_BSP VAR INDICE: INT ; PASSWORD: ARRAY [1..50] OF STRING; END_VAR BEGIN FOR INDICE := 1 TO 50 BY 2 DO IF PASSWORD [INDICE] = 'KEY' THEN EXIT; END_IF; END_FOR; END_FUNCTION_BLOCK ma non funziona !!!!! come Mai? un saluto a tutti e spero che qualcuno mi aiutim sono ore che cerco di capire ma..
pigroplc Inserita: 21 aprile 2020 Segnala Inserita: 21 aprile 2020 Cosa intendi per "non funziona"? Hai ben presente cosa deve fare questa funzione? In teoria dovrebbe controllare tutte le stringhe dispari dell'array chiamato password finché non trova la parola KEY quindi abbandona la ricorsione. Quello che non mi suona è il fatto di controllare il 50 quando dovrebbe fare tutti i numeri dispari 1;3;5 ecc quindi metterei 49 o 51 e non 50
ottoz Inserita: 21 aprile 2020 Autore Segnala Inserita: 21 aprile 2020 quindi devo scrivere key nell array
batta Inserita: 21 aprile 2020 Segnala Inserita: 21 aprile 2020 2 ore fa, ottoz ha scritto: quindi devo scrivere key nell array Prima dovresti chiarire cosa vuoi ottenere. Il codice, in pratica, così com'è non fa assolutamente nulla. Se nessuna delle stringhe dispari da 1 a 49 dell'array è uguale a "KEY", il ciclo FOR termina senza fare nulla. Se, invece, trova una stringa uguale a "KEY, esce dal ciclo FOR senza completarlo, e non fa nulla. In entrambi i casi, non fa assolutamente nulla.
ottoz Inserita: 22 aprile 2020 Autore Segnala Inserita: 22 aprile 2020 avete ragione sono io che ho interpretato male la funzione ero io che sbagliavo, la funzione e OK pensavo che doveva scrivere KEY nell array invece è un IF grazie per la pazienza e per la vostra presenza ciao
ottoz Inserita: 22 aprile 2020 Autore Segnala Inserita: 22 aprile 2020 VAR INDICE: INT ; PASSWORD: ARRAY [1..50] OF STRING ; END_VAR BEGIN INDICE := 1 ; WHILE INDICE <= 50 AND PASSWORD[INDICE] <> 'KEY' DO INDICE := INDICE + 2; END_WHILE ; ditemi se sbaglio parte da indice =1 e lui cerca quando trova che indice è minore di 50 e PASSWORD[INDICE] arriva a 1 vede che non ce KEY si ferma a INDICE=3 ? giusto??
pigroplc Inserita: 22 aprile 2020 Segnala Inserita: 22 aprile 2020 primo giro INDICE = 1 quindi se PASSWORD[1] è diversa da 'KEY' incrementa INDICE di 2 unità e riprende il controllo. Se incontra che PASSWORD[1] o PASSWORD[3] o PASSWORD[5] ecc. sono uguali a 'KEY' si ferma, altrimenti li spazzola fino a 49 compreso. La ricorsione serve a capire in che posizione dell'array si trova una determinata stringa.
ottoz Inserita: 23 aprile 2020 Autore Segnala Inserita: 23 aprile 2020 grazie sei stato chiarissimo ciao
Messaggi consigliati
Crea un account o accedi per commentare
Devi essere un utente per poter lasciare un commento
Crea un account
Registrati per un nuovo account nella nostra comunità. è facile!
Registra un nuovo accountAccedi
Hai già un account? Accedi qui.
Accedi ora