feat(math6): обогащение всех глав — хук, разбор по шагам, факты в каждом §
Каждый содержательный параграф 6 глав дополнен (Sonnet, по главе): - карточка «Где это в жизни» (реальный контекст темы); - «Разбор по шагам» (нумерованный алгоритм решения); - «А знаешь ли ты?» (интересный факт/история); - доведено до ≥2 рабочих интерактивов (где было меньше — добавлены). Движок/общие файлы не трогались; структура M6/порядок init сохранены. Проверено: тесты math6 18/18, честный рендер 4 глав — контент появляется, рантайм-ошибок нет (только jsdom scrollTo-заглушка). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -109,11 +109,21 @@ function svgWrap(w,h,inner){ return '<div class="m6-fig" style="max-width:'+w+'p
|
||||
/* ===================== § 1. ПОЛОЖИТЕЛЬНЫЕ И ОТРИЦАТЕЛЬНЫЕ. КООРДИНАТНАЯ ПРЯМАЯ ===================== */
|
||||
function buildP1(){
|
||||
var box=document.getElementById('p1-body'); var h='';
|
||||
h+=makeCard('oral','Где это в жизни','1.0',
|
||||
'<p>Без отрицательных чисел невозможно измерить температуру зимой: −20°C — это реальный мороз. Банки записывают долги отрицательными числами, а в видеоиграх герой может иметь отрицательный счёт. Даже карты высот показывают глубину морей со знаком «минус».</p>');
|
||||
h+=makeCard('theory','Числа со знаком','1.1',
|
||||
'<p>Числа бывают <b>положительные</b> ($+3$, или просто $3$), <b>отрицательные</b> ($-3$) и <b>ноль</b> (не положителен и не отрицателен). Отрицательными измеряют температуру ниже нуля, долги, глубину.</p>');
|
||||
h+=makeCard('rule','Координатная прямая','1.2',
|
||||
'<p><b>Координатная прямая</b> — прямая с началом $O$ (точка $0$), положительным направлением (вправо) и единичным отрезком. Положительные числа — справа от нуля, отрицательные — слева.</p>'
|
||||
+'<p>Каждому числу соответствует точка, и наоборот; это его <b>координата</b>.</p>');
|
||||
h+=makeCard('example','Разбор по шагам','1.3',
|
||||
'<p>Задача: отметь число $-4$ и $3$ на координатной прямой, скажи, какое из них больше.</p>'
|
||||
+'<ol><li>Рисуем прямую с нулём посередине, единичным отрезком вправо.</li>'
|
||||
+'<li>$3$ — три единицы <b>вправо</b> от нуля: отмечаем точку $A(3)$.</li>'
|
||||
+'<li>$-4$ — четыре единицы <b>влево</b> от нуля: отмечаем точку $B(-4)$.</li>'
|
||||
+'<li>$A$ правее $B$, значит $3 > -4$. Любое положительное больше любого отрицательного.</li></ol>');
|
||||
h+=makeCard('theory','А знаешь ли ты?','1.4',
|
||||
'<p>Отрицательные числа официально признали математики лишь в XVII веке — до этого их называли «абсурдными» или «мнимыми долгами». Индийский математик Брахмагупта ещё в VII веке описал правила работы с ними, но в Европе их долго отвергали!</p>');
|
||||
h+='<div class="wg" id="p1-iv1"><div class="wg-header"><span class="wg-badge">Интерактив 1</span><div class="wg-title">Прочитай координату</div></div>'
|
||||
+'<div class="wg-help">Определи координату отмеченной точки (может быть отрицательной).</div>'
|
||||
+'<div class="score-display"><span>Вопрос <b id="p1-i">1</b> / 6</span><span>Очки: <b id="p1-s">0</b> / 6</span></div>'
|
||||
@@ -159,12 +169,22 @@ function buildP1(){
|
||||
/* ===================== § 2. МОДУЛЬ. ПРОТИВОПОЛОЖНЫЕ. Z И Q ===================== */
|
||||
function buildP2(){
|
||||
var box=document.getElementById('p2-body'); var h='';
|
||||
h+=makeCard('oral','Где это в жизни','2.0',
|
||||
'<p>Когда говорят «расстояние», всегда имеют в виду положительное число — неважно, вправо ты пошёл или влево. Именно это и есть модуль: расстояние от точки до нуля. Спортсмены говорят «разница в счёте 3 очка» — это тоже модуль разности.</p>');
|
||||
h+=makeCard('theory','Модуль и противоположные числа','2.1',
|
||||
'<p><b>Модуль</b> числа $|a|$ — это расстояние от точки $a$ до нуля; он всегда $\\ge 0$: $|{-7}|=7$, $|5|=5$, $|0|=0$.</p>'
|
||||
+'<p><b>Противоположные числа</b> отличаются только знаком ($5$ и $-5$); их сумма равна нулю, а модули равны.</p>');
|
||||
h+=makeCard('theory','Множества чисел: N ⊂ Z ⊂ Q','2.2',
|
||||
h+=makeCard('example','Разбор по шагам','2.2',
|
||||
'<p>Найти $|{-9}|$ и число, противоположное $-9$.</p>'
|
||||
+'<ol><li>Модуль — это расстояние до нуля. От $-9$ до $0$ ровно $9$ шагов по прямой.</li>'
|
||||
+'<li>Значит $|{-9}| = 9$. Знак «убираем».</li>'
|
||||
+'<li>Противоположное меняет знак: противоположное к $-9$ — это $+9$.</li>'
|
||||
+'<li>Проверка: $(-9) + 9 = 0$ — верно, сумма противоположных равна нулю.</li></ol>');
|
||||
h+=makeCard('theory','Множества чисел: N ⊂ Z ⊂ Q','2.3',
|
||||
'<p><b>Натуральные</b> $\\mathbb{N}=\\{1;2;3;\\ldots\\}$ — для счёта. <b>Целые</b> $\\mathbb{Z}$ — натуральные, им противоположные и ноль. <b>Рациональные</b> $\\mathbb{Q}$ — все числа, представимые дробью $\\frac{m}{n}$ (включая десятичные и отрицательные).</p>'
|
||||
+svgWrap(240,180,'<ellipse cx="120" cy="95" rx="108" ry="78" fill="rgba(225,29,72,.08)" stroke="#e11d48" stroke-width="2"/><ellipse cx="120" cy="105" rx="78" ry="55" fill="rgba(124,58,237,.10)" stroke="#7c3aed" stroke-width="2"/><ellipse cx="120" cy="118" rx="46" ry="32" fill="rgba(79,70,229,.12)" stroke="#4f46e5" stroke-width="2"/><text x="120" y="32" text-anchor="middle" font-size="15" font-weight="800" fill="#e11d48">Q (рациональные)</text><text x="120" y="70" text-anchor="middle" font-size="14" font-weight="800" fill="#7c3aed">Z (целые)</text><text x="120" y="122" text-anchor="middle" font-size="13" font-weight="800" fill="#4f46e5">N: 1,2,3…</text>'));
|
||||
h+=makeCard('theory','А знаешь ли ты?','2.4',
|
||||
'<p>Слово «рациональный» происходит от латинского <i>ratio</i> — «отношение, дробь». Число называется рациональным, потому что его можно представить как отношение (дробь) двух целых чисел. Числа вроде $\\sqrt{2}$ или $\\pi$ этого сделать нельзя — они иррациональные.</p>');
|
||||
h+='<div class="wg" id="p2-iv1"><div class="wg-header"><span class="wg-badge">Интерактив 1</span><div class="wg-title">Найди модуль</div></div>'
|
||||
+'<div class="wg-help">Модуль — расстояние до нуля, всегда неотрицателен.</div>'
|
||||
+'<div class="score-display"><span>Вопрос <b id="p2-i">1</b> / 6</span><span>Очки: <b id="p2-s">0</b> / 6</span></div>'
|
||||
@@ -210,9 +230,19 @@ function buildP2(){
|
||||
/* ===================== § 3. СРАВНЕНИЕ РАЦИОНАЛЬНЫХ ===================== */
|
||||
function buildP3(){
|
||||
var box=document.getElementById('p3-body'); var h='';
|
||||
h+=makeCard('oral','Где это в жизни','3.0',
|
||||
'<p>Когда синоптики говорят «сегодня теплее, чем вчера», они сравнивают числа — в том числе отрицательные. −3°C теплее, чем −8°C, хотя оба со знаком минус. Такое же сравнение используют в финансах: долг −200 рублей лучше, чем долг −500 рублей.</p>');
|
||||
h+=makeCard('rule','Сравнение на координатной прямой','3.1',
|
||||
'<p>Из двух чисел <b>больше то, которое правее</b> на координатной прямой.</p>'
|
||||
+'<p>Любое положительное $>$ любого отрицательного; $0$ больше любого отрицательного. Из двух отрицательных больше то, у которого <b>меньше модуль</b> (ближе к нулю): $-2 > -5$.</p>');
|
||||
h+=makeCard('example','Разбор по шагам','3.2',
|
||||
'<p>Сравни числа $-3$ и $-7$.</p>'
|
||||
+'<ol><li>Оба числа отрицательные. Смотрим модули: $|-3|=3$, $|-7|=7$.</li>'
|
||||
+'<li>$3 < 7$, значит $-3$ ближе к нулю на прямой.</li>'
|
||||
+'<li>Ближе к нулю — значит правее — значит больше.</li>'
|
||||
+'<li>Ответ: $-3 > -7$. Это кажется странным, но проверь на прямой — $-3$ действительно правее $-7$.</li></ol>');
|
||||
h+=makeCard('theory','А знаешь ли ты?','3.3',
|
||||
'<p>В программировании и в физике часто используют понятие «знаковая переменная»: число может быть и положительным, и отрицательным. Датчики температуры, гироскопы в телефоне, альтиметры — все они работают с числами, которые надо уметь сравнивать со знаком.</p>');
|
||||
h+='<div class="wg" id="p3-iv1"><div class="wg-header"><span class="wg-badge">Интерактив 1</span><div class="wg-title">Сравни числа</div></div>'
|
||||
+'<div class="wg-help">Сравни два числа на координатной прямой.</div>'
|
||||
+'<div class="score-display"><span>Вопрос <b id="p3-i">1</b> / 6</span><span>Очки: <b id="p3-s">0</b> / 6</span></div>'
|
||||
@@ -259,10 +289,21 @@ function buildP3(){
|
||||
/* ===================== § 4. СЛОЖЕНИЕ РАЦИОНАЛЬНЫХ ===================== */
|
||||
function buildP4(){
|
||||
var box=document.getElementById('p4-body'); var h='';
|
||||
h+=makeCard('oral','Где это в жизни','4.0',
|
||||
'<p>Температура за окном −5°C. К вечеру потеплело на 3°C. Сколько стало? Это сложение рациональных: $-5 + 3 = -2$. Точно так же считают изменение уровня воды в реке, баланс на банковском счёте и набранные/потерянные очки в игре.</p>');
|
||||
h+=makeCard('rule','Правила сложения','4.1',
|
||||
'<p><b>Одинаковые знаки:</b> складываем модули, ставим общий знак: $-3+(-4)=-7$.</p>'
|
||||
+'<p><b>Разные знаки:</b> из большего модуля вычитаем меньший, ставим знак числа с бо́льшим модулем: $-7+4=-3$, $7+(-4)=3$.</p>'
|
||||
+'<p>Сумма противоположных равна нулю: $6+(-6)=0$.</p>');
|
||||
h+=makeCard('example','Разбор по шагам','4.2',
|
||||
'<p>Вычисли $-8 + 5$.</p>'
|
||||
+'<ol><li>Знаки <b>разные</b> ($-$ и $+$) — применяем второе правило.</li>'
|
||||
+'<li>Находим модули: $|-8|=8$, $|5|=5$.</li>'
|
||||
+'<li>Из большего модуля вычитаем меньший: $8 - 5 = 3$.</li>'
|
||||
+'<li>Знак берём от числа с бо́льшим модулем: это $-8$, значит знак «минус».</li>'
|
||||
+'<li>Ответ: $-8 + 5 = -3$.</li></ol>');
|
||||
h+=makeCard('theory','А знаешь ли ты?','4.3',
|
||||
'<p>Сложение на координатной прямой — это буквальное «движение». Положительное слагаемое — шаг вправо, отрицательное — шаг влево. Именно поэтому термометр, линейка и шкала лифта устроены как координатные прямые!</p>');
|
||||
h+='<div class="wg" id="p4-iv1"><div class="wg-header"><span class="wg-badge">Интерактив 1</span><div class="wg-title">Сложение на прямой</div></div>'
|
||||
+'<div class="wg-help">Двигай слагаемые — результат отмечается на координатной прямой.</div>'
|
||||
+'<div class="sliders"><label>$a$ = <b id="p4-av">-3</b><input type="range" id="p4-asl" min="-6" max="6" value="-3"></label><label>$b$ = <b id="p4-bv">5</b><input type="range" id="p4-bsl" min="-6" max="6" value="5"></label></div>'
|
||||
@@ -302,9 +343,20 @@ function buildP4(){
|
||||
/* ===================== § 5. ВЫЧИТАНИЕ РАЦИОНАЛЬНЫХ ===================== */
|
||||
function buildP5(){
|
||||
var box=document.getElementById('p5-body'); var h='';
|
||||
h+=makeCard('oral','Где это в жизни','5.0',
|
||||
'<p>Разность температур, изменение счёта в игре, разница высот — всё это вычитание, в том числе с отрицательными числами. «На сколько −3°C больше, чем −10°C?» — это $-3 - (-10) = 7$: на 7 градусов теплее.</p>');
|
||||
h+=makeCard('rule','Вычитание — это прибавление противоположного','5.1',
|
||||
'<p>Чтобы из числа вычесть другое, нужно к нему прибавить <b>противоположное</b>: $a - b = a + (-b)$.</p>'
|
||||
+'<p>$5 - 8 = 5 + (-8) = -3$; $-4 - 3 = -4 + (-3) = -7$; $2 - (-6) = 2 + 6 = 8$.</p>');
|
||||
h+=makeCard('example','Разбор по шагам','5.2',
|
||||
'<p>Вычисли $-4 - (-7)$.</p>'
|
||||
+'<ol><li>Заменяем вычитание сложением с противоположным: $-4 - (-7) = -4 + (+7)$.</li>'
|
||||
+'<li>Два минуса дают плюс: скобки раскрыты, получили $-4 + 7$.</li>'
|
||||
+'<li>Знаки разные. Модули: $4$ и $7$. Разность модулей: $7 - 4 = 3$.</li>'
|
||||
+'<li>Знак от числа с большим модулем: $7 > 4$, значит знак «плюс».</li>'
|
||||
+'<li>Ответ: $-4 - (-7) = 3$.</li></ol>');
|
||||
h+=makeCard('theory','А знаешь ли ты?','5.3',
|
||||
'<p>Правило «минус на минус даёт плюс» при вычитании вытекает из одного простого принципа: вычесть отрицательное — значит вернуть то, что было отнято. Если у тебя забрали долг в 7 рублей (то есть убрали $-7$), ты стал богаче на 7!</p>');
|
||||
h+='<div class="wg" id="p5-iv1"><div class="wg-header"><span class="wg-badge">Интерактив 1</span><div class="wg-title">Тренажёр вычитания</div></div>'
|
||||
+'<div class="wg-help">Замени вычитание сложением с противоположным и вычисли.</div>'
|
||||
+'<div class="score-display"><span>Пример <b id="p5-i">1</b> / 6</span><span>Очки: <b id="p5-s">0</b> / 6</span></div>'
|
||||
@@ -353,10 +405,21 @@ function buildP5(){
|
||||
/* ===================== § 6. ЗАКОНЫ СЛОЖЕНИЯ ===================== */
|
||||
function buildP6(){
|
||||
var box=document.getElementById('p6-body'); var h='';
|
||||
h+=makeCard('oral','Где это в жизни','6.0',
|
||||
'<p>Когда кассир суммирует покупки, он добавляет их в любом порядке — результат одинаков. Это переместительный закон. Бухгалтер, считая баланс, группирует доходы и расходы удобными блоками — это сочетательный. Оба закона экономят время каждый день.</p>');
|
||||
h+=makeCard('rule','Законы сложения','6.1',
|
||||
'<p><b>Переместительный:</b> $a+b=b+a$ (слагаемые можно менять местами).</p>'
|
||||
+'<p><b>Сочетательный:</b> $(a+b)+c=a+(b+c)$ (слагаемые можно группировать).</p>'
|
||||
+'<p>Их используют для удобства: сначала складывают противоположные или «круглые» числа: $-7+15+7 = (-7+7)+15 = 15$.</p>');
|
||||
h+=makeCard('example','Разбор по шагам','6.2',
|
||||
'<p>Вычисли удобным способом: $23 + (-18) + (-23)$.</p>'
|
||||
+'<ol><li>Замечаем: $23$ и $-23$ — противоположные числа.</li>'
|
||||
+'<li>По сочетательному закону группируем их: $(23 + (-23)) + (-18)$.</li>'
|
||||
+'<li>$23 + (-23) = 0$ (сумма противоположных).</li>'
|
||||
+'<li>$0 + (-18) = -18$.</li>'
|
||||
+'<li>Ответ: $-18$. Без группировки это было бы сложнее!</li></ol>');
|
||||
h+=makeCard('theory','А знаешь ли ты?','6.3',
|
||||
'<p>Переместительный закон кажется очевидным, но он выполняется не всегда! Например, при умножении матриц в высшей математике $A \cdot B \ne B \cdot A$ — это называется некоммутативностью. В обычной арифметике нам везёт: сложение и умножение чисел коммутативны.</p>');
|
||||
h+='<div class="wg" id="p6-iv1"><div class="wg-header"><span class="wg-badge">Интерактив 1</span><div class="wg-title">Вычисли удобным способом</div></div>'
|
||||
+'<div class="wg-help">Сгруппируй слагаемые, чтобы считать было легко.</div>'
|
||||
+'<div class="score-display"><span>Пример <b id="p6-i">1</b> / 5</span><span>Очки: <b id="p6-s">0</b> / 5</span></div>'
|
||||
@@ -404,10 +467,20 @@ function buildP6(){
|
||||
/* ===================== § 7. УМНОЖЕНИЕ РАЦИОНАЛЬНЫХ ===================== */
|
||||
function buildP7(){
|
||||
var box=document.getElementById('p7-body'); var h='';
|
||||
h+=makeCard('oral','Где это в жизни','7.0',
|
||||
'<p>Если температура падает на 3°C каждый час в течение 4 часов, то изменение составит $(-3) \cdot 4 = -12$°C. Умножение с отрицательными числами используют везде: в физике (скорость и направление), в экономике (убыток за несколько месяцев), в программировании (отражение на экране).</p>');
|
||||
h+=makeCard('rule','Правило знаков при умножении','7.1',
|
||||
'<p>Перемножают модули, а знак определяют по правилу:</p>'
|
||||
+'<table class="tbl" style="max-width:320px;margin:6px auto"><tr><th>$\\times$</th><th>$+$</th><th>$-$</th></tr><tr><th>$+$</th><td>$+$</td><td>$-$</td></tr><tr><th>$-$</th><td>$-$</td><td>$+$</td></tr></table>'
|
||||
+'<p>«Минус на минус даёт плюс». $-3\\cdot(-4)=12$, $-3\\cdot 4=-12$. Умножение на $0$ даёт $0$.</p>');
|
||||
h+=makeCard('example','Разбор по шагам','7.2',
|
||||
'<p>Вычисли $(-6) \\cdot (-5)$.</p>'
|
||||
+'<ol><li>Перемножаем модули: $|-6| = 6$, $|-5| = 5$, $6 \\cdot 5 = 30$.</li>'
|
||||
+'<li>Определяем знак: оба множителя <b>отрицательные</b> (знаки одинаковые).</li>'
|
||||
+'<li>Одинаковые знаки при умножении дают «плюс».</li>'
|
||||
+'<li>Ответ: $(-6) \\cdot (-5) = +30 = 30$.</li></ol>');
|
||||
h+=makeCard('theory','А знаешь ли ты?','7.3',
|
||||
'<p>Почему «минус на минус даёт плюс»? Вот интуитивное объяснение: «враг моего врага — мой друг». Если долг ($-$) это плохо, то убрать долг ($-$) — это хорошо ($+$). Формально это следует из дистрибутивности, но образно запомнить проще!</p>');
|
||||
h+='<div class="wg" id="p7-iv1"><div class="wg-header"><span class="wg-badge">Интерактив 1</span><div class="wg-title">Знак произведения</div></div>'
|
||||
+'<div class="wg-help">Выбери знаки множителей — узнай знак произведения.</div>'
|
||||
+'<div style="display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin-bottom:8px"><button class="btn" data-s="pp">$(+)\\cdot(+)$</button><button class="btn" data-s="pn">$(+)\\cdot(-)$</button><button class="btn" data-s="np">$(-)\\cdot(+)$</button><button class="btn" data-s="nn">$(-)\\cdot(-)$</button></div>'
|
||||
@@ -447,9 +520,20 @@ function buildP7(){
|
||||
/* ===================== § 8. ДЕЛЕНИЕ РАЦИОНАЛЬНЫХ ===================== */
|
||||
function buildP8(){
|
||||
var box=document.getElementById('p8-body'); var h='';
|
||||
h+=makeCard('oral','Где это в жизни','8.0',
|
||||
'<p>Если команда потеряла 12 очков за 4 тура поровну, то в каждом туре: $-12 \div 4 = -3$ очка. Деление с отрицательными числами встречается везде, где нужно равномерно распределить убыток, снижение температуры или расход топлива.</p>');
|
||||
h+=makeCard('rule','Правило знаков при делении','8.1',
|
||||
'<p>Делят модули, а знак — по тому же правилу, что и при умножении: одинаковые знаки дают $+$, разные — $-$.</p>'
|
||||
+'<p>$-12\\div(-3)=4$, $-12\\div 3=-4$, $12\\div(-4)=-3$. На ноль делить нельзя.</p>');
|
||||
h+=makeCard('example','Разбор по шагам','8.2',
|
||||
'<p>Вычисли $(-35) \\div 7$.</p>'
|
||||
+'<ol><li>Делим модули: $|-35| = 35$, $|7| = 7$, $35 \\div 7 = 5$.</li>'
|
||||
+'<li>Определяем знак: знаки делимого и делителя <b>разные</b> ($-$ и $+$).</li>'
|
||||
+'<li>Разные знаки при делении дают «минус».</li>'
|
||||
+'<li>Ответ: $(-35) \\div 7 = -5$.</li>'
|
||||
+'<li>Проверка: $(-5) \\cdot 7 = -35$ — верно!</li></ol>');
|
||||
h+=makeCard('theory','А знаешь ли ты?','8.3',
|
||||
'<p>Деление на ноль — единственная «запрещённая» операция в математике. Если бы оно было определено, возникли бы противоречия: например, можно было бы «доказать», что $1 = 2$. Именно поэтому в программах, где встречается деление, обязательно проверяют, не равен ли делитель нулю.</p>');
|
||||
h+='<div class="wg" id="p8-iv1"><div class="wg-header"><span class="wg-badge">Интерактив 1</span><div class="wg-title">Тренажёр деления</div></div>'
|
||||
+'<div class="wg-help">Раздели рациональные числа (деление нацело).</div>'
|
||||
+'<div class="score-display"><span>Пример <b id="p8-i">1</b> / 6</span><span>Очки: <b id="p8-s">0</b> / 6</span></div>'
|
||||
@@ -495,15 +579,32 @@ function buildP8(){
|
||||
/* ===================== § 9. ЗАДАЧИ НА ВСЕ ДЕЙСТВИЯ ===================== */
|
||||
function buildP9(){
|
||||
var box=document.getElementById('p9-body'); var h='';
|
||||
h+=makeCard('oral','Где это в жизни','9.0',
|
||||
'<p>В реальных задачах действия всегда смешаны: температуру сначала умножают (на несколько дней), потом прибавляют или вычитают. Финансовые расчёты, физические формулы, программные алгоритмы — всё требует правильного порядка действий со знаками.</p>');
|
||||
h+=makeCard('rule','Порядок действий со знаками','9.1',
|
||||
'<p>Сначала действия в <b>скобках</b>, затем <b>умножение и деление</b>, потом <b>сложение и вычитание</b>. Внимательно следи за знаками.</p>'
|
||||
+'<p>$-3 + 4\\cdot(-2) = -3 + (-8) = -11$.</p>');
|
||||
h+=makeCard('example','Разбор по шагам','9.2',
|
||||
'<p>Вычисли $(-5 + 2) \\cdot 3$.</p>'
|
||||
+'<ol><li>Сначала скобки: $-5 + 2 = -3$.</li>'
|
||||
+'<li>Теперь умножение: $(-3) \\cdot 3$.</li>'
|
||||
+'<li>Знаки разные ($-$ и $+$): результат отрицательный.</li>'
|
||||
+'<li>Модули: $3 \\cdot 3 = 9$.</li>'
|
||||
+'<li>Ответ: $(-5 + 2) \\cdot 3 = -9$.</li></ol>');
|
||||
h+=makeCard('theory','А знаешь ли ты?','9.3',
|
||||
'<p>Приоритет операций (скобки, потом умножение/деление, потом сложение/вычитание) — международное соглашение. В разных странах его запоминают по аббревиатурам: в Беларуси и России говорят просто «порядок действий», в англоязычных странах используют BODMAS или PEMDAS. Правило одно — запись разная.</p>');
|
||||
h+='<div class="wg" id="p9-iv1"><div class="wg-header"><span class="wg-badge">Интерактив 1</span><div class="wg-title">Вычисли выражение</div></div>'
|
||||
+'<div class="wg-help">Соблюдай порядок действий и правила знаков.</div>'
|
||||
+'<div class="score-display"><span>Пример <b id="p9-i">1</b> / 6</span><span>Очки: <b id="p9-s">0</b> / 6</span></div>'
|
||||
+'<div id="p9-q" class="qbox"></div>'
|
||||
+'<div style="display:flex;gap:10px;justify-content:center;align-items:center;flex-wrap:wrap"><input type="number" id="p9-a" class="tinp" style="width:90px;text-align:center"><button class="btn primary" id="p9-go">Проверить</button></div>'
|
||||
+'<div class="feedback" id="p9-fb"></div></div>';
|
||||
h+='<div class="wg" id="p9-iv2"><div class="wg-header"><span class="wg-badge">Интерактив 2</span><div class="wg-title">Что посчитать первым?</div></div>'
|
||||
+'<div class="wg-help">Выбери действие, которое надо выполнить ПЕРВЫМ по порядку.</div>'
|
||||
+'<div class="score-display"><span>Вопрос <b id="p9-oi">1</b> / 5</span><span>Очки: <b id="p9-os">0</b> / 5</span></div>'
|
||||
+'<div id="p9-oq" class="qbox"></div>'
|
||||
+'<div id="p9-oopts" style="display:flex;gap:10px;justify-content:center;flex-wrap:wrap"></div>'
|
||||
+'<div class="feedback" id="p9-ofb"></div></div>';
|
||||
h+=secNav('p8','app')+readBtn('p9');
|
||||
box.innerHTML=h; renderMath(box);
|
||||
|
||||
@@ -521,19 +622,57 @@ function buildP9(){
|
||||
document.getElementById('p9-go').addEventListener('click',go);
|
||||
document.getElementById('p9-a').addEventListener('keydown',function(e){ if(e.key==='Enter')go(); }); show();
|
||||
})();
|
||||
|
||||
(function(){
|
||||
var OQ=[
|
||||
{expr:'$3 + 4 \\cdot (-2)$', opts:['сложение $3+4$','умножение $4\\cdot(-2)$','вычитание $4-2$'], ans:1, expl:'Умножение выполняется до сложения.'},
|
||||
{expr:'$(-5 + 2) \\cdot 3$', opts:['умножение $5\\cdot3$','скобки $-5+2$','умножение $2\\cdot3$'], ans:1, expl:'Сначала — действие в скобках.'},
|
||||
{expr:'$10 - 3 \\cdot 4$', opts:['вычитание $10-3$','умножение $3\\cdot4$','сложение $3+4$'], ans:1, expl:'Умножение приоритетнее вычитания.'},
|
||||
{expr:'$(-8) \\div 2 - 1$', opts:['вычитание $2-1$','деление $(-8)\\div2$','сложение $8+2$'], ans:1, expl:'Деление выполняется до вычитания.'},
|
||||
{expr:'$6 + (-2) \\cdot 5$', opts:['сложение $6+(-2)$','умножение $(-2)\\cdot5$','деление $6\\div2$'], ans:1, expl:'Умножение раньше сложения.'}
|
||||
];
|
||||
var order=OQ.map(function(_,k){return k;}); for(var j=order.length-1;j>0;j--){var k=_ri(0,j),t=order[j];order[j]=order[k];order[k]=t;}
|
||||
var i=0,score=0,cur=null;
|
||||
function show(){ if(i>=5){ document.getElementById('p9-oq').innerHTML='<b>Готово!</b> '+score+' / 5'; document.getElementById('p9-oopts').innerHTML=''; if(score>=4){addXp(15,'p9-iv2');bumpProgress('p9',30);}else if(score>=2){addXp(8,'p9-iv2');bumpProgress('p9',16);} return; }
|
||||
cur=OQ[order[i]]; document.getElementById('p9-oi').textContent=i+1;
|
||||
document.getElementById('p9-oq').innerHTML='Что выполнить ПЕРВЫМ в выражении '+cur.expr+'?'; renderMath(document.getElementById('p9-oq'));
|
||||
document.getElementById('p9-oopts').innerHTML=cur.opts.map(function(o,idx){ return '<button class="btn primary" data-idx="'+idx+'">'+o+'</button>'; }).join('');
|
||||
document.querySelectorAll('#p9-oopts [data-idx]').forEach(function(b){ b.addEventListener('click',function(){ ansOQ(+b.getAttribute('data-idx')); }); }); renderMath(document.getElementById('p9-oopts'));
|
||||
document.getElementById('p9-ofb').style.display='none'; }
|
||||
function ansOQ(idx){ if(i>=5)return; var fb=document.getElementById('p9-ofb');
|
||||
if(idx===cur.ans){ score++; feedback(fb,true,'✓ Верно! '+cur.expl); } else feedback(fb,false,'✗ Нет. '+cur.expl);
|
||||
document.getElementById('p9-os').textContent=score; i++; setTimeout(show,1400); }
|
||||
show();
|
||||
})();
|
||||
}
|
||||
|
||||
/* ===================== § 11. МАТЕМАТИКА ВОКРУГ НАС ===================== */
|
||||
function buildApp(){
|
||||
var box=document.getElementById('app-body'); var h='';
|
||||
h+=makeCard('oral','Где это в жизни','11.0',
|
||||
'<p>Отрицательные числа — это не абстракция: они буквально повсюду. Зимой без них не обойтись (температура), в банке (баланс счёта), в навигации (высота и глубина), в спорте (разница очков), в лифте (подвальные этажи). Математика помогает описать реальный мир во всей его сложности.</p>');
|
||||
h+=makeCard('theory','Отрицательные числа вокруг нас','11.1',
|
||||
'<p>Температура ниже нуля, долги и доходы, высота над уровнем моря и глубина, координаты в играх и на карте — всюду нужны отрицательные числа.</p>');
|
||||
h+=makeCard('example','Разбор по шагам','11.2',
|
||||
'<p>Задача: утром было $-7$°C, днём потеплело на $12$°C. Какая температура стала?</p>'
|
||||
+'<ol><li>«Потеплело» — значит прибавляем: $-7 + 12$.</li>'
|
||||
+'<li>Знаки разные. Модули: $7$ и $12$. Разность: $12 - 7 = 5$.</li>'
|
||||
+'<li>Знак от числа с большим модулем: $12 > 7$, знак «плюс».</li>'
|
||||
+'<li>Ответ: $-7 + 12 = +5$, то есть $5$°C.</li></ol>');
|
||||
h+=makeCard('theory','А знаешь ли ты?','11.3',
|
||||
'<p>Самая низкая температура, когда-либо зафиксированная на Земле, — $-89{,}2$°C на станции «Восток» в Антарктиде (1983 год). Самая высокая — $+56{,}7$°C в Долине Смерти (США). Разница: $56{,}7 - (-89{,}2) = 145{,}9$°C. Вот зачем нужны отрицательные числа!</p>');
|
||||
h+='<div class="wg" id="app-iv1"><div class="wg-header"><span class="wg-badge">Интерактив 1</span><div class="wg-title">Задачи из жизни</div></div>'
|
||||
+'<div class="wg-help">Реши практическую задачу. Ответ — целое число (можно со знаком −).</div>'
|
||||
+'<div class="score-display"><span>Задача <b id="app-i">1</b> / 6</span><span>Очки: <b id="app-s">0</b> / 6</span></div>'
|
||||
+'<div id="app-q" class="qbox" style="font-size:1rem;text-align:left"></div>'
|
||||
+'<div style="display:flex;gap:10px;justify-content:center;align-items:center;flex-wrap:wrap"><input type="number" id="app-a" class="tinp" style="width:90px;text-align:center"><button class="btn primary" id="app-go">Проверить</button></div>'
|
||||
+'<div class="feedback" id="app-fb"></div></div>';
|
||||
h+='<div class="wg" id="app-iv2"><div class="wg-header"><span class="wg-badge">Интерактив 2</span><div class="wg-title">Что означает знак?</div></div>'
|
||||
+'<div class="wg-help">Определи, что описывает это число в реальной ситуации.</div>'
|
||||
+'<div class="score-display"><span>Вопрос <b id="app-si">1</b> / 5</span><span>Очки: <b id="app-ss">0</b> / 5</span></div>'
|
||||
+'<div id="app-sq" class="qbox" style="font-size:1rem;text-align:left"></div>'
|
||||
+'<div id="app-sopts" style="display:flex;gap:10px;justify-content:center;flex-wrap:wrap"></div>'
|
||||
+'<div class="feedback" id="app-sfb"></div></div>';
|
||||
h+=secNav('p9','final')+readBtn('app');
|
||||
box.innerHTML=h; renderMath(box);
|
||||
|
||||
@@ -559,6 +698,28 @@ function buildApp(){
|
||||
document.getElementById('app-go').addEventListener('click',go);
|
||||
document.getElementById('app-a').addEventListener('keydown',function(e){ if(e.key==='Enter')go(); }); show();
|
||||
})();
|
||||
|
||||
(function(){
|
||||
var SQ=[
|
||||
{q:'Термометр показывает $-15$. Что это означает?', opts:['15 градусов тепла','15 градусов мороза','15 метров глубины'], ans:1},
|
||||
{q:'На банковском счёте $-300$ рублей. Что это означает?', opts:['остаток 300 рублей','долг 300 рублей','доход 300 рублей'], ans:1},
|
||||
{q:'Высота дна озера $-8$ метров. Что это означает?', opts:['8 метров над уровнем воды','8 метров ниже уровня воды','8 метров над уровнем моря'], ans:1},
|
||||
{q:'В игре у игрока $-20$ очков. Что произошло?', opts:['игрок заработал 20 очков','игрок потерял 20 очков','игрок остановился на 20 очков'], ans:1},
|
||||
{q:'Лифт на этаже $-1$. Где он находится?', opts:['на первом этаже','на первом подземном этаже','между первым и вторым этажом'], ans:1}
|
||||
];
|
||||
var order=SQ.map(function(_,k){return k;}); for(var j=order.length-1;j>0;j--){var k=_ri(0,j),t=order[j];order[j]=order[k];order[k]=t;}
|
||||
var i=0,score=0,cur=null;
|
||||
function show(){ if(i>=5){ document.getElementById('app-sq').innerHTML='<b>Готово!</b> '+score+' / 5'; document.getElementById('app-sopts').innerHTML=''; if(score>=4){addXp(15,'app-iv2');bumpProgress('app',35);}else if(score>=2){addXp(8,'app-iv2');bumpProgress('app',18);} return; }
|
||||
cur=SQ[order[i]]; document.getElementById('app-si').textContent=i+1;
|
||||
document.getElementById('app-sq').innerHTML=cur.q; renderMath(document.getElementById('app-sq'));
|
||||
document.getElementById('app-sopts').innerHTML=cur.opts.map(function(o,idx){ return '<button class="btn primary" data-idx="'+idx+'">'+o+'</button>'; }).join('');
|
||||
document.querySelectorAll('#app-iv2 [data-idx]').forEach(function(b){ b.addEventListener('click',function(){ ansS(+b.getAttribute('data-idx')); }); });
|
||||
document.getElementById('app-sfb').style.display='none'; }
|
||||
function ansS(idx){ if(i>=5)return; var fb=document.getElementById('app-sfb');
|
||||
if(idx===cur.ans){ score++; feedback(fb,true,'✓ Верно!'); } else feedback(fb,false,'✗ Нет. Правильный ответ: «'+cur.opts[cur.ans]+'».');
|
||||
document.getElementById('app-ss').textContent=score; i++; setTimeout(show,1300); }
|
||||
show();
|
||||
})();
|
||||
}
|
||||
|
||||
/* ===================== ФИНАЛ ГЛАВЫ — БОССЫ ===================== */
|
||||
|
||||
Reference in New Issue
Block a user