|
@@ -0,0 +1,143 @@
|
|
|
+%\documentclass[10pt, a4paper, twocolumn, notitlepage]{article}
|
|
|
+\documentclass[10pt, a4paper, notitlepage]{article}
|
|
|
+\usepackage[utf8]{inputenc}
|
|
|
+\usepackage{lipsum}
|
|
|
+\usepackage{biblatex}
|
|
|
+\usepackage{url}
|
|
|
+\usepackage[breaklinks]{hyperref}
|
|
|
+\usepackage{breakurl}
|
|
|
+%\addbibresource{bibliography.bib}
|
|
|
+\usepackage{comment}
|
|
|
+
|
|
|
+% Todo red marker
|
|
|
+\usepackage{xcolor}
|
|
|
+\newcommand{\todo}[1]{}
|
|
|
+\renewcommand{\todo}[1]{{\color{red} TODO: {#1}}}
|
|
|
+
|
|
|
+\begin{document}
|
|
|
+
|
|
|
+\title{\textbf{Informatica 2020-21}
|
|
|
+Esercizi di Introduzione}
|
|
|
+\author{Andrea Gussoni}
|
|
|
+\author{
|
|
|
+Andrea Gussoni\\
|
|
|
+andrea1.gussoni@polimi.it\\
|
|
|
+{Politecnico di Milano}\\
|
|
|
+}
|
|
|
+%\date{October 24th, 2019}
|
|
|
+%\date{}
|
|
|
+\maketitle
|
|
|
+
|
|
|
+\section{Esercizi di codifica dell'informazione}
|
|
|
+\subsection{Conversioni Binario, Decimale, Esadecimale, Ottale}
|
|
|
+Svolgere le seguenti conversioni rapide:
|
|
|
+\begin{itemize}
|
|
|
+ \item $347_{8} = x_{2}$
|
|
|
+ \item $347_{8} = x_{16}$
|
|
|
+ \item $F3A5_{16} = x_{2}$
|
|
|
+ \item $F3A5_{10} = x_{8}$
|
|
|
+\end{itemize}
|
|
|
+
|
|
|
+\bigskip
|
|
|
+\noindent
|
|
|
+\paragraph{Soluzione:}\
|
|
|
+\begin{itemize}
|
|
|
+ \item $347_{8} = 011100111_{2}$
|
|
|
+ \item $347_{8} = E7_{16}$
|
|
|
+ \item $F3A5_{16} = 1111001110100101_{2}$
|
|
|
+ \item $F3A5_{16} = 171645_{8}$
|
|
|
+\end{itemize}
|
|
|
+\bigskip
|
|
|
+
|
|
|
+\subsection{Codifica Floating Point}
|
|
|
+Conversioni in virgola fissa e virgola mobile.
|
|
|
+\begin{itemize}
|
|
|
+ \item $0|1010.011_{2, virg fissa} = x_{10}$
|
|
|
+ \item $17.675_{10} = x_{2, virg fissa}$
|
|
|
+ \item $6.375_{10} = segno=x, exp=x, mantissa=x..._{2, virg mobile}$
|
|
|
+\end{itemize}
|
|
|
+
|
|
|
+\bigskip
|
|
|
+\noindent
|
|
|
+\paragraph{Soluzione:}\
|
|
|
+\begin{itemize}
|
|
|
+ \item $0|1010.011_{2, virg fissa} = 10.375_{10}$
|
|
|
+ \item $17.675_{10} = 0|10001.1010110_{2, virg fissa}$
|
|
|
+ \item $6.375_{10} = segno=0, exp=00000010, mantissa=1001100..._{2, virg mobile}$
|
|
|
+\end{itemize}
|
|
|
+\bigskip
|
|
|
+
|
|
|
+\subsection{Operazioni bitwise}
|
|
|
+Svolgere le seguenti operazioni bit a bit:
|
|
|
+\begin{itemize}
|
|
|
+ \item $\sim10101010_{c2}$
|
|
|
+ \item $10101010_{c2} \; | \; 01010101_{c2}$
|
|
|
+ \item $10101011_{c2} \; \& \; 11010101_{c2}$
|
|
|
+ \item $11011011_{c2} \; \char`\^ \; 10010111_{c2}$
|
|
|
+\end{itemize}
|
|
|
+
|
|
|
+\bigskip
|
|
|
+\noindent
|
|
|
+\paragraph{Soluzione:}\
|
|
|
+\begin{itemize}
|
|
|
+ \item $\sim10101010_{c2} = 01010101_{c2}$
|
|
|
+ \item $10101010_{c2} \; | \; 01010101_{c2} = 1111111_{c2}$
|
|
|
+ \item $10101011_{c2} \; \& \; 11010101_{c2} = 10000001_{c2}$
|
|
|
+ \item $11011011_{c2} \; \char`\^ \; 10010111_{c2} = 01001000_{c2}$
|
|
|
+\end{itemize}
|
|
|
+\bigskip
|
|
|
+
|
|
|
+\section{Esercizi di dimensionamento dati}
|
|
|
+\subsection{Video di Sorveglianza}
|
|
|
+Per la sorveglianza di un capannone aziendale, viene impiegata una fotocamera con risoluzione Full HD. Il flusso video generato è quindi composto da una sequenza di immagini (anche dette frame) ognuna con dimensione di $1920\times1080$ pixels. Ogni pixel è rappresentato da una tripletta RGB (Red, Green, Blue), ognuna occupante $24$ bit. Ogni secondo, la fotocamera registra $24$ frame. La policy di sicurezza dell'azienda prevede che i filmati debbano venire conservati per un periodo di 1 settimana. Calcolare la dimensione di memoria necessaria per soddisfare tale requisito.
|
|
|
+
|
|
|
+\bigskip
|
|
|
+\noindent
|
|
|
+\paragraph{Soluzione:}\
|
|
|
+Cominciamo calcolando quanta memoria necessita un singolo frame. Ad una risoluzione di $1920\times1080$ ogni frame racchiude un totale di $2073600$ pixels, ed ogni pixel necessita di $3$ byte. Questo significa che ogni fame occuperà uno spazio di circa $5.9 \; MiB$. Ogni secondo vengono catturati $24$ frames, per un totale di $5.9MiB * 24 \approx 141.6 \; MiB$. In una settimana, sono presenti $604800$ secondi, quindi per contenere una settimana di registrazioni saranno necessari $604800 * 141.6 \; MiB \approx 81.7 \; TiB$ di spazio.
|
|
|
+Questa quantità di memoria è molto elevata. Infatti, per memorizzare immagini e video si usano algoritmi di compressione che ne riducono di molto la dimensione.
|
|
|
+
|
|
|
+\subsection{SDR}
|
|
|
+La Software Defined Radio, è una recente tecnologia che permette di ricevere, analizzare e creare trasmissioni radio con tecnologia digitale in modo molto più economico di quanto avveniva in passato. Un software SDR, è in genere in grado di demodulare e salvare un segnale ricevuto sotto forma di registrazione audio. Il segnale viene salvato con un campionamento a $44.1kHz$, di due canali, dove ogni campione ha una dimensione di $24$ bit. Se assumiamo che il nostro software sia in grado di attivare automaticamente $1$ minuto di registrazione ogni volta che un segnale sopra una certa soglia viene ricevuto, quanta memoria servirà immagazzinare il risultato di $1000$ ricezioni di segnale? In aggiunta, ogni attivazione salverà anche $1 \; KiB$ di metadati per poter ricostruire il momento della registrazione.
|
|
|
+
|
|
|
+\bigskip
|
|
|
+\noindent
|
|
|
+\paragraph{Soluzione:}\
|
|
|
+Ogni secondo, il campionamento del segnale richiederà $44100 * 2 * 3B \approx 258.4 \; KiB$. Un minuto di registrazione, richiederà quindi $60 * 258.4 \; KiB \approx 15.1 \; MiB$. Se consideriamo quindi 1000 eventi di attivazione, serviranno $1000 * (15.1 \; MiB + 1 \; KiB) \approx 14.7 \; GiB$.
|
|
|
+
|
|
|
+\clearpage
|
|
|
+
|
|
|
+\section{Esercizi Flowchart}
|
|
|
+\subsection{Verificare se un numero è primo}
|
|
|
+Ideare un algoritmo che dato in input un numero intero $X > 0$, verifica se $X$ è primo.
|
|
|
+
|
|
|
+\subsection{Numeri di Fibonacci}
|
|
|
+Ideare un algoritmo che riceve in input un intero positivo $N$, e che produca in output i primi $N$ numeri della serie di Fibonacci.
|
|
|
+La serie di Fibonacci è così definita: ogni numero della serie di Fibonacci è dato dalla somma dei due numeri che lo precedono, tranne che per i primi due numeri, che sono $0$ e $1$.
|
|
|
+
|
|
|
+In simboli, se $F_{n}$ e l'ennesimo numero della serie di Fibonacci:
|
|
|
+\begin{itemize}
|
|
|
+ \item $F_{0} = 0$
|
|
|
+ \item $F_{1} = 1$
|
|
|
+ \item $F_{n} = F_{n-1} + F_{n-2}$
|
|
|
+\end{itemize}
|
|
|
+
|
|
|
+\subsection{Media}
|
|
|
+Ideare un algoritmo che calcoli la media aritmetica di una serie di valori ricevuti in input. Il valore $0$ rappresenta un valore speciale, che segnala la fine dell'immissione dei valori in input sui quali calcolare poi la media.
|
|
|
+
|
|
|
+\subsection{Confronto}
|
|
|
+Ideare un programma che legge una sequenza di coppie di valori interi ($A$ e $B$), e che per ogni coppia stampi in output "Maggiore" se $A > B$, "Minore" se $A < B$, e che termini se $A = B$.
|
|
|
+
|
|
|
+\subsection{Prodotto tra due numeri}
|
|
|
+Ideare un programma che calcoli il prodotto tra due numeri $A$ e $B$, avendo a disposizione il solo operatore somma.
|
|
|
+
|
|
|
+\begin{comment}
|
|
|
+\clearpage
|
|
|
+
|
|
|
+\section{Wing Python IDE}
|
|
|
+\todo{Riservare 10/15 minuti a fine lezione per introdurre Wing Python (e per i coraggiosi editor + interprete python), in modo tale da anticipare eventuali problemi di installazione/configurazione per poter partire spediti al secondo incontro}
|
|
|
+\end{comment}
|
|
|
+
|
|
|
+%\printbibliography
|
|
|
+
|
|
|
+\end{document}
|