Delucidazioni sul ciclo WHILE.

di il
6 risposte

Delucidazioni sul ciclo WHILE.

Salve, sono nuovo sul forum e questo è il mio primo thread.
Sono studente di informatica al primo anno ed solamente quest'anno mi sono avvicinato alla programmazione.
Ho un quesito da proporvi sul ciclo iterativo while.
Ho capito bene il ciclo quando si usano gli operatori aritmetici e relazionali.
Ad esempio:
i=0
while(i<10)
{
istruzione
i++}
non riesco invece a capire quando si usa l'operatore logico NOT (!) vicino ad una variabile, senz 'altro.
come faccio a capire se la condizione del while è vera o falsa
ad esempio ho questo stralcio di codice di un esercizio:

			trovato=0;
			while(!trovato)
			{
				i=rand()%rig;
				j=rand()%col;
				if (!m2[col*i+j])
				{
					trovato=1;
					m2[col*i+j]=1;
				}
			}
non riesco proprio a comprendere quella condizione del while ed anche quel NOT nell IF
c'è qualcuno di buon animo che me la spiega.
ringrazio anticipatamente
Nello

6 Risposte

  • Re: Delucidazioni sul ciclo WHILE.

    Ciao
    La risposta è piuttosto semplice: quando tu inserisci nell'argomento di un while (ma anche nell'if) una variabile senza confrontarla con altro, la condizione è considerata VERA se la variabile ha un qualsiasi valore diverso da 0, FALSA sa ha come valore 0.
    Nell'esempio che hai postato, davanti al nome della variabile c'è un "!" (NOT), quindi è esattamente il contrario: la condizione è verificata se la variabile ha valore 0 e non è verificata per qualsiasi valore diverso da 0.
    Perciò, nell'esempio da te postato, il ciclo while si ripete finché trovato == 0.
    Sarebbe stato equivalente scrivere
    trovato=0;
             while(trovato == 0)
             {
                i=rand()%rig;
                j=rand()%col;
                if (!m2[col*i+j])
                {
                   trovato=1;
                   m2[col*i+j]=1;
                }
             }
    Spero di essere stato sufficientemente chiaro
  • Re: Delucidazioni sul ciclo WHILE.

    NelloGui ha scritto:


    Sono studente di informatica al primo anno
    E non fate algebra di boole prima di programmare?
  • Re: Delucidazioni sul ciclo WHILE.

    ultrasound91 ha scritto:


    oregon ha scritto:


    NelloGui ha scritto:


    Sono studente di informatica al primo anno
    E non fate algebra di boole prima di programmare?
    No, non si fa.
    All'università si continua lo studio delle materia della scuola superiore.
    Se uno non ha fatto informatica non sa l'algebra di boole.
    E' comunque strano perchè al test di ingresso chiedevano queste cose.
    Bha strano! Si faceva sai! E non penso siano cambiate di molto le cose.
  • Re: Delucidazioni sul ciclo WHILE.

    Ma senza algebra di Boole non si parte neanche con la programmazione...

    Inoltre in un corso d'informatica classico di un istituto tecnico, normalmente si dovrebbe studiare anche elettronica digitale.

    quindi dopo aver capito cose del tipo:
    AND
    OR
    NOT
    XOR
    NAND
    Flip-Flop RS

    ecc... ecc...

    tutto filerebbe piu' liscio.

    Ps. comunque all'uni si studia anche algebra di boole, cosi come la numerazione a base: 2 oppure 8 oppure 16... e loro relative conversioni da una base all'altra, come pure le classiche operazioni matematiche con i numeri binari.

    Almeno per i miei corsi e' sempre stato cosi. poi adesso boooohhh!!!
  • Re: Delucidazioni sul ciclo WHILE.

    Sapevo che doveva essere una sciocchezza.
    Si,l'algebra di boole viene fatta in architettura dei calcolatori, in contemporanea con programmazione 1, ma solamente con porte logiche.(direte voi è la stessa cosa)
    comunque la cosa che mi ha bloccato è stato il fatto che se una variabile non viene confrontata con altre nell'argomento del while,la condizione è falsa solo se la variabile è nulla o il contrario se non è nulla

    comunque sia, grazie a tutti
  • Re: Delucidazioni sul ciclo WHILE.

    De Morgan?, Boole? Jacopini? mai sentiti nominare?
    Leggiti la mia dispensa
    http://informaticaparthenope.blogspot.it/2015/05/programmazione-1-by-gargiulo-giacomo.html
Devi accedere o registrarti per scrivere nel forum
6 risposte