fondamenti-04.tex 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615
  1. \documentclass[10pt]{beamer}
  2. \setbeamercovered{transparent}
  3. \usetheme{Antibes}
  4. \usecolortheme{beaver}
  5. \usepackage[utf8]{inputenc}
  6. \usepackage[svgpath=images/]{svg}
  7. \usepackage{graphicx}
  8. \graphicspath{ {images/} }
  9. \usepackage[hyphenbreaks]{breakurl}
  10. \usepackage{hyperref}
  11. \hypersetup{breaklinks=true}
  12. \usepackage{subcaption}
  13. \usepackage{makecell}
  14. \usepackage{dirtytalk}
  15. \usepackage{amsmath}
  16. \usepackage{mathtools}
  17. \usepackage{listingsutf8}
  18. \usepackage[italian]{babel}
  19. % Todo red marker
  20. \usepackage{xcolor}
  21. \newcommand{\todo}[1]{}
  22. \renewcommand{\todo}[1]{{\color{red} TODO: {#1}}}
  23. % Stuff for presentation
  24. \usepackage{pgfpages}
  25. \setbeameroption{hide notes} % Only slides
  26. %\setbeameroption{show only notes} % Only notes
  27. %\setbeameroption{show notes}
  28. %\setbeameroption{show notes on second screen=right} % Both
  29. % Give a slight yellow tint to the notes page
  30. %\setbeamertemplate{note page}{\pagecolor{yellow!5}\insertnote}\usepackage{palatino}
  31. % Remove beamer navigation stuff
  32. %\setbeamertemplate{navigation symbols}{}
  33. \beamertemplatenavigationsymbolsempty
  34. %\setbeamerfont{page number in head/foot}{size=\small}
  35. %\setbeamertemplate{page number in head/foot}[framenumber]
  36. %\setbeamertemplate{page number in head/foot}[totalframenumber]
  37. \setbeamertemplate{footline}[frame number]
  38. % Listings packages
  39. \usepackage{verbatim}
  40. \usepackage{inconsolata}
  41. \usepackage{listings}
  42. \usepackage{multicol}
  43. \usepackage{lscape}
  44. \newcommand{\optcolor}[1]{\color{#1}}
  45. \lstset{
  46. basicstyle={\ttfamily\footnotesize},
  47. keywordstyle=\optcolor{blue},
  48. stringstyle=\optcolor{red},
  49. %commentstyle=\optcolor{green},
  50. morecomment=[l][\optcolor{magenta}]{\#},
  51. escapechar={|},
  52. }
  53. \definecolor{alt}{gray}{0.9}
  54. \definecolor{darkgreen}{rgb}{0,0.65,0}
  55. \lstdefinelanguage{llvm}{
  56. basicstyle={\ttfamily\footnotesize},
  57. morecomment = [l]{;},
  58. commentstyle=\optcolor{darkgreen},
  59. morestring=[b]",
  60. sensitive = true,
  61. classoffset=0,
  62. alsoletter=:\%.,
  63. keywordstyle=\optcolor{teal},
  64. keywordsprefix={\%},
  65. morekeywords={\@a},
  66. %keywordstyle=\optcolor{darkgray},
  67. classoffset=1,
  68. keywordstyle=\optcolor{blue},
  69. morekeywords={
  70. define, declare, global, constant,
  71. internal, external, private,
  72. linkonce, linkonce_odr, weak, weak_odr, appending,
  73. common, extern_weak,
  74. thread_local, dllimport, dllexport,
  75. hidden, protected, default,
  76. except, deplibs,
  77. volatile, fastcc, coldcc, cc, ccc,
  78. x86_stdcallcc, x86_fastcallcc,
  79. ptx_kernel, ptx_device,
  80. signext, zeroext, inreg, sret, nounwind, noreturn,
  81. nocapture, byval, nest, readnone, readonly, noalias, uwtable,
  82. inlinehint, noinline, alwaysinline, optsize, ssp, sspreq,
  83. noredzone, noimplicitfloat, naked, alignstack,
  84. module, asm, align, tail, to,
  85. addrspace, section, alias, sideeffect, c, gc,
  86. target, datalayout, triple,
  87. blockaddress
  88. },
  89. classoffset=2,keywordstyle=\optcolor{blue},
  90. morekeywords={
  91. fadd, sub, fsub, mul, fmul, add,
  92. sdiv, udiv, fdiv, srem, urem, frem,
  93. and, or, xor,
  94. icmp, fcmp,
  95. eq, ne, ugt, uge, ult, ule, sgt, sge, slt, sle,
  96. oeq, ogt, oge, olt, ole, ord, ueq, ugt, uge,
  97. ult, ule, une, uno,
  98. nuw, nsw, exact, inbounds,
  99. phi, call, select, shl, lshr, ashr, va_arg,
  100. trunc, zext, sext,
  101. fptrunc, fpext, fptoui, fptosi, uitofp, sitofp,
  102. ptrtoint, inttoptr, bitcast,
  103. ret, br, indirectbr, switch, invoke, unwind, unreachable,
  104. malloc, alloca, free, load, store, getelementptr,
  105. extractelement, insertelement, shufflevector,
  106. extractvalue, insertvalue,
  107. },
  108. classoffset=3,
  109. keywordstyle=\optcolor{purple},
  110. morekeywords={
  111. @v0, @a0, @t0, @ra, @pc, @r1, @ZF, @rax,@rsp
  112. @main,@function,@root,@function_call
  113. },
  114. classoffset=4,keywordstyle=\optcolor{blue},
  115. morekeywords={
  116. i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18,
  117. i19, i20, i21, i22, i23, i24, i25, i26, i27, i28, i29, i30, i31, i32, i33, i34,
  118. i35, i36, i37, i38, i39, i40, i41, i42, i43, i44, i45, i46, i47, i48, i49, i50,
  119. i51, i52, i53, i54, i55, i56, i57, i58, i59, i60, i61, i62, i63, i64, i80, i512,
  120. void, half, float, double, fp128, x86_fp80, ppc_fp128, x86_mmx, label, metadata
  121. },
  122. classoffset=5,keywordstyle=\optcolor{teal},
  123. morekeywords={
  124. entry:,true:,epilogue:,bb.main:,bb._init.0x8,
  125. dispatcher:,bb.one:,bb.two:,fallthrough:,call:,BB1:,BB2:,BB3:
  126. }
  127. }
  128. % Packages for graphs
  129. \usepackage{tikz}
  130. \usetikzlibrary{arrows,automata}
  131. \usetikzlibrary{shapes.geometric}
  132. \usetikzlibrary{positioning}
  133. \usetikzlibrary{shapes.multipart}
  134. \usetikzlibrary{positioning}
  135. \usetikzlibrary{decorations.pathreplacing}
  136. \usetikzlibrary{fit}
  137. \usetikzlibrary{calc}
  138. \usetikzlibrary{matrix}
  139. \usetikzlibrary{patterns}
  140. \usetikzlibrary{quotes}
  141. \usetikzlibrary{shapes.misc}
  142. \tikzset{
  143. diagonal fill/.style 2 args={fill=#2, path picture={
  144. \fill[#1, sharp corners] (path picture bounding box.south west) -|
  145. (path picture bounding box.north east) -- cycle;}},
  146. reversed diagonal fill/.style 2 args={fill=#2, path picture={
  147. \fill[#1, sharp corners] (path picture bounding box.north west) |-
  148. (path picture bounding box.south east) -- cycle;}}
  149. }
  150. \tikzset{
  151. fadered/.style={
  152. very thick,
  153. draw=red!50!black!50,
  154. top color=white,
  155. rounded corners=.5mm,
  156. bottom color=red!50!black!20, % and something else at the bottom
  157. font=\sf,
  158. text=black
  159. },
  160. faderedprime/.style={
  161. very thick,
  162. draw=blue!50!black!50,
  163. top color=white,
  164. rounded corners=.5mm,
  165. bottom color=blue!50!black!20, % and something else at the bottom
  166. font=\sf,
  167. text=black
  168. },
  169. nonterminal/.style={
  170. fadegray,
  171. rectangle,
  172. minimum size=6mm,
  173. minimum width=20mm,
  174. minimum height=7mm,
  175. rounded corners=3mm
  176. },
  177. fadegray/.style={
  178. text=black,
  179. very thick,draw=black!50,
  180. top color=white,
  181. bottom color=black!20,
  182. font=\sf
  183. },
  184. terminal/.style={
  185. rectangle,
  186. fadered,
  187. minimum height=7mm,
  188. minimum width=20mm,
  189. rounded corners=3mm,
  190. },
  191. terminalprime/.style={
  192. rectangle,
  193. faderedprime,
  194. minimum height=7mm,
  195. minimum width=20mm,
  196. rounded corners=3mm,
  197. }
  198. }
  199. % Visibility on slides
  200. %\usetikzlibrary{backgrounds}
  201. %\usetikzlibrary{arrows.meta,calc,shapes.callouts,shadows.blur,positioning}
  202. %% Conditional elements in TikZ drawings
  203. \tikzset{
  204. invisible/.style={opacity=0,text opacity=0},
  205. visible on/.style={alt=#1{}{invisible}},
  206. alt/.code args={<#1>#2#3}{%
  207. \alt<#1>{\pgfkeysalso{#2}}{\pgfkeysalso{#3}} % \pgfkeysalso doesn't change the path
  208. },
  209. }
  210. \def\UrlBreaks{\do\/\do-}
  211. % Pgfplots imports
  212. \usepackage{pgfplots}
  213. \usepackage{pgfplotstable}
  214. \pgfplotsset{compat=1.13}
  215. % use acm colors
  216. \definecolor[named]{ACMBlue}{cmyk}{1,0.1,0,0.1}
  217. \definecolor[named]{ACMYellow}{cmyk}{0,0.16,1,0}
  218. \definecolor[named]{ACMOrange}{cmyk}{0,0.42,1,0.01}
  219. \definecolor[named]{ACMRed}{cmyk}{0,0.90,0.86,0}
  220. \definecolor[named]{ACMLightBlue}{cmyk}{0.49,0.01,0,0}
  221. \definecolor[named]{ACMGreen}{cmyk}{0.20,0,1,0.19}
  222. \definecolor[named]{ACMPurple}{cmyk}{0.55,1,0,0.15}
  223. \definecolor[named]{ACMDarkBlue}{cmyk}{1,0.58,0,0.21}
  224. % metropolis colors
  225. \definecolor{mDarkBrown}{HTML}{604c38}
  226. \definecolor{mDarkTeal}{HTML}{23373b}
  227. \definecolor{mLightBrown}{HTML}{EB811B}
  228. \definecolor{mLightGreen}{HTML}{14B03D}
  229. % Custom commands
  230. \newcommand{\ccode}[1]{\texttt{#1}}
  231. \usepackage{xspace}
  232. \newcommand{\newcommandx}[2]{\newcommand{#1}{#2\xspace}}
  233. \newcommandx{\revng}{\texttt{rev.ng}}
  234. \newcommandx{\llvm}{\textsc{llvm}}
  235. \newcommandx{\llvmcapi}{\textsc{llvm-c API}}
  236. \newcommandx{\llvmir}{\textsc{llvm ir}}
  237. \newcommandx{\qemuir}{\textsc{qemu ir}}
  238. \newcommandx{\qemu}{\textsc{qemu}}
  239. \newcommandx{\gcc}{\texttt{gcc}}
  240. \newcommand{\revamb}{\texttt{revamb}}
  241. \newcommand{\llvmcpy}{\texttt{llvmcpy}}
  242. \usepackage[noframe]{showframe}
  243. \usepackage{biblatex}[
  244. backend=biber,
  245. style=numeric,
  246. ]
  247. % Python stuff
  248. % Default fixed font does not support bold face
  249. \DeclareFixedFont{\ttb}{T1}{txtt}{bx}{n}{10} % for bold
  250. \DeclareFixedFont{\ttm}{T1}{txtt}{m}{n}{10} % for normal
  251. % Custom colors
  252. \usepackage{color}
  253. \definecolor{deepblue}{rgb}{0,0,0.5}
  254. \definecolor{deepred}{rgb}{0.6,0,0}
  255. \definecolor{deepgreen}{rgb}{0,0.5,0}
  256. \usepackage{listings}
  257. % Python style for highlighting
  258. \newcommand\pythonstyle{\lstset{
  259. language=Python,
  260. basicstyle=\ttm,
  261. otherkeywords={self}, % Add keywords here
  262. keywordstyle=\ttb\color{deepblue},
  263. emph={MyClass,__init__}, % Custom highlighting
  264. emphstyle=\ttb\color{deepred}, % Custom highlighting style
  265. stringstyle=\color{deepgreen},
  266. frame=tb, % Any extra options here
  267. showstringspaces=false %
  268. }}
  269. % Python environment
  270. \lstnewenvironment{python}[1][]
  271. {
  272. \pythonstyle
  273. \lstset{#1}
  274. }
  275. {}
  276. % Python for external files
  277. \newcommand\pythonexternal[2][]{{
  278. \pythonstyle
  279. \lstinputlisting[#1]{#2}}}
  280. \lstset{inputencoding=utf8/latin1}
  281. % Python for inline
  282. \newcommand\pythoninline[1]{{\pythonstyle\lstinline!#1!}}
  283. % C environment
  284. \definecolor{mGreen}{rgb}{0,0.6,0}
  285. \definecolor{mGray}{rgb}{0.5,0.5,0.5}
  286. \definecolor{mPurple}{rgb}{0.58,0,0.82}
  287. \definecolor{backgroundColour}{rgb}{0.95,0.95,0.92}
  288. \lstdefinestyle{CStyle}{
  289. backgroundcolor=\color{backgroundColour},
  290. commentstyle=\color{mGreen},
  291. keywordstyle=\color{magenta},
  292. numberstyle=\tiny\color{mGray},
  293. stringstyle=\color{mPurple},
  294. basicstyle=\footnotesize,
  295. breakatwhitespace=false,
  296. breaklines=true,
  297. captionpos=b,
  298. keepspaces=true,
  299. numbers=left,
  300. numbersep=5pt,
  301. showspaces=false,
  302. showstringspaces=false,
  303. showtabs=false,
  304. tabsize=2,
  305. language=C
  306. }
  307. \lstnewenvironment{C}[1][]
  308. {
  309. \lstset{style=CStyle}
  310. }
  311. {}
  312. %\addbibresource{bibliography.bib}
  313. %\setbeamersize{text margin left=15pt,text margin right=15pt}
  314. % Information to be included in the title page:
  315. \title[]{Fondamenti di Informatica}
  316. %\subtitle{Presentation relative to ACACES 2019}
  317. \author{Andrea Gussoni\\andrea1.gussoni at polimi.it}
  318. \institute{Politecnico di Milano}
  319. \date{April 8, 2021}
  320. %\titlegraphic{\includegraphics[width=0.60\textwidth]{logo-polimi}}
  321. % Create section header slide
  322. \AtBeginSection{\frame{\sectionpage}}
  323. \begin{document}
  324. \frame{\titlepage
  325. \note[item]{My name is ...}
  326. \note[item]{Thank the audience.}}
  327. \begin{frame}
  328. \frametitle{Table of Contents}
  329. \tableofcontents
  330. \end{frame}
  331. \section{Ripasso Esercitazione Precedente}
  332. \begin{frame}{Ripasso}
  333. \begin{alertblock}{}
  334. Problemi con esercizi della precedente esercitazione?
  335. \end{alertblock}
  336. \end{frame}
  337. \section{Operatori Binari Bitwise}
  338. \begin{frame}[fragile]{Operatori Logici}
  339. Ugualmente, esistono degli operatori logici binari:
  340. \begin{itemize}
  341. \item \ccode{A == B} Uguaglianza.
  342. \item \ccode{A != B} Disuguaglianza.
  343. \item \ccode{A >= B, A > B} Maggiore o uguale, Maggiore.
  344. \item \ccode{A <= B, A < B} Minore o uguale, Minore.
  345. \item \ccode{A \&\& B} and.
  346. \item \ccode{A || B} or.
  347. \end{itemize}
  348. E anche un operatore logico unario:
  349. \begin{itemize}
  350. \item \ccode{!A} not.
  351. \end{itemize}
  352. \end{frame}
  353. \begin{frame}[fragile]{Operatori bitwise}
  354. Esistono anche gli operatori bitwise binari.
  355. \begin{itemize}
  356. \item \ccode{A \& B} and.
  357. \item \ccode{A | B} or.
  358. \item \ccode{A \char`\^ B} xor.
  359. \item \ccode{A << B} Shift a sinistra.
  360. \item \ccode{A >> B} Shift a destra.
  361. \end{itemize}
  362. E anche un operatore bitwise unario:
  363. \begin{itemize}
  364. \item \ccode{\char`\~A} not.
  365. \end{itemize}
  366. \end{frame}
  367. \begin{frame}[fragile]{Operatori di assegnamento}
  368. Conoscete già il principale operatore di assegnamento in C.
  369. \begin{itemize}
  370. \item \ccode{A = B} assegna ad A il valore di B.
  371. \end{itemize}
  372. Ma ci sono anche operatori che fanno una operazione ed un assegnamento, condesati in una notazione unica:
  373. \begin{itemize}
  374. \item \ccode{+=}, \ccode{-=}, \ccode{*=}, \ccode{/=}, \ccode{\%=}, \ccode{\&=}, \ccode{|=}, \ccode{\char`\^=}.
  375. \end{itemize}
  376. Ad esempio:
  377. \begin{center}
  378. \begin{C}
  379. numero -= 42;
  380. \end{C}
  381. \end{center}
  382. è equivalente a:
  383. \begin{center}
  384. \begin{C}
  385. numero = numero - 42;
  386. \end{C}
  387. \end{center}
  388. \end{frame}
  389. \begin{comment}
  390. \begin{frame}[fragile]{Precedenza degli operatori}
  391. Come abbiamo già accennato durante le esercitazioni riguardanti gli operatori logici, vi è una precedenza degli operatori da conoscere. In particolare, per quanto riguarda il C, bisogna rifarsi alla reference:
  392. \begin{itemize}
  393. \item \url{https://en.cppreference.com/w/c/language/operator_precedence}.
  394. \item Sempre meglio però usare le parentesi, anche a costo di essere ridondanti.
  395. \item Come side effect, noterete che l'uso delle parentesi migliora anche la leggibilità del codice altrui.
  396. \item E soprattutto previene l'inserimento di bug accidentali dovuti a modifiche successive.
  397. \end{itemize}
  398. \end{frame}
  399. \begin{frame}[fragile]{Costrutto di controllo while}
  400. \begin{itemize}
  401. \item Il costrutto di controllo \ccode{while}, permette l'esecuzione del \emph{corpo} di esso fino a quando una condizione rimane vera (potenzialmente, infinitamente, come lo fareste?).
  402. \begin{center}
  403. \begin{C}
  404. while (condizione) {
  405. corpo_del_ciclo;
  406. }
  407. \end{C}
  408. \end{center}
  409. \item Esempio:
  410. \begin{C}
  411. a = 10;
  412. while (a > 5) {
  413. b = b + c;
  414. a = a - b;
  415. }
  416. c = c + 1;
  417. \end{C}
  418. \end{itemize}
  419. \end{frame}
  420. \begin{frame}[fragile]{Costrutto di controllo do while}
  421. \begin{itemize}
  422. \item Il costrutto di controllo \ccode{do while}, permette l'esecuzione del \emph{corpo} di esso fino a quando una condizione rimane vera, ma garantendo l'esecuzione di almeno la prima iterazione (la condizione è controllata \emph{dopo} il corpo del ciclo .
  423. \begin{center}
  424. \begin{C}
  425. do {
  426. corpo_del_ciclo;
  427. } while (condizione);
  428. \end{C}
  429. \end{center}
  430. \item Esempio:
  431. \begin{C}
  432. a = 10;
  433. do {
  434. b = b + c;
  435. a = a - b;
  436. } while (a > 5)
  437. c = c + 1;
  438. \end{C}
  439. \end{itemize}
  440. \end{frame}
  441. \begin{frame}[fragile]{Costrutto di controllo for}
  442. \begin{itemize}
  443. \item Il costrutto di controllo \ccode{for} serve per costruire un ciclo, ma con delle comode aggiunte per gestire il numero di iterazioni.
  444. \begin{center}
  445. \begin{C}
  446. for (inizializzazione; condizione; incremento) {
  447. corpo_ciclo;
  448. }
  449. \end{C}
  450. \end{center}
  451. \item Esempio:
  452. \begin{C}
  453. a = 5;
  454. for (i = 0; i < 10; i++) {
  455. b = b + a;
  456. }
  457. b = b;
  458. \end{C}
  459. \end{itemize}
  460. \end{frame}
  461. \begin{frame}[fragile]{break e continue}
  462. Sono inoltre disponibili due parole chiave che possono aiutare ulteriormente nella gestione delle iterazioni di un ciclo:
  463. \begin{description}
  464. \item [\ccode{break}]: interrompe immediatamente l'esecuzione del ciclo, ignorando la condizione e eventuali statement successivi del ciclo.
  465. \item [\ccode{continue}]: passa alla successiva iterazione del ciclo, ignorando eventuali statement successivi nel corpo del ciclo. La condizione dell'iterazione successa viene comunque valutata, e in caso di ciclo \ccode{for} l'operazione di incremento viene comunque effettuata.
  466. \end{description}
  467. \end{frame}
  468. \end{comment}
  469. \begin{comment}
  470. \begin{frame}[fragile]{Costrutto di controllo switch}
  471. \begin{itemize}
  472. \item Il costrutto di controllo \ccode{switch} permette di eseguire differenti porzione di codice in base al valore di una variabile. Spesso può venire usato per ristrutturare catene di \ccode{if else if} in una composizione più elegante.
  473. \begin{center}
  474. \begin{C}
  475. switch (variabile) {
  476. case 1:
  477. codice_1;
  478. break;
  479. case 2:
  480. codice_2;
  481. break;
  482. default:
  483. codice_default;
  484. break;
  485. }
  486. \end{C}
  487. \end{center}
  488. \item la keyword \ccode{break} consente di non fare \emph{fallthrough}, che significa continuare con l'esecuzione del codice senza saltare alla fine dello scope dello \ccode{switch}.
  489. \end{itemize}
  490. \end{frame}
  491. \begin{frame}[fragile]{Costrutto di controllo goto}
  492. \begin{itemize}
  493. \item Non esiste nessun costrutto con nome \ccode{goto} in C.\
  494. \pause
  495. \item Jokes aside, lo statement \ccode{goto label}, può venire usato per reindirizzare l'esecuzione del codice ad una etichetta arbitraria posizionata nel codice. Si usa in specifici contesti, per quanto ci riguarda, bisogna assolutamente preferire e utilizzare codice strutturato (codice che contiene \ccode{goto} è anche chiamato codice non strutturato).
  496. \end{itemize}
  497. \end{frame}
  498. \end{comment}
  499. \begin{frame}[fragile]{Operatori Bitwise}
  500. \begin{center}
  501. \Huge{Esempi pratici}
  502. \end{center}
  503. \end{frame}
  504. \section{Esercizi}
  505. \begin{frame}[fragile]{Tabelline}
  506. \begin{itemize}
  507. \item Implementare un programma in linguaggio C che stampa, fornendo in output una formattazione ragionevole, le tabelline dei numeri dall'1 al 9. Si richiede, in particolare, di stampare l'output andando a capo alla fine della tabellina di ogni numero, e di allineare verticalmente le varie linee delle tabelline.
  508. \end{itemize}
  509. \end{frame}
  510. \begin{frame}[fragile]{Numeri Triangolari}
  511. \begin{itemize}
  512. \item Implementare un programma in linguaggio C che, letto un intero da user input, stabilisce se il numero è un numero triangolare.
  513. \item Osservazione: Viene definito numero triangolare, un numero costituito dalla somma dei primi interi positivi N, per un certo N.
  514. \end{itemize}
  515. \end{frame}
  516. \begin{frame}[fragile]{Sequenze Pari}
  517. \begin{itemize}
  518. \item Implementare un programma in linguaggio C che legge una sequenza (di lunghezza arbitraria) di interi positivi terminata dal valore 0, e al termine della sequenza, stampa quante terne di numeri consecutivi diversi tra loro e pari sono contenute nella sequenza.
  519. \end{itemize}
  520. \end{frame}
  521. \begin{frame}[fragile]{Numeri Affiatati}
  522. \begin{itemize}
  523. \item Implementare un programma in linguaggio C che:
  524. \begin{itemize}
  525. \item elenca tutte le coppie di numeri affiatati, diversi tra loro, composti di due cifre.
  526. \item come sopra, ma dove il numero maggiore della coppia deve anche essere primo.
  527. \item elenca i numeri autoaffiati (ovvero affiatati con se stessi).
  528. \end{itemize}
  529. \item Osservazione: Due numeri si dicono affiatati, se la loro somma è uguale al prodotto delle cifre che li compongono.
  530. \end{itemize}
  531. \end{frame}
  532. \begin{comment}
  533. \section{Extra}
  534. \begin{frame}[fragile]{Monte Carlo}
  535. Scrivere un programma che calcoli il valore di $\pi$, utilizzando il metodo di Monte Carlo.
  536. \end{frame}
  537. \end{comment}
  538. \begin{comment}
  539. \begin{frame}[t,allowframebreaks]
  540. \frametitle{References}
  541. \nocite{*}
  542. \printbibliography
  543. \end{frame}
  544. \end{comment}
  545. \begin{comment}
  546. \begin{frame}
  547. \frametitle{License}
  548. \begin{center}
  549. \vfill
  550. \includesvg[height=1.5cm]{by-sa}\\
  551. {\footnotesize These slides are published under a Creative Commons Attribution-ShareAlike 4.0 license\footnote{\url{https://creativecommons.org/licenses/by-sa/4.0/}}.}
  552. \end{center}
  553. \end{frame}
  554. \end{comment}
  555. \end{document}