Timkor

fn

Jan 4th, 2021 (edited)
259
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. let arrSize; //це глобальна змінна, глобальні змінні - подлі та підступні бо загально доступні , майже завжди бажано уникати, але існують винятки.
  12. // в цьому завданні не обов'язково уникати, та хоча б присвоїмо їй значення явно, а потім передамо як параметр, саме як в ТЗ
  13. let arr = []; // доречі це теж глобальна змінна
  14.  
  15. function getSize() {
  16.     let size; // це локальна для цієї функції змінна
  17.     do {
  18.        size = +prompt("Яка довжина масиву");
  19.     } while (size <= 0)
  20.     return size; // тут ми повертаємо значення, тобто там, де буде викликатися функція вона буде повертати число
  21. }
  22.  
  23. function createArr(array, size) { // тут ви масив заповнюєте, тож вдаліше ім'я fillArr, додав параметри, куди передамо
  24. // при виклику функції якийся масив та його розмір. (звісно можна тільки масив, але ТЗ хоче розмір окремо)
  25.     let n = 0;
  26.     for (let i = 0; i < size; i++) {
  27.         array[i] = prompt(`Яке значення елементу масиву  array[${n}] ?`);
  28.         n++;
  29.     }
  30.     console.log();
  31.     // важливо розуміти, чому звідси не повертаємо заповнений масив: return array; , а все одно він заповниться.
  32. }
  33. function bubbleSort(arr) { // параметр це локальна для функції змінна, куди передається значення при виклику функції
  34. // тобто тут ім'я арр це  співпадіння з глобальним, внутрі функції буде використовуватися значення локальної змінної -
  35. // точніше параметру, а точніше те, що ми туда передамо при викликові функції.
  36.     for (let j = arr.length - 1; j > 0; j--) {
  37.         for (let i = 0; i < j; i++) { // можна зупиняти коли за один прохід не виконано жодної зміни
  38.             if (arr[i] > arr[i + 1]) {
  39.                 let temp = arr[i];
  40.                 arr[i] = arr[i + 1];
  41.                 arr[i + 1] = temp;
  42.             }
  43.         }
  44.     }
  45. }
  46. function showArr(array) { //
  47.     //arr.sort()
  48.         for (let i = 0; i < array.length; i++) {
  49.         if (i == array.length - 1) {
  50.             console.put(array[i] + ".")            
  51.         } else {
  52.             console.put(array[i] + ", ");
  53.         }
  54.     }
  55.     console.log();
  56.     console.log();
  57. }
  58. function showMesage(msg) {
  59.     console.log(msg);  
  60.     console.log();
  61. }
  62. function reversbubbleSort() { // реверснутий це ж просто перевернутий , тобто з кінця до начала.
  63. // не варто дулювати код, аббревіатура DRY. Малося на увазі написати фунцію, що буде масив "переворачивати" у самому собі,
  64. // тобто масив [D, R, Y] перетворить у [Y, R, D]. Тоді сотрування навпаки ввзагалі не потрібне, хоча тут сотрування і не було обов'язковим.
  65.   for (let j = arr.length - 1; j > 0; j--) {
  66.     for (let i = 0; i < j; i++) {
  67.         if (arr[i] < arr[i + 1]) {
  68.                 let temp = arr[i];
  69.                 arr[i] = arr[i + 1];
  70.                 arr[i + 1] = temp;
  71.             }
  72.         }
  73.     }
  74. }
  75. function showreversArr() {
  76.     //arr.reverse();
  77.     for (let i = 0; i < arr.length; i++) {
  78.         if (i == arr.length - 1) {
  79.             console.put(arr[i] + ".")
  80.         } else {
  81.             console.put(arr[i] + ", ");
  82.         }
  83.     }
  84. }
  85.  
  86. function main() {
  87.     let a = getSize(); // створили локальну для мейну змінну, в неї отримали розмір масиву
  88.     let m = []; // створили локальний для функції мейн масив.
  89.     createArr(m, a); // так заповнимо масив м
  90.     createArr(arr, a); // так заповнимо глоб. масив арр. Масиво передаються за посиланням, тобто передаємо адресу реального масиву.
  91.     bubbleSort(m); // можна і без сортування, реверс лише
  92.     bubbleSort(arr);
  93.     showArr(m);
  94.     showArr(arr); //  додавши параметр у функцію вона стає гнучкою та може перевикористовуватися, а при виклику передається аргумент, який приймає параметр.)
  95.     showMesage("ось реверснутий масив");
  96.     reversbubbleSort();
  97.     showreversArr();
  98.  
  99.     return m; // корисно зрозуміти, чому тут є сенс повертати масив . Це лише для прикладу тут, повертати по ТЗ з мейну нічого не потрібно.
  100. }
  101.  
  102. main(); // можна не отримувати те, що повертає функція (у нашому випадку масив)
  103. let anotherArr = main(); // а можна отримати
  104.  
  105.  // тут спробуйте вивести масиви м, арр, еназерАрр
  106. /* Корисно вміти передавати аргументи до параметрів функцій, та щось повертати з них. Це не завжди потрібно застосовувати,
  107. але переважно саме так і пишуть функції
  108. */
  109.  
  110.  // Гарного коду.
Add Comment
Please, Sign In to add comment