easy

Пишем программу, которая одобрит вам кредит

Или не одобрит, хехех.

В этом выпуске вы сможете потренировать программистскую конструкцию «Если... то...» — один из главных кирпичиков любой программы. Для интереса обернём её в понятную задачу.

Когда банк выдаёт кредит, он проверяет человека по многим параметрам. Один из них — платёжеспособность. Это значит, что банк берёт уровень доходов, примерно прикидывает ваши траты и смотрит, хватит ли вам денег рассчитаться по кредиту.

Проблема в том, что критериев платёжеспособности и трат может быть очень много и они могут ветвиться: если у человека одна ситуация, считать одно; если другая — считать другое. Чтобы ускорить проверку, банки создают автоматические системы оценки — по-нашему, системы скоринга. Сейчас мы напишем похожую программу: она будет учитывать несколько критериев и выдавать оценку платёжеспособности по нашей собственной методике.

Зачем вам такой калькулятор — решайте сами: можно открыть собственный банк, можно оценивать бизнес-проекты, можно прикидывать экономическую эффективность поездки на дачу.

Банки используют намного более сложный анализ клиента, чем тот, который опишем в этой программе мы. Результаты, которые вы получите после выполнения программы, — примерные, и не влияют на получение реального кредита.

Объявляем переменные

Смысл решения в том, чтобы вначале узнать у человека всё про кредит и про его семейное положение, затем выяснить размер ежемесячного платежа и наконец рассчитать нужный уровень зарплаты.

Для начала объявим переменные, которые будем использовать в расчётах.

var age_coeff; // возрастной коэффициент, который влияет на платёжеспособность
// возраст, размер кредита и количество месяцев

var age;
var money;
var month;
var child; // сколько детей

var child_expense; // сколько уходит на детей в месяц
var percent; // процент по кредиту
var credit; //размер ежемесячного платежа по кредиту
var month_expense = 20000; // Предположение банка: сколько клиент тратит каждый месяц
var salary; // требуемый размер зарплаты

Мы сразу указали уровень минимальных трат каждый месяц — 20 тысяч рублей. Вы можете подкорректировать сумму под свою ситуацию или сможете запросить эти данные у пользователя.

Собираем данные пользователя

Теперь нужно узнать как можно больше подробностей о клиенте банка. Используем для этого команду prompt() — она покажет пользователю диалоговое окно с вопросом, в которое тот введёт ответ. За внешний вид диалогового окна отвечает браузер и JavaScript, нас оно не должно волновать.

Мы используем prompt() в строго учебных целях, чтобы ускорить работу — обычно в вебе эта команда не используется. В реальном продукте мы бы нарисовали веб-страницу, в которой была бы форма, а пользователь вводил свои данные в неё. Но это тема для отдельной статьи.

Результат работы prompt() — строка, даже если пользователь ввёл число. А нам нужно работать с числами. Поэтому принудительно переведём все введённые значения в числа, чтобы в программе не возникло случайных ошибок (о них мы писали в статье о типах данных). Используем для этого функцию Number(), которая работает так: в скобках подаём строку, а возвращается число.

// запрашиваем размер кредита, срок и проценты
var money_text = prompt('Сколько вам нужно денег? Напишите число в рублях');
var month_text = prompt('На сколько месяцев вы хотите его взять?');
var percent_text = prompt('Под какой процент?');
//узнаём возраст и количество детей на содержании

var age_text = prompt('Сколько вам лет?');
var child_text = prompt('Сколько у вас несовершеннолетних детей?');
//переводим строки в числа

money = Number(money_text);
month = Number(month_text);
percent = Number(percent_text);
child = Number(child_text);
age = Number(age_text);

Логика калькулятора

Теперь мы знаем всё, что нужно. Начинаем вычислять.

Банки смотрят, сколько у вас несовершеннолетних детей. По закону их обязаны содержать родители, и банки на каждого ребёнка закладывают определённую сумму. Её вычитают из вашей зарплаты, чтобы оценить, хватит ли денег платить за кредит каждый месяц.

Изначально предполагаем, что у клиента нет детей и расходов на них нет. Если дальше выяснится, что дети всё-таки есть, то переменной child_expense присвоим новое значение.

child_expense = 0;

Теперь смотрим на возраст. Давайте предположим, что чем старше человек, тем сложнее ему будет выплатить кредит. Это необязательно так, но при решении будем исходить из этого — так интереснее.

Чтобы проверить возраст, будем использовать условный оператор if. В общем виде он выглядит так:

if (условие) {
    действие
  };

По-русски это звучит так: если условие выполнилось, то выполняем какое-то действие. Иногда нужно дополнительно что-то сделать, если условие не выполняется. Для этого в конец условного оператора добавляют else {}

