Il 0% ha trovato utile questo documento (0 voti)
17 visualizzazioni5 pagine

Prova Programazione 5

Caricato da

7arjo
Copyright
© © All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd
Il 0% ha trovato utile questo documento (0 voti)
17 visualizzazioni5 pagine

Prova Programazione 5

Caricato da

7arjo
Copyright
© © All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd
Sei sulla pagina 1/ 5

venerdì 16 febbraio 2024

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.

Le fasi di un processo sono 4:

* NUOVO, quando il processo è appena iniziato e mancano ancora i dati necessari


al suo corretto funzionamento;

* PRONTO, quando gli vengono inseriti tutti i dati necessari, ma ancora non gli
viene assegnato il processore;

* ESECUZIONE, fase di e ettivo funzionamento del processo

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 ()

Srand ((unsigned) time (null));

Int ric, pos;

Int A[N]

ric=-1;

For (int i=0; i<N, i++)

A[i]=1+rand()%10;

Printf (“Inserisci il valore da cercare”);

Scanf (“%d”, &ric);

For (int i=0; i<N, i++)

2
fi
ffi
If (ric==A[i])

pos=I+1;

Break;

If (ric==-1)

Pritnf (“Il valore cercato non è presente nell’array”);

Else

Printf (“Il valore cercato si trova nella posizione %d dell’array”, pos);

Return 0;

- 4 Descrivi l’algoritmo Insertion Sort


L’insertion Sort è un algoritmo di ordinamento sul posto, ovvero capace di ordinare
un array senza doverne creare una copia (e dunque risparmiando memoria).

Il funzionamento di tale algoritmo è al quanto semplice, in quanto fa utilizzo di soli


due indici, uno “lento” e l’altro “veloce”.

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

n=input (“Inserire il numero di valori”);

x=linspace(-2,2,n);

y=linspace(-2,2,n);

[X,Y]=meshgrid (x,y);

Z= exp.^((X) .* sin(Y) - cos(X) .* Y^2)

gra co (X,Y,Z)

Function gra co (A,B,C)

%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);

Title (“gra co super cie”);

Xlabel x

Ylabel y

Zlabel z

Hold on

Contour (A,B,C);

Title (“Gra co curve di livello”);

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);

Save le.dat z y1 y2 -ascii; %I dati salvati saranno le righe di una matrice;

%stampa.m

%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.

Load le.dat

A= le;

Plot (A(1,:),A(2,:),”r”,A(1,:),A(3,:));

Title (“Gra co sovrapposto”);

Xlabel x

Ylabel y

Print -djpg gra co.jpg

5
fi
fi
fi
fi
fi
fi
fi
fi
fi
fi
fi
fi
fi

Potrebbero piacerti anche