Le strutture cicliche in linguaggio C sono una parte improtante delle nozioni di programmazione procedurale.
Il ciclo come struttura algoritmica è una sequenza di operazioni ripetuta. Il numero delle ripetizioni può essere prefissato allora si parla di ciclo a ripetizione definita “ciclo for”, mentre quando il numero delle ripetizioni è determinato da una condizione si definisce struttura ciclica indefinita.
La struttura generale di un ciclo for dal punto di vista di un flow chart è rappresentato da questa rappresentata sotto.
Il blocco di ripetizioni è detto “corpo del ciclo”, il ciclo for è sempre associata ad una variabile contatore che letteralmente effettua il conteggio del numero delle ripetizioni.
La codifica in linguaggio C di tale struttura è:
for (contatore=inizio, contatore < fine; passo)
{
istruzione 1;
istruzione 2;
}
istruzione 3;
Il codice è un semplice esempio di ciclo for, il contatore può assumere vari intervalli di variazione ad esempio:
k=0;k<9;k++ ripete 10 volte con il contatore k che va da 0 a 9
k=10;k>0;k– ripete 10 volte e decrementa da 10 a 1 il contatore k
z=-10.0;z<10.0;z=z=z+0.5 effettua 40 passi con incremento di 0.5 da -10.0 a +10.0.
Altri esempi sono presentati nel video n.5, ove introduco anche le funzioni sulle stringhe.
Una stringa in C è definita con la notazione char identificatore[dimensione]; ove la dimensione rappresenta il numero massimo di caratteri.
Ad esempio char word[20]; definisce una parola di 20 caratteri massimo. Una stringa in C può essere anche dichiarata e inizializzata con la notazione: char identificatore[]= “sequenza di caratteri”. In questo caso ad esempio char saluto[]=”Hello World !” dichiara una stringa di 13 caratteri in quanto il numero dei caratteri è pari a 13.
Esistono diverse funzioni per le stringhe che il C mette a disposizione mediante la libreria “string.h”. Le prime funzioni ovvero istruzioni che permettono di eseguire operazioni di manipolazione, e anche confronto fra stringhe sono:
strlen(variabile stringa) determina la lunghezza della stringa tale valore deve andare in un numero intero ad esempio:
int lung=strlen(word);
poi abbiamo la funzione strcmp che confronta due stringhe nella sintassi
strcmp(stringa1, stringa2).
Anche questa funzione ritorna un numero intero e quindi un esempio di sintassi è:
int esito=strcmp(stringa1,stringa2);
il valore può essere -1 se la stringa1 precede nell’ordine alfanumerico la stringa2, 1 se la stringa1 è successiva alla stringa2, e 0 se sono uguali. I caratteri di spaziatura essendo codice ASCII sono tenuti in conto nel confronto.
Un’altra funzione utile è strcat che concatena due stringhe la cui sintassi è strcat(stringa 1,stringa 2); il contenuto della variabile stringa 2 è concatenato (unito al contenuto della stringa 1; questo vuol dire che il risultato è in stringa 1.
Ad esempio strcat(word1,word2) se la stringa 1 contiene “Hello” e la stringa 2 contiene “Wordl” allora il risultato sarà “HelloWorld”.
Per approfondire le nozioni con esempi ecco il video della lezione n.5