JavaScript-те флагтермен жұмыс

Қазір біз флагтарпен жұмыс істеуді үйренеміз. Флаг - бұл тек екі мән қабылдай алатын арнайы айнымалы: true және false. Флагтардың көмегімен бірдеңенің болмауын тексеріп көретін есептерді шешуге болады: мысалы, массивте белгілі бір мәні бар элементтің жоқ екенін тексеруге болады. Бастайық.

Келесі есепті шешейік: сандар массиві берілген, онда 3 мәні бар элемент бар ма, жоқ па соны тексеру керек. Егер бар болса - '+++' шығарамыз, егер жоқ болса - '---' шығарамыз.

Алдымен '+++' шығаруға тырысайық. Ол үшін біздің массивтің барлық элементтерін аралап, тексереміз - ағымдағы элемент 3 мәніне тең бе. Егер тең болса - '+++' шығарамыз:

javascriptlet arr = [1, 2, 3, 4, 5];

for (let elem of arr) {
  if (elem == 3) {
    console.log('+++');
  }
}

Бірақ біздің шешіміміз онша жақсы емес: егер массивте бір 3 мәні емес, бірнеше болса, онда '+++' бірнеше рет шығарылады. Массивті түзетейік (3 мәні бар екі элемент жасаймыз) және бұған көз жеткізейік:

javascriptlet arr = [1, 2, 3, 4, 3, 5];

for (let elem of arr) {
  if (elem == 3) {
    console.log('+++'); // бірнеше рет шығарады
  }
}

Мәселені түзетейік: элемент табылған болса, break көмегімен циклден шығайық:

javascriptlet arr = [1, 2, 3, 4, 3, 5];

for (let elem of arr) {
  if (elem == 3) {
    console.log('+++');
    break;  // циклді аяқтаймыз
  }
}

Енді массивте жалпы 3 мәні бар элементтер жоқ болса, '---' шығарылатындай етейік. Жиі кездесетін қате біздің тексеруге else қосу болады - бұл жағдайда '---' 3 емес барлық элементтерге шығарылады:

javascriptlet arr = [1, 2, 3, 4, 5];

for (let elem of arr) {
  if (elem == 3) {
    console.log('+++'); // 3 элементінде шығарады
  } else {
    console.log('---'); // 1, 2, 4, 5 элементтерінде шығарады
  }
}

Сонымен, else қосу - жаман идея, жұмыс істемейді. Осындай есептерді шешу үшін (мұндай есептер жеткілікті жиі кездеседі) флагтар деп аталатын әдісті қолданады.

Жоғарыда айтылғандай, флаг - бұл тек екі мән қабылдай алатын айнымалы: true немесе false.

Енді, flag айнымалысын жасайық мына мәнмен: егер ол true тең болса, онда массивте 3 элементі бар, ал егер false болса, онда мұндай элемент жоқ.

Бастапқыда flag айнымалысын false мәніне қояйық - яғни массивте 3 элементі жоқ деп есептейміз:

javascriptlet arr = [1, 2, 3, 4, 5];
let flag = false; // массивте 3 элементі жоқ деп есептейміз

Содан кейін біз бұрын жасағандай циклді іске қосамыз. Егер цикл массивте 3 элементі бар екенін анықтаса - flag айнымалысын true мәніне қойып, break көмегімен циклден шығамыз:

javascriptlet arr = [1, 2, 3, 4, 5];
let flag = false; // массивте 3 элементі жоқ деп есептейміз

for (let elem of arr) {
  if (elem == 3) {
    flag = true; // элемент бар - flag айнымалысын қайта анықтаймыз
    break; // циклден шығамыз
  }
}

Массивте 3 бар ма, жоқ па деген сұраққа жауап циклден кейін ғана бере аламыз. Бізде бұл жауап бар: циклден кейін flag айнымалысы false болып қалуы мүмкін немесе мәні true болып өзгеруі мүмкін, егер цикл массивте 3 тапқан болса:

javascriptlet arr = [1, 2, 3, 4, 5];
let flag = false;

for (let elem of arr) {
  if (elem == 3) {
    flag = true;
    break;
  }
}

// мұнда flag айнымалысы true немесе false тең

Енді циклден кейін біз flag айнымалысына қарап, экранға '+++' немесе '---' шығаратын тексеру жасай аламыз:

javascriptlet arr = [1, 2, 3, 4, 5];
let flag = false;

for (let elem of arr) {
  if (elem == 3) {
    flag = true;
    break;
  }
}

if (flag === true) {
  console.log('+++');
} else {
  console.log('---');
}
Задание 1

Массив берілген:

javascriptlet arr = ['a', 'b', 'c', 'd', 'e'];

Бұл массивте 'c' элементі бар екенін тексеріңіз. Егер бар болса - '+++' шығарыңыз, ал егер жоқ болса - '---' шығарыңыз.

Задание 2

Санды жай сан ба, жоқ па екенін тексеретін код жазыңыз. Жай сан тек бірге және өзіне ғана бөлінеді, және басқа сандарға бөлінбейді.