Множество — это набор различных объектов, объединённых общим признаком. Объекты множества — его элементы. Множества обозначают большими буквами, элементы перечисляют в фигурных скобках: $A=\\{2;4;6;8\\}$.
'
+ +'
Запись $3\\in A$ читается «$3$ принадлежит $A$», $5\\notin A$ — «$5$ не принадлежит $A$».
Нажми операцию — увидишь закрашенную область и результат для $A=\\{1;2;3;4\\}$, $B=\\{3;4;5;6\\}$.
'
+ +''
+ +'
';
+ h+='
Интерактив 2
Сосчитай результат
'
+ +'
Сколько элементов в указанном множестве?
'
+ +'
Вопрос 1 / 6Очки: 0 / 6
'
+ +''
+ +''
+ +'
';
+ h+=secNav('p2','p4')+readBtn('p3');
+ box.innerHTML=h; renderMath(box);
+
+ (function(){
+ var A=[1,2,3,4], B=[3,4,5,6], fig=document.getElementById('p3-fig'), out=document.getElementById('p3-out');
+ function render(op){ var regions={aOnly:'1, 2', inter:'3, 4', bOnly:'5, 6'};
+ fig.innerHTML=Math6.venn({a:'A',b:'B',shade:op,regions:regions});
+ if(op==='inter') out.innerHTML='
$A\\cap B = \\{3;4\\}$ — общие элементы
';
+ else out.innerHTML='
$A\\cup B = \\{1;2;3;4;5;6\\}$ — все элементы
';
+ renderMath(out); }
+ document.querySelectorAll('#p3-iv1 [data-op]').forEach(function(b){ b.addEventListener('click',function(){ document.querySelectorAll('#p3-iv1 [data-op]').forEach(function(x){x.classList.remove('primary');}); b.classList.add('primary'); render(b.getAttribute('data-op')); }); });
+ render('inter');
+ })();
+
+ (function(){
+ var i=0,score=0,cur=null;
+ function gen(){ var A=_distinct(_ri(3,5),1,8), B=_distinct(_ri(3,5),1,8), op=_pick(['inter','union']); var r=op==='inter'?_inter(A,B):_union(A,B); cur={A:A,B:B,op:op,n:r.length}; }
+ function show(){ if(i>=6){ document.getElementById('p3-q').innerHTML='Готово! '+score+' / 6'; if(score>=5){addXp(15,'p3-iv2');bumpProgress('p3',30);}else if(score>=3){addXp(8,'p3-iv2');bumpProgress('p3',16);} return; }
+ gen(); document.getElementById('p3-i').textContent=i+1;
+ document.getElementById('p3-q').innerHTML='$A='+_setStr(cur.A)+'$, $B='+_setStr(cur.B)+'$. Сколько элементов в $A'+(cur.op==='inter'?'\\cap':'\\cup')+'B$?'; renderMath(document.getElementById('p3-q'));
+ document.getElementById('p3-a').value=''; document.getElementById('p3-fb').style.display='none'; }
+ function go(){ if(i>=6)return; var fb=document.getElementById('p3-fb'), v=parseInt(document.getElementById('p3-a').value,10);
+ if(isNaN(v)){ feedback(fb,false,'Введи число.'); return; }
+ var r=cur.op==='inter'?_inter(cur.A,cur.B):_union(cur.A,cur.B);
+ if(v===cur.n){ score++; feedback(fb,true,'✓ Верно: '+_setStr(r)+' — '+cur.n+' элем.'); } else feedback(fb,false,'✗ Нет. '+(cur.op==='inter'?'A\\cap B':'A\\cup B')+' = '+_setStr(r)+' ('+cur.n+').');
+ document.getElementById('p3-s').textContent=score; i++; setTimeout(show,1500); }
+ document.getElementById('p3-go').addEventListener('click',go);
+ document.getElementById('p3-a').addEventListener('keydown',function(e){ if(e.key==='Enter')go(); }); show();
+ })();
+}
+
+/* ===================== § 4. КРУГИ ЭЙЛЕРА ===================== */
+function buildP4(){
+ var box=document.getElementById('p4-body'); var h='';
+ h+=makeCard('theory','Круги Эйлера','4.1',
+ '
Множества удобно изображать кругами (круги Эйлера). Пересекающиеся круги показывают общую часть. Если в $A$ — $a$ элементов, в $B$ — $b$, а в пересечении — $c$, то в объединении: $|A\\cup B| = a + b - c$ (общие посчитаны дважды — вычитаем один раз).
');
+ h+='
Интерактив 1
Задача с кругами Эйлера
'
+ +'
Разнеси данные по кругам и ответь на вопрос.
'
+ +'
Задача 1 / 5Очки: 0 / 5
'
+ +''
+ +''
+ +'
';
+ h+='
Интерактив 2
Формула объединения
'
+ +'
Используй $|A\\cup B| = |A| + |B| - |A\\cap B|$.
'
+ +'
Задача 1 / 5Очки: 0 / 5
'
+ +''
+ +''
+ +'
';
+ h+=secNav('p3','final')+readBtn('p4');
+ box.innerHTML=h; renderMath(box);
+
+ (function(){
+ var i=0,score=0,cur=null;
+ function gen(){ var c=_ri(3,8), aOnly=_ri(4,12), bOnly=_ri(4,12), neither=_ri(0,6); var a=aOnly+c, b=bOnly+c, T=a+b-c+neither;
+ var ask=_pick(['aOnly','bOnly','neither']); cur={a:a,b:b,c:c,aOnly:aOnly,bOnly:bOnly,neither:neither,T:T,ask:ask}; }
+ function show(){ if(i>=5){ document.getElementById('p4-fig').innerHTML=''; document.getElementById('p4-q').innerHTML='Готово! '+score+' / 5'; if(score>=4){addXp(15,'p4-iv1');bumpProgress('p4',30);}else if(score>=2){addXp(8,'p4-iv1');bumpProgress('p4',16);} return; }
+ gen(); document.getElementById('p4-i').textContent=i+1;
+ document.getElementById('p4-fig').innerHTML=Math6.venn({a:'Матем.',b:'Физика',shade:'none',regions:{aOnly:cur.aOnly,inter:cur.c,bOnly:cur.bOnly,outside:cur.neither}});
+ var qq={aOnly:'Сколько любят только математику?', bOnly:'Сколько любят только физику?', neither:'Сколько не любят ни то, ни другое?'};
+ document.getElementById('p4-q').innerHTML='В классе '+cur.T+' учеников: '+cur.a+' любят математику, '+cur.b+' — физику, '+cur.c+' — оба предмета. '+qq[cur.ask];
+ document.getElementById('p4-a').value=''; document.getElementById('p4-fb').style.display='none'; }
+ function go(){ if(i>=5)return; var fb=document.getElementById('p4-fb'), v=parseInt(document.getElementById('p4-a').value,10), ans=cur[cur.ask];
+ if(isNaN(v)){ feedback(fb,false,'Введи число.'); return; }
+ if(v===ans){ score++; feedback(fb,true,'✓ Верно: '+ans+'.'); } else feedback(fb,false,'✗ Нет. Правильно: '+ans+' (см. круги).');
+ document.getElementById('p4-s').textContent=score; i++; setTimeout(show,1600); }
+ document.getElementById('p4-go').addEventListener('click',go);
+ document.getElementById('p4-a').addEventListener('keydown',function(e){ if(e.key==='Enter')go(); }); show();
+ })();
+
+ (function(){
+ var i=0,score=0,cur=null;
+ function gen(){ var c=_ri(2,8), a=c+_ri(2,10), b=c+_ri(2,10); cur={a:a,b:b,c:c,ans:a+b-c}; }
+ function show(){ if(i>=5){ document.getElementById('p4-fq').innerHTML='Готово! '+score+' / 5'; if(score>=4){addXp(15,'p4-iv2');bumpProgress('p4',30);}else if(score>=2){addXp(8,'p4-iv2');bumpProgress('p4',16);} return; }
+ gen(); document.getElementById('p4-fi').textContent=i+1; document.getElementById('p4-fq').innerHTML='$|A|='+cur.a+'$, $|B|='+cur.b+'$, $|A\\cap B|='+cur.c+'$. Найди $|A\\cup B|$.'; renderMath(document.getElementById('p4-fq'));
+ document.getElementById('p4-fa').value=''; document.getElementById('p4-ffb').style.display='none'; }
+ function go(){ if(i>=5)return; var fb=document.getElementById('p4-ffb'), v=parseInt(document.getElementById('p4-fa').value,10);
+ if(isNaN(v)){ feedback(fb,false,'Введи число.'); return; }
+ if(v===cur.ans){ score++; feedback(fb,true,'✓ Верно: '+cur.a+'+'+cur.b+'−'+cur.c+'='+cur.ans+'.'); } else feedback(fb,false,'✗ Нет. '+cur.a+'+'+cur.b+'−'+cur.c+'='+cur.ans+'.');
+ document.getElementById('p4-fs').textContent=score; i++; setTimeout(show,1500); }
+ document.getElementById('p4-fgo').addEventListener('click',go);
+ document.getElementById('p4-fa').addEventListener('keydown',function(e){ if(e.key==='Enter')go(); }); show();
+ })();
+}
+
+/* ===================== ФИНАЛ ГЛАВЫ — БОССЫ ===================== */
+function buildFinal(){
+ var box=document.getElementById('final-body'); var h='';
+ h+=makeCard('theory','Финал главы 3','★','
Пять боссов проверят множества, операции и круги Эйлера. Победи всех!
');
+ h+='
Боссы
Сразись с главой 3
'
+ +'
'
+ +'
Босс 1 / 5Побеждено: 0 / 5
'
+ +''
+ +''
+ +''
+ +'
';
+ h+=secNav('p4',null)+readBtn('final','Завершить главу 3 (+10 XP)');
+ box.innerHTML=h; renderMath(box);
+
+ (function(){
+ var bosses=[
+ function(){ var A=_distinct(_ri(4,6),1,9); return {name:'Счётчик', q:'Сколько элементов в множестве $'+_setStr(A)+'$?', ans:A.length}; },
+ function(){ var A=_distinct(4,1,8),B=_distinct(4,1,8); return {name:'Пересечение', q:'$A='+_setStr(A)+'$, $B='+_setStr(B)+'$. Сколько элементов в $A\\cap B$?', ans:_inter(A,B).length}; },
+ function(){ var A=_distinct(4,1,8),B=_distinct(4,1,8); return {name:'Объединение', q:'$A='+_setStr(A)+'$, $B='+_setStr(B)+'$. Сколько элементов в $A\\cup B$?', ans:_union(A,B).length}; },
+ function(){ var c=_ri(2,7),a=c+_ri(2,9),b=c+_ri(2,9); return {name:'Эйлер', q:'$|A|='+a+'$, $|B|='+b+'$, $|A\\cap B|='+c+'$. Найди $|A\\cup B|$.', ans:a+b-c}; },
+ function(){ var c=_ri(3,7),aOnly=_ri(5,12),bOnly=_ri(5,12),nei=_ri(1,5); var a=aOnly+c,b=bOnly+c,T=a+b-c+nei; return {name:'Класс', q:'В классе '+T+' человек: '+a+' играют в шахматы, '+b+' — в шашки, '+c+' — в обе игры. Сколько не играют ни в одну?', ans:nei}; }
+ ];
+ var i=0,score=0,cur=null,done=false;
+ function show(){ if(i>=5){ done=true; document.getElementById('fin-name').textContent=''; document.getElementById('fin-q').innerHTML=(score>=4?'Победа! Глава 3 пройдена. ':'Бой окончен. ')+'Побеждено боссов: '+score+' / 5.'; document.getElementById('fin-hp').style.width=(score>=4?0:40)+'%';
+ if(score>=4){ addXp(40,'final'); bumpProgress('final',100); if(window.confetti)try{confetti();}catch(e){} } else bumpProgress('final',60); return; }
+ cur=bosses[i](); document.getElementById('fin-i').textContent=i+1; document.getElementById('fin-s').textContent=score;
+ document.getElementById('fin-name').textContent='Босс '+(i+1)+': '+cur.name; document.getElementById('fin-hp').style.width=(100-i*20)+'%';
+ document.getElementById('fin-q').innerHTML=cur.q; renderMath(document.getElementById('fin-q'));
+ document.getElementById('fin-a').value=''; document.getElementById('fin-fb').style.display='none'; }
+ function go(){ if(done||i>=5)return; var fb=document.getElementById('fin-fb'), v=parseInt(document.getElementById('fin-a').value,10);
+ if(isNaN(v)){ feedback(fb,false,'Введи число.'); return; }
+ if(v===cur.ans){ score++; feedback(fb,true,'✓ Босс повержен! Ответ '+cur.ans+'.'); } else feedback(fb,false,'✗ Босс устоял. Верно: '+cur.ans+'.');
+ document.getElementById('fin-s').textContent=score; i++; setTimeout(show,1400); }
+ document.getElementById('fin-go').addEventListener('click',go);
+ document.getElementById('fin-a').addEventListener('keydown',function(e){ if(e.key==='Enter')go(); }); show();
+ })();
+}
+
+/* ===================== ДАННЫЕ ===================== */
+var SIDEBARS = {
+ p1:{ title:'Шпаргалка § 1', rows:[ ['Множество','набор различных элементов'], ['$\\in$','принадлежит'], ['$\\notin$','не принадлежит'], ['$\\varnothing$','пустое множество'], ['Равенство','одни и те же элементы'] ]},
+ p2:{ title:'Шпаргалка § 2', rows:[ ['Перечисление','$\\{2;4;6\\}$'], ['Свойство','$\\{x\\mid x$ чётное$\\}$'], ['Читается','«$x$ такие, что …»'] ]},
+ p3:{ title:'Шпаргалка § 3', rows:[ ['$A\\cap B$','общие элементы (и в A, и в B)'], ['$A\\cup B$','все элементы (хотя бы в одном)'], ['Пример','$\\{1;2;3;4\\}\\cap\\{3;4;5\\}=\\{3;4\\}$'] ]},
+ p4:{ title:'Шпаргалка § 4', rows:[ ['Круги Эйлера','наглядное изображение множеств'], ['Объединение','$|A\\cup B|=|A|+|B|-|A\\cap B|$'], ['Только A','$|A|-|A\\cap B|$'] ]},
+ final:{ title:'Финал главы 3', rows:[ ['5 боссов','множества, операции, круги Эйлера'], ['Победа','4 из 5 и больше'], ['Награда','+40 XP и достижение «Глава 3 пройдена»'] ]}
+};
+var TIPS = [
+ { sec:'p1', html:'В множестве элементы различны и порядок не важен: $\\{1;2;3\\}=\\{3;2;1\\}$, а повтор не добавляет нового элемента.' },
+ { sec:'p2', html:'Характеристическое свойство $\\{x\\mid \\ldots\\}$ читается «множество всех $x$ таких, что …». Проверь признак для каждого числа.' },
+ { sec:'p3', html:'Пересечение — «И» (элемент в обоих). Объединение — «ИЛИ» (хотя бы в одном). При объединении общие элементы пишут один раз.' },
+ { sec:'p4', html:'Начинай с пересечения (центр). «Только A» = всё A минус пересечение. Не забывай тех, кто вне обоих кругов.' }
+];
+var GLOSSARY = [
+ { term:'множество', def:'Набор различных объектов (элементов), объединённых признаком.', sec:'p1', aliases:['множество','множества','множеств','множестве','множеству'] },
+ { term:'элемент', def:'Объект, входящий в множество. $a\\in A$ — $a$ принадлежит $A$.', sec:'p1', aliases:['элемент','элемента','элементы','элементов'] },
+ { term:'пустое множество', def:'Множество без элементов, обозначается $\\varnothing$.', sec:'p1', aliases:['пустое множество','пустого множества','пустым множеством'] },
+ { term:'пересечение', def:'$A\\cap B$ — элементы, принадлежащие обоим множествам.', sec:'p3', aliases:['пересечение','пересечения','пересечении'] },
+ { term:'объединение', def:'$A\\cup B$ — элементы, принадлежащие хотя бы одному множеству.', sec:'p3', aliases:['объединение','объединения','объединении'] },
+ { term:'круги Эйлера', def:'Изображение множеств кругами; пересечение — общая область.', sec:'p4', aliases:['круги эйлера','кругов эйлера','кругами эйлера','круги Эйлера'] }
+];
+var BUILDERS = { p1:buildP1, p2:buildP2, p3:buildP3, p4:buildP4, final:buildFinal };
+Object.assign(window.M6, { sidebars:SIDEBARS, tips:TIPS, glossary:GLOSSARY, builders:BUILDERS });