Skip to content
Snippets Groups Projects
Commit 6052b85f authored by Peter Gerwinski's avatar Peter Gerwinski
Browse files

Vorbereitung 7.1.2016

parent e70be531
Branches
Tags
No related merge requests found
File added
% ainf-20151217.pdf - Lecture Slides on Applied Computer Sciences
% Copyright (C) 2012, 2013, 2015 Peter Gerwinski
%
% This document is free software: you can redistribute it and/or
% modify it either under the terms of the Creative Commons
% Attribution-ShareAlike 3.0 License, or under the terms of the
% GNU General Public License as published by the Free Software
% Foundation, either version 3 of the License, or (at your option)
% any later version.
%
% This document is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
% GNU General Public License for more details.
%
% You should have received a copy of the GNU General Public License
% along with this document. If not, see <http://www.gnu.org/licenses/>.
%
% You should have received a copy of the Creative Commons
% Attribution-ShareAlike 3.0 Unported License along with this
% document. If not, see <http://creativecommons.org/licenses/>.
\documentclass[10pt,t]{beamer}
\usepackage{pgslides}
\usepackage{pdftricks}
\usepackage{rotating}
\newrgbcolor{orange}{0.7 0.2 0.0}
\begin{psinputs}
\usepackage[utf8]{inputenc}
\usepackage[german]{babel}
\usepackage[T1]{fontenc}
\usepackage{helvet}
\renewcommand*\familydefault{\sfdefault}
\usepackage{pstricks,pst-grad,pst-node,pst-math,pst-plot}
\end{psinputs}
\lstdefinestyle{asm}{basicstyle=\color{structure},
language={},
gobble=4}
\title{Angewandte Informatik}
\author{Prof.\ Dr.\ rer.\ nat.\ Peter Gerwinski}
\date{17.\ Dezember 2015}
\begin{document}
\maketitleframe
\sectionnonumber{\inserttitle}
\begin{frame}
\showsectionnonumber
\begin{itemize}
\item[\textbf{1}] \textbf{Einführung}
\item[\textbf{2}] \textbf{Einführung in C}
\item[\textbf{3}] \textbf{Bibliotheken}
\item[\textbf{4}] \textbf{Algorithmen}
\begin{itemize}
\item[4.1] Differentialgleichungen
\item[4.2] Rekursion
\item[4.3] Stack und FIFO
\color{red}
\item[4.4] Aufwandsabschätzungen
\end{itemize}
\item[\textbf{5}] \textbf{Hardwarenahe Programmierung}
\begin{itemize}
\item[5.1] Bit-Operationen
\item[5.2] I/O-Ports
\item[5.3] Interrupts
\color{medgreen}
\item[5.4] volatile-Variable
\color{black}
\item[5.5] Software-Interrupts
\item[\dots]
\end{itemize}
\color{gray}
\item[\makebox(0,0){\textbf{\raisebox{0.5ex}{\dots}}}]
% \item[\textbf{6}] \textbf{Ergänzungen und Ausblicke}
\end{itemize}
\end{frame}
\section{Einführung}
\section{Einführung in C}
\section{Bibliotheken}
\section{Algorithmen}
\section{Hardwarenahe Programmierung}
\subsection{Bit-Operationen}
\subsubsection{Zahlensysteme}
\begin{frame}[fragile]
\showsection
\vspace*{-\smallskipamount}
\showsubsection
\vspace*{-\medskipamount}
\showsubsubsection
Oktal- und Hexadezimal-Zahlen lassen sich ziffernweise\\
in Binär-Zahlen umrechnen:
\begin{verbatim}
000 0 0000 0 1000 8
001 1 0001 1 1001 9
010 2 0010 2 1010 A
011 3 0011 3 1011 B
100 4 0100 4 1100 C
101 5 0101 5 1101 D
110 6 0110 6 1110 E
111 7 0111 7 1111 F
\end{verbatim}
\begin{picture}(0,0)
\put(8,3){\begin{rotate}{15}
\color{red}\bf
Auswendig lernen!
\end{rotate}}
\end{picture}
\end{frame}
\subsubsection{Bit-Operationen in C}
\begin{frame}[fragile]
\showsubsubsection
\begin{tabular}{lll}
C-Operator & Verknüpfung & Anwendung \\[\smallskipamount]
\lstinline,&, & Und & Bits gezielt löschen \\
\lstinline,|, & Oder & Bits gezielt setzen \\
\lstinline,^, & Exklusiv-Oder & Bits gezielt invertieren \\
\lstinline,~, & Nicht & Alle Bits invertieren \\[\smallskipamount]
\lstinline,<<, & Verschiebung nach links & Maske generieren \\
\lstinline,>>, & Verschiebung nach rechts & Bits isolieren
\end{tabular}
\bigskip
Beispiele:
\begin{itemize}
\item
Bit Nr.\ 5 gezielt auf 1 setzen:
\lstinline{PORTB |= 1 << 5;}
\item
Bit Nr.\ 6 gezielt auf 0 setzen:
\lstinline{PORTA &= ~(1 << 6);}
\item
Ist Bit Nr.\ 4 gesetzt?
\lstinline{if (PINC & (1 << 4) ...}
\smallskip
\item
Umschalten zwischen Ein- und Ausgabe: \lstinline{DDR}\\
Bit = 1: Ausgabe; Bit = 0: Eingabe
\end{itemize}
\begin{picture}(0,0)
\put(8.4,1){\begin{rotate}{15}
\color{red}\bf
\shortstack{Details abhängig von\\Prozessor und Compiler!}
\end{rotate}}
\end{picture}
\end{frame}
\subsection{I/O-Ports}
\begin{frame}[fragile]
% \showsection
\showsubsection
\vspace*{-1.5\medskipamount}
{\large\textbf{\color{structure}5.3\quad Interrupts}}
\bigskip
Kommunikation mit externen Geräten
\bigskip
\begin{center}
\begin{pdfpic}
\psset{unit=1cm}%
\begin{pspicture}(0,0)(10,6)
\rput(0,0){\psframe[framearc=0.25](2,5)}
\rput(1,4.5){\makebox(0,0)[t]{Prozessor}}
\rput(2.0,3.7){\pnode{p0}}
\rput(2.0,3.3){\pnode{q0}}
\rput(2.0,1.0){\pnode{i0}}
\rput(2.12,1.2){\pnode{j0}}
\rput(2.02,1.3){\pnode{k0}}
\rput(2.12,1.4){\pnode{l0}}
\rput(3.5,1.4){\pnode{m0}}
\rput(8,0){\psframe[framearc=0.25](2,5)}
\rput(9,4.5){\makebox(0,0)[t]{\shortstack{externes\\Gerät}}}
\rput(8.0,3.7){\pnode{p1}}
\rput(7.88,3.3){\pnode{q1}}
\rput(7.98,3.2){\pnode{r1}}
\rput(7.88,3.1){\pnode{s1}}
\rput(6.5,3.1){\pnode{t1}}
\rput(8.0,1.0){\pnode{i1}}
\rput(8.0,1.2){\pnode{j1}}
\ncline{->}{p0}{p1}
\ncline{q0}{q1}
\nccurve[angleB=90]{q1}{r1}
\nccurve[angleA=-90]{r1}{s1}
\ncline{->}{s1}{t1}
\rput(2.2,3.8){\makebox(0,0)[lb]{Prozessor schreibt in Output-Port}}
\rput(2.2,3.1){\makebox(0,0)[lt]{Prozessor liest Input-Port}}
\ncline{->}{i1}{i0}
\rput(7.8,1.1){\makebox(0,0)[rb]{externes Gerät ruft Interrupt auf}}
\end{pspicture}
\end{pdfpic}
\end{center}
\end{frame}
\subsection{Interrupts}
\subsection{volatile-Variable}
\begin{frame}[fragile]
\showsubsection
\begin{lstlisting}
volatile uint16_t mleft_counter;
/* ... */
volatile uint16_t mleft_dist;
/* ... */
ISR (INT0_vect)
{
mleft_dist++;
mleft_counter++;
/* ... */
}
\end{lstlisting}
\begin{picture}(0,0)
\color{red}
\put(1.6,5.2){\vector(-1,-1){0.55}}
\put(1.6,5.2){\vector(-1,1){0.55}}
\put(1.6,5.2){\makebox(0,0)[l]{"`Immer lesen und schreiben. Nicht wegoptimieren."'}}
\end{picture}
\vspace{-3cm}
\begin{lstlisting}
int main (void)
{
int prev_mleft_dist = mleft_dist;
while (mleft_dist == prev_mleft_dist)
/* just wait */;
}
\end{lstlisting}
\end{frame}
\iffalse
\subsection{Software-Interrupts}
\begin{frame}[fragile]
\showsubsection
\begin{lstlisting}[style=asm]
mov ax, 0012
int 10
\end{lstlisting}
\pause
\begin{picture}(0,0)
\color{red}
\put(2.8,0.95){\vector(-1,0){0.55}}
\put(2.9,0.95){\makebox(0,0)[l]{Parameter in Prozessorregister}}
\put(1.7,0.50){\vector(-1,0){0.55}}
\put(1.8,0.50){\makebox(0,0)[l]{Funktionsaufruf über Interrupt-Vektor}}
\end{picture}
\pause
Beispiel: VGA-Grafikkarte
\begin{itemize}
\item Modus setzen: \lstinline{mov ah, 00}
\item Grafikmodus: \lstinline{mov al, 12}
\item Textmodus: \lstinline{mov al, 03}
\end{itemize}
\pause
\bigskip
Verschiedene Farben: Output-Ports
\begin{itemize}
\item \newterm{Graphics Register\/}: Index \lstinline{03CE}, Daten \lstinline{03CF}
\item Index 0: \newterm{Set/Reset Register}
\item Index 1: \newterm{Enable Set/Reset Register}
\item Index 8: \newterm{Bit Mask Register}
\item Jedes Bit steht für Schreibzugriff auf eine Speicherbank.
\item 4 Speicherbänke \textarrow\ 16 Farben
\end{itemize}
\end{frame}
\fi
\subsection{Aufwandsabschätzungen}
\begin{frame}[fragile]
\showsubsection
Beispiel: Sortieralgorithmen
\begin{itemize}
\item
Maximum suchen: $\mathcal{O}(n)$
\hfill
\begin{minipage}[t]{5.6cm}
\vspace*{-1.3cm}
\begin{pdfpic}
\psset{unit=0.5pt}
\begin{pspicture}(-20,-20)(250,200)
\psline[arrows=->](-10,0)(200,0)
\put(205,0){\makebox(0,0)[l]{$n$}}
\psline[arrows=->](0,-10)(0,220)
\put(-10,230){\makebox(0,0)[l]{$g(n)$}}
\psplot[plotpoints=200]{1}{128}{2 x 0.06 mul exp}
\put(100,212){\mbox{$g(n) \sim 2^n$}}
\psplot[plotpoints=200]{0}{190}{x x mul 0.005 mul}
\put(190,190){\mbox{$g(n) \sim n^2$}}
\psplot[plotpoints=200]{1}{190}{x ln x mul 0.1 mul}
\put(195,100){\mbox{$g(n) \sim n \log n$}}
\psplot[plotpoints=200]{0}{190}{x 0.4 mul}
\put(195,75){\mbox{$g(n) \sim n$}}
\psplot[plotpoints=200]{1}{190}{x ln 10 mul}
\put(195,50){\mbox{$g(n) \sim \log n$}}
\psplot[plotpoints=200]{1}{190}{30}
\put(195,25){\mbox{$g(n) \sim 1$}}
\psplot[plotpoints=300]{1}{76}{x 0.05 mul 1 add GAMMA 10 mul}
% \put(7,7){\pscircle[fillstyle=solid,fillcolor=black]{2.5}}
% \put(14,14){\pscircle[fillstyle=solid,fillcolor=black]{2.5}}
% \put(21,42){\pscircle[fillstyle=solid,fillcolor=black]{2.5}}
% \put(28,168){\pscircle[fillstyle=solid,fillcolor=black]{2.5}}
\put(20,182){\mbox{$g(n) \sim n!$}}
\end{pspicture}
\end{pdfpic}
\small
\begin{description}\itemsep0pt
\item[$n$:] Eingabedaten
\item[$g(n)$:] Rechenzeit
\end{description}
\vspace*{-10cm}\strut
\end{minipage}
\pause[2]
\item
Maximum ans Ende tauschen\\
\textarrow\ Selectionsort: $\mathcal{O}(n^2)$
\pause
\item
zufällig mischen, bis sortiert\\
\textarrow\ Monkeysort: $\mathcal{O}(n!)$
\pause
\item
Während Maximumsuche prüfen,\\abbrechen, falls schon sortiert\\
\textarrow\ Bubblesort: $\mathcal{O}(n)$ bis $\mathcal{O}(n^2)$
\pause
\item
Rekursiv sortieren\\
\textarrow\ Quicksort: $\mathcal{O}(n\log n)$ bis $\mathcal{O}(n^2)$\hfill
\end{itemize}
\end{frame}
\sectionnonumber{\inserttitle}
\begin{frame}
\showsectionnonumber
\begin{itemize}
\item[\textbf{1}] \textbf{Einführung}
\item[\textbf{2}] \textbf{Einführung in C}
\item[\textbf{3}] \textbf{Bibliotheken}
\item[\textbf{4}] \textbf{Algorithmen}
\begin{itemize}
\item[4.1] Differentialgleichungen
\item[4.2] Rekursion
\item[4.3] Stack und FIFO
\color{medgreen}
\item[4.4] Aufwandsabschätzungen
\end{itemize}
\item[\textbf{5}] \textbf{Hardwarenahe Programmierung}
\begin{itemize}
\item[\dots]
\item[5.4] volatile-Variable
\item[5.5] Software-Interrupts
\item[5.6] Byte-Reihenfolge -- Endianness
\item[5.6] Speicherausrichtung -- Alignment
\end{itemize}
\color{gray}
\item[\makebox(0,0){\textbf{\raisebox{0.5ex}{\dots}}}]
% \item[\textbf{6}] \textbf{Ergänzungen und Ausblicke}
\end{itemize}
\end{frame}
\end{document}
File added
% ainf-uebung-20160107.pdf - Exercises on Applied Computer Sciences
% Copyright (C) 2013, 2015, 2016 Peter Gerwinski
%
% This document is free software: you can redistribute it and/or
% modify it either under the terms of the Creative Commons
% Attribution-ShareAlike 3.0 License, or under the terms of the
% GNU General Public License as published by the Free Software
% Foundation, either version 3 of the License, or (at your option)
% any later version.
%
% This document is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
% GNU General Public License for more details.
%
% You should have received a copy of the GNU General Public License
% along with this document. If not, see <http://www.gnu.org/licenses/>.
%
% You should have received a copy of the Creative Commons
% Attribution-ShareAlike 3.0 Unported License along with this
% document. If not, see <http://creativecommons.org/licenses/>.
\documentclass[a4paper]{article}
\usepackage{pgscript}
\usepackage{enumerate}
\usepackage{pdftricks}
\usepackage{sfmath}
\begin{psinputs}
\usepackage{pgscript}
% \definecolor{PracticallyWhite}{rgb}{0.99 0.99 0.99}
\definecolor{verylightgray}{rgb}{0.95 0.95 0.95}
\end{psinputs}
\newcounter{exercise}
\newcommand{\exercise}[1]{\addtocounter{exercise}{1}\subsection*{Aufgabe \arabic{exercise}: #1}}
\newcounter{points}
\newcommand{\onepoint}{(1 Punkt)\addtocounter{points}{1}}
\newcommand{\points}[1]{(#1 Punkte)\addtocounter{points}{#1}}
\begin{document}
\thispagestyle{empty}
\section*{Angewandte Informatik\\Übungsaufgaben -- 7.\ Januar 2016}
\subsection*{???}
\points{42}
\end{document}
../common/logo-hochschule-bochum-cvh-text.pdf
\ No newline at end of file
../common/logo-hochschule-bochum.pdf
\ No newline at end of file
../common/pgscript.sty
\ No newline at end of file
../common/pgslides.sty
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment