Skip to content

Commit 39f4c9e

Browse files
committed
Prima esercitazione
1 parent ace4e30 commit 39f4c9e

File tree

3 files changed

+169
-0
lines changed

3 files changed

+169
-0
lines changed

latex/exercises/book_header.tex

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
\usepackage[T1]{fontenc}
2+
\usepackage[utf8]{inputenc}
3+
\usepackage{lmodern}
4+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5+
% Source: http://en.wikibooks.org/wiki/LaTeX/Hyperlinks %
6+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7+
\usepackage{hyperref}
8+
\usepackage{graphicx}
9+
\usepackage[english]{babel}
10+
11+
\usepackage{bm}
12+
\usepackage{amsmath}
13+
\usepackage{amsfonts}
14+
15+
\usepackage{amsthm}
16+
\newtheorem{definition}{Definizione}
17+
\newtheorem{theorem}{Teorema}
18+
\renewcommand*{\proofname}{Dimostrazione}
19+
\newtheorem{example}{Esempio}
20+
\newtheorem{lemma}{Lemma}
21+
\newtheorem{exercise}{Esercizio}
22+
\newtheorem{property}{Proprietà}
23+
24+
\usepackage[ruled,vlined,linesnumbered]{algorithm2e}
25+
26+
\newcommand{\xstar}{x^*}
27+
\newcommand{\bxstar}{\bm{x^*}}
28+
\newcommand{\bx}{\bm{x}}
29+
\newcommand{\Rn}{\mathbb{R}^n}
30+
\newcommand{\RR}{\mathbb{R}}
31+
\newcommand{\norm}[1]{\left\lvert \left\lvert #1 \right\lvert \right\lvert}
32+
33+
\newcommand{\fx}{f(x)}
34+
35+
\newcommand{\gradfx}{\nabla \fx}
36+
\newcommand{\Gx}{\nabla f(x)}
37+
\newcommand{\Gk}{\nabla f(x_k)}
38+
\newcommand{\Gs}{\nabla f(\xstar)}
39+
40+
\newcommand{\Hx}{\nabla^2 f(x)}
41+
\newcommand{\Hk}{\nabla^2 f(x_k)}
42+
\newcommand{\Hs}{\nabla^2 f(\xstar)}
43+
\newcommand{\hess}{\nabla^2 f}
44+
45+
\newcommand{\step}{\alpha}
46+
\newcommand{\Seqx}{\{ x_k \}}
47+
48+
\usepackage{mathtools}
49+
\newcommand\myeq{\stackrel{\mathclap{\normalfont\mbox{def}}}{=}}
50+
51+
\usepackage{listings}
52+
\lstset
53+
{
54+
language=Matlab,
55+
basicstyle=\normalsize,
56+
numbers=left,
57+
stepnumber=1,
58+
showstringspaces=false,
59+
tabsize=1,
60+
breaklines=true,
61+
breakatwhitespace=false,
62+
frame=single
63+
}

latex/exercises/es_1.pdf

156 KB
Binary file not shown.

latex/exercises/es_1.tex

Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
\documentclass[11pt,a4]{article}
2+
3+
\usepackage[margin=2cm]{geometry}
4+
5+
6+
\usepackage{collectbox}
7+
8+
\newcommand{\mybox}[2]{$\quad$\fbox{
9+
\begin{minipage}{#1cm}
10+
\hfill\vspace{#2cm}
11+
\end{minipage}
12+
}}
13+
14+
\usepackage{fancyhdr}
15+
\pagestyle{fancy}
16+
\rhead{Programmazione 1 - Esercitazione 1, A.A. 2018-2019}
17+
18+
\include{book_header}
19+
20+
\begin{document}
21+
\thispagestyle{empty}
22+
\hrule
23+
\begin{center}
24+
{\Large {\bf Esercitazione 1 \hspace{3cm} $\quad \quad$ Programmazione 1, a.a. 2018-2019}}
25+
\end{center}
26+
{\bf Cognome: }\hspace{2.5cm} {\bf Nome: } \hspace{2.5cm} {\bf Matricola: } \\\
27+
\hrule
28+
29+
\begin{enumerate}
30+
\section*{}
31+
32+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
33+
\item Scrivere una procedura ricorsiva chiamata {\tt Tab(x)} che prende in input un numero naturale {\tt x} e stampa a video
34+
la tabellina del numero corrispondente sino a 10. Per esempio, applicando il valore 7 alla procedura {\tt Tab(x)},
35+
la procedura stampa a video (un numero per riga):
36+
\begin{verbatim}
37+
7 14 21 28 .. 70
38+
\end{verbatim}
39+
40+
\mybox{15}{3.5}
41+
42+
43+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
44+
\item Il metodo di Newton per trovare la radice cubica di un numero si basa sul fatto che se
45+
$y$ è un'approssimazione della radice cubica di x, allora un'approssimazione migliore è data
46+
da $\frac{\frac{x}{y^2} + 2y}{3}$.
47+
Si usi questa formula per implementare una procedura analoga a quella scritta per trovare
48+
la radice quadrata. Si prenda spunto dalle soluzioni elaborate nel notebook Lab3.
49+
50+
\mybox{15}{4.5}
51+
52+
53+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
54+
\item Si consideri l'algoritmo del contadino russo per moltiplicare due numeri interi positivi spiegato a lezione.
55+
Si scriva una funzione chiamata {\tt MultiRec(a, b)} che prende in input due numeri interi {\tt a} e {\tt b}
56+
e calcola il prodotto tra i due numeri usando l'algoritmo appena citato.
57+
La funzione implementata deve avere un {\underline {\bf processo di calcolo ricorsivo lineare}} (si veda il notebook Lab4).
58+
59+
{\bf NOTA}: In Python per effettuare la divisione intera tra due numeri si usa l'operatore {\tt //} (e.g. {\tt 3 // 2 = 1}).
60+
Per calcolare il resto di una divisione si usa l'operatore modulo {\tt \%} (e.g. {\tt 7\%4 = 3}).
61+
Si osservi che un numero {\tt x} è pari solo se {\tt x \% 2 == 0}.
62+
63+
\mybox{15}{3.5}
64+
65+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
66+
\item Si scriva una funzione {\tt MultiIter(a, b)} che implementa lo stesso algoritmo dell'esercizio precedente, ma con una procedura che realizza
67+
un {\underline {\bf processo di calcolo iterativo lineare}} (si veda il notebook Lab4).
68+
69+
\mybox{15}{3.5}
70+
71+
72+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
73+
\item Si scriva una funzione ricorsiva {\tt FibonacciIter(n)} che calcolo l'$n$-esimo numero della sequenza di Fibonacci
74+
che realizza un {\underline {\bf processo di calcolo iterativo lineare}}.
75+
76+
\mybox{15}{3.5}
77+
78+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
79+
\item Il Massimo Comun Divisore (MCD) di due numeri intero $a$ e $b$ è definito come
80+
il più grande numero intero che divide sia $a$ che $b$ senza resto.
81+
Esiste un metodo famoso, dovuto ad Euclide, per calcolare il MCD.
82+
L'idea dell'algoritmo si basa sull'osservazione che, se $r$ è il resto di quando $a$ è diviso per $b$,
83+
allora i divisori comuni di $a$ e $b$ sono esattamente gli stessi divisori comuni tra $b$ e $r$.
84+
Quindi possiamo usare l'equazione $$MCD(a,b) = MCD(b,r)$$ per ridurre il problema di
85+
trovare i divisori comuni calcolando il MCD tra coppie di numeri interi via via più piccoli. Per esempio:
86+
87+
\begin{verbatim}
88+
MCD(206, 40) = MCD(40, 6) = MCD(6,4) = MCD(4,2) = MCD(2,0) = 2
89+
\end{verbatim}
90+
91+
Scrivere una procedura che calcola il massimo comune divisore usando l'algoritmo di Euclide.
92+
{\bf NOTA}: per calcolare il resto di una divisione tra due numeri interi si usa l'operatore modulo {\tt \%},
93+
ovvero il simbolo percentuale (esempio: {\tt 7\%3 = 1}).
94+
95+
\mybox{15}{3.5}
96+
97+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
98+
\item {\bf CHALLENGE (facoltativo)}: Si consideri il problema seguente. Siano date le monetine
99+
da 1, 2, 5 e 10 centesimi di euro: quanti modi esistono per cambiare una monetina da 20 centesimi?
100+
E se consideriamo anche le monetine da 20 e 50 centesimi,
101+
in quanti modi possiamo cambiare una moneta da un euro?
102+
Si utilizzino solo gli elementi del linguaggio Python visti a lezione. Mandare la soluzione per email al docente.
103+
104+
\end{enumerate}
105+
106+
\end{document}

0 commit comments

Comments
 (0)