gitignore+local (no xwatermark, works only online)

This commit is contained in:
Ivan I. Ovchinnikov 2021-08-23 11:24:09 +03:00
parent 1029785176
commit 70c5fae762
4 changed files with 104 additions and 111 deletions

5
.gitignore vendored Normal file
View File

@ -0,0 +1,5 @@
*.*~
*.*#
/build/*
!/build/*.pdf

BIN
build/main.pdf Normal file

Binary file not shown.

View File

@ -1,44 +1,24 @@
%%% Работа с русским языком
\usepackage{cmap} % поиск в PDF
\usepackage[T2A]{fontenc} % кодировка
\usepackage[utf8]{inputenc} % кодировка исходного текста
\usepackage[english,russian]{babel} % локализация и переносы
\usepackage[printwatermark]{xwatermark}
% \usepackage[printwatermark]{xwatermark}
\usepackage{import}
\usepackage{listings}
\usepackage{xcolor}
\usepackage{multicol}
\usepackage{bookmark}
\usepackage{setspace}
\usepackage{titlesec}
\usepackage{indentfirst}
\usepackage{amsmath,amsfonts,amssymb,amsthm,mathtools} % AMS
\usepackage{icomma} % "Умная" запятая: $0,2$ --- число, $0, 2$ --- перечисление
\usepackage{amsmath,amsfonts,amssymb,amsthm,mathtools}
\usepackage{icomma}
\usepackage{layout}
\usepackage{titlesec}
\usepackage{hyperref}
\usepackage[lmargin=1.5cm,rmargin=2.5cm,tmargin=2.5cm,bmargin=2.5cm,paperheight=240mm,paperwidth=170mm]{geometry}
\onehalfspacing
\addto{\captionsrussian}{\renewcommand{\figurename}{}}
\hypersetup{
colorlinks=false, %set true if you want colored links
linktoc=all %set to all if you want both sections and subsections linked
}
\hbadness=99999
\author{Иван Овчинников}
\date{\today}
\newwatermark[allpages,color=red!50,angle=70,scale=7,xpos=-36,ypos=14]{DRAFT}
\usepackage[cache=false]{minted}
\usepackage{listings}
\usepackage{xcolor}
\definecolor{codekeywords}{rgb}{0.1,0.3,0.3}
\definecolor{codecomments}{rgb}{0,0.4,0}
\definecolor{codenumbers}{rgb}{0.4,0.4,0.4}
\definecolor{codestring}{rgb}{0.85,0.2,0.1}
\definecolor{backcolour}{rgb}{0.95,0.95,0.92}
\definecolor{codefine}{rgb}{0.7,0.5,0.3}
\lstdefinestyle{CCodeStyle}{
commentstyle=\color{codecomments},
morecomment=[l][\color{codefine}]{\#},
@ -60,20 +40,28 @@
tabsize=4
}
%\lstinputlisting[language=Octave,caption=some code here]{BitXorMatrix.m}
\author{Иван Овчинников}
\date{\today}
\title{Очередное введение в\\язык программирования C}
\babelfont{rm}{Times New Roman}
\babelfont{sf}{Microsoft Sans Serif}
\babelfont{tt}{Courier New}
% \newwatermark[allpages,color=red!50,angle=70,scale=7,xpos=-36,ypos=14]{DRAFT}
\onehalfspacing
\addto{\captionsrussian}{\renewcommand{\figurename}{}}
\hypersetup{
colorlinks=false,
linktoc=all
}
\def\code#1{\texttt{#1}}
\newcommand{\code}[1]{\texttt{#1}}
\newcommand{\sectionbreak}{\clearpage}
\newcommand{\frm}[1]{
\newline
\newline
\indent
\fbox{%
\newcommand{\frm}[1]{\newline%
\newline%
\indent\fbox{%
\parbox{0.9\textwidth}{%
#1
#1}%
}%
\newline%
\newline%
}%
}
\newline
\newline
}

View File

@ -1,52 +1,52 @@
\documentclass[a5paper,twoside]{article}
\documentclass[a4paper]{article}
\usepackage[russian]{babel}
\include{formatting}
\title{Очередное введение в\\язык программирования C}
\begin{document}
\maketitle
\thispagestyle{empty}
\newpage
\thispagestyle{empty}
\tableofcontents
\newpage
% 01 intro
\include{sections/01-intro}
\import{sections/}{01-intro.tex}
% 02 basics
\include{sections/02-basics}
\import{sections/}{02-basics}
% 03 io
\include{sections/03-io}
\import{sections/}{03-io}
% 04 variables
\include{sections/04-variables}
\import{sections/}{04-variables}
% 05 conditions
\include{sections/05-conditions}
\import{sections/}{05-conditions}
% 06 cycles
\include{sections/06-cycles}
\section{Функции}
Функция - это такая обособленная часть кода, которую можно выполнять любое количество раз. У функций обязательно в таком порядке должны быть описаны: тип возвращаемого значения, название, аргументы и так называемое тело, то есть собственно исполняемый код. Рассмотрим более детально функцию \code{int main (int argc, char *argv[])}: \code{int} - это \textit{тип возвращаемого значения}, то есть на том месте, откуда будет вызвана эта функция, в результате её работы по выполнении оператора \code{return;}, появится некое целое число. Возвращаемые значения могут быть любых типов. В случае же когда функция не должна возвращать результат своей работы, или никакого возвращаемого результата не предполагается, указывается ключевое слово \code{void} (англ. - пустота). То есть на месте вызова функции в результате её выполнения ничего не появится. Оператор \code{return;} обязателен для не-void функций, а в \code{void} функциях может присутствовать или нет, но никогда не содержит возвращаемого значения. \code{main} - это \textit{название функции}. Функция именно с таким названием, написанным с маленькой буквы, всегда является точкой входа в программу (\hyperref[text:main]{\ref{text:main}}). Операционная система ищет именно эту функцию, когда получает команду на выполнение программы.
\frm{Названия функций в рамках одной программы не должны повторяться и не должны начинаться с цифр или спецсимволов, также, как и названия переменных (\hyperref[text:naming]{\ref{text:naming}}) никаких других ограничений на название функций не накладывается.}
Конструкция в круглых скобках \code{(int argc, char *argv[])} - это \textit{аргументы функции}. Аргументы функции - это такие переменные, которые создаются при вызове функции и существуют только внутри неё. С их помощью можно передать в функцию какие-то параметры и исходные данные для работы. Аргументы пишутся в круглых скобках сразу после названия функции. В случае если функция не принимает аргументов необходимо поставить после названия пустые круглые скобки. Весь код, содержащийся в фигурных скобках после аргументов функции называется \textit{телом функции}. Это те операторы и команды, которые будут последовательно выполнены при вызове функции. В теле функции мы можем \textbf{вызывать} другие функции, но никогда не можем создавать в теле функции другие функции. Никаких других ограничений на написание тела функции язык не накладывает.
\begin{verbatim}
ТипВозвращаемогоЗначения Имя (СписокАргументов)
{
ТелоФункции
return ВозвращаемоеЗначение;
}
\end{verbatim}
\import{sections/}{06-cycles}
% \section{Функции}
% Функция - это такая обособленная часть кода, которую можно выполнять любое количество раз. У функций обязательно в таком порядке должны быть описаны: тип возвращаемого значения, название, аргументы и так называемое тело, то есть собственно исполняемый код. Рассмотрим более детально функцию \code{int main (int argc, char *argv[])}: \code{int} - это \textit{тип возвращаемого значения}, то есть на том месте, откуда будет вызвана эта функция, в результате её работы по выполнении оператора \code{return;}, появится некое целое число. Возвращаемые значения могут быть любых типов. В случае же когда функция не должна возвращать результат своей работы, или никакого возвращаемого результата не предполагается, указывается ключевое слово \code{void} (англ. - пустота). То есть на месте вызова функции в результате её выполнения ничего не появится. Оператор \code{return;} обязателен для не-void функций, а в \code{void} функциях может присутствовать или нет, но никогда не содержит возвращаемого значения. \code{main} - это \textit{название функции}. Функция именно с таким названием, написанным с маленькой буквы, всегда является точкой входа в программу (\hyperref[text:main]{\ref{text:main}}). Операционная система ищет именно эту функцию, когда получает команду на выполнение программы.
% \frm{Названия функций в рамках одной программы не должны повторяться и не должны начинаться с цифр или спецсимволов, также, как и названия переменных (\hyperref[text:naming]{\ref{text:naming}}) никаких других ограничений на название функций не накладывается.}
% Конструкция в круглых скобках \code{(int argc, char *argv[])} - это \textit{аргументы функции}. Аргументы функции - это такие переменные, которые создаются при вызове функции и существуют только внутри неё. С их помощью можно передать в функцию какие-то параметры и исходные данные для работы. Аргументы пишутся в круглых скобках сразу после названия функции. В случае если функция не принимает аргументов необходимо поставить после названия пустые круглые скобки. Весь код, содержащийся в фигурных скобках после аргументов функции называется \textit{телом функции}. Это те операторы и команды, которые будут последовательно выполнены при вызове функции. В теле функции мы можем \textbf{вызывать} другие функции, но никогда не можем создавать в теле функции другие функции. Никаких других ограничений на написание тела функции язык не накладывает.
% \begin{verbatim}
% ТипВозвращаемогоЗначения Имя (СписокАргументов)
% {
% ТелоФункции
% return ВозвращаемоеЗначение;
% }
% \end{verbatim}
% \begin{lstlisting}[language=C,style=CCodeStyle]
% void somefunction() { // <-- this is a function
% // some useful things
% }
\begin{lstlisting}[language=C,style=CCodeStyle]
void somefunction() { // <-- this is a function
// some useful things
}
% int main (int argc, const char* argv[]) {
% // more useful things
% somefunction(); // <-- this is invocation
% return 0;
% }
% \end{lstlisting}
int main (int argc, const char* argv[]) {
// more useful things
somefunction(); // <-- this is invocation
return 0;
}
\end{lstlisting}
Функции принято разделять на проверяющие, считающие и выводящие, и каждая из вышеописанных функций не должна нести дополнительной нагрузки. То есть, функция не должна знать откуда в программе появились её аргументы, и где будет использован результат её работы. Для примера опишем функцию суммирующую два числа. в качестве аргументов она будет принимать целые числа и возвращать целочисленный результат. Обратите внимание что функция не знает откуда взялись эти числа, мы можем их считать с консоли, можем задать в виде констант или получить в результате работы какой то другой функции.
Внутри функции main мы вызываем нашу функцию sum суммирующую два числа и передаем в качестве аргументов эти числа.
% Функции принято разделять на проверяющие, считающие и выводящие, и каждая из вышеописанных функций не должна нести дополнительной нагрузки. То есть, функция не должна знать откуда в программе появились её аргументы, и где будет использован результат её работы. Для примера опишем функцию суммирующую два числа. в качестве аргументов она будет принимать целые числа и возвращать целочисленный результат. Обратите внимание что функция не знает откуда взялись эти числа, мы можем их считать с консоли, можем задать в виде констант или получить в результате работы какой то другой функции.
% Внутри функции main мы вызываем нашу функцию sum суммирующую два числа и передаем в качестве аргументов эти числа.