Prova Programazione 5
Prova Programazione 5
Prova programmazione
Teoria
- Fasi di un processo
- Scheduler - Time sharing
C
- Ricerca valore
- Descrivi l’algoritmo Insertion Sort
MatLab
- Consideriamo la funzione z = e^(x) * sin(y) - cos(x) * y^2 nel dominio rettangolare
-2 ≤ x ≤ 2, -2 ≤ y ≤ 2. Scrivere una funzione che generi una nestra gra ca con il
gra co della super cie e le curve di livello per la funzione data. Successivamente,
scrivere uno script che richieda all'utente il numero desiderato di punti per
calcolare i valori.
- Creare uno script che inizializzi un vettore z di 200 punti equispaziati nell'intervallo
[-2, 2], valuti la funzione z = e^(-z^2) e z = sin(z), e salvi i dati in due vettori
separati su le. Successivamente, scrivere uno script per caricare i dati da le,
pulire il workspace e generare un gra co sovrapposto delle due funzioni. In ne,
salvare l'immagine ottenuta nel formato jpg.
- 1 Fasi di un processo
Un Processo è una copia del programma nella memoria principale in esecuzione
assieme ai dati necessari per il suo funzionamento.
* PRONTO, quando gli vengono inseriti tutti i dati necessari, ma ancora non gli
viene assegnato il processore;
1
fi
fi
fi
ff
fi
fi
fi
fi
fi
* TERMINATO, il programma ha compiuto ciò per cui è stato mandato in
esecuzione e viene liberata la memoria occupata dal processo, inoltre il
processore stesso viene assegnato ad altri processi in coda.
- 2 Scheduler
Lo scheduler è una parte del sistema operativo responsabile della gestione delle
applicazione, in modo particolare si occupa di gestire i quanti di tempo da
assegnare a ciascun processo, secondo una logica ben precisa, ovvero quella di
dare precedenza ai programmi interattivi (così da evitare che l’utente debba sostare
davanti ad un’eterna attesa). Grazie allo scheduler e al time sharing viene garantito
un quasi parallelismo delle operazioni, alla base dei sistemi multiprogrammati, che
consentono di utilizzare in modo più e ciente la CPU dando all’utente una
sensazione di multitasking nell’utilizzo del dispositivo.
- 3 Ricerca valore
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#de ne N 5;
Int main ()
Int A[N]
ric=-1;
A[i]=1+rand()%10;
2
fi
ffi
If (ric==A[i])
pos=I+1;
Break;
If (ric==-1)
Else
Return 0;
All’inizio l’indice lento (i), punta al primo valore dell’array, mentre l’altro indice, quello
veloce (j), al secondo elemento dell’array, questi vengono confrontati tra loro e lo
stesso avviene tra il primo e tutti gli altri indici, al termine di questo primo confronto
l’indice lento punta al successivo elemento dell’array e così via no a che l’indice
più lento non punta all’ultimo elemento, garantendo così un corretto ordinamento
dell’array.
3
fi
- 5 Consideriamo la funzione z = e^(x) * sin(y) - cos(x) * y^2 nel dominio
rettangolare -2 ≤ x ≤ 2, -2 ≤ y ≤ 2. Scrivere una funzione che generi una nestra
gra ca con il gra co della super cie e le curve di livello per la funzione data.
Successivamente, scrivere uno script che richieda all'utente il numero desiderato
di punti per calcolare i valori.
%valore.m
%script che richiede su quanti valori creare il gra co e che de nisca la funzione di
%cui si vuole visualizzare il gra co
x=linspace(-2,2,n);
y=linspace(-2,2,n);
[X,Y]=meshgrid (x,y);
gra co (X,Y,Z)
%gra co.m
% funzione che generi una nestra gra ca con il gra co della super cie e le curve di
%livello per la funzione data.
Surf (A,B,C);
Xlabel x
Ylabel y
Zlabel z
Hold on
Contour (A,B,C);
Hold o
End
4
fi
fi
fi
ff
fi
fi
fi
fi
fi
fi
fi
fi
fi
fi
fi
fi
fi
fi
- 6 Creare uno script che inizializzi un vettore z di 200 punti equispaziati
nell'intervallo [-2, 2], valuti la funzione z = e^(-z^2) e z = sin(z), e salvi i dati in due
vettori separati su le. Successivamente, scrivere uno script per caricare i dati da
le, pulire il workspace e generare un gra co sovrapposto delle due funzioni.
In ne, salvare l'immagine ottenuta nel formato jpg.
%inizio.m
% script che inizializzi un vettore z di 200 punti equispaziati nell'intervallo [-2, 2],
%valuti la funzione z = e^(-z^2) e z = sin(z), e salvi i dati in due vettori separati su
% le.
z=linspace (-2,2,200);
y1= exp.(^(-z.^2));
y2=sin(z);
%stampa.m
Load le.dat
A= le;
Plot (A(1,:),A(2,:),”r”,A(1,:),A(3,:));
Xlabel x
Ylabel y
5
fi
fi
fi
fi
fi
fi
fi
fi
fi
fi
fi
fi
fi