renamed in scenarios

This commit is contained in:
Ivan I. Ovchinnikov 2022-09-05 15:04:59 +03:00
parent 5a5541368f
commit 51d3549ea6
6 changed files with 141 additions and 0 deletions

141
scenarios/jtc2-02b.tex Normal file
View File

@ -0,0 +1,141 @@
\documentclass[russian]{beamer}
\usepackage{multicol}
\usepackage[russian]{babel}
\usepackage{fontspec}
\input{../settings/fancy-listings-preamble}
\usepackage{forest}
\makeatletter
\def\beamer@framenotesbegin{% at beginning of slide
\usebeamercolor[fg]{normal text}
\gdef\beamer@noteitems{}%
\gdef\beamer@notes{}%
}
\makeatother
\newcommand{\code}[1]{\small{\texttt{\detokenize{#1}}}\normalsize}
% \setbeamertemplate{note page}{\pagecolor{yellow!5}\insertnote}
% \setbeameroption{show notes on second screen=right}
\usetheme{Madrid}
\usecolortheme{seahorse}
\setsansfont{IBM Plex Sans}
\title{Специализация: данные и функции}
\author{Иван Игоревич Овчинников}
\institute[GB: Java]{GeekBrains. Java Core.}
\date{2022}
\begin{document}
\setbeamertemplate{enumerate items}[circle]
\setbeamertemplate{note page}[plain]
\setbeameroption{show notes}
\frame{\titlepage}
\note{Перейдём к интересному: что можно хранить в джаве, как оно там хранится, и как этим манипулировать}
\begin{frame}
\frametitle{В предыдущих сериях}
\begin{itemize}
\item Краткая история (причины возникновения);
\item инструментарий, выбор версии;
\item CLI;
\item структура проекта;
\item документирование;
\item некоторые интересные способы сборки проектов.
\end{itemize}
\end{frame}
\note{
На прошлом уроке мы коротко поговорили об истории и причинах возникновения языка джава, вскользь посмотрели на инструментарий, который позволит нам писать на джава и получать результат, поверхностно изучилит интерфейс командной строки, научились стремительно создавать довольно симпатичную документацию к своему коду и посмотрели на то как можно автоматизировать ручную работу при компиляции своих проектов.
}
\begin{frame}
\frametitle{На этой лекции}
\end{frame}
\note{
Будет рассмотрен базовый функционал языка, то есть основная встроенная функциональность, такая как математические операторы, условия, циклы, бинарные операторы. Далее способы хранения и представления данных в Java, и в конце способы манипуляции данными, то есть функции (в терминах языка называющиеся методами).
}
\subsection{Данные}
\subsubsection{Типы, преобразование типов}
%константы и переменные (примитивные, ссылочные), бинарное представление, массивы (ссылочная природа массивов, индексация, манипуляция данными)
Хранение данных в Java осуществляется привычным для программиста образом: в переменных и константах. Языки программирования бывают типизированными и нетипизированными (бестиповыми).
Отсутствие типизации в основном присуще старым и низкоуровневым языкам программирования, например, Forth, некоторые ассемблеры. Все данные в таких языках считаются цепочками бит произвольной длины и, как следует из названия, не делятся на типы. Работа с ними часто труднее, и при чтении кода не всегда ясно, о каком типе переменной идет речь. При этом часто безтиповые языки работают быстрее типизированных, но описывать с их помощью большие проекты со сложными взаимосвязями довольно утомительно.
\begin{frm}
\info Java является языком со \textbf{строгой} (также можно встретить термин «\textbf{сильной}») \textbf{явной} \textbf{статической} типизацией.
\end{frm}
Что это значит?
\begin{itemize}
\item Статическая - у каждой переменной должен быть тип и мы этот тип поменять не можем. Этому свойству противопоставляется динамическая типизация;
\item Явная - при создании переменной мы должны ей обязательно присвоить какой-то тип, явно написав это в коде. Бывают языки с неявной типизацией, например, Python;
\item Строгая(сильная) - невозможно смешивать разнотипные данные. С другой стороны, существует JavaScript, в котором запись \code{2 + true} выдаст результат \code{3}.
\end{itemize}
Все данные в Java делятся на две основные категории: примитивные и ссылочные.
Данные: типы, преобразование типов, константы и переменные (примитивные, ссылочные), бинарное представление, массивы (ссылочная природа массивов, индексация, манипуляция данными);
\begin{figure}[H]
\centering
\begin{tabular}{|p{17mm}|p{80mm}|p{55mm}|}
\hline
Тип & Пояснение & Диапазон \\
\hline
byte & Самый маленький из адресуемых типов, 8 бит, знаковый & [\textminus128, +127] \\
\hline
short & Тип короткого целого числа, 16 бит, знаковый & [\textminus32 768, +32 767]\\
\hline
char & Целочисленный тип для хранения символов в кодировке UTF-8, 16 бит, беззнаковый & [0, +65 535]\\
\hline
int & Основной тип целого числа, 32 бита, знаковый & [\textminus2 147 483 648, +2 147 483 647] \\
\hline
long & Тип длинного целого числа, 64 бита, знаковый & [\textminus9 223 372 036 854 775 808, +9 223 372 036 854 775 807] \\
\hline
float & Тип вещественного числа с плавающей запятой (одинарной точности, 32 бита) & \\
\hline
double & Тип вещественного числа с плавающей запятой (двойной точности, 64 бита) & \\
\hline
boolean & Логический тип данных & true, false \\
\hline
\end{tabular}
\caption{Основные типы данных в языке С}
\label{tab:types}
\end{figure}
Базовые функции языка: математические операторы, условия, циклы, бинарные операторы;
Функции: параметры, возвращаемые значения, перегрузка функций;
\subsubsection{Антипаттерн "магические числа"}
В прошлом примере мы использовали антипаттерн - плохой стиль для написания кода. Число 18 используется в коде коде без пояснений. Такой антипаттерн называется "магическое число". Рекомендуется помещать числа в константы, которые храняться в начале файла.
ADULT = 18
age = float(input('Ваш возраст: '))
how\_old = age - ADULT
print(how\_old, "лет назад ты стал совершеннолетним")
Плюсом такого подхода является возможность легко корректировать большие проекты. Представьте, что в вашем коде несколько тысяч строк, а число 18 использовалось несколько десятков раз.
● При развертывании проекта в стране, где совершеннолетием считается 21 год вы будете перечитывать весь код в поисках магических "18" и править их на "21". В случае с константой изменить число нужно в одном месте.
● Дополнительный сложности могут возникнуть, если в коде будет 18 как возраст совершеннолетия и 18 как коэффициент для рассчёт чего-либо. Теперь править кода ещё сложнее, ведь возраст изменился, а коэффициент -нет. В случае с сохранением значений в константы мы снова меняем число в одном месте.
\subsection{Базовый функционал языка}
\subsubsection{Математические операторы}
\subsubsection{Условия}
\subsubsection{Циклы}
\subsubsection{Бинарные арифметические операторы};
\subsection{Функции}
параметры, возвращаемые значения, перегрузка функций
\subsection*{Задания к семинару}
\begin{itemize}
\item Написать как можно больше вариантов функции инвертирования массива единиц и нулей за 15 минут (без ветвлений любого рода);
\item Сравнить без условий две даты, представленные в виде трёх чисел гггг-мм-дд;
\end{itemize}
\end{document}