Пишем программу, которая одобрит вам кредит
Или не одобрит, хехех
В этом выпуске вы сможете потренировать программистскую конструкцию «Если...то» — один из главных кирпичиков любой программы. Для интереса обернем эту конструкцию в понятную задачу.
Когда банк выдаёт кредит, он проверяет человека по многим параметрам. Один из них — платежеспособность. Это значит, что банк берёт уровень доходов, примерно прикидывает ваши траты и смотрит, хватит ли вам денег рассчитаться по кредиту.
Проблема в том, что критериев платежеспособности и трат может быть очень много и они могут ветвиться: если у человека одна ситуация, считать одно; если другая — считать другое. Чтобы ускорить проверку, банки создают автоматические системы оценки — по-нашему, системы скоринга. Сейчас мы напишем похожую программу: она будет учитывать несколько критериев и выдавать оценку платежеспособности по нашей собственной методике.
Зачем вам такой калькулятор — решайте сами: можно открыть собственный банк, можно оценивать бизнес-проекты, можно прикидывать экономическую эффективность поездки на дачу.
Банки используют намного более сложный анализ клиента, чем тот, который опишем в этой программе мы. Результаты, которые вы получите после выполнения программы — примерные, и не влияют на получение реального кредита.
Объявляем переменные
Смысл решения в том, чтобы вначале узнать у человека всё про кредит и про его семейное положение, затем выяснить размер ежемесячного платежа и наконец рассчитать нужный уровень зарплаты.
Для начала объявим переменные, которые будем использовать в расчётах.
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 + ' р.');Этот алгоритм можно сделать более приближёным к жизни: проверить стаж работы, семейное положение, трудовой стаж и так далее. Попробуйте изменить код под свои нужды: поставьте мощь компьютерной логики на службу себе.
Подписывайтесь на наш паблик, чтобы научиться хорошо зарабатывать без кредитов!Делитесь мнением: кредиты — зло или необходимость?