if (условие) {
    //если условие выполняется, то делаем это
  } else {
    //если условие не выполняется, делаем это
    };

Внутри одного условного оператора тоже можно использовать другие условные операторы, вкладывая их друг в друга. Они не перепутаются внутри, если внимательно следить за фигурными скобками: {}. Сколько у нас открывающих скобок {, столько же должно быть и закрывающих }, иначе программа не будет работать.

Вот как выглядит наша проверка возраста с вложенным условием. Если клиенту больше 55 лет, то делаем повышенный коэффициент риска. В противном случае (else) мы смотрим, сколько у него детей. Если ребёнок один — делаем одни расходы, если два и больше — другие.

//если клиенту больше 55 лет, устанавливаем повышенный коэффициент риска
if (age > 55) { age_coeff = 3 }
else {
  // если не больше, чем 55 — устанавливаем стандартный возрастной коэффициент
  age_coeff = 2;
  // если у клиента один ребёнок, предполагается, что на него уходит 10 тысяч в месяц
  if (child == 1) { child_expense = 10000 }
  // если два и больше — умножаем количество детей на фиксированную ставку
  else { child_expense = child * 8000 }
};

Теперь рассчитываем ежемесячный размер платежа. Для этого складываем сумму кредита с размером процентов, которые набегут за время кредита, и делим всё на количество месяцев.

credit = (money + ( (money*percent/(12* 100)) * month ))
/ month;

Чтобы посчитать минимально необходимую зарплату, берём наш ежемесячный платёж, умножаем его на возрастной коэффициент, и добавляем расходы на себя и на ребёнка.

salary = (credit*age_coeff) + month_expense
+ child_expense;

Нам не нужна точность до копеек — округлим зарплату до целых рублей функцией toFixed(). В скобках указываем, сколько цифр после запятой нам нужно. Так как нам копейки не нужны — указываем ноль.

salary = salary.toFixed(0);

Когда всё посчитано, выводим результат на экран.

alert('В месяц вам нужно будет платить ' + credit.toFixed(0)
+ 'р. Чтобы повысить шансы на одобрение такого кредита,
ваша зарплата должна быть не ниже ' + salary + ' р.');

Итоговый код

var age_coeff; // возрастной коэффициент, который влияет на платёжеспособность
// возраст, размер кредита и количество месяцев
var age;
var money;
var month;
var child; // количество детей
var child_expense; // сколько уходит на детей в месяц
var percent; // процент по кредиту
var credit; //размер ежемесячного платежа по кредиту
var month_expense = 20000; // Предположение банка: сколько клиент тратит каждый месяц
var salary; // требуемый размер зарплаты
// запрашиваем размер кредита, срок и проценты
var money_text = prompt('Сколько вам нужно денег? Введите сумму в рублях');
var month_text = prompt('На сколько месяцев вы хотите его взять?');
var percent_text = prompt('Под какой процент?');
//узнаём возраст и количество детей на содержании
var age_text = prompt('Сколько вам лет?');
var child_text = prompt('Сколько у вас несовершеннолетних детей?');
//переводим строки в числа
money = Number(money_text);
month = Number(month_text);
percent = Number(percent_text);
child = Number(child_text);
age = Number(age_text);
// изначально предполагаем, что у клиента нет детей и нет поэтому расходов на них
child_expense = 0;
//если клиенту больше 55 лет, устанавливаем повышенный коэффициент риска
if (age > 55) { age_coeff = 3 }
else {
  // если не больше, чем 55 — устанавливаем стандартный возрастной коэффициент
  age_coeff = 2;
  // если у клиента один ребёнок, предполагается, что на него уходит 10 тысяч в месяц
  if (child == 1) { child_expense = 10000 }
  // если два и больше — умножаем количество детей на фиксированную ставку
  else { child_expense = child * 8000 }
};
//считаем ежемесячный размер платежа
credit = (money + ((money * percent / (12 * 100)) * month)) / month;
// считаем зарплату с учётом трат и коэффициентов
salary = (credit * age_coeff) + month_expense + child_expense;
//округляем зарплату до целых чисел, без копеек
salary = salary.toFixed(0);
//выводим результат на экран
alert('В месяц вам нужно будет платить ' + credit.toFixed(0) + 'р. Чтобы повысить шансы на одобрение такого кредита, ваша зарплата должна быть не ниже ' + salary + ' р.');

Этот алгоритм можно сделать более приближённым к жизни: проверить стаж работы, семейное положение, трудовой стаж и так далее. Попробуйте изменить код под свои нужды: поставьте мощь компьютерной логики на службу себе.

Получите ИТ-профессию
В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.
Начать карьеру в ИТ
Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию
Еще по теме
easy