<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Образовательные материалы</title>
	<atom:link href="http://kshu.su/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://kshu.su</link>
	<description>Ещё один сайт на WordPress</description>
	<lastBuildDate>Thu, 06 Feb 2025 15:28:59 +0000</lastBuildDate>
	<language>ru-RU</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.0.38</generator>
	<item>
		<title>Относительность движения</title>
		<link>http://kshu.su/?p=263</link>
		<comments>http://kshu.su/?p=263#comments</comments>
		<pubDate>Wed, 15 Jun 2022 13:43:19 +0000</pubDate>
		<dc:creator><![CDATA[Kirill Schurakhtenkov]]></dc:creator>
				<category><![CDATA[Физика]]></category>

		<guid isPermaLink="false">http://kshu.su/?p=263</guid>
		<description><![CDATA[Урок 1. Теория Вспомним, что механическое движение – это изменение положения тела относительно других тел с течением времени. Относительное положение Если мы свяжем с любым телом свою систему координат, то любое тело можно считать за ТО, значит одно и то же тело может занимать различное положение относительно других тел. Например, положение ручки на столе различное [&#8230;]]]></description>
				<content:encoded><![CDATA[<p class="Content2">
<p>	<span id="more-263"></span></p>
<div class="Header2"><strong>Урок 1. Теория</strong></div>
<p class="Content2">Вспомним, что <i>механическое движение</i> – это изменение положения тела относительно других тел с течением времени.</p>
<div class="Header3"><strong>Относительное положение</strong></div>
<p class="Content2">Если мы свяжем с любым телом свою систему координат, то любое тело можно считать за ТО, значит одно и то же тело может занимать различное положение относительно других тел. Например, положение ручки на столе различное относительно стола и двери.</p>
<div class="Header3"><strong>Относительное движение и скорость</strong></div>
<p class="Content2">Но относительно не только положение, но и движение. Например, пассажир в стоящем поезде полагает, что он движется если будет смотреть в окно на движущийся поезд. А на самом деле он движется относительно поезда, но не относительно земли.</p>
<p class="Content2">Поскольку, скорость – это характеристика движения, то и она также относительна. А что нам даёт относительное движение и относительная скорость?</p>
<p class="Content2">Пусть есть неподвижная СО, например земля, пусть есть другая подвижная СО, которая движется относительно неподвижной и нам известно её движение (мы знаем её скорость и направление). Мы можем, находясь в неподвижной СО, определить движение тела относительно движущейся СО.</p>
<p class="Content2">Или наоборот: мы знаем движение подвижной СО, знаем движение тела относительно подвижной СО, тогда мы можем найти движение тела относительно неподвижной СО, т.е. относительно земли.</p>
<div class="Header3"><strong>Задача</strong></div>
<p class="Content2">Рассмотрим движение тела относительно двух разных СО, движущихся относительно друг друга: одна СО неподвижна, другая движется равномерно и прямолинейно.</p>
<p class="Content2">Река, два берега, известно течение реки, плот плывёт вдоль течения, к плоту причалена лодка. На берегу и на плоту есть наблюдатели, оба наблюдают за лодкой. Лодка отчаливает от плота и движется к противоположному берегу равномерно и прямолинейно:</p>
<div id="block10x10center"><img src="../wp-content/uploads/physics/08-01.png"/></div>
<p class="cntTah9Grey">На интерактиве даны плот, который привязан к пирсу(зелёный прямоугольник), а к плоту причалена лодка. После нажатия на <b>Move</b> плот отвязывается от пирса, а лодка отчаливает от плота. Движение на интерактиве можно рассмотреть относительно трёх различных СО.</p>
<p>	<!--html5&#038;css&#038;js--></p>
<div id="total">
<div id="canvas"><canvas id="cv" width=580 height=420>This browser doesn&#8217;t support HTML 5 canvas!</canvas></div>
<div id="panel">
<div style="top:15px;"><input type="radio" id="rbAbs" name="bg" value=""><label for="rbAbs" id="lbA">Abs</label></div>
<div style="top:40px;"><input type="radio" id="rbPer" name="bg" value=""><label for="rbPer" id="lbP">Per</label></div>
<div style="top:65px;"><input type="radio" id="rbOtn" name="bg" value=""><label for="rbOtn" id="lbO">Otn</label></div>
<div style="top:15px; left:60px;"><button id="bStartStop" style="background-color: #00dd00;"></button></div>
<div style="top:55px; left:60px;"><button id="bReset" style="background-color: #0080f0;">Reset</button></div>
</p></div>
</p></div>
<p class="Content2">Нарисуем векторы перемещений лодки в двух СО: относительно берега и относительно плота:</p>
<div id="block10x10center"><img src="../wp-content/uploads/physics/08-02.png"/></div>
<ol class="align_justify">
<li>Поскольку берег неподвижный, то первый вектор назовём <i>абсолютным перемещением</i>: <span class="arrowTimes11">S</span><sub>абс</sub>.</li>
<li>Поскольку плот движется, то второй вектор назовём <i>относительным перемещением</i>: <span class="arrowTimes11">S</span><sub>отн</sub>.</li>
<li>Река перенесла плот, а вместе с ней и лодку. Получим <i>переносный вектор</i>: <span class="arrowTimes11">S</span><sub>пер</sub>.</li>
</ol>
<p class="Content2">Получили знакомую, по векторной сумме, тройку векторов:</p>
<p class="Content2"><span class="arrowTimes11">S</span><sub>абс</sub> = <span class="arrowTimes11">S</span><sub>отн</sub> + <span class="arrowTimes11">S</span><sub>пер</sub></p>
<p class="Content2">Поскольку в механике очень важно описывать движение, то нужно знать векторы скорости. Их легко получить, потому что эти перемещения совершены за одинаковый промежуток времени <i>t</i>, тогда разделим каждое перемещение на эти промежутки, получим три вектора скорости:</p>
<p class="Content2"><span class="arrowTimes11">S</span><sub>абс</sub>/<i>t</i> = <span class="arrowTimes11">S</span><sub>отн</sub>/<i>t</i> + <span class="arrowTimes11">S</span><sub>пер</sub>/<i>t</i></p>
<p class="Content2">или:</p>
<p class="Content2"><span class="arrowSymbol11">u</span><sub>абс</sub> = <span class="arrowSymbol11">u</span><sub>отн</sub> + <span class="arrowSymbol11">u</span><sub>пер</sub></p>
<p class="Content2">Это закон сложения скоростей. Он звучит так:</p>
<p class="cntTah11Blue">Скорость тела относительно неподвижной СО равна векторной сумме скорости тела относительно движущейся СО и скорости движущейся СО относительно неподвижной.</p>
<p class="cntTah9Grey">Закон сложения скоростей написан в векторной форме, это значит, что его можно использовать для самых разных случаев. Рассмотрим два простых, которые мы часто видим в жизни.</p>
<div class="Header3"><strong>Задача</strong></div>
<p class="Content2">Скорый поезд обгоняет электропоезд. Мы едем в электропоезде. Скорость электропоезда 60 км/ч, а – скорого 90 км/ч. Найдите скорость скорого поезда относительно электропоезда.</p>
<div id="block30x30center"><img src="../wp-content/uploads/physics/08-03.png" /></div>
<p class="Content2">Дано: <span class="Content2Symbol">u</span><sub>э</sub> = 60 км/ч, <span class="Content2Symbol">u</span><sub>с</sub> = 90 км/ч. Найти: <span class="arrowSymbol11">u</span><sub>отн</sub></p>
<p class="cntTah9Grey">!!! Нужно уметь определять как связаны скорости <span class="Content2Symbol">u</span><sub>э</sub> и <span class="Content2Symbol">u</span><sub>с</sub> к величинам закона сложения скоростей !!!</p>
<p class="cntTah9Grey">Поведём аналогию движения лодки и плота с движениями поездов: мы едем в электропоезде, а относительно нас едет скорый, тогда электропоезд сравниваем с плотом, а скорый поезд с лодкой.</p>
<p class="Content2">Движение электропоезда обозначим как вектор переносной скорости: <span class="arrowSymbol11">u</span><sub>э</sub> = <span class="arrowSymbol11">u</span><sub>пер</sub> (это скорость той СО, в которой находимся мы). А движение скорого – как вектор абсолютной скорости: <span class="arrowSymbol11">u</span><sub>с</sub> = <span class="arrowSymbol11">u</span><sub>абс</sub> (её увидел бы наблюдатель на дороге).</p>
<p class="cntTah9Grey"><span class="arrowSymbol9">u</span><sub>отн</sub> – это скорость, которую видит пассажир электропоезда, когда смотрит на скорый. Или скорость, которую видит пассажир скорого поезда, когда смотрит на электропоезд.</p>
<p class="cntTah9Grey"><span class="arrowSymbol9">u</span><sub>пер</sub>=<span class="arrowSymbol9">u</span><sub>э</sub> – это скорость, которую видит наблюдатель на земле, когда смотрит на электропоезд. Или скорость, которую видит пассажир электропоезда, когда смотрит на стоящего наблюдателя.</p>
<p class="cntTah9Grey"><span class="arrowSymbol9">u</span><sub>абс</sub>=<span class="arrowSymbol9">u</span><sub>с</sub> – это скорость, которую видит наблюдатель на земле, когда смотрит на скорый поезд. Или скорость, которую видит пассажир скорого поезда, когда смотрит на стоящего наблюдателя.</p>
<p class="Content2">Подставим в закон сложения скоростей наши векторы:</p>
<p class="Content2"><span class="arrowSymbol11">u</span><sub>с</sub> = <span class="arrowSymbol11">u</span><sub>отн</sub> + <span class="arrowSymbol11">u</span><sub>э</sub></p>
<p class="Content2">Мы ищем скорость скорого поезда относительно электропоезда – это <span class="arrowSymbol11">u</span><sub>отн</sub></p>
<p class="Content2">Тогда: <span class="arrowSymbol11">u</span><sub>отн</sub> = <span class="arrowSymbol11">u</span><sub>с</sub> – <span class="arrowSymbol11">u</span><sub>э</sub></p>
<p class="cntTah9Grey">Т.к. это векторы, то полученная формула справедлива как для попутного, так и для встречного движения. Докажем это:</p>
<p class="Content2">Рассмотрим два случая: попутное и встречное движение.</p>
<p class="Content2"><i>а</i>) Попутное движение. Уберём векторы, для этого нарисуем ось и спроецируем векторы:</p>
<div id="block30x30center"><img src="../wp-content/uploads/physics/08-04.png" /></div>
<p class="Content2"><span class="Content2Symbol">u</span><sub>отн x</sub> = <span class="Content2Symbol">u</span><sub>с x</sub> – <span class="Content2Symbol">u</span><sub>э x</sub></p>
<p class="Content2">Т.к. направления скоростей совпадают с направлением ОХ, то их проекции равны модулям скорости:</p>
<p class="Content2"><span class="Content2Symbol">u</span><sub>отн x</sub> = <span class="Content2Symbol">u</span><sub>с</sub> – <span class="Content2Symbol">u</span><sub>э</sub> = 90 км/ч – 60 км/ч = 30 км/ч</p>
<p class="cntTah9Grey">Итак, пассажир электропоезда видит две вещи: 1 скорость скорого поезда 30 км/ч, 2 эта скорость вдоль оси <i>x</i>.</p>
<p class="cntTah9Grey">Последняя формула ничего не говорит о том, где находится скорый – за или перед электропоездом, потому что она говорит только об относительной скорости, которая везде одинакова!</p>
<p class="cntTah9Grey">Формула с проекциями не зависит от того куда едет электропоезд и/или скорый поезд, потому что она совпадает с векторной формулой. Значит её можно учесть в случае <i>б</i>)</p>
<p class="Content2"><i>б</i>) Встречное движение. Электропоезд движется туда же, а скорый – навстречу ему. Скорости те же. Спроецируем их на ось <i>х</i>:</p>
<div id="block30x30center"><img src="../wp-content/uploads/physics/08-05.png" /></div>
<p class="Content2"><span class="Content2Symbol">u</span><sub>отн x</sub> = <span class="Content2Symbol">u</span><sub>с x</sub> – <span class="Content2Symbol">u</span><sub>э x</sub></p>
<p class="Content2"><span class="Content2Symbol">u</span><sub>отн x</sub> = –<span class="Content2Symbol">u</span><sub>с</sub> – <span class="Content2Symbol">u</span><sub>э</sub> = 90 км/ч – 60 км/ч = 30 км/ч</p>
<p class="cntTah9Grey">Минус говорит о движении против оси <i>x</i>.</p>
<p class="Content2">Мы доказали, что векторная формула годиться для двух случаев, т.е. она не зависит от направления.</p>
<div class="Header2"><strong>Урок 2. Решение задач</strong></div>
<div class="Header3"><strong>Задача 1</strong></div>
<p class="Content2">За 4 ч моторная лодка проходит против течения расстояние 48 км. За какое время она пройдёт обратный путь, если скорость течения равна 3 км/ч?</p>
<div class="row">
<div class="column">
<p class="Content2"><i>t</i><sub>пр</sub>, <i>&#8467;</i>, <span class="Content2Symbol">u</span><sub>т</sub></p>
<p  class="Content2"><i>t</i><sub>по</sub>-?</p>
</div>
<div class="column">
<img src="../wp-content/uploads/physics/08-06.png" />
</div>
<div class="column">
<p class="Content2"><span class="arrowSymbol11">u</span><sub>абс</sub> = <span class="arrowSymbol11">u</span><sub>отн</sub> + <span class="arrowSymbol11">u</span><sub>пер</sub></p>
</div>
</div>
<p class="cntTah9Grey"><span class="Content2Symbol">u</span><sub>отн</sub> – скорость лодки относительно воды, <span class="Content2Symbol">u</span><sub>пер</sub> – скорость реки.</p>
<p class="cntTah9Grey">На рисунке длины векторов скорости получаются путём сложения вектора скорости реки и векторов скоростей лодок относительно воды.</p>
<p class="cntTah9Grey">Если направление течения совпадает с направлением лодки, то обе скорости складываются, и полученная сумма связывается с <i>&#8467;</i> и <i>t</i><sub>по</sub>:</p>
<p class="Content2"><span class="Content2Symbol">u</span><sub>л</sub> + <span class="Content2Symbol">u</span><sub>т</sub> = <i>&#8467;</i> / <i>t</i><sub>по</sub> (1)</p>
<p class="cntTah9Grey">Если лодка движется против течения, то <span class="Content4Symbol">u</span><sub>отн</sub> и <span class="Content4Symbol">u</span><sub>пер</sub> направлены противоположно . Например, если лодка проходит на 10 м влево относительно воды, но вода течёт вправо на 2 м, получается, что лодка прошла 10-2 м, т.е. скорости вычитаются, и полученная разность связывается с <i>&#8467;</i> и <i>t</i><sub>пр</sub>:</p>
<p class="Content2"><span class="Content2Symbol">u</span><sub>л</sub> &#8212; <span class="Content2Symbol">u</span><sub>т</sub> = <i>&#8467;</i> / <i>t</i><sub>пр</sub> (2)</p>
<p class="cntTah9Grey">Законов сложения расстояний или времён нет, но есть закон сложения скоростей, поэтому можно связать скорости с теми величинами, которые есть. Вычтем одно равенство из другого – (1) &#8212; (2):</p>
<p class="Content2">(<span class="Content2Symbol">u</span><sub>л</sub> + <span class="Content2Symbol">u</span><sub>т</sub>) &#8212; (<span class="Content2Symbol">u</span><sub>л</sub> &#8212; <span class="Content2Symbol">u</span><sub>т</sub>) = <i>&#8467;</i> / <i>t</i><sub>по</sub> &#8212; <i>&#8467;</i> / <i>t</i><sub>пр</sub></p>
<p class="Content2"><span class="Content2Symbol">u</span><sub>л</sub> + <span class="Content2Symbol">u</span><sub>т</sub> &#8212; <span class="Content2Symbol">u</span><sub>л</sub> + <span class="Content2Symbol">u</span><sub>т</sub> = <i>&#8467;</i> / <i>t</i><sub>по</sub> &#8212; <i>&#8467;</i> / <i>t</i><sub>пр</sub></p>
<p class="Content2">2<span class="Content2Symbol">u</span><sub>т</sub> = <i>&#8467;</i> / <i>t</i><sub>по</sub> &#8212; <i>&#8467;</i> / <i>t</i><sub>пр</sub></p>
<p class="cntTah9Grey">мы связали друг с другом все величины, которые у нас есть</p>
<p class="Content2">2<span class="Content2Symbol">u</span><sub>т</sub> + <i>&#8467;</i> / <i>t</i><sub>пр</sub> = <i>&#8467;</i> / <i>t</i><sub>по</sub></p>
<p class="Content2">(2<span class="Content2Symbol">u</span><sub>т</sub>&#183;<i>t</i><sub>пр</sub> + <i>&#8467;</i>) / <i>t</i><sub>пр</sub> = <i>&#8467;</i> / <i>t</i><sub>по</sub></p>
<p class="Content2"><i>t</i><sub>по</sub> = <i>t</i><sub>пр</sub>&#183;<i>&#8467;</i>/(2<span class="Content2Symbol">u</span><sub>т</sub>&#183;<i>t</i><sub>пр</sub> + <i>&#8467;</i>)</p>
<p class="cntTah9Grey">по формуле видно, что дробь безразмерная величина</p>
<div class="Header3"><strong>Задача 2</strong></div>
<p class="Content2">Моторная лодка за 1,5 ч доставляет почту из города в посёлок, расположенный ниже по течению реки. Сколько времени займёт обратный путь, если скорость движения лодки относительно воды в 4 раза больше скорости течения реки?</p>
<div class="row">
<div class="column">
<p class="Content2"><i>t</i><sub>по</sub>, <i>n</i>,</p>
<p  class="Content2"><span class="Content2Symbol">u</span><sub>л</sub>=<i>n</i><span class="Content2Symbol">u</span><sub>т</sub> </p>
</div>
<div class="column">
<img src="../wp-content/uploads/physics/08-06.png" />
</div>
<div class="column">
<p class="Content2"><span class="arrowSymbol11">u</span><sub>абс</sub> = <span class="arrowSymbol11">u</span><sub>отн</sub> + <span class="arrowSymbol11">u</span><sub>пер</sub></p>
</div>
</div>
<p class="cntTah9Grey">Добавим на рисунок <i>&#8467;</i> и <span class="Content2Symbol">u</span><sub>т</sub>, их нет в условии, но в природе они есть, и они связаны с законом сложения скоростей.</p>
<p class="Content2">Рассмотрим две абсолютные скорости, которые видны с берега – по течению и против. По течению – это сумма скорости лодки относительно воды (<span class="Content2Symbol">u</span><sub>отн</sub>) и скорости течения (<span class="Content2Symbol">u</span><sub>пер</sub> она же <span class="Content2Symbol">u</span><sub>т</sub>)</p>
<p class="cntTah9Grey">Свяжем эти абсолютные скорости с теми величинами, которые есть в задаче – <i>t</i><sub>по</sub>:</p>
<p class="Content2">По течению: <span class="Content2Symbol">u</span><sub>л</sub> + <span class="Content2Symbol">u</span><sub>т</sub> = <i>&#8467;</i>/<i>t</i><sub>по</sub></p>
<p class="Content2">Против течения: <span class="Content2Symbol">u</span><sub>л</sub> &#8212; <span class="Content2Symbol">u</span><sub>т</sub> = <i>&#8467;</i>/<i>t</i><sub>пр</sub></p>
<p class="cntTah9Grey">Свяжем скорости лодки и течения:</p>
<p class="Content2"><i>n</i><span class="Content2Symbol">u</span><sub>т</sub> + <span class="Content2Symbol">u</span><sub>т</sub> = <i>&#8467;</i>/<i>t</i><sub>по</sub></p>
<p class="Content2"><i>n</i><span class="Content2Symbol">u</span><sub>т</sub> &#8212; <span class="Content2Symbol">u</span><sub>т</sub> = <i>&#8467;</i>/<i>t</i><sub>пр</sub></p>
<p class="Content2">вынесем за скобки <span class="Content2Symbol">u</span><sub>т</sub>:</p>
<p class="Content2"><span class="Content2Symbol">u</span><sub>т</sub>(<i>n</i>+1) = <i>&#8467;</i>/<i>t</i><sub>по</sub>(1)</p>
<p class="Content2"><span class="Content2Symbol">u</span><sub>т</sub>(<i>n</i>-1) = <i>&#8467;</i>/<i>t</i><sub>пр</sub>(2)</p>
<p class="Content2">(1)/(2):</p>
<p class="Content2">[<span class="Content2Symbol">u</span><sub>т</sub>(<i>n</i>+1)/<span class="Content2Symbol">u</span><sub>т</sub>(<i>n</i>-1)] = (<i>&#8467;</i>/<i>t</i><sub>по</sub>)&#183;(<i>t</i><sub>пр</sub>/<i>&#8467;</i>)</p>
<p class="Content2"><i>t</i><sub>пр</sub> = <i>t</i><sub>по</sub> &#183; (<i>n</i>+1)/(n-1) = 1,5ч&#183;5/3 = 0,5&#183;5 = 2,5ч</p>
<div class="Header3"><strong>Эксперимент</strong></div>
<p class="Content2">Для дроби из предыдущей задачи:</p>
<p class="Content2"><i>t</i><sub>пр</sub> = <i>t</i><sub>по</sub>&#183;(<i>n</i>+1)/(<i>n</i>-1)</p>
<p class="Content2">изучите случаи когда:</p>
<p class="Content2">а) лодка быстрая,</p>
<p class="Content2">б) лодка медленная,</p>
<p class="Content2">в) скорость лодки равна скорости течения.</p>
<p class="Content2">Решение:</p>
<p class="Content2">а) Лодка быстрая – это значит, что скорость лодки во много раз больше(>>) скорости течения:</p>
<p class="Content2"><span class="Content2Symbol">u</span><sub>л</sub> >> <span class="Content2Symbol">u</span><sub>т</sub>, значит <i>n</i> >> 1</p>
<p class="Content2">Говорят, что <i>n</i> такая огромная, что её единица особо не увеличивает и особо не уменьшает. Следовательно, единицей можно пренебречь, поэтому дробь стремится к единице, тогда:</p>
<p class="Content2"><i>t</i><sub>пр</sub> &#8776; <i>t</i><sub>по</sub></p>
<p class="Content2">Такая лодка будет плыть одинаковое расстояние против и по течению за почти одинаковое время.</p>
<p class="Content2">б) Лодка медленная – это значит, что скорость лодки едва больше скорости течения, а <i>n</i> едва больше 1:</p>
<p class="Content2"><i>n</i> &#8776; 1, <i>n</i> > 1</p>
<p class="Content2">перепишем дробь для <i>n</i>:</p>
<p class="Content2"><i>t</i><sub>пр</sub> = <i>t</i><sub>по</sub>&#183;2 / малое число</p>
<p class="Content2">Поскольку в знаменателе малое число, то <i>t</i><sub>пр</sub> – большое число, значит:</p>
<p class="Content2"><i>t</i><sub>пр</sub> >> <i>t</i><sub>по</sub></p>
<p class="Content2">в) если скорости лодки и течения равны, это значит, что <i>n</i> = 1 и знаменатель равен нулю. В таких случаях дробь равна бесконечности, тогда время возврата <i>t</i><sub>пр</sub> увеличивается до бесконечности, и лодка будет стоять на месте, потому что течение будет её возвращать на столько, на сколько она проплыла.</p>
<p class="Content2">
<div class="Header3"><strong>Задача 3</strong></div>
<p class="Content2">Стоящий на эскалаторе человек поднимается за 2 мин, а бегущий по эскалатору — за 40 с. За какое время этот человек поднимется по неподвижному эскалатору?</p>
<div class="row">
<div class="column">
<p class="Content2"><i>t</i><sub>э</sub>, <i>t</i><sub>чэ</sub>, </p>
<p  class="Content2"><i>t</i><sub>ч</sub>-?</p>
</div>
<div class="column">
<img src="../wp-content/uploads/physics/08-07.png" />
</div>
<div class="column">
<p class="Content2"><span class="arrowSymbol11">u</span><sub>абс</sub> = <span class="arrowSymbol11">u</span><sub>отн</sub> + <span class="arrowSymbol11">u</span><sub>пер</sub></p>
</div>
</div>
<p class="cntTah9Grey">Добавим на рисунок величину <i>&#8467;</i>, её нет в задаче, но в природе она есть, и она связана с законом сложения скоростей.</p>
<p class="Content2"><span class="Content2Symbol">u</span><sub>э</sub> = <i>&#8467;</i> / <i>t</i><sub>э</sub> (скорость эскалатора или скорость стоящего человека, её видит наблюдатель за пультом эскалатора, когда смотрит на ступеньки или на неподвижного человека, ещё это <span class="Content2Symbol">u</span><sub>пер</sub>)</p>
<p class="Content2"><span class="Content2Symbol">u</span><sub>ч</sub> = <i>&#8467;</i> / <i>t</i><sub>ч</sub> (скорость человека по неподвижному эскалатору или скорость, которую видит стоящий на эскалаторе человек, когда смотрит на бегущего по эскалатору, ещё это <span class="Content2Symbol">u</span><sub>отн</sub>)</p>
<p class="Content2"><span class="Content2Symbol">u</span><sub>л</sub> + <span class="Content2Symbol">u</span><sub>э</sub> =  <i>&#8467;</i> / <i>t</i><sub>чэ</sub> (скорость, которую видит наблюдатель за пультом эскалатора, когда смотрит на бегущего по эскалатору, ещё это <span class="Content2Symbol">u</span><sub>абс</sub>)</p>
<p class="cntTah9Grey">(Для простоты, величины в скобках: <span class="Content2Symbol">u</span><sub>абс</sub>, <span class="Content2Symbol">u</span><sub>отн</sub> и <span class="Content2Symbol">u</span><sub>пер</sub> указаны без векторов, на  самом деле, каждая величина может быть знаковой и беззнаковой, всё зависит от того где бежит человек: относительно стоящего за ним, или перед ним, поэтому в строгом смысле, величины эти – векторы)</p>
<p class="Content2">В третье уравнение подставим правые части первого и второго</p>
<p class="Content2"><i>&#8467;</i> / <i>t</i><sub>ч</sub> + <i>&#8467;</i> / <i>t</i><sub>э</sub> = <i>&#8467;</i> / <i>t</i><sub>чэ</sub></p>
<p class="Content2">&#183; 1 / <i>&#8467;</i></p>
<p class="Content2">1 / <i>t</i><sub>ч</sub> + 1 / <i>t</i><sub>э</sub> = 1 / <i>t</i><sub>чэ</sub> </i></p>
<p class="Content2">1 / <i>t</i><sub>ч</sub> = 1 / <i>t</i><sub>чэ</sub> &#8212; 1 / <i>t</i><sub>э</sub> </i></p>
<p class="Content2">1 / <i>t</i><sub>ч</sub> = (<i>t</i><sub>э</sub> &#8212; <i>t</i><sub>чэ</sub>) / <i>t</i><sub>э</sub></i>&#183;<i>t</i><sub>чэ</sub></p>
<p class="Content2"><i>t</i><sub>ч</sub> = <i>t</i><sub>чэ</sub></i>&#183;<i>t</i><sub>э</sub> / (<i>t</i><sub>э</sub> &#8212; <i>t</i><sub>чэ</sub>)</p>
<div class="Header2"><strong>Урок 3. Решение задач. (одномерный случай)</strong></div>
<div class="Header3"><strong>Задача 4</strong></div>
<p class="Content2">Эскалатор метро спускает идущего по нему вниз человека за 1 мин. Если человек будет идти вдвое быстрее, то он спустится за 45 с. Сколько времени спускается человек, стоящий на эскалаторе?</p>
<div class="row">
<div class="column">
<p class="Content2"><i>t</i><sub>1</sub>, <i>t</i><sub>2</sub>, <i>n</i>,</p>
<p  class="Content2"><span class="Content2Symbol">u</span><sub>2</sub>=<i>n</i><span class="Content2Symbol">u</span><sub>1</sub> </p>
<p  class="Content2"><i>t</i><sub>0</sub>-?</p>
</div>
<div class="column">
<img src="../wp-content/uploads/physics/08-08.png" />
</div>
<div class="column">
<p class="Content2"><span class="arrowSymbol11">u</span><sub>абс</sub> = <span class="arrowSymbol11">u</span><sub>отн</sub> + <span class="arrowSymbol11">u</span><sub>пер</sub></p>
</div>
</div>
<p class="cntTah9Grey">Добавим на рисунок величину <i>&#8467;</i> и <span class="Content2Symbol">u</span><sub>э</sub>, их нет в условии, но в природе они есть, и они связаны с законом сложения скоростей.</p>
<p class="cntTah9Grey"><i>t</i><sub>0</sub> – время спуска человека, скорость которого = 0</p>
<p class="Content2">Свяжем величины, которые даны в условии задачи с величинами, которые есть на рисунке:</p>
<p class="Content2"><span class="Content2Symbol">u</span><sub>1</sub> + <span class="Content2Symbol">u</span><sub>э</sub> = <i>&#8467;</i>/<i>t</i><sub>1</sub> (скорость, которую видит наблюдатель за пультом эскалатора, когда смотрит на идущего по эскалатору)</p>
<p class="Content2"><span class="Content2Symbol">u</span><sub>2</sub> &#8212; <span class="Content2Symbol">u</span><sub>э</sub> = <i>&#8467;</i>/<i>t</i><sub>2</sub> (скорость, которую видит наблюдатель за пультом эскалатора, когда смотрит на вдвое быстрее идущего по эскалатору)</p>
<p class="Content2"><span class="Content2Symbol">u</span><sub>э</sub> = <i>&#8467;</i>/<i>t</i><sub>0</sub> (скорость эскалатора или скорость стоящего человека, её видит наблюдатель за пультом эскалатора, когда смотрит на ступеньки или на неподвижного человека)</p>
<p class="Content2">Перепишем первые два уравнения с учётом третьего и заменим <span class="Content2Symbol">u</span><sub>2</sub> на <i>n</i><span class="Content2Symbol">u</span><sub>1</sub>:</p>
<p class="Content2"><span class="Content2Symbol">u</span><sub>1</sub> + <i>&#8467;</i>/<i>t</i><sub>0</sub> = <i>&#8467;</i>/<i>t</i><sub>1</sub> &#8212; (1)</p>
<p class="Content2"><i>n</i><span class="Content2Symbol">u</span><sub>1</sub> + <i>&#8467;</i>/<i>t</i><sub>0</sub> = <i>&#8467;</i>/<i>t</i><sub>2</sub> &#8212; (2)</p>
<p class="Content2">умножим (1) на <i>n</i>:</p>
<p class="Content2"><i>n</i><span class="Content2Symbol">u</span><sub>1</sub> + <i>n</i><i>&#8467;</i>/<i>t</i><sub>0</sub> = <i>n</i><i>&#8467;</i>/<i>t</i><sub>1</sub></p>
<p class="Content2">вычтем (2) из последнего:</p>
<p class="Content2"><i>n</i><i>&#8467;</i>/<i>t</i><sub>0</sub> &#8212; <i>&#8467;</i>/<i>t</i><sub>0</sub> = <i>n</i><i>&#8467;</i>/<i>t</i><sub>1</sub> &#8212; <i>&#8467;</i>/<i>t</i><sub>2</sub></p>
<p class="Content2">разделим каждое слагаемое на <i>&#8467;</i>:</p>
<p class="Content2"><i>n</i>/<i>t</i><sub>0</sub> &#8212; 1/<i>t</i><sub>0</sub> = <i>n</i>/<i>t</i><sub>1</sub> &#8212; 1/<i>t</i><sub>2</sub></p>
<p class="Content2"> (<i>n</i> &#8212; 1)/<i>t</i><sub>0</sub> = (<i>n</i><i>t</i><sub>2</sub> &#8212; <i>t</i><sub>1</sub>)/<i>t</i><sub>1</sub><i>t</i><sub>2</sub></p>
<p class="Content2"><i>t</i><sub>0</sub> = (<i>n</i> &#8212; 1)<i>t</i><sub>1</sub><i>t</i><sub>2</sub> / (<i>n</i><i>t</i><sub>2</sub> &#8212; <i>t</i><sub>1</sub>)</p>
<p class="cntTah9Grey">Анализ: при <i>n</i> = 1, получим <i>t</i><sub>0</sub> = 0? Т.е. стоящий на эскалаторе человек спуститься мгновенно?</p>
<p class="cntTah9Grey">Нет, при <i>n</i> = 1, окажется, что <i>t</i><sub>2</sub> = <i>t</i><sub>1</sub>, а это значит, что получим дробь 0/0, но это мат.анализ 1 курс.</p>
<div class="Header3"><strong>Задача 5</strong></div>
<p class="Content2">Колонна войск во время похода движется со скоростью 5 км/ч, растянувшись по дороге на расстояние 400 м. Командир, находящийся в хвосте колонны, посылает велосипедиста с поручением к головному отряду. Велосипедист отправляется и едет со скоростью 25 км/ч и, на ходу выполнив поручение, сразу же возвращается обратно с той же скоростью. Через какое время после получения поручения он вернулся обратно?</p>
<p class="Content2">
<p class="Content2"><span class="Content2Symbol">u</span><sub>к</sub>, <i>&#8467;</i>, <span class="Content2Symbol">u</span><sub>в</sub></p>
<p class="Content2"><i>t</i> &#8212; ?</p>
<p class="Content2">СО – земля:</p>
<div id="block30x30center"><img src="../wp-content/uploads/physics/08-09.png" /></div>
<p class="Content2">Пока велосипедист едет, колонна продолжает движение, значит для передачи поручения он должен проехать расстояние больше чем <i>&#8467;</i>, обратно наоборот.</p>
<p class="Content2">СО – колона:</p>
<div id="block30x30center"><img src="../wp-content/uploads/physics/08-10.png" /></div>
<p class="Content2">Относительно колонны, велосипедист туда и обратно проедет одинаковое расстояние <i>l</i>,(это будет использоваться в следующей задаче, поэтому важно понять) но если вспомнить поезда, идущие попутно и встречно (мы тогда сидели в электропоезде), то легко найти скорость велосипедиста относительно колонны для обоих случаев:</p>
<p class="Content2"><span class="Content2Symbol">u</span><sub>к</sub> &#8212; <span class="Content2Symbol">u</span><sub>в</sub>  – скорость велосипедиста относительно колонны при движении вместе с колонной,</p>
<p class="Content2"><span class="Content2Symbol">u</span><sub>к</sub> + <span class="Content2Symbol">u</span><sub>в</sub>  – скорость велосипедиста относительно колонны при движении против колонны.</p>
<p class="Content2">Тогда, чтобы найти общее время, достаточно сложить время движения с одной скоростью, со временем движения с другой скоростью:</p>
<p class="Content2">t=<i>&#8467;</i>/(<span class="Content2Symbol">u</span><sub>в</sub>-<span class="Content2Symbol">u</span><sub>к</sub>) + <i>&#8467;</i>/(<span class="Content2Symbol">u</span><sub>в</sub>+<span class="Content2Symbol">u</span><sub>к</sub>)=</p>
<p class="Content2">(0,4 м&#183;60 мин/20 км) + (0,4 м&#183;60 мин/30 км) = 0,4&#183;3 мин + 0,4&#183;2 мин = 1,2 мин</p>
<div class="Header3"><strong>Задача 6</strong></div>
<p class="Content2">Скорость катера относительно воды 7 м/с, скорость течения реки 3 м/с. Когда катер двигался против течения, с него сбросили в воду мяч. Затем катер прошёл против течения 4,2 км, повернул обратно и догнал мяч. Сколько времени двигался катер от момента сбрасывания мяча до встречи с ним?</p>
<p class="Content2">
<p class="Content2"><span class="Content2Symbol">u</span><sub>к</sub>, <span class="Content2Symbol">u</span><sub>т</sub>, <i>S</i><sub>пр</sub></p>
<p class="Content2"><i>t</i> &#8212; ?</p>
<p class="Content2">СО – земля:</p>
<div id="block30x30center"><img src="../wp-content/uploads/physics/08-11.png" /></div>
<p class="cntTah9Grey">Предположим, что вода неподвижна, тогда если катер движется с <span class="Content2Symbol">u</span><sub>к</sub>, то нам не подойдёт <i>S</i><sub>пр</sub>, т.к. это расстояние пройдено против течения. Значит изучаем случай в СО – земля.</p>
<p class="Content2">Свяжем величину, которая есть в условии задачи с величинами, которые участвуют в законе сложения скоростей, найдём <i>t</i><sub>пр</sub>:</p>
<p class="Content2"><i>t</i><sub>пр</sub> = <i>S</i><sub>пр</sub> / (<span class="Content2Symbol">u</span><sub>к</sub>-<span class="Content2Symbol">u</span><sub>т</sub>)</p>
<p class="Content2">СО – вода:</p>
<div id="block30x30center"><img src="../wp-content/uploads/physics/08-12.png" /></div>
<p class="Content2">В СО связанной с водой или мячом, катер будет отплывать от мяча и приплывать к нему с одинаковой скоростью – <span class="Content2Symbol">u</span><sub>к</sub>, т.е. мяч никуда не переместился, значит:</p>
<p class="Content2"><i>t</i><sub>пр</sub> = <i>t</i><sub>по</sub></p>
<p class="Content2"><i>t</i> = <i>t</i><sub>пр</sub> + <i>t</i><sub>по</sub> = 2<i>t</i><sub>по</sub></p>
<p class="Content2"><i>t</i><sub>пр</sub> = 2<i>S</i><sub>пр</sub> / (<span class="Content2Symbol">u</span><sub>к</sub>-<span class="Content2Symbol">u</span><sub>т</sub>) = 8400м / 7 м/с &#8212; 3 м/с = 35 мин</p>
<p class="cntTah9Grey">Вывод. Можно менять СО решая одну и ту же задачу, в зависимости от того, какую ситуацию мы рассматриваем.</p>
<div class="Header2"><strong>Урок 4. Решение задач. (двумерный случай)</strong></div>
<div class="Header3"><strong>Задача 7</strong></div>
<p class="Content2">С угла <i>A</i> квадратного плота спрыгнул в воду и поплыл вокруг плота пес. Нарисуйте траекторию движения пса относительно берега, если он плывёт вдоль сторон плота, а его скорость относительно воды составляет 4/3 скорости течения реки.</p>
<div class="row">
<div class="column">
<p class="Content2"><span class="Content2Symbol">u</span><sub>с</sub> = 4/3<span class="Content2Symbol">u</span><sub>п</sub></p>
</div>
<div class="column">
<img src="../wp-content/uploads/physics/08-13.png"/>
</div>
</div>
<p class="cntTah9Grey">Если пёс, после прыжка, проплыл сторону плота, то сколько проплыл плот?</p>
<p class="Content2">Если пёс и плот плывут одновременно, то у них время <i>t</i> одинаковое. Вычислим, на сколько переместился плот, если пёс проплыл его сторону перпендикулярно реке:</p>
<p class="Content2"><i>t</i> = <i>S</i><sub>c</sub>/<span class="Content2Symbol">u</span><sub>c</sub></p>
<p class="Content2"><i>t</i> = <i>S</i><sub>п</sub>/<span class="Content2Symbol">u</span><sub>п</sub></p>
<p class="Content2"><i>S</i><sub>c</sub>/<span class="Content2Symbol">u</span><sub>c</sub> = <i>S</i><sub>п</sub>/<span class="Content2Symbol">u</span><sub>п</sub></p>
<p class="Content2"><i>S</i><sub>c</sub>&#183;<span class="Content2Symbol">u</span><sub>п</sub> = <i>S</i><sub>п</sub>&#183;<span class="Content2Symbol">u</span><sub>с</sub></p>
<p class="Content2"><i>S</i><sub>п</sub> = <i>S</i><sub>с</sub>&#183;<span class="Content2Symbol">u</span><sub>п</sub>/<span class="Content2Symbol">u</span><sub>с</sub> = 4 м&#183;3 м/с / 4 м/с = 3 м.</p>
<p class="Content2">После того как пёс проплыл 4 м от т. <i>А</i>, плот проплыл 3 м:</p>
<p><img src="../wp-content/uploads/physics/08-14.png"/></p>
<p class="Content2">Далее, пёс плыл вдоль реки:</p>
<p><img src="../wp-content/uploads/physics/08-15.png"/></p>
<p class="Content2">Затем снова перпендикулярно:</p>
<p><img src="../wp-content/uploads/physics/08-16.png"/></p>
<p class="Content2">И наконец против течения:</p>
<p><img src="../wp-content/uploads/physics/08-17.png"/></p>
<p class="Content2">Траектория:</p>
<p><img src="../wp-content/uploads/physics/08-18.png"/></p>
<div class="Header3"><strong>Задача 8</strong></div>
<p class="Content2">На лодке переплывают реку, отправляясь из пункта А (см. рисунок). Скорость лодки в стоячей воде <span class="Content2Symbol"><i>u</i></span> = 5 м/с, скорость течения реки <span class="Content2_Times"><i>u</i></span> = 3 м/с, ширина реки <i>S</i> = 200 м. В какой точке пристанет лодка к противоположному берегу, если держать курс перпендикулярно берегам? Какой курс следует держать, чтобы попасть в точку В? Для обоих случаев определите время переправы.</p>
<div class="row">
<div class="column">
<p class="Content2"><span class="Content2Symbol">u</span>, <span class="arrowTimes11">u</span>, <i>S</i></p>
<p class="Content2"><i>&#8467;</i>, <span class="Content2Symbol"><i>a</i></span>, <i>t</i><sub>1</sub>, <i>t</i><sub>2</sub> &#8212; ?</p>
</div>
<div class="column">
<img src="../wp-content/uploads/physics/08-19.png"/>
</div>
</div>
<p class="Content2">1-й вопрос – лодка держит курс &#8869; берегу.</p>
<p class="cntTah9Grey">Держать курс перпендикулярно берегам – это значит направить нос лодки перпендикулярно берегу, но т.к. есть течение – лодку будет сносить по течению</p>
<p class="Content2">1-й способ. Рисуем вектор скорости лодки, нос которой направлен &#8869; берегам, затем перемещение лодки (АС) и снос относительно т. B (<i>&#8467;</i>):</p>
<p class="Content2"><img src="../wp-content/uploads/physics/08-20.png"/></p>
<p class="Content2"><i>&#8467;</i> = <i>t</i><span class="Content2_Times"><i>u</i></span></p>
<p class="Content2">где <i>t</i> – время, в течение которого лодку сносило вдоль реки на расстояние <i>&#8467;</i>, а также это время, в течение которого лодка плыла ширину реки <i>S</i> со скоростью <span class="arrowSymbol11">u</span>, тогда:</p>
<p class="Content2"><i>t</i> = <i>S</i>/<span class="Content2Symbol"><i>u</i></p>
<p class="Content2"><i>&#8467;</i> = <i>S</i>&#183;<span class="Content2_Times"><i>u</i></span>/<span class="Content2Symbol"><i>u</i></p>
<p class="Content2"><i>t</i> = 40 c, <i>&#8467;</i> = 120 м</p>
<p class="Content2">2-й способ, через закон сложения скоростей.</p>
<p class="Content2">Если <span class="arrowSymbol11">u</span><sub>отн</sub> – <span class="arrowSymbol11">u</span> и <span class="arrowSymbol11">u</span><sub>пер</sub> – <span class="arrowTimes11">u</span>, то <span class="arrowSymbol11">u</span><sub>абс</sub> – <span class="arrowSymbol11">u</span> + <span class="arrowTimes11">u</span>: </p>
<p class="Content2"><img src="../wp-content/uploads/physics/08-21.png"/></p>
<p class="Content2">Треугольники перемещений(ABC) и скоростей подобны, значит:</p>
<p class="Content2"><span class="Content2_Times"><i>u</i></span>/<span class="Content2Symbol"><i>u</i></span> =  <i>&#8467;</i>/<i>S</i></p>
<p class="Content2"><i>&#8467;</i> = <i>S</i>&#183;<span class="Content2_Times"><i>u</i></span>/<span class="Content2Symbol"><i>u</i></p>
<p class="cntTah9Grey">Обратим внимание на то, что лодка одновременно участвует в двух движениях: вдоль вектора AB и вдоль вектора AC.</p>
<p class="Content2">2-й вопрос. Лодка приплывает к т. В.</p>
<p class="cntTah9Grey">Чтобы попасть в т.В, нужно выяснить куда нужно направить вектор <span class="Content2Symbol"><i>u</i></span>, т.е. нос лодки. Для этого нужно учесть величину сноса течения, по которому нужно ориентироваться при повороте носа лодки. В этом случае, скорость лодки к т.B относительно берега – это <span class="Content2Symbol"><i>u</i></span><sub>абс</sub>.</p>
<p class="Content2"><span class="arrowSymbol11">u</span><sub>абс</sub> = <span class="arrowSymbol11">u</span><sub>отн</sub> + <span class="arrowSymbol11">u</span><sub>пер</sub> или <span class="arrowSymbol11">u</span><sub>абс</sub> = <span class="arrowSymbol11">u</span> + <span class="arrowTimes11">u</span></p>
<p class="cntTah9Grey">Нам даны вектор <span class="Content2_Times"><i>u</i></span> и модуль <span class="Content2Symbol"><i>u</i></span>, остаётся их нарисовать так, чтобы их сумма получила вектор <span class="Content2Symbol"><i>u</i></span><sub>абс</sub></p>
<p class="Content2">Найдём вектор <span class="Content2Symbol"><i>u</i></span>:</p>
<p class="Content2"><span class="arrowSymbol11">u</span> = <span class="arrowSymbol11">u</span><sub>абс</sub> – <span class="arrowTimes11">u</span>, но сложением удобно, поэтому: <span class="arrowSymbol11">u</span> = <span class="arrowSymbol11">u</span><sub>абс</sub> + (–<span class="arrowTimes11">u</span>)</p>
<p class="Content2"><img src="../wp-content/uploads/physics/08-22.png"/></p>
<p class="Content2">sin <span class="Content2Symbol"><i>a</i></span> = <span class="Content2_Times"><i>u</i>/<span class="Content2Symbol"><i>u</i></p>
<p class="cntTah9Grey">Под этим углом, нужно держать курс, чтобы попасть в т.B.</p>
<p class="Content2">Теперь найдём время. Скорость, с которой лодка приближается к берегу – <span class="Content2Symbol"><i>u</i></span><sub>абс</sub> = &#8730;<span class="Content2Symbol"><i>u</i></span><sup>2</sup> – <span class="Content2_Times"><i>u</i><sup>2</sup></p>
<p class="Content2"><i>t</i> = <i>S</i>/<span class="Content2Symbol"><i>u</i></span><sub>абс</sub> = <i>S</i>/&#8730;<span class="Content2Symbol"><i>u</i></span><sup>2</sup> – <span class="Content2_Times"><i>u</i><sup>2</sup></p>
<p class="Content2">sin <span class="Content2Symbol"><i>a</i></span> = 0,6 => <span class="Content2Symbol"><i>a</i></span> &#8776; 37&#176;</p>
<p class="Content2"><i>t</i> = 50c</p>
<p class="cntTah9Grey">Анализ: время переправы во 2-м случае больше, потому гипотенуза длиннее катета, ещё, скорость приближения к т.B (<span class="Content2Symbol"><i>u</i></span><sub>абс</sub>) представляет лишь часть от скорости лодки <span class="Content2Symbol"><i>u</i></span>, потому другая часть представляет собой течение.</p>
<div class="Header3"><strong>Задача 9</strong></div>
<p class="Content2">Капли дождя из-за сопротивления воздуха падают с постоянной скоростью <span class="Content2Symbol"><i>u</i></span>, перпендикулярной поверхности земли. Как необходимо расположить цилиндрическое ведро, находящееся на движущейся со скоростью u платформе, чтобы капли не попадали на его стенки?</p>
<div class="row">
<div class="column">
<p class="Content2"><span class="arrowSymbol11">u</span>, <span class="arrowTimes11">u</span></p>
<p class="Content2"><span class="Content2Symbol"><i>a</i></span> &#8212; ?</p>
</div>
<div class="column">
<img src="../wp-content/uploads/physics/08-23.png"/>
</div>
</div>
<p class="Content2">Нарисуем движение капли для наблюдателя на тележке:</p>
<div id="block10x10center"><img src="../wp-content/uploads/physics/08-24.png"/></div>
<p class="Content2">Капли не будут попадать на стенки ведра, когда они летят || стенкам ведра. А наблюдатель, сидя на тележке, видит их под углом <span class="Content2Symbol"><i>a</i></span></p>
<p class="Content2">Сопоставим наши скорости со скоростями закона сложения:</p>
<div id="block10x10center"><img src="../wp-content/uploads/physics/08-25.png"/></div>
<p class="Content2">Если капли падают относительно земли, то <span class="Content2Symbol"><i>u</i></span> – это абсолютная скорость (<span class="Content2Symbol"><i>u</i></span><sub>абс</sub>); если <span class="Content2_Times"><i>u</i></span> – скорость движущейся СО, то это переносная скорость (<span class="Content2Symbol"><i>u</i></span><sub>пер</sub>), тогда капли для сидящего на тележке падают с относительной скоростью(<span class="Content2Symbol"><i>u</i></span><sub>отн</sub>).</p>
<p class="Content2">Перепишем закон сложения скоростей:</p>
<p class="Content2"><span class="arrowSymbol11">u</span> = <span class="arrowSymbol11">u</span><sub>отн</sub> + <span class="arrowTimes11">u</span></p>
<p class="Content2">Угол <span class="Content2Symbol"><i>a</i></span> будем находить зная <span class="Content2Symbol"><i>u</i></span><sub>отн</sub>:</p>
<p class="Content2"><span class="arrowSymbol11">u</span><sub>отн</sub> = <span class="arrowSymbol11">u</span> &#8212; <span class="arrowTimes11">u</span></p>
<p class="Content2">но сложением удобно, поэтому: <span class="arrowSymbol11">u</span><sub>отн</sub> = <span class="arrowSymbol11">u</span> + (–<span class="arrowTimes11">u</span>)</p>
<p class="Content2">Нарисуем треугольник скоростей и угол <span class="Content2Symbol"><i>a</i></span>:</p>
<div id="block10x10center"><img src="../wp-content/uploads/physics/08-26.png"/></div>
<p class="cntTah9Grey">Под этим углом капли будут падать на дно ведра минуя стенки.</p>
<p class="Content2">tg <span class="Content2Symbol"><i>a</i></span> = <span class="Content2_Times"><i>u</i>/<span class="Content2Symbol"><i>u</i></p>
<p class="Content2"><span class="Content2Symbol"><i>a</i></span> = arctg<span class="Content2_Times"><i>u</i>/<span class="Content2Symbol"><i>u</i></p>
<p class="cntTah9Grey">Анализ: чем быстрее движется тележка, тем больше тангенс и тем больше угол.</p>
]]></content:encoded>
			<wfw:commentRss>http://kshu.su/?feed=rss2&#038;p=263</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ЕГЭ 27 Демо</title>
		<link>http://kshu.su/?p=248</link>
		<comments>http://kshu.su/?p=248#comments</comments>
		<pubDate>Wed, 01 Jun 2022 02:35:30 +0000</pubDate>
		<dc:creator><![CDATA[Kirill Schurakhtenkov]]></dc:creator>
				<category><![CDATA[Информатика]]></category>

		<guid isPermaLink="false">http://kshu.su/?p=248</guid>
		<description><![CDATA[Подробные решения 27-х заданий из демонстрационных вариантов ЕГЭ по информатике за 2016, 2018-2023 г. Пример. ЕГЭ 2023 №27 Демо У медицинской компании есть N пунктов приёма биоматериалов на анализ. Все пункты расположены вдоль автомагистрали и имеют номера, соответствующие расстоянию от нулевой отметки до конкретного пункта. Известно количество пробирок, которое ежедневно принимают в каждом из пунктов. [&#8230;]]]></description>
				<content:encoded><![CDATA[<p class="Content2">Подробные решения 27-х заданий из демонстрационных вариантов ЕГЭ по информатике за 2016, 2018-2023 г.</p>
<p><span id="more-248"></span></p>
<div class="Header2"><strong>Пример. ЕГЭ 2023 №27 Демо</strong></div>
<p class="Content2">У медицинской компании есть N пунктов приёма биоматериалов на анализ.  Все  пункты  расположены  вдоль  автомагистрали  и  имеют  номера,  соответствующие расстоянию от нулевой отметки до конкретного пункта.  Известно количество пробирок, которое ежедневно принимают в каждом из  пунктов.  Пробирки  перевозят  в  специальных  транспортировочных  контейнерах вместимостью не более 36 штук. Каждый транспортировочный  контейнер  упаковывается  в  пункте  приёма  и  вскрывается  только   в лаборатории.</p>
<p class="Content2">Стоимость  перевозки  биоматериалов  равна  произведению  расстояния  от  пункта  до  лаборатории  на  количество  контейнеров  с пробирками.  Общая  стоимость перевозки за день равна сумме стоимостей перевозок из каждого  пункта  в  лабораторию.  Лабораторию  расположили  в  одном  из  пунктов  приёма  биоматериалов  таким  образом,  что  общая  стоимость  доставки  биоматериалов из всех пунктов минимальна.</p>
<p class="Content2">Определите  минимальную  общую  стоимость  доставки  биоматериалов  из  всех пунктов приёма в лабораторию.</p>
<p class="Content2"><i>Входные данные</i></p>
<p class="Content2">Дано  два  входных  файла ( файл  A  и  файл  B),  каждый  из  которых   в первой строке содержит число N (1 &#8804; N &#8804; 10 000 000) – количество пунктов  приёма  биоматериалов.  В  каждой  из  следующих  N  строк  находится  два  числа:  номер  пункта  и  количество  пробирок  в  этом  пункте ( все  числа  натуральные, количество пробирок  в каждом пункте не  превышает 1000).  Пункты перечислены в порядке их расположения вдоль дороги, начиная от  нулевой отметки.</p>
<p class="Content2">В ответе укажите два числа: сначала значение искомой  величины для файла А, затем – для файла B.</p>
<p class="Content2"><i>Типовой пример организации данных во входном файле</i></p>
<p class="Content2">6</br>1 100</br>2 200</br>5 4</br>7 3</br>8 2</br>10 190</p>
<p class="Content2"><i>При  таких  исходных  данных  и  вместимости  транспортировочного  контейнера,  составляющей 96 пробирок,  компании  выгодно  открыть  лабораторию  в  пункте 2. В  этом  случае  сумма  транспортных  затрат  составит: 1&#183;2 + 3&#183;1 + 5&#183;1 + 6&#183;1 + 8&#183;2.</i></p>
<p class="Header2">Решение:</p>
<p class="Header3">Что просят?</p>
<p class="Content2">Найти такой пункт куда дешевле доставлять контейнеры с пробирками из других пунктов. Для этого нужно посчитать стоимость доставки для каждого пункта.</p>
<p class="Header3">Как считать стоимость?</p>
<p class="Content2">Пусть у нас только 4 пункта:</p>
<div id="block10x10center"><img src="wp-content/uploads/informatics/ege-c4_27_00.png" /></div>
<p class="Content2">Посчитаем стоимость доставки по формуле |расстояние| * боксы (для каждого пункта считаем расстояние к нему, умноженное на кол-во боксов каждого пункта):</p>
<table class=table_11Tahoma_noBorder>
<tr align="center">
<td width="100">|1-1|&#215;3+</td>
<td width="100">|3-1|&#215;3+</td>
<td width="100">|6-1|&#215;3+</td>
<td width="100">|9-1|&#215;3+</td>
</tr>
<tr align="center">
<td>|1-3|&#215;2+</td>
<td>|3-3|&#215;2+</td>
<td>|6-3|&#215;2+</td>
<td>|9-3|&#215;2+</td>
</tr>
<tr align="center">
<td>|1-6|&#215;4+</td>
<td>|3-6|&#215;4+</td>
<td>|6-6|&#215;4+</td>
<td>|9-6|&#215;4+</td>
</tr>
<tr align="center">
<td>|1-9|&#215;1=</td>
<td>|3-9|&#215;1=</td>
<td>|6-9|&#215;1=</td>
<td>|9-9|&#215;1=</td>
</tr>
<tr align="center">
<td>32</td>
<td>24</td>
<td>24</td>
<td>48</td>
</tr>
</table>
<p class="Content2">Последние числа – это стоимость доставки боксов в текущий пункт. Например, стоимость доставки в первый пункт равна 32, во второй 24 и т.д. Результаты получены квадратичным(неэффективным) алгоритмом:</p>
<pre><ps>
   cst[] = [0 0 0 0 0 0] <cm>; массив стоимостей</cm>
   dst[] = [1 2 5 7 8 10] <cm>; расположения пунктов</cm>
   box[] = [2 3 1 1 1 2] <cm>; боксы (контейнеры)</cm>
   Для i от 1 до N <cm>; dst[i] - предполагаемый пункт</cm>
   <cm>; dst[j] – отсюда повезём боксы(box[j]) в i-й пункт</cm>
      Для j от 1 до N 
         cst[i] = cst[i] + |dst[i]-dst[j]| &#215; box[j]
</ps></pre>
<p class="Header3">Эффективный алгоритм</p>
<p class="Content2">Получим числа 32, 24, 24, 48 эффективным(не квадратичным) способом. Для начала вычислим первое число (32):</p>
<pre><ps>
   cst[] = [0 0 0 0] <cm>; массив стоимостей</cm>
   Для i от 1 до N ;
      cst[1] = |dst[i]-dst[1]| &#215; box[i]

   <cm>; cst[] = [38 0 0 0] получили первое число</cm>
</ps></pre>
<p class="Content2">32 – это стоимость доставки в 1-й пункт из всех остальных пунктов. Сюда входят стоимости всех боксов справа от первого пункта и не входят боксы собственно 1-го пункта(1-й пункт не доставляет боксы сам себе – |1-1|&#215;3=0).</p>
<p class="Content2">Чтобы вычислить стоимости доставок в следующие пункты, воспользуемся данными о доставках, хранящихся в предыдущих пунктах. Когда мы будем получать стоимости доставок в следующие пункты, вычислять заново все боксы не нужно. Нужно лишь на каждом шаге подкорректировать данные предыдущих пунктов. Например, рассмотрим вычисление стоимости для 2-го пункта:</p>
<p class="Content2">У 2-го пункта, предыдущий пункт – 1, его стоимость 32. Это число, для 2-го пункта, содержит недостающие и лишние данные. Недостающие данные – это та стоимость, которую мы не учли для 1-го пункта: для 1-го пункта не учтены 3 бокса (свои боксы себе возить ненужно), поэтому их нужно добавить для 2-го пункта. Лишние данные – это та стоимость, которая вошла при перевозки боксов всех пунктов, но на расстояние между 2-м и 1-м пунктом. Значит нужно вычесть длину смещения между нынешним пунктом(2) и предыдущим(1) умноженное на все боксы (другими словами, после смещения вправо предыдущая стоимость содержит лишнее значение равное длине смещения умноженное на все боксы).</p>
<p class="Header3">Вычитание лишних и добавление недостающих данных</p>
<p class="Content2">Вычитание лишних данных для 2-го пункта:</p>
<pre><ps>
32 – (3-1)*2 + (3-1)*4 + (3-1)*1
</ps></pre>
<p class="Content2">но лучше так:</p>
<pre><ps>
32 – (3-1)*(2 + 4 + 1)
</ps></pre>
<p class="Content2">Такое упрощение позволит получить оптимальный способ решения задачи – вторая скобка содержит сумму всех боксов(без 1-го пункта), и поскольку кол-во боксов известно заранее, их сумму можно вычислить один раз, для одного пункта, чтобы затем использовать для остальных пунктов. Например, для 3-го пункта вычитание будет таким:</p>
<pre><ps>
…– (6-3)*(4 + 1)
</ps></pre>
<p class="Content2">т.е. для 3-го пункта двойку убрали.</p>
<p class="Content2">Теперь рассмотрим добавление недостающих данных для 2-го пункта:</p>
<pre><ps>
…+ (3-1)*3
</ps></pre>
<p class="Content2">для 3-го:</p>
<pre><ps>
…+ (6-3)*(3+2)
</ps></pre>
<p class="Content2">Общая картина вычислений начиная со 2-го пункта (1-й пункт вычислен заранее неэффективным способом):</p>
<pre><ps>
32 – (3-1)*(2 + 4 + 1) + (3-1)*3 = 24
24 – (6-3)*(4 + 1) + (6-3)*(3 + 2) = 24
24 – (9-6)*(1) + (9-6)*(3 + 2 + 4) = 48
</ps></pre>
<pre><ps>
boxes = 10 <cm>; все боксы – посчитанные на 1-м проходе</cm>
left = box[1] <cm>;left=3 боксы слева</cm>
right = boxes - left <cm>; right=7 боксы справа</cm>
Для i от 2 до N <cm>; начинаем со второго пункта</cm>
   cst[i] = cst[i-1] - (dst[i] - dst[i-1]) * right
                     + (dst[i] - dst[i-1]) * left

<cm>; dst[i]-dst[i-1] – расстояние на которое мы переместились слева направо</cm>
<cm>; cst[i] – стоимость доставки в текущий пункт</cm>
<cm>; cst[i-1] – ранее вычисленная стоимость доставки, которую нужно подкорректировать</cm>

<cm>; настроим боксы от которых ушли и к которым пришли</cm>
   right = right - box[i]   
   left = left + box[i]

<cm>; получение числа 24 из 32 для 2-го пункта:</cm>
<cm>; 24 = 32 – (3 - 1) * 7 + (3 - 1) * 3</cm>
<cm>Настраиваем указатели для 3-го пункта</cm>
<cm>; right = 7-2  к этим пришли, зн. их вычтем</cm>
<cm>; left = 3+2  от этих ушли, зн. их добавим</cm>

<cm>; получение числа 24 из 24 для 3-го пункта:</cm>
<cm>; 24 = 24 – (6 - 3) * 5 + (6 - 3) * 5</cm>
<cm>Настраиваем указатели для 4-го пункта</cm>
<cm>; right = 5-4  к этим пришли, зн. их вычтем</cm>
<cm>; left = 5+4  от этих ушли, зн. их добавим</cm>

<cm>; получение числа 48 из 24 для 4-го пункта:</cm>
<cm>; 48 = 24 – (9 - 6) * 1 + (9 - 6) * 9</cm>
</ps></pre>
<p class="Header3">Полный код на Python</p>
<pre>
f=<b>open</b>('27_B.txt')
n=<b>int</b>(f.readline())

dst=[0]*n <cm>#расположения пунктов</cm>
box=[0]*n <cm>#контейнеры(боксы)</cm>
cst=[0]*n <cm>#стоимости</cm>
boxes=0 <cm>#все контейнеры(боксы)</cm>

k=36

<b>for</b> i <b>in</b> <gr>range</gr>(n):
    x,y=<b>map</b>(<b>int</b>,f.readline().split())

    dst[i]=x
    box[i]=y//k + 1*(y%k!=0)

    cst[0] += (dst[i]-dst[0])*box[i]
    boxes += box[i]<cm>#суммируем все боксы</cm>

left = box[0]
right = boxes - left
<b>for</b> i <b>in</b> <gr>range</gr>(1,n):
    cst[i] = cst[i - 1] - (dst[i] - dst[i - 1]) * right \
                        + (dst[i] - dst[i - 1]) * left

    right -= box[i]
    left += box[i]

<b>print</b>(<b>min</b>(cst))
</pre>
<div class="Header2"><strong>Пример. ЕГЭ 2022 №27 Демо</strong></div>
<p class="Content2">Дана последовательность из <i>N</i> натуральных чисел. Рассматриваются все её непрерывные подпоследовательности, такие что сумма элементов каждой из них кратна <i>k</i> = 43. Найдите среди них подпоследовательность с максимальной суммой, определите её длину. Если таких подпоследовательностей найдено несколько, в ответе укажите количество элементов самой короткой из них.</p>
<p class="Content2"><i>Входные данные</i></p>
<p class="Content2">Даны два входных файла (файл <i>A</i> и файл <i>B</i>), каждый из которых содержит в первой строке количество чисел <i>N</i> (1 &#8804; <i>N</i> &#8804; 10 000 000). Каждая из следующих <i>N</i> строк содержит одно натуральное число, не превышающее 10 000.</p>
<p class="Content2">Пример организации исходных данных во входном файле:</p>
<p class="Content2">7</br>1</br>3</br>4</br>93</br>8</br>5</br>95</p>
<p class="Content2">В ответе укажите два числа: сначала значение искомой длины для файла <i>А</i>, затем – для файла <i>B</i>.</p>
<p class="Content2"><b>Предупреждение:</b> для обработки файла <i>B</i> <b>не следует</b> использовать переборный алгоритм, вычисляющий сумму для всех возможных вариантов, поскольку написанная по такому алгоритму программа будет выполняться слишком долго</p>
<p class="Header3">Эффективный поиск подпоследовательности</p>
<p class="Content2">Рассмотрим суть эффективного поиска числовой подпоследовательности, сумма которой делится на нужное число без остатка. Для простоты возьмём такую последовательность, у которой две подпоследовательности делятся, например, на 10: [2 1 <markGray>5 7 8</markGray> 4 <markGray>12 8</markGray>]</p>
<p class="Content2">Просуммируем каждое число последовательности и разместим полученные суммы под числами последовательности:</p>
<table class=table_10CorierNew>
<tr align="center">
<td width="30">2</td>
<td width="30">1</td>
<td width="30">5</td>
<td width="30">7</td>
<td width="30">8</td>
<td width="30">4</td>
<td width="30">12</td>
<td width="30">8</td>
<td width="30">Последовательность</td>
</tr>
<tr align="center">
<td width="30">2</td>
<td width="30" bgcolor="#b6dde8">3</td>
<td width="30">8</td>
<td width="30">15</td>
<td width="30" bgcolor="#b6dde8">23</td>
<td width="30">27</td>
<td width="30">39</td>
<td width="30">47</td>
<td width="30">Суммы</td>
</tr>
</table>
<p class="Content2">Чтобы найти первую подпоследовательность (5 7 8), посмотрим на сумму, которая стоит под числом 8. Это число 23. Его можно превратить в 20, если вычесть 3, а число 3 стоит как вторая сумма. Значит, для поиска подпоследовательности, сумма которой делится на 10 без остатка, нужно из одной суммы вычесть другую: 2+1+5+7+8 – 2+1 = 5+7+8.</p>
<p class="Content2">Подпоследовательность 2 1 называют «хвостом» подпоследовательности  2 1 5 7 8, который нужно вычесть, чтобы получить нужный результат:</p>
<table class=table_10CorierNew>
<tr align="center">
<td width="30" bgcolor="#b8cce4">2</td>
<td width="30" bgcolor="#b8cce4">1</td>
<td width="30" bgcolor="#b8cce4">5</td>
<td width="30" bgcolor="#b8cce4">7</td>
<td width="30" bgcolor="#b8cce4">8</td>
<td width="160"></td>
</tr>
<tr align="center">
<td width="30" bgcolor="#e5b8b7">2</td>
<td width="30" bgcolor="#e5b8b7">1</td>
<td width="30"></td>
<td width="30"></td>
<td width="30"></td>
<td width="130">Хвост</td>
</tr>
<tr align="center">
<td width="30"></td>
<td width="30"></td>
<td width="30" bgcolor="#d9e3bc">5</td>
<td width="30" bgcolor="#d9e3bc">7</td>
<td width="30" bgcolor="#d9e3bc">8</td>
<td width="130">Нужный результат</td>
</tr>
</table>
<p class="Content2">Как теперь найти, что из общей суммы: 2+1+5+7+8 нужно вычесть именно 2+1, чтобы гарантированно получить результат, который делится на 10 без остатка?</p>
<p class="Content2">Есть такое правило:</p>
<div id="block10x10center"><img src="wp-content/uploads/informatics/ege-c4_27_01.png" /></div>
<p class="Content2">…которое говорит, что если два числа при делении на <i>k</i> дают один и тот же остаток, то их разность делится на <i>k</i> без остатка. У нас <i>a</i> – это сумма 2+1+5+7+8, <i>b</i> – это сумма 2+1, а <i>k</i> это 10</p>
<p class="Content2">Теперь исследуем остатки, которые получатся при делении каждой суммы на 10:</p>
<table class=table_10CorierNew>
<tr align="center">
<td width="30">2</td>
<td width="30">1</td>
<td width="30">5</td>
<td width="30">7</td>
<td width="30">8</td>
<td width="30">4</td>
<td width="30">12</td>
<td width="30">8</td>
<td width="30">Последовательность</td>
</tr>
<tr align="center">
<td width="30">2</td>
<td width="30">3</td>
<td width="30">8</td>
<td width="30">15</td>
<td width="30">23</td>
<td width="30">27</td>
<td width="30">39</td>
<td width="30">47</td>
<td width="30">Суммы</td>
</tr>
<tr align="center">
<td width="30">2</td>
<td width="30" bgcolor="#e5b8b7">3</td>
<td width="30">8</td>
<td width="30">5</td>
<td width="30" bgcolor="#e5b8b7">3</td>
<td width="30" bgcolor="#d9e3bc">7</td>
<td width="30">9</td>
<td width="30" bgcolor="#d9e3bc">7</td>
<td width="30">Остатки</td>
</tr>
</table>
<p class="Content2">Есть одинаковые остатки! Это поможет найти и вычесть хвост у последовательности, и задача решена. Рассмотрим как следить за остатками.</p>
<p class="Header3">Массив остатков</p>
<p class="Content2">Наша задача сохранить все суммы, и пометить какой у них остаток при делении на <i>k</i>. Для этого создадим массив <i>tailSum</i> размером <i>k</i>. Индекс элемента этого массива – это остаток при делении очередной суммы на <i>k</i>. Эту сумму нам нужно занести в массив по её остатку. Тем самым мы пометим под каким остатком хранится та или иная сумма.</p>
<p class="Content2">Так вот, один и тот же остаток должен встретится ещё раз в процессе суммирования. А это значит, что в массиве <i>tailSum</i> – по индексу остатка – уже сохранена ранее сумма, и если её вычесть из общей суммы(<i>totalSum</i>), – получится нужная сумма(<i>curSum</i>).</p>
<p class="Content2">Рассмотрим всё это по шагам:</p>
<pre>
 m = [2 1 5 7 8 4 12 8]
 k = 10
 totalSum = 0
 tailSum - [0 0 0 0 0 0 0 0 0 0]

  1 шаг
 totalSum = 2
 <cm>;если tailSum[2 % k] = 0</cm>
 <cm>;то в tailSum[2 % k] = 2</cm>
 tailSum - [0 0 2 0 0 0 0 0 0 0]
  
  2 шаг
 totalSum = 3
 <cm>;если tailSum[3 % k] = 0</cm>
 <cm>;то в tailSum[3 % k] = 3</cm>
 tailSum - [0 0 2 3 0 0 0 0 0 0]
  
  3 шаг
 totalSum = 8
 <cm>;если tailSum[8 % k] = 0</cm>
 <cm>;то в tailSum[8 % k] = 8</cm>
 tailSum - [0 0 2 3 0 0 0 0 8 0]
  
  4 шаг
 totalSum = 15
 <cm>;если tailSum[15 % k] = 0</cm>
 <cm>;то в tailSum[15 % k] = 15</cm>
 tailSum - [0 0 2 3 0 15 0 0 8 0]
  
  5 шаг
 totalSum = 23
 <cm>;если tailSum[23 % k] != 0</cm>
 <cm>;то curSum = totalSum - tailSum[23 % k] 23 – 3</cm>
 curSum = 20 <cm>;нужная сумма</cm>
</pre>
<p class="Header3">Программа на Python</p>
<pre>
   m = [2,1,5,7,8,4,12,8] <cm>#данная последовательность</cm>
   n = <b>len</b>(m)
   k = 10
   totalSum = 0
   tailSum = [0]*k  <cm>#[0 0 0 0 0 0 0 0 0 0]</cm>
   <b>for</b> i <b>in</b> <gr>range</gr>(n):
      totalSum += m[i]
      r = totalSum % k
      <b>if</b> tailSum[r] == 0: <cm>#был ли такой остаток или нет?</cm>
      <cm># такого остатка ещё не было =>
      сохраняем сумму(потенциальный хвост)
      и помечаем под каким она остатком</cm>
         tailSum[r] = totalSum
      <b>else</b>: <cm>#такой остаток уже есть => 
      вычитаем предыдущую сумму(хвост) из текущей</cm>
         curSum = totalSum - tailSum[r]
</pre>
<p class="Header3">Длина подпоследовательности</p>
<p class="Content2">Длина подпоследовательности – это разность между двумя значениями циклической переменной <i>i</i>. Первое значение (начало подпоследовательности) сохраним в массив <i>tailLen</i>. Второе значение (конец подпоследовательности). Первое значение соответствует моменту, когда мы сохраняли первую сумму для отсечения хвоста, второе – когда нашли в <i>tailSum</i> не нулевое значение. Следовательно, <i>tailLen</i> аналогичен <i>tailSum</i>:</p>
<pre>
   …
   tailLen = [0]*k
   <b>for</b> i <b>in</b> <gr>range</gr>(n):
      …
      <b>if</b> tailSum[r] == <b>None</b>:
         …
         <cm>#i – первое значение длины - сохраним в tailLen</cm>
		 tailLen[r] = i
      <b>else</b>:
          …
		 <cm>#i – второе значение длины - из него вычтем первое</cm>
         curLen = i - tailLen[r]

</pre>
<p class="Header3">
<p class="Header3">Максимальная и самая короткая сумма</p>
<p class="Content2">Максимальная сумма находится обычным делом. Кроме этого, текущая сумма может быть равной максимальной(встретились две одинаковые нужные суммы), тогда нужно убедиться, что кол-во элементов текущей суммы(<i>currLen</i>) меньше кол-ва элементов максимальной суммы(<i>maxSum</i>). Раз так –  модифицируем переменные <i>maxSum</i> и <i>minLen</i> текущими значениями суммы и длины:</p>
<pre>
   …
   maxSum = minLen = 0
   <b>for</b> i <b>in</b> <gr>range</gr>(n):
   …
   <b>else:</b>
      …
      <b>if</b> curSum > maxSum <b>or</b> \
         (curSum == maxSum <b>and</b> curLen < minLen):
            maxSum = curSum
            minLen = curLen


</pre>
<p class="Header3">Полный код на Python (подпоследовательность не сначала)</p>
<pre>
   m = [2,1,5,7,8,4,12,8]
   n = <b>len</b>(m)
   tailSum=[0]*k
   tailLen=[0]*k
   minLen=<b>float</b>(<gr>'inf'</gr>)
   totalSum=curSum=maxSum=curLen=0
   <b>for</b> i <b>in</b> <gr>range</gr>(n):
      totalSum += m[i]
      r = totalSum % k
       <b>if</b> tailSum[r] == 0:
          tailSum[r] = totalSum 
          tailLen[r] = i
       <b>else</b>: 
          curSum = totalSum - tailSum[r]
          curLen = i - tailLen[r]
          <b>if</b> curSum > maxSum <b>or</b> \
            curSum == maxSum <b>and</b> curLen < minLen:
             maxSum = curSum
             minLen = curLen
   <b>print</b>(minLen,)
</pre>
<p class="Content2">Если нужная подпоследовательность вначале массива, то остаток <i>r</i> равен нулю, а <i>totalSum</i> – есть найденная сумма. При увеличении <i>totalSum</i> – сумма будет увеличиваться, значит проверять на максимум не нужно. Остаётся проверить длину на минимум:</p>
<p class="Header3">Полный код на Python (подпоследовательность сначала)</p>
<pre>
   m=[5,7,8,8,4,12]
   n = <b>len</b>(m)
   tailSum=[0]*k
   tailLen=[0]*k
   minLen=<b>float</b>(<gr>'inf'</gr>)
   totalSum=curSum=maxSum=curLen=0
   <b>for</b> i <b>in</b> <gr>range</gr>(n):
      totalSum += m[i]
      r = totalSum % k
       <b>if</b> r == 0 <b>and</b> i < minLen:
          maxSum = totalSum 
          minLen = i+1
   <b>print</b>(minLen,)
</pre>
<p class="Header3">Полный код на Python</p>
<pre>
   f=<b>open</b>('27_B.txt')
   n=<b>int</b>(f.readline())
   k=43
   totalSum=curSum=maxSum=curLen=0
   tailSum=[0]*k
   tailLen=[0]*k
   minLen=<b>float</b>(<gr>'inf'</gr>)
   <b>for</b> i <b>in</b> <gr>range</gr>(n):
      totalSum+=<b>int</b>(f.readline())
      r=totalSum%k
      <b>if</b> r!=0:
         <b>if</b> tailSum[r] == 0:
            tailSum[r] = totalSum
            tailLen[r] = i
         <b>else</b>:
            curSum = totalSum - tailSum[r]
            curLen = i - tailLen[r]
            <b>if</b> curSum > maxSum <b>or</b> \
              curSum == maxSum <b>and</b> curLen < minLen:
               maxSum = curSum
               minLen = curLen
      <b>elif</b> i < minLen:
         maxSum = totalSum
         minLen = i+1
<b>print</b>(minLen)
</pre>
<div class="Header2"><strong>Пример. ЕГЭ 2021 №27 Демо</strong></div>
<p class="Content2">Имеется набор данных, состоящий из пар положительных целых чисел. Необходимо выбрать из каждой пары ровно одно число так, чтобы сумма всех выбранных чисел не делилась на 3 и при этом была максимально возможной. Гарантируется, что искомую сумму получить можно.</p>
<p class="Content2">Программа должна напечатать одно число – максимально возможную сумму, соответствующую условиям задачи.</p>
<p class="Content2">Входные данные</p>
<p class="Content2">Даны два входных файла (файл <i>A</i> и файл <i>B</i>), каждый из которых содержит в первой строке количество пар <i>N</i> (1 &#8804; <i>N</i> &#8804; 10 000 000). Каждая из следующих <i>N</i> строк содержит два натуральных числа, не превышающих 10 000.</p>
<p class="Content2">Пример организации исходных данных во входном файле:</p>
<p class="Content2">6</br>1 3</br>5 12</br>6 9</br>5 4</br>3 3</br>1 1</p>
<p class="Content2">Для указанных входных данных значением искомой суммы должно быть число 32. </p>
<p class="Content2">В ответе укажите два числа: сначала значение искомой длины для файла <i>А</i>, затем – для файла <i>B</i>.</p>
<p class="Content2"><b>Предупреждение:</b> для обработки файла <i>B</i> <b>не следует</b> использовать переборный алгоритм, вычисляющий сумму для всех возможных вариантов, поскольку написанная по такому алгоритму программа будет выполняться слишком долго</p>
<p class="Header3">Сумма максимумов</p>
<p class="Content2">Выберем данную последовательность из шести пар и просуммируем максимальное число каждой пары:</p>
<table class=table_10CorierNew>
<tr align="center">
<td width="30">1</td>
<td width="30" bgcolor="#b6dde8">3</td>
</tr>
<tr align="center">
<td width="30">5</td>
<td width="30" bgcolor="#b6dde8">12</td>
</tr>
<tr align="center">
<td width="30">6</td>
<td width="30" bgcolor="#b6dde8">9</td>
</tr>
<tr align="center">
<td width="30" bgcolor="#b6dde8">5</td>
<td width="30">4</td>
</tr>
<tr align="center">
<td width="30" bgcolor="#b6dde8">3</td>
<td width="30">3</td>
</tr>
<tr align="center">
<td width="30" bgcolor="#b6dde8">1</td>
<td width="30">1</td>
</tr>
</table>
<pre>
   l = [1,5,6,5,3,1] <cm># первое число пары</cm>
   r = [3,12,9,4,3,1] <cm># второе число пары</cm>
   n = len(l) <cm># а можно и len(r)</cm>
   s = 0
   <b>for</b> i <b>in</b> <gr>range</gr>(n):
      a=l[i]; b=r[i]
      s += <b>max</b>(a, b)
</pre>
<p class="Content2">Сумма будет 33(переменная <i>s</i>). Если бы сумма не делилась на 3, то она бы являлась ответом. Но она делится, значит, одно максимальное число(неважно какое), которое попало в сумму, нужно поменять на минимальное из той же пары – да так поменять, что это минимальное в паре число, должно быть самым минимальным среди всех минимальных(это условие максимально возможной суммы).</p>
<p class="Content2">
<p class="Content2">
<p class="Header3">Поиск нужного минимума</p>
<p class="Content2">В нашем примере, вместо максимального числа 5, нужно использовать 4. Как его найти эффективно?</p>
<p class="Content2">В процессе суммирования находим минимальную разницу между парами, которая не делится на 3:</p>
<pre>
   ...
   min = 10001
   <b>for</b> i <b>in</b> <gr>range</gr>(n):
      ...
      d = <b>abs</b>(a-b)
      <b>if</b>(d%3 != 0) <b>and</b> (d < min):
         min = d
</pre>
<p class="Content2">Единица в последней паре не подойдёт в качестве минимума, потому что оба числа пары равны и от того первое выражение условия даст отрицание.</p>
<p class="Header3">Вывод на экран</p>
<p class="Content2">Переменную <i>min</i> применим, если сумма делится на 3, иначе выведем сумму:</p>
<pre>
   ...
   <b>for</b> i <b>in</b> <gr>range</gr>(n):
      ...
   <b>if</b> s%3==0:
      <b>print</b>(s-min)
   <b>else</b>:
      <b>print</b>(s)
</pre>
<p class="Header3">Полный код на Python</p>
<pre>
   f = <b>open</b>('27.txt')
   n = <b>int</b>(f.readline())
   s = 0
   min = 10001
   <b>for</b> i <b>in</b> <gr>range</gr>(n):
      a,b = <b>map</b>(<b>int</b>,f.readline().split())
      s += <b>max</b>(a,b)
      d = <b>abs</b>(a-b)
      <b>if</b>(d%3 != 0) <b>and</b> (d < min):
         min = d
<cm># вывод на экран</cm>
   <b>if</b> s%3==0:
      <b>print</b>(s-min)
   <b>else</b>:
      <b>print</b>(s)
</pre>
<div class="Header2"><strong>Пример. ЕГЭ 2020 №27 Демо</strong></div>
<p class="Content2">На вход программы поступает последовательность из <i>n</i> целых положительных чисел. Рассматриваются все пары элементов последовательности <i>a<sub>i</sub></i> и <i>a<sub>j</sub></i>, такие что <i>i</i> < <i>j</i> и <i>a<sub>i</sub></i> > <i>a<sub>j</sub></i> (первый элемент пары больше второго; <i>i</i> и <i>j</i>  – порядковые номера чисел в последовательности входных данных). Среди пар, удовлетворяющих этому условию, необходимо найти и напечатать пару с максимальной суммой элементов, которая делится на <i>m</i> = 120. Если среди найденных пар максимальную сумму имеют несколько, то можно напечатать любую из них.</p>
<p class="Content2"><b>Описание входных и выходных данных</b></p>
<p class="Content2">В первой строке входных данных задаётся количество чисел <i>n</i> (2 &#8804; <i>n</i> &#8804; 12 000). В каждой из последующих <i>n</i> строк записано одно целое положительное число, не превышающее 10 000.</p>
<p class="Content2">В качестве результата программа должна напечатать элементы искомой пары. Если таких пар несколько, можно вывести любую из них. Гарантируется, что хотя бы одна такая пара в последовательности есть.</p>
<p class="Content2"><i>Пример входных данных:</i></p>
<p class="Content2">6</br>60</br>140</br>61</br>100</br>300</br>59</p>
<p class="Content2"><i>Пример выходных данных для приведённого выше примера входных данных:</i></p>
<p class="Content2">140 100</p>
<p class="Content2"><i>Пояснение.</i>Из шести заданных чисел можно составить три пары, сумма элементов которых делится на m=120: 60+300, 140+100 и 61+59. Во второй и третьей из этих пар первый элемент больше второго, но во второй паре сумма больше.</p>
<p class="Content2">Требуется написать эффективную по времени и памяти программу для решения описанной задачи.</p>
<p class="Header3">Поиск пары</p>
<p class="Content2">Пары будут двух типов: каждый элемент пары не кратный <i>m</i>, а сумма элементов кратна, и каждый элемент пары кратный <i>m</i> – сумма также кратна.</p>
<p class="Content2">Рассмотрим, как искать пару, сумма которой кратна <i>m</i>, но каждый элемент не кратный. Есть правило:</p>
<div id="block10x10center"><img src="wp-content/uploads/informatics/ege-c4_27_02.png" /></div>
<p class="Content2">которое говорит, что если два числа при делении на <i>m</i> дают остатки, сумма которых делится на <i>m</i>, то и сумма чисел делится на <i>m</i>. Например: пусть <i>m</i>=5, <i>a</i>=8 и <i>b</i>=12, тогда:</p>
<div id="block10x10center"><img src="wp-content/uploads/informatics/ege-c4_27_03.png" /></div>
<p class="Content2">Теперь как найти, среди последовательности чисел, пару 8 и 12, сумма которой делится на 5.</p>
<p class="Content2">Удобнее всего через так называемый массив остатков <i>r</i> размером <i>m</i>. На самом деле элементы этого массива – это числа последовательности, а индексы этих элементов – остатки от деления элементов на <i>m</i>. Пусть наши 8 и 12 расположены в такой последовательности: [ 8 14 12 ], тогда массив остатков <i>r</i>[<i>m</i>] будет таким:</p>
<table class=table_10CorierNew>
<tr align="center">
<td width="30">0</td>
<td width="30">0</td>
<td width="30">0</td>
<td width="30">0</td>
<td width="30">0</td>
<td>массив <i>r</i></td>
</tr>
<tr align="center">
<td width="30">0</td>
<td width="30">0</td>
<td width="30">0</td>
<td width="30">0</td>
<td width="30" bgcolor="#b6dde8">14</td>
<td>r[14 % 5]=14</td>
</tr>
<tr align="center">
<td width="30">0</td>
<td width="30">0</td>
<td width="30">0</td>
<td width="30" bgcolor="#b6dde8">8</td>
<td width="30">14</td>
<td>r[8 % 5]=8</td>
</tr>
<tr align="center">
<td width="30">0</td>
<td width="30">0</td>
<td width="30" bgcolor="#b6dde8">12</td>
<td width="30">8</td>
<td width="30">14</td>
<td>r[12 % 5]=12</td>
</tr>
<tr align="center">
<td width="30">[0]</td>
<td width="30">[1]</td>
<td width="30">[2]</td>
<td width="30">[3]</td>
<td width="30">[4]</td>
<td>индексы-остатки </td>
</tr>
</table>
<p class="Content2">Мы ищем пару по индексам: пусть под одним индексом есть ненулевой элемент массива, тогда если мы обнаруживаем, что есть ещё ненулевой элемент, индекс которого даёт сумму с первым индексом кратную 5, то сумма элементов также кратна 5.</p>
<p class="Content2">Как найти 2-й индекс? По <i>m</i> и по 1-му индексу: 2-й индекс = <i>m</i> – 1-й индекс. В нашем случае 2-й индекс это 3, а 1-й – это 2. Всё потому что, когда мы проверяем число 8(индекс 3) - его пара под индексом 2 хранит нулевое значение и поэтому по 3-му индексу пару найти невозможно:</p>
<table class=table_10CorierNew>
<tr align="center">
<td width="30">0</td>
<td width="30">0</td>
<td width="30" bgcolor="#e5b8b7">0</td>
<td width="30" bgcolor="#b6dde8">8</td>
<td width="30">14</td>
<td><i>r</i>[5 - 3] это 0</td>
</tr>
<tr align="center">
<td width="30">[0]</td>
<td width="30">[1]</td>
<td width="30">[2]</td>
<td width="30">[3]</td>
<td width="30">[4]</td>
<td>индексы-остатки </td>
</tr>
</table>
<p class="Content2">Но когда проверяем число 12 (индекс 2) - его пара под индексом 3 хранит не нулевое значение:</p>
<table class=table_10CorierNew>
<tr align="center">
<td width="30">0</td>
<td width="30">0</td>
<td width="30">0</td>
<td width="30">8</td>
<td width="30">14</td>
<td></td>
</tr>
<tr align="center">
<td width="30">0</td>
<td width="30">0</td>
<td width="30" bgcolor="#b6dde8">12</td>
<td width="30" bgcolor="#d9e3bc">8</td>
<td width="30">14</td>
<td><i>r</i>[5 - 2] это 12</td>
</tr>
<tr align="center">
<td width="30">[0]</td>
<td width="30">[1]</td>
<td width="30">[2]</td>
<td width="30">[3]</td>
<td width="30">[4]</td>
<td>индексы-остатки </td>
</tr>
</table>
<p class="Content2">Вот тогда то, мы и находим нужную пару:</p>
<pre> 
   m = 5
   d = [8,14,12] <cm># последовательность</cm>
   r = [0,0,0,0,0] <cm># массив «остатков»</cm>
   <b>for</b> i <b>in</b> <gr>range</gr>(<gr>len</gr>(d)):
      a = d[i] <cm># a удобнее чем d[i]</cm>
      p = a % m
      <b>if</b> r[m-p]>0: <cm># false при a=8, true при a=12</cm> 
         <b>print</b> (r[m-p], " ", a) <cm># 8 12</cm>
      r[p] = a <cm># заполняем массив остатков (пока они различны)</cm>
</pre>
<p class="Header3">Первый больше второго</p>
<p class="Content2">По условию, первый элемент пары должен быть больше, значит наша последовательность - [ 8 14 12 ] - не содержит нужной пары. Поменяем местами 8 и 12 и в условии учтём, что предыдущий сохранённый элемент массива остатков больше чем текущий:</p>
<pre> 
   m = 5
   d = [12,14,8] <cm># последовательность</cm>
   r = [0,0,0,0,0] <cm># массив «остатков»</cm>
   <b>for</b> i <b>in</b> <gr>range</gr>(<gr>len</gr>(d)):
      a = d[i] <cm># a удобнее чем d[i]</cm>
      p = a % m
      <b>if</b> r[m-p]>a: <cm># предыдущий r[m-p] больше текущего a</cm> 
         <b>print</b> (r[m-p], " ", a) <cm># 8 12</cm>
      r[p] = a <cm># заполняем массив остатков (пока они различны)</cm>
</pre>
<p class="Content2">Теперь предыдущая последовательность - в связи с тем, что она неправильная - не будет найдена.</p>
<p class="Header3">Пара с максимальной суммой</p>
<p class="Content2">По условию, нужная пара должна давать максимальную сумму среди всех нужных пар, т.е. пар может быть несколько, а выбрать нужно ту, которая даёт максимальную сумму. Добавим в условие выражение, которое сравнивает сумму текущей пары с парой сохранённой ранее</p>
<p class="Content2">Кроме этого, нужно учесть, что в последовательности может быть не одно число с одним и те же остатком, тогда если оно больше предыдущего, то в массиве остатков меняем предыдущее на текущее. Если остатки разные, то массив остатков будет заполняться, так же как и раньше:</p>
<pre> 
   m = 5
   d = [22,38,8,14,2] <cm># Нужная 38 и 2 среди ещё одной 22 и 8</cm>
   r = [0,0,0,0,0] <cm># массив «остатков»</cm>
   left = 0; right = 0 <cm># элементы нужной пары</cm>
   <b>for</b> i <b>in</b> <gr>range</gr>(<gr>len</gr>(d)):
      a = d[i] <cm># a удобнее чем d[i]</cm>
      p = a % m
      <b>if</b> r[m-p]>a <b>and</b> r[m-p]+a > left+right:
         left = r[m-p]
         right = a
      <b>if</b> a>r[p]: <cm># a > предыдущего с таким же остатком</cm>
         r[p] = a <cm># значит заменим его на a</cm>
   <b>print</b> (l, " ", r) <cm># 38 2</cm>
</pre>
<p class="Content2">Один тип пары мы выбрали, переходим к другому типу – каждый элемент которого кратный <i>m</i>.</p>
<p class="Header3">Пара элементов кратные <i>m</i></p>
<p class="Content2">Случай с одной парой, причём пусть, первый элемент меньше второго(далее исправим): [10, 14, 15]</p>
<pre> 
   m = 5
   d = [5,14,10] <cm># последовательность</cm>
   r = [0,0,0,0,0] <cm># массив «остатков»</cm>
   <b>for</b> i <b>in</b> <gr>range</gr>(<gr>len</gr>(d)):
      a = d[i] <cm># a удобнее чем d[i]</cm>
      p = a % m
      <b>if</b> r[m-p]>0: <cm># false при a=8, true при a=12</cm> 
         <b>print</b> (r[m-p], " ", a) <cm># 8 12</cm>
      r[p] = a <cm># заполняем массив остатков (пока они различны)</cm>
</pre>
<p class="Header3">Первый больше второго(среди кратных <i>m</i>)</p>
<p class="Content2">Поменяем местами 5 и 10, затем изменим условие:</p>
<pre> 
   m = 5
   d = [10,14,5] <cm># последовательность</cm>
   r = [0,0,0,0,0] <cm># массив «остатков»</cm>
   <b>for</b> i <b>in</b> <gr>range</gr>(<gr>len</gr>(d)):
      a = d[i] <cm># a удобнее чем d[i]</cm>
      p = a % m
      <b>if</b> r[0]>a: <cm># предыдущий r[0] больше текущего a</cm> 
         <b>print</b> (r[0], " ", a) <cm># 10 5</cm>
      r[p] = a <cm># заполняем массив остатков (пока они различны)</cm>
</pre>
<p class="Content2">Теперь предыдущая последовательность, в связи с тем, что она неправильная, не будет найдена.</p>
<p class="Header3">Пара с максимальной суммой(среди кратных <i>m</i>)</p>
<p class="Content2">Аналогично соответствующему пункту данной задачи добавим переменные для максимальных элементов пар и изменим условие:</p>
<pre> 
   m = 5
   d = [10,35,5,14,15] <cm># Нужная 35 и 15, ненужная 22 и 8</cm>
   r = [0,0,0,0,0] <cm># массив «остатков»</cm>
   left = 0; right = 0 <cm># элементы нужной пары</cm>
   <b>for</b> i <b>in</b> <gr>range</gr>(<gr>len</gr>(d)):
      a = d[i] <cm># a удобнее чем d[i]</cm>
      p = a % m
      <b>if</b> r[0]>a <b>and</b> r[0]+a > left + right:
         left = r[0]
         right = a
      <b>if</b> a>r[p]: <cm># a > предыдущего с таким же остатком</cm>
         r[p] = a <cm># значит заменим его на a</cm>
   <b>print</b> (l, " ", r) <cm># 35 15</cm>
</pre>
<p class="Content2">Теперь учтём, что может быть два типа пар.</p>
<p class="Header3">Полный код на Python</p>
<pre> 
   d = [10,35,5,14,15,22,38,8,14,2]
   m = 120
   r = [0] * m <cm># числа, которых ищут по остатку</cm>
   left=0; right=0
   n = <gr>len</gr>(d)
   <b>for</b> i <b>in</b> <gr>range</gr>(n):
      a = d[i]
      p = a % m
      <b>if</b> p == 0: <cm># кратные m</cm>
         <b>if</b> r[0] > a <b>and</b> r[0] + a > left+right:
            left = r[0]
            right = a
      <b>else</b>:<cm># не кратные m</cm>
         <b>if</b> r[m-p]>a <b>and</b> r[m-p]+a > left+right:
            left = r[m-p]
            right = a
      <b>if</b> a>r[p]: <cm># a > предыдущего с таким же остатком</cm>
         r[p] = a
   <b>print</b>(l," ",r)
</pre>
<div class="Header2"><strong>Пример. ЕГЭ 2019 №27 Демо</strong></div>
<p class="Content2">На вход программы поступает последовательность из <i>N</i> целых положительных чисел, все числа в последовательности различны. Рассматриваются все пары различных элементов последовательности, находящихся на расстоянии не меньше чем 4 (разница в индексах элементов пары должна быть 4 или более, порядок элементов в паре неважен). Необходимо определить количество таких пар, для которых произведение элементов делится на 29.</p>
<p class="Content2"><b>Описание входных и выходных данных</b></p>
<p class="Content2">В первой строке входных данных задаётся количество чисел <i>N</i> (4 &#8804; <i>N</i> &#8804; 1000). В каждой из последующих <i>N</i> строк записано одно целое положительное число, не превышающее 10 000.</p>
<p class="Content2">В качестве результата программа должна вывести одно число: количество пар элементов, находящихся в последовательности на расстоянии не меньше чем 4, в которых произведение элементов кратно 29.</p>
<p class="Content2"><i>Пример входных данных:</i></p>
<p class="Content2">7</br>58</br>2</br>3</br>5</br>4</br>1</br>29</p>
<p class="Content2"><i>Пример выходных данных для приведённого выше примера входных данных:</i></p>
<p class="Content2">5</p>
<p class="Content2"><i>Пояснение.</i>Из 7 заданных элементов с учётом допустимых расстояний между ними можно составить 6 произведений: 58&#183;4, 58&#183;1, 58&#183;29, 2&#183;1, 2&#183;29, 3&#183;29. Из них на 29 делятся 5 произведений.</p>
<p class="Content2">Требуется написать эффективную по времени и памяти программу для решения описанной задачи.</p>
<p class="Content2">Программа считается эффективной по времени, если при увеличении количества исходных чисел <i>N</i> в <i>k</i> раз время работы программы увеличивается не более чем в <i>k</i> раз.</p>
<p class="Content2">Внимание! Для простоты, вместо деления на 29 будем проверять на чётность.</p>
<p class="Header3">Эффективный алгоритм по времени, но не по памяти</p>
<p class="Content2">Будем умножать конкретное число <b><i>x</i></b> с остальными числами последовательности, которые стоят на расстоянии &#8805; 4 от <b><i>x</i></b>. Следовательно, ближайшие к <b><i>x</i></b> три числа пропускаем мимо. <b><i>x</i></b>.</p>
<p class="Content2">Закрасим ненужные 3 числа красным, <b><i>x</i></b> – зелёным, а умножаемые с <b><i>x</i></b>–ом числа – синим цветом.</p>
<p class="Content2">Может быть два случая:</p>
<ol class="align_justify">
<li><b><i>x</i></b> – чётный</li>
<li><b><i>x</i></b> – нечётный</li>
</ol>
<p class="Content2"><b>Тогда суммируем либо все синие числа(случай 1), либо только те синие, которые делятся на 2 (случай 2).</b></p>
<p class="Content2">В 1-м случае кол-во чётных результатов будет равно кол-ву произведений <b><i>x</i></b>–а с числами синего цвета:</p>
<p class="Content2">шаг 1</p>
<table class=table_10CorierNew>
<tr align="center">
<td width="30" bgcolor="#b8cce4">8</td>
<td width="30" bgcolor="#e5b8b7">3</td>
<td width="30" bgcolor="#e5b8b7">4</td>
<td width="30" bgcolor="#e5b8b7">7</td>
<td width="30" bgcolor="#c2d69b">6</td>
<td width="30">2</td>
<td width="30">1</td>
<td width="30">4</td>
</tr>
</table>
<p class="Content2">одно произведение: 6 * 8, здесь <b><i>x</i></b> = 6, он на 5-ом месте последовательности (нумерация с 1)</p>
<p class="Content2">шаг 2</p>
<table class=table_10CorierNew>
<tr align="center">
<td width="30" bgcolor="#b8cce4">8</td>
<td width="30" bgcolor="#b8cce4">3</td>
<td width="30" bgcolor="#e5b8b7">4</td>
<td width="30" bgcolor="#e5b8b7">7</td>
<td width="30" bgcolor="#e5b8b7">6</td>
<td width="30" bgcolor="#c2d69b">2</td>
<td width="30">1</td>
<td width="30">4</td>
</tr>
</table>
<p class="Content2">два произведения: 2 * 8 и 2 * 3, здесь <b><i>x</i></b> = 2, он на 2-ом месте последовательности</p>
<p class="Content2">шаг 4</p>
<table class=table_10CorierNew>
<tr align="center">
<td width="30" bgcolor="#b8cce4">8</td>
<td width="30" bgcolor="#b8cce4">3</td>
<td width="30" bgcolor="#b8cce4">4</td>
<td width="30" bgcolor="#b8cce4">7</td>
<td width="30" bgcolor="#e5b8b7">6</td>
<td width="30" bgcolor="#e5b8b7">2</td>
<td width="30" bgcolor="#e5b8b7">1</td>
<td width="30" bgcolor="#c2d69b">4</td>
</tr>
</table>
<p class="Content2">четыре произведения: 4 * 8, 4 * 3, 4 * 4, 4 * 7, здесь <b><i>x</i></b> = 4, он на 8-ом месте последовательности</p>
<p class="Content2">В 2-м случае кол-во чётных результатов будет равно только кол-ву чётных синих чисел:</p>
<p class="Content2">шаг 3</p>
<table class=table_10CorierNew>
<tr align="center">
<td width="30" bgcolor="#b8cce4">8</td>
<td width="30" bgcolor="#b8cce4">3</td>
<td width="30" bgcolor="#b8cce4">4</td>
<td width="30" bgcolor="#e5b8b7">7</td>
<td width="30" bgcolor="#e5b8b7">6</td>
<td width="30" bgcolor="#e5b8b7">2</td>
<td width="30" bgcolor="#c2d69b">1</td>
<td width="30">4</td>
</tr>
</table>
<p class="Content2">два произведения: 1*8 и 1*4, здесь <b><i>x</i></b> = 1, он на 7-ом месте последовательности</p>
<p class="Content2">Для 1-го случая считать чётные произведения будет разница положения <b><i>x</i></b>–а и кол-во розовых чисел:</p>
<pre>
   count = count + x – 3
</pre>
<p class="Content2">Для 2-го случая понадобится переменная, которая считает чётные синие числа</p>
<pre>
   count = count + b <cm>;где b уже знает сколько чётных синих</cm>
</pre>
<p class="Content2">Остаётся считать кол-во чётных синих чисел:</p>
<pre>
   b = b + 1
</pre>
<p class="Content2">Полный код на Python</p>
<pre>
   d = 4 <cm>#расстояние до ближайшего нужного числа</cm>
   a = [8,3,4,7,6,2,1,4]
   n = len(a)
   count = 0 <cm>#кол-во чётных пар всего</cm>
   b = 0 <cm>#кол-во чётных синих чисел</cm>
   for i in range(d,n): <cm>#прицеливаемся на x=6</cm>
      if a[i-d]%2 == 0:
         b += 1
      if a[i]%2 == 0: <cm>#x делится на то что нужно?</cm>
         count += i-d+1 <cm>#count=count+x-3</cm>
      else:
         count += b
   print(count)
</pre>
<div class="Header2"><strong>Пример. ЕГЭ 2018 №27 Демо</strong></div>
<p class="Content2">На  вход  программы  поступает  последовательность  из  <i>N</i>  целых  положительных  чисел,  все  числа  в  последовательности  различны.  Рассматриваются  все  пары  различных  элементов  последовательности  (элементы  пары  не  обязаны  стоять  в  последовательности  рядом, порядок  элементов в  паре не важен). Необходимо определить количество пар, для  которых произведение элементов делится на 26.</p>
<p class="Content2"><b>Описание входных и выходных данных</b></p>
<p class="Content2">В первой строке входных данных задаётся количество чисел <i>N</i> (4 &#8804; <i>N</i> &#8804; 1000). В каждой из последующих <i>N</i> строк записано одно целое положительное число, не превышающее 10 000. В качестве результата программа должна напечатать одно число: количество  пар, в которых произведение элементов кратно 26.</p>
<p class="Content2"><i>Пример входных данных:</i></p>
<p class="Content2">4</br>2</br>6</br>13</br>39</p>
<p class="Content2"><i>Пример выходных данных для приведённого выше примера входных данных:</i></p>
<p class="Content2">4</p>
<p class="Content2"><i>Пояснение.</i>Из  четырёх  заданных  чисел  можно  составить 6 попарных  произведений: 2&#183;6, 2&#183;13, 2&#183;39, 6&#183;13, 6&#183;39, 13&#183;39 (результаты: 12, 26, 78, 78, 234,  507).  Из  них  на 26 делятся 4 произведения (2&#183;13=26; 2&#183;39=78; 6&#183;13=78;  6&#183;39=234).</p>
<p class="Content2">Требуется написать эффективную по времени и по памяти программу для решения описанной задачи.</p>
<p class="Content2">Программа считается эффективной по времени, если при увеличении количества исходных чисел <i>N</i> в <i>k</i> раз время работы программы увеличивается не более чем в <i>k</i> раз.</p>
<p class="Header2">Решение</p>
<p class="Content2">Пример входных данных неудачный: он не содержит чисел 26, поэтому мы не можем учесть такие пары, в которых либо ОБА элемента делятся на 26, либо ТОЛЬКО ОДИН. Пусть будет такая последовательность: 26 3 8 52 78. Из неё получаем неповторяющиеся пары: 26-3, 26-8, 26-52, 26-78, 3-8, 3-52, 3-78, 8-52, 8-78, 52-78. Теперь посчитаем, сколько будет произведений пар, которые делятся на 26.</p>
<p class="Header3">ОБА элемента делятся на 26</p>
<p class="Content2">Если оба элемента делятся на 26, то и их произведения тоже делятся. Из неповторяющихся пар, есть три пары, у которых оба элемента делятся на 26: 26-52, 26-78, 52-78. Формула, которая вычисляет кол-ва таких пар: (n26&#183;(n26-1))/2, где n26 – это количество чисел в последовательности, которые делятся на 26. У нас n26=3(26,52 и 78), значит (3&#183;(3-1))/2=3</p>
<p class="Header3">ТОЛЬКО ОДИН элемент делится на 26</p>
<p class="Content2">Шесть пар, у которых только один элемент делится на 26: 26-3, 26-8, 3-52, 3-78, 8-52, 8-78. Формула, которая вычисляет кол-ва таких пар: n26&#183;(n-n26), где n – это количество чисел в последовательности. У нас n=5, значит 3&#183;(5-3)=6</p>
<p class="Header3">26=2&#183;13</p>
<p class="Content2">Теперь, случай, где элементы не кратны 26, но их произведение дадут число 26. Это число можно получить по двум множителям: 2 и 13. Значит нужно посчитать кол-во пар, у которых один элемент 2, другой 13. Для этого есть формула: n2&#183;n13, где n2 – это кол-во чисел, которые делятся на 2 и n13 – кол-во чисел, которые делятся на 13.</p>
<p class="Header3">Полный код на Python</p>
<pre>
   f = <b>open</b>('2018_27.txt') <cm>#4 2 6 13 39</cm>
   n = <b>int</b>(f.readline())<cm>#n=4</cm>
   n26 = n2 = n13 = 0
   <b>for</b> i <b>in</b> <gr>range</gr>(n):
      x = <b>int</b>(f.readline())
      <b>if</b> x%26 == 0:
         n26 += 1
      <b>elif</b> x%13 == 0:
         n13 += 1
      <b>elif</b> x%2 == 0:
         n2 += 1      
   <b>print</b>((n26*(n26-1))//2+n26*(n-n26)+n2*n13)
</pre>
<div class="Header2"><strong>Пример. ЕГЭ 2016 №27 Демо</strong></div>
<p class="Content2">В  физической  лаборатории  проводится  долговременный  эксперимент   по изучению гравитационного поля Земли. По каналу связи каждую минуту   в лабораторию передаётся положительное целое число – текущее показание  прибора «Сигма 2015». Количество  передаваемых  чисел  в  серии известно   и не превышает 10 000. Все числа не превышают 1000. Временем, в течение  которого происходит передача, можно пренебречь.  Необходимо  вычислить « бета-значение»  серии  показаний  прибора –  минимальное  чётное  произведение  двух  показаний,  между  моментами  передачи  которых  прошло  не  менее 6 минут.  Если  получить  такое  произведение не удаётся, ответ считается равным –1.</p>
<p class="Content2">Напишите программу  для решения  поставленной  задачи,  которая будет  эффективна как по времени, так и по памяти (или хотя бы по одной из этих  характеристик).   Программа  считается  эффективной  по  времени,  если  время  работы  программы пропорционально количеству полученных показаний прибора <i>N</i>,  т.е.  при  увеличении  <i>N</i>  в  <i>k</i>  раз  время  работы  программы  должно  увеличиваться не более чем в <i>k</i> раз.  Программа  считается  эффективной  по  памяти,  если  размер  памяти,  использованной  в программе для хранения  данных, не  зависит от  числа <i>N</i>  и не превышает 1 килобайта.</p>
<p class="Content2">Входные  данные  представлены  следующим  образом.  В  первой  строке  задаётся число <i>N</i> – общее количество показаний прибора. Гарантируется, что  <i>N</i> > 6. В каждой из следующих <i>N</i> строк задаётся одно положительное целое  число – очередное показание прибора.</p>
<p class="Content2"><i>Пример входных данных:</i></p>
<p class="Content2">11</br>12</br>45</br>5</br>3</br>17</br>23</br>21</br>20</br>19</br>18</br>17</p>
<p class="Content2">Программа должна вывести одно число – описанное в условии произведение  либо –1, если получить такое произведение не удаётся.</p>
<p class="Content2"><i>Пример выходных данных для приведённого выше примера входных данных: 54</i></p>
<p class="Header2">Решение</p>
<p class="Content2">Пусть для простоты расстояние будет не 6, а 3, и возьмём небольшие числа: 6 1 3 5 7 9 2 4 8. После того как составим алгоритм заменим 3 на 6.</p>
<p class="Header3">Множители на расстоянии</p>
<p class="Content2">Сохраним 1-ые 3 элемента входных данных в массив. Затем настроимся к оставшимся числам последовательности:</p>
<pre>
   a = [6 1 3 5 7 9 2 4 8]
   m = [6 1 3] <cm># сохраняем первые 3</cm> 
   <b>for</b> i <b>in</b> <gr>range</gr>(3,n):<cm># i = [3..n)</cm>
</pre>
<p class="Content2">Получилась заготовка для обращений чисел, расположенных на расстоянии трёх элементов. Элементы массива <i>m</i> выделены синим цветом, а нужные элементы массива <i>a</i> – зелёным.</p>
<table class=table_10CorierNew>
<tr align="center">
<td width="30" bgcolor="#b8cce4">6</td>
<td width="30" bgcolor="#b8cce4">1</td>
<td width="30" bgcolor="#b8cce4">3</td>
<td width="30" bgcolor="#c2d69b">5</td>
<td width="30" bgcolor="#c2d69b">7</td>
<td width="30" bgcolor="#c2d69b">9</td>
<td width="30" bgcolor="#c2d69b">2</td>
<td width="30" bgcolor="#c2d69b">4</td>
<td width="30" bgcolor="#c2d69b">8</td>
</tr>
</table>
<p class="Header3">Умножение</p>
<p class="Content2">Схема умножения для первых трёх шагов:</p>
<table class=table_10CorierNew>
<tr align="center">
<td width="30" bgcolor="#b8cce4">6</td>
<td width="30">1</td>
<td width="30">3</td>
<td width="30" bgcolor="#c2d69b">5</td>
<td width="30">7</td>
<td width="30">9</td>
<td width="30">2</td>
<td width="30">4</td>
<td width="30">8</td>
</tr>
</table>
<table class=table_10CorierNew>
<tr align="center">
<td width="30">6</td>
<td width="30" bgcolor="#b8cce4">1</td>
<td width="30">3</td>
<td width="30">5</td>
<td width="30" bgcolor="#c2d69b">7</td>
<td width="30">9</td>
<td width="30">2</td>
<td width="30">4</td>
<td width="30">8</td>
</tr>
</table>
<table class=table_10CorierNew>
<tr align="center">
<td width="30">6</td>
<td width="30">1</td>
<td width="30" bgcolor="#b8cce4">3</td>
<td width="30">5</td>
<td width="30">7</td>
<td width="30" bgcolor="#c2d69b">9</td>
<td width="30">2</td>
<td width="30">4</td>
<td width="30">8</td>
</tr>
</table>
<p class="Content2">Перед умножением элемента массива <i>m</i>, проверим его на минимум и сохраним его в <i>minx</i>:</p>
<pre>   …
   minx = 1001   
   <b>for</b> i <b>in</b> <gr>range</gr>(3,n):<cm># a[3] = 5</cm>
      <b>if</b> m[i%3] < minx: <cm>#[3%3]=0, [4%3]=1, [5%3]=2</cm>
         minx = m[i%3]
</pre>
<p class="Content2">На третьем шаге в <i>minx</i> будет 1 – это значит, что не нужно беспокоиться о «пропущенном» произведении: 6*7, 6*9… – раз нужно минимальное произведение, то проверять произведения 6-ки со всеми кроме ближайших по условию не нужно.</p>
<p class="Content2">Теперь умножаем числа расположенные на расстоянии 3-х элементов:</p>
<pre>   …
   x = a[i] # a[i] = 5
   p = minx * x	 
</pre>
<p class="Content2">Проверим произведение на минимум и чётность:</p>
<pre>   …
      <b>if</b> (p%2==0 <b>and</b> p < minp):
         minp = p
</pre>
<p class="Content2"><i>minp</i> – хранит минимальное чётное произведение, которое будет результатом</p>
<p class="Header3">Следующее умножение</p>
<p class="Content2">Теперь самое интересное.  В конце цикла заменяем текущий элемент массива <i>m</i>, на <i>x</i>, т.о., за три шага  создаём следующую тройку для произведения:</p>
<pre>   …
      m[i%3] = x <cm># при i=3, m[0] = 5</cm>	 
</pre>
<table class=table_10CorierNew>
<tr align="center">
<td width="30" bgcolor="#e5b8b7">5</td>
<td width="30" bgcolor="#b8cce4">1</td>
<td width="30">3</td>
<td width="30">5</td>
<td width="30" bgcolor="#c2d69b">7</td>
<td width="30">9</td>
<td width="30">2</td>
<td width="30">4</td>
<td width="30">8</td>
</tr>
</table>
<p class="Content2">Т.е. когда, на втором шаге, будут умножаться 1 на 7 –  в первом элементе массива <i>m</i> вместо 6 будет значение 5, которое через два шага будет умножаться на 2, и т.д. Так, выделены красным элементы массива <i>m</i> после трёх шагов цикла:</p>
<table class=table_10CorierNew>
<tr align="center">
<td width="30" bgcolor="#e5b8b7">5</td>
<td width="30" bgcolor="#e5b8b7">7</td>
<td width="30" bgcolor="#e5b8b7">9</td>
<td width="30">5</td>
<td width="30">7</td>
<td width="30">9</td>
<td width="30" bgcolor="#c2d69b">2</td>
<td width="30" bgcolor="#c2d69b">4</td>
<td width="30" bgcolor="#c2d69b">8</td>
</tr>
</table>
<p class="Content2">Теперь полный код, в котором заменено значение 3 на 6</p>
<p class="Header3">Полный код на Python</p>
<pre> 
  a=[12,45,5,3,17,23,21,20,19,18,17]
  n=len(a) <cm># n=11</cm>
  m=[0]*6
  minp=1000001;minx=1001
  <b>for</b> i <b>in</b> <gr>range</gr>(6):
     m[i]=a[i]

  <b>for</b> i <b>in</b> <gr>range</gr>(6,n):
     <b>if</b> m[i%6] < minx:
        minx=m[i%6]
     x=a[i]
     p=minx*x
     <b>if</b>(p%2==0 <b>and</b> p < minp):
        minp=p
     m[i%6]=x
<cm># если ни одного произведения не нашлось, то выведем -1</cm>
  <b>if</b> minp == 1000001:
     <b>print</b> (-1)
  <b>else</b>:
     <b>print</b>(minp) 
</pre>
]]></content:encoded>
			<wfw:commentRss>http://kshu.su/?feed=rss2&#038;p=248</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ЕГЭ 2011 С4</title>
		<link>http://kshu.su/?p=214</link>
		<comments>http://kshu.su/?p=214#comments</comments>
		<pubDate>Wed, 25 May 2022 15:35:05 +0000</pubDate>
		<dc:creator><![CDATA[Kirill Schurakhtenkov]]></dc:creator>
				<category><![CDATA[Информатика]]></category>

		<guid isPermaLink="false">http://kshu.su/?p=214</guid>
		<description><![CDATA[Программы, которые эффективно используют память: выбор лучших учеников по набранным баллам, кодирование файловых строк. 10 вариантов задач за 2011 год. Они обозначались как С4 Пример. ЕГЭ 2011 С4 Вариант 1 После единых выпускных экзаменов по информатике в район пришла информация о том, какой ученик, какой школы сколько набрал баллов. Эта информация в том же виде [&#8230;]]]></description>
				<content:encoded><![CDATA[<p class="Content2">Программы, которые эффективно используют память: выбор лучших учеников по набранным баллам, кодирование файловых строк. 10 вариантов задач за 2011 год. Они обозначались как С4</p>
<p><span id="more-214"></span>	</p>
<div class="Header2"><strong>Пример. ЕГЭ 2011 С4 Вариант 1</strong></div>
<p class="Content2">После единых выпускных экзаменов по информатике в район пришла информация о том, какой ученик, какой школы сколько набрал баллов. Эта информация в том же виде была разослана в школы.</p>
<p class="Content2">Завуч школы № 50 решила наградить двух учащихся, которые лучше всех в школе сдали информатику.</p>
<p class="Content2">Программа должна вывести на экран фамилии и имена этих учеников.</p>
<p class="Content2">Если наибольший балл набрало больше двух человек – вывести количество таких учеников.</p>
<p class="Content2">Если наибольший балл набрал один человек, а следующий балл набрало несколько человек &#8212; нужно вывести только фамилию и имя лучшего.</p>
<p class="Content2">Напишите эффективную, в том числе и по используемой памяти, программу (укажите используемую версию языка   программирования, например Borland Pascal 7.0), которая должна вывести на экран требуемую информацию. Известно, что информатику сдавало больше 5-ти учеников школы № 50.</p>
<p class="Content2">На вход программе сначала  подаётся число учеников, сдававших экзамен. В каждой из следующих N строк находится информация об учениках в формате:</p>
<p class="Content2Center"><Фамилия> <Имя> <Номер школы> <Количество баллов></p>
<p class="Content2">где <Фамилия> &#8212; строка, состоящая не  более чем из 30 символов без пробелов, <Имя> &#8212; строка, состоящая не более, чем из 20 символов без пробелов, <Номер школы> &#8212; целое число в диапазоне от 1 до 99, <Количество баллов> &#8212; целое число в диапазоне от 1 до 100. Эти данные записаны через пробел, причём ровно один между каждой парой (то есть, всего по три пробела в каждой  строке).</p>
<p class="Content2">Пример входной строки:<br/>Иванов Иван 50 87<br/>Пример выходных данных:<br/>Круглов Василий Тарасова Дарья<br/>Другой вариант выходных данных:<br/>7<br/>Третий вариант выходных данных:<br/>Гусарский Илья</p>
<p class="Content2">
<p class="Header2">Решение:</p>
<p class="Content2">Нужно, из множества всех учеников получить подмножество учеников конкретной школы(№50). Далее в этом подмножестве выбрать лучших учеников. Эффективная программа должна реализовать этот сложный отбор одним циклом:</p>
<pre>	
	<ps>Цикл по всем ученикам
		Если ученик из 50-й школы то	
			Выбор лучших</ps>
	</pre>
<p class="Header3">Выбор лучших</p>
<p class="Content2">Введём переменные:</p>
<p class="Content2">max1 – максимальный бал или максимум,</p>
<p class="Content2">max2 – второй максимум,</p>
<p class="Content2">ball – текущий бал ученика 50-й школы.</p>
<p class="Content2">Выбор лучших – это алгоритм с вложенным ветвлением. Для простоты рассмотрим его по частям. Их четыре:</p>
<ol class="align_justify">
<li>Пусть есть возрастающая последовательность чисел, например, такая [1 2 3 4 5]: один максимум(5) и один второй максимум(4). Тогда алгоритм можно написать так:</li>
</ol>
<pre><ps>
	max1 = max2 =-1
	цикл для всех из 50-й школы
		если ball > max1 то
			max2 = max1
			max1 = ball</ps>
	</pre>
<ol class="align_justify" start="2">
<li>Теперь случай, где два одинаковых максимума(5): [1 5 3 4 5]. Добавим новую ветку условия:</li>
</ol>
<pre><ps>
	max1 = max2 =-1
	цикл для всех из 50-й школы
		если ball > max1 то
			max2 = max1
			max1 = ball</ps>
		иначе если ball = max1 то
			max2 = ball			
	</pre>
<p class="Content2">т.е. max1 и max2 содержат одинаковые значения.</p>
<ol class="align_justify" start="3">
<li>Второй максимум(4) правее максимума(5): [1 5 3 4 2]. Добавим третью ветку условия:</li>
</ol>
<pre><ps>
	max1 = max2 =-1
	цикл для всех из 50-й школы
		если ball > max1 то
			max2 = max1
			max1 = ball
		иначе если ball = max1 то
			max2 = ball</ps>
		иначе если ball = max2 то
			max2 = ball
	</pre>
<p class="Content2">(во 2-м и 3-м условиях стоят одинаковые операторы – можно было бы написать одно сложное условие, однако далее операторы будут меняться).</p>
<ol class="align_justify" start="4">
<li>Последний случай. Количество вторых максимумов(4) может быть более одного: [1 5 4 2 4]; здесь также добавляем условие, в котором подсчитывается их количество.</li>
</ol>
<p class="Content2">Наконец, количество максимумов(5) может быть  более двух [1 5 2 5 5] – их также нужно подсчитывать. Добавим для них переменные и дополним алгоритм:</p>
<p class="Content2">n1 – количество максимумов,</p>
<p class="Content2">n2 – количество вторых максимумов.</p>
<pre><ps>
	max1 = max2 =-1</ps>
	n1 = n2 = 0<ps>
	цикл для всех из 50-й школы
		если ball > max1 то
			max2 = max1
			max1 = ball</ps>
			n2 = n1
			n1 = 1<ps>
		иначе если ball = max1 то
			max2 = ball
			</ps>n1 = n1 + 1<ps>
		иначе если ball = max2 то
			max2 = ball
			</ps>n2 = 1
		иначе если ball = max2 то
			n2 = n2 + 1
	</pre>
<p class="Content2">Обратим внимание на строку <i>n2=n1</i>. Здесь в <i>n1</i> сохранено количество «бывших» максимумов: оно может быть либо 1, либо больше 1. И ещё, оператор последнего условия не содержит присваивания переменной <i>max2</i>, дело в том, что в <i>max2</i> уже было присвоено значение.</p>
<p class="Header3">Имена</p>
<p class="Content2">Осталось добавить имена учеников:</p>
<p class="Content2">s – фамилия и имя ученика из 50-й школы,</p>
<p class="Content2">s1 – фамилия и имя ученика с максимальным баллом,</p>
<p class="Content2">s2 – фамилия и имя ученика с вторым максимальным баллом.</p>
<pre><ps>
	max1 = max2 =-1
	n1 = n2 = 0</ps>
	s1 = s2 = ""<ps>
	цикл для всех из 50-й школы
		</ps>s = Ф. И. ученика из 50-й школы<ps>
		если ball > max1 то
			max2 = max1
			max1 = ball
			n2 = n1
			n1 = 1</ps>
			s2 = s1
			s1 = s<ps>
		иначе если ball = max1 то
			max2 = ball
			n1 = n1 + 1
			</ps>s2 = s<ps>
		иначе если ball = max2 то
			max2 = ball
			n2 = 1
			</ps>s2 = s<ps>
		иначе если ball = max2 то
			n2 = n2 + 1</ps>
	</pre>
<p class="Content2">Аналогично, оператор последнего условия не содержит присваивания имени потому, что ранее оно уже было присвоено корректным значением.</p>
<p class="Content2">
<p class="Header3">Вывод результатов</p>
<p class="Content2">Двое лучших – это либо два одинаковых максимальных балла, либо один максимум и один второй максимум. Один лучший – это когда один победитель, а количество вторых максимумов более одного. В остальных случаях получим вывод, в котором количество максимумов – больше двух:</p>
<pre><ps>
	если n1==1 и n2==1 или n1==2 то
		печать s1, s2
	иначе если n1==1 и n2>1 то
		печать s1
	иначе
		печать n1</ps>
</pre>
<p class="Header3">Цикл по всем ученикам</p>
<p class="Content2">Переходим на Python. Найдём количество учеников из всех школ. Если данные нашей задачи хранятся в файле, то первая строка файла содержит это значение. Вот как можно подключиться к файлу, а затем извлечь всех учеников в переменную <i>N</i>:</p>
<pre>
	f = <gr>open</gr>("имяфайла.txt", encoding='utf-8', mode="r")
	N = f.readline()
	</pre>
<p class="Content2"><i>N</i>, нам понадобится для организации цикла по всем ученикам:</p>
<pre>
	<b>for</b> i <b>in</b> <gr>range</gr>(<gr>int</gr>(N))
</pre>
<p class="Header3">Ученик из 50-й школы</p>
<p class="Content2">После N идут строки со значениями, значения разделены пробелом. Функция split разбивает каждую прочитанную строку в массив подстрок:</p>
<pre>
	array = f.readline().split()
</pre>
<p class="Content2">Откуда: <i>array[0]</i> – первая подстрока с фамилией, <i>array[1]</i> – вторая подстрока с именем, <i>array[2]</i> – номер школы и наконец, <i>array[3]</i> – набранный балл. Теперь проверить 50-ую школу можно так:</p>
<pre>
	school = <gr>int</gr>(array[2])
	<b>if</b> school == 50:
</pre>
<p class="Content2">Фамилия и имя получается сложением:</p>
<pre>
	s = array[0] + " " + array[1]
</pre>
<p class="Content2">Полный код на Python</p>
<pre>
  f = <gr>open</gr>("11C4v01.txt", encoding='utf-8', mode="r")
  n = <gr>int</gr>(f.readline())
  max1 = max2 = -1
  n1 = n2 = 0
  s1 = s2 = ""
  <b>for</b> i <b>in</b> <gr>range</gr>(n):
      a = f.readline().split()
      <cm>#a[0] - Фамилия</cm>
      <cm>#a[1] - Имя</cm>
      <cm>#a[2] - номер школы [1..99]</cm>
      <cm>#a[3] - балл ученика(цы)</cm>
      s = a[0] + " " + a[1]
      school = <gr>int</gr>(a[2])
      ball = <gr>int</gr>(a[3])
      <b>if</b> school == 50:
          <b>if</b> ball > max1:
              max2 = max1
              max1 = ball
              n2 = n1
              n1 = 1
              s2 = s1
              s1 = s
          <b>elif</b> ball == max1:
              max2 = ball
              n1 += 1 
              s2 = s
          <b>elif</b> ball > max2:
              max2 = ball
              n2 = 1
              s2 = s
          <b>elif</b> ball == max2:
              n2 += 1
  <cm># Вывод результатов</cm>
  <b>if</b> n1==1 <b>and</b> n2==1 <b>or</b> n1==2:
      <gr>print</gr> (s1, " ",s2)
  <b>elif</b> n1==1 <b>and</b> n2>1:
      <gr>print</gr>(s1)
  <b>else</b>:
      <gr>print</gr>(n1)
  f.close()
</pre>
<div class="Header2"><strong>Пример. ЕГЭ 2011 С4 Вариант 2</strong></div>
<p class="Content2">После единых выпускных экзаменов по информатике в район пришла информация о том, какой ученик, какой школы сколько набрал баллов.</p>
<p class="Content2">Районный методист решила выяснить номер школы, ученики которой набрали наибольший средний балл, с точностью до целых.</p>
<p class="Content2">Программа должна вывести на экран номер такой школы и её средний балл.</p>
<p class="Content2">Если наибольший средний балл набрало больше одной школы — вывести количество таких школ.</p>
<p class="Content2">Напишите эффективную, в том числе и по используемой памяти, программу (укажите используемую версию языка программирования, например, Borland Pascal 7.0), которая должна вывести на экран требуемую информацию. Известно, что информатику сдавало больше 5-ти учеников района. Также известно, что в районе школы с некоторыми номерами не существуют.</p>
<p class="Content2">На вход программе сначала подаётся число учеников, сдававших экзамен. В каждой из следующих N строк находится информация об учениках в формате:</p>
<p class="Content2Center"><Фамилия> <Имя> <Номер школы> <Количество баллов></p>
<p class="Content2">где <Фамилия> — строка, состоящая не более, чем из 30 символов без пробелов, <Имя> — строка, состоящая не более, чем из 20 символов без пробелов, <Номер школы> — целое число в диапазоне от 1 до 99, <Количество баллов> — целое число диапазоне от 1 до 100. Эти данные записаны через пробел, причём ровно один между каждой парой (то есть, всего по три пробела в каждой строке).</p>
<p class="Content2">Пример входной строки:</br>Иванов Иван 50 87</br>Пример выходных данных:</br>50 74</br>Другой вариант выходных данных:</br>7</p>
<p class="Header2">Решение:</p>
<p class="Header3">Сумма баллов</p>
<p class="Content2">Пусть количество школ 3, а количество учеников 6 (N=6). И пусть будут такими номера школ и баллы учеников:</p>
<p class="Content3">2 6</p>
<p class="Content3">3 15</p>
<p class="Content3">1 8</p>
<p class="Content3">2 10</p>
<p class="Content3">3 9</p>
<p class="Content3">2 7</p>
<p class="Content2">Просуммировать баллы по каждой школе удобно с помощью массива, размер которого равен количеству школ:</p>
<table class=table_11Tahoma_noBorder>
<tr align="center">
<td width="120">школа №1</td>
<td width="120">школа №2</td>
<td width="120">школа №3</td>
</tr>
</table>
<table class=table_11Tahoma>
<tr align="center">
<th width="120">0</td>
<th width="120">0</td>
<th width="120">0</td>
</tr>
</table>
<table class=table_11Tahoma_noBorder>
<tr align="center">
<td width="120">+</td>
<td width="120">+</td>
<td width="120">+</td>
</tr>
<tr align="center">
<td>8</td>
<td>6</td>
<td>15</td>
</tr>
<tr align="center">
<td></td>
<td>+</td>
<td>+</td>
</tr>
<tr align="center">
<td></td>
<td>10</td>
<td>9</td>
</tr>
<tr align="center">
<td></td>
<td>+</td>
<td></td>
</tr>
<tr align="center">
<td></td>
<td>7</td>
<td></td>
</tr>
</table>
<p class="Content2">Получаем такой массив после суммирования:</p>
<table class=table_11Tahoma>
<tr align="center">
<th width="120">8</td>
<th width="120">23</td>
<th width="120">24</td>
</tr>
</table>
<p class="Content2">Алгоритм суммирования массива баллов:</p>
<pre><ps>
	Цикл для i от 0 до 5 учеников
		m = № школы из i-й строки данных
		ball = балл ученика m-й школы
		sum[m] = sum[m] + ball</ps>
	</pre>
<p class="Content2">Данные массива <i>sum</i> после выполнения алгоритма:</p>
<p class="Content3">sum[0]=8</p>
<p class="Content3">sum[1]=23</p>
<p class="Content3">sum[2]=24</p>
<p class="Header3">Средний бал</p>
<p class="Content2">Средний балл = сумма баллов школы/количество учеников школы.</p>
<p class="Content2">где числитель – это массив из пункта <i>Сумма баллов</i>, а знаменатель – это ещё один массив такого же размера, только каждый элемент этого массива – это количество учеников в конкретной школе. Другими словами, знаменатель – это количество плюсов на схеме из пункта <i>Сумма баллов</i>. Значит, во время суммирования баллов каждой школы, увеличиваем на 1 <i>i</i>-й элемент второго массива:</p>
<pre><ps>
	Цикл для i от 0 до 5 учеников
		m = № школы из i-й строки данных
		ball = балл ученика m-й школы
		sum[m] = sum[m] + ball
		cnt[m] = cnt[m] + 1</ps>
	</pre>
<p class="Content2">Данные массива <i>sum</i> и <i>cnt</i> после выполнения алгоритма:</p>
<p class="Content3">sum[0]=8</p>
<p class="Content3">sum[1]=23</p>
<p class="Content3">sum[2]=24</p>
<p class="Content3">cnt[0]=1</p>
<p class="Content3">cnt[1]=3</p>
<p class="Content3">cnt[2]=2</p>
<p class="Content2">Ну, а теперь вычисление среднего балла. Для этого понадобится ещё один цикл, но уже по школам:</p>
<pre><ps>
	Цикл для i от 0 до 2 школ
		sum[i] = sum[i] / cnt[i]</ps>
	</pre>
<p class="Content2">Данные массива <i>sum</i> после выполнения алгоритма:</p>
<p class="Content3">sum[0]=8</p>
<p class="Content3">sum[1]=7,66</p>
<p class="Content3">sum[2]=12</p>
<p class="Content2">Однако мы не учли отсутствие номеров некоторых школ. Это значит, что массивы <i>sum</i> и <i>cnt</i> где-то содержат нули – будет деление на ноль. Полный код на Python учтёт это.</p>
<p class="Header3">Поиск лучших школ</p>
<p class="Content2">По условию лучших школ может быть либо одна, либо две и более. В первом случае нужно сохранить номер школы и средний балл – это обычный поиск максимума:</p>
<pre><ps>
	max = sum[0] <cm>;сохраняем в max ср.балл школы №1</cm>
	n = 0 <cm>;номер школы, пока 0</cm>
	Цикл для i от 1 до 2 школ <cm>;начинаем со школы №2</cm>
		если sum[i] > max то
			max = sum[i]
			n = i<cm>;сохраняем в n № школы</cm></ps>
	</pre>
<p class="Content2">Во втором случае нужно сохранить количество школ. Это сравнение на равенство среднего балла текущей школы с сохранённым ранее максимальным средним баллом – <i>max</i> :</p>
<pre><ps>
	max = sum[0] <cm>;сохраняем в max ср.балл школы №1</cm>
	n = </ps>кол-во<ps> = 0 <cm>;номер школы и кол-во учеников, пока 0</cm>
	Цикл для i от 1 до 2 школ <cm>;начинаем со школы №2</cm>
		если sum[i] > max то
			max = sum[i]
			</ps>кол-во = 1<ps>
			n = i   <cm>;сохраняем в n № школы</cm>
		</ps>иначе если sum[i] = max то
			кол-во = кол-во + 1
	</pre>
<p class="Content2">Нужно написать эффективную по памяти программу, для этого можно исключить переменную <i>n</i>. Тогда в <i>max</i> сохранять не значение среднего балла первой школы(<i>sum[0]</i>), а индекс самой школы, затем произвести изменения в условном операторе. Это будет сделано в полном коде на Python.</p>
<p class="Header3">Вывод результатов</p>
<p class="Content2">Проверяем количество лучших школ, если лучшая школа одна, то выводим номер школы и её средний балл. В остальных случаях выводим количество:</p>
<pre><ps>
	если кол-во = 1 то
		печать n max
	иначе
		печать кол-во</ps>
	</pre>
<p class="Header3">Полный код на Python</p>
<pre>
  f = <gr>open</gr>("11C4v01.txt", encoding='utf-8', mode="r")
  n = <gr>int</gr>(f.readline())
  nsch = 99 <cm>#кол-во школ [1..99]</cm>
  sum = [0] * nsch <cm># массив суммарных баллов по каждой школе</cm>
  cnt = [0] * nsch <cm># массив количеств учеников в каждой школе</cm>

  <cm>#суммируем баллы и считаем кол-во учеников по каждой школе</cm>
  <b>for</b> i <b>in</b> <gr>range</gr>(n):
    <cm>#a[0] - Фамилия (она не нужна)</cm>
    <cm>#a[1] - Имя (оно не нужно)</cm>
    <cm>#a[2] - номер школы [1..99]</cm>
    <cm>#a[3] - балл ученика(цы)</cm>
      a = f.readline().split()
      isch = <gr>int</gr>(a[2])-1 <cm># isch - [0..98]</cm>
      sum[isch] += <gr>int</gr>(a[3])
      cnt[isch] += 1

  <cm>#средний балл</cm>
  <b>for</b> i <b>in</b> <gr>range</gr>(nsch):
<cm>#из-за отсутствия номеров некоторых школ, избегаем деления на 0</cm>
      <b>if</b> cnt[i]>0:
          sum[i] = sum[i] / cnt[i]

  <cm>#Поиск лучших школ</cm>
  max = 0
  n = 0
  <b>for</b> i <b>in</b> <gr>range</gr>(1,nsch):
      <b>if</b> sum[i] > sum[max]:
          max=i
          n=1
      <b>elif</b> sum[i] == sum[max]:
          n += 1
  
  <cm>#Вывод результатов</cm>
  <b>if</b> n == 1:
      print(max+1," ",sum[max])
  <b>else</b>:
      print(n)
</pre>
<div class="Header2"><strong>Пример. ЕГЭ 2011 С4 Вариант 3</strong></div>
<p class="Content2">После единых выпускных экзаменов по информатике в район пришла информация о том, какой ученик какой школы сколько баллов набрал.</p>
<p class="Content2">Районный методист решила выяснить номера школ, ученики которых набрали средний балл по школе, больший, чем районный средний балл (все средние баллы вычисляются с точностью до целых).</p>
<p class="Content2">Программа должна вывести на экран номера таких школ, в любом порядке.</p>
<p class="Content2">Если такая школа окажется только одна — вывести также средний балл по этой школе, с указанием, что это средний балл.</p>
<p class="Content2">Напишите эффективную, в том числе и по используемой памяти, программу (укажите используемую версию языка программирования, например Borland Pascal 7.0), которая должна вывести на экран требуемую информацию. Известно, что информатику сдавало больше 5-ти учеников района. Также известно, что в районе школы с некоторыми номерами не существуют.</p>
<p class="Content2">На вход программе сначала подаётся число учеников, сдававших экзамен. В каждой из следующих N строк находится информация об учениках в формате:</p>
<p class="Content2Center"><Фамилия><Имя><Номер школы><Количество баллов></p>
<p class="Content2">где <Фамилия> — строка, состоящая не более чем из 30 символов без пробелов, <Имя> — строка, состоящая не более чем из 20 символов без пробелов, <Номер школы> — целое число в диапазоне от 1 до 99, <Количество баллов> — целое число в диапазоне от 1 до 100. Эти данные записаны через пробел, причём ровно один между каждой парой (то есть, всего по три пробела в каждой строке).</p>
<p class="Content2">Пример входной строки:</br>Иванов Иван 50 87</br>Пример выходных данных:</br>5 50 74 87</br>Другой вариант выходных данных:</br>7</br>Средний балл = 74</p>
<p class="Header2">Решение:</p>
<p class="Header3">Средние баллы по району и школе</p>
<p class="Content2">Cр.балл по району = Все баллы / N</p>
<p class="Content2">Средний балл по школе = Сумма баллов по школе / кол-во учеников школы</p>
<p class="Content2">Сумму баллов по школе получаем как в примере 2011 С4 №2: создаём массив <i>sum</i> из 99 элементов(кол-во школ), заносим сумму баллов школы в каждый элемент. Добавим подсчёт кол-ва учеников в массив <i>cnt</i>:</p>
<pre><ps>
	Цикл для i от 0 до N-1
		m = № школы из i-й строки данных
		ball = балл ученика m-й школы
		sum[m] = sum[m] + ball <cm>;суммы баллов по m-ой школе</cm>
		cnt[m] = cnt[m] + 1 <cm>;кол-во учеников m-ой школы</cm>
</ps></pre>
<p class="Content2">Заметим, что вместо вычисления всех баллов, можно просуммировать суммы баллов по школе в отдельную переменную. Тем самым избавиться от лишнего суммирования N раз!</p>
<p class="Content2">Т.к. некоторых номеров школ нет, то соответствующие элементы массивов sum и <i>cnt</i> содержат нули. Для этого нужно следить, чтобы, при вычислении среднего, не было деления на ноль:</p>
<pre><ps>
	avg = 0 <cm>;переменная для всех баллов</cm>
	Цикл для i от 0 до 98 школ
		если sum[i] > 0 то
		avg = avg + sum[i] <cm>;суммируем все баллы</cm>
		sum[i] = sum[i] / cnt[i]  <cm>;средний балл по школе</cm>
</ps></pre>
<p class="Content2">Обратим внимание на две строки условия. Сначала суммируем баллы всех школ. Затем на место суммы баллов по школе, помещаем средний балл по этой же школе – тем самым не создаём лишнюю переменную для среднего значения.</p>
<p class="Content2">Средний балл по району:</p>
<pre><ps>	avg = avg / N</ps></pre>
<p class="Header3">Вывод результатов</p>
<p class="Content2">Вывод номера или номеров школ проведём с помощью сравнения среднего балла по школе со средним баллом по району. Если балл по школе больше балла по району, то выведем её номер:</p>
<pre><ps>
	Цикл для i от 0 до 98 школ
		если sum[i] > avg то
			печать i
</ps></pre>
<p class="Content2">Ну, а если школа единственная, то нужна переменная <i>n</i>, которая посчитает кол-во сравнений и переменная <i>ball</i>, которая сохранит балл этой единственной школы:</p>
<pre>
	m=0<ps>
	Цикл для i от 0 до 98 школ
		если sum[i] > avg то</ps>
			m = m + 1
			ball = sum[i]<ps>	
			печать i</ps>
	если m = 1 то
		печать "Средний балл:" ball			
</pre>
<p class="Header3">Полный код на Python</p>
<pre>
  f = <gr>open</gr>("11C4v01.txt", encoding='utf-8', mode="r")
  n = <gr>int</gr>(f.readline())
  nsch=99 <cm># кол-во школ [1..99]</cm>
  sum = [0] * nsch <cm># массив суммарных баллов по каждой школе</cm>
  cnt = [0] * nsch <cm># массив количеств учеников в каждой школе</cm>

  <cm>#суммируем баллы и считаем кол-во учеников по каждой школе</cm>
  <b>for</b> i <b>in</b> <gr>range</gr>(n):
      <cm>#a[0] - Фамилия (она не нужна)</cm>
      <cm>#a[1] - Имя (оно не нужно)</cm>
      <cm>#a[2] - номер школы [1..99]</cm>
      <cm>#a[3] - балл ученика(цы)</cm>
      a = f.readline().split()
      isch = <gr>int</gr>(a[2])-1 <cm># isch - [0..98]</cm>
      sum[isch] += <gr>int</gr>(a[3])
      cnt[isch] += 1

  <cm>#средний балл по школе</cm>
  avg = 0
  <b>for</b> i <b>in</b> <gr>range</gr>(nsch):
    <b>if</b> cnt[i] > 0:
        avg = avg + sum[i]  <cm># суммируем все баллы</cm>
        sum[i] = sum[i] / cnt[i] <cm># средний балл по школе</cm>

  <cm>#средний балл по району</cm>
  avg /= n

  <cm>#Вывод результатов</cm>
  m = 0
  <b>for</b> i <b>in</b> <gr>range</gr>(nsch):
      <b>if</b> sum[i] > avg:
          m += 1
          ball = sum[i]
          print(i+1, end=' ')
  <b>if</b> m == 1:
      print("Средний балл:",ball)
	
</pre>
<div class="Header2"><strong>Пример. ЕГЭ 2011 С4 Вариант 4</strong></div>
<p class="Content2">После единых выпускных экзаменов по информатике в район пришла информация о том, какой ученик какой школы сколько набрал баллов.</p>
<p class="Content2">Районный методист решила выяснить фамилии учеников, которые набрали наибольший балл, по каждой школе в отдельности, но только если из школы информатику сдавало не меньше трёх человек. Если в школе информатику сдавало меньше трёх человек, информацию по этой школе выводить не нужно. Если наибольший балл в какой-то школе набрали несколько человек, нужно вывести на экран их количество.</p>
<p class="Content2">Программа должна вывести на экран информацию в виде:</p>
<p class="Content2Center"><Номер школы> <Фамилия ученика></p>
<p class="Content2">где <Фамилия> — строка, состоящая не более чем из 30 символов без пробелов, <Имя> — строка, состоящая не более чем из 20 символов без пробелов, <Номер школы> — целое число в диапазоне от 1 до 99, <Количество баллов> — целое число в диапазоне от 1 до 100. Эти данные записаны через пробел, причём ровно один между каждой парой (то есть, всего по три пробела в каждой строке).</p>
<p class="Content2">в отдельной строке для каждой школы.</p>
<p class="Content2">Напишите эффективную, в том числе и по используемой памяти, программу (укажите используемую версию языка программирования, например Borland Pascal 7.0), которая должна вывести на экран требуемую информацию. Известно, что информатику сдавало больше 5-ти учеников района. Также известно, что в районе школы с некоторыми номерами не существуют.</p>
<p class="Content2">На вход программе сначала подаётся число учеников, сдававших экзамен. В каждой из следующих N строк находится информация об учениках в формате:</p>
<p class="Content2Center"><Фамилия> <Имя> <Номер школы> <Количество баллов></p>
<p class="Content2">где <Фамилия> — строка, состоящая не более чем из 30 символов без пробелов, <Имя> — строка, состоящая не более чем из 20 символов без пробелов, <Номер школы> — целое число в диапазоне от 1 до 99, <Количество баллов> — целое число в диапазоне от 0 до 100. Эти данные записаны через пробел, причём ровно один между каждой парой (то есть всего по три пробела в каждой строке).</p>
<p class="Content2">Пример входной строки:</br> Иванов Иван 50 87</br> Пример выходных данных:</br>5 Иванов </br>50 10</br>74 Сидоров</p>
<p class="Header2">Решение:</p>
<p class="Header3">Количество учеников сдававших экзамен в школе</p>
<p class="Content2">Каждая строка данных содержит номер школы, который мы присвоим в переменную <i>m</i>. Эта <i>m</i> будет индексом массива <i>cnt</i>, который будем использовать для хранения кол-ва учеников в школе номером <i>m</i>:</p>
<pre><ps>
    cnt [99] <cm>;кол-во учеников в школе</cm>
    Цикл для i от 0 до N-1 <cm>;цикл по строкам данных</cm>
        m = № школы из i-й строки данных
        <cm>;считаем кол-во учеников в m-й школе</cm>
        cnt[m] = cnt[m] + 1
</ps></pre>
<p class="Content2">Т.о., каждый элемент массива <i>cnt</i> –  это кол-во учеников в школе, номер которой есть индекс элемента</p>
<p class="Header3">Наибольший балл</p>
<p class="Content2">Вспомним пример ЕГЭ 2011 С4 №1, первая часть пункта <i>Выбор лучших</i>. Только здесь понадобится сохранять не одно лучшее значение, а лучшие значения для каждой школы: в массиве <i>bal</i>:</p>
<pre><ps>
    bal [99] <cm>;кол-во учеников в школе</cm>
    Цикл для i от 0 до N-1 <cm>;цикл по строкам данных</cm>
        m = № школы из i-й строки данных
        ball = балл ученика m-й школы
        если ball > bal[m] то
            bal[m] = ball
</ps></pre>
<p class="Header3">Количество лучших учеников</p>
<p class="Content2">Продолжаем воспоминания примера ЕГЭ 2011 С4 №1 второй части пункта <i>Выбор лучших</i>, и добавим вторую ветку нашему алгоритму. В ней, в массиве <i>amt</i>, будем считать количество одинаковых максимальных баллов школы номером <i>m</i>.</p>
<pre><ps>
    bal [99] <cm>;кол-во учеников в школе</cm>
    </ps>amt [99] <cm>;кол-во лучших в школе</cm><ps>
    Цикл для i от 0 до N-1 <cm>;цикл по строкам данных</cm>
        m = № школы из i-й строки данных
        ball = балл ученика m-й школы
        если ball > bal[m] то
            bal[m] = ball
            </ps>amt[m] = 1 <cm>;кол-во лучших в школе m пока 1</cm>
        иначе если ball = bal[m] то
            amt[m] = amt[m] + 1 <cm>;считаем кол-во лучших в школе m</cm>
</pre>
<p class="Header3">Имена</p>
<p class="Content2">Такой же пункт Имена как в примере ЕГЭ 2011 С4 №1, а в нашей задаче нужно учесть только фамилию, если лучший в школе единственный:</p>
<pre><ps>
    bal [99] <cm>;наибольший балл в школе</cm>
    amt [99] <cm>;кол-во лучших в школе</cm>
    </ps>nam [99] <cm>;фамилия одного лучшего в школе</cm>
    <ps>Цикл для i от 0 до N-1
        m = № школы из i-й строки данных
        ball = балл ученика m-й школы
        </ps>s = фамилия ученика m-й школы<ps>
        если ball > bal[m] то
            bal[m] = ball
            amt[m] = 1
            </ps>nam[m] = s<ps>
        иначе если ball = bal[m] то
            amt[m] = amt[m] + 1
</ps></pre>
<p class="Content2">Алгоритмы, которые мы рассмотрели, выполняются в одном цикле. В полном коде мы их объединим в один.</p>
<p class="Header3">Вывод результатов</p>
<p class="Content2">Нужно вывести  два значения: номер школы и либо фамилию, в случае одного лучшего в школе, либо количество лучших, если таковых несколько:</p>
<pre><ps>
	Цикл для i от 0 до 98 школ
        если сnt[i] > 2 то
            если amt[i] = 1 то
                печать i nam[i] <cm>;номер школы и имя лучшего</cm>
            иначе
                печать i amt[i] <cm>;номер школы и кол-во лучших</cm>
</ps></pre>
<p class="Header3">Полный код на Python</p>
<pre><ps>
  f = open("11C4v01.txt", encoding='utf-8', mode="r")
  n = <gr>int</gr>(f.readline())
  nsch = 99 <cm>#кол-во школ [1..99]</cm>
  cnt = [0] * nsch <cm>#кол-во учеников в школе</cm>
  bal = [0] * nsch <cm>#наибольший балл в школе</cm>
  amt = [0] * nsch <cm>#кол-во лучших учеников в школе</cm>
  nam = [''] * nsch <cm>#фамилия одного лучшего в школе</cm>

<cm>#суммируем баллы и считаем кол-во учеников по каждой школе</cm>
  <b>for</b> i <b>in</b> <gr>range</gr>(n):
      <cm>#a[0] - Фамилия</cm>
      <cm>#a[1] - Имя, оно не нужно</cm>
      <cm>#a[2] - номер школы [1..99]</cm>
      <cm>#a[3] - балл ученика(цы)</cm>
     a = f.readline().split()
     m = <gr>int</gr>(a[2])-1 <cm>#isch - [0..98]</cm>
     ball = <gr>int</gr>(a[3])
     <b>if</b>  ball > bal[m]:
        bal[m] = ball
        amt[m] = 1
        nam[m] = a[0]
    <b>else</b>:
        amt[m] += 1
    <cm>#считаем кол-во учеников в m-й школе</cm>
    cnt[m] += 1

<cm>#Вывод результатов</cm>
  m = 0
  <b>for</b> i <b>in</b> <gr>range</gr>(nsch):
     <b>if</b> cnt[i] >= 3:
        <b>if</b> amt[i] == 1:
           print(i+1," ", nam[i])
        <b>else</b>:
           print(i+1, " ", amt[i])
</ps></pre>
<div class="Header2"><strong>Пример. ЕГЭ 2011 С4 Вариант 5</strong></div>
<p class="Content2">После единых выпускных экзаменов по информатике в район пришла информация о том, какой ученик, какой школы сколько баллов набрал.</p>
<p class="Content2">В районе считается подозрительной ситуация, когда в школе более двух учащихся набирают одинаковый наибольший балл по школе.</p>
<p class="Content2">Районный методист решила выяснить номера таких школ.</p>
<p class="Content2">Программа должна вывести номера этих школ, в любом порядке.</p>
<p class="Content2">Если такая школа окажется одна, нужно вывести наибольший балл в этой школе, с указанием того, что это наибольший балл.</p>
<p class="Content2">Если таких школ не окажется, нужно вывести об этом сообщение.</p>
<p class="Content2">Напишите эффективную, в том числе и по используемой памяти, программу, которая должна вывести на экран требуемую информацию. Известно, что информатику сдавало больше 5-ти учеников района. Также известно, что в районе школы с некоторыми номерами не существуют.</p>
<p class="Content2">На вход программе сначала подаётся число учеников, сдававших экзамен. В каждой из следующих N строк находится информация об учениках в формате:</p>
<p class="Content2Center"><Фамилия> <Имя> <Номер школы> <Количество баллов></p>
<p class="Content2">где <Фамилия> — строка, состоящая не более чем из 30 символов без пробелов, <Имя> — строка, состоящая не более, чем из 20 символов без пробелов, <Номер школы> — целое число в диапазоне от 1 до 99, <Количество баллов> — целое число в диапазоне от 0 до 100. Эти данные записаны через пробел, причём ровно один между каждой парой (то есть, всего по три пробела в каждой строке).</p>
<p class="Content2">Пример входной строки:</br>Иванов Иван 50 87</br>Пример выходных данных:</br>5 50 74 87</br>Другой вариант выходных данных:</br>7</br>Наибольший балл = 74</br>Третий вариант выходных данных:</br>Нет таких школ</p>
<p class="Header2">Решение:</p>
<p class="Header3">Поиск максимума в каждой школе и подсчёт их совпадений</p>
<p class="Content2">Подобное было в С4 2011  №1 и №4. Каждая строка данных содержит номер школы, который мы присвоим переменной <i>m</i>. Её значение будет индексом массивов <i>bal</i> и <i>amt</i>. Массив <i>bal</i> хранит наибольший балл школы номером <i>m</i>, а массив <i>amt</i> – кол-во учеников школы номером <i>m</i> с наибольшим баллом:</p>
<pre><ps>
    bal [99] <cm>;наибольший балл в школе</cm>
    amt [99] <cm>;кол-во одинаковых лучших учеников в школе</cm>
    Цикл для i от 0 до N-1 <cm>;по строкам данных</cm>
        m = № школы из i-й строки данных
        ball = балл ученика m-й школы
        если ball > bal[m] то
            bal[m] = ball
            amt[m] = 1
        иначе если ball = bal[m] то
            amt[m] = amt[m] + 1
</ps></pre>
<p class="Header3">Вывод результатов</p>
<p class="Content2">Массивы <i>bal</i> и <i>amt</i> заполнили, теперь посчитаем кол-во «подозрительных» школ: если их несколько, то выведем их номера; если их нет, то выведем сообщение; если она одна, то выведем номер школы и наибольший балл. Подсчёт «подозрительных» школ будем вести в переменную <i>k</i>:</p>
<pre><ps>
    k = 0 <cm>;кол-во подозрительных школ</cm>
    Цикл для i от 0 до 99 ; по всем школам
        если amt[i] > 2 то
            ball = bal[i] <cm>;для случая когда k=1</cm>
            печать i " " <cm>;номер подозрительной школы и пробел</cm>
            k = k + 1
    <cm>;после того как прошлись по школам, рассмотрим два случая</cm>
    если k = 0 то <cm>;когда подозрительных школ нет</cm>
        печать "таких школ нет"
    иначе если k = 1 то <cm>;и когда подозрительная школа одна</cm>
        печать  <cm>;перешли на следующую строку</cm>
        печать "Наибольший балл:" ball
</ps></pre>
<p class="Header3">Полный код на Python</p>
<pre><ps>
  f = open("11C4v01.txt", encoding='utf-8', mode="r")
  n = f.readline()
   nsch = 99 <cm>#кол-во школ [1..99]</cm>
   bal = [0] * nsch <cm>#массив наибольших баллов по каждой школе</cm>
   #массив количеств одинаковых лучших учеников в школе</cm>
   amt = [0] * nsch <cm>

   <cm>#суммируем баллы и считаем кол-во учеников по каждой школе</cm>
   <b>for</b> i <b>in</b> <gr>range</gr>(<gr>int</gr>(n)):  
      <cm>#a[0] - Фамилия (она не нужна)</cm>
      <cm>#a[1] - Имя (оно не нужно)</cm>
      <cm>#a[2] - номер школы [1..99]</cm>
      <cm>#a[3] - балл ученика(цы)</cm>
  
  
  a = f.readline().split()
  m = <gr>int</gr>(a[2])-1 <cm>#m - [0..98]</cm>
  ball = <gr>int</gr>(a[3])

  <b>if</b> ball > bal[m]:
     bal[m] = ball
     amt[m] = 1
  <b>elif</b> ball == bal[m]:
     amt[m] += 1
   <cm>#Вывод результатов</cm>
   k = 0
   <b>for</b> i <b>in</b> <gr>range</gr>(nsch):
   <b>if</b> amt[i] > 2:
       ball = bal[i]
  print(i + 1, end=' ') <cm>#номер подозрительной школы</cm>
  k += 1
   <b>if</b> k == 0:
       print(" Таких школ нет")
   <b>elif</b> k == 1:
       print() <cm>#перешли на следующую строку</cm>
       print("Наибольший балл:", ball)
</ps></pre>
<div class="Header2"><strong>Пример. ЕГЭ 2011 С4 Вариант 6</strong></div>
<p class="Content2">При программировании школьной тестирующей системы по английскому языку выяснилось, что файлы с вопросами к тестам легко доступны и каждый может перед тестом открыть их и заранее узнать вопросы. Было решено закодировать файлы. Для этого придумали следующий алгоритм.</p>
<p class="Content2">Каждая строка файла кодируется отдельно.</p>
<p class="Content2">В каждой строке ищутся отдельные слова, и все символы слова сдвигаются по алфавиту циклически вправо на длину слова.</p>
<p class="Content2">Словом считается любая последовательность подряд идущих символов латинского алфавита, строчных и прописных.</p>
<p class="Content2">Циклический сдвиг символа по алфавиту вправо на X — замена символа на символ, стоящий в алфавите на X позиций дальше. Если при этом происходит выход за пределы алфавита, счёт начинается с начала алфавита.</p>
<p class="Content2">Пример циклического сдвига символов на 3 позиции: буква «Е» превращается в букву «Н», буква «t» — в букву «w» буква «Y» — в букву «В».</p>
<p class="Content2">Напишите эффективную, в том числе и по используемой памяти, программу (укажите используемую версию языка программирования, например Borland Pascal 7.0), которая должна закодировать строку по указанному алгоритму.</p>
<p class="Content2">На вход программе подается строка, состоящая из не более чем 250 символов латинского алфавита, пробелов, знаков препинания, разного рода скобок, кавычек и других символов. Строка заканчивается символом    &#171;#&#187;. Других символов &#171;#&#187; в строке нет.</p>
<p class="Content2">Программа должна вывести закодированную по указанному алгоритму строку.</p>
<p class="Content2">Пример входных данных:</br>Day, mice. &#171;Year&#187; &#8212; a mistake#</br>Пример выходных данных:</br>Gdb, qmgi. &#171;Ciev&#187; &#8212; b tpzahrl#</p>
<p class="Header2">Решение:</p>
<p class="Header3">Длина слова</p>
<p class="Content2">Чтобы сдвинуть символы на длину слова, нужно знать её величину. Посчитаем длину каждого слова строки <i>s</i>:</p>
<pre><ps>
    s = "…" <cm>;строка со словами и другими символами</cm>
    n = длина строки s
    flag = ЛОЖЬ
    Для i от 1 до n <cm>;по каждому символу строки s</cm>
        если s[i] буква то<cm>;буква-не буква</cm>
            если flag то
                len = len + 1
            иначе
                len = 1
                flag = ИСТИНА
</ps></pre>
<p class="Content2">После этого алгоритма значение <i>len</i> будет иметь длину слова, а значение <i>i</i> – позицию последнего символа слова. Так что, в стиле Python –  [(i-len):i] будет слово из массива.</p>
<p class="Header3">Двигаем символы</p>
<p class="Content2">Когда мы достигли последнего символа в слове, самое время сдвинуть каждый его символ:</p>
<pre><ps>
    …
        если s[i] буква то<cm>;буква-не буква</cm>
            …
        иначе
            если flag то
                flag = ЛОЖЬ
                Для k от 1 до len <cm>;по каждому символу слова</cm>
                    если s[i-k] + len  выходит за алфавит то 
                        s[i-k] = s[i-k] + len – 26 
                    иначе 
                        s[i-k] = s[i-k] + len
    печать s 

</ps></pre>
<p class="Content2">Переменная <i>flag</i> отвечает за начало подсчёта символов слова в первой ветке условия –  «буква-не буква», а во второй ветке – за то, чтобы сдвиг символов в слове был только один раз.</p>
<p class="Header3">Полный код на Python</p>
<pre>
   s = "Bike, Zip, Roller, 1345asdfads#"
   total = len(s)
   n = 0
   flag = False

   <b>for</b> i <b>in</b> <gr>range</gr>(total):
      c = s[i]
      <b>if</b> c.isalpha():
         <b>if</b> flag == False:
            len = 1
            flag = True
          <b>else</b>:
             len += 1
      <b>elif</b> flag == True:
         flag = False
         stmp = ""
         <b>for</b> k <b>in</b> <gr>range</gr>(len):
            <cm>#i-len - возврат к первому симолу слова</cm>
            <b>if</b> ord(s[i-len + k].upper()) - ord("A") + len > 25:
               stmp += chr(ord(s[i - len + k]) + len - 26 )
            <b>else</b>:
               stmp += chr(ord(s[i - len + k]) + len )
      <cm>#замена одной подстроки на другую</cm>
      s = s.replace(s[i - len:i], stmp) 

   print (s)
 </pre>
<div class="Header2"><strong>Пример. ЕГЭ 2011 С4 Вариант 7</strong></div>
<p class="Content2">После единых выпускных экзаменов по информатике в район пришла информация о том, какой ученик какой школы сколько баллов набрал. По положению об экзамене каждый район сам определяет, за какой балл нужно поставить какую оценку.</p>
<p class="Content2">Районный методист решила, что оценку «отлично» должны получить 20% участников (целое число, с отбрасыванием дробной части).</p>
<p class="Content2">Для этого она должна определить, какой балл должен был набрать ученик, чтобы получить «отлично».</p>
<p class="Content2">Если невозможно определить такой балл, чтобы «отлично» получили ровно 20% участников, «отлично» должно получить меньше участников, чем 20%.</p>
<p class="Content2">Если таких участников не окажется (наибольший балл набрали больше 20% участников) — эти и только эти ученики должны получить «отлично».</p>
<p class="Content2">Напишите эффективную, в том числе и по используемой памяти, программу (укажите используемую версию языка программирования, например Borland Pascal 7.0), которая должна вывести на экран наименьший балл, который набрали участники, получившие «отлично». Известно, что информатику сдавало больше 5-ти учеников. Также известно, что есть такое количество баллов, которое не получил ни один участник.</p>
<p class="Content2">На вход программе сначала подаётся число учеников, сдававших экзамен. В каждой из следующих N строк находится информация об учениках в формате:</p>
<p class="Content2Center"><Фамилия> <Имя> <Номер школы> <Количество баллов></p>
<p class="Content2">где <Фамилия> — строка, состоящая не более чем из 30 символов без пробелов, <Имя> — строка, состоящая не более чем из 20 символов без пробелов, <Номер школы> — целое число в диапазоне от 1 до 99, <Количество баллов> — целое число в диапазоне от 1до 100. Эти данные записаны через пробел, причём ровно один между каждой парой (то есть всего по три пробела в каждой строке).</p>
<p class="Content2">Пример входных данных:</br>Иванов Иван 50 87</br>Пример выходных данных:</br>78</p>
<p class="Header2">Решение:</p>
<p class="Header3">Количество оценок</p>
<p class="Content2">Посчитаем кол-во каждых оценок:</p>
<pre><ps>
	k[100] <cm>;кол-во оценок</cm>
	Для i от 0 до N-1 <cm>;цикл по строкам данных</cm>
		ball = оценка из i-й строки данных 
		k[ball] = k[ball] + 1 <cm>;считаем кол-во оценок</cm>
</ps></pre>
<p class="Content2">Индекс массива <i>k</i> – это конкретная оценка, а его элемент будет хранить кол-во этих оценок.</p>
<p class="Header3">Количество лучших из 20% участников</p>
<p class="Content2">Критерий – это 20% от N. Если суммировать оценки, например, в переменную <i>s</i>, то можно получить кол-во лучших оценок равное 20% или более</p>
<pre><ps>
	s = 0 <cm>;кол-во оценок</cm>
	i = 99 <cm>;начинаем с самой высокой оценки, её индекс = 99</cm>
	p = N DIV 5 <cm>;p – 20% от N</cm>
	Пока s < p  <cm>;цикл по</cm>
		s = s + k[i]
		i = i – 1 <cm>;спускаемся к следующей оценке</cm>
</ps></pre>
<p class="Content2">После этого цикла <i>i</i> будет содержать значение оценки</p>
<p class="Header3">Возможные варианты</p>
<p class="Content2">Рассмотрим некоторые варианты разного количества лучших оценок. Для простоты, диапазон оценок [1;5].</p>
<ol class="align_justify" start="1">
<li>N=10 (p=2) из них две пятёрки: <i>k</i> = [? ? ? ? 2] или одна пятёрка, и одна четвёрка: <i>k</i> = [? ? ? 1 1]. В 1-м случае нужно вывести оценку 5, а во 2-м – 4. После алгоритма выше, <i>s</i> = 2. Тогда, для нужного вывода, достаточно условия на равенства <i>p</i> с <i>s</i> :</li>
</ol>
<pre><ps>
	s = 0 <cm>;кол-во оценок</cm>
	i = 99 <cm>;начинаем с самой высокой оценки, её индекс = 99</cm>
	p = N DIV 5 <cm>;p – 20% от N</cm>
	Пока s < p  <cm>;цикл по</cm>
		s = s + k[i]
		i = i – 1 <cm>;спускаемся к следующей оценке</cm></ps>
	если s = p то
		печать i<ps>
</ps></pre>
<p class="Content2">аналогично, для N=20 (p=4) получим такие выводы для соответствующих последовательностей:</p>
<p class="Content3"><i>k</i> = [? ? ? ? 4] печать 5</p>
<p class="Content3"><i>k</i> = [? ? ? 3 1] = [? ? ? 2 2] = [? ? ? 1 3] печать 4</p>
<p class="Content3"><i>k</i> = [? ? 2 1 1] = [? ? 2 2 0] = [? ? 2 0 2] печать 3</p>
<p class="Content2">и т. д.</p>
<ol class="align_justify" start="2">
<li>N=20 (p=4) из них три пятёрки и две четвёрки: <i>k</i> = [? ? ? 2 3] или наоборот [? ? ? 3 2]. <i>s</i> = 5, т.е. больше <i>p</i>. По условию нужно выводить либо ровно 20%, либо меньше чем 20%. Тогда для этих двух последовательностей, выводим не четвёрку, а пятёрку. Значит, увеличим <i>i</i> на 1:</li>
</ol>
<pre><ps>
	s = 0 <cm>;кол-во оценок</cm>
	i = 99 <cm>;начинаем с самой высокой оценки, её индекс = 99</cm>
	p = N DIV 5 <cm>;p – 20% от N</cm>
	Пока s < p  <cm>;цикл по</cm>
		s = s + k[i]
		i = i – 1 <cm>;спускаемся к следующей оценке</cm>
	если s = p то
		печать i</ps>
	иначе
		i = i + 1 <cm>;возвращаемся к пятёркам</cm>
		печать i<ps>
</ps></pre>
<p class="Content2">По условию некоторых баллов не набрал никто, например, четвёрок: <i>k</i> = [? ? 2 0 3]. Новый алгоритм выше на выводе даст значение 0. Исключим нулевое/вые вхождения:</p>
<pre><ps>
	иначе
		i = i + 1 <cm>;возвращаемся к пятёркам</cm></ps>
		Пока k[i]=0 <cm>;встретили нулевую оценку</cm>
			i = i + 1 <cm>;уходим от нулевой оценки</cm><ps>
		печать i
</ps></pre>
<ol class="align_justify" start="3">
<li>Последнее, когда одно значение баллов, и оно больше 20%: N=10 (p=2) <i>k</i> = [? ? ? ? 3] печать 5. Здесь значение <i>s</i> должно быть равно <i>k[i]</i>:
		</li>
</ol>
<pre><ps>
	иначе</ps>
		если s=k[i] то
			печать i<ps>
		иначе
			i = i + 1
			Пока k[i]=0
				i = i + 1
			печать i
</ps></pre>
<p class="Header3">Полный код на Python</p>
<pre>
   f = open("11C4v01.txt", encoding='utf-8', mode="r")
   n = <gr>int</gr>(f.readline())
   k = [0] * 100 <cm>#кол-во оценок</cm>
   <b>for</b> i <b>in</b> <gr>range</gr>(n):
      <cm>#a[0] - Фамилия (она не нужна)</cm>
      <cm>#a[1] - Имя (оно не нужно)</cm>
      <cm>#a[2] - номер школы [1..99] (он не нужен)</cm>
      <cm>#a[3] - балл ученика(цы)</cm>	  
      a = f.readline().split()
      iball = <gr>int</gr>(a[3]) - 1 <cm>#iball - [0..99]</cm>
      k[iball] += 1

   p = n // 5
   s = 0
   i = 100
   <b>while</b> s &#038;lt p:
      i = i - 1
      s = s + k[i]
   <b>if</b> s == p:
      print(i+1)
   <b>else</b>:
      <b>if</b> k[i] == s:
         print(i+1)
      <b>else</b>:
         i = i + 1
         <b>while</b> k[i] == 0:
            i = i + 1
         print(i+1)

</pre>
<div class="Header2"><strong>Пример. ЕГЭ 2011 С4 Вариант 8</strong></div>
<p class="Content2">После единых выпускных экзаменов по информатике в район пришла информация о том, какой ученик какой школы сколько баллов набрал. По положению об экзамене оценку “2” (неудовлетворительно) получают ученики, набравшие меньше 40 баллов. Оценку “3” (удовлетворительно) получают 30% учеников среди оставшихся, за исключением тех из них, кто набрал больше 60 баллов.</p>
<p class="Content2">Если количество “троечников” оказывается больше 30%, то следует выбрать меньшую границу для оценки “4” (но только если при этом “3” получит хоть кто-нибудь).</p>
<p class="Content2">Напишите эффективную, в том числе и по используемой памяти, программу (укажите используемую версию языка программирования, например, Borland Pascal 7.0), которая должна вывести на экран наибольший балл, который набрали участники, получившие “удовлетворительно” и количество таких учеников. Известно, что информатику сдавало больше 50-ти учеников. Также известно, что есть такое количество баллов, которое не получил ни один участник.</p>
<p class="Content2">На вход программе сначала подаётся число учеников, сдававших экзамен. В каждой из следующих N строк находится информация об учениках в формате:</p>
<p class="Content2Center"><Фамилия> <Имя> <Номер школы> <Количество баллов></p>
<p class="Content2">где <Фамилия> — строка, состоящая не более, чем из 30 символов без пробелов, <Имя> — строка, состоящая не более, чем из 20 символов без пробелов, <Номер школы> — целое число в диапазоне от 1 до 99, <Количество баллов> — целое число диапазоне от 1 до 100. Эти данные записаны через пробел, причем ровно один между каждой парой (то есть, всего по три пробела в каждой строке).</p>
<p class="Content2">Пример входных данных:</br>Иванов Иван 50 87</br>Пример выходных данных:</br>78</p>
<p class="Header2">Решение:</p>
<p class="Header3">Количество оценок</p>
<p class="Content2">Аналогично 2011 С4 № 7 – посчитаем кол-во каждых оценок:</p>
<pre><ps>
	k[100] <cm>;[1..100] кол-во оценок</cm>
	Для i от 0 до N-1 <cm>;цикл по строкам данных</cm>
		ball = оценка из i-й строки данных 
		k[ball] = k[ball] + 1 <cm>;считаем кол-во оценок</cm>
</ps></pre>
<p class="Content2">Индекс массива <i>k</i> – это конкретная оценка, а элемент этого индекса будет хранить кол-во этих оценок.</p>
<p class="Header3">Количество двоечников и 30% от не двоечников</p>
<p class="Content2">Посчитаем кол-во двоечников, затем мы их исключим из общего кол-ва учеников:</p>
<pre><ps>
	s = 0 <cm>;кол-во двоечников</cm>
	Для i от 1 до 39 <cm>;первые 39 строк массива с оценками</cm>
		s = s + k[i] <cm>;суммируем всех двоечников</cm>
	p = (N - s) * 30 DIV 100 <cm>;30% от не двоечников</cm>
</ps></pre>
<p class="Header3">Кол-во троечников</p>
<p class="Content2">В 2011 С4 №7 мы искали только 20% лучших, значит критерий поиска был простым: <i>s &#038;lt p</i>. Теперь нужно искать не более 30% троечников и у них максимальный балл 60, значит критерий будет составным:</p>
<pre><ps>
	s = 0 i = 40 <cm>;сбрасываем сумму и начинаем с троечников</cm>
	Пока s < p И i < 61  <cm>;составной критерий для троечников</cm>
		i = i + 1 <cm>;переходим к следующей оценке</cm>
		s = s + k[i]<cm>;суммируем всех троечников</cm>
</ps></pre>
<p class="Header3">Возможные варианты</p>
<p class="Content2">Рассмотрим некоторые варианты разного количества троечников.</p>
<ol class="align_justify" start="1">
<li>Кол-во троечников составляет ровно 30%, и их максимальный балл меньше 60:</li>
</ol>
<pre><ps>
	Пока s < p И i < 61  <cm>;составной критерий для троечников</cm>
		i = i + 1 <cm>;переходим к следующей оценке</cm>
		s = s + k[i]<cm>;суммируем всех троечников</cm></ps>
	если s = p то <cm>;кол-во 3-ков 30% и их макс балл < 60</cm>
		<cm>;максимальная оценка и кол-во таких оценок</cm>
		печать i s
</pre>
<ol class="align_justify" start="2">
<li>Кол-во троечников меньше 30%, и их максимальный балл равен 60:</li>
</ol>
<pre>
	иначе если i = 60 И s < p то
		<cm>;максимальная оценка и кол-во таких оценок</cm>
		печать 60 s
   </pre>
<p class="Content2">Но! Если максимальный балл будет меньше чем 60, программа всё равно выведет 60… (в этом место нужно доработать).</p>
<ol class="align_justify" start="3">
<li>Троечники набравшие более 30% и какой-то один одинаковый:</li>
</ol>
<pre>
	иначе если  s = k[i] то
		<cm>;максимальная оценка и кол-во таких оценок</cm>
		печать i s
</pre>
<ol class="align_justify" start="4">
<li>Остальные троечники набравшие более 30% неодинаковые баллы:</li>
</ol>
<pre><ps>
	<cm>;убираем троечников, которые вышли за допустимую границу</cm>
	s = s - k[i]
	i = i – 1
	Пока k[i]=0
		i = i - 1
	печать i s <cm>;максимальная оценка и кол-во таких оценок</cm>
</ps></pre>
<p class="Content2">Подобный алгоритм описан в В 2011 С4 v07, только там, для избавления от отсутствующих оценок, нужно перемещаться в другую сторону массива оценок.</p>
<p class="Header3">Полный код на Python</p>
<pre>
  f = open("11C4v01.txt", encoding='utf-8', mode="r")
  n = <gr>int</gr>(f.readline())
  k = [0] * 100 <cm>#кол-во оценок</cm>
  <b>for</b> i <b>in</b> <gr>range</gr>(n):
	<cm>#a[0] - Фамилия (она не нужна)</cm>
	<cm>#a[1] - Имя (оно не нужно)</cm>
	<cm>#a[2] - номер школы [1..99] (он не нужен)</cm>
	<cm>#a[3] - балл ученика(цы)</cm>
	a = f.readline().split()
	iball = <gr>int</gr>(a[3]) - 1 <cm>#iball - [0..99]</cm>
	k[iball] += 1
  s = 0
  i = 0
  <b>for</b> i <b>in</b> <gr>range</gr>(39): <cm>#[0..38] т.е. первые 39 баллов</cm>
	s = s + k[i]
  print("i:",i," s:",s)
  p = (n-s)*30 // 100
  s = 0
  
  <cm>#старое значение i=38, а троечники начинаются с 39,</cm>
  <cm>зн. увеличим i на 1 до обращения к массиву k:</cm>
  <b>while</b> s < p and i < 59: <cm>#здесь 60 это индекс 61-го балла!</cm>
	i = i + 1
	s = s + k[i]

  <b>if</b> s == p:
	print(i+1," ",s)

  <b>elif</b> i == 59 and s < p:
	<cm>#выведет 60 даже если максимальный балл троечников < 60</cm>
	print("60", s)

  <b>elif</b> s == k[i]:
	print(i + 1, " ", s)
  <b>else</b>:
	s -= k[i]
	i -= 1
  <b>while</b> k[i] == 0:
	i -= 1
  print(i + 1, " ", s)

</pre>
<div class="Header2"><strong>Пример. ЕГЭ 2011 С4 Вариант 9</strong></div>
<p class="Content2">На вход программе подается последовательность символов, заканчивающаяся символом #. Другие символы # во входной последовательности отсутствуют.</p>
<p class="Content2">Программа должна вывести на экран латинскую букву встречающуюся во входной последовательности наибольшее количество раз (во второй строке).</p>
<p class="Content2">Если таких букв во входной последовательности окажется несколько, программа должна вывести на экран всех, через пробел, в алфавитном порядке.</p>
<p class="Content2">Строчные и прописные буквы не различаются.</p>
<p class="Content2">Напишите эффективную, в том числе и по используемой памяти, программу (укажите используемую версию языка программирования, например Borland Pascal 7.0), которая должна решать поставленную задачу.</p>
<p class="Content2">Пример входных данных:</br>Day, mice. &#171;Year&#187; &#8212; a mistake#</br>Пример выходных данных:</br>A</br>4</p>
<p class="Header2">Решение:</p>
<p class="Header3">Количество каждой буквы в строке</p>
<pre><ps>
    s = "…" <cm>;строка со словами и другими символами</cm>
    n = длина строки s
    num[26] <cm>;массив количества латинских букв алфавита</cm>
    Для i от 1 до n <cm>;по каждому символу строки s</cm>
        если s[i] буква то <cm>;буква-не буква</cm>
            k = номер буквы
            <cm>;увеличиваем счётчик количества таких букв</cm>
            num[k] = num[k] + 1

</ps></pre>
<p class="Header3">Найдём максимум и их количество</p>
<p class="Content2">Найдём буквы, встречающиеся наибольшее количество раз, и число этих раз в массиве <i>s</i>:</p>
<pre><ps>
    ic = 0 <cm>;индекс первой буквы ('A') в массиве num</cm>
    k = 1 <cm>;счётчик количества максимумов в массиве num</cm>
    Для i от 1 до 26 <cm>;от 'B' до 'Z'</cm>
        если num[i] > num[ic] то ; находим максимум
            ic = i <cm>;индекс первой буквы меняем на индекс второй</cm>
            k = 1
        иначе если num[i] = num[ic] то </cm>;такой же максимум</cm>
            k = k + 1 <cm>;увеличиваем счётчик кол-ва максимумов</cm>

</ps></pre>
<p class="Header3">Вывод результатов</p>
<pre><ps>
    если k = 1 то <cm>;если максимум один</cm>
        печать ic <cm>;символ ic</cm>
    иначе
    Для i от 0 до 26 <cm>;от 'A' до 'Z'</cm>
        если num[i] = num[ic] то
            печать i ' ' <cm>;символ i</cm>
    печать num[ic] <cm>;кол-во максимумов</cm>
			
</ps></pre>
<p class="Header3">Полный код на Python</p>
<pre>
   <cm>#s = "Day, mice. 'Year' - a mistake#"</cm>
   s = "ABCD ABCE ABCF#"
   num = [0] * 26 <cm>#массив кол-ва букв алфавита</cm>

   <b>for</b> c <b>in</b> s:
      <b>if</b> c.isalpha():
         k = ord(c.upper()) - ord('A')
         num[k] += 1
   k = 1
   ic = 0
   <b>for</b> i <b>in</b> <gr>range</gr>(1,len(num)):
      <b>if</b> num[i] > num[ic]:
         ic = i
         k = 1
      <b>elif</b> num[i] == num[ic]:
         k += 1

   <b>if</b> k == 1:
      print (chr(ic + ord('A')))
   <b>else</b>:
      <b>for</b> i <b>in</b> <gr>range</gr>(0, len(num)):
         <b>if</b> num[i] == num[ic]:
            print(chr(i + ord('A')),end=" ")
         print()
   print(num[ic])

</pre>
<div class="Header2"><strong>Пример. ЕГЭ 2011 С4 Вариант 10</strong></div>
<p class="Content2">На вход программе подается последовательность символов, заканчивающаяся символом #. Другие символы # во входной последовательности отсутствуют.</p>
<p class="Content2">Программа должна вывести на экран символы латинского алфавита, в порядке увеличения частоты встречаемости во входной последовательности.</p>
<p class="Content2">Если буква во входной последовательности не встречается, её выводить не нужно.</p>
<p class="Content2">Если несколько букв встречаются одинаковое количество раз, программа должна вывести их в алфавитном порядке.</p>
<p class="Content2">Строчные и прописные буквы не различаются.</p>
<p class="Content2">Напишите эффективную, в том числе и по используемой памяти, программу (укажите используемую версию языка программирования, например Borland Pascal 7.0), которая должна решать поставленную задачу.</p>
<p class="Content2">Пример входных данных:</br>Aced, ccedaa f#</br>Пример выходных данных:</br>FDEAC</p>
<p class="Header2">Решение:</p>
<p class="Header3">Количество каждой буквы в строке</p>
<p class="Content2">Для вывода букв, в порядке увеличения частоты встречаемости, нужен массив количества букв алфавита:</p>
<pre><ps>
    s = "…" <cm>;строка со словами и другими символами</cm>
    n = длина строки s
    num[26] <cm>;массив количества латинских букв алфавита</cm>
    Для i от 1 до n <cm>;по каждому символу строки s</cm>
        если s[i] буква то <cm>;буква-не буква</cm>
            k = номер буквы
          <cm>;увеличиваем счётчик количества таких букв</cm>
            num[k] = num[k] + 1
			
</ps></pre>
<p class="Header3">Сортировка </p>
<p class="Content2">Отсортируем массив <i>num</i> по возрастанию:</p>
<pre><ps>
    Для i от 1 до 25 <cm>;от 'A' до 'Y'</cm>
        Для j от 25-i
            если num[j] > num[j+1] то
                t = num[j]
                num[j] = num[j+1]
                num[j+1] = t ;

</ps></pre>
<p class="Content2">Получили отсортированную по возрастанию, частоту встречаемости символов, но неизвестно какие это будут символы – индексы будут утеряны.</p>
<p class="Content2">Выход такой: завести массив символов по алфавиту <i>sym</i>. Далее, одновременно с сортировкой массива <i>num</i>, будут перестановки элементов массива <i>sym</i> с теми же индексами, что и индексы массива <i>num</i>:</p>
<pre><ps>
    …
    sym = [a,b,c,…,z]
    Для i от 1 до 25 <cm>;от 'A' до 'Y'</cm>
        Для j от 25-i ;
            если num[j] > num[j+1] то
                t = num[j]              c = sym[y]
                num[j] = num[j+1]       sym[j] = sym[j+1]
                num[j+1] = t            sym[j+1] = c

</ps></pre>
<p class="Header3">Вывод результатов</p>
<p class="Content2">Если дана строка <i>Aced, ccedaa f</i> , то после сортировки массивы <i>num</i> и <i>sym</i> будут такими:</p>
<p class="Content3">num &#8212; [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 2 3 3]</p>
<p class="Content3">sym &#8212; [b g h I j k l  m n o p q r s t u v w x y z f d e a c]</p>
<p class="Content3">Выводим символы массива <i>sym</i>, начиная с символа <i>f</i>:</p>
<pre><ps>
    j = 22 <cm>;индекс символа 'f'</cm>
    Для i от j до 26 <cm>;от 22 до 26</cm>
        печать sym[i]

</ps></pre>
<p class="Content2">Найти значение первого символа легко: если посмотреть на массив <i>num</i>, то в нём 21 нуль:</p>
<pre><ps>
    j = 0 <cm>;индекс символа 'f'</cm>
    Пока num[j] = 0 ; после цикла j будет равно 22
        j = j + 1
    Для i от j до 26 <cm>;от 22 до 26</cm>
        печать sym[i]

</ps></pre>
<p class="Header3">Полный код на Python</p>
<pre>
   s = "Aced, ccedaa f#" <cm>#символ '#' в этом коде не нужен</cm>
   num = [0] * 26 <cm>#массив кол-ва латинских букв алфавита</cm>
   sym = [0] * 26 <cm>#массив латинских букв алфавита ('a'.. 'z')</cm>

   <b>for</b> i <b>in</b> <gr>range</gr>(26):
      sym[i] = chr(i+65)

   <b>for</b> c <b>in</b> s:
      <b>if</b> c.isalpha():
         k = ord(c.upper()) - ord('A')
         num[k] += 1

   <b>for</b> i <b>in</b> <gr>range</gr>(26 - 1):
      <b>for</b> j <b>in</b> <gr>range</gr>(26 - i - 1):
         <b>if</b> num[j] > num[j + 1]:
            num[j], num[j + 1] = num[j + 1], num[j]
            sym[j], sym[j + 1] = sym[j + 1], sym[j]

   j=0
   <b>while</b> num[j] == 0:
      j += 1
   <b>for</b> i <b>in</b> <gr>range</gr>(j, 26):
      print(sym[i],end=" ")
</pre>
]]></content:encoded>
			<wfw:commentRss>http://kshu.su/?feed=rss2&#038;p=214</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Лабораторные работы</title>
		<link>http://kshu.su/?p=107</link>
		<comments>http://kshu.su/?p=107#comments</comments>
		<pubDate>Sun, 26 Oct 2014 17:43:58 +0000</pubDate>
		<dc:creator><![CDATA[Margarita Schurakhtenkova]]></dc:creator>
				<category><![CDATA[Физика]]></category>

		<guid isPermaLink="false">http://kshu.su/?p=107</guid>
		<description><![CDATA[Исследование равноускоренного движения без начальной скорости. Изучение закона сохранения механической энергии при движении тела под действием силы упругости и силы тяжести. Исследование зависимости периода колебаний нитяного маятника от его длины. Оценка массы воздуха в кабинете физики при помощи необходимых измерений и расчетов.Определение относительной влажности воздуха. Измерение поверхностного натяжения жидкости. Определение удельного сопротивления проводника. Исследование зависимости [&#8230;]]]></description>
				<content:encoded><![CDATA[<p class="Content2">
	Исследование равноускоренного движения без начальной скорости.<br />
	Изучение закона сохранения механической энергии при движении тела под действием силы упругости и силы тяжести.<br />
	Исследование зависимости периода колебаний нитяного маятника от его длины.<br />
	Оценка массы воздуха в кабинете физики при помощи необходимых измерений и расчетов.Определение относительной влажности воздуха.<br />
	Измерение поверхностного натяжения жидкости.<br />
	Определение удельного сопротивления проводника.<br />
	Исследование зависимости мощности лампочки накаливания от  напряжения.<br />
	Измерение ЭДС и внутреннего сопротивления источника тока<br />
	Наблюдение действия магнитного поля на проводник с током<br />
	Изучение явления электромагнитной индукции<br />
	Определение показателя преломления стекла<br />
	Наблюдение интерференции и дифракции света<br />
	Наблюдение сплошного и линейчатого спектров<br />
	Изучение взаимодействия заряженных частиц и ядерных реакций по фотографиям<br />
	Определение фокусного расстояния линзы
</p>
<p>	<span id="more-107"></span></p>
<p>	<!--Исследование равноускоренного движения без начальной скорости--></p>
<div class="LabH1">«Исследование равноускоренного движения без начальной скорости»</div>
<p class="PurposeLabWork"><b><i><u>Цель работы</u></i></b>: определить ускорение движения шарика и его мгновенную скорость перед ударом о цилиндр</p>
<p class="EquipmentLabWork"><b><i><u>Оборудование</u></i></b>: Желоб лабораторный, шарик, металлический цилиндр, измерительная лента, секундомер (метроном)</p>
<p class="Content2"><b><i><u>Описание работы</u></i></b>:</p>
<p class="Content2">При равноускоренном движении без начальной скорости пройденное расстояние определяется  по формуле:</p>
<div id="block10x10center"><img src="wp-content/uploads/physics/physics_Lab_000.png" /></div>
<p class="Content2">а мгновенная скорость:</p>
<div id="block10x10center"><img src="wp-content/uploads/physics/physics_Lab_001.png" /></div>
<p class="Content2">Промежуток времени измеряется с помощью метронома, который настроен на 120 ударов в минуту, значит время    между двумя ударами 0,5с.<br />
         Положение цилиндра подбирается так, чтобы удар шарика о цилиндр совпадал с 3-им или 4-м ударом. тогда t = 0.5 &#183; n, где n – число ударов метронома</p>
<p class="LabContent2"><b><i><u>Указания к выполнению работы</u></i></b>:</p>
<ol class="align_justify">
<li>Соберите установку по рисунку</li>
<div id="block10x10center"><img src="wp-content/uploads/physics/physics_Lab_002.png" /></div>
<li>Для записей результатов начертите таблицу</li>
<table class="table_11TahomaHeaderUser">
<tr bgcolor="#f0f0f0" align="center">
<td width="100px">Число ударов метронома <span class="Content2_Times14BoldItalic">n</span></td>
<td width="100px">Расстояние <span class="Content2_Times14BoldItalic">S</span>, м</td>
<td width="100px">Время движения <span class="Content2_Times14BoldItalic">t</span>, с <br />t = 0.5 &#183; n </td>
<td width="80px">Ускорение <span class="Content2_Times14BoldItalic">a=2S/t<sup>2</sup></span> м/с<sup>2</sup></td>
<td width="100px">Мгновенная скорость <span class="Content2_Times14BoldItalic">V=a&#183;t</span> м/с</td>
</tr>
<tr>
<td height="20px"></td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
</table>
<li>Измерьте расстояние <span class="Content2_Times14BoldItalic">S</span>, пройденное шариком за 3 или 4 удара метронома</li>
<li>Вычислите время движения шарика</li>
<li>Рассчитайте ускорение, с которым скатывается шарик</li>
<li>Рассчитайте мгновенную скорость  шарика в конце желоба. Результаты измерений и вычислений занесите в таблицу</li>
<li>Рассчитайте погрешности в измерении  ускорения и мгновенной скорости, полагая</li>
<div id="block10x10center"><img src="wp-content/uploads/physics/physics_Lab_003.png" /></div>
</ol>
<p class="Content2"><b><i>Сделайте вывод</i></b></p>
<p class="LabContent2"><b><i><u>Контрольные задания</u></i></b>:</p>
<ol class="align_justify">
<li>Куда направлены ускорения следующих тел:</li>
<ul class="al_jus">
<li>поезда, который начинает тормозить;</li>
<li>поезда, который отходит от станции?</li>
</ul>
<li>Куда движутся тела и как изменяются их скорости, векторы начальных скоростей и ускорений которых показаны на рисунке ?</li>
<div id="block10x10center"><img src="wp-content/uploads/physics/physics_Lab_004.png" /></div>
<li>Троллейбус, трогаясь с места, движется с постоянным ускорением 1.5 м/с<sup>2</sup>. Через сколько времени он приобретет скорость 54 км/ч?</li>
</ol>
<p>	<!--end of Исследование равноускоренного движения без начальной скорости--></p>
<p>	<!--Изучение закона сохранения механической энергии при движении тела под действием силы упругости и силы тяжести--></p>
<div class="LabH1">«Изучение закона сохранения механической энергии при движении тела под действием силы упругости и силы тяжести»</div>
<p class="PurposeLabWork"><b><i><u>Цель работы</u></i></b>:сравнить изменения потенциальной энергии груза, прикрепленного к пружине, и энергии пружины, растянутой под действием груза</p>
<p class="EquipmentLabWork"><b><i><u>Оборудование</u></i></b>: штатив с муфтой, динамометр, линейка измерительная, набор грузов</p>
<div id="block10x10center"><img src="wp-content/uploads/physics/physics_Lab_005.png" /></div>
<p class="Content2"><b><i><u>Описание работы</u></i></b>:</p>
<p class="Content2">Изменение потенциальной энергии груза по отношению к какой &#8212; то поверхности определяется изменением его высоты относительно этой поверхности, то есть:</p>
<p class="Content2_Times16BoldItalic_center">&#916;E<sub>гр</sub> = mgh<sub>1</sub> &#8212; mgh<sub>2</sub> = mg(h<sub>1</sub> &#8212; h<sub>2</sub>)= mg&#916;h</p>
<p class="Content2">Изменение энергии пружины, если в исходном состоянии она не была деформирована, определяется ее величиной в растянутом положении, то есть:</p>
<table class="table_16TimesBoldItalic_noBorder">
<tr>
<td>&#916;E<sub>пр</sub> = </td>
<td><img src="wp-content/uploads/physics/physics_Lab_006.png" />
			</td>
</tr>
</table>
<p class="Content2">Если пружина удлиняется под действием падающего груза, то на основании закона сохранения энергии должно выполняться равенство:</p>
<p class="Content2_Times16BoldItalic_center">&#916;E<sub>гр</sub> = &#916;E<sub>пр</sub></p>
<p class="LabContent2"><b><i><u>Указания к выполнению работы</u></i></b>:</p>
<ol class="align_justify">
<li>Груз укрепите на крючке динамометра и закрепите динамометр в зажиме штатива, чтобы груз при падении не доставал до стола.</li>
<li>Поднимите рукой груз, разгружая пружину и измерьте <span class="Content2_Times14BoldItalic">h<sub>1</sub></span></li>
<li>Отпустите груз; падая, он растянет пружину. Измерьте <span class="Content2_Times14BoldItalic">h<sub>2</sub></span> и вычислите <span class="Content2_Times14BoldItalic">&#916;h</span>, а так же измерьте удлинение  <span class="Content2_Times14BoldItalic">&#916;x</span> пружины.</li>
<li>Определите массу груза и вычислите изменение потенциальной энергии.</li>
<li>Вычислите изменение потенциальной энергии пружины.</li>
</ol>
<p class="Content2">Результаты занесите в таблицу</p>
<table class="table_11TahomaHeaderUser">
<tr bgcolor="#f0f0f0" align="center">
<th width="50px">№ опыта</td>
<td width="50px"><span class="Content2_Times14BoldItalic">h<sub>1</sub></span>, м</td>
<td width="50px"><span class="Content2_Times14BoldItalic">h<sub>2</sub></span>, м</td>
<td width="60px"><span class="Content2_Times14BoldItalic">&#916;h</span>, м</td>
<td width="60px"><span class="Content2_Times14BoldItalic">&#916;x</span>, м</td>
<td width="50px"><span class="Content2_Times14BoldItalic">m</span>, кг</td>
<td width="90px"><span class="Content2_Times14BoldItalic">&#916;E<sub>гр</sub></span>, Дж</td>
<td width="90px"><span class="Content2_Times14BoldItalic">&#916;E<sub>пр</sub></span>, Дж</td>
</tr>
<tr>
<th height="20px">1</td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<th>2</td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
</table>
<p class="Content2">Сравните изменение энергии грузов и пружины и <b><i>сделайте вывод</i></b>.</p>
<p class="LabContent2"><b><i><u>Контрольные вопросы</u></i></b>:</p>
<ol class="align_justify">
<li>Какие превращения энергии происходили при движении груза вниз?</li>
<li>С поверхности Земли на пятый этаж дома один и тот же человек поднялся первый раз по обычной лестнице, второй раз по отвесной пожарной лестнице, а в третий раз на лифте. В каком случае работа силы тяжести максимальна?</li>
<li>При выстреле из детского пружинного пистолета шарик массой 3 г взлетает вертикально вверх на 3 м. Какова  жесткость пружины в пистолете, если при выстреле ее сжали на 2 см?</li>
</ol>
<div id="block10x10center"><img src="wp-content/uploads/physics/physics_Lab_007.png" /></div>
<p>	<!--end of Изучение закона сохранения механиеской энергии при движении тела под действием силы упругости и силы тяжести--></p>
<p><!--Исследование зависимости периода колебаний нитяного маятника от его длины-->	</p>
<div class="LabH1">«Исследование зависимости периода колебаний нитяного маятника от его длины»</div>
<p class="PurposeLabWork"><b><i><u>Цель работы</u></i></b>:проверить на опытах выполнение формулы, связывающей период колебаний маятника с длиной его подвеса.</p>
<p class="EquipmentLabWork"><b><i><u>Оборудование</u></i></b>: штатив с муфтой и лапкой, шарик с прикрепленной к нему  нитью, часы с секундной стрелкой.</p>
<p class="Content2"><b><i><u>Описание работы</u></i></b>:</p>
<table class="table_11Tahoma_noBorder">
<tr>
<td width="250px">Шарик, подвешенный на нити, может совершать колебания, период которых определяется по формуле:<br />
			<img src="wp-content/uploads/physics/physics_Lab_008.png" /><br />
			где <img src="wp-content/uploads/physics/physics_Lab_009.png" /> – длина подвеса,<br /> <span class="Content2_Times16Bold_center">g</span> – ускорение свободного падения. <br />
			Поочередно испытывают два маятника, длины подвесов которых отличаются. Чтобы уменьшить влияние побочных факторов, опыт с каждым маятником проводят несколько раз и находят среднее значение времени, затраченное маятником на совершение заданного числа колебаний. Затем вычисляют периоды маятников
			</td>
<td><img src="wp-content/uploads/physics/physics_Lab_010.png" /></td>
</tr>
</table>
<p class="LabContent2"><b><i><u>Указания к выполнению работы</u></i></b>:</p>
<ol class="align_justify">
<li>Подготовьте в тетради таблицу для записи результатов измерений и вычислений.</li>
<li>Соберите рабочую установку (см. рисунок). Длину <img src="wp-content/uploads/physics/physics_Lab_009.png" /> маятника измеряйте от точки подвеса до середины шарика.</li>
<li>Отклоните маятник на 5-6 см от равновесия и замерьте время 30–ти его полных колебаний. Повторите измерения 3-4 раза и определите среднее время <span class="Content2_Times14BoldItalic">t<sub>ср</sub></span></li>
<li>Вычислите период колебаний маятника длиной 25-30 см. Затем увеличьте длину подвеса в четыре раза и повторите серию  опытов</li>
</ol>
<div id="block10x10center"><img src="wp-content/uploads/physics/physics_Lab_011.png" /></div>
<p class="Content2">Результаты занесите в таблицу</p>
<table class="table_11TahomaHeaderUser">
<tr bgcolor="#f0f0f0" align="center">
<th width="50px">№ опыта</td>
<td width="50px"><img src="wp-content/uploads/physics/physics_Lab_009T.png" />, м</td>
<td width="50px"><span class="Content2_Times14BoldItalic">n</span></td>
<td width="50px"><span class="Content2_Times14BoldItalic">t</span>, c</td>
<td width="50px"><span class="Content2_Times14BoldItalic">t<sub>ср</sub></span>, c</td>
<td width="50px"><span class="Content2_Times14BoldItalic">T</span>, c</td>
</tr>
<tr>
<th height="20px">1</td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<th>2</td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
</table>
<p class="Content2">Сравните периоды колебаний двух маятников <b><i>сделайте вывод</i></b>  о справедливости формулы  периода.</p>
<p class="LabContent2"><b><i><u>Контрольные вопросы</u></i></b>:</p>
<ol class="align_justify">
<li>Укажите возможные причины расхождения результатов.</li>
<li>Приведите примеры проявлений механического резонанса и его применения</li>
<li>Частота колебаний струны равна 1.2 кГц. Сколько колебаний совершает точка струны за 0.5 мин? Каков период колебаний данной точки струны?</li>
</ol>
<p><!--end of Исследование зависимости периода колебаний нитяного маятника от его длины -->	</p>
<p><!--Оценка массы воздуха в кабинете физики при помощи необходимых измерений и расчетов-->	</p>
<div class="LabH1">«Оценка массы воздуха в кабинете физики при помощи необходимых измерений и расчетов»</div>
<p class="PurposeLabWork"><b><i><u>Цель работы</u></i></b>: оценить массу воздуха в кабинете физики</p>
<p class="EquipmentLabWork"><b><i><u>Оборудование</u></i></b>: термометр, барометр, мерная лента, справочник</p>
<p class="Content2"><b><i><u>Описание работы</u></i></b>:</p>
<p class="Content2">в данной работе применяются два метода:</p>
<ol class="align_justify">
<li>используя  уравнение состояния газа (Менделеева-Клапейрона), для чего нужно произвести необходимые измерения;</li>
<li>используя  формулу плотности, значение которой берем из таблицы плотностей газов</li>
</ol>
<div id="block10x10center"><img src="wp-content/uploads/physics/physics_Lab_012.jpg" /></div>
<p class="LabContent2"><b><i><u>Указания к выполнению работы</u></i></b>:</p>
<ol class="align_justify">
<li>Измерьте длину, ширину, высоту кабинета и вычислите объем воздуха по формуле:
<p class="Content2_Times16BoldItalic_center">V = a &#183; b &#183; c</p>
</li>
<li>Снимите показания термометра в кабинете физики и переведите его значение в «СИ» по формуле:
<p class="Content2_Times16BoldItalic_center">T = t <sup>о</sup>C + 273K</p>
</li>
<li>Измерьте  давление воздуха в кабинете и при необходимости переведите в систему СИ показание прибора, учитывая что:
<p class="Content2_Times16BoldItalic_center">760 мм.рт.ст. &#8773; 101308 Па</p>
</li>
<li>Вычислите массу воздуха, используя формулу:</li>
<table class="table_16TimesBoldItalic_noBorder">
<tr>
<td>P&#183;V = </td>
<td><img src="wp-content/uploads/physics/physics_Lab_013.png" /></td>
<td>&#183;R&#183;T</td>
</tr>
</table>
<p class="Content2">где: <span class="Content2_Times16BoldItalic_center">M</span> = 0,029 <i>кг/моль</i> &#8212; молярная масса воздуха,</p>
<table class="table_11Tahoma_noBorder_Left">
<tr>
<td><span class="Content2_Times16BoldItalic_center">R</span> = 8,31</td>
<td><img src="wp-content/uploads/physics/physics_Lab_014.png" />
			</td>
<td> &#8212; газовая постоянная</td>
</tr>
</table>
<p class="Content2">Результаты занесите в таблицу</p>
<table class="table_11TahomaHeaderUser">
<tr bgcolor="#f0f0f0" align="center">
<td width="40px"><span class="Content2_Times14BoldItalic">a</span>, м</td>
<td width="40px"><span class="Content2_Times14BoldItalic">b</span>, м</td>
<td width="40px"><span class="Content2_Times14BoldItalic">c</span>, м</td>
<td width="50px"><span class="Content2_Times14BoldItalic">V</span>, м<sup>3</sup></td>
<td width="50px"><span class="Content2_Times14BoldItalic">P</span>, Па</td>
<td width="40px"><span class="Content2_Times14BoldItalic">T</span>, K</td>
<td width="120px"><span class="Content2_Times14BoldItalic">M</span>, кг/моль</td>
<td width="90px"><span class="Content2_Times14BoldItalic">R</span>, <img src="wp-content/uploads/physics/physics_Lab_014.png" /></td>
<td width="50px"><span class="Content2_Times14BoldItalic">m</span>, кг</td>
</tr>
<tr>
<td height="20px"></td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
</table>
<li>Вычислите массу воздуха по формуле плотности </li>
</ol>
<table class="table_16TimesBoldItalic_noBorder">
<tr>
<td>&#961; =</td>
<td><img src="wp-content/uploads/physics/physics_Lab_015.png" /></td>
</tr>
</table>
<p class="Content2">(значение плотности для воздуха возьмите из таблицы)</p>
<p class="Content2">Сравните полученные результаты</p>
<p class="Content2"><b><i>Сделайте вывод</i></b></p>
<p class="LabContent2"><b><i><u>Контрольные вопросы</u></i></b>:</p>
<ol class="align_justify">
<li>Прочитать графики изопроцессов и построить в других координатах:</li>
</ol>
<div id="block10x10center"><img src="wp-content/uploads/physics/physics_Lab_016.png" /></div>
<p><!--end of Оценка массы воздуха в кабинете физики при помощи необходимых измерений и расчетов -->	</p>
<p><!--Определение относительной влажности воздуха»-->	</p>
<div class="LabH1">«Определение относительной влажности воздуха»</div>
<p class="PurposeLabWork"><b><i><u>Цель работы</u></i></b>: Познакомиться с устройством психрометра и волосного гигрометра; измерить влажность воздуха в кабинете.</p>
<p class="EquipmentLabWork"><b><i><u>Оборудование</u></i></b>: Психрометр, волосной гигрометр, психрометрическая таблица.</p>
<table class="table_11Tahoma_noBorder">
<tr>
<td width="250px"><img src="wp-content/uploads/physics/physics_Lab_017.jpg" /></td>
<td><img src="wp-content/uploads/physics/physics_Lab_018.jpg" /></td>
</tr>
<tr>
<td>рис. 1</td>
<td>рис. 2</td>
</tr>
</table>
<p class="Content2"><b><i><u>Описание работы</u></i></b>:</p>
<p class="Content2">Психрометр состоит из двух одинаковых термометров, один из которых обернут тканью. Если водяной пар в воздухе не насыщен, то вода из ткани испаряется и показания «влажного» термометра будут меньше, чем сухого. Чем интенсивнее испаряется вода ( чем менее насыщен воздух водяным паром), тем ниже показания «влажного термометра». По разнице показаний двух термометров измеряют влажность воздуха. С этой целью составляют психрометрические таблицы, с помощью которых и определяют конкретные значения относительной влажности.</p>
<p class="LabContent2"><b><i><u>Указания к выполнению работы</u></i></b>:</p>
<table class="table_11Tahoma_noBorder">
<tr>
<td width="350px">
<ol class="align_justify">
<li>Ознакомьтесь с устройством психрометра (см.рисунок 1) и правилами работы с ним.</li>
<li>В начале урока наливаем воду в резервуар термометра, обернутого марлей (см. рисунок 3).</li>
<li>Выждав несколько минут, пока показания влажного термометра перестанут изменяться, снимите показания сухого и влажного термометров и вычислите разность температур:<br />
					<span class="Content2_Times14BoldItalic">&#916;t<sup>о</sup> = t<sup>о</sup><sub>сух</sub> &#8212; t<sup>о</sup><sub>влаж</sub></span></li>
<li>С помощью психрометрической таблицы определите относительную влажность воздуха <span class="Content2_Times14Bold">&#966;<sub>1</sub> =</span></li>
<li>Ознакомьтесь с устройством  и принципом действия волосного гигрометра (см. рисунок 2). Снимите его показание <span class="Content2_Times14Bold">&#966;<sub>2</sub> =</span></li>
</ol>
<p>
				Сравнивая результаты <span class="Content2_Times14Bold">&#966;<sub>1</sub></span> и <span class="Content2_Times14Bold">&#966;<sub>2</sub></span>,<br />
				<b><i>Сделайте вывод</i></b>
			</td>
<td><img src="wp-content/uploads/physics/physics_Lab_019.jpg" /></td>
</tr>
<tr>
<td></td>
<td><span class=".Content2_center">рис. 3</span></td>
</tr>
</table>
<p>	<span class="Content2_Times14BoldItalic"></span></p>
<p class="Content2">Результаты занесите в таблицу</p>
<table class="table_11TahomaHeaderUser">
<tr bgcolor="#f0f0f0" align="center">
<td width="100px"><span class="Content2_Times14BoldItalic">t<sub>сух</sub></span>, <sup>о</sup>C</td>
<td width="100px"><span class="Content2_Times14BoldItalic">t<sub>влаж</sub></span>, <sup>о</sup>C</td>
<td width="100px"><span class="Content2_Times14BoldItalic">&#916;t</span>, <sup>о</sup>C</td>
<td width="100px"><span class="Content2_Times14Bold">&#966;<sub>1</sub></span>, %</td>
<td width="100px"><span class="Content2_Times14Bold">&#966;<sub>2</sub></span>, %</td>
</tr>
<tr>
<td height="20px"></td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
</table>
<p class="LabContent2"><b><i><u>Контрольные вопросы</u></i></b>:</p>
<ol class="align_justify">
<li>Какое значение имеет знание влажности воздуха? Приведите пример из своей будущей профессии.</li>
<li>На улице моросит холодный осенний дождь. В комнате развешано выстиранное белье. Высохнет ли оно быстрее, если открыть форточку?</li>
<li>Как по внешнему виду отличить (не прикасаясь руками), трубу с горячей водой от трубы с холодной водой на кухне или в ванной комнате?</li>
</ol>
<p><!--end of Определение относительной влажности воздуха» -->	</p>
<p><!--Измерение поверхностного натяжения жидкости-->	</p>
<div class="LabH1">«Измерение поверхностного натяжения жидкости»</div>
<p class="PurposeLabWork"><b><i><u>Цель работы</u></i></b>: экспериментально определить коэффициент поверхностного натяжения воды методом отрыва капель.</p>
<p class="EquipmentLabWork"><b><i><u>Оборудование</u></i></b>: весы учебные, разновес, (или мензурка), пипетка, стакан с водой, штангенциркуль.</p>
<p class="Content2"><b><i><u>Описание работы</u></i></b>:</p>
<p class="Content2">Расчеты показывают, что отрыв капли воды от пипетки происходит при выполнении равенства: <span class="Content2_Times14BoldItalic">m &#183; g = &#963; &#183; &#960; &#183; d,</span> где <span class="Content2_Times14BoldItalic">m</span> &#8212; масса капли, <span class="Content2_Times14BoldItalic">&#963;</span> &#8212; коэффициент поверхностного натяжения воды, <span class="Content2_Times14BoldItalic">d</span> – внутренний диаметр пипетки.</p>
<table class="table_11Tahoma_noBorder_Left">
<tr>
<td>Отсюда <span class="Content2_Times14BoldItalic">&#963; =</span></td>
<td><img src="wp-content/uploads/physics/physics_Lab_020.png" />
			</td>
</tr>
</table>
<p class="Content2">Для повышения точности измеряют массу <span class="Content2_Times14BoldItalic">n</span> нескольких капель <span class="Content2_Times14BoldItalic">(m &#183; n)</span>, тогда формула примет вид:</p>
<table class="table_11Tahoma_noBorder_Left">
<tr>
<td><span class="Content2_Times14BoldItalic">&#963; =</span></td>
<td><img src="wp-content/uploads/physics/physics_Lab_021.png" />
			</td>
</tr>
</table>
<div id="block10x10center"><img src="wp-content/uploads/physics/physics_Lab_022.jpg" /></div>
<p class="LabContent2"><b><i><u>Указания к выполнению работы</u></i></b>:</p>
<ol class="align_justify">
<li>Измерьте с помощью штангенциркуля внутренний диаметр пипетки <span class="Content2_Times14BoldItalic">d</span></li>
<li>Накапайте в пустой стакан 100-200 капель воды и с помощью весов или мензурки определите массу воды.</li>
<li>По формуле, приведенной выше, вычислите коэффициент поверхностного натяжения <span class="Content2_Times14BoldItalic">&#963;</span></li>
</ol>
<p class="Content2">Результаты занесите в таблицу</p>
<table class="table_11TahomaHeaderUser">
<tr bgcolor="#f0f0f0" align="center">
<td width="50px"><span class="Content2_Times14BoldItalic">d</span>, m</td>
<td width="150px">Число капель <span class="Content2_Times14BoldItalic">n</span></td>
<td width="50px"><span class="Content2_Times14BoldItalic">m</span>, кг</td>
<td width="80px"><span class="Content2_Times14BoldItalic">&#963;</span>, Н/м</td>
</tr>
<tr>
<td height="20px"></td>
<td> </td>
<td> </td>
<td> </td>
</tr>
</table>
<p class="Content2">Сравните полученный результат с табличным и вычислите погрешность опыта по формуле:</p>
<table class="table_16TimesBoldItalic_noBorder">
<tr>
<td>&#949; =</td>
<td><img src="wp-content/uploads/physics/physics_Lab_023.png" /></td>
<td>&#183;100%</td>
</tr>
</table>
<p class="Content2"><b><i><u>Сделайте вывод</u></i></b></p>
<p class="LabContent2"><b><i><u>Контрольные вопросы</u></i></b>:</p>
<ol class="align_justify">
<li>Какую роль играют явления поверхностного натяжения жидкостей, смачивание и капиллярность в приготовлении кондитерских  изделий. Приведите конкретный пример.</li>
<li>Вода по фитилю поднимается на 80 мм. На сколько поднимется спирт по тому же фитилю?</li>
</ol>
<p><!--end of Измерение поверхностного натяжения жидкости --></p>
<p><!--Определение удельного сопротивления проводника-->	</p>
<div class="LabH1">«Определение удельного сопротивления проводника»</div>
<p class="PurposeLabWork"><b><i><u>Цель работы</u></i></b>: определить материал проволоки по удельному сопротивлению.</p>
<p class="EquipmentLabWork"><b><i><u>Оборудование</u></i></b>: источник постоянного  тока,  амперметр,  ключ, вольтметр,  исследуемая проволока, соединительные провода,  штангенциркуль,  справочник.</p>
<p class="Content2"><b><i><u>Описание работы</u></i></b>:</p>
<p class="Content2">Проводимость металлов, а значит, их сопротивление <span class="Content2_Times14BoldItalic">R</span> зависит от размера проводника (длины и площади поперечного сечения), а также материала проводника (удельного сопротивления). В данной работе требуется  определить материал проводника, используя Закон Ома для участка  цепи и формулу электрического сопротивления.</p>
<div id="block10x10center"><img src="wp-content/uploads/physics/physics_Lab_024.jpg" /></div>
<p class="LabContent2"><b><i><u>Указания к выполнению работы</u></i></b>:</p>
<ol class="align_justify">
<li>Измерьте длину проволоки <img src="wp-content/uploads/physics/physics_Lab_009.png" /> и ее диаметр <span class="Content2_Times14BoldItalic">d</span>.</li>
<li>Соберите электрическую цепь по схеме</li>
<div id="block10x10center"><img src="wp-content/uploads/physics/physics_Lab_025.jpg" /></div>
<li>Замкните ключ и снимите показания амперметра и вольтметра.</li>
<li>Используя формулы сопротивления проводника, площади поперечного сечения проводника и закон Ома для участка цепи</li>
<div id="block10x10center"><img src="wp-content/uploads/physics/physics_Lab_026.png" /></div>
<p class="Content2">выведите рабочую формулу для вычисления искомого удельного сопротивления, т.е.:</p>
<p class="Content2_Times16BoldItalic_center">&#961; =</p>
<li>Вычислите приблизительное значение удельного сопротивления.</li>
<li>Определите по справочнику материал проводника
<p class="Content2">Вычислите погрешность измерения удельного сопротивления</p>
</li>
</ol>
<table class="table_16TimesBoldItalic_noBorder">
<tr>
<td><span class="Content2_Times22BoldItalic">&#949;</span> =</td>
<td><img src="wp-content/uploads/physics/physics_Lab_027.png" /></td>
<td>&#183;100%</td>
</tr>
</table>
<p class="Content2"><b><i><u>Сделайте вывод</u></i></b></p>
<p class="LabContent2"><b><i><u>Контрольные вопросы</u></i></b>:</p>
<ol class="align_justify">
<li>Что такое короткое замыкание?  Что нужно знать о нем? </li>
<li>Почему для изготовления нагревательных элементов применяют проводники с большим удельным сопротивлением, а для проводящих проводов &#8212; с малым?</li>
</ol>
<p><!--end of Определение удельного сопротивления проводника -->	</p>
<p>	<!--Исследование зависимости мощности лампочки накаливания от  напряжения-->	</p>
<div class="LabH1">«Исследование зависимости мощности лампочки накаливания от  напряжения»</div>
<p class="PurposeLabWork"><b><i><u>Цель работы</u></i></b>: Исследовать мощность лампочки  накаливания, с помощью амперметра и вольтметра.</p>
<p class="EquipmentLabWork"><b><i><u>Оборудование</u></i></b>: источник постоянного тока, лампочка на подставке вольтметр и амперметр, ключ, соединительные провода.</p>
<div id="block10x10center"><img src="wp-content/uploads/physics/physics_Lab_028.jpg" /></div>
<p class="Content2"><b><i><u>Описание работы</u></i></b>:</p>
<p class="Content2">Требуется экспериментально определить мощность лампочки накаливания, измерив силу тока в замкнутой электрической цепи, а напряжение на зажимах лампочки накаливания, используя формулу<br />
<span class="Content2_Times14BoldItalic">Р = UJ</span></p>
<p class="LabContent2"><b><i><u>Указания к выполнению работы</u></i></b>:</p>
<ol class="align_justify">
<li>Подготовьте таблицу для записей измерений и вычислений:</li>
<table class="table_11TahomaHeaderUser">
<tr bgcolor="#f0f0f0" align="center">
<td width="80px"><span class="Content2_Times14BoldItalic">J</span>, A</td>
<td width="80px"><span class="Content2_Times14BoldItalic">&#916;J</span>, A</td>
<td width="80px"><span class="Content2_Times14BoldItalic">U</span>, B</td>
<td width="80px"><span class="Content2_Times14BoldItalic">&#916;U</span>, B</td>
<td width="80px"><span class="Content2_Times14BoldItalic">P</span>, Вт</td>
<td width="80px"><span class="Content2_Times14BoldItalic">&#916;P</span>, Вт</td>
</tr>
<tr>
<td height="20px"></td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
</table>
<li>Соберите электрическую цепь по схеме:</li>
<div id="block10x10center"><img src="wp-content/uploads/physics/physics_Lab_029.jpg" /></div>
<li>Замкните ключ и снимите показания приборов.</li>
<li>Найдите абсолютную погрешность силы тока, т.е.:<br />
<table class="table_16TimesBoldItalic_noBorder_Left">
<tr>
<td>&#916;J = J<sub>max</sub> &#183;</td>
<td><img src="wp-content/uploads/physics/physics_Lab_030.png" /></td>
</tr>
</table>
<p class="Content2">где <span class="Content2_Times14BoldItalic">k<sub>А</sub></span> &#8212; класс точности амперметра</p>
<p class="Content2">Результат измерения напряжения запишите в виде:<br /> <span class="Content2_Times14BoldItalic">J &#177; &#916;J</span>.</p>
<p class="Content2">Аналогично, найдите абсолютную погрешность напряжения т.е.:</p>
<table class="table_16TimesBoldItalic_noBorder_Left">
<tr>
<td>&#916;U = U<sub>max</sub> &#183;</td>
<td><img src="wp-content/uploads/physics/physics_Lab_031.png" /></td>
</tr>
</table>
<p class="Content2">где <span class="Content2_Times14BoldItalic">k<sub>V</sub></span> &#8212; класс точности вольтметра</p>
<p class="Content2">Результат измерения напряжения запишите в виде:<br /> <span class="Content2_Times14BoldItalic">U &#177; &#916;U</span>.</p>
</li>
<li>Вычислите мощность лампочки.
<p class="Content2">Окончательный результат записать с учетом погрешности,</p>
<p class="Content2">т.е. <span class="Content2_Times14BoldItalic">&#916;Р = Р &#183;</span> <span class="Content2_Times18BoldItalic">&#949;</span><span class="Content2_Times14BoldItalic"><sub>P</sub></span>; где <span class="Content2_Times18BoldItalic">&#949;</span><span class="Content2_Times14BoldItalic"><sub>P</sub></span> = <span class="Content2_Times18BoldItalic">&#949;</span><span class="Content2_Times14BoldItalic"><sub>J</sub> &#183;</span><span class="Content2_Times18BoldItalic"> &#949;</span><span class="Content2_Times14BoldItalic"><sub>U</sub></span>;</p>
</li>
</ol>
<p class="Content2"><b><i><u>Сделайте вывод</u></i></b></p>
<p class="LabContent2"><b><i><u>Контрольные вопросы</u></i></b>:</p>
<ol class="align_justify">
<li>Сколько нужно заплатить за 3 мин. работы электрокипятильника мощностью 0,5 кВт, если стоимость 1 кВт-часа электроэнергии составляет 4 рубля ?</li>
<li>Как можно экономить потребление электроэнергии? Назовите способы.</li>
</ol>
<p><!--end of Исследование зависимости мощности лампочки накаливания от  напряжения --></p>
<p><!--Измерение ЭДС и внутреннего сопротивления источника тока-->	</p>
<div class="LabH1">«Измерение ЭДС и внутреннего сопротивления источника тока»</div>
<p class="PurposeLabWork"><b><i><u>Цель работы</u></i></b>: Измерить ЭДС и внутреннее сопротивление данного источника тока.</p>
<p class="EquipmentLabWork"><b><i><u>Оборудование</u></i></b>: Источник постоянного тока, ключ, амперметр, вольтметр, реостат, соединительные провода.</p>
<p class="Content2"><b><i><u>Описание работы</u></i></b>:</p>
<p class="Content2">Экспериментально требуется определить сопротивление источника тока, используя закон Ома для полной цепи, измерив силу тока  в цепи и напряжение на резисторе.</p>
<div id="block10x10center"><img src="wp-content/uploads/physics/physics_Lab_032.jpg" /></div>
<p class="LabContent2"><b><i><u>Указания к выполнению работы</u></i></b>:</p>
<ol class="align_justify">
<li>Соберите электрическую цепь по схеме:</li>
<div id="block10x10center"><img src="wp-content/uploads/physics/physics_Lab_033.png" /></div>
<li>При разомкнутом ключе вольтметр показывает напряжение приблизительно равное ЭДС источника, т.е.,<br />
 <span class="Content2_Times14BoldItalic">U = </span> <span class="Content2_Times18BoldItalic">&#949;</span></li>
<li>Найдите абсолютную погрешность измерения <b>ЭДС</b> источника тока, т.е.:<br />
<table class="table_16TimesBoldItalic_noBorder_Left">
<tr>
<td>&#916;&#949; = U<sub>max</sub> &#183;</td>
<td><img src="wp-content/uploads/physics/physics_Lab_031.png" /></td>
</tr>
</table>
<p class="Content2">где <span class="Content2_Times14BoldItalic">k<sub>V</sub></span> &#8212; класс точности вольтметра</p>
<p>	И тогда, окончательный результат запишите в виде:<br /><span class="Content2_Times16BoldItalic">&#949; &#177; &#916;&#949; =</span>
	</li>
<li>Отключите вольтметр и снимите показания амперметра в замкнутой цепи.</li>
<li>Запишите класс точности амперметра и предел измерения его шкалы, т.е.:<br /><span class="Content2_Times16BoldItalic">k<sub>A</sub> = ; J<sub>max</sub> = ;</span></li>
<li>Используя закон Ома для замкнутой цепи, рассчитайте внутреннее сопротивление <span class="Content2_Times14BoldItalic">r</span> источника токи по формуле;</li>
<div id="block10x10center"><img src="wp-content/uploads/physics/physics_Lab_034.png" /></div>
<li>Учитывая, что сопротивление резистора <span class="Content2_Times14BoldItalic">R</span> известно с относительной погрешностью 3%, оцените абсолютную погрешность его измерения <span class="Content2_Times14BoldItalic">&#916;R</span></li>
<li>Найдите абсолютную погрешность измерения внутреннего сопротивления источника тока, т.е.:</li>
<table class="table_16TimesBoldItalic_noBorder">
<tr>
<td>&#916;r =</td>
<td><img src="wp-content/uploads/physics/physics_Lab_035.png" /></td>
<td>+ &#916;R</td>
</tr>
</table>
</ol>
<p class="Content2">Запишите окончательный результат измерения в виде:</p>
<p class="Content2_Times16BoldItalic_center"><b><i>r = r &#177; &#916;r</i></b></p>
<p class="LabContent2"><b><i><u>Контрольный вопрос</u></i></b>:</p>
<p class="Content2">Почему показания вольтметра при разомкнутом и замкнутом ключе различны?</p>
<p><!--end of Измерение ЭДС и внутреннего сопротивления источника тока -->	</p>
<p><!--Наблюдение действия магнитного поля на проводник с током-->	</p>
<div class="LabH1">«Наблюдение действия магнитного поля на проводник с током»</div>
<p class="PurposeLabWork"><b><i><u>Цель работы</u></i></b>: исследовать поведение проводника с током в магнитном поле</p>
<p class="EquipmentLabWork"><b><i><u>Оборудование</u></i></b>: источник постоянного тока,  дугообразный магнит, полосовой магнит, штатив с лапкой, катушка-моток, реостат, ключ, соединительные провода.</p>
<p class="Content2"><b><i><u>Описание работы</u></i></b>:</p>
<p class="Content2">Требуется определить (качественно)  зависимость силы, действующей на проводник с током в магнитном поле, от значения магнитной индукции, силы тока в проводнике, длины проводника.</p>
<div id="block10x10center"><img src="wp-content/uploads/physics/physics_Lab_036.jpg" /></div>
<p class="LabContent2"><b><i><u>Указания к выполнению работы</u></i></b>:</p>
<ol class="align_justify">
<li>Подвесьте проволочную катушку на  штативе так, чтобы она не касалась полюсов магнита. Подключите катушку к источнику тока через реостат (см. рисунок) и замкните ключ.</li>
<li>Изменяя положение ползунка реостата, повторите опыт 2-3 раза при различной величине тока. Выясните зависимость силы Ампера  от величины тока <span class="Content2_Times14BoldItalic">J</span> в цепи.</li>
<li>Не изменяя величины тока,  сравните отклонение катушки  от равновесия при дуговом магните, затем при дуговом и полосовом вместе, сложенных одноименными полюсами. Выясните зависимость силы  <span class="Content2_Times14BoldItalic">F<sub>A</sub></span> от магнитной индукции <span class="Content2_Times14BoldItalic">В</span></li>
<li>Поднесите дугообразный магнит к катушке с током, а затем к другому проводу (например, идущему от источника к ключу) и сравните их отклонения от первоначального положения. Выясните зависимость силы Ампера <span class="Content2_Times14BoldItalic">F<sub>A</sub></span>  от длины проводника  <span class="Content2_Times14BoldItalic">l</span></li>
</ol>
<p class="Content2"><b><i><u>Сделайте выводы из ваших наблюдений.</u></i></b></p>
<p class="LabContent2"><b><i><u>Контрольные вопросы</u></i></b>:</p>
<ol class="align_justify">
<li>Почему нежелательно, чтобы социальная карта москвича и подобные ей карточки располагать вблизи металлических предметов, например, ключей?</li>
<li>Приведите примеры применения магнитных взаимодействий, в частности, силы Ампера  в своей будущей профессии</li>
</ol>
<p><!--end of Наблюдение действия магнитного поля на проводник с током -->	</p>
<p><!--Изучение явления электромагнитной индукции-->	</p>
<div class="LabH1">«Изучение явления электромагнитной индукции»</div>
<p class="PurposeLabWork"><b><i><u>Цель работы</u></i></b>: изучить условия возникновения индукционного тока, ЭДС индукции</p>
<p class="EquipmentLabWork"><b><i><u>Оборудование</u></i></b>: катушка, два полосовых магнита, миллиамперметр.</p>
<p class="Content2"><b><i><u>Описание работы</u></i></b>:</p>
<p class="Content2">Явление электромагнитной индукции заключается <i>в возникновении электрического тока в замкнутом контуре при изменении магнитного потока, пронизывающего  контур</i>.</p>
<div id="block10x10center"><img src="wp-content/uploads/physics/physics_Lab_037.jpg" /></div>
<p class="Content2_center">рис. 1</p>
<p class="Content2"> Строго говоря, при движении контура в магнитном поле генерируется ЭДС</p>
<div id="block10x10center"><img src="wp-content/uploads/physics/physics_Lab_038.jpg" /></div>
<p class="Content2_center">рис. 2</p>
<p class="Content2"> По правилу Ленца  <b><i>индукционный ток в замкнутом контуре при изменении магнитного потока в нем, направлен против изменения магнитного потока, вызывающего этот индукционный ток</i></b>.</p>
<p class="Content2">Поэтому в катушке направление линий  магнитного поля противоположно линиям постоянного магнита, ведь магнит движется в сторону катушки. В случае, когда магнит отодвигается от катушки, линии магнитного поля индукционного тока будут совпадать по направлению с линиями постоянного магнита</p>
<p class="LabContent2"><b><i><u>Указания к выполнению работы</u></i></b>:</p>
<p class="Content2">Подготовьте для отчета таблицу и по мере проведения опытов заполните её</p>
<table class="table_11Tahoma">
<tr>
<th width="34px">№ п/п</td>
<th width="100px">Действия с магнитом и катушкой</td>
<th width="50px">Показания миллиамперметра, мА</td>
<th width="50px">Отклонения стрелки миллиамперметра</td>
<th width="190px">Направление индукционного тока (по правилу Ленца)</td>
</tr>
<tr>
<td>1</td>
<td>Быстро вставить магнит в катушку северным полюсом</td>
<td> </td>
<td> </td>
<td><img src="wp-content/uploads/physics/physics_Lab_039.jpg" /></td>
</tr>
<tr>
<td>2</td>
<td>Оставить магнит в катушке неподвижным </td>
<td></td>
<td></td>
<td><img src="wp-content/uploads/physics/physics_Lab_040.jpg" /></td>
</tr>
<tr>
<td>3</td>
<td>Быстро вытащить магнит из катушки</td>
<td></td>
<td></td>
<td><img src="wp-content/uploads/physics/physics_Lab_041.jpg" /></td>
</tr>
<tr>
<td>4</td>
<td>Быстро приблизить катушку к северному полюсу магнита</td>
<td></td>
<td></td>
<td><img src="wp-content/uploads/physics/physics_Lab_042.jpg" /></td>
</tr>
<tr>
<td>5</td>
<td>Оставить катушку неподвижной после</td>
<td></td>
<td></td>
<td><img src="wp-content/uploads/physics/physics_Lab_043.jpg" /></td>
</tr>
<tr>
<td>6</td>
<td>Быстро вытащить катушку от северного полюса магнита</td>
<td></td>
<td></td>
<td><img src="wp-content/uploads/physics/physics_Lab_044.jpg" /></td>
</tr>
<tr>
<td>7</td>
<td>Медленно вставить в катушку магнит северным полюсом</td>
<td></td>
<td></td>
<td><img src="wp-content/uploads/physics/physics_Lab_045.jpg" /></td>
</tr>
<tr>
<td>8</td>
<td>Медленно вытащить магнит из катушки</td>
<td></td>
<td></td>
<td><img src="wp-content/uploads/physics/physics_Lab_046.jpg" /></td>
</tr>
<tr>
<td>9</td>
<td>Быстро вставить в катушку 2 магнита северным полюсом</td>
<td></td>
<td></td>
<td><img src="wp-content/uploads/physics/physics_Lab_047.jpg" /></td>
</tr>
<tr>
<td>10</td>
<td>Повторить опыт  для магнита южным полюсом</td>
<td></td>
<td></td>
<td><img src="wp-content/uploads/physics/physics_Lab_048.jpg" /></td>
</tr>
<tr>
<td>11</td>
<td>Быстро вытащить магнит из катушки после опыта 10</td>
<td></td>
<td></td>
<td><img src="wp-content/uploads/physics/physics_Lab_049.jpg" /></td>
</tr>
<tr>
<td>12</td>
<td>Быстро вставить в катушку 2 магнита южными полюсами</td>
<td></td>
<td></td>
<td><img src="wp-content/uploads/physics/physics_Lab_050.jpg" /></td>
</tr>
</table>
<p class="Content2"><b><i><u>Сделайте вывод</u></i></b> на основе проведённых наблюдений</p>
<p class="LabContent2"><b><i><u>Контрольные вопросы</u></i></b>:</p>
<ol class="align_justify">
<li>Сформулируйте правило Ленца  Связь его с законом сохранения энергии?</li>
<li>Примеры  применения индукционного тока практике.</li>
</ol>
<p><!--end of Изучение явления электромагнитной индукции -->	</p>
<p><!--Определение показателя преломления стекла-->	</p>
<div class="LabH1">«Определение показателя преломления стекла»</div>
<p class="PurposeLabWork"><b><i><u>Цель работы</u></i></b>: определить показатель преломления стеклянной пластины</p>
<p class="EquipmentLabWork"><b><i><u>Оборудование</u></i></b>: стеклянная пластина, имеющая форму трапеции, лазерная указка, карандаш, линейка, справочник</p>
<p class="Content2"><b><i><u>Описание работы</u></i></b>:</p>
<p class="Content2">После прохождения через стеклянную плоскопараллельную пластину луч света смещается, однако его направление остается прежним. Анализируя  ход луча света, можно с помощью геометрических построений определить  показатель преломления стекла </p>
<table class="table_16TimesBoldItalic_noBorder">
<tr>
<td><span class="Content2_Times14BoldItalic">n =</span></td>
<td><img src="wp-content/uploads/physics/physics_Lab_051.png" /></td>
</tr>
</table>
<p class="Content2">где <span class="Content2_Times14BoldItalic">&#945;</span>  и <span class="Content2_Times14BoldItalic">&#947;</span>  &#8212; соответственно угол падения и преломления светового луча.</p>
<p class="LabContent2"><b><i><u>Указания к выполнению работы</u></i></b>:</p>
<ol class="align_justify">
<li>Обозначьте карандашом границы стеклянной пластины в тетради, как показано на рисунке.</li>
<li>Направьте световой луч лазерной указки под некоторым углом к верхней грани пластины. Вдоль падающего на пластину и вышедшего из нее световых пучков поставьте точки 1, 2, 3, 4. Затем снимите пластину и с помощью  линейки прочертите  падающий, выходящий и преломленный лучи</li>
<li>Через точку пересечения верхней грани пластины и падающего луча  проведите <b>&#8869;</b> сквозь пластину и отметьте углы падения <span class="Content2_Times14BoldItalic">&#945;</span> и преломления <span class="Content2_Times14BoldItalic">&#947;</span></li>
<div id="block10x10center"><img src="wp-content/uploads/physics/physics_Lab_052.jpg" /></div>
<li>Далее постройте прямоугольные треугольники <span class="Content2_Times14BoldItalic">&#916;ABE</span> и <span class="Content2_Times14BoldItalic">&#916;СВЕ</span>, у которых гипотенузы равны, т.е. <span class="Content2_Times14BoldItalic">AB=BC</span></li>
<li>Так как:<br />
<table class="table_11Tahoma_noBorder">
<tr>
<td><span class="Content2_Times14BoldItalic">sin &#945; =</span></td>
<td><img src="wp-content/uploads/physics/physics_Lab_053.png" /></td>
<td>, а <span class="Content2_Times14BoldItalic">sin &#947; =</span></td>
<td><img src="wp-content/uploads/physics/physics_Lab_054.png" /></td>
</tr>
</table>
<p class="Content2">то формула для определения показателя преломления примет вид:</p>
<table class="table_11Tahoma_noBorder">
<tr>
<td><span class="Content2_Times14BoldItalic">n =</span></td>
<td><img src="wp-content/uploads/physics/physics_Lab_051.png" /></td>
<td><span class="Content2_Times14BoldItalic"> =</span></td>
<td><img src="wp-content/uploads/physics/physics_Lab_055.png" /></td>
</tr>
</table>
<p class="Content2">Сравните полученный результат с табличным, рассчитайте ошибку эксперимента</p>
<table class="table_16TimesBoldItalic_noBorder">
<tr>
<td><span class="Content2_Times22BoldItalic">&#949;</span> =</td>
<td><img src="wp-content/uploads/physics/physics_Lab_056.png" /></td>
<td>&#183;100%</td>
</tr>
</table>
</li>
</ol>
<p class="Content2"><b><i><u>Сделайте вывод</u></i></b></p>
<p class="LabContent2"><b><i><u>Контрольные вопросы</u></i></b>:</p>
<ol class="align_justify">
<li>Что называют относительным показателем преломления прозрачной среды?</li>
<li>Привести примеры применения явлений отражения и преломления в практике.  </li>
</ol>
<p><!--end of Определение показателя преломления стекла -->	</p>
<p><!--Наблюдение интерференции и дифракции света-->	</p>
<div class="LabH1">«Наблюдение интерференции и дифракции света»</div>
<p class="PurposeLabWork"><b><i><u>Цель работы</u></i></b>: изучить характерные особенности интерференции и дифракции света.</p>
<p class="EquipmentLabWork"><b><i><u>Оборудование</u></i></b>: проволочное кольцо с ручкой, стакан с раствором  мыла, стеклянная трубка, пластинки стеклянные -2 шт., СД -диски; картонная рамка с проволочкой; капроновая ткань, лампа с прямой нитью накала.</p>
<p class="Content2"><b><i><u>Описание работы</u></i></b>:</p>
<div id="block10x10center"><img src="wp-content/uploads/physics/physics_Lab_057.jpg" /></div>
<p class="Content2"><b><i><u>Часть 1: Наблюдение интерференции света</u></i></b>:</p>
<p class="Content2">Для наблюдения интерференции при монохроматическом излучении в пламя спиртовки вносят комочек ваты, смоченной раствором хлорида натрия. При этом пламя окрашивается в желтый цвет. Опуская проволочное кольцо 4 в раствор мыла 5, получают мыльную пленку, располагают ее вертикально и рассматривают на темном фоне при освещении желтым светом спиртовки наблюдают образование темных и желтых горизонтальных полос (рис.2)</p>
<div id="block10x10center"><img src="wp-content/uploads/physics/physics_Lab_058.jpg" /></div>
<p class="Content2"><b><i><u>Часть 2: Наблюдение интерференции света</u></i></b>:</p>
<p class="Content2">Дифракция света проявляется в  огибании светом препятствий, в проникновении света в область тени. Распределение интенсивности света за неоднородностью среды характеризует дифракционную картину, которую наблюдают на тонкой нити. Рамку с нитью располагают на фоне горящей лампы (рис.3)</p>
<div id="block10x10center"><img src="wp-content/uploads/physics/physics_Lab_059.jpg" /></div>
<p class="Content2"> В капроновой ткани имеется два выделенных взаимно перпендику¬лярных направления. Поворачивая ткань вокруг оси, смотрят на нить горящей лампы сквозь ткань, добиваясь четкой дифракционной картины в виде двух скрещенных под прямым углом дифракционных полос (дифракционный крест)</p>
<p class="LabContent2"><b><i><u>Указания к выполнению работы</u></i></b>:</p>
<ol class="align_justify">
<li>Зарисуйте интерференционную картину, полученную на мыльной пленке при освещении ее желтым светом.</li>
<li>Опишите интерференционную картину от двух сжатых стеклянных пластинок (в зависимости от силы сжатия)</li>
<li>Опишите интерференционную картину при освещении СД-6</li>
<li>Зарисуйте дифракционную картину, наблюдаемую за тонкой нитью</li>
<li>Зарисуйте наблюдаемый дифракционный крест</li>
</ol>
<p class="Content2"><b><i><u>Сделайте вывод</u></i></b></p>
<p class="LabContent2"><b><i><u>Контрольные вопросы</u></i></b>:</p>
<ol class="align_justify">
<li>Назовите необходимое условие  возникновения интерференции. Приведите примеры ее проявления в природе и применения в практике</li>
<li>Назовите  необходимое условие  возникновения дифракции. Приведите  примеры ее проявления в природе и применения в практике</li>
</ol>
<p><!--end of Наблюдение интерференции и дифракции света -->	</p>
<p><!--Наблюдение сплошного и линейчатого спектров-->	</p>
<div class="LabH1">«Наблюдение сплошного и линейчатого спектров»</div>
<p class="PurposeLabWork"><b><i><u>Цель работы</u></i></b>: изучить особенности линейчатого спектра газов и сплошного спектра излучения твердых тел</p>
<p class="EquipmentLabWork"><b><i><u>Оборудование</u></i></b>: проекционный аппарат, спектральные трубки с водородом, гелием, неоном, криптоном, высоковольтный индуктор, источник питания,  штатив, соединительные провода  стеклянная пластина</p>
<p class="Content2"><b><i><u>Описание работы</u></i></b>:</p>
<div id="block10x10center"><img src="wp-content/uploads/physics/physics_Lab_060.jpg" /></div>
<p class="LabContent2"><b><i><u>Указания к выполнению работы</u></i></b>:</p>
<ol class="align_justify">
<li>Расположите стеклянную пластину горизонтально перед глазом. Сквозь грани, составляющие угол 45°, наблюдайте светлую вертикальную полоску на экране – изображение диафрагмы проекционного аппарата  (рис.1)</li>
<li>Выделите основные цвета полученного сплошного спектра и запишите их в наблюдаемой последовательности.</li>
<li>Повторите опыт, рассматривая полоску через грани, образующие  угол 60<sup>o</sup> (рис.1). Запишите различия в виде спектров</li>
<div id="block10x10center"><img src="wp-content/uploads/physics/physics_Lab_061.jpg" /></div>
<li>Наблюдайте линейчатые спектры водорода, гелия или неона, рассматривая светящиеся спектральные трубки сквозь грани стеклянной пластины . Запишите наиболее яркие линии спектров</li>
<li>Проведите наблюдение сплошного спектра излучения лампы накаливания с помощью плоскопараллельной пластинки. Опишите наблюдаемый спектр.</li>
</ol>
<p class="LabContent2"><b><i><u>Контрольные вопросы</u></i></b>:</p>
<ol class="align_justify">
<li>Что называют спектральным анализом?</li>
<li>Какие операции нужно проделать с крупицей вещества, чтобы узнать ее химический состав с помощью спектрального анализа. Как это можно применять в пищевом и кондитерском производстве?</li>
</ol>
<p><!--end of Наблюдение сплошного и линейчатого спектров -->	</p>
<p><!--Изучение взаимодействия заряженных частиц и ядерных реакций по фотографиям-->	</p>
<div class="LabH1">«Изучение взаимодействия заряженных частиц и ядерных реакций по фотографиям»</div>
<p class="PurposeLabWork"><b><i><u>Цель работы</u></i></b>: проанализировать фотографии треков заряженных частиц, движущихся в магнитном поле и участвующих в ядерных реакциях.</p>
<p class="EquipmentLabWork"><b><i><u>Оборудование</u></i></b>: фотография трека заряженной частицы в камере Вильсона, помещенной в магнитное поле, фотография треков частиц при реакции взаимодействия ? &#8212; частицы с ядром атома азота</p>
<p class="Content2"><b><i><u>Описание работы</u></i></b>:</p>
<p class="Content2"> На фотографии (рис.1), сделанной в камере Вильсона, помещенной в магнитное поле, изображены траектории двух заряженных частиц. Трек I на фотографии принадлежит протону, трек II- частице, которую надо идентифицировать. Начальные скорости обеих частиц одинаковы и ? краю фотографии.  Линии индукции внешнего магнитного поля ? плоскости фотографии. Идентификация неизвестной частицы с зарядом q и массой т осуществляется путем сравнения ее удельного заряда</p>
<div id="block10x10center"><img src="wp-content/uploads/physics/physics_Lab_063.png" /></div>
<p class="Content2">c удельным зарядом протона</p>
<div id="block10x10center"><img src="wp-content/uploads/physics/physics_Lab_064.png" /></div>
<table class="table_11Tahoma_noBorder">
<tr>
<td><img src="wp-content/uploads/physics/physics_Lab_062.jpg" /></td>
</tr>
<tr>
<td>
<table class="table_11Tahoma_noBorder">
<tr>
<td width="300px">Рисунок 1</td>
<td>Рисунок 2</td>
</tr>
</table>
</td>
</tr>
</table>
<p class="Content2">Под действием силы Лоренца заряженная частица движется по окружности радиусом <span class="Content2_Times14BoldItalic">R<sub>1</sub></span>.  По второму закону Ньютона: <span class="Content2_Times14BoldItalic">m &#183; a = F</span> Или:</p>
<div id="block10x10center"><img src="wp-content/uploads/physics/physics_Lab_065.png" /></div>
<p class="Content2"> где <span class="Content2_Times14BoldItalic">B</span> – магнитная индукция. Тогда:</p>
<div id="block10x10center"><img src="wp-content/uploads/physics/physics_Lab_066.png" /></div>
<p class="Content2">для протона аналогично:</p>
<div id="block10x10center"><img src="wp-content/uploads/physics/physics_Lab_067.png" /></div>
<p class="Content2">или:</p>
<div id="block10x10center"><img src="wp-content/uploads/physics/physics_Lab_068.png" /></div>
<p class="Content2">Для измерения радиуса кривизны трека вычерчивают две хорды и проводят к ним перпендикуляры из центров хорд (рис.2). Центр окружности лежит на пересечении этих перпендикуляров. Ее радиус измеряют линейкой.</p>
<p class="Content2Top">На фотографии, сделанной в камере Вильсона, помещенной в магнитное поле (рис.3), изучают ядерную реакцию взаимодействия альфа-частицы с атомом азота, впервые осуществленную в 1919 году Э. Резерфордом. В результате реакции образуется протон и частица.</p>
<div id="block10x10center"><img src="wp-content/uploads/physics/physics_Lab_069.jpg" /></div>
<p class="Content2">Рисунок 3</p>
<p class="LabContent2"><b><i><u>Указания к выполнению работы</u></i></b>:</p>
<ol class="align_justify">
<li>Определите знак заряда неизвестной частицы на фотографии (рис.1).</li>
<li>Укажите на фотографии направление вектора индукции В.</li>
<li>Измерьте радиусы треков обеих частиц  <span class="Content2_Times14BoldItalic">R<sub>1</sub></span> и  <span class="Content2_Times14BoldItalic">R<sub>2</sub></span></li>
<li>Сравните удельные заряды частиц и идентифицируйте неизвестную частицу. Сделайте вывод.</li>
<li>Отметьте, какой трек принадлежит альфа &#8212; частице, какой &#8212; протону.</li>
<li>Укажите: какой элемент образовался при реакции. Запишите уравнение реакции. Сделайте вывод.</li>
</ol>
<p class="LabContent2"><b><i><u>Контрольные вопросы</u></i></b>:</p>
<ol class="align_justify">
<li>Что называют радиоактивным изотопом?</li>
<li>Приведите примеры применения радиоактивных изотопов и радиоактивного облучения в пищевом производстве (конкретный пример)</li>
</ol>
<p><!--end of Изучение взаимодействия заряженных частиц и ядерных реакций по фотографиям -->	</p>
<p class="Content2">
<p class="Content2">
<p class="Content2">
<p class="Content2">
<p class="Content2">
<p class="Content2">
<p class="Content2">
<p><!--Определение фокусного расстояния линзы-->	</p>
<div class="LabH1">«Определение фокусного расстояния линзы»</div>
<p class="PurposeLabWork"><b><i><u>Цель работы</u></i></b>: определить фокусное расстояние собирающей линзы</p>
<p class="EquipmentLabWork"><b><i><u>Оборудование</u></i></b>: источник постоянного тока, лампочка на подставке, ключ, соединительные провода, экран, линза выпуклая, линза вогнутая</p>
<p class="LabContent2"><b><i><u>Указания к выполнению работы</u></i></b>:</p>
<ol class="align_justify">
<li>Собрать электрическую цепь, замкнуть ее, разместив приборы так, чтобы на экране образовалось резкое изображение нити лампы в собирающей линзе ( рис. )</li>
<div id="block10x10center"><img src="wp-content/uploads/physics/physics_Lab_070.jpg" /></div>
<li>Произвести соответствующие  измерения расстояний:<br /> а) от линзы до экрана &#8212; <span class="Content2_Times14BoldItalic">f</span>;<br /> б) от линзы до лампочки &#8212; <span class="Content2_Times14BoldItalic">d</span>;</li>
<li>Вычислить фокусное расстояние <span class="Content2_Times14BoldItalic">F</span> собирающей линзы, используя формулу линзы:</li>
<div id="block10x10center"><img src="wp-content/uploads/physics/physics_Lab_071.png" /></div>
<li>Попытайтесь повторить опыт с рассеивающей линзой. Почему изображение на экране вам не удается получить? Где надо поместить экран, чтобы увидеть изображение лампы?</li>
<li>Покажите на схемах изображение лампы в собирающей и рассеивающей  линзах.</li>
</ol>
<p class="Content2"><b><i><u>Сделайте вывод</u></i></b></p>
<p class="LabContent2"><b><i><u>Контрольные вопросы</u></i></b>:</p>
<ol class="align_justify">
<li>Что называют фокусным расстоянием и оптической силой линзы? В каких единицах они измеряются?</li>
<li>Проведите примеры применения линз в практике, быту</li>
</ol>
<p><!--end of Определение фокусного расстояния линзы --></p>
]]></content:encoded>
			<wfw:commentRss>http://kshu.su/?feed=rss2&#038;p=107</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>5. Microsoft Access. Уровень 1. Создание отчётов</title>
		<link>http://kshu.su/?p=72</link>
		<comments>http://kshu.su/?p=72#comments</comments>
		<pubDate>Mon, 29 Sep 2014 17:10:28 +0000</pubDate>
		<dc:creator><![CDATA[Kirill Schurakhtenkov]]></dc:creator>
				<category><![CDATA[Microsoft Access]]></category>

		<guid isPermaLink="false">http://kshu/?p=72</guid>
		<description><![CDATA[Простые отчёты, отчёты с группировкой(итоговые). Сортировка отчётов. Разрыв страниц в отчётах. Создание отчётов с помощью мастера, источники данных одна таблица, две связанные таблицы и запрос по связанным таблицам. Отчёты можно создавать на основании таблицы, таблиц, запроса и запросов. Для этой практической работы, должна быть открыта база данных БД_Студенты4 сохранённая после предыдущей работы. Отчёт 1 Создадим [&#8230;]]]></description>
				<content:encoded><![CDATA[<p class="Content2">Простые отчёты, отчёты с группировкой(итоговые). Сортировка отчётов. Разрыв страниц в отчётах. Создание отчётов с помощью мастера, источники данных одна таблица, две связанные таблицы и запрос по связанным таблицам.</p>
<p><span id="more-72"></span>	</p>
<p class="Content2">Отчёты можно создавать на основании таблицы, таблиц, запроса и запросов.</p>
<p class="Content2">Для этой практической работы, должна быть открыта база данных <b>БД_Студенты4</b> сохранённая после предыдущей работы.</p>
<p class="Content2Top"><b>Отчёт 1</b></p>
<p class="Content2">Создадим отчёт с помощью мастера, <i>Создание/Очёты/Мастер отчётов</i>:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-076.jpg" alt="1" /></div>
<p class="Content2">На первом шаге диалога, в списке источника данных выбираем таблицу <i>Студенты</i>, внизу появятся все поля этой таблицы, кнопкой > перенесём поля: <i>НомерСтудБилета</i>, <i>Фамилия</i>, <i>Имя</i>, <i>Отчество</i>, <i>Деятельность</i> и <i>Стипендия</i>, жмём <i>Далее</i>, на втором шаге предлагается выбрать группировку(мы её разберём позже) по умолчанию ничего не предложено, жмём <i>Далее</i>, на третьем шаге предлагают задать сортировку записей, её лучше делать в режиме предварительного просмотра отчёта, также жмём <i>Далее</i>, на четвёртом шаге выбираем табличный макет, книжную ориентацию и активируем флажок настройки ширины полей, жмём <i>Далее</i>, на последнем шаге имя отчёта <i>Студенты</i> выбираем флажок <i>Просмотреть отчёт</i>  и жмём <i>Готово</i></p>
<p class="Content2">Открылся отчёт в режиме предварительного просмотра. Внизу справа листа отчёта указана текущая страница и их общее количество. Внизу окна программы кнопки навигации по листам отчёта. Правый клик по вкладке отчёта, закроем его. Слева панель отобразила новый тип объекта базы данных – отчёт <i>Студенты</i>:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-077.jpg" alt="1" /></div>
<p class="Content2Top"><b>Отчёт 2</b></p>
<p class="Content2">Создадим отчёт с помощью мастера, <i>Создание/Очёты/Мастер отчётов</i>:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-076.jpg" alt="1" /></div>
<p class="Content2">На первом шаге диалога, в списке источника данных выбираем запрос <i>Выбор факультета</i>, внизу появятся все поля этой таблицы, кнопкой <b>>></b> перенесём все поля, жмём <i>Далее</i>, на втором шаге по умолчанию предложена группировка по полю <i>КодФакультета</i>, это потому что поле <i>КодФакультета</i> есть внешний ключ и содержит повторяющиеся записи, поэтому программа предложила группировку именно по этому полю. Для нас это не важно просто, жмём <i>Далее</i>, на третьем шаге жмём <i>Далее</i>, на четвёртом шаге выбираем ступенчатый макет, альбомную ориентацию и активируем флажок настройки ширины полей, жмём <i>Далее</i>, на последнем шаге имя отчёта <i>Выбор факультета</i> выбираем флажок <i>Просмотреть отчёт</i>  и жмём <i>Готово</i></p>
<p class="Content2">Поскольку отчёт строится по параметрическому запросу, то он будет требовать ввода значения для поля <i>КодФакультета</i>, введём <b>3</b> и ОК. В результате будет построен отчёт для студентов из 3-го факультета. Чтобы изменить внешний вид полей, нужно перейти в режим макета или конструктора. Перейдём в режим макета  правым кликом по вкладке или командой <i>Конструктор/Режимы</i> далее в списке режимов выбрать режим макета:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-078.jpg" alt="1" /></div>
<p class="Content2">Теперь выберем несколько полей и на вкладке <i>Формат</i> группа <i>Форматирование элементов управления</i> в списке <i>Контур фигуры</i> выберем любой цвет:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-079.jpg" alt="1" /></div>
<p class="Content2">Перейдём в режим предварительного просмотра, чтобы проверить результат перед печатью. Правый клик по вкладке закроем отчёт. </p>
<p class="Content2Top"><b>Отчёт 3</b></p>
<p class="Content2">Создадим отчёт с помощью мастера, <i>Создание/Очёты/Мастер отчётов</i>:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-076.jpg" alt="1" /></div>
<p class="Content2">На первом шаге диалога, в списке источника данных выбираем таблицу <i>Факультеты</i>, кнопкой <b>>></b> перенесём все поля, теперь выбираем таблицу <i>Студенты</i> и выбираем поля <i>НомерСтудБилета</i>, <i>Фамилия</i>, <i>Имя</i>, <i>Отчество</i> и <i>Деятельность</i>, жмём <i>Далее</i>, на втором шаге подобно формам слева окно с выбором главной таблицей, а справа результат полей таблиц на основании связи между таблицами. Выбираем главной таблицу <i>Факультеты</i>. Поскольку таблица <i>Факультеты</i> является главной, то справа расположение её полей будут выше относительно полей таблицы <i>Студенты</i>, жмём <i>Далее</i>, на третьем и четвёртом  шаге жмём <i>Далее</i>, на пятом шаге выбираем блочный макет, альбомную ориентацию и активируем флажок настройки ширины полей, жмём <i>Далее</i>, на последнем шаге имя отчёта <i>Факультеты</i> выбираем флажок <i>Просмотреть отчёт</i>  и жмём <i>Готово</i></p>
<p class="Content2">На предварительном просмотре под каждой записью главной таблицы <i>Факультеты</i>, расположены соответствующие записи вторичной таблицы <i>Студенты</i>. Сохраним и закроем отчёт.</p>
<p class="Content2Top"><b>Отчёт 4</b></p>
<p class="Content2">Создадим отчёт с помощью мастера, <i>Создание/Очёты/Мастер отчётов</i>:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-076.jpg" alt="1" /></div>
<p class="Content2">На первом шаге диалога, в списке источника данных выбираем запрос <i>Экскурсии 2014</i>, кнопкой <b>>></b> перенесём все поля, жмём <i>Далее</i>, на втором шаге слева окно с выбором главной таблицей, а справа результат полей таблиц на основании связи между таблицами. Выбираем главной таблицу <i>Экскурсии</i>, жмём <i>Далее</i>, на третьем и четвёртом  шаге жмём <i>Далее</i>, на пятом шаге выбираем ступенчатый макет, альбомную ориентацию и активируем флажок настройки ширины полей, жмём <i>Далее</i>, на последнем шаге имя отчёта <i>Экскурсии 2014</i> выбираем флажок <i>Просмотреть отчёт</i>  и жмём <i>Готово</i></p>
<p class="Content2">На предварительном просмотре под каждой записью главной таблицы <i>Экскурсии</i>, расположены соответствующие записи таблиц <i>Студенты</i> и <i>Факультеты</i>. Сохраним и закроем отчёт.</p>
<p class="Content2Top"><b>Отчёт 5</b></p>
<p class="Content2">Создадим отчёт с помощью мастера, <i>Создание/Очёты/Мастер отчётов</i>:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-076.jpg" alt="1" /></div>
<p class="Content2">На первом шаге диалога, в списке источника данных выбираем таблицу <i>Студенты</i>, внизу появятся все поля этой таблицы, кнопкой > перенесём поля: <i>НомерСтудБилета</i>, <i>Фамилия</i>, <i>Имя</i>, <i>Отчество</i>, <i>Деятельность</i>, <i>Стипендия</i> и <i>КодФакультета</i>, жмём <i>Далее</i>, на втором шаге предлагается выбрать группировку(вспомним что такое групповой запрос) поскольку мы выбрали связанное поле <i>КодФакультета</i>, то программа предлагает выбрать группировку. По умолчанию группировка по полю <i>КодФакультета</i>(если нужно изменить группировку, воспользуемся кнопками <b><</b> и <b>></b> для удаления и выбора полей соответственно), оставляем группировку по полю <i>КодФакультета</i> и жмём <i>Далее</i>, на третьем шаге предлагают задать сортировку записей, а также в связи с тем, что у нас выбрано групповое поле, появилась кнопка <i>Итоги</i>, жмём на неё, программа построила поля по которым можно применить групповые операции, выберем операцию <b>Sum</b> правее оставим флажок <i>данные и итоги</i> и <i>Вычислить проценты</i> жмём ОК и <i>Далее</i>, на четвёртом шаге выбираем ступенчатый макет, альбомную ориентацию и активируем флажок настройки ширины полей, жмём <i>Далее</i>, на последнем шаге имя отчёта <i>Студенты по факультетам</i>, выбираем флажок <i>Просмотреть отчёт</i>  и жмём <i>Готово</i></p>
<p class="Content2">Открылся отчёт в режиме предварительного просмотра. Возможно данные поля <i>Стипендия</i> не уместились. Правый клик по вкладке отчёта и переходим в режим макета. Двигая и изменяя размер полей, освободим место для данных поля <i>Стипендия</i>.</p>
<p class="Content2">Теперь проверим результат отчёта(можно и в режиме макета). Первый факультет содержит 4 студента, их общая сумма отображена напротив поля <i>Sum</i>. Непонятную строку <i>С разделителями разрядов</i> лучше изменить на <i>Доля суммы факультета</i> </p>
<p class="Content2">Оформим внешний вид для полей и фона самостоятельно с помощью команд: <i>Конструктор/Темы и Формат/Форматирование элементов управления/Заливка фигур</i> или <i>Контур фигур</i>. Правый клик по вкладке закроем отчёт.</p>
<div class="Header2">Сортировка отчётов</div>
<p class="Content2">Откроем отчёт <i>Студенты по факультетам</i> и перейдём в режим макета. Проверим расположение одинаковых фамилий и имён в 3-м факультете.</p>
<p class="Content2">Выполним команду <i>Конструктор/Группировка и итоги/Группировка</i>:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-080.jpg" alt="1" /></div>
<p class="Content2">Внизу отчёт, отделился областью <i>Группировка, сортировка и итоги</i> и две кнопки <i>Добавить группировку</i> и <i>Добавить сортировку</i>. Выбрана группировка по полю <i>КодФакультета</i>:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-081.jpg" alt="1" /></div>
<p class="Content2">Нажимаем <i>Добавить сортировку</i> в поле со списком выбираем пункт <i>Фамилия</i>. Повторим для пунктов <i>Имя</i> и <i>Отчество</i>:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-082.jpg" alt="1" /></div>
<p class="Content2">Проверим сортировку одинаковых фамилий и имён в 3-м факультете.</p>
<div class="Header2">Самостоятельная работа</div>
<p class="Content2">Выделите зелёным цветом заливку, стипендий менее 800. (делаем по тому же принципу как мы делали в формах с помощью условного форматирования)</p>
<p class="Content2">Аналогично для поля <i>Сумма по факультету</i> выделите фон жёлтым цветом для значений более 800 руб. Подсказка. Выделите поле с суммой и примените условное форматирование.</p>
<div class="Header2">Разрывы страниц в отчётах</div>
<p class="Content2">По умолчанию большие отчёты идут сплошными страницами и разорваны без учёта начала той или иной группы. Настроим разрывы в отчётах.</p>
<p class="Content2">В режиме конструктора правый клик по заголовку группы <i>КодФакультета</i>, выбираем <i>Свойства</i>:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-083.jpg" alt="1" /></div>
<p class="Content2">Появится панель <i>Окно свойств</i> на вкладке <i>Макет</i> свойство <i>Конец страницы</i> выбираем пункт <b>До раздела</b>:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-084.jpg" alt="1" /></div>
<p class="Content2">Переключаемся в режим предварительного просмотра и пролистаем студентов по факультетам. Переключаемся в режим конструктора</p>
<div class="Header2">Самостоятельная работа</div>
<p class="Content2">Построить отчёт с расчётом средней стипендии по каждой деятельности.</p>
]]></content:encoded>
			<wfw:commentRss>http://kshu.su/?feed=rss2&#038;p=72</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>4. Microsoft Access. Уровень 1. Обработка данных</title>
		<link>http://kshu.su/?p=70</link>
		<comments>http://kshu.su/?p=70#comments</comments>
		<pubDate>Mon, 29 Sep 2014 17:09:42 +0000</pubDate>
		<dc:creator><![CDATA[Kirill Schurakhtenkov]]></dc:creator>
				<category><![CDATA[Microsoft Access]]></category>

		<guid isPermaLink="false">http://kshu/?p=70</guid>
		<description><![CDATA[Отбор данных с помощью фильтра. Сортировка данных. Итоговые операции. Поиск и замена. Запрос на выборку данных из одной и нескольких таблиц. Вычисляемые поля в запросах. Параметрический запрос. Запрос с группировкой. Сортировка несмежных полей Откроем файл базы данных БД_Студенты_4. Выбираем Включить содержимое. Вспомним, как создавать формы и создадим форму по всем полям студентов и назовём её [&#8230;]]]></description>
				<content:encoded><![CDATA[<p class="Content2">Отбор данных с помощью фильтра. Сортировка данных. Итоговые операции. Поиск и замена. Запрос на выборку данных из одной и нескольких таблиц. Вычисляемые поля в запросах. Параметрический запрос. Запрос с группировкой. Сортировка несмежных полей</p>
<p><span id="more-70"></span>	</p>
<p class="Content2Top">Откроем файл базы данных <a href ="wp-content/uploads/access/БД_Студенты_4.accdb">БД_Студенты_4</a>. Выбираем <i>Включить содержимое</i>. Вспомним, как создавать формы и создадим форму по всем полям студентов и назовём её <i>Студенты</i></p>
<div class="Header2">Фильтры</div>
<p class="Content2">Откроем таблицу <i>Студенты</i>. Раскроем в заголовке поля <i>Деятельность</i>, список его свойств, снимем галочку <i>Выделить всё</i> и активируем галочку <i>Музыкант</i>:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-043.jpg" alt="1" /></div>
<p class="Content2">Жмём ОК и таблица отобразит записи студентов музыкантов, а заголовок поля <i>Деятельность</i>, отобразит значок с фильтром. Кроме этого значка, режим фильтра виден на вкладке <i>Главная</i> в группе <i>Сортировка и фильтр</i> – выделена кнопка <i>Фильтр</i>:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-044.jpg" alt="1" /></div>
<p class="Content2">Раскроем поле <i>Деятельность</i>, выберем галочку <i>Выделить всё</i> и жмём ОК.</p>
<p class="Content2">Отобразим студентов которые помогают библиотеке , но другим способом: правый клик в ячейке <i>Библиотекарь</i> и выбираем <i>Равно &#171;Библиотекарь&#187;</i>. Отменим эту операцию опять же правый клик в поле <i>Библиотекарь</i>  и Снять фильтр с <i>Деятельность</i>:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-045.jpg" alt="1" /></div>
<p class="Prgf_BkgCollFill">Если бы мы отменили предыдущий фильтр активной кнопкой <i>Фильтр</i> из <i>Главная/Сортировка и фильтр</i>, то она бы снова отобразила всех кассиров.</p>
<p class="Content2Top">Отобразим с помощью фильтра студентов, стипендия которых больше 800: правый клик по любой ячейке поля <i>Стипендия</i>, выбираем Числовые фильтры/Больше, в диалоге вводим 800 и ОК. Таблица отобразит записи студентов, стипендия которых больше чем 800. Снимем фильтр кнопкой <i>Фильтр</i> на <i>Главная/Сортировка и фильтр</i>.</p>
<p class="Content2">Отобразим в этой таблице студенток со стипендиями до 800р и студентов со стипендиями: раскроем в заголовке поля <i>Пол</i> список, выберем галочку <i>Женский</i> и ОК. Затем раскроем в заголовке поля <i>Стипендия</i> список, выберем пункт <i>Числовые фильтры/Меньше</i>,  в диалоге вводим 800 и ОК. Получили ????? строк. Теперь в этом же условии нужно ЕЩЁ отобразить мужчин, стипендия которых больше 800р: Не снимая предыдущего фильтра, выбираем команду <i>Главная/Сортировка и фильтр</i>/Дополнительно/Изменить фильтр (не перепутать кнопку Дополнительно, из группы Записи):</p>
<p class="Content2">Появится бланк с нашим условием: <i>Женский <= 800</i>. Внизу две вкладки <i>Найти</i> и <i>Или</i>, активируем вкладку <i>Или</i> и вводим ещё одно условие в поле <i>Пол</i> – <i>Мужской</i> а в поле <i>Стипендия</i> &#8212; <i>>=800</i>.</p>
<p class="Content2">Теперь отобразим результат кнопкой <i>Фильтр</i> на <i>Главная/Сортировка и фильтр</i>. Будут отображены строки согласно нашему сложному условию.</p>
<p class="Content2">Снимем фильтр кнопкой <i>Фильтр</i> на вкладке <i>Главная</i>  группа <i>Сортировка и фильтр</i>. Закроем таблицу <i>Студенты</i>.</p>
<p class="Content2Top">Откроем форму <i>Студенты</i>, найдём всех IT-специалистов: правый клик по полю <i>Деятельность</i> (не заголовку) и выберем пункт <i>Равно &#171;IT-специалист&#187;</i> и теперь мы можем в форме пролистать только IT-специалистов.</p>
<p class="Content2">Снимем фильтр кнопкой <i>Фильтр</i> на <i>Главная/Сортировка и фильтр</i>. Закроем форму.</p>
<div class="Header2">Сортировка</div>
<p class="Content2">Откроем таблицу <i>Студенты</i>. Отсортируем поле <i>Деятельность</i> по алфавиту: выделим за заголовок поле <i>Деятельность</i> и выполним команду  <i>Главная/Сортировка и фильтр/По возрастанию</i>.</p>
<p class="Content2">Отменим сортировку командой <i>Главная/Сортировка и фильтр/Удалить сортировку</i>.</p>
<p class="Content2">Отсортируем по ФИО: выделим за заголовки одновременно три столбца <i>Фамилия</i>, <i>Имя</i>, <i>Отчество</i> и выполним команду <i>Главная/Сортировка и фильтр/По возрастанию</i>. Найдём однофамильцев и проверим результат сортировки их имён. Отменим сортировку пунктом <i>Удалить сортировку</i> на <i>Главная/Сортировка и фильтр</i>.</p>
<p class="Content2Top">Однако отсортировать одновременно несмежные поля такой командой нельзя. Несмежные поля сортируются с помощью запросов.</p>
<div class="Header2">Итоги</div>
<p class="Content2">Операция <b>Итоги</b>, помогают быстро получить некоторые вычисления. Для таблицы <i>Студенты</i> нажмём на вкладке <i>Главная</i> в группе <i>Записи</i> кнопку <i>Итоги</i>:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-087.jpg" alt="1" /></div>
<p class="Content2">Внизу программы, появится строка <b>Итог</b>, щёлкнем в этой строке в ячейке поля <i>Стипендия</i> , появится раскрывающийся список:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-088.jpg" alt="1" /></div>
<p class="Content2">Поскольку поле <i>Стипендия</i> содержит числовые данные, то в списке можно выбрать команды для получения суммы, среднего значения, количество записей, максимального и минимального значений в этом поле и другие команды. Проверим количество записей в этом поле:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-089.jpg" alt="1" /></div>
<p class="Content2">Поскольку каждый студент содержит стипендию, то результат будет равен количеству записей таблицы(число записей показано внизу таблицы правее строки <b>Запись</b>, если отключить кнопку <i>Итоги</i>).</p>
<p class="Content2">Теперь удалим две стипендии и проверим – итоговая ячейка отобразила минус два значения.</p>
<p class="Content2Top">Также можно получить итоговый результат по отфильтрованному значению. Например, отобразим с помощью фильтра только студентов:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-090.jpg" alt="1" /></div>
<p class="Content2">и проверим результат в итоговой ячейке. Снимем операцию <b>Итоги</b>, повторным нажатием на кнопку <i>Итоги</i> на вкладке <i>Главная</i>.</p>
<div class="Header2">Поиск и замена</div>
<p class="Content2">Найдём участников КВН: щёлкнем в любой ячейке поля <i>Деятельность</i>, далее <i>Главная/Найти</i> , заполним в диалоге поля:</p>
<p class="Content2"><i>Образец</i> – <b>Участник КВН</b>, <i>Поиск в</i> &#8212; <b>Текущее поле</b>, <i>Совпадение</i> &#8212; <b>С начала поля</b>, <i>Просмотр</i> &#8212; Все. Последовательно нажимаем <i>Найти</i> далее до появления диалога с окончанием поиска.</p>
<p class="Content2">Теперь поменяем всех музыкантов, участниками КВН: щёлкнем в любой ячейке поля <i>Деятельность</i>, далее команда <i>Главная/Заменить</i> заполним в диалоге поля </p>
<p class="Content2"><i>Образец</i> – <b>Музыкант</b>, <i>Заменить на</i> – <b>Участник КВН</b>, <i>Поиск</i> &#8212; <b>Текущее поле</b>, <i>Совпадение</i> &#8212; <b>С любой частью поля</b>, <i>Просмотр</i> &#8212; <b>Все</b>. Нажимаем <i>Заменить всё</i>. Каждый музыкант, теперь будет только участником КВН. При этом отмена действий не возможна. Возможно только повторная замена КВНщиков на музыкантов, НО, если перед первой заменой КВНщики УЖЕ были, то после второй замены они получатся музыкантами.</p>
<p class="Prgf_BkgCollFill">Замена не сработает для поля, которое связано с первичной таблицей, а также, если поле с фиксированным набором значений, ограничено списком.</p>
<p class="Content2Top">Аналогично можно произвести поиск в форме. Если открыть форму в режиме формы, щёлкнуть в поле с данными и выполнить команду <i>Главная/Заменить</i>.</p>
<p class="Content2">Закроем все открытые объекты в базе данных.</p>
<div class="Header2">Запросы на выборку</div>
<p class="Content2">Запросы служат для обработки табличной информации. Они производят отбор записей из одной или нескольких таблиц. Запросы могут сортировать несмежные поля таблиц, и производит вычисления для определённого вывода данных.</p>
<p class="Content2Top"><b>Запрос 1</b></p>
<p class="Content2">В базе <b>БД_Студенты_4</b>, создадим запрос командой: <i>Создание/Запросы/Конструктор запросов</i>:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-046.jpg" alt="1" /></div>
<p class="Content2">В конструкторе запроса появится диалог <i>Добавление таблицы</i> для выбора источника данных, откуда будем вести запрос. Выбираем таблицу <i>Студенты</i>, жмём <i>Добавить</i> и <i>Закрыть</i>:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-047.jpg" alt="1" /></div>
<p class="Content2">В поле конструктора запросов появится панель с полями таблицы <i>Студенты</i>.</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-048.jpg" alt="1" /></div>
<p class="Content2">Удалим эту панель клавишей [Del], а затем снова добавим командой <i>Конструктор/Настройка запроса/Отобразить таблицу</i>:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-074.jpg" alt="1" /></div>
<p class="Content2">Теперь двойной клик по полям в панели, добавим в запрос поля <i>НомерСтудБилета</i>, <i>Фамилия</i>, <i>Имя</i>, <i>Деятельность</i> и <i>Стипендия</i>:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-049.jpg" alt="1" /></div>
<p class="Content2">Поля добавляются слева направо. Добавим в запрос поле <i>Пол</i> и удалим его для практики. Выделим в запросе поле <i>Пол</i> (чёрная стрелка над заголовком) и удалим клавишей [Del]:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-050.jpg" alt="1" /></div>
<p class="Content2">Мы забыли поместить поле <i>Отчество</i>. Методом перетаскивания тянем из панели поле <i>Отчество</i> и располагаем в запросе поверх поля <i>Деятельность</i>:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-051.jpg" alt="1" /></div>
<p class="Content2">И наконец, переместим поле <i>Деятельность</i> за полем <i>Стипендия</i>: Курсор над заголовком поля <i>Деятельность</i> так, чтобы курсор был в виде белой стрелки (если будет чёрная, двигаем немного вниз) затем располагаем курсор над правой границей поля <i>Стипендия</i>:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-052.jpg" alt="1" /></div>
<p class="Content2">Запускаем запрос с отображением результата нашей работы: <i>Конструктор/Результаты/Выполнить</i>:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-053.jpg" alt="1" /></div>
<p class="Content2">Получился результат как в таблице, но только с теми полями, которые мы отобразили. Возвращаемся обратно в режим конструктора правым кликом по вкладке и выбираем пункт <i>Конструктор</i>:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-054.jpg" alt="1" /></div>
<p class="Content2">Упорядочим записи по возрастанию стипендии: в строке <i>Сортировка</i> нашего запроса, для поля <i>Стипендия</i> выбираем <b>по возрастанию<bi>:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-055.jpg" alt="1" /></div>
<p class="Content2">Запускаем запрос и проверяем, что все студенты отсортированы по окладу. Вернёмся в режим конструктора и уберём сортировку по окладу.</p>
<p class="Content2">Двойным кликом добавим в запрос поле <i>КодФакультета</i>  и аналогично отсортируем это поле по возрастанию:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-056.jpg" alt="1" /></div>
<p class="Content2">запускаем запрос и проверяем, что поле <i>КодФакультета</i> отсортирован. Вернёмся в режим конструктора.</p>
<p class="Content2">Теперь мы хотим, чтобы ФИО в каждом факультете тоже были отсортированы. Если мы добавим ещё сортировку по возрастанию для ФИО:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-057.jpg" alt="1" /></div>
<p class="Content2">и запустим запрос, то в результате сортировка будет неправильной т.к. сортировка выполнилась слева направо. Проблема решается так:</p>
<ol class="align_justify">
<li>добавляется ещё одно такое же поле в нашем случае это <i>КодФакультета</i>,</li>
<li>сортируется это поле</li>
<li>отключается видимость этого поля</li>
</ol>
<p class="Content2">Причём поле <i>КодФакультета</i> должно быть крайним левым в запросе:</p>
<p class="Content2Top">Добавим в запрос, второе поле <i>КодФакультета</i> левее ФИО и применим ему сортировку по возрастанию, а сортировку для первого поля <i>КодФакультета</i>  снимем. Запустим запрос. В результате появилось вымышленное имя для второго поля <i>КодФакультета</i>, поскольку два одинаковых поля в таблице быть не должно. Вернёмся в конструктор, и снимем галку Вывод на экран для левого поля <i>КодФакультета</i> :</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-057-2.jpg" alt="1" /></div>
<p class="Content2">и снова запустим запрос. В результате мы получили то, что хотели.</p>
<p class="Content2">Правый клик по вкладке, сохраним запрос под именем <i>Сортировка студентов по факультетам</i>. Правый клик по вкладке, закроем запрос. </p>
<p class="Content2">В левой панели программы MS Access, появился новый объект <b>Запрос</b>, если он не появился, выберите команду <i>Все объекты Access</i>:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-086.jpg" alt="1" /></div>
<p class="Content2">Теперь дважды кликните по нему и программа запустит запрос.</p>
<p class="Content2Top"><b>Запрос 2</b></p>
<p class="Content2">Создадим новый запрос в режиме конструктора:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-046.jpg" alt="1" /></div>
<p class="Content2">В диалоге снова выбираем таблицу <i>Студенты</i>, жмём <i>Добавить</i> и <i>Закрыть</i>. Обратим внимание на звёздочку в панели с полями:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-048.jpg" alt="1" /></div>
<p class="Content2">Сделаем двойной клик по этой звёздочке, мы получим в запросе всего одно поле (со звёздочкой):</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-058.jpg" alt="1" /></div>
<p class="Content2">Звёздочка заменяет отображение всех полей таблицы, если мы запустим запрос. Запустим запрос и увидим отображение всех полей таблицы. В чём удобство этого символа?</p>
<p class="Content2">Если мы хотим вывести все поля таблицы, но при этом что бы выполнялось какое-то условие только для одного поля, мы добавим это поле в запрос и применим нужное для нас условие. Например, заставим запрос выводить все поля таблицы, но только для факультета 3: добавим в запрос поле <i>КодФакультета</i>, затем в строку <i>Условие отбора</i>  введём <b>3</b>:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-059.jpg" alt="1" /></div>
<p class="Content2">Теперь запустим запрос. Появилась таблица, но с лишним полем для <i>КодФакультета</i>, вернёмся в конструктор, и отключим видимость для поля <i>КодФакультета</i>:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-060.jpg" alt="1" /></div>
<p class="Content2">Снова запустим запрос для проверки изменений. Вернёмся в конструктор. Выделим оба поля и удалим их клавишей [Del]:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-061.jpg" alt="1" /></div>
<p class="Content2">Добавим в конструктор запроса, поля <i>Фамилия</i>, <i>Имя</i>, <i>Отчество</i>, <i>Деятельность</i> и <i>Стипендия</i>. Отобразим студентов, у которых стипендия от 800 до 1000 включительно: Курсор в строку <i>Условие отбора</i> для поля <i>Стипендия</i> и вводим <b>between 800 and 1000</b> (что бы лучше было видно текст, нажмём [Shift+F2])</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-062.jpg" alt="1" /></div>
<p class="Content2">ОК, запускаем запрос для проверки. Должно быть 19 записей.</p>
<p class="Content2">Возвращаемся в конструктор, и отобразим студентов, у которых стипендия за пределами предыдущего диапазона, т.е. меньше 800 и больше 1000: изменим наше условие и добавим к нему логическое отрицание – <b>Not</b>:</p>
<p class="Content2"><b>Not between 800 and 1000</b></p>
<p class="Content2">Запускаем запрос для проверки. Должно быть 16 записей.</p>
<p class="Content2Top"><strong>Диапазоны</strong></p>
<p class="Content2">Вместо оператора <b>between</b> можно воспользоваться операторами сравнений, >,<, так, вместо <b>between 800 and 1000</b> можно ввести</p>
<p class="Content2"> <b>>= 800 and <= 1000</b></p>
<p class="Content2">Но вместо <b>Not between 800 and 1000</b> мы вводим </p>
<p class="Content2"><b><800 or >1000</b></p>
<div class="Header2">Самостоятельная работа</div>
<p class="Content2">Отобразить студентов рождённых в 80-90 г.р включительно, т.е. между началом 1980 и концом 1979 года. И сохранить запрос под именем <i>Студенты 80-90 года рождения</i>.</p>
<p class="Content2Top"><b>Запрос 3</b></p>
<p class="Content2">Создадим новый запрос в режиме конструктора:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-046.jpg" alt="1" /></div>
<p class="Content2">В диалоге снова выбираем таблицу <i>Студенты</i>, жмём <i>Добавить</i> и <i>Закрыть</i>. Добавим в запрос поля <i>НомерСтудБилета</i>, <i>Фамилия</i>, <i>Имя</i>, <i>Отчество</i>, <i>Деятельность</i> и <i>Стипендия</i>. Отобразим всех пешеходов: в строке <i>Условие отбора</i> поля <i>Деятельность</i> вводим <b>лаборант</b>, нажимаем [Tab] или щёлкнем в любом месте запроса. Запустим запрос, для проверки работы условия.</p>
<p class="Content2">Аналогично отобразим всех волонтёров (в этом же запросе), но поскольку слева и справа в названии этой деятельности добавлено ещё и пояснение, то в условии требуется добавить управляемые символы <b>*</b>: введём в строку <i>Условие отбора</i> &#8212; <b>*волонтёр*</b>. Программа подставит <i>Like</i> и поместит условие в кавычки:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-063.jpg" alt="1" /></div>
<p class="Content2">Запустим запрос для проверки. Должно быть 6 записей. Правый клик по вкладке, сохраним запрос под именем <i>Волонтёры</i> и закроем его.</p>
<p class="Content2Top"><b>Запрос 4</b></p>
<p class="Content2">Создадим новый запрос в режиме конструктора:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-046.jpg" alt="1" /></div>
<p class="Content2">В диалоге снова выбираем таблицу <i>Студенты</i>, жмём <i>Добавить</i> и <i>Закрыть</i>. Добавим в запрос поля <i>Фамилия</i>, <i>Имя</i>, <i>Отчество</i>, и <i>Хобби</i>. Запустим его и убедимся, что в поле <i>Хобби</i>, есть данные и пустые ячейки. Отобразим всех, у кого НЕТ хобби: в режиме запроса в строку <i>Условие отбора</i> для поля <i>Хобби</i> вводим <b>null</b>, запустим запрос и проверяем всех, у кого нет хобби. Аналогично отобразим всех, у кого есть хобби: в режиме конструктора туда же вводим <b>not null</b> и запустим запрос для проверки.</p>
<p class="Content2">Вернёмся в конструктор, и введём предыдущие два условия в альтернативной форме: <b>not*</b> &#8212; результат тот же, что и при <b>null</b> и <b>*</b> &#8212; тоже что и <b>not null</b>. Правый клик по вкладке, сохраним запрос под именем <i>Нет хобби</i>. Закроем запрос.</p>
<p class="Content2Top"><b>Запрос 5</b></p>
<p class="Content2">Создадим новый запрос в режиме конструктора:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-046.jpg" alt="1" /></div>
<p class="Content2">В диалоге снова выбираем таблицу <i>Студенты</i>, жмём <i>Добавить</i> и <i>Закрыть</i>. Добавим в запрос поля <i>Фамилия</i>, <i>Имя</i>, <i>Отчество</i>, <i>Деятельность</i> и <i>ГражданствоРФ</i>. Запустим его и убедимся, что в поле <i>ГражданствоРФ</i> установлены флажки, т.е. это логический тип, а условия для логических типов содержат либо <b>1</b>(Истина), либо <b>0</b>(Ложь).</p>
<p class="Content2">В режиме конструктора в условие отбора для поля <i>ГражданствоРФ</i>, введём <b>0</b>, запустим запрос и проверим, должно быть 6 записей, а в поле <i>ГражданствоРФ</i> флажки пустые. Сохраним запрос под именем Нет гражданства</p>
<div class="Header2">Самостоятельная работа</div>
<p class="Content2">Создать новый запрос, который отображает студентов, у которых код телефона либо 903, либо 910.</p>
<p class="Content2">Подсказка. Использовать два условия одно в строке <i>Условие отбора</i>, другое в строке <i>или</i>. Сохранить запрос под именем <i>Моб. телефон 903 910</i> и закрыть его.</p>
<p class="Content2Top"><b>Запрос 6</b></p>
<p class="Content2">Создадим новый запрос в режиме конструктора:</p>
<p class="Content2">Двойной клик, и выбираем таблицы <i>Студенты</i>, <i>Факультеты</i>, <i>Экскурсии</i> и жмём <i>Закрыть</i>:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-064.jpg" alt="1" /></div>
<p class="Content2">Таблицы <i>Студенты</i> и <i>Факультеты</i> связаны, но таблицу, с которой связана таблица <i>Экскурсии</i>, мы не отобразили. Какой может быть результат, если отобразить поля несвязанных таблиц? Поместим в запрос поля <i>Фамилия</i>, <i>Имя</i>, <i>Отчество</i> и <i>Название</i>:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-065.jpg" alt="1" /></div>
<p class="Content2">Запустим запрос. Результат будет неожиданный: 175 записей. Т.е. каждая запись! таблицы <i>Экскурсии</i>, содержит все записи несвязанной с ней таблицей.</p>
<p class="Content2">Вернёмся в конструктор и добавим таблицу, которая связана с таблицей <i>Экскурсии</i> и с таблицей <i>Студенты</i>: правый клик по пустому полю с панелями, пункт <i>Добавить таблицу</i>, в диалоге добавим таблицу <i>Экскурсанты</i> и жмём <i>Закрыть</i>:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-066.jpg" alt="1" /></div>
<p class="Prgf_BkgCollFill">Другими словами, при связи МНОГИЕ-КО-МНОГИМ ( <b>&#8734;</b> : <b>&#8734;</b> ), должны быть добавлены все три таблицы, а формировать запрос с несвязанными таблицами нельзя!!!</p>
<p class="Content2Top">Удалим все поля в запросе. Теперь отобразим студентов из определённого факультета, которые посетили ту или иную экскурсию: из таблицы <i>Студенты</i> выбираем <i>НомерСтудБилета</i> и ФИО. Из таблицы <i>Факультеты</i> берём поле <i>Факультет</i>. Из таблицы <i>Экскурсии</i>  берём поля <i>Название</i> и <i>ДатаЭкскурсии</i>. Запускаем, проверяем и возвращаемся в конструктор.</p>
<p class="Content2">Теперь отобразим все экскурсии в 2014 году: в условии отбора поля <i>ДатаЭкскурсии</i>, введём <b>*2014</b>, запустим и проверим результат. Сохраним запрос под именем <i>Экскурсии 2014</i> и закроем его.</p>
<div class="Header2">Самостоятельная работа</div>
<p class="Content2">Создать новый запрос, который отображает студентов (<i>НомерСтудБилета</i>, ФИО), которые сдали сертификацию(Название) в 2013-2014 г.г. Запрос сохраните под именем <i>Сертификация 2013-2014</i></p>
<div class="Header2">Вычисляемые поля</div>
<p class="Content2Top"><b>Запрос 7</b> (Посчитаем бонус по формуле 41,3% от стипендии)</p>
<p class="Content2">Создадим новый запрос в режиме конструктора:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-046.jpg" alt="1" /></div>
<p class="Content2">В диалоге выбираем одну таблицу <i>Студенты</i>, жмём <i>Добавить</i> и <i>Закрыть</i>. Добавим в запрос поля: <i>НомерСтудБилета</i>, ФИО и <i>Стипендия</i>. Установим курсор правее поля <i>Стипендия</i> в ячейку <i>Поле</i>:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-067.jpg" alt="1" /></div>
<p class="Content2">Откроем построитель выражений (Есть 3 способа) 1-й: <i>Конструктор/Настройка запросов/Построитель</i>:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-068.jpg" alt="1" /></div>
<p class="Content2">2-й: Правый клик там где курсор и выбираем <i>Построить</i>:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-069.jpg" alt="1" /></div>
<p class="Content2">3-й: жмём [Ctrl+F2], там где курсор</p>
<p class="Content2Top">В верхнем поле диалога <i>Построитель выражений</i>  пишем: Бонус:(двоеточие обязательно), в левом нижнем окне раскрываем: <i>БД_Студенты_4/Таблицы/Студенты</i>, в среднем окне двойной клик по полю <i>Стипендия</i>:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-070.jpg" alt="1" /></div>
<p class="Content2">В верхнем окне диалога, строка <b>«Выражение»</b> нам не нужна, поэтому щёлкнем по ней и удалим, в результате имеем:</p>
<p class="Content2">Бонус: [Студенты]![Стипендия]</p>
<p class="Content2">Теперь вычислим процент от стипендии: в верхнем окне щёлкнем правее строки и умножим на 0,413:</p>
<p class="Content2">Бонус: [Студенты]![Стипендия]*0,413</p>
<p class="Content2">Нажимаем ОК(обратим внимание на галочку видимости в вычисляемом поле) и запускаем запрос для анализа результата. Вернёмся в конструктор.</p>
<p class="Content2Top"><b>Свойства вычисляемого поля</b></p>
<p class="Content2">Поскольку вычисляемое поле не является табличным, значит настроить его формат, можно в конструкторе запроса: правый клик по названию поля и выбираем пункт <i>Свойства</i>. Появится панель <i>Окно свойств</i>. В свойстве <i>Формат поля</i> выберем денежный формат:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-071.jpg" alt="1" /></div>
<p class="Content2">Сохраним запрос под именем <i>Расчёт итогов</i>, но не закрываем его.</p>
<p class="Content2Top"><b>Запрос 8</b>(Посчитаем налог(13%) от стипендии + бонуса)</p>
<p class="Content2">В режиме конструктора правее поля <i>Бонус</i>, щёлкнем, чтобы создать ещё одно вычисляемое поле и откроем построитель выражений комбинацией [Ctrl+F2]:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-071-2.jpg" alt="1" /></div>
<p class="Content2">В верхнее окно пишем <b>Налог:</b>, а в левом нижнем окне, в отличии от предыдущего запроса, выделяем имя нашего запроса(оно есть, потому что мы его сохранили) и в среднем окне, двойной клик по полю <i>Стипендия</i>:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-072.jpg" alt="1" /></div>
<p class="Content2">Строка <b>«Выражение»</b> нам не нужна, поэтому щёлкнем по ней и удалим. </p>
<p class="Content2Top">Поскольку поле <i>Бонус</i> вычисляемое(т.е. не табличное), то его НЕЛЬЗЯ использовать в вычислениях, например, вот так:</p>
<p class="Content2"><strike>[Бонус]*0,13</strike></p>
<p class="Content2">Мы должны снова вычислить бонус, затем вычислить процент от стипендия + процент от вычисленного бонуса:</p>
<p class="Content2">[Стипендия] * (1+0,413) * 0,13</p>
<p class="Content2">Откуда эта формула?</p>
<p class="Content2">Если помнить, что 3 + 3 * 2 = 3(1+2), тогда:</p>
<p class="Content2">([Стипендия]*0,413) *0,13+([Стипендия]*0,13) =</p>
<p class="Content2">([Стипендия]*0,13) *0,413+([Стипендия]*0,13) =</p>
<p class="Content2">[Стипендия] * 0,13 * (0,413+1)</p>
<p class="Content2">Запускаем запрос для проверки. Вернёмся в конструктор.</p>
<p class="Content2Top"><b>Запрос 9</b>(Посчитаем итоговую сумму, которую получит студент, т.е. стипендия + бонус без 13%)</p>
<p class="Content2">В режиме конструктора правее поля <i>Налог</i>, щёлкнем, чтобы создать ещё одно вычисляемое поле и откроем построитель выражений комбинацией [Ctrl+F2]. В верхнее поле пишем <b>СуммаРУБ:</b>, в левом нижнем поле, выделяем имя нашего запроса и в среднем поле, двойной клик по полю <i>Стипендия</i>:</p>
<p class="Content2">Строка <b>«Выражение»</b> в верхнем окне нам также не нужна, поэтому щёлкнем по ней и удалим.</p>
<p class="Content2">Мы должны снова вычислить премию, затем вычислить (100%-13%) процентов от оклада и вновь вычисленной премии:</p>
<p class="Content2">[Стипендия] *(1+0,413)*0,87</p>
<div class="Header2">Самостоятельная работа</div>
<p class="Content2">Посчитайте сумму с предыдущего запроса в долларах и в евро. Т.е. добавьте ещё два вычисляемого поля. Подсказка: используйте формулу из предыдущего запроса. Сохраните и закройте запрос <i>Расчёт итогов</i>.</p>
<p class="Content2Top"><b>Запрос 10</b>(Объединение текстовых полей)</p>
<p class="Content2">Пусть есть таблица <i>Фрукты</i> и требуется объединить два поля <i>Яблоки</i> и <i>Груши</i>. Формула для построителя будет такой:</p>
<p class="Content2">[Фрукты]![Яблоки]&#038;[Фрукты]![Груши]</p>
<p class="Content2">Результат этого объединения: <b>ЯблокиГруши<></p>
<p class="Content2Top">То же самое объединение, только с пробелом:</p>
<p class="Content2">[Фрукты]![Яблоки]&#038;&#187; &#171;&#038;[Фрукты]![Груши]</p>
<p class="Content2">Результат этого объединения: <b>Яблоки Груши</b></p>
<p class="Content2Top">Объединим поля <i>Фамилия</i>, <i>Имя</i> и <i>Отчество</i> с помощью вычисляемого поля: создадим новый запрос в режиме конструктора:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-046.jpg" alt="1" /></div>
<p class="Content2">В диалоге выбираем одну таблицу <i>Студенты</i>, жмём <i>Добавить</i> и <i>Закрыть</i>.</p>
<p class="Content2">Курсор в строку <i>Поле</i> и вызываем построитель выражений [Ctrl+F2]. В верхнем окне вводим имя вычисляемого поля ФИО:</p>
<p class="Content2">В нижнем левом окне в нашей базе данных выделяем таблицу <i>Студенты</i>. В среднем окне двойной клик по полю <i>Фамилия</i>, в верхнем окне, выделяем строку <i>«Выражение»</i>, удаляем её. После фамилии вводим <b>&#038;&#187; &#171;&#038;</b> (два амперсанда, внутри две английские кавычки, внутри пробел). В верхнее окно добавим поле <i>Имя</i>, и аналогично соединим с полем <i>Отчество</i>. Итоговый вид выражения:</p>
<p class="Content2">ФИО: [Студенты]![Фамилия] &#038; &#187; &#187; &#038; [Студенты]![Имя] &#038; &#187; &#187; &#038; [Студенты]![Отчество]</p>
<p class="Content2">Запустим запрос и проверим, что имя поля ФИО и каждая ячейка поля содержит три слова. Теперь вычислим возраст студентов по формуле сегодняшняя дата минус дата рождения:</p>
<p class="Content2">В конструкторе добавим ещё одно вычисляемое поле. В построителе выражений в верхнем окне вводим <b>Возраст:</b>. В левом нижнем окне выделяем пункт <i>Общие выражения</i>, в среднем окне выделяем пункт <i>Текущая дата</i> и двойной клик по <i>Date()</i> в правом окне:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-073.jpg" alt="1" /></div>
<p class="Content2">Строка <b>«Выражение»</b> в верхнем окне нам также не нужна, поэтому щёлкнем по ней и удалим. </p>
<p class="Content2">Отнимаем дату рождения: добавляем в выражение минус и в таблице <i>Студенты</i>, двойной клик по полю <i>Дата рождения</i>. </p>
<p class="Content2">ОК и запускаем запрос для проверки результата. Мы получили возраст в днях. Самостоятельно переведём дни в годы. Сохраним запрос под именем <i>Возраст студентов</i> и закроем его.</p>
<div class="Header2">Параметрический запрос</div>
<p class="Content2Top"><b>Запрос 11</b> (Вывод студентов из конкретного факультета)</p>
<p class="Content2">Создадим новый запрос в режиме конструктора:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-046.jpg" alt="1" /></div>
<p class="Content2">В диалоге выбираем одну таблицу <i>Студенты</i>, жмём <i>Добавить</i> и <i>Закрыть</i>. Добавим в запрос поля: <i>НомерСтудБилета</i>, ФИО и <i>КодФакультета</i></p>
<p class="Prgf_BkgCollFill">Параметрический запрос позволяет пользователю, во время запуска запроса, выбрать условие отбора и затем выполнить запрос. Т.е. здесь идёт автоматическая подстановка значения в поле <i>Условие отбора</i>.</p>
<p class="Content2Top">Добавим для поля <i>КодФакультета</i>, в строку условие текст <b>[Код факультета?]</b>. Теперь запустим запрос. Появится диалог с предложением ввести значение, мы выбираем, только то значение, которое может быть в поле <i>КодФакультета</i> таблицы <i>Студенты</i>. Введём любую цифру от 1 до 4 и нажмём ОК.</p>
<p class="Content2">Сохраним запрос под именем <i>Выбор факультета</i>, закроем его, а теперь запустим его двойным кликом из панели объектов слева, введём другую цифру и ОК.</p>
<div class="Header2">Запрос с группировкой</div>
<p class="Content2Top"><b>Запрос 12</b> (Посчитаем по факультету, сумму стипендий, среднее значение от стипендии, минимальную стипендию и сколько студентов на факультете)</p>
<p class="Content2">Создадим новый запрос в режиме конструктора:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-046.jpg" alt="1" /></div>
<p class="Content2">В диалоге выбираем одну таблицу <i>Студенты</i>, жмём <i>Добавить</i> и <i>Закрыть</i>. Нужно добавить ещё одну таблицу, но мы уже закрыли диалог с таблицами, тогда отобразим снова диалог с таблицами командой <i>Конструктор/Настройка запроса/Отобразить таблицу</i>:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-074.jpg" alt="1" /></div>
<p class="Content2">В диалоге добавляем таблицу <i>Факультеты</i>, жмём <i>Добавить</i> и <i>Закрыть</i>.</p>
<p class="Content2">Добавим в запрос поле: <i>Факультет</i>, теперь выполним команду <i>Конструктор/Показать или скрыть/Итоги</i>:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-074.jpg" alt="1" /></div>
<p class="Content2">В запросе для поля <i>Факультет</i>, появилась новая строка <i>Групповая операция</i> с операцией <i>Группировка</i>. Добавим в запрос четыре поля <i>Стипендия</i>, с групповыми операциями <b>Sum</b>, <b>Avg</b>, <b>Min</b> и <b>Count</b> для суммы, среднего значения, минимального и количества.</p>
<p class="Content2Top">Итак, мы выбрали одно поле, по которому будет проходить ГРУППИРОВКА, и поля, по которым будут проходить ГРУППОВЫЕ ОПЕРАЦИИ.</p>
<p class="Content2">Запускаем запрос и видим результат работы групповых операций по каждому из ??? факультетов. Единственный минус, это неудобные имена четырёх полей с группировкой. Исправим САМОСТОЯТЕЛЬНО имена четырёх полей на <i>Сумма</i>, <i>Средняя стипендия</i>, <i>Минимальная стипендия</i> и <i>Кол-во студентов</i>: в конструкторе с помощью панели <i>Окно свойств</i>  и свойства <i>Подпись</i>. Запустим запрос и проверим имена новых полей.</p>
<p class="Content2">Сохраним запрос под именем <i>Расчёт по факультетам</i>.</p>
<div class="Header2">Самостоятельная работа</div>
<ol class="align_justify">
<li>Посчитайте по деятельности, сколько студентов и средняя стипендия по деятельности.</li>
<li>Создать запрос для определения количества посетителей каждой экскурсий.</li>
<li>Рассчитать длительность экскурсии и стоимость одного дня экскурсии</li>
</ol>
<p class="Content2Top">запрос 1 &#8212; выполняется  через групповые операции</p>
<p class="Content2">запрос 2 &#8212; выполняется  через групповые операции</p>
<p class="Content2">запрос 3 &#8212; выполняется  через вычисляемое поле</p>
]]></content:encoded>
			<wfw:commentRss>http://kshu.su/?feed=rss2&#038;p=70</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>3. Microsoft Access. Уровень 1. Работа с формами</title>
		<link>http://kshu.su/?p=68</link>
		<comments>http://kshu.su/?p=68#comments</comments>
		<pubDate>Mon, 29 Sep 2014 17:08:10 +0000</pubDate>
		<dc:creator><![CDATA[Kirill Schurakhtenkov]]></dc:creator>
				<category><![CDATA[Microsoft Access]]></category>

		<guid isPermaLink="false">http://kshu/?p=68</guid>
		<description><![CDATA[Создание форм с помощью мастера, редактирование форм, условное форматирование, добавление подписи и новых полей. Создание подчинённых форм из связанных таблиц, выбор среди нескольких связанных таблиц главную и подчинённую Формы Откроем файл базы данных БД Студенты3. Выбираем Включить содержимое. Посмотрим её внутренности командой Работа с базами данных/Отношения/Схема данных: Проверим, нет ли ещё других связей: Конструктор/Связи/Все связи. [&#8230;]]]></description>
				<content:encoded><![CDATA[<p class="Content2">Создание форм с помощью мастера, редактирование форм, условное форматирование, добавление подписи и новых полей. Создание подчинённых форм из связанных таблиц, выбор среди нескольких связанных таблиц главную и подчинённую</p>
<p><span id="more-68"></span></p>
<div class="Header1">Формы</div>
<p class="Content2">Откроем файл базы данных БД Студенты3. Выбираем <i>Включить содержимое</i>. Посмотрим её внутренности командой <i>Работа с базами данных/Отношения/Схема данных</i>:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-012.jpg" alt="1" /></div>
<p class="Content2">Проверим, нет ли ещё других связей: <i>Конструктор/Связи/Все связи</i>.</p>
<p class="Content2">Из схемы и из того, что мы уже изучили на прошлых уроках, нам должно быть понятно, что таблицы <i>Студенты</i> и <i>Экскурсии</i> связаны между собой отношением МНОГИЕ-КО-МНОГИМ <b>&#8734;</b> : <b>&#8734;</b>, таким же отношением связаны между собой таблицы <i>Студенты</i> и <i>Сертификация</i>.</p>
<div class="Header2">Создание форм</div>
<p class="Content2">Формы служат для удобства ввода и просмотра данных. Создадим форму с помощью мастера: <i>Создание/Формы/Мастер форм</i>:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-030.jpg" alt="1" /></div>
<p class="Content2">На первом шаге диалога, в списке источника данных выбираем таблицу <i>Студенты</i>, внизу появятся все поля этой таблицы, при желании можно выбрать только те которые нужны, но в нашем случае нужны все, поэтому кнопкой <b>>></b> перенесём все поля для будущей формы, жмём <i>Далее</i>, на втором шаге выбираем расположение полей на форме выбираем в один столбец, жмём <i>Далее</i>, на третьем шаге предлагают задать имя формы оставляем имя <i>Студенты</i>, выбираем флажок <i>Открыть форму</i>… и  жмём <i>Готово</i></p>
<p class="Content2">Открылась форма для редактирования таблицы <i>Студенты</i>. Поля формы отображают данные первой записи таблицы <i>Студенты</i>, поэтому мы с ней ничего не делаем, внизу формы находим строку <i>Запись</i> и правее  кнопки с треугольниками для перехода по записям.</p>
<p class="Content2">Добавим одну новую запись, внизу ищем кнопку в виде треугольника с солнышком(для быстрого перехода в конец таблицы и ввода новой записи), нажимаем и во все поля формы, вводим одну любую запись. Нужно знать, что эта строка хранится не в форме, а в таблице, которая является источником данных; в нашем случае это таблица <i>Студенты</i>. Другими словами, каждое поле формы, связано с соответствующим полем таблицы. Проверим это: закрываем форму(правый клик по вкладке и <i>Закрыть</i>) и убедимся, что в таблице <i>Студенты</i> появилась новая запись которую мы ввели в форме. Закроем таблицу <i>Студенты</i>. Теперь откроем форму <i>Студенты</i>, чтобы увидеть в ней данные последней записи таблицы <i>Студенты</i>. Закроем форму.</p>
<p class="Content2">Аналогично создадим форму по таблице <i>Экскурсии</i> с ленточным внешним видом. Выбираем команду <i>Создание/Формы/Мастер форм</i>:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-030.jpg" alt="1" /></div>
<p class="Content2">На первом шаге диалога, в списке источника данных выбираем таблицу <i>Экскурсии</i>, внизу появятся все поля этой таблицы, кнопкой >> мы выберем все поля, жмём <i>Далее</i>, на втором шаге выбираем ленточный внешний вид, жмём <i>Далее</i>, на третьем шаге оставляем имя формы <i>Экскурсии</i>, выбираем флажок <i>Открыть форму</i>… и  жмём <i>Готово</i></p>
<p class="Content2">Закроем форму. Аналогично создадим форму по таблице <i>Студенты</i>  с ленточным внешним видом. Выбираем команду <i>Создание/Формы/Мастер форм</i></p>
<p class="Content2">На первом шаге диалога, в списке источника данных выбираем таблицу <i>Студенты</i>, внизу появятся все поля этой таблицы, кнопкой >> мы выберем все поля, жмём <i>Далее</i>, на втором шаге выбираем выровненный внешний вид, жмём <i>Далее</i>, на третьем шаге оставляем имя формы <i>Студенты</i>1, выбираем флажок <i>Открыть форму</i>… и  жмём <i>Готово</i></p>
<p class="Content2">Закроем форму.</p>
<div class="Header2">Редактирование форм</div>
<p class="Content2">Аналогично таблицам, в формах кроме режима формы, есть ещё режимы для редактирования внешнего вида полей: <b>Режим конструктора</b> и <b>Режим макета</b>. В конструкторе, мы не будем видеть содержимого в полях формы, а в режиме макета мы можем и редактировать внешний вид и видеть содержимое.</p>
<p class="Content2">Откроем форму <i>Студенты</i>. Отобразить выбор режимов можно несколькими способами, вот два из них: правый клик по ярлыку формы и выбираем один из трёх режимов, либо на вкладке <i>Главная/Режимы</i> жмём на треугольник:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-031.jpg" alt="1" /></div>
<p class="Content2">Откроем форму в режиме макета и выделяя поле, изменим его размер. Также можно изменить имя поля, но содержимое полей изменить нельзя. Изменим имя поля в режиме макета: выделим поле <i>Фамилия</i>, щёлкнем внутри выделения и добавим символ <b>*</b>.</p>
<p class="Content2">Настроим внешний вид формы: в режиме макета формы, активна вкладка <i>Конструктор</i>, в группе <i>Темы</i> список <i>Темы</i>, где можно выбрать уже настроенную тему формы. Если нужно что бы каждое поле формы отображено по другому, выделяем нужное поле, далее выполним <i>Формат/Форматирование элемента управления</i>, раскрываем <i>Заливка фигуры</i> и выбираем нужный цвет. На этой же вкладке в группе <i>Шрифт</i>, можно выбрать шрифт для полей.</p>
<div class="Header3"><strong>Условное форматирование</strong></div>
<p class="Content2">Отобразим разные цвета для стипендий больших или меньших 500: в режиме макета формы, выделим поле со значением стипендии (но не само поле <i>Стипендия</i>), далее команда <i>Формат/Форматирование элемента управления/Условное форматирование</i>. В диалоге для пункта <i>Стипендия</i>, нажимаем <i>Создать правило</i>, и настроим цвет для стипендий меньших 500:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-032.jpg" alt="1" /></div>
<p class="Content2">Нажимаем ОК, здесь же снова выбираем <i>Создать правило</i>, и настроим цвет для стипендий больших или равных 500:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-033.jpg" alt="1" /></div>
<p class="Content2">Нажимаем ОК, вид диалога <i>Диспетчер правил</i>:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-034.jpg" alt="1" /></div>
<p class="Content2">Нажимаем ОК и в режиме формы проверяем цвета данных для поля <i>Стипендия</i>.</p>
<p class="Content2">Добавим размер формы для надписи под полями: перейдём в режим конструктора, подведём курсор к границе примечания формы и тянем вниз для увеличения.</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-035.jpg" alt="1" /></div>
<p class="Content2">В добавленную область поместим надпись. Выполним команду: <i>Конструктор/Элементы управления/Надпись</i>:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-036.jpg" alt="1" /></div>
<p class="Content2">Нарисуем прямоугольник в свободной области, появится курсор для ввода текста, напишем: <b>* &#8212; поля обязательные для ввода</b> и нажмём [Enter]:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-037.jpg" alt="1" /></div>
<p class="Content2">Изменим цвет фона формы: в режиме конструктора щёлкнем по заголовку <i>Область данных</i>, выполним команду <i>Формат/Форматирование элемента управления/Заливка фигуры</i>, выберем любой спокойный цвет.</p>
<p class="Content2">Аналогично создадим одинаковый цвет фона заголовка формы и примечания. Теперь в режиме формы проверим изменения.</p>
<p class="Content2">Изменим цвет текста для заголовков полей: [Shift]+hold выделим заголовки полей далее команда <i>Формат/Шрифт/Цвет текста</i> и выбираем любой не яркий цвет. Сохраняем и закрываем форму <i>Студенты</i></p>
<p class="Content2Top">Добавим новое поле в форму, но, сначала нужно добавить новое поле в соответствующую таблицу. Мы добавим в форму <i>Студенты</i> поле <i>Увлечения</i>. Добавим сначала это поле в таблицу:</p>
<p class="Content2">Перейдём режим конструктора таблицы <i>Студенты</i>, добавим поле <i>Увлечения</i> тип <i>Текстовый</i>, затем в режиме таблицы, введём произвольные данные в поле <i>Увлечения</i>. Закрываем таблицу <i>Студенты</i>. </p>
<p class="Content2">Теперь добавим поле в форму: открываем форму <i>Студенты</i> в режиме макета теперь выполняем команду <i>Конструктор/Сервис/Добавить поля</i>:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-038.jpg" alt="1" /></div>
<p class="Content2">Появится список полей таблицы <i>Студенты</i>, перетащим поле <i>Увлечения</i> на поле формы:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-039.jpg" alt="1" /></div>
<p class="Content2">Новое поле на форме будет сверху, разместим его ниже всех полей:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-040.jpg" alt="1" /></div>
<p class="Content2">Новое поле будет иметь стандартный формат, применим к нему формат полей нашей формы: выделим заголовок любого поля кроме заголовка поля <i>Увлечения</i>, выполним <i>Формат/Шрифт</i>, нажимаем на кнопку <i>Формат по образцу</i>(кисточка) и нажмём на заголовок поля <i>Увлечения</i>.</p>
<p class="Content2">Закроем форму <i>Студенты</i>.</p>
<div class="Header2">Подчинённые формы</div>
<p class="Content2">Подчинённые формы отображают данные из связанных таблиц. Создадим форму с помощью мастера:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-030.jpg" alt="1" /></div>
<p class="Content2">На первом шаге выбираем все поля из таблицы <i>Факультеты</i>, здесь же выбираем таблицу <i>Студенты</i> и выбираем поля: <i>НомерСтудБилета</i>, <i>Фамилия</i>, <i>Имя</i>, <i>Отчество</i>, <i>ВидТранспорта</i> и <i>Стипендия</i>, жмём <i>Далее</i> </p>
<p class="Content2">Для второго шага полезно отобразить связь между таблицами <i>Факультеты</i> и <i>Студенты</i>. Откуда видно что таблица <i>Факультеты</i> главная(первичная), а <i>Студенты</i> подчинённая (вторичная):</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-041.jpg" alt="1" /></div>
<p class="Content2">Итак, на втором шаге мастера для подчинённых форм, флажок должен быть <i>Подчинённые формы</i>. Поле слева отображает главную и подчинённую таблицу, если выбрана таблица <i>Факультеты</i>, она будет первичная, значит таблица <i>Студенты</i> вторичная. Поле справа отображает поля главной и подчинённой таблицы:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-042.jpg" alt="1" /></div>
<p class="Prgf_BkgCollFill">Но если бы мы выбрали главную таблицу <i>Студенты</i>, то поля справа будут все в одной группе, поскольку на самом деле таблица <i>Студенты</i> уже связана с таблицей <i>Факультеты</i> как вторичная, т.е. по внешнему ключу.</p>
<p class="Content2Top">Жмём <i>Далее</i>, на этом шаге будет предложено выбрать внешний вид подчинённой формы, выберем <i>Табличный</i>, жмём <i>Далее</i>. На этом шаге будет предложено выбрать имена новых форм. Чтобы по имени было понятно, что есть главная, а что подчинённая, добавим в начало имени <b>1+</b> и <b>1-</b> для главной и подчинённой форм соответственно. Жмём <i>Готово</i>.</p>
<p class="Content2">Откроется наша форма в режиме формы, зайдём в режим макета, выделим подчинённую форму и увеличим ширину, чтобы видны были все поля. Снова вернёмся в режим формы. Здесь хорошо видно, что одной записи из главной таблицы соответствует одна или несколько записей подчинённой таблицы, т.е. связь <b>1</b> : <b>&#8734;</b></p>
<p class="Content2">Перемещаться по записям главной и подчинённой форм, можно кнопками внизу каждой из форм. Закроем нашу форму.</p>
<p class="Content2">Двойной клик по форме Форма <b>1+</b>…, откроет всю форму, т.е. со всеми в ней подчинёнными таблицами. Если же мы откроем только подчинённую форму <b>1-</b>…, то она отобразит данные только подчинённой таблицы и особого интереса не представляет.</p>
<p class="Content2Top">Создадим ещё подчинённую форму по таблицам <i>Экскурсии</i> и <i>Студенты</i>. Т.е. мы хотим увидеть, сколько, какие студенты и какого вида транспорта, посещают ту или иную экскурсию:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-030.jpg" alt="1" /></div>
<p class="Content2">На первом шаге выбираем все поля из таблицы <i>Экскурсии</i>, здесь же выбираем таблицу <i>Студенты</i> и выбираем поля <i>НомерСтудБилета</i>, <i>Фамилия</i>, <i>Имя</i>, <i>Отчество</i> и <i>ВидТранспорта</i>, жмём <i>Далее</i>, здесь нужно выбрать какая таблица будет главной, но в отличии от предыдущей подчинённой формы, в нашем случае любая таблица может быть главной, поскольку они связаны между собой отношением <b>&#8734;</b> : <b>&#8734;</b>. Выберем главную таблицу <i>Экскурсии</i> и жмём <i>Далее</i>. Выбираем для подчинённой формы табличный вид, жмём <i>Далее</i>, на новом шаге добавим в начало имени для имён двух форм <b>2+</b> и <b>2-</b>. Жмём <i>Готово</i>.</p>
<p class="Content2">Откроется наша форма в режиме формы, зайдём в режим макета, выделим подчинённую форму и увеличим ширину, чтобы видны были все поля. В режиме формы ознакомимся о посещении студента выбранной экскурсии. Закроем форму.</p>
<p class="Content2">Теперь мы хотим увидеть на каких факультетах, какие студенты, какую активность проявляют:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-030.jpg" alt="1" /></div>
<p class="Content2">На первом шаге выбираем таблицу <i>Экскурсии</i> с полями <i>КодЭкскурсии</i>, <i>Название</i>, <i>ДатаЭкскурсии</i> и <i>Стоимость</i>. Теперь выбираем данные из таблицы <i>Студенты</i> с полями <i>НомерСтудБилета</i>, <i>Фамилия</i>, <i>Имя</i>, <i>Отчество</i> и <i>ВидТранспорта</i>. И из таблицы <i>Факультеты</i>, берём только поле <i>Название</i>, жмём <i>Далее</i>,</p>
<p class="Content2">на втором шаге(активен флажок <i>подчинённые формы</i>) есть три разных случая:</p>
<ol class="align_justify">
<li>если в левом окне активна таблица <i>Экскурсии</i>, то для неё будет одно подчинение с полями студентов и факультетов,</li>
<li>если в левом окне активна таблица <i>Факультеты</i>, то для неё будет два подчинения по таблице <i>Студенты</i> и по таблице <i>Экскурсии</i> </li>
<li>и наконец, если в левом окне активна таблица <i>Студенты</i>, то для неё будет одно подчинение по полям таблицы <i>Экскурсии</i>. </li>
</ol>
<p class="Content2Top">Обратим внимание, что в первом и в третьем случае, поля студентов и факультетов были в одном месте.</p>
<p class="Content2">По условию задачи нас интересует второй случай, поэтому выбираем его и жмём <i>Далее</i>, </p>
<p class="Content2">на третьем шаге для двух подчинённых форм, выберем табличный вид и <i>Далее</i>, </p>
<p class="Content2">на четвёртом шаге для главной и двух подчинённых таблиц добавляем к началу имени префиксы: <b>3+</b>, <b>3-</b> и <b>3-</b> соответственно. Жмём <i>Готово</i>. В режиме формы откроется наш результат. </p>
<p class="Content2">В режиме макета выделяя каждую подчинённую форму, увеличим их ширину. И в режиме формы проверим, на каком факультете больше всего активных студентов и в каких экскурсиях. Закрываем нашу форму.</p>
<div class="Header2">Самостоятельная работа</div>
<p class="Content2">В этой базе данных, построить форму, которая позволит отобразить какие студенты(<i>ФИО</i>, <i>ВидТранспорта</i>) из какого факультета(<i>Название</i>) какие прошли курсы ДОУ(<i>Название</i>, <i>Дата сдачи</i>, <i>Количество баллов</i>)</p>
<p class="Content2">Подсказка. Здесь должны быть задействованы 4 таблицы: <i>Студенты</i>, <i>Факультеты</i>, <i>ДОУ</i> и <i>Сертифицированные студенты</i>.</p>
]]></content:encoded>
			<wfw:commentRss>http://kshu.su/?feed=rss2&#038;p=68</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>2. MS Access. Уровень 1. Связи с таблицами</title>
		<link>http://kshu.su/?p=66</link>
		<comments>http://kshu.su/?p=66#comments</comments>
		<pubDate>Mon, 29 Sep 2014 17:07:30 +0000</pubDate>
		<dc:creator><![CDATA[Kirill Schurakhtenkov]]></dc:creator>
				<category><![CDATA[Microsoft Access]]></category>

		<guid isPermaLink="false">http://kshu/?p=66</guid>
		<description><![CDATA[Создание связи вручную и с помощью мастера. Мастер подстановок: формирование списка данных для поля таблиц и связывание полей таблиц. Связи между таблицами: ОДИН-К-ОДНОМУ, ОДИН-КО-МНОГИМ и МНОГИЕ-КО-МНОГИМ. Схема данных. Целостность данных. Первичный(главный) ключ, вторичный(внешний) ключ. Импорт данных: из базы данных MS Access, MS Excel и текстового файла. Импорт в одну таблицу с добавлением из разных. Импорт [&#8230;]]]></description>
				<content:encoded><![CDATA[<p class="Content2">Создание связи вручную и с помощью мастера. Мастер подстановок: формирование списка данных для поля таблиц и связывание полей таблиц. Связи между таблицами: ОДИН-К-ОДНОМУ, ОДИН-КО-МНОГИМ и МНОГИЕ-КО-МНОГИМ. Схема данных. Целостность данных. Первичный(главный) ключ, вторичный(внешний) ключ. Импорт данных: из базы данных MS Access, MS Excel и текстового файла. Импорт в одну таблицу с добавлением из разных. Импорт связанной таблицы. Анализ таблиц: разбиение таблиц на несколько с созданием связи.</p>
<p><span id="more-66"></span></p>
<div class="Header2">Мастер подстановок</div>
<p class="Content2">Запустим программу <b>MS Access 2010</b>, откроем нашу базу данных <i>Студенты</i> и<br />
 откроем таблицу <i>Студенты</i> в режиме конструктора.</p>
<p class="Content2">Для поля <i>Пол</i>, выбираем тип <i>Мастер подстановок</i>. Далее в диалоге выбираем флажок<br />
 <i>Будет введён фиксированный набор значений</i>, жмём  <i>Далее></i>, в столбец1 введём две строки:<br />
 <b>Мужской</b> и <b>Женский</b>, жмём <i>Далее></i>, выбираем <i>Ограничиться списком</i>, и жмём <i>Готово</i>.</p>
<p class="Content2">Пока в конструкторе активно поле <i>Пол</i>, внизу в его свойствах активируем вкладку<br />
 <i>Подстановка</i> и убедимся, что поле <i>Тип источника строк</i>, есть <b>Список значений</b>,<br />
 а поле <i>Источник строк</i> содержит строки, которые мы только что ввели в мастере подстановок.</p>
<p class="Content2">Сохраняем, переходим в режим таблицы, щёлкнем в ячейку поля <i>Пол</i> и выберем любой пункт из списка.</p>
<p class="Content2">Самостоятельно и аналогично, полю <i>Пол</i>, создадим список для поля <i>Деятельность</i>.<br />
 В качестве набора значений введём: <b>Библиотекарь</b>, <b>Сотрудник профкома</b>, <b>Сотрудник актового зала</b>, <b>Участник КВН</b>, <b>Сотрудник профилактория</b>,<br />
 <b>IT-специалист</b>, <b>Лаборант</b>, <b>Сотрудник студ. городка</b>, <b>Музыкант</b> и <b>Волонтёр</b>. Затем в режиме таблицы для нескольких записей из раскрывающегося списка поля<br />
 <i>Деятельность</i> добавим несколько данных.</p>
<p class="Content2Top">В режиме конструктора добавим поле <i>Экскурсии</i>, тип данных <i>Мастер подстановок</i>.<br />
 В диалоге выбираем первый флажок, жмём  <i>Далее></i>, выбираем источник таблиц – <i>Экскурсии</i>, жмём  <i>Далее></i>,<br />
 из доступных полей кнопкой <b>></b> выбираем поля <i>Название</i> и <i>ДатаЭкскурсии</i>, жмём <i>Далее></i>,<br />
 выберем сортировку по любому полю, жмём  <i>Далее></i>, активность флажка который скрывает ключевой столбец полезен когда<br />
 ключевое поле не представляет никакой визуальной ценности, но поскольку у нас ключевое поле это названия экскурсий,<br />
 поэтому флажок отключаем чтобы названия экскурсий были видны, жмём <i>Далее></i>, выбираем поле по которому однозначно<br />
 можно определить строки таблицы, в нашем случае это названия экскурсий, жмём <i>Далее></i>, выбираем флажок проверки<br />
 целостности данных. Жмём <i>Готово</i>.</p>
<p class="Content2">В конструкторе таблицы <i>Студенты</i> в свойстве поля <i>Экскурсии</i> на вкладке <i>Подстановка</i>, убедитесь, что поле <i>Источник строк</i> содержит это:</p>
<p class="Content2"><b>SELECT [Экскурсии].[Название], [Экскурсии].[ДатаЭкскурсии] FROM Экскурсии;</b></p>
<p class="Content2Top">Также убедимся, что: строка <i>Присоединяемый столбец</i> имеет значение <b>1</b>, а <i>Число столбцов</i> – <b>2</b>.</p>
<p class="Content2">Сохраняем и в режиме таблицы из списка добавим в поле <i>Экскурсии</i> любые значения.</p>
<p class="Content2">Двойной клик по таблице <i>Экскурсии</i> откроем её в режиме таблица и убедимся что слева строк, появились плюсы, которые отражают взаимодействие таблиц <i>Студенты</i>  и <i>Экскурсии</i>. Закроем таблицы правым кликом по их ярлыку.</p>
<div class="Header2">Связи</div>
<p class="Content2">Таблицы <i>Студенты</i> и <i>Экскурсии</i> связаны между собой. Отобразим визуально связь: <i>Работа с базами данных/Отношения/Схема данных</i>:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-012.jpg" alt="1" /></div>
<p class="Content2">На вкладке <i>Схема данных</i>, появится схема из двух таблиц, связанных между собой по полю <i>Название</i> и <i>Экскурсии</i>:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-013.jpg" alt="1" /></div>
<p class="Content2">Цифра <b>1</b> и символ <b>&#8734;</b>, указывает на тип связи ОДИН-КО-МНОГИМ. Удалим связь: правый клик по линии и выбираем пункт <i>Удалить</i> или клавишей [Del]</p>
<p class="Content2">Установим связь вручную(старый метод): в схеме данных, щёлкнем над полем <i>Название</i> таблицы <i>Экскурсии</i>  и отпустим над полем <i>Экскурсии</i> таблицы <i>Студенты</i>. Появится диалог <i>Изменение связи</i>:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-014.jpg" alt="1" /></div>
<p class="Content2">обратим внимание на тип отношения: <b>один-ко-многим</b> – это причина связи ключевого поля одной таблицы, с НЕ ключевым полем другой. Нажимаем – <i>Создать</i>. Связь появилась, но без цифры <b>1</b> и символа <b>&#8734;</b>:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-015.jpg" alt="1" /></div>
<p class="Content2">Отобразим значки: правый клик по связи далее <i>Изменить связь</i>, ставим флажок <i>Обеспечение целостности данных</i>. Целостность данных не позволит:</p>
<ol class="align_justify">
<li>добавить студенту – экскурсию, которой нет в таблице <i>Экскурсии</i>,</li>
<li>удалить в таблице <i>Экскурсии</i>, ту экскурсию, которая уже есть у студента.</li>
</ol>
<p class="Content2">Ещё момент: тип поля <i>Название</i> и <i>Экскурсии</i> должны быть одинаковыми. У нас они текстовые.</p>
<p class="Content2Top">Теперь добавим в таблице <i>Студенты</i>, экскурсию <i>Музей</i>, хотя бы одному студенту, а затем попытаемся изменить название экскурсии <i>Музей</i> в таблице <i>Экскурсии</i>. Программа выдаст сообщение о невозможности изменить название этого поля, которое уже связанно с полем другой таблицы.</p>
<p class="Content2">Чтобы изменить в первичной таблице, значения которое связано с другой таблицей, мы должны установить обновление: закроем все таблицы, затем в схеме данных правый клик по связи/<i>Изменить связь</i>. В диалоге выбираем <i>Каскадное обновление связанных полей</i> и жмём ОК.</p>
<p class="Content2">Теперь Откроем таблицу <i>Экскурсии</i> в режиме таблицы, изменим название <i>Музей</i> на <i>Театр</i> и откроем таблицу <i>Студенты</i> для проверки данных поля <i>Экскурсии</i>. Закроем файл базы командой <i>Файл/Закрыть базу данных</i>.</p>
<p class="Content2Top">Продолжим работать с базой данных студентов. Откроем файл <a href ="wp-content/uploads/access/БД_Студенты_1.accdb">БД_Студенты_1</a>. Выбираем <i>Включить содержимое</i>.</p>
<p class="Content2">Откроем любые таблицы и увидим, что вкладок нет, т.к. файл был создан в старой версии программы<br />
 <b>MS Access 2010</b>. Исправим это командой: <i>Файл/Параметры/Текущая база данных/Параметры приложений</i><br />
 активируем флажок <b>Вкладки</b>.</p>
<p class="Content2">Теперь нужно <i>Закрыть</i> базу данных и снова открыть, для отображения вкладок. Закроем все открытые объекты правым кликом и пункт <i>Закрыть</i></p>
<p class="Content2">Отобразим схему данных: вкладка <i>Работа с базами данных/Отношения/Схема данных</i>:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-012.jpg" alt="1" /></div>
<p class="Content2">Отобразилась связь между двумя таблицами. Проверим, нет ли других связей: <i>Конструктор/Связи/Все связи</i>.<br />
 Если ничего не произошло, то других связей нет. Создадим ещё одну связь.</p>
<div class="Header2">Связь ОДИН-КО-МНОГИМ 1 : <b>&#8734;</b></div>
<p class="Content2">Это добавление в одно поле таблицы, данных из поля другой таблицы. Первое поле называют внешний ключ и оно соединяется с первичным ключом(полем) другой таблицы.</p>
<p class="Content2"> В режиме конструктора таблицы <i>Студенты</i>, добавим поле <i>КодЭкскурсии</i>, тип данных <i>Мастер подстановок</i>. В качестве источника выбираем другую таблицу, жмём <i>Далее></i>, выбираем таблицу <i>Экскурсии</i> жмём <i>Далее></i>, кнопкой > выбираем поля: <i>КодЭкскурсии</i> (мы его потом выберем ключевым), <i>Название</i> и <i>ДатаЭкскурсии</i>, жмём <i>Далее></i>, выберем сортировку поля <i>Название</i> по возрастанию и поля <i>ДатаЭкскурсии</i> по убыванию, жмём <i>Далее></i>, отображаем ключевой столбец (т.е. галку снимаем), <i>Далее></i>, на этом шаге выбираем ключевой столбец который мы отразили на предыдущем шаге, жмём <i>Далее></i>, включаем проверку целостности, жмём <i>Готово</i>  и соглашаемся с сохранением.</p>
<p class="Content2">Убедимся, что тип данных нашего поля изменился на <i>Числовой</i>, это получилось, потому что мы связываем поле нашей таблицы <i>Студенты</i> с полем счётчик первичной таблицы <i>Экскурсии</i>. Обратим внимание на свойства вкладки <i>Подстановка</i>. Поле <i>Источник строк</i> содержит путь к нашим данным. Поле <i>Ширина столбцов</i> содержит три цифры. <b>2,54см;2,54см;2,54см</b> это размер трёх полей</p>
<p class="Content2">Откроем таблицу <i>Студенты</i> и введём в поле <i>КодЭкскурсии</i> несколько данных. В ячейках будут выводиться только цифры. Если нужно чтобы отобразились названия, то в режиме конструктора для поля <i>КодЭкскурсии</i> на вкладке <i>Подстановка</i> для свойства <i>Ширина столбцов</i>, первую цифру обнуляем &#8212; <b>0см;2,54см;2,54см</b>, проверим ввод данных в режиме таблица.</p>
<p class="Content2">Закроем таблицу <i>Студенты</i> и убедимся, что на экране только вкладка <i>Схема данных</i>, правый клик по пустому полю схемы, пункт <i>Отобразить всё</i>. Появилась ещё одна связь.</p>
<p class="Content2">Удалим новую связь правым кликом по ней пункт <i>Удалить</i>, а в конструкторе таблицы <i>Студенты</i>, удалим поле <i>КодЭкскурсии</i> правым кликом по нему и выбираем <i>Удалить</i> строки</p>
<p class="Content2">Мы удалили это поле, поскольку <i>Студенты</i> не хотят участвовать только в одной экскурсии, т.е. связь ОДИН-КО-МНОГИМ не подходит, нужна связь МНОГИЕ-КО-МНОГИМ.</p>
<div class="Header2">Связь МНОГИЕ-КО-МНОГИМ <b>&#8734;</b> : <b>&#8734;</b></div>
<p class="Content2">В этой связи один студент может пойти на несколько экскурсий. Однако для связи МНОГИЕ-КО-МНОГИМ, двух таблиц будет недостаточно, между таблицами <i>Студенты</i> и <i>Экскурсии</i> нужна третья таблица “посредник”, которая содержит как минимум два поля для соединения первых двух таблиц. Эти два поля по отдельности являются внешними ключами для первичных таблиц, но в совокупности для своей таблицы, они образуют первичный ключ.</p>
<p class="Content2">В нашей базе данных создадим новую таблицу командой <i>Создание/Таблицы/Конструктор</i> таблиц с двумя полями <i>КодСтудента</i> и <i>КодЭкскурсии</i>, оба поля одновременно делаем первичными: [Shift]+hold, выделяем оба поля и нажимаем на кнопку <i>Ключевое поле</i>:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-016.jpg" alt="1" /></div>
<p class="Content2">Правый клик по вкладке, сохраним таблицу как <i>Экскурсанты</i></p>
<p class="Content2">Тип данных для поля <i>КодСтудента</i> &#8212; <i>Мастер подстановок</i>, в качестве источника выбираем другую таблицу, жмём <i>Далее></i>, выбираем таблицу <i>Студенты</i> жмём <i>Далее></i>, кнопкой > выбираем поля: <i>НомерСтудБилета</i> (мы его потом выберем ключевым), <i>Фамилия</i>, <i>Имя</i> и <i>Отчество</i>, жмём <i>Далее></i>,  выберем сортировку полей <i>Фамилия</i>, <i>Имя</i> и <i>Отчество</i> по возрастанию, жмём <i>Далее></i>, отображаем ключевой столбец (т.е. галку снимаем), <i>Далее></i>, на этом шаге выбираем ключевой столбец который мы отразили на предыдущем шаге, жмём <i>Далее></i>, включаем проверку целостности, жмём <i>Готово</i>  и соглашаемся с сохранением.</p>
<p class="Content2">Убедимся, что тип данных нашего поля изменился на <i>Числовой</i>.</p>
<p class="Content2">Аналогично свяжем поле <i>КодЭкскурсии</i> с таблицей <i>Экскурсии</i>: тип данных <i>Мастер подстановок</i>. В качестве источника выбираем другую таблицу, жмём <i>Далее></i>, выбираем таблицу <i>Экскурсии</i> жмём <i>Далее></i>, кнопкой > выбираем поля: <i>КодЭкскурсии</i> (мы его потом выберем ключевым), <i>Название</i> и <i>ДатаЭкскурсии</i> жмём <i>Далее></i>, сортировку пропускаем, жмём <i>Далее></i>, отображаем ключевой столбец (т.е. галку снимаем), <i>Далее></i>, на этом шаге выбираем ключевой столбец который мы отразили на предыдущем шаге, жмём <i>Далее></i>, включаем проверку целостности, жмём <i>Готово</i>  и соглашаемся с сохранением.</p>
<p class="Content2">Убедимся, что тип данных нашего поля изменился на <i>Числовой</i>. Закрываем все открытые таблицы, убедимся, что отображена схема данных:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-012.jpg" alt="1" /></div>
<p class="Content2">Правый клик по фону, выбираем <i>Все связи</i>.</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-017.jpg" alt="1" /></div>
<p class="Content2">Откроем таблицу <i>Экскурсанты</i> в режиме таблицы и заполним данные двух связанных полей. Убедимся, что один студент может быть отправлен в разные экскурсии, НО, только один раз иначе будет предупреждение. Поскольку это составной ключ(на схеме два ключика) и не может повториться.</p>
<div class="Header2">Связь ОДИН-К-ОДНОМУ 1 : 1</div>
<p class="Content2">В режиме конструктора создадим ещё одну таблицу с участниками футбольной команды учебного заведения:</p>
<table class=table_11TahomaHeaderUser>
	<valign="top" /></p>
<tr bgcolor="#f0f0f0" align="center">
<td width="100px"><b>Имя поля</b></td>
<td width="200px"><b>Тип данных</b></td>
</tr>
<tr>
<td height="20px">КодСтудента</td>
<td>Текстовый</td>
</tr>
<tr>
<td>Номер</td>
<td>Числовой</td>
</tr>
<tr>
<td>Основной</td>
<td>Логический</td>
</tr>
</table>
<p class="Content2">Для поля <i>Номер</i> на вкладке <i>Общие</i>, настроим следующие свойства:</p>
<ul class="align_justify">
<li><i>Размер поля</i>: <b>Байт</b></li>
<li><i>Число десятичных знаков</i>: <b>Авто</b></li>
<li><i>Обязательное поле</i>: <b>Да</b></li>
<li><i>Индексированное поле</i>: <b>Да (Совпадения не допускаются)</b></li>
</ul>
<p class="Content2Top">Для поля <i>КодСтудента</i>, создадим первичный ключ, тип данных &#8212; <i>Мастер подстановок</i>. Свяжем это поле с таблицей <i>Студенты</i>  по полю <i>НомерСтудБилета</i> аналогично тем действиям, что мы уже делали. Таблицу назовём <i>Спортсмены</i>. Закроем таблицу <i>Спортсмены</i>. Откроем схему данных:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-012.jpg" alt="1" /></div>
<p class="Content2">Правый клик по свободному месту рабочей области, выбираем <i>Все связи</i>. Отобразилась связь с новой таблицей. Однако между первичными простыми ключевыми полями двух таблиц может существовать одна связь ОДИН-К-ОДНОМУ, а у нас ОДИН-КО-МНОГИМ:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-017-2.jpg" alt="1" /></div>
<p class="Content2">Исправим это: правый клик по связи/<i>Изменить связь</i> в окне убеждаемся что тип отношения ОДИН-К-ОДНОМУ теперь снимем галку <i>Обеспечение целостности данных</i>, ОК, снова изменим связь, заново ставим галку <i>Обеспечение целостности данных</i> и ОК. Теперь между таблицами значки две единицы:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-018.jpg" alt="1" /></div>
<p class="Content2">Теперь в режиме таблицы заполним таблицу <i>Спортсмены</i> на своё усмотрение.</p>
<div class="Header2">Итого по связям</div>
<p class="Content2">Чтобы лучше разбираться в том, какую связь использовать, в базе данных <i>Студенты</i>, нужно решить, если студент посещает одну экскурсию, то это связь ОДИН-КО-МНОГИМ ( <b>1</b> : <b>&#8734;</b> ). Здесь связывается поле вторичной таблицы <i>Студенты</i>(которое является внешним ключом) с полем первичной таблицы <i>Экскурсии</i>(которое является первичным ключом). При этом одно или несколько экскурсий может быть в таблице <i>Студенты</i>, НО, только одну экскурсию может посетить студент. Отсюда название <b>1</b> : <b>&#8734;</b>.</p>
<p class="Content2">Если же в нашей базе студент посещает несколько экскурсий, то это связь МНОГИЕ-КО-МНОГИМ ( <b>&#8734;</b> : <b>&#8734;</b> ). Здесь таблица <b>Экскурсии</b> и <b>Студенты</b> являются первичными и между ними нужно создать вторичную таблицу посредник с минимум двумя полями, каждое для связи со своей первичной таблицей. Эти две таблицы, связываются с посредником отношением ОДИН-КО-МНОГИМ. И как уже упоминалось, два поля в таблице посредник, по отдельности являются внешними ключами для первичных таблиц, но в совокупности, они образуют первичный ключ для самой таблицы посредник.</p>
<p class="Content2">Связь <b>1</b> : <b>1</b> используется редко, понять её можно на примере таблицы <i>Студенты</i>, где НЕ КАЖДЫЙ студент может быть спортсменом и иметь собственный номер в спортивной игре. Поэтому такого студента можно связать с отдельной таблицей, например <i>Спортсмены</i>, где содержится спортивный номер студента. Причём в этом типе связи, таблицы соединяются по первичному ключу обоих таблиц. Если ВСЕ студенты будут спортсменами, то необходимость в отдельной таблице <i>Спортсмены</i> отпадает и соответственно связь <b>1</b> : <b>1</b>, не нужна.</p>
<div class="Header2">Самостоятельная работа 1</div>
<p class="Content2">Создать возможность, чтобы каждый студент мог из ДОУ мог выбрать только один курс. Подсказка – использовать связь <b>1</b> : <b>&#8734;</b>.</p>
<p class="Content2Top">Закрываем базу <b>БД_Студенты_1</b>  командой <i>Файл/Закрыть базу данных</i>.</p>
<div class="Header2">Самостоятельная работа 2</div>
<p class="Content2"> Откроем файл базы данных <b>БД_Студенты_1</b>, Выбираем <i>Включить содержимое</i>.</p>
<p class="Content2">Реализовать хранение данных, о прохождении каждым студентом множества курсов ДОУ с указанием данных<br />
 Дата сдачи (с маской ввода через точку), Кол-во баллов (цело число до 100), Наличие сертификата (Да/Нет). </p>
<p class="Content2">Подсказка 1. Поскольку один студент может пройти несколько курсов ДОУ, то здесь нужна отдельная таблица для реализации связи МНОГИЕ-КО-МНОГИМ через две связи ОДИН-КО-МНОГИМ. </p>
<p class="Content2">Подсказка 2. Другими словами создать таблицу <i>Сертифицированные студенты</i> из 5 полей: <i>Студент</i>, <i>Курс</i>, <i>Дата сдачи</i>, <i>Кол-во балов</i> и <i>Наличие сертификата</i>.<br />
 Первые два поля, связать с таблицами <i>Студенты</i> и ДОУ отношением ОДИН-КО-МНОГИМ.<br />
 Остальные поля создать согласно условию самостоятельной работы. В режиме таблицы добавить несколько студентов,<br />
 которые прошли несколько курсов.</p>
<p class="Content2Top">Закрываем базу <b>БД Студенты1</b>  командой <i>Файл/Закрыть базу данных</i>.</p>
<div class="Header1">Импорт данных</div>
<p class="Content2">Откроем файл базы данных <a href ="wp-content/uploads/access/БД_Студенты_2.accdb">БД_Студенты_2</a>. Выбираем <i>Включить содержимое</i>. Ни один объект этой базы не должен быть открыт. Активируем вкладку Внешние данные и в группе <i>Импорт и связи</i> выберем <i>Access</i>:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-019.jpg" alt="1" /></div>
<p class="Content2">Откроется диалог для работы с источником наших внешних данных. Нажимаем <i>Обзор</i> выберем файл <a href ="wp-content/uploads/access/БД_Борей.accdb">БД_Борей</a>, оставим флажок <i>Импорт таблиц</i>…, жмём ОК. В диалоге на вкладке <i>Таблицы</i>, выбираем пункт <i>Поставщики</i>, жмём два раза ОК.</p>
<p class="Content2">В нашей базе <b>БД_Студенты_2.accdb</b>, появилась новая таблица <i>Поставщики</i>, которая базе благодаря флажку <i>Импорт</i>, есть физически в нашей.</p>
<p class="Content2Top">Аналогично импортируем текстовой файл <a href ="wp-content/uploads/access/Переведённые_студенты.txt">Переведённые_студенты</a>. Выполним команду импорта текстового файла:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-020.jpg" alt="1" /></div>
<p class="Content2">в диалоге нажимаем <i>Обзор</i>, выберем скопированный файл <i>Переведённые_студенты,</i> 	(откроется файл, правый клик, сохранить как, выбираем тип <i>Text Document</i>) активируем флажок <i>Импортировать данные</i>, жмём ОК. В диалоге выбираем флажок с разделителями, жмём <i>Далее></i>. На предварительном просмотре таблицы видно, что первая строка не относится к данным, потому что это заголовок полей таблицы, значит ставим флажок <i>Первая строка содержит имена полей</i>. Если появится сообщение, соглашаемся. Здесь же ставим флажок Табуляция, жмём <i>Далее></i>. Здесь можно выделить таблицу и настроить некоторые свойства полей, жмём <i>Далее></i>. Выберем флажок <i>автоматически создавать ключ</i>, жмём <i>Далее></i> Соглашаемся с именем таблицы по умолчанию, жмём <i>Готово</i> и <i>Закрыть</i>.</p>
<p class="Content2">Откроем эту таблицу и убедимся что добавлено ключевое поле <i>Код</i>. Закроем таблицу.</p>
<div class="Header2">Импорт с добавлением</div>
<p class="Content2">Теперь импортируем три таблицы <b>MS Excel</b>, в одну таблицу <b>MS Access</b>, т.е. одну таблицу Excel импортируем как новую таблицу Access, а остальные добавим к новой:</p>
<p class="Content2">Скопируем на свой диск файл <a href ="wp-content/uploads/access/БД_Студенты.xls"><i>БД_Студенты</i></a>. Выполним команду <i>Внешние данные/Импорт/Excel</i>, жмём <i>Обзор</i>, выбираем скопированный файл <b>БД_Студенты</b>,<br />
 флажок <i>Импортировать данные</i> и ОК, выберем данные с листа <i>Студенты_Iкурс</i>, жмём <i>Далее</i>, соглашаемся, что первая строка содержит заголовки, далее, выберем для поля <i>КодФакультета</i> тип данных <b>Байт</b>:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-020-3.jpg" alt="1" /></div>
<p class="Content2">далее, активируем флажок не создавать ключ, далее, исправим имя таблицы на <i>Студенты импорт</i> жмём <i>Готово</i> и <i>Закрыть</i>.</p>
<p class="Content2Top">Откроем таблицу <i>Студенты импорт</i> и убедимся что строк 16. Закрываем таблицу и аналогично добавим в неё данные из листа <i>Студенты_IIкурс</i> файла MS Excel:</p>
<p class="Content2">Снова выполним команду <i>Внешние данные/Импорт/Excel</i>, жмём <i>Обзор</i> выбираем скопированный файл <b>БД_Студенты</b>, но теперь нам нужно импортировать не в новую таблицу, а добавить в таблицу <i>Студенты импорт</i>, значит активируем флажок <i>Добавить копию</i>… и в списке выбрать пункт <i>Студенты импорт</i>, ОК, выберем с какого листа будем брать данные – <i>Студенты_IIкурс</i>, далее, <i>Готово</i> и <i>Закрыть</i>.</p>
<p class="Content2">Откроем таблицу <i>Студенты импорт</i> и убедимся что строк уже 32. Закрываем таблицу и аналогично добавим в неё данные из листа <i>Студенты_IIIкурс</i>. После добавления таблицы, строк будет уже 48.</p>
<p class="Content2">В режиме конструктора таблицы <i>Студенты импорт</i> сделаем поле <i>Табельный номер</i> первичным ключом:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-021.jpg" alt="1" /></div>
<div class="Header2">Импорт связанной таблицы</div>
<p class="Content2">Выполним команду <i>Внешние данные/Импорт/Excel</i>, жмём <i>Обзор</i> выбираем файл <b>БД_Студенты.xls</b>, флажок <i>Создать</i> связанную таблицу, ОК, выберем любой лист, два раза <i>Далее</i>, <i>Готово</i> и ОК.</p>
<p class="Content2">Обратим внимание на значок новой таблицы:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-022.jpg" alt="1" /></div>
<p class="Content2">стрелочка указывает, что эта таблица физически в нашей базе данных не существуют,<br />
т.е. мы не можем её редактировать. Попробуем зайти в режим конструктора и добавить или удалить поле.<br />
 Такая таблица нужна в основном для просмотра.</p>
<div class="Header1">Анализ таблиц</div>
<p class="Content2">Это возможность разбиения таблицы на несколько таблиц с созданием связи и сохранением значений.</p>
<p class="Content2">Продолжаем работать с базой данных <b>БД Студенты2</b>. Закроем все таблицы, выполним: <i>Работа с базами данных/Анализ/Анализ таблиц</i>:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-023.jpg" alt="1" /></div>
<p class="Content2">В диалоге на первом шаге будет описана теория нормализации таблиц которая позволяет оптимально работать с базой данных, слева ненормализованная таблица, полезно нажать кнопки для демонстрации последствий ненормализованной базы данных, жмём <i>Далее</i>, на втором шаге показана разбитая таблица из предыдущего шага, жмём <i>Далее</i>, теперь программа предложит разделить какую-нибудь таблицу, выберем таблицу <i>Студенты</i> и <i>Далее</i>, выберем флажок <i>Да, разделение…</i>, жмём <i>Далее</i>. Появилось окно с несколькими связанными таблицами:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-024.jpg" alt="1" /></div>
<p class="Content2">где поля <i>Город</i>, <i>Страна</i> и <i>Деятельность</i>, вынесены в отдельные таблицы. Все они связаны с таблицей описывающие студента. Что мастер сделал? Он нашёл в исходной таблице повторяющиеся города, вынес их в отдельную таблицу как уникальные данные, и связал её с исходной, т.е. города в отдельной таблице, теперь будут только в единственном экземпляре. Аналогично мастер вынес из таблицы с городами, страны, которые поместил в отдельную таблицу затем связал их.</p>
<p class="Content2">Мы хотим, чтобы города и страны были в одной таблице: тянем за поле <i>Страна</i> и помещаем в таблицу с городами. Также мы хотим чтобы таблица <i>Студенты</i> содержало поле <i>Деятельность</i>: аналогично тянем это поле в таблицу <i>Студенты</i>:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-025.jpg" alt="1" /></div>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-026.jpg" alt="1" /></div>
<p class="Content2Top">И наоборот, если таки нужна отдельная таблица с деятельностью, тянем поле <i>Деятельность</i> обратно в пустую область диалога:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-027.jpg" alt="1" /></div>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-028.jpg" alt="1" /></div>
<p class="Content2">Нажимаем Далее, если нас не устроят имена таблиц, мы их можем в любое время переименовать. Теперь  мы можем добавить ключевые поля, например поле <i>Деятельность</i> можно сделать ключевым: выделим строку <i>Деятельность</i> и нажмём на ключик:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-029.jpg" alt="1" /></div>
<p class="Content2">Нажимаем <i>Далее</i>, отказываемся от создания запроса и <i>Готово</i>.</p>
<p class="Content2">Открываем таблицу 1 и видим поля Подстановка Таблица2 и Подстановка Таблица3 являются связанными с таблицами 2 и 3 соответственно.</p>
<p class="Content2">Закроем файл <b>БД_Студенты_2</b> командой <i>Файл/Закрыть базу данных</i>.</p>
]]></content:encoded>
			<wfw:commentRss>http://kshu.su/?feed=rss2&#038;p=66</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>1. MS Access. Уровень 1. Создание таблиц</title>
		<link>http://kshu.su/?p=64</link>
		<comments>http://kshu.su/?p=64#comments</comments>
		<pubDate>Mon, 29 Sep 2014 17:06:52 +0000</pubDate>
		<dc:creator><![CDATA[Kirill Schurakhtenkov]]></dc:creator>
				<category><![CDATA[Microsoft Access]]></category>

		<guid isPermaLink="false">http://kshu/?p=64</guid>
		<description><![CDATA[Создание файла базы данных. Создание таблицы в базе данных. Режимы конструктора, режим таблицы. Типы и свойства полей таблицы. Ключевое поле Создание базы данных Запустим программу MS Access 2010. В окне программы создадим базу данных Студенты. В поле Имя файла вводим Студенты, выберем путь на диске где база данных будет находиться и нажмём Создать: Появится окно [&#8230;]]]></description>
				<content:encoded><![CDATA[<p class="Content2">Создание файла базы данных. Создание таблицы в базе данных. Режимы конструктора, режим таблицы. Типы и свойства полей таблицы. Ключевое поле</p>
<p><span id="more-64"></span></p>
<div class="Header2">Создание базы данных</div>
<p class="Content2">Запустим программу <b>MS Access 2010</b>. В окне программы создадим базу данных <b>Студенты</b>. В поле <i>Имя файла</i> вводим <i>Студенты</i>, выберем путь на диске где база данных будет находиться и нажмём <i>Создать</i>:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-001.jpg" alt="1" /></div>
<p class="Content2">Появится окно базы данных <i>Студенты</i>, с одной таблицей <i>Таблица1</i>, закроем таблицу &#8212; ПК(правый клик) по ярлыку и выбираем <i>Закрыть</i>:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-002.jpg" alt="1" /></div>
<div class="Header2">Создание таблицы. Режим конструктора</div>
<p class="Content2">Создадим таблицу командой <i>Создание/Таблицы/Конструктор таблиц</i>:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-003.jpg" alt="1" /></div>
<p class="Content2">Появится конструктор будущей таблицы, в нём мы будем редактировать каркас таблицы. В колонке <i>Имя поля</i>, создадим имена полей для будущей таблицы:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-004.jpg" alt="1" /></div>
<p class="Content2Top">Между полем <i>Фамилия</i> и <i>Имя</i>, добавим для будущей таблицы новое поле <i>Отчество</i>: курсор в поле <i>Пол</i>, затем выполним команду: <i>Конструктор/Сервис/Вставить строки</i>:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-005.jpg" alt="1" /></div>
<p class="Content2">Введём в новую строку – <i>Отчество</i>,</p>
<p class="Content2">теперь изменим порядок полей. Переместим поле <i>ВремяНачалаУчёбы</i> под полем <i>ДатаРождения</i>: щелчком по серому квадратику левее названия поля выделим строку, затем размещаем ниже поля <i>ДатаРождения</i>:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-006.jpg" alt="1" /></div>
<div class="Header2">Свойства полей</div>
<p class="Content2">Настроим свойства полей. Для полей <i>Фамилия</i>, <i>Имя</i>, <i>Отчество</i> и <i>Пол</i> ставим тип данных <i>Текстовый</i>, а для их свойства <i>Размер поля</i> ставим значения: <b>40</b>, <b>40</b>, <b>40</b> и <b>8</b> соответственно. Пример для типа данных поля <i>Пол</i> и его свойств:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-007.jpg" alt="1" /></div>
<p class="Content2">Для поля <i>ДатаРождения</i> ставим тип <i>Дата время</i>, свойство <i>Формат поля</i> ставим <b>Краткий формат даты</b>:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-008.jpg" alt="1" /></div>
<p class="Content2">Аналогично, для поля <i>ВремяНачалаУчёбы</i> ставим тип <i>Дата время</i>, а свойство <i>Формат поля</i> ставим <b>Краткий формат времени</b></p>
<p class="Content2">Для поля <i>Деятельность</i> – тип <i>Текстовый</i>, свойство <i>Размер поля</i> ставим <b>255</b></p>
<p class="Content2">Для поля <i>Стипендия</i> – тип <i>Денежный</i>, свойство <i>Условие на значение</i> ставим <b>>=400</b> (больше или равно, т.е. стипендия должна быть минимум 400), свойство <i>Сообщение об ошибке</i> вводим: <b>Не менее 400 рублей</b></p>
<p class="Content2">Для поля <i>УдостоверениеВодителя</i> – тип <i>Логический</i>, свойство <i>Формат поля</i> раскрываем список и выбираем <b>Да/Нет</b>.</p>
<p class="Content2">Для поля <i>КолвоИнЯзыков</i> – тип <i>Числовой</i>, свойство <i>Размер поля</i> ставим <b>Байт</b>, свойство <i>Условие на значение</i> ставим <b><=6</b> (т.е. студент может знать не более 6 иностранных языков), свойство Сообщение об ошибке вводим строку: Не более 6 языко</p>
<p class="Content2">Для поля <i>e-mail</i> – тип <i>Гиперссылка</i></p>
<p class="Content2">Для поля <i>Фото</i> – тип <i>Поле объекта OLE<i></p>
<p class="Content2">Для поля <i>Документы</i> – тип <i>Вложения</i></p>
<p class="Content2">Для поля <i>Фамилия</i> в свойстве <i>Обязательное поле</i> выберем пункт <b>Да</b>.</p>
<div class="Header2">Ключевое поле</div>
<p class="Content2">Добавим новое поле, которое будет первым, т.е. левее поля <i>Фамилия</i>: выделим поле <i>Фамилия</i> затем: <i>Конструктор/Сервис/Вставить строки</i></p>
<p class="Content2">Назовём поле <i>НомерСтудБилета</i> тип <i>Счётчик</i> и пока поле выделено сделаем его ключевым: вкладка <i>Конструктор/Сервис/Ключевое поле</i></p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-009.jpg" alt="1" /></div>
<p class="Content2Top">Назовём таблицу <i>Студенты</i>: правый клик по ярлыку таблицы, выбираем пункт <i>Сохранить</i>, в диалоге водим имя <i>Студенты</i>. В левой панели программы MS Access, появился новый объект – таблица <i>Студенты</i>:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-010.jpg" alt="1" /></div>
<p class="Content2">если он не появился, выберите команду <i>Все объекты Access</i>:</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-086.jpg" alt="1" /></div>
<p class="Content2">Закроем таблицу <i>Студенты</i>: правый клик по ярлыку – пункт <i>Закрыть</i>.</p>
<div class="Header2">Режим таблицы</div>
<p class="Content2">Теперь откроем таблицу двойным кликом по ярлыку в левой части программы. Откроется таблица <i>Студенты</i> в режиме ввода её данных. Введём данные, начиная с поля <i>Фамилия</i> на своё усмотрение кроме поля <i>НомерСтудБилета</i>, <i>Пол</i> и <i>Деятельность</i>.</p>
<p class="Content2">Для поля <i>Фото</i> правый клик в ячейке и выбираем <i>Вставить объект</i>. В диалоге выбираем флажок <i>Создать из файла</i>, из указанной папки выбираем папку Access/Фото и выберем любой файл(или выберите любое фото человека).</p>
<p class="Content2">Вместо поля <i>Документы</i> нарисована скрепка, двойной клик по скрепке и в диалоге нажимаем <i>Добавить</i>, затем в диалоге добавьте сколь угодно любые документы из вашего диска.</p>
<div class="Header3"><strong>Переключения между режимами</strong></div>
<p class="Content2">Мы будем работать только в двух режимах: <b>режим таблицы</b> это результирующая таблица для пользователя и <b>режим конструктора</b> это каркас таблицы для настройки имён полей их типов и свойств. Запомним три способа переключения между этими режимами:</p>
<ol class="align_justify">
<li>если таблица не активна, в левом окне программы правый клик по таблице и выбираем один из двух пунктов <i>Открыть</i> или <i>Конструктор</i>. Самый удобный запуск режима таблицы – двойной клик по таблице в левой панели</li>
<li>если таблица активна, правый клик по вкладке таблицы и выбираем либо <i>Режим таблицы</i>, либо <i>Конструктор</i></li>
<li>если таблица активна, выполним: <i>Главная/Режимы</i> нажимаем кнопку с треугольником(если её нет, то раскроем кнопку <i>Режимы</i> и выберем пункт <i>Конструктор</i>)</li>
</ol>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-085.jpg" alt="1" /></div>
<p class="Content2Top">В режиме конструктора выделяем поле <i>ДатаРождения</i> и в свойство <i>Подпись</i> вводим(с пробелом) <b>Дата рождения</b>. Сохраняем таблицу, переключаемся в режим таблицы и проверяем, что название поля <i>ДатаРождения</i> будет с пробелом. Закроем таблицу правым кликом по ярлыку.</p>
<p class="Content2Top">Самостоятельно создадим таблицу <i>Факультеты</i> с двумя полями: <i>Название</i> и <i>Численность</i>. Поле <i>Численность</i> должно выводить числовые значения каждое значение не более 3000.</p>
<p class="Content2Top">Откроем таблицу <i>Студенты</i> в режиме конструктора, добавим последним поле <i>КодПропуска</i> тип <i>Числовой</i>, в свойстве <i>Индексированное поле</i> пункт <b>Да (Совпадения не допускаются)</b>, сохраняем таблицу.</p>
<p class="Content2">Теперь открываем её в режиме таблицы и пробуем для нового поля <i>КодПропуска</i> ввести два одинаковых значения и перейти на следующую строку. Появится сообщение об ошибке. Также можно попробовать специально забыть ввести данные в поле <i>Фамилия</i>. Это тоже не получится, поскольку мы активировали свойство <i>Обязательное поле</i></p>
<p class="Content2">Закройте окно программы <b>MS Access 2010</b>, сохранение файла базы данных происходит автоматически.</p>
<p class="Content2Top">Снова запустим программу <b>MS Access 2010</b>. Откроем файл нашей базы данных <b>Студенты.accdb</b></p>
<p class="Content2">Откроем таблицу <i>Студенты</i> в режиме конструктора. Добавим последним поле <i>Рост</i> с типом данных <i>Числовой</i>, свойство <i>Размер поля</i> – <i>Байт</i> и свойство <i>Формат поля</i> вводим строку – <b>0” см”</b> (кавычки в английской раскладке):</p>
<div id="block30x30center"><img src="wp-content/uploads/access/acs-011.jpg" alt="1" /></div>
<p class="Content2">В режиме таблицы в поле <i>Рост</i> введём несколько числовых данных &#8212; к числу будет добавлена строка <b>см</b>. Попробуем ввести значение, превышающее 255 см.</p>
<p class="Content2">В режиме конструктора, между полями <i>Стипендия</i> и <i>УдостоверениеВодителя</i> добавим новое поле: курсор в поле <i>УдостоверениеВодителя</i>, далее выполним <i>Конструктор/Сервис/Вставить строки</i>.</p>
<p class="Content2">Новое поле назовём <i>Грант</i>, тип данных <i>Денежный</i>, в свойство <i>Формат поля</i> вводим строку <b># ###0,00&#8220; USD&#8220;</b>(английская кавычка), появится значок с молнией, раскроим его и выбираем пункт <i>Обновить формат везде</i>, соглашаемся со всем и в режиме таблицы введём в поле <i>Грант</i> любые числа.</p>
<p class="Content2">При желании вместо <b>USD</b> можно было ввести символ <b>$</b>.</p>
<div class="Header2">Маска ввода</div>
<p class="Content2">В режиме конструктора таблицы <i>Студенты</i>, выделим поле <i>ДатаРождения</i>  и в поле свойства <i>Маска ввода</i> ведём – <b>00.00.0000</b> (Нули это есть обязательное правило, для вода цифр)</p>
<p class="Content2">Теперь после сохранения переходим в режим таблицы и в поле <i>Дата рождения</i>, ведём любую дату без точек. В режиме конструктора для поля <i>ВремяНачалаУчёбы</i>  в поле свойства <i>Маска ввода</i> вводим &#8212; <b>00:00</b>. Сохраняем и в режиме таблицы в поле <i>ВремяНачалаУчёбы</i> вводим любое время без двоеточия.</p>
<p class="Content2">В режиме конструктора в конце добавим новое поле <i>Телефон</i>, тип данных <i>Текстовый</i>, в поле свойства <i>Размер поля</i> введём значение <b>9</b>, а в поле <i>Маска ввода</i> вводим <b>000-00-00</b>. В режиме таблицы введём семизначный телефон без дефисов.</p>
<p class="Content2">В режиме конструктора в конце добавим новое поле <i>МобТелефон</i> тип данных <i>Текстовый</i>, в поле свойства <i>Размер поля</i> введём значение <b>20</b>, а в поле <i>Маска ввода</i> вводим <b>+7 (000) 000-00-00</b>. В режиме таблицы в поле <i>МобТелефон</i> введём трёхзначный код и семизначный телефон( без дефисов скобок и +7).</p>
<p class="Content2">В режиме конструктора в конце добавим новое поле <i>КодЗачётнойКнижки</i> тип данных <i>Текстовый</i>, в поле свойства <i>Размер поля</i> введём значение <b>15</b>.</p>
<p class="Content2">Пусть код зачётной книжки состоит из трёх обязательных букв, четырёх обязательных цифр, двух обязательных букв, а затем либо две, либо три цифры, например, пусть есть два возможных кода зачётной книжки:</p>
<p class="Content2"> <b>ФИЗ-1994-ЛТ-25</b> или <b>МАТ-1994-АН-336</b>, тогда для маски ввода нужно использовать символ для необязательных цифр:</p>
<p class="Content2">Введём в поле свойства <i>Маска поля</i> – <b>LLL-0000-LL-009</b></p>
<p class="Content2">где, <b>L</b> – служит для ввода текстового символа, <b>0</b> – обязательная цифра и <b>9</b> – необязательная цифра</p>
<p class="Content2">В режиме таблицы в поле <i>КодЗачётнойКнижки</i> введём <b>ФИЗ2015КР80</b> и <b>МАТ2014КР220</b></p>
<p class="Content2">Заставим чтобы все буквы кода зачётной книжки были заглавными: в режиме конструктора для свойства <i>Маска ввода</i> добавим символ <b>></b> – <b>>LLL-0000-LL-009</b></p>
<div class="Header2">Самостоятельная работа</div>
<p class="Content2">Создадим таблицу <i>Экскурсии</i> с полями:</p>
<ul class="align_justify">
<li><i>Название</i> (ключевое)</li>
<li><i>Дата экскурсии</i> (маска ввода)</li>
<li><i>Время сбора</i> (маска ввода)</li>
<li><i>Стоимость экскурсии</i> (в у.е.)</li>
</ul>
<p class="Content2Top">Ниже представлен конструктор таблицы <i>Экскурсии</i>  и собственно таблица <i>Экскурсии</i>  с введёнными данными. Обратите внимание, что имя поля в конструкторе слитно, а в режиме таблицы раздельно. В поля <i>Дата</i>, <i>Время</i> и <i>Стоимость экскурсии</i> вводятся только цифры (точки, двоеточия и у.е. добавляется автоматически):</p>
<table class=table_11TahomaHeaderUser>
	<valign="top" /></p>
<tr bgcolor="#f0f0f0" align="center">
<td width="100px"><b>Имя поля</b></td>
<td width="200px"><b>Тип данных</b></td>
</tr>
<tr>
<td height="20px">Название</td>
<td>Текстовый</td>
</tr>
<tr>
<td>ДатаЭкскурсии</td>
<td>Дата/время</td>
</tr>
<tr>
<td>ВремяСбора</td>
<td>Дата/время</td>
</tr>
<tr>
<td>СтоимостьЭкскурсии</td>
<td>Денежный</td>
</tr>
</table>
<p></p>
<table class=table_11TahomaHeaderUser>
	<valign="top" /></p>
<tr bgcolor="#f0f0f0" align="center">
<td width="100px"><b>Название</b></td>
<td width="100px"><b>Дата экскурсии</b></td>
<td width="100px"><b>Время сбора</b></td>
<td width="200px"><b>Стоимость экскурсии</b></td>
</tr>
<tr>
<td height="20px">Планетарий</td>
<td>12.03.2015</td>
<td>10:00</td>
<td>100 у.е.</td>
</tr>
<tr>
<td>Обсерватория</td>
<td>20.03.2015</td>
<td>10:30</td>
<td>500 у.е.</td>
</tr>
<tr>
<td>Музей</td>
<td>24.03.2015</td>
<td>11:00</td>
<td>350 у.е.</td>
</tr>
</table>
<p class="Content2">Закрываем нашу базу данных командой <i>Файл/Закрыть базу данных</i> и закроем окно программы <b>MS Access 2010</b>.</p>
]]></content:encoded>
			<wfw:commentRss>http://kshu.su/?feed=rss2&#038;p=64</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>4. Условное форматирование. Сортировка и фильтры</title>
		<link>http://kshu.su/?p=58</link>
		<comments>http://kshu.su/?p=58#comments</comments>
		<pubDate>Mon, 29 Sep 2014 17:02:04 +0000</pubDate>
		<dc:creator><![CDATA[Kirill Schurakhtenkov]]></dc:creator>
				<category><![CDATA[Microsoft Excel]]></category>

		<guid isPermaLink="false">http://kshu/?p=58</guid>
		<description><![CDATA[Выделение ячеек таблицы по заданному критерию, например, выделить ячейки с числами, большими чем 5 или выделить ячейки с повторяющимися данными. Сортировка ячеек таблицы по алфавиту. Удаление повторяющихся данных. Фильтрация данных, например, отображение данных только одного или двух наименований. Фильтрация данных по нескольким условиям. Суммирование ячеек нескольких листов с помощью консолидации Условное форматирование, применяется для построения [&#8230;]]]></description>
				<content:encoded><![CDATA[<p class="Content2">Выделение ячеек таблицы по заданному критерию, например, выделить ячейки с числами, большими чем 5 или выделить ячейки с повторяющимися данными. Сортировка ячеек таблицы по алфавиту. Удаление повторяющихся данных. Фильтрация данных, например, отображение данных только одного или двух наименований. Фильтрация данных по нескольким условиям. Суммирование ячеек нескольких листов с помощью консолидации</p>
<p>	<span id="more-58"></span></p>
<p><!--Условное форматирование-->	</p>
<div class="Header2"><strong></strong></div>
<p class="Content2">Условное форматирование, применяется для построения таблиц, ячеек в зависимости от наших условий. Например, ячейка содержит данные о наличии той или иной продукции, и можно эту ячейку подкрасить цветом. Откроем файл <a href ="wp-content/uploads/excel/SmartFormating.xlsx">Условное форматирование</a>, лист <i>тест</i>.</p>
<div class="Header3">Таблица <b>Больше 5</b></div>
<p class="Content2">Выделим ячейки, числа которых больше 5:</p>
<div id="block10x10center"><img src="wp-content/uploads/excel/exel-04-04.jpg" alt="1" /></div>
<p class="Content2">Выделим ячейки <b>A2:C6</b>, затем на вкладке <i>Главная/Стили/Условное форматирование/Правила выделения ячеек/Больше</i>(появится диалог в котором будет выполнено вычисление по умолчанию). В левое поле вводим <b>5</b>, в списке справа выбираем любой цвет:</p>
<div id="block10x10center"><img src="wp-content/uploads/excel/exel-04-01.jpg" alt="1" /></div>
<div id="block10x10center"><img src="wp-content/uploads/excel/exel-04-02.jpg" alt="1" /></div>
<div id="block10x10center"><img src="wp-content/uploads/excel/exel-04-03.jpg" alt="1" /></div>
<div class="Header3">Таблица <b>Выше среднего</b></div>
<p class="Content2">Выделим ячейки, числа которых выше среднего значения: Выделим ячейки <b>E2:G6</b>, затем на вкладке <i>Главная/Стили/Условное форматирование/Правила отбора первых и последних значений</i>. В списке выбираем <i>Выше среднего</i>. Появится диалог для выбора цвета и в ячейках <b>E2:G6</b>, будут выделены ячейки согласно условию цветом из предыдущего шага условного форматирования.</p>
<div class="Header3">Таблица <b>Одинаковые данные</b></div>
<p class="Content2">Выделим ячейки, с совпадающими значениями . Выделим ячейки <b>I2:K6</b>, на вкладке <i>Главная/Стили/Условное форматирование/Правила выделения ячеек/Повторяющиеся данные</i>. В диалоге в списке слева убеждаемся, что выбрано значение повторяющиеся, а справа выбираем любой цвет.</p>
<div class="Header3">Таблица <b>Текст содержит Манго</b></div>
<p class="Content2">Выделим ячейки, содержащие текст <b>Манго</b>: выделим ячейки <b>A9:C11</b>, на вкладке <i>Главная/Стили/Условное форматирование/Правила выделения ячеек/Текст содержит</i>. В диалоге в левом поле вводим <i>Манго</i>, а справа выбираем любой цвет.</p>
<div class="Header3">Таблица <b>Гистограммы</b></div>
<p class="Content2">Построим внутри ячеек с числовыми значениями гистограммы: Выделим ячейки <b>E9:G11</b>, на вкладке <i>Главная/Стили/Условное форматирование/Гистограммы/Градиентная заливка</i>. После анализа чисел, программа построит диаграмы.</p>
<div class="Header3">Таблица <b>Стрелки</b></div>
<p class="Content2">Опция Наборы значков для условного форматирования содержит графические наборы, которые выделяют числа в диапазоне по определённому критерию. Например, три стрелки делят диапазон чисел на минимальные, максимальные и средние относительно друг друга значения: Выделим ячейки <b>I9:K11</b>, на вкладке <i>Главная/Стили/Условное форматирование/Наборы значков/Направления</i>. Выбираем три стрелки</p>
<p class="Content2Top">Удалить форматирование для выделенных ячеек поможет команда <i>Главная/Стили/Условное форматирование/Удалить правила/Удалить правила из выделенных ячеек</i></p>
<p></p>
<p class="Content2Top">Перейдём на лист <i>Значки</i></p>
<p class="Content2">Отобразим красный флажок для ячеек, значения которых больше <b>60</b>: Выделим диапазон <b>A2:D9</b>. На вкладке <i>Главная/Стили/Условное форматирование/Наборы значков/Другие правила</i>.</p>
<p class="Content2">В диалоге в списке <i>Стиль значка</i> находим три флажка. Ниже три кнопки <i>Значок:</i> для первого выбираем красный флажок, для второго и третьего выбираем пункт <i>Нет значения</i>. Тип для двух  полей выбираем число. В первое и второе поле <i>Значения</i>, выбираем <b>60</b></p>
<p><!--end of Условное форматирование--></p>
<p><!--Сортировка и фильтры-->	</p>
<div class="Header2"><strong>Сортировка и фильтры</strong></div>
<p class="Content2">Откроем файл <a href ="wp-content/uploads/excel/SortsFilters.xlsx">Сортировка и фильтры</a>, лист <i>Дежурство</i>. Отсортируем колонку <b>Дежурство</b>, по алфавиту:</p>
<p class="Content2">Курсор в любую ячейку колонки <b>Дежурство</b>, затем вкладка <i>Главная/Редактирование/Сортировка и фильтр/Сортировка от А до Я</i>. Или, вкладка <i>Данные/Сортировка и фильтр/От А до Я</i></p>
<div id="block10x10center"><img src="wp-content/uploads/excel/exel-04-05.jpg" alt="1" /></div>
<p class="Content2">Отменим сортировку комбинацией [Ctrl+Z]</p>
<p class="Content2">Теперь проведём сортировку по дням недели: курсор внутрь таблицы с данными, вкладка <i>Данные/Сортировка и фильтр/Сортировка</i>. В диалоге для поля <b>Столбец</b> выбираем <i>Дежурство</i>, <b>Сортировка</b> – <i>значения</i>, <b>Порядок</b> – <i>Настраиваемый список</i>. Появится ещё диалог, где в поле <i>Списки</i> выбираем дни недели</p>
<div id="block10x10center"><img src="wp-content/uploads/excel/exel-04-06.jpg" alt="1" /></div>
<div id="block10x10center"><img src="wp-content/uploads/excel/exel-04-07.jpg" alt="1" /></div>
<p></p>
<p class="Content2Top">Перейдём на лист <i>Дубликаты</i></p>
<p class="Content2">Удалим повторяющиеся наименования: курсор внутрь таблицы с данными, вкладка <i>Данные/Работа с данными/Удалить дубликаты</i>. В диалоге снимаем галки со столбцов, кроме <i>Наименование</i>. Получилась таблица, где не оказалось города <i>Минск</i>. Поскольку в этот город поставили наименования, которые отобрали ранее. </p>
<p class="Content2">Отменим предыдущую команду комбинацией [Ctrl+Z]</p>
<div class="Header3"><b>Фильтрация</b></div>
<p class="Content2">Перейдём на лист <i>Фильтр</i>. Простое условие. Выберем в метро <b>ВДНХ</b> всех машинистов:</p>
<p class="Content2">Курсор внутрь таблицы, далее вкладка <i>Данные/Сортировка и фильтр/Фильтр</i>(в заголовках должны появиться кнопки):</p>
<div id="block10x10center"><img src="wp-content/uploads/excel/exel-04-08.jpg" alt="1" /></div>
<div id="block10x10center"><img src="wp-content/uploads/excel/exel-04-09.jpg" alt="1" /></div>
<p class="Content2">Раскрываем список для поля <i>METRO</i>, снимаем все галки(клик по строке <i>Выделить всё</i>), затем активируем флажок <i>ВДНХ</i>:</p>
<p class="Content2">Курсор внутрь таблицы, далее вкладка <i>Данные/Сортировка и фильтр/Фильтр</i>(в заголовках должны появиться кнопки). Раскрываем список для поля <i>METRO</i>, снимаем все галки(клик по строке <i>Выделить всё</i>), затем активируем флажок <i>ВДНХ</i>.</p>
<div id="block10x10center"><img src="wp-content/uploads/excel/exel-04-10.jpg" alt="1" /></div>
<p class="Content2">Аналогично повторим для колонки <i>OTDEL</i>, только теперь будем активировать только флажок <i>машинист</i>.</p>
<p class="Content2Top">Сложное условие.</p>
<p class="Content2">Отменим фильтр, снова нажав на кнопку <i>Фильтр</i>:</p>
<div id="block10x10center"><img src="wp-content/uploads/excel/exel-04-08.jpg" alt="1" /></div>
<p class="Content2">Теперь нужно выбрать для метро <b>ВДНХ</b> машинистов, а для метро <b>Южная</b> &#8212; водителей. Если поступить предыдущим способом, то получатся лишние данные. Применим расширенный фильтр. Для этого создадим таблицу условий: Скопируем поля <i>METRO</i> и <i>OTDEL</i> правее нашей таблицы. Далее введём в поле <i>METRO</i> значения: <b>ВДНХ</b> и <b>Южная</b>, а в поле <i>OTDEL</i> – <b>машинист</b> и <b>водитель</b>:</p>
<div id="block10x10center"><img src="wp-content/uploads/excel/exel-04-11.jpg" alt="1" /></div>
<p class="Content2">Теперь курсор внутрь первой таблицы и затем вкладка <i>Данные/Сортировка и фильтр/Дополнительно</i>:</p>
<div id="block10x10center"><img src="wp-content/uploads/excel/exel-04-12.jpg" alt="1" /></div>
<p class="Content2">В диалоге выбираем флажок <i>скопировать результат в другое место</i>, курсор в поле <i>Исходный диапазон</i> и мышью выделяем диапазон нашей большой таблицы (включая заголовки), для поля <i>Диапазон условий</i> выбираем новую таблицу и для поля <i>поместить результат в диапазон</i>, выберем любую пустую ячейку правее большой таблицы и ОК.</p>
<div id="block10x10center"><img src="wp-content/uploads/excel/exel-04-13.jpg" alt="1" /></div>
<p class="Content2">Должна получиться ещё одна таблица с машинистами из ВДНХ и водителями из метро Южная</p>
<div id="block10x10center"><img src="wp-content/uploads/excel/exel-04-14.jpg" alt="1" /></div>
<p class="Content2Top">Задание для сложного условия. Активируем лист <i>ФильтрСложн</i>.</p>
<p class="Content2">Отобразить жителей метро Смоленская и Перово которые в 3-м квартале 2015 года, получили оклад более 22000 рублей:</p>
<p class="Content2">Правее создадим таблицу с полями <i>METRO</i>, <i>DATA</i>, <i>DATA</i> и <i>OKLAD</i>. Заполним новую таблицу: в поле <i>METRO</i>, вводим <b>Смоленская</b> и <b>Перово</b>, в первое поле <i>DATA</i> и для метро <b>Смоленская</b> и для <i>Перово</i> вводим &#8212; <b>>=01.07.2015</b>, для следующего поля <i>DATA</i> и для метро <b>Смоленская</b> и для <b>Перово</b> вводим &#8212; <b><=30.09.2015</b>, для поля <i>OKLAD</i> вводим <b>>22000</b>:</p>
<div id="block10x10center"><img src="wp-content/uploads/excel/exel-04-15.jpg" alt="1" /></div>
<p class="Content2">Из этого изображения и вспоминая алгебру логики которая изучалась в курсе информатики, делаем вывод, что два поля DATA для одной строки реализуют логическую операцию <b>И</b>, т.е. так записывается интервал для III-го квартала. Другая запись интервала: <b>>=01.07.2015 И <=30.09.2015</b>. И наоборот, две строки в одном поле METRO, реализуют логическую операцию <b>ИЛИ</b>.</p>
<p class="Content2">Аналогично действиям предыдущей задачи: курсор внутрь большой таблицы, далее вкладка <i>Данные/Сортировка и фильтр/Дополнительно</i>:</p>
<div id="block10x10center"><img src="wp-content/uploads/excel/exel-04-12.jpg" alt="1" /></div>
<p class="Content2">В диалоге выбираем <i>флажок</i> скопировать результат в другое место, курсор в поле <i>Исходный диапазон</i> и мышью выделяем диапазон нашей большой таблицы, для поля <i>Диапазон условий</i> выбираем новую таблицу для поля <i>поместить результат</i>, выберем любую пустую ячейку правее большой таблицы и ОК.</p>
<div id="block10x10center"><img src="wp-content/uploads/excel/exel-04-16.jpg" alt="1" /></div>
<div id="block10x10center"><img src="wp-content/uploads/excel/exel-04-17.jpg" alt="1" /></div>
<p><!--end of Сортировка и фильтры--></p>
<p><!--Консолидация--></p>
<div class="Header2"><strong>Консолидация</strong></div>
<p class="Content2">Известно, что произвести вычисления между несколькими листами одной рабочей книги, или между несколькими рабочими книгами позволяет формула вида:</p>
<p class="Content2"><b>имя листа ! имя ячейки + имя листа ! имя ячейки</b></p>
<p class="Content2">В данном случае суммируются две ячейки в двух листах. <b>Консолидация</b> позволит суммировать ячейки более удобным способом. Откроем файл <a href ="wp-content/uploads/excel/Consolidation.xlsx">Консолидация</a>, убедимся что он состоит из листов <i>2013</i>, <i>2014</i>, <i>2015</i> и <i>Итого</i>:</p>
<div id="block10x10center"><img src="wp-content/uploads/excel/exel-04-18.jpg" alt="1" /></div>
<p class="Content2">Просуммируем продажи 4-х кварталов за три года:</p>
<p class="Content2">Итоговые суммы будут находится в диапазоне <b>C3:G7</b>, поэтому на листе <i>Итого</i> курсор в ячейку <b>C3</b>, далее вкладка <i>Данные/Работа с данными/Консолидация</i></p>
<div id="block10x10center"><img src="wp-content/uploads/excel/exel-04-19.jpg" alt="1" /></div>
<p class="Content2">Появится диалог <i>Консолидация</i>, настроим его:</p>
<p class="Content2">В поле <i>Функция</i> – <b>Сумма</b>, курсор в поле <i>Ссылка</i>, затем заходим на лист <i>2013</i> и выделяем ячейки с данными – <b>C3:G7</b>, в диалоге <i>Консолидация</i> нажимаем <i>Добавить</i> (в поле <i>Список диапазонов</i> должна появиться строка – <b>&#8216;2013&#8217;! C3:G7</b>):</p>
<div id="block10x10center"><img src="wp-content/uploads/excel/exel-04-20.jpg" alt="1" /></div>
<p class="Content2">Повторим эти шаги для листов <i>2014</i> и <i>2015</i>, затем в диалоге <i>Консолидация</i>, активируем флажок <i>Создавать связи с исходными данными</i> и ОК:</p>
<div id="block10x10center"><img src="wp-content/uploads/excel/exel-04-21.jpg" alt="1" /></div>
<p class="Content2">В листе <i>Итого</i>, мы получим итоговые данные за три года в каждом квартале. Например, ячейка <b>C6</b> содержит сумму продаж телевизоров в I-м квартале 2013, 2014 и 2015 годов. Кнопка <b>+</b> правее строк таблицы позволит подробно отобразить суммы за каждый год</p>
<div id="block10x10center"><img src="wp-content/uploads/excel/exel-04-22.jpg" alt="1" /></div>
<p><!--end of Консолидация--></p>
]]></content:encoded>
			<wfw:commentRss>http://kshu.su/?feed=rss2&#038;p=58</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
