Обобщенное программирование в C++ или как сделать свою жизнь проще через стра...corehard_by
Обобщенное программирование - это подход к программированию, когда алгоритм пишется без указания конкретных типов данных. Используя данный подход можно значительно увеличить количество повторно используемого кода. В C++ данный подход реализуется за счет механизма шаблонов. В данном докладе рассмотрим некоторые возможности по обобщенному программированию, которые предоставляет C++. На конкретных примерах рассмотрим, как они могут упростить нам жизнь и с какими трудностями приходится сталкиваться при их использовании.
Функциональное программирование с использованием библиотеки fp-ts | Odessa Fr...OdessaFrontend
Дмитрий Ховрич рассказывает как использовать строгую типизацию TypeScript и писать надёжный код в функциональном стиле. А также делится знаниями как использовать функторы и монады в ежедневной фронтенд разработке.
Метапрограммирование в C++11/14 и C++17. Новые инструменты - новые проблемы.Roman Orlov
В докладе будут затронуты принципиальные вопросы — зачем нам программировать на шаблонах, как мы это делаем в C++11/14 и как будем это делать в C++17. Проведем параллель с функциональными языками (привет Haskell!). На примере реального кода разберем fold-expressions и увидим, чем опасен constexpr-if. А также взглянем на метапрограммирование в стиле C++11/14 и C++17 глазами компилятора.
Юрий Ефимочев, Компилируемые в реальном времени DSL для С++ Sergey Platonov
В последнее время в промышленной разработке ПО особую популярность обретают Domain-Specific Lanugages (DSL). Они драматически упрощают разработку и дают возможность “программировать” не только программистам, но и пользователям прикладных программ.
В своем докладе я расскажу об опыте использования DSL применительно к С++, причем упор будет сделан на производительность кода DSL, и его мгновенную “встраиваемость” в запущенную программу путем компиляции DSL-кода в нативный код с помощью инструментария LLVM.
В докладе будут сделаны попытки ответить на вопросы, какой тип скрывается под маской auto, почему T&& не всегда rvalue, и почему move ничего не двигает.
Рассмотрены известные автору подходы к реализации как lock-free, так и fine-grained lock-based set/map: хеш-таблицы, деревья. Что из подходов STL может быть реализовано в lock-free манере, а что принципиально нет. Подводные камни lock-free и их нейтрализация.
Догнать и перегнать boost::lexical_castRoman Orlov
Разбор нестандартной реализации преобразования целого числа в строку без использования циклов и рекурсивных вызовов времени исполнения - только рекурсия на этапе компиляции
Евгений Зуев, С++ в России: Стандарт языка и его реализацияPlatonov Sergey
Доклад посвящён различным аспектам компилятора С++, созданного с участием автора. В выступлении рассказывается о продвинутой архитектуре компилятора, основных проектных решениях, а также обсуждаются особенности входного языка, повлиявшие на реализацию компилятора.
В рамках данного выступления вас ждут:
* рассказ о полезных и интересных вещах из Boost
* новости с передовиц разработки Boost и о новинках ожидаемых в следующих версиях
* что из Boost готовится к переезду в новый стандарт С++
* как экспериментировать с Boost, имея под рукой только браузер
* что людям не нравится в Boost и как с этими людьми бороться (-:
Лекция 2. Коллективные операции в MPI. Параллельные алгоритмы случайного блуж...Alexey Paznikov
ЛЕКЦИЯ 2. Коллективные операции в стандарте MPI
Курс "Параллельные вычислительные технологии" (ПВТ), осень 2015
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
http://cpct.sibsutis.ru/~apaznikov/teaching
Дмитрий Кашицын, Троллейбус из буханки: алиасинг и векторизация в LLVMSergey Platonov
Зачастую, знакомство с алиасингом в C++ у многих программистов начинается и заканчивается одинаково: -fno-strict-aliasing. На вопросы новичка, более опытные коллеги отвечают в стиле: «не трогай! а то все сломаешь!». Новичок и не трогает. В докладе будет предпринята попытка заглянуть под капот и понять, что же там, внутри. Что такое алиасинг, где он может быть полезен и какие реальные преимущества дает. Тема будет рассмотрена и со стороны программиста и со стороны разработчика компилятора. А по сему, вопрос «зачем?» будет центральным в повествовании.
Надеемся, вы уже успели отдохнуть от 13 урока и теперь сможете рассмотреть еще один важный паттерн ошибок, связанный с арифметическими выражениями, в которых участвуют типы различной размерности.
Современный статический анализ кода: что умеет он, чего не умели линтерыcorehard_by
Статический анализ появился почти 40 лет назад. В своём докладе мы хотим показать, чему за это время научились статические анализаторы. Мы рассмотрим различные методики анализа, как они появлялись и какие ошибки можно найти с помощью них. Посмотрим на примеры ошибок, найденных PVS-Studio в Open Source проектах. Поговорим о том, чем статический анализатор отличается от "линтеров" и некоторых других инструментов, а также какие проблемы решает современный статический анализатор C++ кода, помимо собственно анализа кода.
Павел Беликов
@PVS-Studio, Тула, Россия
Шаблоны C++ и базы данных. Сергей Федоров. CoreHard Spring 2019corehard_by
Рассказ о проектировании и реализации драйвера PostgreSQL с человеческим интерфейсом с применением почти всех доступных на данный момент языковых средств C++17. Когда мы работаем с БД, мы зачастую получаем сырые буферы, в то время как хочется получать данные в виде структур, классов и контейнеров C++. Рассказ о проектировании и реализации драйвера PostgreSQL с человеческим интерфейсом с применением почти всех доступных на данный момент языковых средств C++17. Описанный в докладе подход можно адаптировать практически к любому протоколу уровня приложений.
Использование C++ для низкоуровневой платформозависимой разработки — Кирилл ...Yandex
Доклад посвящён преимуществам и недостаткам C++ в сравнении с C и ассемблером в контексте разработки критичных к производительности библиотек, использующих специфичные для платформы возможности. На примерах реализации оптимизированных компонентов аудио- и видеокодеков мы рассмотрим, как можно упростить исходный код с помощью нестандартных расширений компилятора и новых возможностей C++11. Внимание также будет уделено функциональности, которой не хватает в текущих реализациях компилятора. В качестве целевых платформ используются ARMv7+NEON/ARM64, но предварительного знакомства с ними не требуется.
В докладе будут сделаны попытки ответить на вопросы, какой тип скрывается под маской auto, почему T&& не всегда rvalue, и почему move ничего не двигает.
Рассмотрены известные автору подходы к реализации как lock-free, так и fine-grained lock-based set/map: хеш-таблицы, деревья. Что из подходов STL может быть реализовано в lock-free манере, а что принципиально нет. Подводные камни lock-free и их нейтрализация.
Догнать и перегнать boost::lexical_castRoman Orlov
Разбор нестандартной реализации преобразования целого числа в строку без использования циклов и рекурсивных вызовов времени исполнения - только рекурсия на этапе компиляции
Евгений Зуев, С++ в России: Стандарт языка и его реализацияPlatonov Sergey
Доклад посвящён различным аспектам компилятора С++, созданного с участием автора. В выступлении рассказывается о продвинутой архитектуре компилятора, основных проектных решениях, а также обсуждаются особенности входного языка, повлиявшие на реализацию компилятора.
В рамках данного выступления вас ждут:
* рассказ о полезных и интересных вещах из Boost
* новости с передовиц разработки Boost и о новинках ожидаемых в следующих версиях
* что из Boost готовится к переезду в новый стандарт С++
* как экспериментировать с Boost, имея под рукой только браузер
* что людям не нравится в Boost и как с этими людьми бороться (-:
Лекция 2. Коллективные операции в MPI. Параллельные алгоритмы случайного блуж...Alexey Paznikov
ЛЕКЦИЯ 2. Коллективные операции в стандарте MPI
Курс "Параллельные вычислительные технологии" (ПВТ), осень 2015
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
http://cpct.sibsutis.ru/~apaznikov/teaching
Дмитрий Кашицын, Троллейбус из буханки: алиасинг и векторизация в LLVMSergey Platonov
Зачастую, знакомство с алиасингом в C++ у многих программистов начинается и заканчивается одинаково: -fno-strict-aliasing. На вопросы новичка, более опытные коллеги отвечают в стиле: «не трогай! а то все сломаешь!». Новичок и не трогает. В докладе будет предпринята попытка заглянуть под капот и понять, что же там, внутри. Что такое алиасинг, где он может быть полезен и какие реальные преимущества дает. Тема будет рассмотрена и со стороны программиста и со стороны разработчика компилятора. А по сему, вопрос «зачем?» будет центральным в повествовании.
Надеемся, вы уже успели отдохнуть от 13 урока и теперь сможете рассмотреть еще один важный паттерн ошибок, связанный с арифметическими выражениями, в которых участвуют типы различной размерности.
Современный статический анализ кода: что умеет он, чего не умели линтерыcorehard_by
Статический анализ появился почти 40 лет назад. В своём докладе мы хотим показать, чему за это время научились статические анализаторы. Мы рассмотрим различные методики анализа, как они появлялись и какие ошибки можно найти с помощью них. Посмотрим на примеры ошибок, найденных PVS-Studio в Open Source проектах. Поговорим о том, чем статический анализатор отличается от "линтеров" и некоторых других инструментов, а также какие проблемы решает современный статический анализатор C++ кода, помимо собственно анализа кода.
Павел Беликов
@PVS-Studio, Тула, Россия
Шаблоны C++ и базы данных. Сергей Федоров. CoreHard Spring 2019corehard_by
Рассказ о проектировании и реализации драйвера PostgreSQL с человеческим интерфейсом с применением почти всех доступных на данный момент языковых средств C++17. Когда мы работаем с БД, мы зачастую получаем сырые буферы, в то время как хочется получать данные в виде структур, классов и контейнеров C++. Рассказ о проектировании и реализации драйвера PostgreSQL с человеческим интерфейсом с применением почти всех доступных на данный момент языковых средств C++17. Описанный в докладе подход можно адаптировать практически к любому протоколу уровня приложений.
Использование C++ для низкоуровневой платформозависимой разработки — Кирилл ...Yandex
Доклад посвящён преимуществам и недостаткам C++ в сравнении с C и ассемблером в контексте разработки критичных к производительности библиотек, использующих специфичные для платформы возможности. На примерах реализации оптимизированных компонентов аудио- и видеокодеков мы рассмотрим, как можно упростить исходный код с помощью нестандартных расширений компилятора и новых возможностей C++11. Внимание также будет уделено функциональности, которой не хватает в текущих реализациях компилятора. В качестве целевых платформ используются ARMv7+NEON/ARM64, но предварительного знакомства с ними не требуется.
Правила статического анализа кода для диагностики потенциально опасных констр...Sergey Vasilyev
В статье сформулированы правила диагностики потенциально опасных синтаксических конструкций в исходном коде программ на языке Си++. Описаны принципы построения статического анализатора исходного кода, реализующего проверку указанных правил.
Мы специально выбрали номер "тринадцать" для этого урока, поскольку ошибки, связанные с адресной арифметикой в 64-битных системах, являются наиболее коварными. Надеемся, число 13 заставит вас быть внимательнее.
На что нужно обратить внимание при обзоре кода разрабатываемой библиотекиAndrey Karpov
Разработка библиотек — более ответственное дело, чем разработка прикладного программного обеспечения. Разработчик не знает, как именно будет использоваться его библиотека, и должен обращать дополнительное внимание на мелкие детали и вопросы переносимости. Это заставляет по-новому взглянуть на использование таких функций, как realloc, exit, memset, memcmp. Заставляет быть более аккуратным при выборе типов данных и способов обработки ошибок.
В докладе будет дан ряд советов, на что разработчикам библиотек стоит дополнительно обращать внимание на code review.
Нас окружает мир сетей, мобильных устройств, сайтов, облаков. Чтобы работать с этим миром, придумано невероятное количество технологий и языков программирования. Есть ли среди них место для языков Си/Си++? Стоит ли тратить время на их изучение, стоит ли использовать их в своих проектах? Не пора ли этим языкам на пенсию? Эти темы в своем докладе обсудит Андрей Карпов, активно участвующий в жизни сообщества Си++-программистов. Забегая вперед можно утверждать - языки Си/Си++ живее всех живых. Андрей расскажет о развитии языка и новых возможностях, появившихся в Си++11. Многие возможности существенно облегчают работу программиста и сокращают объем кода.
10 июня 2015. Дмитрий Кашицын (HDsoft) дает обзор LLVM.
http://techtalks.nsu.ru
Видеозапись: https://plus.google.com/events/ctes98f7uhf19t5jlvlbk24dan4
В этом докладе мы кратко расскажем о таком звере, как LLVM, о котором много кто слышал, но немногие щупали. Что такое компилятор на самом деле? Чем LLVM отличается от других компиляторов? Как в LLVM происходит компиляция программы, как работают оптимизации? Наконец, какой путь проходит программа от разбора исходного текста до генерации исполняемого файла?
Лекция будет обзорной и не потребует от слушателей глубоких знаний теории компиляторов.
Лекция прочитана в рамках проекта Tech Talks @NSU – серии открытых лекций о разработке ПО и карьере в IT, проводимых в Новосибирском государственном университете.
Подробности: http://techtalks.nsu.ru
Tech Talks @NSU: Как приручить дракона: введение в LLVMTech Talks @NSU
http://techtalks.nsu.ru
Видеозапись: http://www.youtube.com/watch?v=v7uBLSm6ft8
06 октября 2015. Как приручить дракона: введение в LLVM (Дмитрий Кашицын, HDsoft)
«В этом докладе мы кратко расскажем о таком звере, о котором много кто слышал, но немногие щупали. Что такое компилятор на самом деле? Чем LLVM отличается от других компиляторов? Как в LLVM происходит компиляция программы, как работают оптимизации? Наконец, какой путь проходит программа от разбора исходного текста до генерации исполняемого файла?
Лекция будет обзорной и не потребует от слушателей глубоких знаний теории компиляторов.»
Лекция прочитана в рамках проекта Tech Talks @NSU – серии открытых лекций о разработке ПО и карьере в IT, проводимых в Новосибирском государственном университете.
Подробности: http://techtalks.nsu.ru
20 ловушек переноса Си++ - кода на 64-битную платформуTatyanazaxarova
Рассмотрены программные ошибки, проявляющие себя при переносе Си++ - кода с 32-битных платформ на 64-битные платформы. Приведены примеры некорректного кода и способы его исправления. Перечислены методики и средства анализа кода, позволяющие диагностировать обсуждаемые ошибки.
В некачественном коде часто встречаются магические числовые константы, наличие которых опасно само по себе. При миграции кода на 64-битную платформу эти константы могут сделать код неработоспособным, если участвуют в операциях вычисления адреса, размера объектов или в битовых операциях.
Разработка статического анализатора кода для обнаружения ошибок переноса прог...Tatyanazaxarova
В статье рассмотрена задача разработки программного инструмента под названием статический анализатор. Разрабатываемый инструмент используется для диагностики потенциально опасных синтаксических конструкций языка Си++ с точки зрения переноса программного кода на 64-битные системы. Акцент сделан не на самих проблемах переноса, возникающих в программах, а на особенностях создания специализированного анализатора кода. Анализатор предназначен для работы с кодом программ на языках Си и Си++.
10. 10
Занятие 3
1. Структура программы.
2. Элементы текста программы.
3. Переменные.
4. Типы данных.
5. Константы и литералы.
6. Ввод данных с консоли.
7. Работа с кириллицей.
15. 15
Знаки операций и разделители
! % ^ & * ( ) - + = { } | ~[ ] ; ' : " < > ? , . / #
Пробельные символы
Пробел
Знак табуляции
Перевод строки
Форматирование текста программы
Средства => Параметры =>
Текстовый редактор => С/С++ =>
Форматирование => Общие => Номера строк
16. 16
Идентификаторы С++
Идентификатор может состоять из букв,
цифр и знака подчеркивания, причем не
может начинаться с цифры.
Идентификатор (имя) НЕ МОЖЕТ
содержать ПРОБЕЛЫ!
Идентификатор — это последовательность
символов, используемая для обозначения
одного из следующих элементов:
имени объекта или переменной;
имени функции;
…
18. 18
Литералы
const int answer = 42; // целое число
double r = sin(108.87); // плавающее (дробное)
bool b = true; // логический литерал
MyClass* mc = nullptr; // литерал – указатель
string s = “Hello”; // строка
cha c = 'A'; // символ
string sr = R"("Hello world")"; // строка
// символьная константа
const double Pi = 3.14159;
double s = Pi * r * r;
19. 19
Операторы и переменные
int a; // объявление переменной
int b;
int c;
cin >> a; // оператор ввода
cin >> b;
c = a + b; // арифметический оператор
cout << c; // оператор вывода
int c = a + b; // объединение объявления
// с выполняемым оператором
20. 20
Объявление переменных
Все переменные должны объявляться перед использованием в
таком формате:
тип список_переменных
Тип должен быть правильным типом данных, а список
переменных может содержать одно или более имен, разделенных
запятыми:
int i, j, l;
std::string str;
double balance, profit, loss;
Имеется три места, где объявляются переменные: внутри
функций, при определении параметров функции и вне функций.
Эти переменные называются соответственно локальными
переменными, формальными параметрами и глобальными
переменными.
21. 21
Инициализация переменных
Во время объявления переменных можно сообщить им значение
путем помещения знака равенства и константы после имени
переменной. Этот процесс называется инициализацией и в
общем случае имеет вид:
тип имя_переменной = константа; (литерал)
int first = 0;
float balance = 123.23;
int a = 1;
int b(1);
int c{1};
Point p(1,2); // инициализация структуры: x = 1, y = 2
int m[] = { 1,2,3 }; // инициализация массива
int m[] { 1,2,3 }; // списковая инициализация
Point mp {{1,2},{3,4},{5,6}};
int a; // a = 0 для глобальных переменных
22. 22
Типы данных
Каждая переменная имеет определенный тип.
Этот тип определяет:
какие значения может иметь переменная;
какие операции с ней можно производить;
сколько байт в памяти она будет занимать.
Все типы данных могут быть разделены на такие группы:
целочисленные (short, int, long, long long);
типы чисел с плавающей точкой (float, double, long double);
символьные (char, wchar_t, char16_t, char32_t);
логический (bool);
тип без значения (void);
23. 23
Целочисленные данные(short, int)
short: представляет целое число в диапазоне от –32768 до 32767. Занимает в
памяти 2 байта (16 бит).
Данный тип также имеет синонимы short int, signed short int, signed short.
•unsigned short: представляет целое число в диапазоне от 0 до 65535.
Занимает в памяти 2 байта (16 бит).
•Данный тип также имеет синоним unsigned short int.
•int: представляет целое число. В зависимости от архитектуры процессора
может занимать 2 байта (16 бит) или 4 байта (32 бита). Диапазон предельных
значений соответственно также может варьироваться от –32768 до 32767 (при
2 байтах) или от −2 147 483 648 до 2 147 483 647 (при 4 байтах). Но в любом
случае размер должен быть больше или равен размеру типа short и меньше или
равен размеру типа long
•Данный тип имеет синонимы signed int и signed.
•unsigned int: представляет положительное целое число. В зависимости от
архитектуры процессора может занимать 2 байта (16 бит) или 4 байта (32
бита), и из-за этого диапазон предельных значений может меняться: от 0 до
65535 (для 2 байт), либо от 0 до 4 294 967 295 (для 4 байт).
•В качестве синонима этого типа может использоваться unsigned
24. 24
Целочисленные данные (long)
•long: представляет целое число в диапазоне от −2 147 483 648 до 2 147 483
647. Занимает в памяти 4 байта (32 бита).
•У данного типа также есть синонимы long int, signed long int и signed long
•unsigned long: представляет целое число в диапазоне от 0 до 4 294 967 295.
Занимает в памяти 4 байта (32 бита).
•Имеет синоним unsigned long int.
•long long: представляет целое число в диапазоне от −9 223 372 036 854 775
808 до +9 223 372 036 854 775 807. Занимает в памяти, как правило, 8 байт (64
бита).
•Имеет синонимы long long int, signed long long int и signed long long.
•unsigned long long: представляет целое число в диапазоне от 0 до 18 446 744
073 709 551 615. Занимает в памяти, как правило, 8 байт (64 бита).
•Имеет синоним unsigned long long int.
25. 25
Типы данных для работы
с дробными числами
float: представляет вещественное число ординарной точности с плавающей
точкой в диапазоне +/- 3.4E-38 до 3.4E+38. В памяти занимает 4 байта (32
бита)
double: представляет вещественное число двойной точности с плавающей
точкой в диапазоне +/- 1.7E-308 до 1.7E+308. В памяти занимает 8 байт (64
бита)
long double: представляет вещественное число двойной точности с
плавающей точкой не менее 8 байт (64 бит). В зависимости от размера
занимаемой памяти может отличаться диапазон допустимых значений.
26. 26
Символьный тип данных
•char: представляет один символ в кодировке ASCII. Занимает в памяти 1 байт
(8 бит). Может хранить любое значение из диапазона от -128 до 127, либо от 0
до 255
•signed char: представляет один символ. Занимает в памяти 1 байт (8 бит).
Может хранить любой значение из диапазона от -128 до 127
•unsigned char: представляет один символ. Занимает в памяти 1 байт (8 бит).
Может хранить любой значение из диапазона от 0 до 255
•wchar_t: представляет расширенный символ. На Windows занимает в памяти
2 байта (16 бит), на Linux - 4 байта (32 бита). Может хранить любой значение
из диапазона от 0 до 65 535 (при 2 байтах), либо от 0 до 4 294 967 295 (для 4
байт)
•char16_t: представляет один символ в кодировке Unicode. Занимает в памяти
2 байта (16 бит). Может хранить любой значение из диапазона от 0 до 65 535
•char32_t: представляет один символ в кодировке Unicode. Занимает в памяти
4 байта (32 бита). Может хранить любой значение из диапазона от 0 до 4 294
967 295
27. 27
Логический тип данных
•bool: логический тип. Может принимать одну из двух значений true (истина)
и false (ложь). Размер занимаемой памяти для этого типа точно не определен.
Перечислимый тип данных
(перечисление)
Перечисление (или ещё «перечисляемый тип») — это тип данных, где
любое значение (или ещё «перечислитель») определяется как символьная
константа. Объявить перечисление можно с помощью ключевого
слова enum.
enum Colors
{
Red, // const int Red = 0;
White, // const int White = 2;
Black
}
30. 30
Пишем программу
Создать (проект) консольное приложение С++
(NamePlus)
Вывести Hello! пауза
Вывести «Всем привет!» (setlocale(LC_ALL, "rus_rus.1251");)
Добавить переменную name и функцию void EnterName()
Вызвать EnterName и вывести «Вас зовут» name
Добавить функцию int Sum(int a, int b)
Ввести a,b, и вывести name, a + b = Sum(a,b)
31. 31
Самостоятельная работа
Встреча №3
Задание 1.
Создать приложение, которое выводит информацию о книге, в следующем формате:
Name : “The war and the peace”
Avtor : L.N. Tolstoj
Izdatelstvo: Piter
Pages : 500
Задание 2.
Создать приложение, которое выводит на консоль фразу:
“U lukomor’a dub zelenij,
Zlataya zep na dupe tom,
I dnem i nochju kot uchenij
vse hodit po cepi krugom”
Сопроводить каждую новую строчку тройным звуковым сигналом b
Задание 3.
Создать приложение, которое выводит на экран следующую таблицу:
╔════════════════════════════════════════════╗
║ Vremena goda ║
╠═════════╦═══════════╦═══════════╦══════════╣
║ Zima ║ Vesna ║ Leto ║ Osen ║
╚═════════╩═══════════╩═══════════╩══════════╝
Подсказка:
Рекомедуем выполнить следующий пример
cout<<"n"<<(char)201<<(char)205<<(char)205<<(char)187;
Необходимые символы находятся в дипазоне от 179 до 218
32. 32
Домашняя работа
Встреча №3
Задание 1: Заданы три сопротивлении R1, R2, R3 . Вычислить значение
сопротивления R0 по
формуле: 1/R0 = 1/R1+1/R2+1/R3.
Контрольный пример: R1=2, R2=4, R3=8 R0 = 1.142857
Задание 2: По заданной длине окружности найти площадь круга по формуле S =
pi*R2, радиус
вычислить из формулы длины окружности: L=2*pi *R
Примечание pi = 3.14
Задание 3: Вычислить пройденное расстояние при прямолинейном
равноускоренном движении
по формуле S = v*t + (a*t2) / 2, где v – скорость, t – время, а – ускорение