L'idea è buona, solo un paio di cose
Uno: non capisco perchè c'è 'Leggi (i)' nel primo altrimenti;
Due: che cos'è quel "i< o=n"? Non basta "i < n"?
Tre: l'altrimenti finale non è correlato a nessun se. Per ovviare a questo problema, io farei così:
Leggi (n)
Leggi (i)
i=1
s=1
Finchè (i < n)
>>>Se (i*i=n) :
>>>>>> s=0
>>>Altrimenti :
>>>i=i+1
Se (s=0):
>>>Stampa("n è un quadrato perfetto")
Altrimenti:
>>>Stampa("n non è un quadrato perfetto")
E' come se creassi un etichetta "s" segnata con 1, e sovrascritta con 0 solo se n è un quadrato perfetto.
Quattro: adesso non so bene i presupposti del problema, ma se n fosse negativo il ciclo va all'infinito per scrupolo metti prima del ciclo un "Se (n>0)"; ovviamente se n fosse invece negativo non potrebbe essere un quadrato perfetto.
Cinque: ti consiglio di far terminare il ciclo a (n/2) +1 invece che a n, che su numeri molto grandi risparmi un bel po' di iterazioni. Adesso senza dimostrazione matematica, vedi da solo che le radici di numeri interi positivi sono sempre minori della metà più 1
Ehi, comunque sono tutte piccole cosette!! Il grosso c'era, l'idea era quella giusta