Page 512 - Informatica dalla A a Z
P. 512
#define N 5
int main(int argc, char *argv[])
{
int a[N]={3, 4, 1, 5, 2};
int i, j, temp;
for(i=1; i<N; i++)
{
for(j=0; j<N-i; j++)
{
if(a[j]>a[j+1])
{
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
} /* fine if */
} /* fine for j */
} /* fine for i */
for(i=0; i<N; i++)
{
printf(“%d”,a[i]);
}
printf(“\n”);
}
Abbiamo ovviamente due cicli nidificati: il primo, quello con la i varia da 1 fino a N-1; men-
tre j confronta, sempre a coppie, tutti gli elementi, dal primo (indice j = 0) al penultimo, in
quanto l’ultimo è già in posizione definitiva. La procedura continua così fino all’ordina-
mento totale dell’array.
Nota: L’invocazione della procedura equivale a un salto incondizionato, ma la procedura
chiamata non conosce a priori dove riprendere l’esecuzione una volta terminata.
L’istruzione RET, al termine della procedura, recupera il valore del PC per riprendere l’ese-
cuzione del chiamante da dove è stato interrotto
Le Funzioni
Per evitare la replicazione del codice, si utilizzano le “funzioni”.
!
Esempio: programma per il calcolo delle combinazioni. Cn,k=
!(−)!
#include <iostream>
using namespace std;
508