Timkor

fn

Feb 28th, 2021
170
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //це функція main {
  2. //  а = спитатиЛюдинуПроРозмірМасиву()
  3. // створити масив м
  4. //  спитатиЛюдинуПроВсіЕлементиМасиву(м, а)
  5. //  вивестиНаЕкранКрасивоМасив(м)
  6. //  реверснутиМасив(м)
  7. //  написати "ось реверснутий масив:"
  8. //  вивестиНаЕкранКрасивоМасив(м)
  9. //  }
  10.  
  11. /* функції це такі суперзручні підпрограмки, що ми створююємо коли декомпозуємо складну задачу на простіші, ті, що
  12. * не складно виконати, бо вони не складні - тобто не складаються з багатьох справ, а кожна відповідає за одну єдину.
  13. * Single responsibility principle (решту літер з SOLID познаєте на п2п та менторському етапі.)
  14. * Тож задача від нас вимагає настворювати купу функції та викликати їх в основній яункції з крутим іменуванням main.
  15. * Насправді це завдання вчить оперувати з функціями, передавати аргументи їм до параметрів, робити це за значенням та
  16. * за посиланням; обробляти в середені функції вхідні дані та повертати з функції результат роботи ,якщо це потрібно
  17. * Коли параметр отримав аргумент що є посиланням - наприклад масив, то можна просто модіфікувати цей параметр(масив) в середені
  18. * функції і не повертати його, бо все що ми будемо робити з таким параметром - ми будемо робити з оригіналом масиву, бо
  19. * передача за посиланням це створення змінної синониму за якою ми насправді звертаємось до того самого об'єкту, це важливо)
  20. * Нам потрібно створити функції:
  21. *  
  22. *   спитатиЛюдинуПроРозмірМасиву()
  23. * судячи з прикладу псевдокоду: а = спитатиЛюдинуПроРозмірМасиву()
  24. * ця функція має повертати значення, бо воно ж присвоюється у змінну а.
  25. *
  26. *   спитатиЛюдинуПроВсіЕлементиМасиву(м, а)
  27. * ця функція приймає до своїх параметрів вже створений масив м - важливо розуміти, що змінна ім'я масиву це не сам масив,
  28. * а лише посилання на нього, тому коли ми передамо таке ім'я до функції , до параметру функції - то ми просто кажемо
  29. * тепер в середені функції можна щось робити з нашим маисвом (бо він той самий і єдиний) просто звертаючися до нього
  30. * за другім ім'ям  - ім'ям параметру. Саме тому функція спитатиЛюдинуПроВсіЕлементиМасиву(м, а) не повертає нічого, бо
  31. * якщо ми заповнимо масив в ній - то ми заповнимо той самий раніше створений масив.
  32. *
  33. *   вивестиНаЕкранКрасивоМасив(м)
  34. * ми нікуди не присвоюєм результат її роботи, бо вона теж не повинна щось повертати,
  35. * а замість просто виводе на екран переданий їй масив.
  36. *
  37. *   реверснутиМасив(м)
  38. * знов таки приймає масив (посилання на масив) і тому ми будемо всередені реверсити саме наш оригінальний масив, він тут
  39. * за весь код створююється лише раз : створити масив м, в середені функції мейн, а далі тільки модифікуеться коли ми передаємо
  40. * посилання на нього у функціі , а ну і виводиться ще. Але інакші масиви тут ніде не створюються.
  41. *
  42. * Други раз створювати функцію для виведення на екран реверстнутого масиву не треба, можна скористатися вже існуючою.
  43. *
  44. * Тобто вашу функцію createArr(), що порушує принцип єдиної відповідальності треба декомпозувати на окремі прості функції, та
  45. * потренуватися взаємодії між ними, отриманні і передачі параметрів, поверненню результатів, якщо треба повертати.
  46. * Дуже важливо розуміти, що повенути результат з функції це виконати у ній  команду return щось, і це щось можна отримати
  47. * підставивши змінну : зміннаРезультат = якасьФункція(передалиЇйАргумент) тоді функція буде така :
  48. * // функція що повертає результат своєї роботи
  49. * функція якасьФункція(приймаємоПараметр) {
  50. *   результат = щось робимо з даними
  51. *   return результат
  52. * }
  53. * А якщо функція така:
  54. * // функція що не повертає результат роботи, а просто робить щось
  55. * * функція щеЯкасьФункція(приймаєСвійПараметр, аМожеІНеОдин) {
  56. *   красивіДані = зробимо красивими дані що прилетіли до параметру (чи параметрів)
  57. *   console.log(красв);
  58. * } - то це вона не повертає нічого, а просто щось корисне робить. Такі функції теж трапляються, теж потрібні.
  59. *
  60. * Виклик функції що щось повертає якби замінюється тим значення, що вона повертає, його потрібно кудись присвоювати,
  61. *  зміннаРезультат = якасьФункція(передалиЇйАргумент); чи можна  вивести: console.log(якасьФункція(передамоАргумент))
  62. *
  63. * Виклик функції яка просто щось робить не повертає цікавого результату, тому її можна просто викликати так:
  64. * щеЯкасьФункція(передамоЇйАргумент, аМожеІНеОдинАргумент)
  65. *
  66. *
  67. *  Але функція що отримує до параметру об'єкт за посиланням (наприклад масив) та модифікує його - вона не обов'язково
  68. * повинна повертати його( але буває що і треба), важливо розібратися чи створюється додатковий масив при цьому,
  69. * чи може при тому коли ми передаємо його аргументом до параметру, чи тільки там, де ми його явно створюємо.))
  70. *
  71. * Насправді я трохи все заплутав, щоб ви були змушені все спростити на практиці.)
  72. *
  73. *
  74. * */
  75.  
  76.  
  77. function main() {
  78.     let m = [];
  79.  
  80. //Для створення масиву чисел користувача і виводу його на екран застосуємо наступну функцію:
  81.     function createArr() {
  82.         let a = +prompt('Якій розмір масиву?')
  83.         let i = 0;
  84. // Заповнимо масив числами
  85.         for (; i < a; i++) {
  86.             m[i] = +prompt('Назвіть елементи масиву?')
  87.         }
  88.         //Виводимо масив красиво на екран
  89.         let k = 0;
  90.         let nStr1 = '';
  91.         while (k < (m.length - 1)) {
  92.             nStr1 = nStr1 + m[k] + " "
  93.             k++
  94.         }
  95.         if (k === (m.length - 1)) {
  96.             nStr1 = nStr1 + m[k] + "\n"
  97.         }
  98.         console.put('Ось Ваш масив: ' + nStr1)
  99.         return m;
  100.     }
  101.  
  102.     m = createArr();
  103. // Робимо реверс масива
  104.  
  105.     let nStr = '';
  106.     for (let j = (m.length - 1); j >= 0; j--) {
  107.         nStr = nStr + m[j] + " "
  108.     }
  109.     console.log('Ось реверснутий масив: ' + nStr)
  110. }
  111.  
  112. main();
  113.  
  114. /* не треба вложувати функції одну в одну, можна але не треба. ПОтім , можливо, колись.. але це не точно.
  115. * Зробіть їх всі окремо:
  116. *
  117. * //це функція main {
  118. //  а = спитатиЛюдинуПроРозмірМасиву()
  119. // створити масив м
  120. //  спитатиЛюдинуПроВсіЕлементиМасиву(м, а)
  121. //  вивестиНаЕкранКрасивоМасив(м)
  122. //  реверснутиМасив(м)
  123. //  написати "ось реверснутий масив:"
  124. //  вивестиНаЕкранКрасивоМасив(м)
  125. //  }
  126. * */
  127. function спитатиЛюдинуПроРозмірМасиву() {
  128.     return +prompt('enter array size, please: ');
  129. }
  130.  
  131. function спитатиЛюдинуПроВсіЕлементиМасиву(arr, arrLength) {
  132.     // заповнимо тут масив arr а насправді заповниться той, що ми передали за посиланням, тобто наш array з мейну
  133. }
  134.  
  135. function вивестиНаЕкранКрасивоМасив(a) { // в параметр а (назва для прикладу) прилетить те, що ми передамо аргументом
  136.     // коли сюди передано масив, то якщо ми його тут модифікуємо, то модифікується оригінал масиву. Ну тут треба лише вивести.
  137. }
  138.  
  139. function реверснутиМасив(massiv) { // погане іменування параметру, тільки щоб було очевидно, що можна своє, а можна і array залишити,
  140.     // ось тут ви модифікуєте його, тааак.)) І не треба повертати навіть. але.....
  141. }
  142.  
  143. function main() {
  144.     let size = спитатиЛюдинуПроРозмірМасиву();
  145.     let array = []; // оце єдиний масив, що ми тут створимо.
  146.     спитатиЛюдинуПроВсіЕлементиМасиву(array, size);
  147.     вивестиНаЕкранКрасивоМасив(array); /* при виклику функції до її параметру полетить те, що ми передамо їй аргументом,
  148.     якщо це передається масив (не примітивний тип даних) то він передеється за посиланням*/
  149.     реверснутиМасив(array);
  150.     console.log( "ось реверснутий масив:");
  151.     вивестиНаЕкранКрасивоМасив(array); // ...але після виклику реверснутиМасив він тут вже буде змінений, такий як ви зробите у тій функції
  152. }
  153.  
  154. main();
  155.  
  156. // Гарного коду.)
Add Comment
Please, Sign In to add comment