123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545 |
- \documentclass[10pt]{beamer}
- \setbeamercovered{transparent}
- \usetheme{Antibes}
- \usecolortheme{beaver}
- \usepackage[utf8]{inputenc}
- \usepackage[svgpath=images/]{svg}
- \usepackage{graphicx}
- \graphicspath{ {images/} }
- \usepackage[hyphenbreaks]{breakurl}
- \usepackage{hyperref}
- \hypersetup{breaklinks=true}
- \usepackage{subcaption}
- \usepackage{makecell}
- \usepackage{dirtytalk}
- \usepackage{amsmath}
- \usepackage{mathtools}
- \usepackage{listingsutf8}
- \usepackage[italian]{babel}
- % Todo red marker
- \usepackage{xcolor}
- \newcommand{\todo}[1]{}
- \renewcommand{\todo}[1]{{\color{red} TODO: {#1}}}
- % Stuff for presentation
- \usepackage{pgfpages}
- \setbeameroption{hide notes} % Only slides
- %\setbeameroption{show only notes} % Only notes
- %\setbeameroption{show notes}
- %\setbeameroption{show notes on second screen=right} % Both
- % Give a slight yellow tint to the notes page
- %\setbeamertemplate{note page}{\pagecolor{yellow!5}\insertnote}\usepackage{palatino}
- % Remove beamer navigation stuff
- %\setbeamertemplate{navigation symbols}{}
- \beamertemplatenavigationsymbolsempty
- %\setbeamerfont{page number in head/foot}{size=\small}
- %\setbeamertemplate{page number in head/foot}[framenumber]
- %\setbeamertemplate{page number in head/foot}[totalframenumber]
- \setbeamertemplate{footline}[frame number]
- % Listings packages
- \usepackage{verbatim}
- \usepackage{inconsolata}
- \usepackage{listings}
- \usepackage{multicol}
- \usepackage{lscape}
- \newcommand{\optcolor}[1]{\color{#1}}
- \lstset{
- basicstyle={\ttfamily\footnotesize},
- keywordstyle=\optcolor{blue},
- stringstyle=\optcolor{red},
- %commentstyle=\optcolor{green},
- morecomment=[l][\optcolor{magenta}]{\#},
- escapechar={|},
- }
- \definecolor{alt}{gray}{0.9}
- \definecolor{darkgreen}{rgb}{0,0.65,0}
- \lstdefinelanguage{llvm}{
- basicstyle={\ttfamily\footnotesize},
- morecomment = [l]{;},
- commentstyle=\optcolor{darkgreen},
- morestring=[b]",
- sensitive = true,
- classoffset=0,
- alsoletter=:\%.,
- keywordstyle=\optcolor{teal},
- keywordsprefix={\%},
- morekeywords={\@a},
- %keywordstyle=\optcolor{darkgray},
- classoffset=1,
- keywordstyle=\optcolor{blue},
- morekeywords={
- define, declare, global, constant,
- internal, external, private,
- linkonce, linkonce_odr, weak, weak_odr, appending,
- common, extern_weak,
- thread_local, dllimport, dllexport,
- hidden, protected, default,
- except, deplibs,
- volatile, fastcc, coldcc, cc, ccc,
- x86_stdcallcc, x86_fastcallcc,
- ptx_kernel, ptx_device,
- signext, zeroext, inreg, sret, nounwind, noreturn,
- nocapture, byval, nest, readnone, readonly, noalias, uwtable,
- inlinehint, noinline, alwaysinline, optsize, ssp, sspreq,
- noredzone, noimplicitfloat, naked, alignstack,
- module, asm, align, tail, to,
- addrspace, section, alias, sideeffect, c, gc,
- target, datalayout, triple,
- blockaddress
- },
- classoffset=2,keywordstyle=\optcolor{blue},
- morekeywords={
- fadd, sub, fsub, mul, fmul, add,
- sdiv, udiv, fdiv, srem, urem, frem,
- and, or, xor,
- icmp, fcmp,
- eq, ne, ugt, uge, ult, ule, sgt, sge, slt, sle,
- oeq, ogt, oge, olt, ole, ord, ueq, ugt, uge,
- ult, ule, une, uno,
- nuw, nsw, exact, inbounds,
- phi, call, select, shl, lshr, ashr, va_arg,
- trunc, zext, sext,
- fptrunc, fpext, fptoui, fptosi, uitofp, sitofp,
- ptrtoint, inttoptr, bitcast,
- ret, br, indirectbr, switch, invoke, unwind, unreachable,
- malloc, alloca, free, load, store, getelementptr,
- extractelement, insertelement, shufflevector,
- extractvalue, insertvalue,
- },
- classoffset=3,
- keywordstyle=\optcolor{purple},
- morekeywords={
- @v0, @a0, @t0, @ra, @pc, @r1, @ZF, @rax,@rsp
- @main,@function,@root,@function_call
- },
- classoffset=4,keywordstyle=\optcolor{blue},
- morekeywords={
- i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18,
- i19, i20, i21, i22, i23, i24, i25, i26, i27, i28, i29, i30, i31, i32, i33, i34,
- i35, i36, i37, i38, i39, i40, i41, i42, i43, i44, i45, i46, i47, i48, i49, i50,
- i51, i52, i53, i54, i55, i56, i57, i58, i59, i60, i61, i62, i63, i64, i80, i512,
- void, half, float, double, fp128, x86_fp80, ppc_fp128, x86_mmx, label, metadata
- },
- classoffset=5,keywordstyle=\optcolor{teal},
- morekeywords={
- entry:,true:,epilogue:,bb.main:,bb._init.0x8,
- dispatcher:,bb.one:,bb.two:,fallthrough:,call:,BB1:,BB2:,BB3:
- }
- }
- % Packages for graphs
- \usepackage{tikz}
- \usetikzlibrary{arrows,automata}
- \usetikzlibrary{shapes.geometric}
- \usetikzlibrary{positioning}
- \usetikzlibrary{shapes.multipart}
- \usetikzlibrary{positioning}
- \usetikzlibrary{decorations.pathreplacing}
- \usetikzlibrary{fit}
- \usetikzlibrary{calc}
- \usetikzlibrary{matrix}
- \usetikzlibrary{patterns}
- \usetikzlibrary{quotes}
- \usetikzlibrary{shapes.misc}
- \tikzset{
- diagonal fill/.style 2 args={fill=#2, path picture={
- \fill[#1, sharp corners] (path picture bounding box.south west) -|
- (path picture bounding box.north east) -- cycle;}},
- reversed diagonal fill/.style 2 args={fill=#2, path picture={
- \fill[#1, sharp corners] (path picture bounding box.north west) |-
- (path picture bounding box.south east) -- cycle;}}
- }
- \tikzset{
- fadered/.style={
- very thick,
- draw=red!50!black!50,
- top color=white,
- rounded corners=.5mm,
- bottom color=red!50!black!20, % and something else at the bottom
- font=\sf,
- text=black
- },
- faderedprime/.style={
- very thick,
- draw=blue!50!black!50,
- top color=white,
- rounded corners=.5mm,
- bottom color=blue!50!black!20, % and something else at the bottom
- font=\sf,
- text=black
- },
- nonterminal/.style={
- fadegray,
- rectangle,
- minimum size=6mm,
- minimum width=20mm,
- minimum height=7mm,
- rounded corners=3mm
- },
- fadegray/.style={
- text=black,
- very thick,draw=black!50,
- top color=white,
- bottom color=black!20,
- font=\sf
- },
- terminal/.style={
- rectangle,
- fadered,
- minimum height=7mm,
- minimum width=20mm,
- rounded corners=3mm,
- },
- terminalprime/.style={
- rectangle,
- faderedprime,
- minimum height=7mm,
- minimum width=20mm,
- rounded corners=3mm,
- }
- }
- % Visibility on slides
- %\usetikzlibrary{backgrounds}
- %\usetikzlibrary{arrows.meta,calc,shapes.callouts,shadows.blur,positioning}
- %% Conditional elements in TikZ drawings
- \tikzset{
- invisible/.style={opacity=0,text opacity=0},
- visible on/.style={alt=#1{}{invisible}},
- alt/.code args={<#1>#2#3}{%
- \alt<#1>{\pgfkeysalso{#2}}{\pgfkeysalso{#3}} % \pgfkeysalso doesn't change the path
- },
- }
- \def\UrlBreaks{\do\/\do-}
- % Pgfplots imports
- \usepackage{pgfplots}
- \usepackage{pgfplotstable}
- \pgfplotsset{compat=1.13}
- % use acm colors
- \definecolor[named]{ACMBlue}{cmyk}{1,0.1,0,0.1}
- \definecolor[named]{ACMYellow}{cmyk}{0,0.16,1,0}
- \definecolor[named]{ACMOrange}{cmyk}{0,0.42,1,0.01}
- \definecolor[named]{ACMRed}{cmyk}{0,0.90,0.86,0}
- \definecolor[named]{ACMLightBlue}{cmyk}{0.49,0.01,0,0}
- \definecolor[named]{ACMGreen}{cmyk}{0.20,0,1,0.19}
- \definecolor[named]{ACMPurple}{cmyk}{0.55,1,0,0.15}
- \definecolor[named]{ACMDarkBlue}{cmyk}{1,0.58,0,0.21}
- % metropolis colors
- \definecolor{mDarkBrown}{HTML}{604c38}
- \definecolor{mDarkTeal}{HTML}{23373b}
- \definecolor{mLightBrown}{HTML}{EB811B}
- \definecolor{mLightGreen}{HTML}{14B03D}
- % Custom commands
- \newcommand{\ccode}[1]{\texttt{#1}}
- \usepackage{xspace}
- \newcommand{\newcommandx}[2]{\newcommand{#1}{#2\xspace}}
- \newcommandx{\revng}{\texttt{rev.ng}}
- \newcommandx{\llvm}{\textsc{llvm}}
- \newcommandx{\llvmcapi}{\textsc{llvm-c API}}
- \newcommandx{\llvmir}{\textsc{llvm ir}}
- \newcommandx{\qemuir}{\textsc{qemu ir}}
- \newcommandx{\qemu}{\textsc{qemu}}
- \newcommandx{\gcc}{\texttt{gcc}}
- \newcommand{\revamb}{\texttt{revamb}}
- \newcommand{\llvmcpy}{\texttt{llvmcpy}}
- \usepackage[noframe]{showframe}
- \usepackage{biblatex}[
- backend=biber,
- style=numeric,
- ]
- % Python stuff
- % Default fixed font does not support bold face
- \DeclareFixedFont{\ttb}{T1}{txtt}{bx}{n}{10} % for bold
- \DeclareFixedFont{\ttm}{T1}{txtt}{m}{n}{10} % for normal
- % Custom colors
- \usepackage{color}
- \definecolor{deepblue}{rgb}{0,0,0.5}
- \definecolor{deepred}{rgb}{0.6,0,0}
- \definecolor{deepgreen}{rgb}{0,0.5,0}
- \usepackage{listings}
- % Python style for highlighting
- \newcommand\pythonstyle{\lstset{
- language=Python,
- basicstyle=\ttm,
- otherkeywords={self}, % Add keywords here
- keywordstyle=\ttb\color{deepblue},
- emph={MyClass,__init__}, % Custom highlighting
- emphstyle=\ttb\color{deepred}, % Custom highlighting style
- stringstyle=\color{deepgreen},
- frame=tb, % Any extra options here
- showstringspaces=false %
- }}
- % Python environment
- \lstnewenvironment{python}[1][]
- {
- \pythonstyle
- \lstset{#1}
- }
- {}
- % Python for external files
- \newcommand\pythonexternal[2][]{{
- \pythonstyle
- \lstinputlisting[#1]{#2}}}
- \lstset{inputencoding=utf8/latin1}
- % Python for inline
- \newcommand\pythoninline[1]{{\pythonstyle\lstinline!#1!}}
- % C environment
- \definecolor{mGreen}{rgb}{0,0.6,0}
- \definecolor{mGray}{rgb}{0.5,0.5,0.5}
- \definecolor{mPurple}{rgb}{0.58,0,0.82}
- \definecolor{backgroundColour}{rgb}{0.95,0.95,0.92}
- \lstdefinestyle{CStyle}{
- backgroundcolor=\color{backgroundColour},
- commentstyle=\color{mGreen},
- keywordstyle=\color{magenta},
- numberstyle=\tiny\color{mGray},
- stringstyle=\color{mPurple},
- basicstyle=\footnotesize,
- breakatwhitespace=false,
- breaklines=true,
- captionpos=b,
- keepspaces=true,
- numbers=left,
- numbersep=5pt,
- showspaces=false,
- showstringspaces=false,
- showtabs=false,
- tabsize=2,
- language=C
- }
- \lstnewenvironment{C}[1][]
- {
- \lstset{style=CStyle}
- }
- {}
- %\addbibresource{bibliography.bib}
- %\setbeamersize{text margin left=15pt,text margin right=15pt}
- % Information to be included in the title page:
- \title[]{Fondamenti di Informatica}
- %\subtitle{Presentation relative to ACACES 2019}
- \author{Andrea Gussoni\\andrea1.gussoni at polimi.it}
- \institute{Politecnico di Milano}
- \date{April 27, 2021}
- %\titlegraphic{\includegraphics[width=0.60\textwidth]{logo-polimi}}
- % Create section header slide
- \AtBeginSection{\frame{\sectionpage}}
- \begin{document}
- \frame{\titlepage
- \note[item]{My name is ...}
- \note[item]{Thank the audience.}}
- \begin{frame}
- \frametitle{Table of Contents}
- \tableofcontents
- \end{frame}
- \section{Ripasso Esercitazione Precedente}
- \begin{frame}{Ripasso}
- \begin{alertblock}{}
- Problemi con esercizi della precedente esercitazione?
- \end{alertblock}
- \end{frame}
- \begin{frame}[fragile]{Costrutto di controllo while}
- \begin{itemize}
- \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?).
- \begin{center}
- \begin{C}
- while (condizione) {
- corpo_del_ciclo;
- }
- \end{C}
- \end{center}
- \item Esempio:
- \begin{C}
- a = 10;
- while (a > 5) {
- b = b + c;
- a = a - b;
- }
- c = c + 1;
- \end{C}
- \end{itemize}
- \end{frame}
- \begin{frame}[fragile]{Costrutto di controllo do while}
- \begin{itemize}
- \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 .
- \begin{center}
- \begin{C}
- do {
- corpo_del_ciclo;
- } while (condizione);
- \end{C}
- \end{center}
- \item Esempio:
- \begin{C}
- a = 10;
- do {
- b = b + c;
- a = a - b;
- } while (a > 5)
- c = c + 1;
- \end{C}
- \end{itemize}
- \end{frame}
- \begin{frame}[fragile]{Costrutto di controllo for}
- \begin{itemize}
- \item Il costrutto di controllo \ccode{for} serve per costruire un ciclo, ma con delle comode aggiunte per gestire il numero di iterazioni.
- \begin{center}
- \begin{C}
- for (inizializzazione; condizione; incremento) {
- corpo_ciclo;
- }
- \end{C}
- \end{center}
- \item Esempio:
- \begin{C}
- a = 5;
- for (i = 0; i < 10; i++) {
- b = b + a;
- }
- b = b;
- \end{C}
- \end{itemize}
- \end{frame}
- \begin{frame}[fragile]{break e continue}
- Sono inoltre disponibili due parole chiave che possono aiutare ulteriormente nella gestione delle iterazioni di un ciclo:
- \begin{description}
- \item [\ccode{break}]: interrompe immediatamente l'esecuzione del ciclo, ignorando la condizione e eventuali statement successivi del ciclo.
- \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.
- \end{description}
- \end{frame}
- \begin{frame}[fragile]{Costrutto di controllo switch}
- \begin{itemize}
- \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.
- \begin{center}
- \begin{C}
- switch (variabile) {
- case 1:
- codice_1;
- break;
- case 2:
- codice_2;
- break;
- default:
- codice_default;
- break;
- }
- \end{C}
- \end{center}
- \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}.
- \end{itemize}
- \end{frame}
- \begin{frame}[fragile]{Costrutto di controllo goto}
- \begin{itemize}
- \item Non esiste nessun costrutto con nome \ccode{goto} in C.\
- \pause
- \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).
- \end{itemize}
- \end{frame}
- \begin{frame}[fragile]{Parole al contrario}
- \begin{itemize}
- \item Implementare un programma C che presa in unput una frase composta da più parole, separate da spazi, ne stampi in output la versione dove per ogni parola, la stampa dei suoi caratteri è invertita.
- \end{itemize}
- \end{frame}
- \begin{frame}[fragile]{Ordinamento di vettori}
- \begin{itemize}
- \item Implementare un programma in linguaggio C che preso un vettore di interi, ordini i suoi elementi in ordine crescente, utilizzando la tecnica del bubblesort.
- \item Funzionamento del bubblesort: ogni coppia di elementi adiacenti viene comparata e invertita di posizione se sono nell'ordine sbagliato. L'algoritmo continua nuovamente a ri-eseguire questi passaggi per tutta la lista finché non vengono più eseguiti scambi, situazione che indica che la lista è ordinata.
- \end{itemize}
- \end{frame}
- \begin{frame}[fragile]{Ordinamento di vettori}
- \begin{itemize}
- \item Implementare un programma in linguaggio C che preso un vettore di interi, ordini i suoi elementi in ordine crescente, utilizzando la tecnica del selection sort.
- \item Funzionamento del selection sort: l'algoritmo procede trovando il minimo fra gli elementi nella sequenza e scambiandolo con l’elemento al primo posto. Trovando il minimo fra gli elementi tra il secondoi e l’ultimo posto, e scambiandolo con il secondo, e così via per tutti gli elementi del vettore. Il metodo si chiama per selezione perché si basa sulla ripetizione della selezione dell’elemento minore, tra quelli rimasti da ordinare.
- \end{itemize}
- \end{frame}
- \begin{frame}[fragile]{Tris}
- \begin{itemize}
- \item Implementare un programma C che data una matrice di caratteri 3x3 rappresentante uno stato di una partita del gioco del Tris:
- \begin{itemize}
- \item Stampa la matrice.
- \item Determina quale dei due giocatori ha vinto.
- \end{itemize}
- \item Nel gioco del tris, abbiamo che la posizione di ogni giocatore può essere rappresentata da una 'X' o una 'O', e un giocatore vince se riesce a completare una riga, una colonna o una diagonale.
- \end{itemize}
- \end{frame}
- \begin{frame}[fragile]{Dispensa}
- \begin{itemize}
- \item Implementare un programma C che acquisisca il nome e la data di scadenza di 3 prodotti presenti nella dispensa. Terminata l'acquisizione, si inserisce anche una data, e per ogni elemento nella dispensa, si deve verificare se sarà o meno scaduto in quella data.
- \item Per rappresentare il prodotto, si suggerisce l'uso di un tipo di dato strutturato che contenga il nome e la data di scadenza, a sua volta definita come un tipo di dato strutturato.
- \end{itemize}
- \end{frame}
- \begin{frame}[fragile]{Piano Cartesiano}
- \begin{itemize}
- \item Implementare un programma C che legge da tastiera un numero intero N ($1\leq N \leq 10$), e sucessivamente legge N coppie di interi positivi rappresentanti ciascuna le coordinate di un punto (x,y) su di un piano cartesiano 5X5.
- \item Si stampi poi il piano cartesiano rappresentando i punti con una X.
- \end{itemize}
- \end{frame}
- \begin{comment}
- \section{Extra}
- \begin{frame}[fragile]{Monte Carlo}
- Scrivere un programma che calcoli il valore di $\pi$, utilizzando il metodo di Monte Carlo.
- \end{frame}
- \end{comment}
- \begin{comment}
- \begin{frame}[t,allowframebreaks]
- \frametitle{References}
- \nocite{*}
- \printbibliography
- \end{frame}
- \end{comment}
- \begin{comment}
- \begin{frame}
- \frametitle{License}
- \begin{center}
- \vfill
- \includesvg[height=1.5cm]{by-sa}\\
- {\footnotesize These slides are published under a Creative Commons Attribution-ShareAlike 4.0 license\footnote{\url{https://creativecommons.org/licenses/by-sa/4.0/}}.}
- \end{center}
- \end{frame}
- \end{comment}
- \end{document}
|