<?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>СПО в российских школах &#187; Gambas</title>
	<atom:link href="http://freeschool.altlinux.ru/?feed=rss2&#038;tag=gambas" rel="self" type="application/rss+xml" />
	<link>http://freeschool.altlinux.ru</link>
	<description>Команда ALT Linux рассказывает о внедрении свободного программного обеспечения в школах России</description>
	<lastBuildDate>Fri, 03 Feb 2017 13:54:35 +0000</lastBuildDate>
	<language>ru-RU</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=4.2.2</generator>
	<item>
		<title>Gambas2: решение уравнений</title>
		<link>http://freeschool.altlinux.ru/?p=4962</link>
		<comments>http://freeschool.altlinux.ru/?p=4962#comments</comments>
		<pubDate>Wed, 24 Oct 2012 12:27:05 +0000</pubDate>
		<dc:creator><![CDATA[Владимир Черный]]></dc:creator>
				<category><![CDATA[Методические материалы]]></category>
		<category><![CDATA[Gambas]]></category>
		<category><![CDATA[Чупина]]></category>

		<guid isPermaLink="false">http://freeschool.altlinux.ru/?p=4962</guid>
		<description><![CDATA[Предлагаем вашему вниманию трансляцию урока по Visual Basic на Gambas. Я долго сомневался, нужно ли это кому-то, но Татьяна Ивановна Чупина меня убедила: &#171;Цель данных публикаций это не показать &#171;особенный&#187; урок. По опыту знаю, что как не была бы хороша разработка, я её переделаю под себя. Учителям информатики в условиях перехода на СПО очень сложно [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Предлагаем вашему вниманию трансляцию урока по Visual Basic на Gambas. Я долго сомневался, нужно ли это кому-то, но <a href="http://freeschool.altlinux.ru/?p=4909">Татьяна Ивановна Чупина</a> меня убедила: &#171;Цель данных публикаций это не показать &#171;особенный&#187; урок. По опыту знаю, что как не была бы хороша разработка, я её переделаю под себя. Учителям информатики в условиях перехода на СПО очень сложно охватить объем нового материала. Вот получили учебники Угринович &#8212; 11 профильный, аж за 2012 год и не поверите&#8230;.опять VB, Delphi. Хоть плачь!!! И детям не выдашь, так как не понятно зачем, и, вроде, учебник есть. Так вот мне (как и моим коллегам по всей РФ) приходится вечером не семьей заниматься, а сидеть и решать задачки (к слову абсолютно бесполезные в плане ЕГЭ). Так вот чтобы было меньше разводов и забытых детей предлагаю публиковать программные коды на языке Gambas к учебнику Угриновича.&#187;<br />
С этим трудно не согласиться.<br />
<span id="more-4962"></span></p>
<h2>Урок &#171;Решение уравнений&#187;</h2>
<p><strong>автор</strong>: Чупина Т.И.<br />
<strong>Тема:</strong> Приближенное решение уравнений в среде программирования Gambas. Угринович Н. Д., 11 класс, профильный уровень.<br />
<strong>План.</strong><br />
<strong>1 этап</strong> — фронтальный опрос.</p>
<ul>
<li>Какие типы уравнений вы знаете?</li>
<li>Как они решаются?</li>
</ul>
<p><strong>2 этап</strong> — новый материал.<br />
Суть метода деления отрезка пополам изложена в учебнике.<br />
<img src="http://freeschool.altlinux.ru/wp-content/uploads/2012/10/metods.png" alt="" title="metods" width="332" height="179" class="aligncenter size-full wp-image-4981" /></p>
<p><strong>3 этап</strong> — постановка задачи.<br />
<strong>Задача:</strong> Найти корень уравнения x<sup>3</sup>-cos(x)=0 приближенными методами (графическим и численным методом деления пополам числового отрезка аргумента).<br />
<strong>Интерфейс:</strong><br />
<a href="http://freeschool.altlinux.ru/wp-content/uploads/2012/10/Снимок-приближенное-решение-уравнений.png"><img src="http://freeschool.altlinux.ru/wp-content/uploads/2012/10/Снимок-приближенное-решение-уравнений-300x208.png" alt="" title="Снимок-приближенное решение уравнений" width="300" height="208" class="aligncenter size-medium wp-image-4982" /></a></p>
<p><strong>Программный код:</strong></p>
<p><code>' Gambas class file</p>
<p>PUBLIC SUB _new()<br />
END</p>
<p>PUBLIC SUB Form_Open()<br />
END</p>
<p>  PUBLIC SUB Button1_Click()<br />
  DIM x AS Float<br />
  DIM y AS Float</p>
<p>   DRAW.BEGIN(DrawingArea1)<br />
     ' подписи шкал математической системы координат<br />
 FOR x = -150 TO 150 STEP 50<br />
 Draw.Text(x / 100, x + 150, 50)<br />
 NEXT </p>
<p> FOR y = 0 TO 200 STEP 50<br />
 Draw.Text((y - 150) / 100, 150, 200 - y)<br />
 NEXT </p>
<p> Draw.Scale(1, -1) 'поворот оси у<br />
 Draw.Translate(150, -50) 'сдвиг по осям х и у<br />
 Draw.Line(-150, 0, 300, 0) 'ось х<br />
 Draw.Line(0, -150, 0, 50) 'ось y</p>
<p> 'засечки на оси х<br />
 FOR x = -150 TO 150 STEP 50<br />
 Draw.Line(x, -5, x, 5)<br />
 NEXT<br />
 'засечки на оси у<br />
 FOR y = -100 TO 100 STEP 50<br />
 Draw.Line(-5, y, 5, y)<br />
 NEXT<br />
 'график функции<br />
 FOR x = -1.5 TO 1.5 STEP 0.01<br />
 y = x ^ 3 - Cos(x)<br />
 Draw.Circle(x * 100, y * 100, 2)<br />
 NEXT<br />
  DRAW.END()<br />
END </p>
<p>PUBLIC SUB Button2_Click()<br />
  DIM a AS Float<br />
  DIM b AS Float<br />
  DIM p AS Float<br />
  DIM c AS Float<br />
  a = Val(TextBox1.Text)<br />
  b = Val(TextBox2.Text)<br />
  p = Val(TextBox3.Text)<br />
   WHILE (b - a) / 2 > p<br />
   c = (a + b) / 2<br />
   IF (a ^ 3 - Cos(a)) * (c ^ 3 - Cos(c)) < 0 THEN<br />
   b = c<br />
   ELSE<br />
   a = c<br />
   END IF<br />
   WEND<br />
   TextBox4.Text = (a + b) / 2<br />
END<br />
</code></p>
<p><strong>Примечание:</strong> Особенность решения этой задачи состоит в том, что её программный код максимально соответствует учебнику. Мне надоело «изобретать велосипед» и я решила следовать авторскому решению. Кроме того это оказался очень полезный опыт, так как решений на Gambas пока не много, а решений на VB достаточно. Поэтому если понять соответствие между программными кодами этих сред программирования, то можно значительно сэкономить время.<br />
Предлагаю таблицу для сравнения программ на языке VB и Gambas. В скан-копии учебника маркером выделены те части, которые в большей степени совпадают. </p>
<table>
<tr>
<td><a href="http://freeschool.altlinux.ru/wp-content/uploads/2012/10/pribl-urav1.png"><img src="http://freeschool.altlinux.ru/wp-content/uploads/2012/10/pribl-urav1-204x300.png" alt="" title="pribl-urav1" width="204" height="300" class="aligncenter size-medium wp-image-4985" /></a></td>
<td><code>PUBLIC SUB Button1_Click()<br />
DIM x AS Float<br />
  DIM y AS Float</p>
<p>   DRAW.BEGIN(DrawingArea1)<br />
     ' подписи шкал математической системы координат<br />
 FOR x = -150 TO 150 STEP 50<br />
 Draw.Text(x / 100, x + 150, 50)<br />
 NEXT </p>
<p> FOR y = 0 TO 200 STEP 50<br />
 Draw.Text((y - 150) / 100, 150, 200 - y)<br />
 NEXT </p>
<p> Draw.Scale(1, -1) 'поворот оси у<br />
 Draw.Translate(150, -50) 'сдвиг по осям х и у</p>
<p> Draw.Line(-150, 0, 300, 0) 'ось х<br />
 Draw.Line(0, -150, 0, 50) 'ось y</p>
<p> 'засечки на оси х<br />
 FOR x = -150 TO 150 STEP 50<br />
 Draw.Line(x, -5, x, 5)<br />
 NEXT<br />
 'засечки на оси у<br />
 FOR y = -100 TO 100 STEP 50<br />
 Draw.Line(-5, y, 5, y)<br />
 NEXT<br />
 'график функции<br />
 FOR x = -1.5 TO 1.5 STEP 0.01<br />
 y = x ^ 3 - Cos(x)<br />
 Draw.Circle(x * 100, y * 100, 2)<br />
 NEXT<br />
  DRAW.END()<br />
END</code> </td>
</tr>
<table>
]]></content:encoded>
			<wfw:commentRss>http://freeschool.altlinux.ru/?feed=rss2&#038;p=4962</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Gambas. Еще один подход к артиллерийской задаче.</title>
		<link>http://freeschool.altlinux.ru/?p=4909</link>
		<comments>http://freeschool.altlinux.ru/?p=4909#comments</comments>
		<pubDate>Wed, 12 Sep 2012 14:06:19 +0000</pubDate>
		<dc:creator><![CDATA[Владимир Черный]]></dc:creator>
				<category><![CDATA[Методические материалы]]></category>
		<category><![CDATA[Опыт работы с ПСПО]]></category>
		<category><![CDATA[Gambas]]></category>
		<category><![CDATA[Чупина]]></category>

		<guid isPermaLink="false">http://freeschool.altlinux.ru/?p=4909</guid>
		<description><![CDATA[Публикуемая ниже разработка урока подготовлена учителем информатики МБОУ «Гимназия №85» г. Барнаула (Алтайский край) Чупиной Татьяной Ивановной, известной уже читателям блога по уроку &#171;Метод Монте-Карло на уроке информатики&#187;. Далее идет текст автора. Проект «Артиллерийская задача. Движение тела, брошенного под углом к горизонту» автора &#8212; Олега Чебан из из г. Киселевск Кемеровской области, безусловно интересный и [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Публикуемая ниже разработка урока подготовлена учителем информатики МБОУ «Гимназия №85» г. Барнаула (Алтайский край) Чупиной Татьяной Ивановной, известной уже читателям блога по уроку <a href="http://freeschool.altlinux.ru/?p=4746">&#171;Метод Монте-Карло на уроке информатики&#187;</a>. Далее идет текст автора.</p>
<p>Проект <a href="http://freeschool.altlinux.ru/?p=4285">«Артиллерийская задача. Движение тела, брошенного под углом к горизонту» автора &#8212; Олега Чебан из из г. Киселевск Кемеровской области</a>, безусловно интересный и позволяет избежать затруднений в графическом представлении описываемого процесса. Но не решает задачу сформулированную в учебнике Угриновича Н. Д. &#8212; 11 класс профильный уровень<a name="m1"></a><a href="#ref1"><sup>1</sup></a>. Нет выводов о попадании, невозможно оценить результат при тестовых параметрах задаваемых автором учебника. Предлагаю своё решение. Безусловно сославшись на вышеуказанного автора, как на первоисточник.<br />
<span id="more-4909"></span><br />
Мне как и многим учителям интереснее и полезнее видеть «листинг» программы, методика преподавания у каждого своя и во многом зависит от подготовки учителя и его учеников. В связи с этим не вижу смысла оформлять конспект урока, предлагаю план ключевых моментов урока. </p>
<p><strong>1 этап (это один из первых уроков поэтому целесообразно повторить материал прошлого года относящийся к теме)</strong>.</p>
<p>Повторение логических операций: конъюнкция, дизъюнкция, импликация, эквиваленция, отрицание.<br />
Редактор электронных таблиц, функции в Calc, логические функции.</p>
<p><strong>2 этап — постановка задачи, этапы моделирования, вывод формул.</strong> Это достаточно подробно описано в учебнике.</p>
<p><strong>3 этап — компьютерная модель в среде электронных таблиц.</strong><br />
В параграфе представлено множество вспомогательных программ, расчетов и соответственно интерфейсов, которые между собой очень похожи. Дабы избежать путаницы все создаваемые компьютерные модели будем оформлять в едином стиле. На странице 21 учебника представлен интерфейс наиболее соответствующий целям проекта — возьмём за основу его.<br />
<a href="http://freeschool.altlinux.ru/wp-content/uploads/2012/09/str21.jpg"><img src="http://freeschool.altlinux.ru/wp-content/uploads/2012/09/str21-300x282.jpg" alt="" title="str21" width="300" height="282" class="aligncenter size-medium wp-image-4911" /></a></p>
<p>Создадим документ по образцу:<br />
<a href="http://freeschool.altlinux.ru/wp-content/uploads/2012/09/calc1.jpg"><img src="http://freeschool.altlinux.ru/wp-content/uploads/2012/09/calc1-300x161.jpg" alt="" title="calc1" width="300" height="161" class="aligncenter size-medium wp-image-4912" /></a></p>
<p>Данные в столбце В заполните, как в учебнике. В ячейку Е1 введите формулу 1.2 со страницы 16.</p>
<p><a href="http://freeschool.altlinux.ru/wp-content/uploads/2012/09/calc2.jpg"><img src="http://freeschool.altlinux.ru/wp-content/uploads/2012/09/calc2-300x178.jpg" alt="" title="calc2" width="300" height="178" class="aligncenter size-medium wp-image-4913" /></a></p>
<p>Сравните значение ячейки Е1 с результатом в учебнике — 0,6959749.<br />
Для того чтобы найти причину несоответствия, я предлагаю ученикам следующее задание:</p>
<ul>
<li>сравните Pi/2  и 90<sup>0</sup> (равны)</li>
<li>
найдите sin(Pi/2)  и sin(90<sup>0</sup>) (равны единице)</li>
<li>
найдите значение в среде электронных таблиц sin(90<sup>0</sup>)</li>
</ul>
<p><a href="http://freeschool.altlinux.ru/wp-content/uploads/2012/09/calc3.jpg"><img src="http://freeschool.altlinux.ru/wp-content/uploads/2012/09/calc3-300x193.jpg" alt="" title="calc3" width="300" height="193" class="aligncenter size-medium wp-image-4915" /></a></p>
<p>Выясняем, что радианная и градусная мера в среде электронных таблиц отличаются, и правильные расчеты производятся с радианной мерой угла. А в задаче мы используем градусную. Ищем функцию преобразующую градусы в радианы: =SIN(RADIANS(90))</p>
<p><a href="http://freeschool.altlinux.ru/wp-content/uploads/2012/09/calc4.jpg"><img src="http://freeschool.altlinux.ru/wp-content/uploads/2012/09/calc4-300x193.jpg" alt="" title="calc4" width="300" height="193" class="aligncenter size-medium wp-image-4916" /></a> </p>
<p>Вносим изменения в формулу ячейки Е1:<br />
=B3*TAN(RADIANS(B2))-(9,8*B3^2)/(2*B1^2*COS(RADIANS(B2))^2)</p>
<p><strong>Задание:</strong><br />
Составьте фрагмент блок-схемы условий.<br />
Самостоятельно введите формулу в зелёную ячейку, таким образом, что бы в зависимости от L, выводилось сообщение «попал», «недолёт», «перелёт». Условия попадания были рассмотрены раньше на странице 16.</p>
<p><a href="http://freeschool.altlinux.ru/wp-content/uploads/2012/09/str16.jpg"><img src="http://freeschool.altlinux.ru/wp-content/uploads/2012/09/str16-300x74.jpg" alt="" title="str16" width="300" height="74" class="aligncenter size-medium wp-image-4918" /></a></p>
<p><a href="http://freeschool.altlinux.ru/wp-content/uploads/2012/09/blok-sh.jpg"><img src="http://freeschool.altlinux.ru/wp-content/uploads/2012/09/blok-sh-300x190.jpg" alt="" title="blok-sh" width="300" height="190" class="aligncenter size-medium wp-image-4919" /></a></p>
<p>Блок-схема.<br />
Формула: =IF(E1<0;"недолёт";IF(E1>B4;&#187;перелёт&#187;;&#187;попал&#187;))<br />
<a href="http://freeschool.altlinux.ru/wp-content/uploads/2012/09/calc5.jpg"><img src="http://freeschool.altlinux.ru/wp-content/uploads/2012/09/calc5-300x125.jpg" alt="" title="calc5" width="300" height="125" class="aligncenter size-medium wp-image-4920" /></a></p>
<p><strong>4 этап &#8212; компьютерная модель в среде Gambas.</strong><br />
Исходя из того что это один из первых уроков и будучи уверенной, что учащиеся не осилят графическую составляющую этой задачи (построение траектории движения в зависимости от параметров), я предложила воспользоваться проектом <a href="http://freeschool.altlinux.ru/?p=4285">«Артиллерийская задача. Движение тела, брошенного под углом к горизонту» автора &#8212; Олега Чебан из из г. Киселевск Кемеровской области</a>.<br />
«Листинг» программы в электронном виде был доступен ученикам на сайте, поэтому реализация проекта не заняла много времени.  Обсудив текст программы, повторив основные моменты учащиеся приступили к созданию собственного проекта со страницы 21.<br />
Интерфейс программы:<br />
<a href="http://freeschool.altlinux.ru/wp-content/uploads/2012/09/Снимок-brosanie-tela.png"><img src="http://freeschool.altlinux.ru/wp-content/uploads/2012/09/Снимок-brosanie-tela-300x232.png" alt="" title="Снимок-brosanie-tela" width="300" height="232" class="aligncenter size-medium wp-image-4921" /></a></p>
<p>Примечания по программе:</p>
<ul>
<li>В программе заменили «пушку» &#8212; «точкой», так как при малых значениях S построения происходили позади «пушки». Изображение минимизировали.</li>
<li>
Организовали построение преграды-стены, что бы наглядно видеть результат.</li>
<li>
Реализовано построение различных траекторий — разными цветами с помощью генератора случайных чисел:<br />
Draw.FillColor = Color.RGB(Rnd(Date)*255, Rnd(Date)*255, Rnd(Date)*255). </li>
<li>
При большом количестве испытаний траектории плохо просматриваются, поэтому создана кнопка «Очистить».</li>
</ul>
<p><strong>Программа:</strong><br />
<code>' Gambas class file<br />
PUBLIC CONST g AS Float = 9.8<br />
PUBLIC v0 AS Float<br />
PUBLIC a AS Float<br />
PUBLIC s AS Float<br />
PUBLIC h AS Float<br />
PUBLIC l AS Float<br />
PUBLIC x AS Float<br />
PUBLIC y AS Float</p>
<p>PUBLIC SUB _new()<br />
DrawingArea1.Height = 300<br />
DrawingArea1.Width = 600<br />
END</p>
<p>PUBLIC SUB Form_Open()<br />
END</p>
<p>PUBLIC SUB Button1_Click()<br />
v0 = Val(TextBox1.Text)<br />
a = Val(TextBox2.Text)<br />
s = Val(TextBox3.Text)<br />
h = Val(TextBox4.Text)<br />
a = (Pi * a) / 180<br />
x = 25<br />
y = 0</p>
<p>pushkaTraektoria<br />
l = S * Tan(a) - (g * s ^ 2) / (2 * v0 ^ 2 * Cos(a) ^ 2)<br />
TextBox5.Text = l<br />
IF l < 0 THEN<br />
Label11.text = "недолёт"<br />
ELSE<br />
IF l > h THEN<br />
Label11.text = "перелёт"<br />
ELSE<br />
Label11.text = "попал"<br />
END IF<br />
END IF<br />
END</p>
<p>PRIVATE SUB pushkaTraektoria()<br />
  Draw.Begin(DrawingArea1)<br />
  Draw.FillStyle = 1<br />
  Draw.FillColor = Color.RGB(Rnd(Date)*255, Rnd(Date)*255, Rnd(Date)*255)<br />
  Draw.Circle(5, 295, 5)<br />
  DO WHILE y >= 0<br />
  x = x + ((v0 ^ 2 * Sin(2 * a)) / g) / 30<br />
  y = x * Tan(a) - (g * x ^ 2) / (2 * v0 ^ 2 * Cos(a) ^ 2)<br />
  Draw.Circle(x, 300 - y, 3)<br />
  LOOP<br />
  Draw.Line(s, 300, s, 300 - h)<br />
  Draw.End()<br />
  END SUB </p>
<p>PUBLIC SUB Button2_Click()<br />
DrawingArea1.Clear<br />
END</code></p>
<p><strong>Приложение:</strong> <a href='http://freeschool.altlinux.ru/wp-content/uploads/2012/09/brosanie-tela.rar'>Проект Gambas</a></p>
<p><a name="ref1"></a><a href="#m1"><sup>1</sup></a>Угринович Н. Д.<br />
У27 Информатика и Икт. Профильный уровень: учебник для 11 класса. &#8212; 2 издание., испр. и доп. &#8212; М.:БИНОМ. Лаборатория знаний, 2009.-308 с.<br />
ISBN 978-5-9963-0047-1</p>
]]></content:encoded>
			<wfw:commentRss>http://freeschool.altlinux.ru/?feed=rss2&#038;p=4909</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Метод Монте-Карло на уроке информатики</title>
		<link>http://freeschool.altlinux.ru/?p=4746</link>
		<comments>http://freeschool.altlinux.ru/?p=4746#comments</comments>
		<pubDate>Sun, 11 Mar 2012 13:13:28 +0000</pubDate>
		<dc:creator><![CDATA[Владимир Черный]]></dc:creator>
				<category><![CDATA[Методические материалы]]></category>
		<category><![CDATA[Опыт работы с ПСПО]]></category>
		<category><![CDATA[Basic]]></category>
		<category><![CDATA[Gambas]]></category>
		<category><![CDATA[Алтайский край]]></category>
		<category><![CDATA[Чупина]]></category>

		<guid isPermaLink="false">http://freeschool.altlinux.ru/?p=4746</guid>
		<description><![CDATA[Тема моделирования реальных процессов наиболее сложная в курсе информатики, поскольку требует от учеников осознанной интеграции знаний из разных областей знаний. Сегодня мы предлагаем вашему вниманию разработку урока к разделу &#171;Вероятностные модели, Метод Монте-Карло&#187; учебника Угриновича. Разработку, с использованием Gambas, подготовила учитель информатики МБОУ «Гимназия №85» г. Барнаула (Алтайский край) Чупина Татьяна Ивановна. К тексту урока [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Тема моделирования реальных процессов наиболее сложная в курсе информатики, поскольку требует от учеников осознанной интеграции знаний из разных областей знаний.<br />
Сегодня мы предлагаем вашему вниманию разработку урока к разделу &#171;Вероятностные модели, Метод Монте-Карло&#187; учебника Угриновича. Разработку, с использованием Gambas, подготовила   учитель информатики МБОУ «Гимназия №85» г. Барнаула (Алтайский край) <strong>Чупина Татьяна Ивановна</strong>. К тексту урока прилагается <a href='http://freeschool.altlinux.ru/wp-content/uploads/2012/03/montekarlo.pdf'>презентация</a> (ее желательно скачать до начала чтения статьи) и <a href='http://freeschool.altlinux.ru/wp-content/uploads/2012/03/montekarlo.zip'>проект для Gambas</a>.<br />
<span id="more-4746"></span></p>
<h2>Построение вероятностных моделей. Метод Монте-Карло</h2>
<p><strong><em>Конспект урока</em></strong><br />
<strong>Автор:</strong> <i>Чупина Татьяна Ивановна, учитель информатики МБОУ «Гимназия №85» г. Барнаула</i><br />
<strong>Тема урока:</strong> Построение вероятностных моделей. Метод Монте-Карло<br />
<strong>Предмет:</strong> информатика и ИКТ<br />
<strong>Класс:</strong>  11<br />
<strong>Учебник:</strong> Угринович Н. Д. 11 класс (профильный уровень)<br />
<strong>Тип урока:</strong> лабораторная работа (пара &#8212; 2 урока)<br />
<strong>Цели урока:</strong><br />
<i>Обучающая:</i><br />
получить представление о методе Монте-Карло, как способе поиска  площади фигур,  закрепить знания по использованию графических операторов, учить решать практические задачи компьютерными средствами, осуществить межпредметную связь с математикой.<br />
<i>Воспитательная:</i> воспитывать трудолюбие<br />
<i>Развивающая:</i> развивать способность к анализу и синтезу, к аналогии.<br />
<i>Характеристика класса:</i> профильный физико-математический<br />
<i>Средства,  обеспечивающий  учебный  процесс  на  уроке:</i>  компьютерный  класс  с  предустановленной  ОС  Linux   и   средой программирования Gambas, проектор.</p>
<table border ="1">
<tr>
<th width=50%>Деятельность учащихся</th>
<th>Деятельность учителя</th>
</tr>
<tr>
<td colspan="2"><strong>Организационный момент</strong></td>
</tr>
<tr>
<td width=50%>Учащиеся располагаются за рабочими местами, оборудованными компьютерами</td>
<td>Учитель приветствует учащихся</td>
</tr>
<tr>
<td colspan="2"><strong>Опрос учащихся по заданному на дом материалу</strong></td>
</tr>
<tr>
<td>Числовые  – Integer, Float, Long, Byte, Short, <br />
символьные – String,<br />
логические –Boolean.<br />
For i= to k Step s Next<br />
Do While условие Loop<br />
RND() – генератор случайных чисел<br />
VAL() – преобразует число в строку и наоборот<br />
Растровая (изображение состоит из пикселей)<br />
и векторная (изображение состоит из примитивов)</td>
<td>Слайд 1 Фронтальный опрос с целью актуализации знаний</td>
</tr>
<tr>
<td colspan="2"><strong>Проблемная ситуация</strong></td>
</tr>
<tr>
<td>Площадь прямоугольника – ab<br />
Площадь круга – Pi*r<sup>2</sup><br />
r2(4-Pi)<br />
Для нахождения площади произвольной фигуры «наложить сетку», найти количество целых квадратов и прибавить количество частей деленное на два. Единицы измерения зависят от размера одной клетки.<br />
Растровое изображение состоит из пикселей.<br />
Необходимо посчитать количество пикселей внутри фигуры</td>
<td>Слайд 2, Слайд 3<br />Фронтальный опрос с целью постановки практической задачи урока. </td>
</tr>
<tr>
<td colspan="2"><strong>Изучение нового учебного материала</strong></td>
</tr>
<tr>
<td>Учащиеся конспектируют материал, отвечают на вопросы.<br />
		Записи в тетради:<br />
		Тема (слайд 4)<br />
		Понятие вероятностной модели (слайд 5)<br />
		Описательная модель включая рисунок<br />
		Формальная модель
</td>
<td>Слайды 4-10, Формулируется тема, оформляется конспект урока</td>
</tr>
<tr>
<td colspan="2"><strong>Лабораторная работа</strong></td>
</tr>
<tr>
<td>
<ol>
<li>N, R </li>
<li>Float</li>
<li>TextBox </li>
<li>DrawingArea </li>
<li>Заливать цветом фона</li>
</ol>
</td>
<td>Обсуждение элементов графического интерфейса в форме беседы<br />
1. Какие переменные нужно ввести?<br />
2. Какого типа переменные?<br />
3. Какие объекты будем использовать для ввода этих переменных?<br />
4. Какой объект будем использовать для отображения рисунка?<br />
5. Каким образом можно реализовать действие кнопки «Очистить»?
</td>
</tr>
<tr>
<td>Учащиеся создают окно программы.<br />
<a href="http://freeschool.altlinux.ru/wp-content/uploads/2012/03/Снимок-montekarlo1.png"><img src="http://freeschool.altlinux.ru/wp-content/uploads/2012/03/Снимок-montekarlo1-150x150.png" alt="" title="montekarlo1" width="150" height="150" class="aligncenter size-thumbnail wp-image-4758" /></a>
</td>
<td>Учитель на своём компьютере параллельно с учащими воспроизводит все этапы создания графического интерфейса программы. (Слайд 11)</td>
</tr>
<tr>
<td>Щелчок по кнопке «выполнить»</td>
<td>Какое действие и над каким объектом необходимо выполнить для произведения расчетов?</td>
</tr>
<tr>
<td>1. DIM<br />
2. DIM r, x, y, m AS Float &#8216;r &#8212; радиус, x,y &#8212; кооодинаты точек-снежинок-зёрен, m &#8212; количество точек попавших в окружность,<br />
DIM i, n AS Integer &#8216;n &#8212; количество выстрелов-бросаний всего, i-счетчик<br />
3. Текстовая<br />
4. Нет<br />
5. n = Val(TextBox1.Text) &#8216;преобразуем текстовое значение в числовое,<br />
r = Val(TextBox2.Text)
</td>
<td>(В ходе беседы учитель последовательно с учениками добавляет строки в программу, соответствующие ответам учащихся.)<br />
1. С какого служебного слова начинается блок описания переменных?<br />
2. Какие переменные и какого типа необходимо использовать?<br />
3. Какого типа будет информация вводимая в TextBox?<br />
4. Возможно ли выполнять арифметические действия над данными такого типа?<br />
5. Как перевести строку в число?
</td>
</tr>
<tr>
<td>Цикл – FOR<br />
FOR i = 1 TO n<br />
x = Int(Rnd(2 * r) &#8212; r)<br />
y = Int(Rnd(2 * r) &#8212; r)<br />
Draw.Forecolor = &#038;ff0000&#038; &#8216;цвет снежинки<br />
Draw.Circle(x + 100, y + 100, 2) &#8216;рисование зерен-выстрелов-снежинок<br />
IF (x ^ 2 + y ^ 2) <= r ^ 2 THEN m = m + 1<br />
NEXT
</td>
<td>Принцип работы: генерируем х и у, рисуем точку, генерируем, рисуем … С помощью какого оператора можно организовать многократное поврорение? </td>
</tr>
<tr>
<td>Объект TextBox3, свойство Text<br />
TextBox3.Text = 4 * (r ^ 2) * m / n
 </td>
<td>Какой объект и какое свойство изменится при выводе S? </td>
</tr>
<tr>
<td>PUBLIC SUB Button2_Click()<br />
Draw.Begin(DrawingArea1)<br />
  Draw.FillColor = &#038;ffffff&#038; &#8216;белый цвет заливки<br />
Draw.FillStyle = 1 &#8216;сплошная заливка<br />
Draw.ForeColor = &#038;ffffff&#038; &#8216;белый цвет границы<br />
Draw.Rect(0, 0, 400, 400) &#8216;очистка DrawingArea1 путём рисования белого прямоугольника<br />
Draw.End<br />
END </td>
<td>Запрограммируйте кнопку «очистить» самостоятельно. </td>
</tr>
<tr>
<td>Учащиеся запускают и проверяют работоспособность, исправляют ошибки.</td>
<td>Учитель демонстрирует конечный программный код. Слайд 12 </td>
</tr>
<tr>
<td>Учащиеся изучают материал параграфа, вывод формулы. Изменяют интерфейс программы в соответствии с заданием.</p>
<p>TextBox4.Text = 4 * m / n </td>
<td>Работа с учебником. Задание: Найти приблизительное значение числа Pi.<br />
<a href="http://freeschool.altlinux.ru/wp-content/uploads/2012/03/Снимок-montekarlo.png"><img src="http://freeschool.altlinux.ru/wp-content/uploads/2012/03/Снимок-montekarlo-150x150.png" alt="" title="Вычисление Pi" width="150" height="150" class="aligncenter size-thumbnail wp-image-4766" /></a>
</td>
</tr>
<tr>
<td colspan="2"> <strong>Подведение итогов</strong> </td>
</tr>
<tr>
<td>1. Чем больше N тем точнее вычисление<br />
2. Пиксели<br />
3. Да, если даны уравнения прямых, задающих этот треугольник<br />
4. При N-максимальном, R=1</td>
<td>(Слайд 14 Фронтальный опрос)<br />
1. Установите зависимость между количеством точек (N)  и точностью вычисления площади фигуры?<br />
2. Назовите единицу измерения площади фигуры в программе?<br />
3. Можно ли с помощью этого метода определить площадь треугольника?<br />
4. При каких параметрах значение числа Пи находится с максимальной точностью?
</td>
</tr>
<tr>
<td colspan="2"><strong>Задание на дом</strong></td>
</tr>
<tr>
<td>Учащиеся записывают задачу в тетрадь </td>
<td>(Слайд 15) В тетради изобразите в координатной плоскости фигуру заданную координатами её вершин. Составьте условие принадлежности точки (x;y) этой фигуре:<br />
(0;1),(1;0),(-1;0)</td>
</tr>
</table>
<p><a href="http://freeschool.altlinux.ru/wp-content/uploads/2012/03/gambas-Fmain_class.png"><img src="http://freeschool.altlinux.ru/wp-content/uploads/2012/03/gambas-Fmain_class-300x200.png" alt="" title="gambas-Fmain_class" width="300" height="200" class="aligncenter size-medium wp-image-4771" /></a><br />
Код программы в редакторе.</p>
<p><a href="http://freeschool.altlinux.ru/wp-content/uploads/2012/03/gambas-Pi.png"><img src="http://freeschool.altlinux.ru/wp-content/uploads/2012/03/gambas-Pi-300x221.png" alt="" title="gambas-Pi" width="300" height="221" class="aligncenter size-medium wp-image-4772" /></a><br />
Выполнение программы.</p>
<p><a href='http://freeschool.altlinux.ru/wp-content/uploads/2012/03/montekarlo.pdf'>Презентация к уроку</a><br />
<a href='http://freeschool.altlinux.ru/wp-content/uploads/2012/03/montekarlo.zip'>Проект Gambas</a></p>
]]></content:encoded>
			<wfw:commentRss>http://freeschool.altlinux.ru/?feed=rss2&#038;p=4746</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Программирование в Gambas. Урок 4</title>
		<link>http://freeschool.altlinux.ru/?p=4323</link>
		<comments>http://freeschool.altlinux.ru/?p=4323#comments</comments>
		<pubDate>Tue, 17 May 2011 13:58:48 +0000</pubDate>
		<dc:creator><![CDATA[Владимир Черный]]></dc:creator>
				<category><![CDATA[Методические материалы]]></category>
		<category><![CDATA[Gambas]]></category>
		<category><![CDATA[Чебан]]></category>

		<guid isPermaLink="false">http://freeschool.altlinux.ru/?p=4323</guid>
		<description><![CDATA[Еще один урок по Gambas от Олега Чебан из из г. Киселевск Кемеровской области. Первый урок Второй урок Третий урок Урок 4. Файлы. Тип урока: Лабораторная работа. Полное учебное занятие. Цель урока: Познакомиться со стандартными функциями по обработке строк. Приобрести навыки по созданию файлов двух типов: File и Stream. Научиться открывать файл для чтения и [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Еще один урок по Gambas от Олега Чебан из из г. Киселевск Кемеровской области.<br />
<a href="http://freeschool.altlinux.ru/?p=4234">Первый урок</a><br />
<a href="http://freeschool.altlinux.ru/?p=4258">Второй урок</a><br />
<a href="http://freeschool.altlinux.ru/?p=4285">Третий урок</a></p>
<p><span id="more-4323"></span></p>
<h2>Урок 4. Файлы.</h2>
<p><strong>Тип урока:</strong> Лабораторная работа. Полное учебное занятие.<br />
<strong>Цель урока: </strong></p>
<ol>
<li>Познакомиться со стандартными функциями по обработке строк.</li>
<li>Приобрести навыки по созданию файлов двух типов: File и Stream.</li>
<li>Научиться открывать файл для чтения и записи последовательных данных.</li>
</ol>
<p><strong>Ход работы.</strong><br />
 В системе Gambas предусмотрены развитые средства по работе с директориями и файлами. Информацию о функциях по работе с файлами можно найти в справке Gambas, по команде: Справка → Компонент <strong>gb</strong> → File.<br />
 Рассмотрим некоторые:</p>
<p> <strong>1. Создать файл.</strong> Предварительно создадим в домашней директории каталог gambas/ и подкаталог lesson-4/ (урок-4), т.&nbsp;е. Полный путь будет таким:<br />
 <strong>/home/&lt;user&gt;/gambas/lesson-4/</strong> или <strong>~/gambas/lesson-4/</strong> </p>
<p> Справка: В системе Linux символ <span style="color: #ff420e">&#8216;~&#8217; указывает на директорию пользователя.</p>
<table style="background: #ccffff">
<tr>
<td>
  DIM myFile AS File <span style="color: #ff420e">&#8216;Переменная файлового типа</span><br />
  DIM myDir AS String<br />
  DIM sLine AS String<br />
  myDir = &quot;~/gambas/lesson-4/&quot;  <span style="color: #ff420e">&#8216;Задали путь к файлу</span><br />
  myFile = OPEN myDir &amp; &quot;example.txt&quot; FOR CREATE <span style="color: #ff420e">&#8216;*</span><br />
  sLine = &quot;Строка 1&quot;<br />
  PRINT #myFile, sLine <span style="color: #ff420e">&#8216;Ввод строки</span><br />
  PRINT #myFile, &quot;Строка 2&quot;<br />
  CLOSE #myFile <span style="color: #ff420e">&#8216;Закрываем файл</span>
 </td>
</tr>
</table>
<p>Примечание. * &#8212; Метод CREATE создает файл, при наличии, перезаписывает!</p>
<p> <strong>2. Открыть файл.</strong><br />
 2.1. Построчная запись данных в файл. Тип File.</p>
<table style="background: #ccffff">
<tr>
<td>
   DIM myFile AS File <span style="color: #ff420e">&#8216;Тип файл</span><br />
   DIM myDir AS String<br />
   DIM sLine AS String </p>
<p>   myDir =&quot;~/gambas/lesson-4/&quot; <span style="color: #ff420e">&#8216;Путь</span></p>
<p>   <span style="color: #ff420e">&#8216;Проверка на наличие файла</span><br />
   IF IsDir(myDir &amp; &quot;example.txt&quot;) THEN <span style="color: #ff420e">&#8216;IsDir вернет True, если файл найден</span><br />
   &nbsp;&nbsp;&nbsp;&nbsp;myFile = OPEN myDir &amp; &quot;example.txt&quot; FOR OUTPUT <span style="color: #ff420e">&#8216;Файл открыт для записи</span><br />
  &nbsp;&nbsp;&nbsp;&nbsp;sLine = &quot;OUTPUT — выходной файл&quot;<br />
  &nbsp;&nbsp;&nbsp;&nbsp;PRINT #myFile, sLine <span style="color: #ff420e">&#8216;Запись 1-ой строки</span><br />
  &nbsp;&nbsp;&nbsp;&nbsp;PRINT #myFile, &quot;Строка-2&quot; <span style="color: #ff420e">&#8216;Запись 2-ой строки</span><br />
  &nbsp;&nbsp;&nbsp;&nbsp;CLOSE #myFile <span style="color: #ff420e">&#8216;Закрыли файл</span><br />
  ELSE<br />
  &nbsp;&nbsp;&nbsp;&nbsp;Message.Error(&quot;Файл не найден!&quot;)<br />
  END IF
  </td>
</tr>
</table>
<p> 2.2. Построчное чтение данных из файла. Тип File.</p>
<table style="background: #ccffff">
<tr>
<td>
   DIM myFile AS File<br />
   DIM myDir AS String<br />
   DIM sLine1 AS String<br />
   DIM sLine2 AS String</p>
<p>   myDir = &quot;~/gambas/lesson-4/&quot;<br />
   myFile = OPEN myDir &amp; &quot;example.txt&quot; FOR INPUT  </p>
<p>   WHILE NOT Eof(myFile) <span style="color: #ff420e">&#8216;Пока не конец файла, повторять</span><br />
   &nbsp;&nbsp;&nbsp;&nbsp;LINE INPUT #myFile, sLine1 <span style="color: #ff420e">&#8216;Чтение строки-1</span><br />
   &nbsp;&nbsp;&nbsp;&nbsp;PRINT sLine1 <span style="color: #ff420e">&#8216;Печать значения в окно вывода</span><br />
   &nbsp;&nbsp;&nbsp;&nbsp;LINE INPUT #myFile, sLine2 <span style="color: #ff420e">&#8216;Чтение строки-2</span><br />
   &nbsp;&nbsp;&nbsp;&nbsp;PRINT sLine2<br />
   WEND <span style="color: #ff420e">&#8216;Конец  цикла</span></p>
<p>   CLOSE #myFile <span style="color: #ff420e">&#8216;Закрытие файла</span>
  </td>
</tr>
</table>
<p> Для работы со строками в Gambas используются стандартные функции:</p>
<table style="background: #ccffff">
<tr BGCOLOR="#ccffff">
<td>Функция</td>
<td>Действие</td>
<td>Пример</td>
</tr>
<tr BGCOLOR="#ffffcc">
<td><strong>Len</strong>(strLine)</td>
<td>Число символов в строке</td>
<td>Функция <strong>Len(«ABС»)</strong> вернет значение 3</td>
</tr>
<tr BGCOLOR="#ffffcc">
<td><strong>Left</strong>(strLine, 3)</td>
<td><i>Вырезать</i> три символа слева</td>
<td><strong>Left(«AltLinux», 3)</strong> получим «Alt»</td>
</tr>
<tr BGCOLOR="#ffffcc">
<td><strong>Right</strong>(strLine,5)</td>
<td><i>Вырезать</i> пять символов справа</td>
<td><strong>Right(«AltLinux», 5)</strong> получим «Linux»</td>
</tr>
<tr BGCOLOR="#ffffcc">
<td><strong>MID</strong>(strLine,3,6)</td>
<td><i>Вырезать</i> шесть символов начиная с третьего</td>
<td><strong>MID</strong>(«Информатика»,3,6) получим «формат»</td>
</tr>
<tr BGCOLOR="#ffffcc">
<td><strong>ASC</strong>(«A»)</td>
<td colspan=2>*Код символа 65(основание 10), или 41(16), 01000001(2)</td>
</tr>
<tr BGCOLOR="#ffffcc">
<td><strong>CHR</strong>(65)</td>
<td COLSPAN=2>Получим символ «A»</td>
</tr>
</table>
<p> * &#8212; Для перевода чисел с одной системы счисления в другую используйте «Калькулятор» (gcalctool) → Вид: <i>Программирование</i>.</p>
<p> 2.3. Создание и запись данных. Файловый тип Stream (поток).</p>
<table style="background: #ccffff">
<tr>
<td>
   DIM myFile AS stream<br />
   DIM myDir AS String<br />
   DIM sPi AS String</p>
<p>   myDir = &quot;~/gambas/lesson-4/&quot;<br />
   myFile = OPEN myDir &amp; &quot;example.dat&quot; FOR CREATE <span style="color: #ff420e">&#8216;Создали файл</span><br />
   myFile = OPEN myDir &amp; &quot;example.dat&quot; FOR OUTPUT <span style="color: #ff420e">&#8216;Открыли для записи</span><br />
   sPi = &quot;3.1416&quot; <span style="color: #ff420e">&#8216;Число Пи</span></p>
<p>   WRITE #myFile, sPi<br />
   WRITE #myfile, &quot;5&quot; <span style="color: #ff420e">&#8216;Радиус</span><br />
   CLOSE #myFile <span style="color: #ff420e">&#8216;Закрытие файла</span>
  </td>
</tr>
</table>
<p> 2.4. Чтение данных.Тип Stream.</p>
<table style="background: #ccffff">
<tr>
<td>
  DIM myFile AS stream<br />
  DIM myDir AS String<br />
  DIM strDat AS String<br />
  DIM fltPi AS Float </p>
<p>  DIM fltR AS Float<br />
  DIM Rezultat AS Float</p>
<p>  myDir = &quot;~/gambas/lesson-4/&quot; <span style="color: #ff420e">&#8216;Путь</span><br />
  myFile = OPEN myDir &amp; &quot;example.dat&quot; FOR INPUT <span style="color: #ff420e">&#8216;Открыли для чтения</span><br />
  WHILE NOT Eof(myFile) <span style="color: #ff420e">&#8216;Пока не конец файла, повторять</span><br />
  &nbsp;&nbsp;&nbsp;&nbsp;READ #myFile, strDat <span style="color: #ff420e">&#8216;Читаем значение Pi</span><br />
  &nbsp;&nbsp;&nbsp;&nbsp;fltPi = strDat <span style="color: #ff420e">&#8216;Присваиваем переменной действительного типа</span><br />
  &nbsp;&nbsp;&nbsp;&nbsp;READ #myFile, strDat <span style="color: #ff420e">&#8216;Читаем радиус</span><br />
  &nbsp;&nbsp;&nbsp;&nbsp;fltR = strDat<br />
  WEND <span style="color: #ff420e">&#8216;Конец цикла</span><br />
  CLOSE #myFile<br />
  Rezultat = 2 * fltPi * fltR  <span style="color: #ff420e">&#8216;Длина окружности PRINT Rezultat</span>
 </td>
</tr>
</table>
<p><strong> 3. Задача.</strong> Компонентами файла являются целые числа в диапазоне от 1 до 10. Вывести все четные.<br />
Дано: Input.dat<br />
1 2 3 4 5 6 7 8 9 10<br />
Результат:<br />
2 4 6 8 10<br />
Решение.</p>
<table style="background: #ccffff">
<tr>
<td>
   DIM myFile AS stream<br />
   DIM myDir AS String<br />
   DIM i AS Integer</p>
<p>   myDir = &quot;~/gambas/lesson-4/input.dat&quot;<br />
   myFile = OPEN myDir FOR CREATE <span style="color: #ff420e">&#8216;Создали файл</span><br />
   myFile = OPEN myDir FOR OUTPUT <span style="color: #ff420e">&#8216;Открыли для записи</span></p>
<p>   FOR i = 1 TO 10 STEP 1<br />
   &nbsp;&nbsp;&nbsp;&nbsp;WRITE #myFile, i <span style="color: #ff420e">&#8216;Запись данных</span><br />
   NEXT<br />
   CLOSE #myFile <span style="color: #ff420e">&#8216;Закрытие файла</span></p>
<p>   myFile = OPEN myDir FOR INPUT <span style="color: #ff420e">&#8216;Открыли для чтения</span><br />
   WHILE NOT Eof(myFile) <span style="color: #ff420e">&#8216;Пока не конец файла, повторять</span><br />
   &nbsp;&nbsp;&nbsp;&nbsp;READ #myFile, i <span style="color: #ff420e">&#8216;Читаем значение</span><br />
   &nbsp;&nbsp;&nbsp;&nbsp;IF i MOD 2=0 THEN PRINT i <span style="color: #ff420e">&#8216;Если остаток от деления  на 2 = 0, то число четное</span><br />
   WEND <span style="color: #ff420e">&#8216;Конец цикла</span><br />
   CLOSE #myFile
 </td>
</tr>
</table>
<p>  <strong>4. Домашнее задание.</strong><br />
 Изменить программу таким образом, чтобы найти все значения делящиеся на 3 и не делящиеся на 7 в диапазоне от 1 до 100. Результат записать в файл <i>output.dat.</i></p>
]]></content:encoded>
			<wfw:commentRss>http://freeschool.altlinux.ru/?feed=rss2&#038;p=4323</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Программирование в Gambas. Урок 3</title>
		<link>http://freeschool.altlinux.ru/?p=4285</link>
		<comments>http://freeschool.altlinux.ru/?p=4285#comments</comments>
		<pubDate>Thu, 28 Apr 2011 15:05:01 +0000</pubDate>
		<dc:creator><![CDATA[Владимир Черный]]></dc:creator>
				<category><![CDATA[Методические материалы]]></category>
		<category><![CDATA[Gambas]]></category>
		<category><![CDATA[Чебан]]></category>

		<guid isPermaLink="false">http://freeschool.altlinux.ru/?p=4285</guid>
		<description><![CDATA[Еще один урок по Gambas от Олега Чебан из из г. Киселевск Кемеровской области. Первый урок Второй урок Урок 3. Артиллерийская задача. Движение тела, брошенного под углом к горизонту. Тип урока: Лабораторная работа. Цель урока: Приобрести первичный опыт компьютерного исследования физических процессов. Оборудование: Проектор. Ход работы. Задача. Рассмотрим движение тела (снаряда) брошенное (пущенное) под углом. [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Еще один урок по Gambas от Олега Чебан из из г. Киселевск Кемеровской области.<br />
<a href="http://freeschool.altlinux.ru/?p=4234">Первый урок</a><br />
<a href="http://freeschool.altlinux.ru/?p=4258">Второй урок</a><br />
<span id="more-4285"></span></p>
<h2>Урок 3. Артиллерийская задача. <br />Движение тела, брошенного под углом к горизонту.</h2>
<p><strong>Тип урока:</strong> Лабораторная работа. </p>
<p><strong>Цель урока:</strong> Приобрести первичный опыт компьютерного исследования физических процессов.</p>
<p><strong>Оборудование:</strong> Проектор.</p>
<p><strong>Ход работы.</strong></p>
<p><strong>Задача.</strong> Рассмотрим движение тела (снаряда) брошенное (пущенное) под углом.<br />
Под телом понимаем материальную точку. Для упрощения модели сопротивлением воздуха и массой тела пренебрегаем. </p>
<p><strong>Математическая модель.</strong><br />
<a href="http://freeschool.altlinux.ru/wp-content/uploads/2011/04/graphic.png"><img src="http://freeschool.altlinux.ru/wp-content/uploads/2011/04/graphic-300x94.png" alt="" title="Матем. модель" width="300" height="94" class="aligncenter size-medium wp-image-4286" /></a></p>
<p>Уравнения движение точки:<br />
X=V0x*t, где V0x=V0*Cos(A)<br />
Y=V0y*t-(g*t^2)/2, где V0y=V0*Sin(A) </p>
<p>Для нахождения уравнения траектории движения из системы уравнений исключаем время:<br />
t=X/(V0*Cos(A)),<br />
подстановкой получаем:<br />
Y=X*Tan(A)-X/(V0*Cos(A)).<br />
Дальность полета:<br />
Xmax=V0^2/g*Sin(2*A).</p>
<p><strong>Интерфейс программы.</strong><br />
<img src="http://freeschool.altlinux.ru/wp-content/uploads/2011/04/az_html_896afec.png" alt="" title="Интерфейс программы" width="431" height="271" class="aligncenter size-full wp-image-4287" /></p>
<p>Всего на форме 6 объектов:</p>
<ol>
<li>TextLabel1.text=&#187;Угол А&#187;</li>
<li>TextLabel2.text=&#187;Скорость V0&#8243;</li>
<li>ComboBox1 — значения углов ограничим тремя значениями: 30, 45 и 60 градусов (свойство List).</li>
<li>ComboBox2 &#8212; значение начальной скорости ограничим значениями в 50, 60 и 75 м/с.</li>
<li>Объект рисования — DrawingArea1. Экпериментальными запусками снаряда, максимальную высоту и дальность определили в 300 на 600 точек экрана (метры).</li>
<li>Кнопка Button1.text=&#187;Огонь!&#187;</li>
</ol>
<p><strong>Результат:</strong><br />
<img src="http://freeschool.altlinux.ru/wp-content/uploads/2011/04/az_html_22c68a96.png" alt="" title="Результат" width="328" height="264" class="aligncenter size-full wp-image-4288" /></p>
<p><strong>Программа.</strong></p>
<table style="background-color: #ccffff;">
<tr>
<td>
  &#8216; Gambas class file<br />
  &#8216;Глобальные переменные, видны во всех процедурах данной формы<br />
  PUBLIC CONST g AS Float = 9.8<br />
  &#8216;константа, ускорение свободного падения<br />
  PUBLIC v0 AS Float<br />
  PUBLIC a AS Float </p>
<p>  PUBLIC x AS Float<br />
  PUBLIC y AS Float<br />
  &#8216;первичная инициализация свойст объектов<br />
  PUBLIC SUB _new()<br />
  &nbsp;&nbsp;Combobox1.Index = 0 &#8216;нач. значение A<br />
  &nbsp;&nbsp;Combobox2.Index = 0 &#8216;нач. знач. скорости &#8212; V0<br />
  &nbsp;&nbsp;DrawingArea1.Height = 300 &#8216;высота объекта рисования<br />
  &nbsp;&nbsp;DrawingArea1.Width = 600 &#8216;ширина<br />
  &nbsp;&nbsp;&#8216;DrawingArea1.ForeColor = 16711937 &#8216;красный цвет снаряда<br />
  &nbsp;&nbsp;DrawingArea1.Foreground = 16711680 &#8216; цвет фона &#8212; светлозеленый<br />
  END</p>
<p>  PUBLIC SUB Button1_Click()<br />
  DIM i AS Integer<br />
  &#8216;знач.  угла из списка<br />
  FOR i = 0 TO Combobox1.Count &#8212; 1<br />
  &nbsp;&nbsp;&nbsp;&nbsp;IF Combobox1.Index = i THEN<br />
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a = Combobox1.List[i]<br />
  &nbsp;&nbsp;&nbsp;&nbsp;END IF<br />
  NEXT<br />
  &#8216;знач.  нач. скорости &#8212; V0<br />
  FOR i = 0 TO Combobox2.Count &#8212; 1<br />
  &nbsp;&nbsp;&nbsp;&nbsp;IF Combobox2.Index = i THEN<br />
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v0 = Combobox2.List[i]<br />
  &nbsp;&nbsp;&nbsp;&nbsp;END IF<br />
  NEXT<br />
  &#8216;переводим градусы в радианы<br />
  a = (Pi * a) / 180<br />
  x = 25<br />
  y = 0<br />
  pushkaTraektoria &#8216;вызываем процедуру (без параметров) построения &#8212; &quot;PushkaTraektoria&quot;<br />
  END</p>
<p>  PRIVATE SUB pushkaTraektoria() </p>
<p>  DIM pushka AS integer[] &#8216;создаем переменную: массив тип Integer<br />
  pushka = NEW integer[](8) &#8216;создаем новый объект, размерность массива &#8212; 8 элементов<br />
  pushka[0] = 5 &#8216;присваиваем элементам координаты многоугольника (пушка), значение X1<br />
  pushka[1] = 295 &#8216;Y1<br />
  pushka[2] = 20 &#8216;X2<br />
  pushka[3] = 280 &#8216;Y2<br />
  pushka[4] = 25 &#8216;X3<br />
  pushka[5] = 285 &#8216;Y3<br />
  pushka[6] = 10  &#8216;X4<br />
  pushka[7] = 300 &#8216;Y4</p>
<p>  Draw.Begin(DrawingArea1) &#8216;Метод &quot;Начать&quot;<br />
  Draw.fillstyle = TRUE &#8216;закраска снарядов и контура пушки<br />
  Draw.fillcolor = 16711937 &#8216;красный цвет снарядов<br />
  Draw.Polygon(pushka) &#8216;Рисуем пушку<br />
  Draw.Circle(20, 295, 5) &#8216;рисуем колесо орудия<br />
  DO WHILE y &gt;= 0 &#8216;Пока  &quot;снаряд&quot; над землей, повторять<br />
  &nbsp;&nbsp;x = x + ((v0 ^ 2 * Sin(2 * a)) / g) / 30<br />
  &#8216; делим на 30, по числу &quot;снарядов&quot; и прибавляем к предыдущему результату<br />
  &nbsp;&nbsp;y = x * Tan(a) &#8212; (g * x ^ 2) / (2 * v0 ^ 2 * Cos(a) ^ 2)<br />
  &nbsp;&nbsp;Draw.Circle(x, 300 &#8212; y, 3)<br />
  &#8216;строим окружности описывающие траекторию движения снаряда<br />
  LOOP &#8216;конец цикла<br />
  Draw.End()<br />
  END SUB
 </td>
</tr>
</table>
<p><strong>Домашнее задание.</strong><br />
Запрограммируйте эффект взрыва — соприкосновение снаряда с поверхностью.<br />
Используйте графический метод построения многоугольника Polygon.</p>
<p>Приложение:  <a href='http://freeschool.altlinux.ru/wp-content/uploads/2011/04/pushka0.zip'>Архив программы</a> </p>
]]></content:encoded>
			<wfw:commentRss>http://freeschool.altlinux.ru/?feed=rss2&#038;p=4285</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Программирование в Gambas. Урок 2</title>
		<link>http://freeschool.altlinux.ru/?p=4258</link>
		<comments>http://freeschool.altlinux.ru/?p=4258#comments</comments>
		<pubDate>Mon, 25 Apr 2011 14:32:23 +0000</pubDate>
		<dc:creator><![CDATA[Владимир Черный]]></dc:creator>
				<category><![CDATA[Методические материалы]]></category>
		<category><![CDATA[Gambas]]></category>
		<category><![CDATA[Чебан]]></category>

		<guid isPermaLink="false">http://freeschool.altlinux.ru/?p=4258</guid>
		<description><![CDATA[Второй урок по Gambas от Олега Чебан из из г. Киселевск Кемеровской области. Первый урок тут. Урок 2. Построение графиков функций в Gambas. Тип урока: Лабораторная работа. Полное учебное занятие. Цель урока: Приобрести первичные навыки по использованию графических примитивов в Gambas. Познакомиться со способом инициализации свойств объектов на программном уровне. Закрепить знания по использованию оператора [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Второй урок по Gambas от Олега Чебан из из г. Киселевск Кемеровской области. Первый урок <a href="http://freeschool.altlinux.ru/?p=4234">тут.<br />
</a><br />
<span id="more-4258"></span></p>
<h2>Урок 2. Построение графиков функций в Gambas.</h2>
<p><strong>Тип урока:</strong> Лабораторная работа. Полное учебное занятие.<br />
<strong>Цель урока: </strong></p>
<ol>
<li>Приобрести первичные навыки по использованию графических примитивов в Gambas.</li>
<li>Познакомиться со способом инициализации свойств объектов на программном уровне.</li>
<li>Закрепить знания по использованию оператора выбора (Select Case).</li>
<li>Научиться создавать функции с одним выходным параметром.</li>
<li>Осуществить межпредметную связь с курсом математики.</li>
</ol>
<p><strong>Задача.</strong> Написать программу построения графиков функциональных зависимостей от одной переменной.<br />
Постановка задачи.</p>
<ol>
<li>Для построения графиков используем область рисования Drawingarea. Для ввода функции текстовое поле TextBox. Построение осуществим по кнопке Button. Внешний вид программы см. Рис. 1. Масштаб: 1 к 30 пикселей. </li>
</ol>
<p>Рис. 1. Внешний вид программы.<br />
<img src="http://freeschool.altlinux.ru/wp-content/uploads/2011/04/img_134.jpg" alt="" title="Внешний вид программы" width="480" height="350" class="aligncenter size-full wp-image-4264" /></p>
<ol>
<li value=2>Всего построим 3 функции: Sin(x), Cos(x) и квадратичная X^2, см. табл.1</li>
</ol>
<p><strong>Табл. 1.</strong> Математические функции Gambas.</p>
<table style="background-color: #ffffcc;">
<tr style="background-color: #ccffff;">
<td>Функция</td>
<td>Описание</td>
</tr>
<tr>
<td>Abs(x)</td>
<td>Модуль числа X</td>
</tr>
<tr style="background-color: #ffffcc;">
<td>Log(x)
</td>
<td>Натуральный логарифм от X
</td>
</tr>
<tr style="background-color: #ffffcc;">
<td>Log10(x)
</td>
<td>Десятичный логарифм от X
</td>
</tr>
<tr style="background-color: #ffffcc;">
<td>Sin(x)
</td>
<td>Синус от X, угол в радианах
</td>
</tr>
<tr style="background-color: #ffffcc;">
<td>Cos(x)
</td>
<td>Косинус от X, угол в радианах
</td>
</tr>
<tr>
<td>Tan(x)
</td>
<td>Тангенс от X
</td>
</tr>
<tr style="background-color: #ffffcc;">
<td>ASin(x), Acos(x), ATan(x)
</td>
<td>Арксинус, арккосинус, арктангенс
</td>
</tr>
<tr>
<td>Sqr(x)
</td>
<td>Корень квадратный из X
</td>
</tr>
<tr style="background-color: #ffffcc;">
<td>Randomize
</td>
<td>Регенерация датчика псевдослучайных чисел
</td>
</tr>
<tr>
<td>RND
</td>
<td>Псевдослучайное число от 0 до 1, тип Float (действительный)
</td>
</tr>
<tr style="background-color: #ffffcc;">
<td>RND(3)
</td>
<td>Псевдослучайное число от 0 до 3
</td>
</tr>
</table>
<ol>
<li value=3>Требования к задаче:</li>
</ol>
<ul>
<li>инициализацию свойств объектов осуществить в программной части;</li>
<li>построение кривой осуществить с помощью «ломанной» линии Draw.Line;</li>
<li>масштаб определить как 1:30.</li>
</ul>
<p><strong>Ход работы:</strong></p>
<ol>
<li><strong>Предварительные сведения.</strong></li>
</ol>
<p>К объектам системы Gambas можно применить предопределенные свойства и методы. Сначала пишем имя объекта и через точку указываем свойство (синий кружок), или метод (зеленый). Например, объекту текстовое поле TextBox: зададим свойство text&nbsp; &#8212;&nbsp; TextBox.text = «33.55 руб.», или метод TextBox.clear — очистить содержимое текстового поля. </p>
<ol>
<li value=2><strong>Инициализацию</strong> свойств осуществим в конструктуре _new:</li>
</ol>
<table style="background-color: #ccffff;">
<tr>
<td>&#8216;Процедура _new &#8212; это конструктор. Используя его, мы можем устанавливать разные заголовки,<br />
&#8216;этикетки и содержание текстовых вводов каждый раз, когда используется диалог.<br />
&#8216;Более того, эти свойства устанавливаются в момент создания.<br />
PUBLIC SUB _new()<br />
&nbsp; &nbsp; ME.Caption = &#171;Урок 1. Графика в Gambas.&#187; &#8216;иницализируем/задаем заголовок формы<br />
 &#8216; или так Form.Text = &#171;Урок 1. Графика в Gambas&#187;<br />
&nbsp;&nbsp; FMain.Center&nbsp;&nbsp;&nbsp;&nbsp; &#8216;Форма по центру экрана<br />
&nbsp;&nbsp; FMain.Width = 500&nbsp;&nbsp;&nbsp;&nbsp; &#8216;Ширина формы<br />
&nbsp;&nbsp; FMain.Height = 400&nbsp;&nbsp;&nbsp; &nbsp; &#8216;Высота формы<br />
&nbsp;&nbsp; DrawingArea1.X = 50&nbsp;&nbsp;&nbsp;&nbsp; &#8216;Координаты левого верхнего угла объекта DrawingArea<br />
&nbsp;&nbsp; DrawingArea1.Y = 40<br />
&nbsp;&nbsp; DrawingArea1.Width = 400&nbsp;&nbsp;&nbsp;&nbsp; &#8216;Ширина объекта DrawingArea<br />
&nbsp;&nbsp; DrawingArea1.Height = 300&nbsp;&nbsp;&nbsp;&nbsp; &#8216;Высота DrawingArea<br />
&nbsp;&nbsp; DrawingArea1.Background = 15071461&nbsp; &#8216;Цвет фона DrawingArea &#8212; светлозеленый<br />
&nbsp;&nbsp; DrawingArea1.ForeColor = 16711937&nbsp;&nbsp; &#8216;Оси &#8212; цвет красный<br />
&nbsp;&nbsp; Button1.text = &#171;Построить&#187;<br />
&nbsp;&nbsp; TextBox1.text = &#171;sin&#187;<br />
END
</td>
</tr>
</table>
<ol>
<li value=3><strong>Вычисляемая функция</strong> принимает два параметра: strFunc — функция введенная пользователем (например sin) и fltX — значение Xi. Возвращает результат — Yi</li>
</ol>
<table style="background-color: #ccffff;">
<tr>
<td>&#8216;Функция вычисления аргумента<br />
SUB trigonometria(strFunc AS String, fltX AS Float) AS Float<br />
&nbsp; SELECT CASE strFunc<br />
&nbsp;&nbsp;&nbsp; CASE &#171;sin&#187;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RETURN Sin(fltX)<br />
&nbsp;&nbsp;&nbsp; CASE &#171;cos&#187;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RETURN Cos(fltX)<br />
&nbsp;&nbsp;&nbsp; CASE &#171;x^2&#8243;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RETURN fltX ^ 2<br />
&nbsp;&nbsp;&nbsp; CASE ELSE<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RETURN 255<br />
&nbsp; END SELECT<br />
END
</td>
</tr>
</table>
<ol>
<li value=4><strong>Строим график.</strong></li>
</ol>
<p>Объект рисунок «DrawingArea» находится во вкладке Container:<br />
<img src="http://freeschool.altlinux.ru/wp-content/uploads/2011/04/img_135.jpg" alt="" title="Вкладка Container" width="216" height="196" class="aligncenter size-full wp-image-4265" /></p>
<p>Размеры холста DrawingArea мы определи в 400 на 300 точек, значения инициализировали в конструкторе _New, как Fmain.Width=400 (ширина) и Fmain.Height=300 (высота).<br />
Предполагается построить тригонометрическую функцию Sin(x) и Cos(x) на отрезке от -2*Pi (~ -6.28) до +2*Pi (~ +6.28) с шагом табулирования 0.5. Поэтому числовой отрезок по X выглядит так:<br />
<img src="http://freeschool.altlinux.ru/wp-content/uploads/2011/04/img_136.jpg" alt="" title="Оси координат" width="424" height="358" class="aligncenter size-full wp-image-4269" /></p>
<p>Кривую построим из отрезков [X0, Y0]-[X1, Y1] и т.д.. Всего получается 27 отрезков, количество итераций в цикле 26-ть, соответственно.</p>
<ol>
<li value=5><strong>Процедура &#171;Клик по кнопке&#187;</strong>.</li>
</ol>
<table border="0" style="background-color: #ccffff;">
<tr>
<td>PUBLIC SUB Button1_Click()<br />
&nbsp; DIM i AS Byte<br />
&nbsp; DIM m AS Byte &#8216;Масштаб<br />
&nbsp; DIM x AS Float[128]<br />
&nbsp; DIM y AS Float[128]<br />
&nbsp; &#8216;К объекту Draw (Рисунок) применить метод Начать<br />
&nbsp; DRAW.BEGIN(DrawingArea1)<br />
&nbsp; Draw.Line(200, 0, 200, 300)<br />
&nbsp; Draw.Text(&#171;X&#187;, 380, 160)&nbsp; &#8216;подписать оси<br />
&nbsp; Draw.Line(0, 150, 400, 150)<br />
&nbsp; Draw.Text(&#171;Y&#187;, 180, 10)<br />
&nbsp; Draw.Line(230, 140, 230, 150) &#8216;масштабная единица<br />
&nbsp; Draw.Text(&#171;1&#8243;, 228, 155)<br />
m = 30&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#8216;масштаб 30 точек<br />
x[0] = -6.5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#8216;нач. значение X<br />
y[0] = trigonometria(TextBox1.text, x[0]) &#8216; передача параметров функции<br />
x[1] = x[0] + 0.5 &#8216;шаг табулирования 0.5<br />
&#8216;Если нет в списке функции, то вывести предупреждение и выполнить рекурсию<br />
IF y[0] = 255 THEN&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp; Message.error(&#171;Нет такой функции!&#187;)<br />
&nbsp;&nbsp; _new&nbsp;&nbsp;&nbsp; &#8216;рекурсия &#8212; перезапуск формы<br />
END IF<br />
FOR i = 1 TO 26 STEP 1<br />
&nbsp; y[i] = trigonometria(TextBox1.text, x[i])<br />
&nbsp; Draw.Line(200 + x[i &#8212; 1] * m, 150 &#8212; y[i &#8212; 1] * m, 200 + x[i] * m, 150 &#8212; y[i] * m)<br />
&nbsp; x[i + 1] = x[i] + 0.5<br />
NEXT<br />
 &#8216;Применить метод окончить<br />
&nbsp; DRAW.END()<br />
END
</td>
</tr>
</table>
<p>&nbsp;<br />
<strong>Домашнее задание.</strong><br />
Изменить программу таким образом, чтобы выбор вычисляемых функций выбирался пользователем с помощью раскрывающегося списка ComboBox.<br />
1. Вставка функций осуществляется в Панели свойств &#8594; свойство List, см. Рис. 2.<br />
Рис. 2.a. Свойство List<br />
<img src="http://freeschool.altlinux.ru/wp-content/uploads/2011/04/img_137.jpg" alt="" title="Свойства List" width="217" height="129" class="aligncenter size-full wp-image-4270" /></p>
<p>Рис. 2.b. Значения List<br />
<img src="http://freeschool.altlinux.ru/wp-content/uploads/2011/04/img_138.jpg" alt="" title="Значения List" width="444" height="295" class="aligncenter size-full wp-image-4271" /></p>
<p>2. Значения List можно получить по команде: ListBox1.List[0] — первое значение (в нашем случае «sin»), ListBox1.List[1] — второе значение («cos») и т.д..<br />
Copyleft © Oleg Tcheban<br />
ГОУ СПО Киселевский педагогический колледж</p>
]]></content:encoded>
			<wfw:commentRss>http://freeschool.altlinux.ru/?feed=rss2&#038;p=4258</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Программирование в Gambas. Урок 1</title>
		<link>http://freeschool.altlinux.ru/?p=4234</link>
		<comments>http://freeschool.altlinux.ru/?p=4234#comments</comments>
		<pubDate>Mon, 18 Apr 2011 13:39:27 +0000</pubDate>
		<dc:creator><![CDATA[Владимир Черный]]></dc:creator>
				<category><![CDATA[Методические материалы]]></category>
		<category><![CDATA[Basic]]></category>
		<category><![CDATA[Gambas]]></category>
		<category><![CDATA[Чебан]]></category>

		<guid isPermaLink="false">http://freeschool.altlinux.ru/?p=4234</guid>
		<description><![CDATA[Недавно мы закончили публикацию книги по BASIC-256. К сожалению, аналогичных материалов по Gambas 2 нет, точнее есть одна хорошая книга, но на испанском&#8230; Кто бы перевел!? Сегодня мы начинаем публиковать несколько уроков по Gambas, подготовленных Олегом Чебан из г.&#160;Киселевск Кемеровской области. Олег уже опубликовал 3 урока на своем сайте, но из-за конструкции сайта не могу [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Недавно мы закончили публикацию <a href="http://freeschool.altlinux.ru/?p=4062">книги по BASIC-256</a>. К сожалению, аналогичных материалов по Gambas 2 нет, точнее есть одна хорошая книга, <a href="http://gambas.sourceforge.net/en/main.html">но на испанском</a>&#8230; Кто бы перевел!? Сегодня мы начинаем публиковать несколько уроков по Gambas, подготовленных <a href="http://www.altlinux.ru/partners/specialist-edu/specialists-list/">Олегом Чебан</a> из г.&nbsp;Киселевск Кемеровской области. Олег уже опубликовал 3 урока <a href="http://schoollinux.narod.ru/">на своем сайте</a>, но из-за конструкции сайта не могу дать точную ссылку.<br />
Если кто-то имеет опыт по работе с Gambas и хочет поделиться &#8212; <a href="mailto:black@altlinux.ru">пишите</a>, присылайте свои статьи или ссылки на свои странички.<br />
<span id="more-4234"></span><br />
<em>Олег Чебан, г. Киселевск, Кемеровской обл.</em></p>
<h2>Урок 1. Переменные в Gambas.</h2>
<p><b>Тип урока:</b> Занятие по овладению новыми знаниями. Демонстрация.<br />
<b>Цель урока: </b></p>
<ol>
<li>Приобрести навыки именования переменных по венгерской системе.</li>
<li>Познакомить учащихся с основными типами данных.</li>
<li>Управляющие конструкции языка Gambas.</li>
<li>Определить область действия переменных.</li>
</ol>
<p><strong>Ход урока:</strong><br />
<strong>1. Венгерская система именования переменных.</strong><br />
Имена переменных рекомендуют использовать составные, во избежания пересечений с зарезервированными константами (cos, sin, len, file..). Первое слово прописью (преимущественно указывается тип данных), второе с заглавной буквы. Такую систему именования переменных называют еще — <em>венгерской</em><a NAME="m1" HREF="#ref1"><sup>1</sup></a>.</p>
<p><U>Пример 1.1</U>. Именование переменных:</p>
<ul>
<li>intX — переменная X типа integer;</li>
<li>strNameFile — переменная строкового типа (String);</li>
<li>fltY — переменная действительного (вещественного) типа (Float);</li>
<li>vntRezultat — переопределяемый тип по ходу выполнения программы (Variant);</li>
<li>blnLog — логическая переменная, тип boolean и т.д.<a NAME="m2" HREF="#ref2"><sup>2</sup></a></li>
</ul>
<p><U>Пример 1.2.</U> Именование элементов меню:</p>
<ul>
<li>mnuHelp — Содержание;</li>
<li>mnuExit — Выход их программы;</li>
<li>mnuAbout — О программе и т.д..</li>
</ul>
<p><strong>2. Типы данных в Gambas.</strong><br />
Табл. 1. Основные типы данных Gambas</p>
<table border="1">
<tr VALIGN=TOP BGCOLOR="#ccffff">
<td> № </td>
<td> Тип </td>
<td> Диапазон </td>
<td> Описание </td>
<td> Колич. байт </td>
</tr>
<tr VALIGN=TOP BGCOLOR="#ffffcc">
<td> 1 </td>
<td> Byte </td>
<td> от 0 до 255 </td>
<td> Хранение натуральных чисел </td>
<td> 1 </td>
</tr>
<tr VALIGN=TOP BGCOLOR="#ffffcc">
<td> 2 </td>
<td> Short </td>
<td> от –32768 до 32767 </td>
<td> Хранение целых чисел </td>
<td> 2 </td>
</tr>
<tr VALIGN=TOP BGCOLOR="#ffffcc">
<td> 3 </td>
<td> Integer </td>
<td> от –2147483648 до 2147483643 </td>
<td> &#8212;//&#8212; </td>
<td> 4 </td>
</tr>
<tr VALIGN=TOP BGCOLOR="#ffffcc">
<td> 4 </td>
<td> Float </td>
<td> Экспоненциальное представление числа: 1.23 Е +02, или 1.23*10^2 </td>
<td> Хранение действительных чисел с точностью до 13 знаков </td>
<td> 8 </td>
</tr>
<tr VALIGN=TOP BGCOLOR="#ffffcc">
<td> 5 </td>
<td> Variant </td>
<td> &#8212;//&#8212; </td>
<td> Переопределяемый тип по ходу выполнения программы: текстовый в числовой и обратно. </td>
<td> 8 </td>
</tr>
<tr VALIGN=TOP BGCOLOR="#ffffcc">
<td> 6 </td>
<td> Boolean </td>
<td> True и False </td>
<td> Хранение переменных логического типа </td>
<td> 2 </td>
</tr>
<tr VALIGN=TOP BGCOLOR="#ffffcc">
<td> 7 </td>
<td> Date </td>
<td>
			Dim<br />
			dtmD, dtmT as date<br />
			dtmD=date(now)<br />
			dtmT=time(now)
		</td>
<td> Хранение даты и времени </td>
<td> 8 </td>
</tr>
<tr VALIGN=TOP BGCOLOR="#ffffcc">
<td> 8 </td>
<td> String </td>
<td> &#8212; </td>
<td> Хранение символов </td>
<td> По 2 байта на символ </td>
</tr>
</table>
<p><U>Пример 2.</U> Переменные целого типа.</p>
<p><strong>Dim A AS byte </strong>	&#8216;определить А как переменную типа BYTE.<br />
<strong>DIM B[8] AS integer</strong> &#8216;определить переменную B как массив из 8 элементов целого типа.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#8216;Нумерация начинается с нуля.</p>
<p>В Gambas конструирование графического интерфейса и программирование основано на использовании программных объектов (содержащих свойства и методы), и действий пользователя &#8212; событий.</p>
<p><strong>2.1. Объект это существительное.</strong> То, что мы видим на экране это объекты.</p>
<p><U>Пример 2.1.</U> Объекты:</p>
<ul>
<li>Form1 &#8212; Форма, на которой устанавливаются другие объекты.</li>
<li>Label1 &#8212; Надпись – окно для вывода текста.
<li>Textbox1 &#8212; Окно для ввода текста.</li>
<li>Button1 &#8212; Кнопка для запуска событийных процедур.
<li>Listbox1 &#8212; Окно для вывода списка строк.</li>
<li>Picturebox1 &#8212; Окно для вывода картинок. Форматы файлов JPEG, PNG, BMP, GIF, XPM. Рисовать в этом окне нельзя!</li>
<li>Drawingarea1 &#8212; Область для рисования. </li>
<li>Timer1 &#8212; Счетчик времени. Служит для запуска процедур через определенный интервал времени.</li>
</ul>
<p><strong>2.2. Свойства – это прилагательные.</strong><br />
Они характеризуют объект. Каждый класс объектов обладает определенным набором свойств. Их значения уже установлены автоматически при установке объекта на форму. Но Вы их можете менять.</p>
<p><U>Пример 2.2.</U><br />
Свойства:</p>
<ul>
<li>NAME &#8212;  Имя объекта.</li>
<li>Text &#8212; Значение надписи на объекте.</li>
<li>Backcolor &#8212; Цвет фона окошка.</li>
<li>Font &#8212; Шрифт. Имеет дополнительное меню свойств ( шрифт, начертание, размер букв).</li>
<li>Size – Размер. </li>
<li>Backcolor &#8212; Цвет фона объекта.</li>
<li>Text – Текст.</li>
</ul>
<p>Для каждого свойства нужно указать объект, к которому оно относится. Например, Label1.Backcolor = 65280, или label1.Backcolor=green &#8216;зеленый цвет</p>
<p><strong>2.3. Методы это глаголы.</strong> Компьютер может выполнять различные действия над объектами. </p>
<p>У каждого объекта свои допустимые методы обработки данных. Методы имеют аргументы, которые позволяют задавать параметры выполняемых действий. Параметры указывают в круглых скобках после имени метода. Пишем объект, ставим точку &#8212; появляется список методов и свойств данного объекта. Методы – <FONT COLOR="#00ff00">зеленые</font>, свойства – <FONT COLOR="#0000ff">синие</font>. Выбираете нужный метод. Ставите скобку &#8216;(&#8216; появляется подсказка – список параметров и их типы.</p>
<p><U>Пример 2.3.</U> Методы.</p>
<ul>
<li>Clear – Очистить. Например: Textbox1.clear()</li>
<li>Hide &#8212; Скрыть объект (сделать невидимым). Label1.hide()</li>
<li>Show – Показать. Label1.show()</li>
<li>Delete &#8212; Удалить</li>
<li>Refresh &#8212; Перерисовать.</li>
<li>Resize &#8212; Изменить размер</li>
<li>Setfocus &#8212; Установить фокус. (переместить курсор в это окно)</li>
<li>Move &#8212; Переместить в новое место.</li>
<li>Add &#8212; Добавить строку.</li>
<li>Lover &#8212; Переместить в самый нижний слой.</li>
<li>Raise &#8212; Переместить в самый верхний слой.</li>
</ul>
<p><strong>2.4. События &#8212; это действия пользователя при выполнении программы. </strong><br />
Если курсор находится над объектом, то пользователь может выбрать из 17 разных способов действий. А программист может написать 17 программ реакции на эти события, если объект допускает над собой эти события.</p>
<p><U>Пример 2.4.</U> События.</p>
<ul>
<li>Click – Одинарный щелчок по левой кнопки мыши.</li>
<li>DblClick &#8212; Двойной щелчок.</li>
</ul>
<p>Табл. 2. Основные команды языка Gambas.</p>
<table border=1>
<tr VALIGN=TOP BGCOLOR="#ccffff">
		<Th width=5%>№</Th><Th width=30%>Команда</Th><Th width=25%>Название</Th><Th>Пример</Th><br />
	</tr>
<tr VALIGN=TOP BGCOLOR="#ffffcc">
		<TD  ><br />
			1
		</td>
<p>		<TD ><br />
			=
		</td>
<p>		<TD ><br />
			Оператор присвоения
		</td>
<td>
			A=3.14 &#8216;переменной A<br />
			присвоить значение Пи
		</td>
</tr>
<tr VALIGN=TOP BGCOLOR="#ffffcc">
<td> 2 </td>
<td>
			IF &lt;условие&gt;<br />
			&nbsp;&nbsp;&nbsp;&nbsp;THEN&lt;действие 1&gt;<br />
			&nbsp;&nbsp;&nbsp;&nbsp;ELSE&lt;действие 2&gt;<br />
			ENDIF
		</td>
<p>		<TD ><br />
			Условный оператор
		</td>
<td>
			IF x&lt;=0<br />
			THEN<br />
			&nbsp;&nbsp;&nbsp;&nbsp;n=n+1<br />
			&nbsp;&nbsp;&nbsp;&nbsp;k=k+1<br />
			ELSE n=n-1<br />
			ENDIF<br />
			&#8216;В Gambas нет операторных скобок!
		</td>
</tr>
<tr VALIGN=TOP BGCOLOR="#ffffcc">
<td> 3 </td>
<td>
			SELECT CASE &lt;действие 1&gt;<br />
			&nbsp;&nbsp;&nbsp;&nbsp;CASE&lt;действие 2&gt;<br />
			&nbsp;&nbsp;&nbsp;&nbsp;CASE&lt;действие 3&gt;<br />
			&nbsp;&nbsp;&nbsp;&nbsp;CASE ELSE&lt;действие 4&gt;<br />
			END SELECT
		</td>
<td> Оператор выбора </td>
<td>
			SELECT CASE x<br />
			&nbsp;&nbsp;&nbsp;&nbsp;CASE 1,2<br />
			&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;n=1<br />
			&nbsp;&nbsp;&nbsp;&nbsp;CASE 3<br />
			&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;n=3<br />
			&nbsp;&nbsp;&nbsp;&nbsp;CASE ELSE<br />
			&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;n=0<br />
			END SELECT
		</td>
</tr>
<tr VALIGN=TOP BGCOLOR="#ffffcc">
<td> 4 </td>
<td>
			FOR &lt;начальное значение&gt;<br />
			TO &lt;конечное значение&gt;<br />
			STEP &lt;шаг&gt;<br />
			NEXT
		</td>
<td> Цикл с параметром </td>
<td>
			FOR i=0 TO 9 STEP 2<br />
			&nbsp;&nbsp;&nbsp;&nbsp;s=s+i<br />
			NEXT
		</td>
</tr>
<tr VALIGN=TOP BGCOLOR="#ffffcc">
<td> 5 </td>
<td>
			WHILE &lt;условие&gt;<br />
			WEND
		</td>
<td> Цикл с предусловием </td>
<td>
			WHILE i&lt;10<br />
			&nbsp;&nbsp;&nbsp;&nbsp;s=s+i<br />
			&nbsp;&nbsp;&nbsp;&nbsp;i=i+1<br />
			WEND
		</td>
</tr>
<tr VALIGN=TOP BGCOLOR="#ffffcc">
<td> 6 </td>
<td>
			REPEAT&lt;действие&gt;<br />
			UNTIL &lt;условие&gt;
		</td>
<td> Цикл с постусловием </td>
<td>
			REPEAT<br />
			&nbsp;&nbsp;&nbsp;&nbsp;s=s+i<br />
			&nbsp;&nbsp;&nbsp;&nbsp;i=i+1<br />
			UNTIL i&lt;10
		</td>
</tr>
<tr VALIGN=TOP BGCOLOR="#ffffcc">
<td> 7 </td>
<td>
			DO WHILE &lt;условие&gt;<br />
			LOOP
		</td>
<p>		<TD ><br />
			Аналогичен циклу с предусловием
		</td>
<td>
			DO WHILE i&lt;10<br />
			&nbsp;&nbsp;&nbsp;&nbsp;s=s+i<br />
			&nbsp;&nbsp;&nbsp;&nbsp;i=i+1<br />
			LOOP
		</td>
</tr>
</table>
<p><strong>3. Область действия переменных.</strong></p>
<p>Диапазон действий подразумевает видимость переменной, процедуры или объекта другим процедурам в программе.В Gambas возможны два диапазона:</p>
<ul>
<li>глобальный — видим всем процедурам во всех модулях проекта;</li>
<li>локальный — переменная видна лишь содержащей ее процедуре.</li>
</ul>
<p>Локальные переменные объявляются в теле процедуры, глобальные — в модуле.</p>
<p>&#8212;&#8212;&#8212;<br />
<a NAME="ref1" HREF="#m1">1</a>Венгерская система именования переменных очень удобна программисту, когда &#171;с первого взгляда&#187; понятен тип переменной. (<em>Прим. редактора.</em>)<br />
<a NAME="ref2" HREF="#m2">2</a>Мне как-то более привычно делать однобуквенные префиксы: i,s,f,v,b, впрочем, это дело вкуса. (<em>Прим. редактора.</em>) </p>
]]></content:encoded>
			<wfw:commentRss>http://freeschool.altlinux.ru/?feed=rss2&#038;p=4234</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
	</channel>
</rss>
