fondamenti-06.tex 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587
  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{May 11, 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. \begin{comment}
  338. \begin{frame}[fragile]{Costrutto di controllo while}
  339. \begin{itemize}
  340. \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?).
  341. \begin{center}
  342. \begin{C}
  343. while (condizione) {
  344. corpo_del_ciclo;
  345. }
  346. \end{C}
  347. \end{center}
  348. \item Esempio:
  349. \begin{C}
  350. a = 10;
  351. while (a > 5) {
  352. b = b + c;
  353. a = a - b;
  354. }
  355. c = c + 1;
  356. \end{C}
  357. \end{itemize}
  358. \end{frame}
  359. \begin{frame}[fragile]{Costrutto di controllo do while}
  360. \begin{itemize}
  361. \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 .
  362. \begin{center}
  363. \begin{C}
  364. do {
  365. corpo_del_ciclo;
  366. } while (condizione);
  367. \end{C}
  368. \end{center}
  369. \item Esempio:
  370. \begin{C}
  371. a = 10;
  372. do {
  373. b = b + c;
  374. a = a - b;
  375. } while (a > 5)
  376. c = c + 1;
  377. \end{C}
  378. \end{itemize}
  379. \end{frame}
  380. \begin{frame}[fragile]{Costrutto di controllo for}
  381. \begin{itemize}
  382. \item Il costrutto di controllo \ccode{for} serve per costruire un ciclo, ma con delle comode aggiunte per gestire il numero di iterazioni.
  383. \begin{center}
  384. \begin{C}
  385. for (inizializzazione; condizione; incremento) {
  386. corpo_ciclo;
  387. }
  388. \end{C}
  389. \end{center}
  390. \item Esempio:
  391. \begin{C}
  392. a = 5;
  393. for (i = 0; i < 10; i++) {
  394. b = b + a;
  395. }
  396. b = b;
  397. \end{C}
  398. \end{itemize}
  399. \end{frame}
  400. \begin{frame}[fragile]{break e continue}
  401. Sono inoltre disponibili due parole chiave che possono aiutare ulteriormente nella gestione delle iterazioni di un ciclo:
  402. \begin{description}
  403. \item [\ccode{break}]: interrompe immediatamente l'esecuzione del ciclo, ignorando la condizione e eventuali statement successivi del ciclo.
  404. \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.
  405. \end{description}
  406. \end{frame}
  407. \begin{frame}[fragile]{Costrutto di controllo switch}
  408. \begin{itemize}
  409. \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.
  410. \begin{center}
  411. \begin{C}
  412. switch (variabile) {
  413. case 1:
  414. codice_1;
  415. break;
  416. case 2:
  417. codice_2;
  418. break;
  419. default:
  420. codice_default;
  421. break;
  422. }
  423. \end{C}
  424. \end{center}
  425. \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}.
  426. \end{itemize}
  427. \end{frame}
  428. \end{comment}
  429. \begin{frame}[fragile]{Calcolo Esponenziale}
  430. \begin{itemize}
  431. \item Implementare il calcolo dell'esponenziale $e^x$ tramite l'uso della serie di Maclaurin
  432. \item $e^{x} = f(0)\frac{x^{0}}{0!} + f'(0)\frac{x^{1}}{1!} + f''(0)\frac{x^{2}}{2!} + ...$
  433. \item $e^{x} = \frac{x^{0}}{0!} + \frac{x^{1}}{1!} + \frac{x^{2}}{2!} + ...$
  434. \item Fare uso estensivo dei sottoprogrammi.
  435. \end{itemize}
  436. \end{frame}
  437. \begin{frame}[fragile]{Vettore al Quadrato}
  438. \begin{itemize}
  439. \item Implementare un sottoprogramma che, preso in input in vettore di interi, rimpiazzi ogni intero originalmente conenuto con il suo quadrato.
  440. \end{itemize}
  441. \end{frame}
  442. \begin{frame}[fragile]{Libreria Stringhe}
  443. \begin{itemize}
  444. \item Implementare, utilizzando i puntatori, le seguenti funzioni di libreria per la manipolazione di stringhe:
  445. \item \ccode{strlen(char *stringa);}
  446. \item \ccode{strcpy(char *str\_dst, char *str\_src);}
  447. \item \ccode{strcat(char *str\_dst, char *str\_src);}
  448. \item \ccode{strcmp(char *stringa1, char *stringa2);}
  449. \end{itemize}
  450. \end{frame}
  451. \begin{frame}[fragile]{Anagrammi}
  452. \begin{itemize}
  453. \item Implementare, utilizzando i puntatori, un sottoprogramma C che controlla se due stringhe date in input sono anagrammi.
  454. \end{itemize}
  455. \end{frame}
  456. \begin{frame}[fragile]{Parole Hertziane}
  457. \begin{itemize}
  458. \item Due parole \emph{a} e \emph{b} sono \emph{Hertziane} se entrambe sono leggibili anche oscillando durante la lettura dei caratteri tra di esse. Ad esempio, le parole \emph{tigre} e \emph{fiera}, possono entrambe essere lette partendo dal primo carattere di ciascuna, e oscillando poi sui caratteri dell'altra.
  459. \item Nella situazione descritta sopra, parliamo di parole direttamente \emph{Hertziane}, ma possiamo anche avere parole inversamente \emph{Hertziane}, dove la lettura comincia dalla prima lettera della parola opposta. \emph{Fiera} e \emph{Fresa} sono esempi di parole inversamente \emph{Hertziane}.
  460. \end{itemize}
  461. \end{frame}
  462. \begin{frame}[fragile]{Gara di Tuffi}
  463. \begin{itemize}
  464. \item Nello sport dei tuffi individuali, ogni tuffo viene valutato da cinque giudici diversi.
  465. \item Ogni giudice esprime un punteggio individuale da 0 a 10, con la possibilità di esprimere anche mezzi punti. Il punteggio 0 corrisponde a un tuffo completamente sbagliato; il punteggio 10 a un tuffo perfetto.
  466. \item Per eliminare eventuali preferenze soggettive, il punteggio più alto e quello più basso vengono scartati in automatico. Ogni punteggio è espresso indipendentemente dal grado di difficoltà del tuffo (un valore numerico che va da 1.3 a 3.6) e il punteggio finale attribuito all’atleta è calcolato come prodotto della somma dei tre punteggi rimanenti per il grado di difficoltà del tuffo .
  467. \end{itemize}
  468. \end{frame}
  469. \begin{frame}[fragile]{Gara di Tuffi}
  470. \begin{itemize}
  471. \item Data la macro NUM\_GIUDICI e la definizione di tipo punteggi\_tuffo
  472. \begin{lstlisting}[language=C]
  473. #define NUM_GIUDICI 5
  474. typedef float punteggi_tuffo[NUM_GIUDICI];
  475. \end{lstlisting}
  476. \item scrivere in C la funzione:
  477. \begin{lstlisting}[language=C]
  478. float calcola_punteggio(punteggi_tuffo voti, floatdiff)
  479. \end{lstlisting}
  480. che calcola il punteggio finale di un tuffo a partire dai punteggi individuali espressi dai giudici (voti) e dal grado di difficoltà del tuffo (diff).
  481. \end{itemize}
  482. \end{frame}
  483. \begin{frame}[fragile]{Gara di Tuffi}
  484. \begin{itemize}
  485. \item A una gara di tuffi partecipa un certo numero di atleti, indicato con la costante \ccode{NUM\_ATLETI}.
  486. \item Si considerino le seguenti definizioni:
  487. \begin{lstlisting}[language=C]
  488. #define NUM_ATLETI 6
  489. #define MAX_STRING 30
  490. typedef struct {
  491. char nome[MAX_STRING];
  492. char cognome[MAX_STRING];
  493. char sesso;
  494. char nazionalita[MAX_STRING];
  495. float punteggio_finale;
  496. } atleta;
  497. typedef atleta gara[NUM_ATLETI];
  498. \end{lstlisting}
  499. \end{itemize}
  500. \end{frame}
  501. \begin{frame}[fragile]{Gara di Tuffi}
  502. \begin{itemize}
  503. \item Il tipo di dato atleta definisce le proprietà di ciascun partecipante alla gara. L’attributo sesso del tipo di dato atleta distingue uomini ('m') e donne ('f'), mentre l’attributo punteggio\_finale è da intendersi come il punteggio complessivo ottenuto da un atleta durante tutta la manifestazione.
  504. Il tipo di dato gara definisce una array in cui le celle rappresentano gli atleti.
  505. \item Scrivere in C la funzione:
  506. \begin{lstlisting}[language=C]
  507. void stampa_migliori(gara G)
  508. \end{lstlisting}
  509. che stampa a schermo la migliore donna e il miglior uomo della competizione.
  510. \end{itemize}
  511. \end{frame}
  512. \begin{comment}
  513. \section{Extra}
  514. \begin{frame}[fragile]{Monte Carlo}
  515. Scrivere un programma che calcoli il valore di $\pi$, utilizzando il metodo di Monte Carlo.
  516. \end{frame}
  517. \end{comment}
  518. \begin{comment}
  519. \begin{frame}[t,allowframebreaks]
  520. \frametitle{References}
  521. \nocite{*}
  522. \printbibliography
  523. \end{frame}
  524. \end{comment}
  525. \begin{comment}
  526. \begin{frame}
  527. \frametitle{License}
  528. \begin{center}
  529. \vfill
  530. \includesvg[height=1.5cm]{by-sa}\\
  531. {\footnotesize These slides are published under a Creative Commons Attribution-ShareAlike 4.0 license\footnote{\url{https://creativecommons.org/licenses/by-sa/4.0/}}.}
  532. \end{center}
  533. \end{frame}
  534. \end{comment}
  535. \end{document}