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

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

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

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

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

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

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

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

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

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

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

    
language: JavaScript
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(), которая работает так: в скобках подаем строку, а возвращается число.

    
language: JavaScript
// запрашиваем размер кредита, срок и проценты
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. В общем виде он выглядит так:

    
language: JavaScript
if (условие) {

    действие

  };


Скопировать код

Код скопирован

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

    
language: JavaScript
if (условие) {

    //если условие выполняется, то делаем это

  } else {

    //если условие не выполняется, делаем это

    };


Скопировать код

Код скопирован

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

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

    
language: JavaScript
//если клиенту больше 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 + ' р.');

Итоговый код

    
language: JavaScript
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 + ' р.');


Скопировать код

Код скопирован

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

Ещё по теме