Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //це функція main {
- // а = спитатиЛюдинуПроРозмірМасиву()
- // створити масив м
- // спитатиЛюдинуПроВсіЕлементиМасиву(м, а)
- // вивестиНаЕкранКрасивоМасив(м)
- // реверснутиМасив(м)
- // написати "ось реверснутий масив:"
- // вивестиНаЕкранКрасивоМасив(м)
- // }
- /* функції це такі суперзручні підпрограмки, що ми створююємо коли декомпозуємо складну задачу на простіші, ті, що
- * не складно виконати, бо вони не складні - тобто не складаються з багатьох справ, а кожна відповідає за одну єдину.
- * Single responsibility principle (решту літер з SOLID познаєте на п2п та менторському етапі.)
- * Тож задача від нас вимагає настворювати купу функції та викликати їх в основній яункції з крутим іменуванням main.
- * Насправді це завдання вчить оперувати з функціями, передавати аргументи їм до параметрів, робити це за значенням та
- * за посиланням; обробляти в середені функції вхідні дані та повертати з функції результат роботи ,якщо це потрібно
- * Коли параметр отримав аргумент що є посиланням - наприклад масив, то можна просто модіфікувати цей параметр(масив) в середені
- * функції і не повертати його, бо все що ми будемо робити з таким параметром - ми будемо робити з оригіналом масиву, бо
- * передача за посиланням це створення змінної синониму за якою ми насправді звертаємось до того самого об'єкту, це важливо)
- * Нам потрібно створити функції:
- *
- * спитатиЛюдинуПроРозмірМасиву()
- * судячи з прикладу псевдокоду: а = спитатиЛюдинуПроРозмірМасиву()
- * ця функція має повертати значення, бо воно ж присвоюється у змінну а.
- *
- * спитатиЛюдинуПроВсіЕлементиМасиву(м, а)
- * ця функція приймає до своїх параметрів вже створений масив м - важливо розуміти, що змінна ім'я масиву це не сам масив,
- * а лише посилання на нього, тому коли ми передамо таке ім'я до функції , до параметру функції - то ми просто кажемо
- * тепер в середені функції можна щось робити з нашим маисвом (бо він той самий і єдиний) просто звертаючися до нього
- * за другім ім'ям - ім'ям параметру. Саме тому функція спитатиЛюдинуПроВсіЕлементиМасиву(м, а) не повертає нічого, бо
- * якщо ми заповнимо масив в ній - то ми заповнимо той самий раніше створений масив.
- *
- * вивестиНаЕкранКрасивоМасив(м)
- * ми нікуди не присвоюєм результат її роботи, бо вона теж не повинна щось повертати,
- * а замість просто виводе на екран переданий їй масив.
- *
- * реверснутиМасив(м)
- * знов таки приймає масив (посилання на масив) і тому ми будемо всередені реверсити саме наш оригінальний масив, він тут
- * за весь код створююється лише раз : створити масив м, в середені функції мейн, а далі тільки модифікуеться коли ми передаємо
- * посилання на нього у функціі , а ну і виводиться ще. Але інакші масиви тут ніде не створюються.
- *
- * Други раз створювати функцію для виведення на екран реверстнутого масиву не треба, можна скористатися вже існуючою.
- *
- * Тобто вашу функцію createArr(), що порушує принцип єдиної відповідальності треба декомпозувати на окремі прості функції, та
- * потренуватися взаємодії між ними, отриманні і передачі параметрів, поверненню результатів, якщо треба повертати.
- * Дуже важливо розуміти, що повенути результат з функції це виконати у ній команду return щось, і це щось можна отримати
- * підставивши змінну : зміннаРезультат = якасьФункція(передалиЇйАргумент) тоді функція буде така :
- * // функція що повертає результат своєї роботи
- * функція якасьФункція(приймаємоПараметр) {
- * результат = щось робимо з даними
- * return результат
- * }
- * А якщо функція така:
- * // функція що не повертає результат роботи, а просто робить щось
- * * функція щеЯкасьФункція(приймаєСвійПараметр, аМожеІНеОдин) {
- * красивіДані = зробимо красивими дані що прилетіли до параметру (чи параметрів)
- * console.log(красв);
- * } - то це вона не повертає нічого, а просто щось корисне робить. Такі функції теж трапляються, теж потрібні.
- *
- * Виклик функції що щось повертає якби замінюється тим значення, що вона повертає, його потрібно кудись присвоювати,
- * зміннаРезультат = якасьФункція(передалиЇйАргумент); чи можна вивести: console.log(якасьФункція(передамоАргумент))
- *
- * Виклик функції яка просто щось робить не повертає цікавого результату, тому її можна просто викликати так:
- * щеЯкасьФункція(передамоЇйАргумент, аМожеІНеОдинАргумент)
- *
- *
- * Але функція що отримує до параметру об'єкт за посиланням (наприклад масив) та модифікує його - вона не обов'язково
- * повинна повертати його( але буває що і треба), важливо розібратися чи створюється додатковий масив при цьому,
- * чи може при тому коли ми передаємо його аргументом до параметру, чи тільки там, де ми його явно створюємо.))
- *
- * Насправді я трохи все заплутав, щоб ви були змушені все спростити на практиці.)
- *
- *
- * */
- function main() {
- let m = [];
- //Для створення масиву чисел користувача і виводу його на екран застосуємо наступну функцію:
- function createArr() {
- let a = +prompt('Якій розмір масиву?')
- let i = 0;
- // Заповнимо масив числами
- for (; i < a; i++) {
- m[i] = +prompt('Назвіть елементи масиву?')
- }
- //Виводимо масив красиво на екран
- let k = 0;
- let nStr1 = '';
- while (k < (m.length - 1)) {
- nStr1 = nStr1 + m[k] + " "
- k++
- }
- if (k === (m.length - 1)) {
- nStr1 = nStr1 + m[k] + "\n"
- }
- console.put('Ось Ваш масив: ' + nStr1)
- return m;
- }
- m = createArr();
- // Робимо реверс масива
- let nStr = '';
- for (let j = (m.length - 1); j >= 0; j--) {
- nStr = nStr + m[j] + " "
- }
- console.log('Ось реверснутий масив: ' + nStr)
- }
- main();
- /* не треба вложувати функції одну в одну, можна але не треба. ПОтім , можливо, колись.. але це не точно.
- * Зробіть їх всі окремо:
- *
- * //це функція main {
- // а = спитатиЛюдинуПроРозмірМасиву()
- // створити масив м
- // спитатиЛюдинуПроВсіЕлементиМасиву(м, а)
- // вивестиНаЕкранКрасивоМасив(м)
- // реверснутиМасив(м)
- // написати "ось реверснутий масив:"
- // вивестиНаЕкранКрасивоМасив(м)
- // }
- * */
- function спитатиЛюдинуПроРозмірМасиву() {
- return +prompt('enter array size, please: ');
- }
- function спитатиЛюдинуПроВсіЕлементиМасиву(arr, arrLength) {
- // заповнимо тут масив arr а насправді заповниться той, що ми передали за посиланням, тобто наш array з мейну
- }
- function вивестиНаЕкранКрасивоМасив(a) { // в параметр а (назва для прикладу) прилетить те, що ми передамо аргументом
- // коли сюди передано масив, то якщо ми його тут модифікуємо, то модифікується оригінал масиву. Ну тут треба лише вивести.
- }
- function реверснутиМасив(massiv) { // погане іменування параметру, тільки щоб було очевидно, що можна своє, а можна і array залишити,
- // ось тут ви модифікуєте його, тааак.)) І не треба повертати навіть. але.....
- }
- function main() {
- let size = спитатиЛюдинуПроРозмірМасиву();
- let array = []; // оце єдиний масив, що ми тут створимо.
- спитатиЛюдинуПроВсіЕлементиМасиву(array, size);
- вивестиНаЕкранКрасивоМасив(array); /* при виклику функції до її параметру полетить те, що ми передамо їй аргументом,
- якщо це передається масив (не примітивний тип даних) то він передеється за посиланням*/
- реверснутиМасив(array);
- console.log( "ось реверснутий масив:");
- вивестиНаЕкранКрасивоМасив(array); // ...але після виклику реверснутиМасив він тут вже буде змінений, такий як ви зробите у тій функції
- }
- main();
- // Гарного коду.)
Add Comment
Please, Sign In to add comment