Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*Задача про банкомат:*/
- /*============= поперше =========================*/
- for (let j = 2; j > 1; j++) { // тут вайл більш підійде вважаю.
- numCard = +prompt("Введите номер карты от 0 до 9:");
- if (numCard < 0 || numCard > 9) { // можна спочатку відсіяти шелуху, а потім обробляти валідні дані
- continue
- } else {
- for (let k = 2; k > 1; k++) { // як і тут
- moneyIn = +prompt("Введите сумму от -1000 до 1000:");
- if (moneyIn < -1000 || moneyIn > 1000) {
- continue
- }
- k = 0 // вайл рішає такі штуки зручніше , був би вайл, тут нічого б не треба було писати, або щось зрозуміле.
- } // Ввод суммы денег
- }
- j = 0 // як і тут.)
- } // Ввод номера карты
- cards[numCard] += moneyIn;
- /*============= подруге =========================*/
- let cards = [];
- cards.lenght = 10;
- // в ідеалі кожній змінній надавати окремий рядок із словом let, тоді вони видніші, але зустрічав ще таке:
- let numCard,
- moneyIn,
- sumMoney = 0; // але я б і так не "економив".
- for (let i = 0; i < cards.lenght; i++) {
- cards[i] = (i * 1000); // щедро..
- } // Значения для каждой карты
- for (let j = 2; j > 1; j++) { // тут вайл більш підійде вважаю.
- numCard = +prompt("Введите номер карты от 0 до 9:");
- if (numCard >= 0 && numCard <= 9) {
- for (let k = 2; k > 1; k++) { // як і тут
- moneyIn = +prompt("Введите сумму от -1000 до 1000:");
- if (moneyIn < -1000 || moneyIn > 1000) {
- continue // і брейк, і контінью бувають зручні і корисні, але майже завжди свідчать про неідеально обраний алгоритм
- } else {
- k = 0 // вайл рішає такі штуки зручніше , на мій погляд.
- }
- } // Ввод суммы денег
- } else {
- continue
- }
- j = 0
- } // Ввод номера карты
- cards[numCard] += moneyIn;
- for (let j = 0; j < cards.lenght; j++) {
- console.put(cards[j] + " ");
- sumMoney += cards[j];
- } // Вывод баланса баланса + сумма по картам
- console.log("\nСумма по всем картам: " + sumMoney);
- /* недолік вашого алгоритму у тому, що він складний, складається з декількох простих підпрограм, але ви його не розклали
- * на них, а так і закодили, складно. З цього отримаємо складне читання, складне написання, складне підтримання та внесення
- * правок, складне розширення та додавання функціоналу, все склдадне. Псевдокод основної частини такий:
- * спитати номер картки: якщо не валідний перепитати;
- * спитати суму для поповнення: якщо не валідна - перепитати;
- * ваш алгоритм потребує вкладати наступну дію у середину попередньої, це не тільки не зручно писати та читати, а ще
- * у коді рівень вкладенності глибокий, а чим він глибший, тим вище когнитивне навантаження, тобто треба тримати
- * контекст у голові, і хоча іменування змінних допомагають це робити, все ж коли ми прийдемо до другого елсе - не факт,
- * що не прийдеться повертатится та передивлятися до якої він умови. Пропоную знов таки do .. while (просто зручно тут)
- * хоча можна і звичайним вайлом, звісно.. ну а фор - фор крутий коли знаємо кількість ітерації, тобто не напевно знаемо
- * а вона може бути виражена числом. Вайл від дувайла відрізняється тим, що дувайл завжди принайсні один раз виконається,
- * в той час як вайл може не виконатися жодного, якщо умова в ньому буде false
- *
- * do {
- * cardNumber = +prompt('Enter card number: ');
- * } while (cardNumber < 0 || cardNumber > 9);
- * все, коли ми пройдемо такий цикл, то вже маємо валідний номер, так само суму, такі блоки можуть слідувати один за
- * одним, не потрібна вкладенність, їх можна винести у окремі функції - а саме так і робиться, у той час як вкладенні
- * штуки не так вже просто декомпозувати на окремі підпрограми.
- *
- * Важливо декомпозувати алгоритм, і закодити його відповідно до підпунктів (підпрограмами), так, вони бувають
- * вкладені, але зазвичай можна спростити до окремих, і щоб кожна виконувала б щось одне - мала одну відповідальність кажуть.
- * */
- /* Гарного коду! */
Add Comment
Please, Sign In to add comment