Strutture di Controllo in C#

Nell’articolo precedente avevamo accennato alla più famosa e semplice struttura di controllo nei linguaggi di programmazione if … In particolare occorre precisare che dopo il comando di una struttura di controllo le parentesi graffe vanno messe per obbligo solo se all’interno di esso ci sono più righe di codice, per esempio:

if (condizione vera)
   fai qualcosa….

if (condizione vera)
{
      fai qualcosa…
      fai qualcos’altro….
}

Non si possono inoltre studiare le condizioni senza sapere gli operatori sia metematici, relazionali e logici, iniziamo con i primi:

  • = assegnazione
  • + addizione
  • – sottrazione
  • * moltiplicazione
  • / divisione
  • % modulo che ritorna il resto della divisione del primo per il secondo fattore

esiste anche la possibilità di abbreviare le operazioni concatenado gli operatori aritmetici, che è la classica prerogativa del C.

int k = 10; // dichiarazione della variabile k come intera ed assegnazione del valore 10
k += 12; // Addizione di 12 alla variabile k, operazione che espansa sarebbe k = k + 12
k++; // Addizione di 1 alla variabile k, operazione che espansa sarebbe k += 1 e k = k + 1

Noterete quindi quanto si possono razionalizzare le operazioni. Passiamo agli operatori relazionali:

  • == uguale
  • != diversa
  • > maggiore
  • >= maggiore-uguale
  • < minore
  • <= minore-uguale

Gli operatori relazionali possono essere concatenati con gli operatori logici:

  • && – and logico se entrambe le relazioni sono vere
  • || – or logico se una delle 2 relazioni sono vere

Facciamo quindi qualche esempio:

using System;

public class Corso
{
   static void Main(string[] args)
   {
     int x, y;

     x = y = 12;
     x *= 7;
     y += 18;
     y /= 2;
     x -= 12;

     if (x > 0 && y > 0)
       Console.WriteLine("Entrambi i numeri sono maggiori di zero\n");
     else
       Console.WriteLine("Uno dei due è minore di zero\n");

     if (x > 0 || y > 0)
       Console.WriteLine("Uno dei due è maggiore di zero\n");
     else
       Console.WriteLine("Nessuno dei due è maggiore di zero\n");

     if ((x % 2) == 0)
       Console.WriteLine("La X è un numero pari\n");
     else
       Console.WriteLine("La X è un numero dispari\n");

     if ((y % 2) == 0)
       Console.WriteLine("La Y è un numero pari\n");
     else
       Console.WriteLine("La Y è un numero dispari\n");

     Console.ReadKey();
   }
}

Penso che non ci sia bisogno di spiegazioni, se casomai non avete compreso bene potete formulare delle domande nel forum. Prima di concludere vediamo brevemente il primo ciclo, il for:

for (int i = 0; i < 10; i++)
Console.WriteLine(“Questa è la riga: ” + (i + 1));

Notate che posso dichiarare la variabile contatore da 0 a 9 all’interno del ciclo for, ma sarà visibile solo al suo interno e non al di fuori del ciclo, ma questo lo vedremo in futuro. Per il ciclo for serve quindi una variabile contatore con il valore iniziale, una condizione fino a quando il ciclo deve avvenire ed infine di quanto la variabile contatore deve essere modificata. Con quello che abbiamo studiato finora quindi sarà possibile calcolare il fattoriale di un numero, provate a farlo voi stessi senza guardare e poi confrontate come è stato sviluppato:

using System;

public class Corso
{
   static void Main(string[] args)
   {
     int k = 6;
     int iFatt = 1;

     for (int i = k; i > 1; i--)
       iFatt *= i;

     Console.WriteLine("Il fattoriale di " + k + " è " + iFatt);
       Console.ReadKey();
   }
}

Notare che ho inizializzato la risultante iFatt ( i..Fatt perchè è di tipo intero ) a 1 perchè se fosse stato zero avrei ottenuto zero perchè le divisioni per zero sono sempre zero. Faccio terminare il ciclo fino al valore 2 perchè le moltiplicazioni per 1 non cambiano il risultato. Come sempre se volete maggiori informazioni potete postare una domanda sul nostro forum di informatica.

<< Lezione Precedente – Inizio CorsoIndice LezioniLezione Successiva >>

Pubblicato
Categorie: C# (sharp)

Di Giampaolo Rossi

Sviluppatore software da oltre 16 anni.

2 commenti

  1. Salve,
    trovo molto interessante il suo blog. Non so a quando risale questo post, ma vorrei segnalarle che, a mio avviso, c’è un errore nella prima condizione:
    if (x > 0 && y > 0)
    poiché il controllo si riferisce alla condizione di positività di entrambe le variabili.
    Buon lavoro,
    Nicola

I commenti sono chiusi.