Обобщенное программирование в 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.
Рассмотрены известные автору подходы к реализации как lock-free, так и fine-grained lock-based set/map: хеш-таблицы, деревья. Что из подходов STL может быть реализовано в lock-free манере, а что принципиально нет. Подводные камни lock-free и их нейтрализация.
Обобщенное программирование в 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.
Рассмотрены известные автору подходы к реализации как lock-free, так и fine-grained lock-based set/map: хеш-таблицы, деревья. Что из подходов STL может быть реализовано в lock-free манере, а что принципиально нет. Подводные камни lock-free и их нейтрализация.
В докладе будут сделаны попытки ответить на вопросы, какой тип скрывается под маской auto, почему T&& не всегда rvalue, и почему move ничего не двигает.
Догнать и перегнать boost::lexical_castRoman Orlov
Разбор нестандартной реализации преобразования целого числа в строку без использования циклов и рекурсивных вызовов времени исполнения - только рекурсия на этапе компиляции
Евгений Зуев, С++ в России: Стандарт языка и его реализацияPlatonov Sergey
Доклад посвящён различным аспектам компилятора С++, созданного с участием автора. В выступлении рассказывается о продвинутой архитектуре компилятора, основных проектных решениях, а также обсуждаются особенности входного языка, повлиявшие на реализацию компилятора.
Лекция 2. Коллективные операции в MPI. Параллельные алгоритмы случайного блуж...Alexey Paznikov
ЛЕКЦИЯ 2. Коллективные операции в стандарте MPI
Курс "Параллельные вычислительные технологии" (ПВТ), осень 2015
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
http://cpct.sibsutis.ru/~apaznikov/teaching
Надеемся, вы уже успели отдохнуть от 13 урока и теперь сможете рассмотреть еще один важный паттерн ошибок, связанный с арифметическими выражениями, в которых участвуют типы различной размерности.
В рамках данного выступления вас ждут:
* рассказ о полезных и интересных вещах из Boost
* новости с передовиц разработки Boost и о новинках ожидаемых в следующих версиях
* что из Boost готовится к переезду в новый стандарт С++
* как экспериментировать с Boost, имея под рукой только браузер
* что людям не нравится в Boost и как с этими людьми бороться (-:
ЛЕКЦИЯ 6. Параллельная сортировка. Алгоритмы комбинаторного поиска. Параллельный ввод-вывод в MPI
Курс "Параллельные вычислительные технологии" (ПВТ), осень 2015
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
http://cpct.sibsutis.ru/~apaznikov/teaching
Современный статический анализ кода: что умеет он, чего не умели линтерыcorehard_by
Статический анализ появился почти 40 лет назад. В своём докладе мы хотим показать, чему за это время научились статические анализаторы. Мы рассмотрим различные методики анализа, как они появлялись и какие ошибки можно найти с помощью них. Посмотрим на примеры ошибок, найденных PVS-Studio в Open Source проектах. Поговорим о том, чем статический анализатор отличается от "линтеров" и некоторых других инструментов, а также какие проблемы решает современный статический анализатор C++ кода, помимо собственно анализа кода.
Павел Беликов
@PVS-Studio, Тула, Россия
Дмитрий Кашицын, Троллейбус из буханки: алиасинг и векторизация в LLVMSergey Platonov
Зачастую, знакомство с алиасингом в C++ у многих программистов начинается и заканчивается одинаково: -fno-strict-aliasing. На вопросы новичка, более опытные коллеги отвечают в стиле: «не трогай! а то все сломаешь!». Новичок и не трогает. В докладе будет предпринята попытка заглянуть под капот и понять, что же там, внутри. Что такое алиасинг, где он может быть полезен и какие реальные преимущества дает. Тема будет рассмотрена и со стороны программиста и со стороны разработчика компилятора. А по сему, вопрос «зачем?» будет центральным в повествовании.
В лекции подробно рассмотрены тонкие моменты языка JavaScript, с которыми часто возникают основные проблемы. Наглядные примеры и рецепты помогают лучше понять его особенности.
Шаблоны C++ и базы данных. Сергей Федоров. CoreHard Spring 2019corehard_by
Рассказ о проектировании и реализации драйвера PostgreSQL с человеческим интерфейсом с применением почти всех доступных на данный момент языковых средств C++17. Когда мы работаем с БД, мы зачастую получаем сырые буферы, в то время как хочется получать данные в виде структур, классов и контейнеров C++. Рассказ о проектировании и реализации драйвера PostgreSQL с человеческим интерфейсом с применением почти всех доступных на данный момент языковых средств C++17. Описанный в докладе подход можно адаптировать практически к любому протоколу уровня приложений.
В докладе будут сделаны попытки ответить на вопросы, какой тип скрывается под маской auto, почему T&& не всегда rvalue, и почему move ничего не двигает.
Догнать и перегнать boost::lexical_castRoman Orlov
Разбор нестандартной реализации преобразования целого числа в строку без использования циклов и рекурсивных вызовов времени исполнения - только рекурсия на этапе компиляции
Евгений Зуев, С++ в России: Стандарт языка и его реализацияPlatonov Sergey
Доклад посвящён различным аспектам компилятора С++, созданного с участием автора. В выступлении рассказывается о продвинутой архитектуре компилятора, основных проектных решениях, а также обсуждаются особенности входного языка, повлиявшие на реализацию компилятора.
Лекция 2. Коллективные операции в MPI. Параллельные алгоритмы случайного блуж...Alexey Paznikov
ЛЕКЦИЯ 2. Коллективные операции в стандарте MPI
Курс "Параллельные вычислительные технологии" (ПВТ), осень 2015
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
http://cpct.sibsutis.ru/~apaznikov/teaching
Надеемся, вы уже успели отдохнуть от 13 урока и теперь сможете рассмотреть еще один важный паттерн ошибок, связанный с арифметическими выражениями, в которых участвуют типы различной размерности.
В рамках данного выступления вас ждут:
* рассказ о полезных и интересных вещах из Boost
* новости с передовиц разработки Boost и о новинках ожидаемых в следующих версиях
* что из Boost готовится к переезду в новый стандарт С++
* как экспериментировать с Boost, имея под рукой только браузер
* что людям не нравится в Boost и как с этими людьми бороться (-:
ЛЕКЦИЯ 6. Параллельная сортировка. Алгоритмы комбинаторного поиска. Параллельный ввод-вывод в MPI
Курс "Параллельные вычислительные технологии" (ПВТ), осень 2015
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
http://cpct.sibsutis.ru/~apaznikov/teaching
Современный статический анализ кода: что умеет он, чего не умели линтерыcorehard_by
Статический анализ появился почти 40 лет назад. В своём докладе мы хотим показать, чему за это время научились статические анализаторы. Мы рассмотрим различные методики анализа, как они появлялись и какие ошибки можно найти с помощью них. Посмотрим на примеры ошибок, найденных PVS-Studio в Open Source проектах. Поговорим о том, чем статический анализатор отличается от "линтеров" и некоторых других инструментов, а также какие проблемы решает современный статический анализатор C++ кода, помимо собственно анализа кода.
Павел Беликов
@PVS-Studio, Тула, Россия
Дмитрий Кашицын, Троллейбус из буханки: алиасинг и векторизация в LLVMSergey Platonov
Зачастую, знакомство с алиасингом в C++ у многих программистов начинается и заканчивается одинаково: -fno-strict-aliasing. На вопросы новичка, более опытные коллеги отвечают в стиле: «не трогай! а то все сломаешь!». Новичок и не трогает. В докладе будет предпринята попытка заглянуть под капот и понять, что же там, внутри. Что такое алиасинг, где он может быть полезен и какие реальные преимущества дает. Тема будет рассмотрена и со стороны программиста и со стороны разработчика компилятора. А по сему, вопрос «зачем?» будет центральным в повествовании.
В лекции подробно рассмотрены тонкие моменты языка JavaScript, с которыми часто возникают основные проблемы. Наглядные примеры и рецепты помогают лучше понять его особенности.
Шаблоны C++ и базы данных. Сергей Федоров. CoreHard Spring 2019corehard_by
Рассказ о проектировании и реализации драйвера PostgreSQL с человеческим интерфейсом с применением почти всех доступных на данный момент языковых средств C++17. Когда мы работаем с БД, мы зачастую получаем сырые буферы, в то время как хочется получать данные в виде структур, классов и контейнеров C++. Рассказ о проектировании и реализации драйвера PostgreSQL с человеческим интерфейсом с применением почти всех доступных на данный момент языковых средств C++17. Описанный в докладе подход можно адаптировать практически к любому протоколу уровня приложений.
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
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
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...Yandex
Евгений Крутько, НИЦ «Курчатовский институт».
В докладе на примере программы моделирования динамики движения конструкций по методу конечных элементов рассматриваются возможности и практика распараллеливания вычислений. Речь в нём пойдёт как о технике создания новых вычислительных потоков, так и об использовании стандартов openMP и MPI.
2. 2
Домашние задания
Ссылка на проекты через Google-диск не открывается "Этот файл нельзя открыть,
так как он нарушает Условия использования".
Скорее всего, внутри присланного архива - *.exe файлы.
Сделайте так:
скопировать папку проекта,
удалить в копии папки
• .vs,
• Debug
оставшиеся файлы (текстовые исходники проекта) архивировать и присылать.
В итоге прохождения академии выпускники получают диплом. В дипломе – оценки
за экзамены.
К экзаменам допускаются после сдачи ВСЕХ самостоятельных и домашних работ.
4. 4
Прошлое занятие (2-1)
1. Структура программы.
2. Элементы текста программы.
3. Переменные.
4. Типы данных.
5. Константы и литералы.
6. Ввод данных с консоли.
7. Работа с кириллицей.
5. 5
Основные понятия (1)
#include <iostream>
using namespace std;
int main()
{
setlocale(LC_ALL, "");
cout << "Консольный калькулятор." << endl
<< endl;
int a;
cout << "Введите a: ";
cin >> a;
int b;
cout << "Введите b: ";
cin >> b;
int c = a + b;
cout << endl
<< a << " + " << b << " = " << c << endl;
system("pause");
}
Среда разработки
Решение
Проект
Исходный файл
Компилятор
Шаблоны проектов
Консольная программа
Директивы препроцессора
<iostream> - подключение ввода-вывода
Пространство имен
using namespace
std – стандартная библиотека С++
Функция
Заголовок функции
Параметры функции ( )
Возвращаемое значение
Тип возвращаемого значения
Тело функции { }
Функция main
Оператор ;
Лексема
6. 6
Основные понятия (2)
#include <iostream>
using namespace std;
int main()
{
setlocale(LC_ALL, "");
cout << "Консольный калькулятор." << endl
<< endl;
int a;
cout << "Введите a: ";
cin >> a;
int b;
cout << "Введите b: ";
cin >> b;
int c = a + b;
cout << endl
<< a << " + " << b << " = " << c << endl;
system("pause");
}
Ключевые слова
Вызов функции
Локализация вывода символов
Функция setlocale
Вывод на экран
Объект cout
Оператор <<
Текстовый литерал “ ”
Объект endl
Переменная
Оператор определения переменной
Тип переменной
int
Имя переменной
Правила задания имен переменных
Рекомендации по заданию имен
Ввод с клавиатуры
Объект cin
Оператор >>
Оператор присвоения
Арифметические операторы
Функция system
System(“pause”)
8. 8
Занятие 2-2. Операторы
Оператор (operator) – знак операции:
арифметические;
увеличения и уменьшения;
операторы отношения и логические;
битовые;
тернарный;
другие.
Оператор (statement) – инструкция:
• присваивания;
• вызова функции;
• ветвления;
• циклов;
• Другие.
9. 9
Добавляем запрос операции
if (sign == "+") // условный оператор if (условие)
{ // начало блока операторов
int c = a + b;
} // конец блока операторов
int c = 0; // определяем переменную
if (sign == "+")
{
c = a + b; // используем переменную
}
else // иначе
{
cout << "Ошибка в знаке!" << endl;
}
{
cout << "Ошибка в знаке!" << endl;
system("pause");
return 0; // выход из функции
}
10. 10
Реализуем арифметику (вложенный if)
cout << "Введите знак (+ - * /): ";
...
int c = 0;
if (sign == "+") // если
{
c = a + b;
}
else // иначе
if (sign == "-") // если
{
c = a - b;
}
else // иначе
if (sign == "*") // если
{
c = a * b;
}
else
if (sign == "/")
{
c = a / b;
}
else // иначе
{
cout << "Ошибка в знаке!" << endl;
system("pause");
return 0;
}
11. 11
Последовательные if
if (sign == "+")
{
c = a + b;
}
if (sign == "-")
{
c = a - b;
}
if (sign == "*")
{
c = a * b;
}
if (sign == "/")
{
c = a / b;
}
if (sign != "+" && sign != "-" && sign != "*" && sign != "/")
{
cout << "Ошибка в знаке!" << endl;
system("pause");
return 0;
}
12. 12
Разбираемся с делением
int a = 8;
int b = 3
double c = a / b; // c = 2
int a = 8;
double b = 3
double c = a / b; // c = 2.666…
double a;
double b;
double c = 0;
cout << endl
<< a << " " << sign << " " << b << " = " << c << endl;
14. 14
Плавающая арифметика - приближенная
Двоичная дробь = а * 2-1 + а * 2-2 + а * 2-3 + . . .
= 0.5 + 0.25 + 0.125 + …
Как представить 0.7 ? – только приближенно
double x = 1.0;
double y = (x / b) * b;
if (x == y) ? не обязательно будет равно
15. 15
Оператор присваивания
int a = 6;
int b = a – 4;
int c = a * b – sin(a);
b = b + c;
переменная = значение (выражение: переменные, знаки
операций, скобки, вызовы функци1)
16. 16
Арифметические операторы
Оператор Действие
+ Сложение
- Вычитание, унарный минус
* Умножение
/ Деление
% Взятие остатка
++ Увеличение (инкремент)
-- Уменьшение (декремент)
int a = 6 + 4 * 3; // 18
int b = (6 + 4) * 3; // 30
int c = b / a; // 1
int d = b % a; // 12
a++; // 19
d = b++; // d =30 b = 31
c = --d; // c = d = 29
int a = 6 + 4 * 3; // 18
int b = (6 + 4) * 3; // 30
int c = b / a; // 1
int d = b % a; // 12
a++; // 19
d = b++; // d =30 b = 31
c = --d; // c = d = 29
17. 17
Операторы отношения
Оператор Действие
> Больше
>= Больше или равно
< Меньше
<= Меньше или равно
== Равно
!= Не равно
Результатом отношения является логическое (булево) значение.
Логические значения бывают:
true (да, 1)
false (нет, 0)
bool b = 10 > 3; // b = true;
18. 18
Логические операторы
Оператор Действие
&& И
|| ИЛИ
! НЕ
А B && || !
F F F F T
F T F T
T F F T F
T T T T
Приоритеты логических операций:
! - (унарный минус)
&& *(умножение)
|| +(сложение)
Приоритеты арифметических операций выше, но лучше
расставлять скобки.
19. 19
Операторы ветвления
Оператор if
if (выражение) оператор; else оператор;
Оператор switch
switch (выражение)
{
case константа1:
операторы;
case константа2:
операторы;
default:
}
Оператор ? (тернарный)
условие ? выражение1 : выражение2;
21. 21
Сокращенные формы оператора присвоения
а = а + 1;
а += 1;
а++;
-=
*=
/=
%=
Совмещение бинарного оператора с
присвоением
22. 22
Новые понятия и обозначения (1)
условный оператор if
условие (сравнение)
==
блок { операторы }
условный оператор if else
условный оператор if else if else ... else
return
return значение;
область существования переменной - блок
арифметические операторы + - * /
приоритеты арифметических операторов
целочисленное деление
double
позиционные системы счисления
двоичные числа
представление чисел в компьютере
мантисса и порядок
нормализация вещественного числа
плавающие числа - приближенные
23. 23
Новые понятия и обозначения (2)
оператор присвоения =
значение
выражение
оператор взятия остатка %
оператор инкремента ++
оператор декремента --
унарный, бинарный, тернарный операнды
префиксная и постфиксная форма записи унарного операнда
операторы отношения
!=
логический тип bool
логические значения true false
логические операторы && || !
приоритеты логических операторов
операторы ветвления
сокращенные формы оператора присваивания += *= ...
24. 24
Самостоятельная работа 2 – 2 (1)
Встреча №4
Задание 1.
Пользователь вводит номер года. Необходимо написать программу, которая выведет
количество дней в этом году. При написании программы использовать линейный алгоритм
(конструкции условного выбора не использовать). Например, пользователь ввел год 2004,
программа сообщает, что в этом году 366 дней в следующей форме:
In 2004 year = 366 days
Задание 2.
Пользователь вводит с клавиатуры денежную сумму в гривнах и копейках (гривны и копейки
вводятся в разные переменные). Сумма может быть введена как правильно (например 19грн.
90 коп), так и неправильно (например 22грн. 978 коп). Написать программу, которая,
используя только линейный алгоритм, осуществит корректировку введенной денежной
суммы в правильную форму.
Например, если пользователь ввел 11грн 150 коп, программа должна вывести на экран сумму
12грн. 50 коп.
Задание 3.
Написать программу вычисления объема параллелепипеда. Ниже приведен рекомендуемый
вид экрана во время выполнения программы.
Вычисление объема параллелепипеда.
Введите исходные данные:
Длина (см) -> 9
Ширина (см) -> 7.5
Высота (см) -> 5
Объем: 337.50 куб.см.
25. 25
Самостоятельная работа 2 – 2 (2)
Встреча №4
Задание 4.
Написать программу вычисления расстояния между населенными пунктами, изображенными
на карте. Ниже приведен рекомендуемый вид экрана во время выполнения программы.
Вычисление расстояния между населенными пунктами.
Введите исходные данные:
Масштаб карты (количество километров в одном сантиметре) -> 120
Расстояние между точками, изображающими населенные пункты (см) -> 3.5
Расстояние между населенными пунктами 420 км.
Задание 5.
Напишите программу, которая вычисляет объём шара.
26. 26
Домашнее задание 2 (1)
Встреча №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 – время, а – ускорение.
27. 27
Домашнее задание 2 (2)
Встреча №4
Задание 1. Пользователь вводит с клавиатуры время в секундах. Необходимо
написать программу, которая переведет введенные пользователем секунды в часы,
минуты, секунды и выводит их на экран.
Задание 2. Написать программу, которая преобразует введенное с клавиатуры
дробное число в денежный формат. Например, число 12,5 должно быть
преобразовано к виду 12грн 50 коп.
Задание 3. Написать программу, вычисляющую, с какой скоростью бегун
пробежал дистанцию.
Рекомендуемый вид экрана во время выполнения программы приведен ниже:
Вычисление скорости бега
Введите длину дистанции (метров) = 1000
Введите время (мин.сек) = 3.25
Дистанция: 1000 м
Время: 3 мин 25 сек = 205 сек
Вы бежали со скоростью 17.56 км/ч
28. 28
Домашнее задание 2 (3)
Задание 4. Пользователь указывает цену одой минуты исходящего звонка с одного
мобильного оператора другому, а также продолжительность разговора в минутах и
секундах. Необходимо вычислить денежную сумму на которую был произведен
звонок.
Задание 5. Написать программу, которая преобразует введенное пользователем
количество дней в количество полных недель и оставшихся дней. Например,
пользователь ввел 17 дней, программа должна вывести на экран 2 недели и 3 дня.