Ciclo for

di il
7 risposte

Ciclo for

Buonasera sono nuovo del forum, e alle prime armi con la programmazione in c.
In fase di progettazione di un piccolo programma, mi sono trovato in difficoltà nel capire il funzionamento della condizione all'interno del ciclo for.
#include <stdio.h>

main(){
   int n, i, somma;
      printf("Dammi un numero: ");
      scanf("%d", &n);
      somma = 0;
   
    for(i=1; i==n; i++){
    
       printf("Dammi un numero: ");
       scanf("%d", &n);
       
       
       somma = somma + i;
       
    
    }
    printf("la somma dei primi %d numeri è %d\n", n, somma );
}
Cioè non riesco a capire il significato della condizione i==n.
grazie in anticipo.

7 Risposte

  • Re: Ciclo for

    In realtà dovrebbe essere
    
       int n, i, somma=0;
    
       printf("Dammi un numero: ");
       scanf("%d", &n);
     
       for(i=1; i<=n; i++)
       {
           somma = somma + i;
       }
    
       printf("la somma dei primi %d numeri è %d\n", n, somma );
    
  • Re: Ciclo for

    Grazie per la risposta veloce.
    Si ho provato con i<=n, e funziona, però non riesco a capire il perchè posizionando i==n non funziona allo stesso modo.
    Cioè essendo un'uguaglianza penso che fin quanto, i non raggiunga il valore di n, il programma rimane intrappolato nel ciclo.
    Ciò che ho detto è giusto, o mi sono sbagliato?
    grazie
  • Re: Ciclo for

    Ti sbagli ... se i vale 1 allora è già diverso da n e quindi il ciclo termina.
  • Re: Ciclo for

    Ok grazie, quindi nel ciclo for quando la condizione non è dimostrata termina il ciclo. E se io volessi impostare la condizione che i==n quando è vera esco dal ciclo, quando è falsa entro nel ciclo, come dovrei procedere?
    grazie
  • Re: Ciclo for

    carmine_prog ha scritto:


    quando la condizione non è dimostrata


    quando la condizione è falsa
    E se io volessi impostare la condizione che i==n quando è vera esco dal ciclo, quando è falsa entro nel ciclo, come dovrei procedere?
    No ... non capisco cosa vuoi dire ... Il funzionamento del ciclo for è semplice, non capisco dove vuoi arrivare ...
  • Re: Ciclo for

    carmine_prog ha scritto:


    ok grazie, quindi nel ciclo for quando la condizione non è dimostrata termina il ciclo. E se io volessi impostare la condizione che i==n quando è vera esco dal ciclo, quando è falsa entro nel ciclo, come dovrei procedere?
    grazie
    Tu non puoi cambiare le regole di come funziona un ciclo, perche' queste regole sono state decise in fase di progettazione del linguaggio di programmazione.

    Visto che nel ciclo for (ma anche nel while e nel do/while) il corpo del ciclo viene eseguito fino a che la condizione e' vera, tu devi neccessariamente adattare la tua condizione a questa regola.

    Ora, se hai la necessita' di ciclare mentre la tua condizione e' falsa, il trucco consiste in questo:

    cambi la tua condizione in: !<condizione>

    dove il punto esclamativo e' l'operatore di negazione booleano:

    se <condizione> e' false, !<condizione> e' true

    e viceversa.

    Direi che non hai capito, o non hai studiato, le operazioni booleane.

    Ce ne sono 3: and (&& ) , or (||) e not (!)

    (scrivo t per true e f per false)

    not(f) -> t
    not(t) -> f

    and(f,f) -> f
    and(f,t) -> f
    and(t,f) -> f
    and(t,t) -> t

    or(f,f) -> f
    or(f,t) -> t
    or(t,f) -> t
    or(t,t) -> t

    In C scriveresti:

    !<condizione>

    <condizione> && <condizione>
    <condizione> || <condizione>
  • Re: Ciclo for

    Grazie per le risposte penso di aver capito.
    Essendo principiante e quindi alle prime armi pensavo che nel caso in cui la condizione all'interno del ciclo si dimostrava vera uscivo dal ciclo for, nel caso in cui la condizione all'interno del ciclo si dimostrava falsa rimanevo intrappolato nel ciclo, fino a quando la condizione non si verificava, ma mi sbagliavo.
    Grazie mille per le vostre risposte precise e veloci
Devi accedere o registrarti per scrivere nel forum
7 risposte