Newsgroup: it.comp.lang.pascal
Titolo: Quesito programmazione Pascal

Un saluto a tutti e grazie a chi voglia prestare attenzione al
seguente esercizio di programmazione (una cosa piccola per voi ma a
cui io non ho saputo dare una soluzione):
Qual è il codice che consente di ottenere il seguente risultato?
	Si chiede all'utente di digitare una cifra
		Digitata la cifra il programma restituisce la cifra al
quadrato e ripone la domanda
se si digita in luogo di una cifra numerica una lettera dell'alfabeto
il programma dice:
"Avendo digitato una lettera invece di un numero il programma finisce
qui"
e digitando qualsiasi cosa si esce dall'applicazione.


beh il programma è questo :
se ch in alpha allora scrivi quello che devi scrivere e esci
altrimenti se ch in num allora calcola quadrato
altrimenti esci
tutto questo in un bel ciclo...
dove ti blocchi nel tradurlo in pascal?
-- 
Il Razziatore,
The Only Good Windows is an uninstalled Windows
-----------------------------------------------
MSN   : 
IlRazz...@netscape.net
ICQ   : 67552596
Yhaoo : Razziatore82
-----------------------------------------------
Founder of MediaPlayer Project
http://mpp.iwebland.com

dove ti blocchi nel tradurlo in pascal?
Chiedo scusa, forse non mi spigo bene.
	Studio la materia informatica al primo superiore, non sono una
programmatrice e se ho sbagliato newsgroup, se qui non è ammesso un
livello al disotto di una certa soglia, basta specificarlo all'inizio
e tolgo il disturbo.
Io avevo pensato a questo:
program Project1;
{$APPTYPE CONSOLE}
uses
  SysUtils;
var
      Cifra1: integer;
begin
        repeat
        writeln('Dammi la prima cifra');
        readln(Cifra1);
        writeln(Cifra1 * Cifra);
        writeln('Dammi un altra cifra');
        readln(Cifra1);
        writeln(Cifra1 * Cifra1)
        until
         {qui ci dovrebbe essere un'istruzione del tipo:
          <<Cifra1 è String>>}
        else
          write('chiudo');
      readln;
 
end.

 end.
Allora l'uso del Integer è spagliata perchè se leggi da tastiera una 
lettera e/o un simbolo ti dovrebbe crashare con un bel errore di 
runtime. Inoltre il programma chiede 1 sola cifra ti convine leggere un 
char.
Anche io usere il Repeat-until magari con un booleano.
una volta letto un carattere devi vedere i tre casi che ho detto prima
se è un cifra devi dare il quadrato altrimenti visualizare il messaggio
Per confrontare se Ch è un numero, una lettera o un simbolo io useri i 
set { li avete fatti? } se non li avete fatti un bella
if ( '0' <= ch ) and (  ch <= '9' )
puo' fare al caso tuo.
Ovviamente una volta stabilito che è un numero devi trasformalo in 
intero la funziona Ord(ch) ti puo' essere utile restituendo il codice 
ASCII del carattere. Ti ricordo che '0' equivale al codice ASCII $30 
mentre '9' è $39 quindi per elevare al quadrato un numero basta che fai
( ord(ch) - $30 ) * ( ord(ch) - $30 )
che altro dire uhmmm non so :D ti dovrei aver dato tutte le cose per 
poter fare il prgramma se hai problema continua a scrivere ti aspetto :)
se vuoi c'è anche il chan del NG ovvero la stanza  #TurboPascal sul IRC 
network 
irc.azzurra.org


prova con la gestione eccezioni:
----------------------------------
Program Project1;
{$APPTYPE CONSOLE}
uses
   SysUtils;
var
   Cifra1: integer;
begin
   writeln('Dammi la prima cifra');
   repeat
     try // in
       readln(Cifra1);
       writeln(Cifra1 * Cifra1);
       writeln('Dammi un altra cifra');
     except
       // si e' tentato di far passare
       // un valore di tipo string
       // al posto di un integer
       // cio' ha provocato un'eccezione
       // che tu hai intercettato con il
       // blocco try ... except ... end
       writeln('Il valore immesso non è un integer!');
       break; // esci fuori dal ciclo
     end;
     // ripeti fino a che vero e'
     // diverso da vero = ciclo infinito
   until true <> true;
   writeln('Chiudo');
end.
----------------------------------
Ciao!