Timkor

loops

Aug 4th, 2021
775
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // Ира Чередниченко
  2. // https://zero.p2p.shpp.me/tasks/3_1_stars.html
  3.  
  4.  
  5. //вивести на екран 10 зірочок <while>
  6.  
  7. let stars = 0; /* є така штука - масиви, ось саме їх іменувати варто в множині, а змінні що не є масивами, краще в однині. Що ж до семантики іменування - це кількість зірок, ось так краще іменувати: amountOfStar або numberOfStar або краще starNumber, чому краще - тому що переше слово каже про яку сутність йде мова, бо якщо будуть різні сутністі (в цій задачі одна сутність - зірки) тоді їхні кількості не будть всі однаково розпочинатися із слова (number - кількість) , тож буде легше читати та писати такі імена. */
  8. while (stars < 10) {    //Код из тела цикла выполняется, пока условие stars истинно(true) // точніше поки умова stars < 10 істинна, можна для наочності додати логування цієї умови:
  9.     console.log('stars = ' + stars + '; stars < 10 = ' +  stars < 10 + ';');
  10.     console.put("*");
  11.     stars++            //Если бы строка stars++ отсутствовала, то цикл бы повторялся (в теории) вечно // саме так, бо змінна від якої залежить виконання умови циклу, а значить його чи продовження, чи зупинка, не змінювалася, тобто умова завжди була істинною.
  12. }
  13.  
  14.  
  15.  
  16. //вивести на екран 10 зірочок <for>
  17.  
  18. for(let stars1 = 0; stars1 < 10; stars1++)     // начало, условие, шаг (10 шагов, итераций) // ох, ох, охохох - не нехтуйте фігурними дужками НІКОЛИ. Синтаксично тут помилки немає, бо коли після оголошення циклу немає фігурої дужки, то одна наступна команда вважається тілом циклу. Саме одна. Але коли ви захочете дописати ще щось в тіло - то будуть дужки потрібні, а якщо тоді забути їх додати - то помилки синтаксичної не буде, а ось логічно  - буде, ще й довго можна буде її шукати.
  19. console.put("*");
  20.  
  21.  
  22.  
  23. //вивести на екран 10 зірочок <while 2>
  24.  
  25. let stars2 = 10; // вважаю, що рев'вери не запускають код з пасти, принаймні цілком, тому можна відноситися тут до різних фрагментів пасти як до різних програм, тобто використовувати ті самі змінні.
  26. while (stars2) {        //когда stars2 будет равно 0, условие станет ложным, и цикл остановится // так, але наочніше все ж повна умова вважаю while (stars2 > 0),
  27.     console.put("*");
  28.     stars2--
  29. }
  30.  
  31.  
  32.  
  33. //100 зірочок <while>
  34.  
  35. let stars3 = 0;
  36. while (stars3 < 100) {
  37.     console.put("*");
  38.     stars3++
  39. }
  40.  
  41.  
  42.  
  43. //100 зірочок <for>
  44. // тут все дивно - бо виведеться одна зірка, уважно подивіться чому так, є зайвий символ який закінчує цикл не тоді, коли потрібно.
  45. for(let stars4 = 0; stars4 < 100; stars4++);      //начало - выполняется один раз при входе в цикл; условие - проверяется перед каждой итерацией цикла. Если оно вычислится в false, цикл остановится; шаг - выполняется после тела цикла на каждой итерации перед проверкой условия
  46.  
  47. console.put("*");                            //выполняется снова и снова, пока условие вычисляется в true
  48.  
  49.  
  50.  
  51.  
  52.  
  53. //10000 зірочок <while>
  54.  
  55. let stars5 = 0;
  56. while (stars5 < 2501) {                       //если 10000 - бесконечный цикл кода /* насправді тоді учбова іде попереджає про можливий довічний цикл, хоча він не буде довічним - просто довгим, ось вона й турбується, хоче щоб ви оптимізували його. Я так зрозумів ви порахували скількі ітерацій є допустимим для того, щоб такого попредження не видавалося - добре, але ж це пів-діла, бо ж вивести нам потрібно 10 тисяч зірок, а так виведете лише 2501. Вважаю, що можна виводити не по одній, а у вкладеному циклі , порахував його кількість ітерацій так: 10_000 = 2_500 * 4, або 2000 * 5шт, Я спробував - все одно видає попередження із вкладеним циклом, ну то може просто не одну зірку вивоводити а рядок із відповідної кількості зірок. В цьому питанні Михайло прискипливо розбирався, якщо схочете  - перепитайте його поради з цього моменту. Деякі використовують команду repeat - console.put("*".repeat(5)); це те саме що console.put("*****");рядок з п'яти зірочок, ну можна і так, але тількт якщо додаткові команди не додають складності у ваше розуміння коду. */
  57.  
  58.     console.put("*");
  59.     stars5++
  60. }
  61.  
  62.  
  63.  
  64. //10000 зірочок <for>
  65.  
  66. for (let stars6 = 0; stars6 < 2501; stars6++) { //выведет 0, затем 1, затем 2500 ( 0 - будет 2501)
  67.     console.put("*");
  68. }
  69.  
  70.  
  71.  
  72. //спитати людину, скільки зірочок вона хоче побачити, і вивести таку кількість зірочок на екран <for>
  73.  
  74. let stars7 = +prompt("Скільки зірочок ви хочете побачити?");
  75. for (let i = 0; i < stars7; i++) {
  76.     console.put("*");
  77. }
  78.  
  79.  
  80.  
  81. //спитати людину, скільки зірочок вона хоче побачити, і вивести таку кількість зірочок на екран <while>
  82.  
  83. let stars8 = +prompt("Скільки зірочок ви хочете побачити?")
  84. let i = 0;
  85. while (i++ < stars8) { // можна так інкрементувати змінну-лічильник, це те саме, що написати і тілі циклу i = i + 1;
  86.     console.put("*");
  87. }
  88. // Вважаю ви набули нормального розуміння циклів, в подальшому будуть виникати деяки додаткові факти та нюанси - це обов'язково і цілком природньо.
  89. // Гарного коду!
RAW Paste Data