Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // не треба ускладнювати завдання, будь ласка. Функції то сила, але тут використовуєте не зовсім вдало, і зовсім не вчасно.
- // я не зможу на прикладі цієї задачи пояснити свою думку щодо работи з функціями, лише відмічу, що вони мають робити код
- // зрозумілішим завдяки декомпозиції. Також дуже важливо щоб кожна функція виконувала саме те, про що йдеться у її назві, та
- // нічого більше, звідки можна зрозуміти, що іменування функцій не саме просте та пов'язане із семантикою коду.
- let cards = [];
- for (var i = 0; i < 10; i++) {
- cards.push(0);
- }
- // Пусті рядки - то є норм, зазвичай один , щоб щось відокремити.
- ATM();
- //Запускаем банкомат
- function ATM(){ // невдала назва, краще startAtm
- checkCard();
- }
- // Запрашивем номер карты и проверяем на корректность
- function checkCard(){ // можливо checkCardNumberValid - та зазвичай зручно щоб функції перевірки чогось повертали булеве
- // значення, тобто пройдено перевірку чи ні, а у таких функці назва має бути на кшталт isCardNumberValid
- numCard = +prompt('vvedi nomer kartochki:'); // тут ви просите номер картки
- if(numCard >= 0 && numCard <= 9){ // яккщо номер валідний тобто від 0 до 9 то
- console.log('vvedi nomer kartochki: ' + numCard); // краще console.log('nomer kartochki is: ' + numCard);
- checkUpCard(numCard); // не можу поняти, що буде робити функція checkUpCard , теж перевірка, але ж..
- }else{
- checkCard(); // виклик функції із самої себе то є рекурсія, тут вона не потрібна.
- }
- }
- // Запрашиваем сумму для пополнения карты, так же проверяем сумму на корректность // добре, що пишете коменти! тепер можна
- // припустити, що більш доречна назва для функції була б requestPaymentSumAndCheckPayventSumValid та ми пам'ятаємо, що
- // краще коли функція робить лише одне діло, тобто тут і назва і семантика не дуже.
- function checkUpCard(numCard){ // круто, що передаєте параметром номер картки для обробки
- upCard = +prompt('skolko polozhit?');
- if(upCard >= -1000 && upCard <= 1000){
- console.log('skolko polozhit? ' + upCard);
- cards[numCard] = upCard;
- console.log(cards.join(' '));
- balanseCard(); // послідовний виклик наступної функції то є норм, але у вас знов таки вони закільцуються у
- // рекурсію, треба не зовсім так хробити, треба щоб десь був процес* (можливо теж функція) який здійснює виклик послідовних
- // потрібних функцій ТА ЩОБ керування поверталося саме йому на первних етапах. Обіцяв зараз про функції не писати - то не
- // буду. більше не буду.
- }else{
- checkUpCard(numCard);
- }
- }
- // подсчитываем баланс на всех картах и предоставляем возможнсть положить еще деньни на карту
- function balanseCard(){
- let cardBalance = 0; // назва не асоціюєця із сумою
- for(card of cards){
- cardBalance += +card;
- }
- console.log('v summe na vseh kartah ' + cardBalance);
- let repeat = confirm('Hochesh eshe polozhit dengi na kartochku?');
- if(repeat){
- ATM(); // ось тут коло замкнеться і викликана колись у початку ланцюжка функція ATM не буде завершена, і не поверне керування у процес* а замість цього вона ж знову викликається якби всереді самої себе.. і так не буде вічно, бо ж
- // коди ви все запускаєте і нічого не завершуєте то пам'яті не вистачить, рекурсія потребує ресурсів.)
- }
- }
- // Hochesh eshe polozhit dengi na kartochku? -
- // краще не використовувати транслітерацію і писати на англійській мові латинськими літерами, а якщо немає такої можливості
- // то на зручній вам, але тоді, напевно, кирилецею
- // Гарного коду!
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement