пʼятниця, 23 грудня 2011 р.

Снежное дерево

Я выпускаю свою новую, зимнюю игру! Как раз, как доделал её, у нас снег пошёл :)

Поддержите, пожалуйста, её на конкурсах своими голосами:

Здесь - http://www.kongregate.com/games/GeneralVimes/snow-tree
И здесь - http://www.newgrounds.com/portal/view/586449

четвер, 15 грудня 2011 р.

Консультация по Access

Консультация по Access будет в пятницу, 16 декабря в 10-00 в 203 кабинете

вівторок, 13 грудня 2011 р.

Консультация по Access

Консультация по практике по Access состоится 13 декабря в 9-00 в 203 кабинете.

четвер, 8 грудня 2011 р.

Итоговая контрольная по Pascal


1. Объявите массив целых чисел. Установите его длину, равной 100. Заполните его чётными числами от 2 до 200.

2. Создаёте массив строк. Установите его длину, равную 50. Для всех чисел из первого массива, если они делятся на 4, преобразуйте их в строку и запишите во второй.

3. Объявите переменные a и b дробного типа. Присвойте им случайные значения. С помощью какой последовательности команд можно сделать так, чтобы значение переменной a оказалось записанным в b, а значение b - в a?

4. Почему, если объявить переменные n и i целого типа, а затем в какой-нибудь процедуре написать

for i := 95 to 959595959595 do
n := I div 10;

то программа не откомпилируется?

5. Есть 4 условия:
if m='S' then...
if M='S' then...
if M='s' then...
if m='s' then...

Могут ли какие-то из них одновременно быть истинными, и если могут, то при каких условиях?

субота, 26 листопада 2011 р.

Моя новая игра участвует в конкурсе



Многим из вас я уже показывал свою новую игру Save the Paintings, где нужно восстанавливать шедевры живописи. Я отправил её на два конкурса, и сейчас прошу вашей поддержки.

Голосование происходит здесь:
http://www.kongregate.com/games/GeneralVimes/save-the-paintings
(под игрой есть ряд звёздочек - это голосовалка, самая правая - максимальный балл)

И здесь:
http://www.newgrounds.com/portal/view/584514
(здесь внизу слева есть ряд рожиц, самая правая - максимум).

Для голосования нужно зарегистрироваться на этих сайтах (если уже регистрировались, то просто войти с тем логином/паролем).

Вместе мы прорвёмся! :)

неділя, 6 листопада 2011 р.

Консультация по Access

На следующей неделе график у меня довольно гибкий, желательно провести консультацию в течение дня, а не после пар. Есть окна в расписании (или, может, сами сможете прорубить)?

Буду в понедельник на 4й паре в 203 кабинете проводить консультацию.

пʼятниця, 21 жовтня 2011 р.

Контрольная по Pascal

Задания выполняются на листе, укажите фамилию и группу. В каждом задании необходимо привести фрагмент программы на Pascal, служащий указанной цели.

1. Объявите переменные a целого типа, b - дробного типа, с - типа байт, d - строкового типа, e - логического типа, f - символьного типа.

2. Есть некоторая процедура P(). Как выполнить эту процедуру 100 раз, задействовав всего 3 строки программного кода?

3. Есть 4 условия:
if A='a' then...
if A='A' then...
if a='a' then...
if a='A' then...

Какие из них всегда будут иметь одинаковое логическое значение?

4. Дана программа
n:=15;
while n>1 do
begin
if n mod 2 = 0 then
  n:=n div 2
else
  n:= 3*n+1;
  Writeln(n);
end;

Какие числа выведет эта программа на экран?

5. Какое максимальное значение может храниться в переменной типа байт?

вівторок, 18 жовтня 2011 р.

Access+VBA

Создайте новую базу данных. В ней простую форму в режиме конструктора с именем "Упражнение №1".
Задание №1. В форме создать кнопку, при нажатии которой в поле надписи высвечивается текущая дата.

Порядок выполнения. Внутри формы создайте надпись, присвойте ей имя посредством свойства "Имя". Значением имени пусть будет слово "Today". Создайте кнопку с текстом "Какое сегодня число?". Для кнопки определите свойства "События" - "Нажатие кнопки" как процедуру обработки события. Программа на VBA будет по умолчанию иметь имя "Кнопка№_Click" (вместо № будет какое-то число). В ее тексте запишите строку:

Today.Caption = Date()


Таким образом, функция даты (Date) присвоит значение надписи (Today.Caption) Запустите программу, исправьте возможные ошибки.

Задание №2. В форме создать кнопку, при нажатии которой в поле надписи может быть введена произвольная дата.

Порядок выполнения. Аналогично предыдущему примеру вплоть до текста процедуры обработки события. Если имя надписи "myDate", то текстом будет:

Dim d As String 
d = InputBox("Введите дату")
myDate.Caption = d 


Объявлена переменная d для ввода даты? Окно ввода данных InputBox, Надпись приняла Caption, равное d.

Если выполнить отмену ввода даты, то переменная d не принимает никакого значения, что ведет к ошибке. Добавьте строку, которая прервет выполнение события (Exit Sub), если d - не дата (Not  IsDate(d) ):

If Not IsDate(d) Then Exit Sub

Задание №3. Надпись высвечивается цветом, принятым по умолчанию (черный). Изменить цвет надписи, если введенная дата - выходной день (воскресенье).
Порядок выполнения. Внесите изменения в текст процедуры обработки события:
После ввода даты определите номер дня в неделе, считая, что понедельник - 1-ый.

Dim n As Integer
n = WeekDay(d, vbMonday)

Выберите цвет надписи (ForeColor) равным 255 (красный), если номер = 7, и 0(черный) в остальных случаях.

If n = 7 Then
myDate.ForeColor = 255
Else
myDate.ForeColor = 0
End If
myDate.Caption = d


Дополнительное задание: Измените цвет и для субботы (шестой день недели).

Задание №4. Создать кнопку, при нажатии которой будет определен день недели для введенной даты.

Порядок выполнения. Аналогично второму заданию. Вместо вывода значения даты в надпись (имеет имя "Неделя"), нужно выводить текст названия дня недели в зависимости от его номера, который известен переменной n (например, номер понедельника = 1). Для выбора названия по номеру используйте оператор Select Case:

Select Case n
Case 1
Неделя.Caption = "Понедельник"
Case 2
Неделя.Caption = "Вторник"


End Select

Дополнительное задание. Задайте выделение цветом названий дней недели для выходных дней (суббота, воскресенье). (Убрать в макете формы - линейки прокрутки, полосы выделения, кнопки перехода по записям.)

четвер, 13 жовтня 2011 р.

Работа со строками

Рассмотрим алгоритм решения задачи, в которой нужно подсчитать количество вхождений символа «а» в строке. Используем компоненты классов TEdit и TMemo для ввода строки и вывода результата.

Пусть форма будет выглядеть следующим образом:

Объявим в юните переменные
var s: string;
i, k: integer;


А обработчик нажатия кнопки будет выглядеть так:

procedure TForm1.Button1Click(Sender: TObject);
begin
  s:=edit1.text; //ввод строки
  for i:=1 to length(s) do //идем по строке
   if s[i]=’a’ then k:=k+1; {если i-ый символ а, тогда увеличиваем счетчик k}
  Memo1.text:=IntToStr(k) //вывод результата
end;


Задания для самостоятельной работы:
1.Дана строка s. Найти количество вхождений букв a,b,c,d в ней.
2.Найти количество цифр в строке.
3.Сцепить несколько строк в одну.
4.Из данной строки выбрать цифры и сформировать из них новую строку.
5.Найти количество слов, начинающихся на букву с.
6.Подсчитать количество слов в строке.
7.Определить начинается и заканчивается ли слово одной буквой.
8.Удалить каждую четную букву в строке.
9.Проверить одинаковое ли число открытых и закрытых скобок в строке.

вівторок, 4 жовтня 2011 р.

Рисование на форме

Когда пользователь нажимает одну из кнопок мыши, указатель которой находится над формой  (или над компонентом), Windows посылает приложению несколько сообщений.  Для написания кода,  откликающегося на эти сообщения, Delphi  определяет несколько событий.  Основных событий два: OnMouseDown, которое происходит при нажатии одной из кнопок мыши, и OnMouseUp, которое происходит при освобождении кнопки.   Еще одно важное системное сообщение связано с перемещением мыши – сообщение OnMouseMove.

Событие OnClick также доступно и в форме. Его основной смысл состоит в том, что левая кнопка мыши нажимается и отпускается над одним и тем же окном или компонентом. Однако в период между этими двумя действиями курсор может переместиться за пределы окна или компонента,  причем левая кнопка мыши будет удерживаться нажатой. Если вы в определенной позиции нажмете кнопку мыши, а затем переместите мышь в другое место и отпустите кнопку, то щелчок не произойдет.  В этом случае окно получает только сообщение о нажатии, несколько сообщений о перемещении и сообщение об освобождении.   

События, связанные с мышью

Метод,  соответствующий событию OnMouseDown,  имеет несколько параметров:  procedure TForm1.FormMouseDown   (Sender : TObject ;  Button : TMouseButton ;    Shift : TShiftState ; X,Y : Integer ) ;  Кроме обычного параметра Sender, указывающего, на каком компоненте произошло нажатие, здесь присутствуют еще четыре

 1) Button – показывает, какая из трех кнопок мыши была нажата. Возможные значения: mbRight, mbLeft, mbCenter.  

2) Shift – показывает, какие влияющие на мышь клавиши были нажаты при возникновении события. Такой клавишей может быть Alt, Ctrl или Shift,  нажатая вместе с самой кнопкой мыши.  Данный параметр имеет тип множества, т.к. несколько клавиш могут быть нажаты одновременно. Это означает, что при анализе условия вы должны применять не проверку на равенство, а оператор in.

3) X  и Y –  показывают координаты позиции мыши относительно клиентской области.  

Рисование в форме

Canvas (холст) –  это область   в форме для рисунка и многих других графических компонентов.  Чтобы получить доступ к пикселям формы,  используйте свойство формы Canvas   и свойство Pixels  для Canvas.

Свойство Pixels – это двумерный массив, соответствующий цветам отдельных пикселов в Canvas. Canvas.Pixels[10,20] соответствует цвету пикселя, который находится на 10 пикселов правее и на 20 пикселов ниже точки отсчета. Обращайтесь с массивом пикселов как с любым другим свойством; чтобы изменить цвет пикселя,  присвойте ему новое значение.  Чтобы определить цвет пикселя, – прочитайте значение.  

Этот класс создает  «канву», на которой можно рисовать чертежными инструментами - пером, кистью и шрифтом. Объекты класса  TСanvas автоматически создаются для всех видимых компонентов,  которые должны уметь нарисовать себя. Они инкапсулируют объекты Font, Pen, Brush, а также многочисленные методы, использующие эти объекты.  

Каждое свойство Canvas имеет воображаемое перо для рисования линий и контуров. Свойство Pen (перо) определяет цвет и размер линий и границ фигур. Свойствами пера являются его цвет, размер  (если это сплошная линия)  или стиль.  Работая с пером, вы можете прочитать  (но не изменить)  его текущую позицию  (свойство PenPos). 

Позиция пера определяет исходную точку следующей линии,  которую программа может нарисовать с помощью метода LineTo. Для изменения позиции вы можете применить метод MoveTo канвы.  

Свойство Brush (кисть)  определяет цвет очерченной поверхности.  Кисть используется для   закрашивания замкнутых фигур. Свойствами кисти являются ее цвет, стиль и иногда растровое изображение.  

Свойство Font  определяет шрифт,  который используется методом холста TextOut  для написания текста в форме. Шрифт имеет имя,  размер,  стиль, цвет и т.п.  

Черчение и рисование

♦ Черчение –  вы обращаетесь к канве и вызываете некоторые ее методы.  Поскольку изображение не сохраняется, форма может частично или целиком потерять свое содержимое  (при закрытии окна формы другим окном или при уменьшении размера окна формы ).  

♦ Рисование – это технология, которая позволит приложению перерисовывать всю ее поверхность при любых возможных условиях.  Для вызова перерисовки можно использовать методы Invalidate, UpDate, ReFresh и Repaint.  

Порядок выполнения работы

Задание № 1

1. После запуска DELPHI необходимо создать новое приложение (если оно не создано автоматически)  с помощью меню File\New Application.  Далее необходимо создать свою папку, в которой нужно сохранить проект и модуль.    

2. Поместить в форму меню Color (на странице Standart Палитры Компонентов есть объект MainMenu) c командами PenColor и BrushColor,  которые будут соответственно изменять цвет пера и кисти с помощью стандартной диалоговой панели.

 В форме реализовать согласно варианту индивидуального задания рисование окружностей,  эллипсов и прямоугольников различных размеров и цветов с помощью мыши,  используя свойство Canvas  формы.   

Варианты индивидуальных заданий

Вариант 1
Реализовать рисование так,  чтобы по нажатию мыши  (щелкая левой кнопкой и удерживая ее при перемещении мыши по горизонтали и вертикали)  рисовался эллипс нужного размера и цвета, а используя ту же технологию и удерживая клавишу SHIFT, можно было рисовать прямоугольники необходимого размера и цвета. 

Вариант 2  
Реализовать рисование так,  чтобы по нажатию мыши  (щелкая левой кнопкой и, удерживая ее при перемещении мыши по горизонтали и вертикали) рисовалась окружность произвольного радиуса и цвета, а используя ту же технологию и удерживая клавишу ALT,  можно было рисовать отрезки различной длины и цвета.   

Вариант 3
Реализовать рисование так,  чтобы по нажатию мыши  (щелкая левой кнопкой и удерживая ее при перемещении мыши по горизонтали и вертикали) рисовалась окружность произвольного радиуса, а щелкая правой кнопкой мыши и удерживая ее, можно было нарисовать эллипс любого размера и цвета.  

Вариант 4  
Реализовать рисование так,  чтобы по нажатию мыши  (щелкая левой кнопкой и удерживая ее при перемещении мыши по горизонтали и вертикали)  рисовались отрезки произвольной длины и цвета,  а используя ту же технологию и удерживая клавишу CTRL, можно было рисовать прямоугольники различного размера и цвета.   
Вариант 5  
Реализовать рисование так,  чтобы по нажатию мыши  (щелкая левой кнопкой и удерживая ее при перемещении мыши по горизонтали и вертикали) рисовалась окружность произвольного радиуса, а щелкая правой кнопкой мыши и удерживая ее можно было нарисовать квадрат любого размера и цвета.  

Некоторые  подсказки для реализации этой задачи

  1. Запишите следующий код для события OnMouseDown:  
if Button = mbLeft then
     begin
       Center.X := X;
       Center.Y := Y;
         if ssShift in Shift then
         Circle := False
       Else
         Circle := True;
     end;  

Переменна формы Circle типа Boolean определяет вид фигуры. Значения координат центра фигуры записываются в переменную формы Center  типа TPoint.
Это будет выглядеть так:  
var    Form1: TForm1;
    Center, Radius: TPoint;
    Circle: Boolean;

2. Запишите следующий код для события OnMouseUp :
  Radius.X := abs(Center.X-X);
  Radius.Y := abs (center.Y-Y);
     if Circle then
         Canvas.Ellipse(Center.X-Radius.X, Center.Y-Radius.Y, Center.X+Radius.X, Center.Y+Radius.Y)
     Else
         Canvas.Rectangle(Center.X-Radius.X, Center.Y-Radius.Y, Center.X+Radius.X, Center.Y+Radius.Y);

3. Запишите следующий код для события  OnMouseMove:
  Caption: =Format ('Координаты: x=%d, y=%d ' , [X, Y]);

 Запустите приложение.  Если все сделано правильно,  то вы будете наблюдать изменение координат в заголовке формы при продвижении мыши, сможете рисовать окружности и эллипсы нужного размера  (щелкая кнопкой и удерживая ее при перемещении мыши по горизонтали и вертикали);  сможете рисовать прямоугольник нужного размера,  используя ту же технологию и удерживая клавишу Shift.

Задание № 2  
Начиная с оператора if,  код для события OnMouseUp  перенести в код для события OnPaint.  
1.  В код для события OnMouseUp вставить в конце вызов метода Invalidate ( который вызывает косвенно метод FormPaint, связанный с событием OnPaint). 
Это будет выглядеть так:  
begin  Radius.X:=abs(Center.X -X);  
Radius.Y:=abs(Center.Y-Y);
    Invalidate;
  end;  
2.  Запустить приложение.  При правильном выполнении всех инструкций, в форме будет рисоваться только одна фигура.

3. Выполните первое задание для компонента PaintBox.     
На странице System Палитры Компонентов есть объект TPaintBox, который можно использовать для построения приложений типа графического редактора или,  например,  в качестве места построения графиков.  Никаких ключевых свойств, кроме CanvasTPaintBox не имеет, собственно, этот объект является просто канвой для рисования. Важно, что координаты указателя мыши,  передаваемые в обработчики соответствующих событий (OnMouseMove  и др.),  являются относительными,  т.е.  это смещение мыши относительно левого верхнего угла объекта TPaintBox,  а не относительно левого верхнего угла формы.  
4. Изучите возможности компонента Shape.    
На странице Additionally Палитры Компонентов есть объект TShape. TShape - простейшие графические объекты на форме типа круг, квадрат и т.п. Вид объекта указывается в свойстве Shape. Свойство Pen  определяет цвет и вид границы объекта. Brush  задает цвет и вид заполнения объекта.  Эти свойства можно менять как во время дизайна, так и во время выполнения программы.  

середа, 28 вересня 2011 р.

Лабораторная работа 3 - дополнительные компоненты



1.  Добавьте в существующий проект, который вы делали на предыдущем занятии, новую форму (командой Файл|Создать|Форма). Сохраните новую форму как Form2. Измените заголовок формы (свойство Caption) на  «Страница «Дополнительная». Установите ее свойство Position равным poScreenCenter.
2.      В форме StandartTab в список Uses добавьте модуль Addition. Для кнопки Button4  установите свойство Enable равным True. Для ее события OnClick введите код
procedure TForm1.Button4Click(Sender: TObject);
begin
  Form1.Hide; // Спрятать форму
  Form2.Show;// Показать форму
end;
Метод Hide  устанавливает свойство компонентов Visible равным False. Метод Show  устанавливает свойство формы Visible равным True и помещает  форму на передний план.
В справке найдите методы BringToFront и ShowModal. Какое их назначение?
Откомпилируйте проект. Delphi предложит включить Unit2 в Unit1 для обеспечения связи между ними. Согласитесь, а затем, после выключения приложения, поределите, что изменилось в тексте Unit1.
3.   Разместите на форме компонент Bevel, а на нем – три кнопки BitBtn.
Эти компоненты позволяют разместить как текст надписи, так и изображение (битовую матрицу). Можно с помощью редактора изображений (команда Сервис|Image Editor) самостоятельно создать файл *.bmp либо выбрать из готовой коллекции. Для этого вызовите свойство Glyph, откройте папку C:\Program Files\Common Files\Borland Shared\Images\Buttons и выберите подходящее по Вашему мнению изображение.
       Для BitBtn3 можно выбрать стандартное изображение. Для этого установите свойство кнопки Kind=bkClose. Проследите, что произойдёт с видом кнопки? Просмотрите другие стандартные типы кнопок.
4.   Для BitBtn1 в событие OnClick введите код:
procedure TForm2.BitBtn1Click(Sender: TObject);
begin
  Form1.Show;
  Form2.Hide;
end;
5.   Для BitBtn2  свойство Enabled=False
6.    Для BitBtn3 в событие OnClick введите код:
procedure TForm2.BitBtn3Click(Sender: TObject);
begin
  Form1.Close;
end;
7.    Для правильной работы приложения в событие OnClose для формы2 добавьте код:
procedure TForm2.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  Application.Terminate; // Закроется не только форма, но и очистится память
end;
8.  Добавить два компонента SpeedButton. Такие кнопки могут иметь рисунок, выглядеть нажатыми и работать в режиме «Нажата одна из группы». Для этого установите их свойство GroupIndex=1. Установите свойство Glyph для SpeedButton1 из файла Skylin16.bmp, а для SpeedButton2 из файла globe.bmp. Для SpeedButton1 установите NumGlyphs=1, а для SpeedButton2 - NumGlyphs=2. Свойством Margin  “подгоните” рисунок по центру кнопки.
Что означает свойство Flat?  Для SpeedButton1 введите подсказку, которая возникает при прохождении курсора мыши над компонентом: установите свойство ShowHint=True, в свойство Hint введите любой текст.
9.  Слева от SpeedButton1 добавьте компонент Shape и установите свойствa Shape=stEllipse; Pen.Color:=clGreen; Brush.Color:=clLime.
10.  Справа от SpeedButton2 добавьте компонент Image. Дважды щелкните на свойстве Picture  и загрузите файл пиктограммы Earth16.icoПодгоните размеры всех кнопок. Введите:
procedure TForm2.SpeedButton1Click(Sender: TObject);
begin
  if SpeedButton1.Down then
  begin
    Image1.Visible:=False;
    Shape1.Brush.Color:=clRed;
  end;
end;
procedure TForm2.SpeedButton2Click(Sender: TObject);
begin
if SpeedButton2.Down then
  begin
    Image1.Visible:=True;
    Shape1.Brush.Color:=clLime;
  end;
   end;
11. Добавьте компонент Label, переименуйте его в «Введите номер телефона», и компонент MaskEdit. Дважды щелкните на его свойстве EditMask и выберите тип Phone, сформатируйте его под принятый в Кировограде формат.
12. Добавьте компонент StringGrid. Установите количество столбцов и строк сетки: RowCount=5, ColCount=5. Установите FixedCols и FixedRows равными 0. Подберите размер сетки как на рис. Добавьте компонент Button с именем «Заполнить сетку» и введите для нее код:
procedure TForm2.Button1Click(Sender: TObject);
var x,y:integer;
begin
  with StringGrid1 do
    for x:=0 to ColCount-1 do
      for y:=0 to RowCount-1 do
        Cells[x,y]:='Coord.'+IntToStr(x)+'-'+IntToStr(y);
end;
13. Добавьте из страницы Dialogs невизуальный компонент OpenDialog, метку с именем «Имя файла», компонент Edit и кнопку с именем Обзор… и кодом
procedure TForm2.Button2Click(Sender: TObject);
begin
  OpenDialog1.FileName:='*.*';
  if  OpenDialog1.Execute then
    Edit1.Text:=OpenDialog1.FileName;
end;
Протестируйте Ваше приложение. Для защиты работы необходимо уметь объяснить, как оно работает и вносить небольшие изменения.

четвер, 22 вересня 2011 р.

Лабораторная работа №2 Страница стандартных компонентов


1.      Сохранить новый проект в папке «ЛР2»
2.      Изменить заголовок формы (свойство Caption) на «Страница Стандартных компонентов.
3.      В верхнюю часть формы добавить компонент TРanel (как показано на рис.). Используем ее как заголовок для формы. Установить свойство Caption как «Демонстрация страницы VCL «Стандартная».
4.      Добавить компонент TLabel, переименовав его согласно рис.
5.      Ниже метки расположить компонент TEdit, очистить его свойство Text.
6.      Добавить компонент TMemo. Вызвать справку по компоненту TMemo, изучить его свойства Align, ScrollBars, WordWrap, WantReturns. Попробовать задавать им различные значения, откомпилировать проект и сравнивтаь результаты. Удалить из свойства Lines текст, добавить несколько строк своего текста.
7.      Добавить компонент TRadioGroup, изменить заголовок согласно рис. В свойство Items ввести названия 4-х кнопок. Свойство ItemIndex указывает на номер кнопки, выбранной по умолчанию (-1 ничего не выбрано, 0 – выбрана 1-ая и т.д.). В код обработчика события OnClick ввести

procedure Form1.RadioGroup1Click(Sender: TObject);
begin
if RadioGroup1.ItemIndex=0 Then Form1.Color:=clSilver;
if RadioGroup1.ItemIndex=1 Then Form1.Color:=clBlue;
if RadioGroup1.ItemIndex=2 Then Form1.Color:=clYellow;
if RadioGroup1.ItemIndex=3 Then Form1.Color:=clRed;
end;
8.      Добавить компонент TScrollBar. В событие OnChange дабавить код

procedure Form1.ScrollBar1Change(Sender: TObject);
begin
RadioGroup1.ItemIndex:=ScrollBar1.Position;
end;
9.      Добавить компонент TСomboBox.
10.  Добавить компонент  TListBox, установить свойство IntegralHeigt=True (выяснить, что это означает). Ввести несколько (>3) строк.
11.  Добавить компонент TGroupBox. Добавить в группу четыре TButton, две TRadioButton, две TCheckBox. Изменить заголовки этих компонентов согласно  рис.
У одной из RadioButton установить свойство Checked=True.
12.  Для Button1 в код обработчика события OnClick ввести

procedure Form1.Button1Click(Sender: TObject);
var
   x:integer;
begin
   Memo1.Clear; //Очистка содержимого Memo
   Memo1.Lines.Add(Edit1.Text); //скопировать в Memo текст из Edit1
   Memo1.Lines.Add(ComboBox1.Text); //скопировать в Memo текст из ComboBox
   //скопировать в Memo1 выбранный текст из окна списка ListBox1
   Memo1.Lines.Add('ListBox Строка #'+IntToStr(ListBox1.ItemIndex+1));
   if RadioButton1.Checked then Memo1.Color:=clWhite;
   if RadioButton2.Checked Then Memo1.Color:=clAqua;
end;

13.  Для Button2 в код обработчика события OnClick ввести

procedure Form1.Button2Click(Sender: TObject);
begin
   if CheckBox1.Checked then Form1.Font.Style:=[fsItalic]
                              else Form1.Font.Style:=[ ];
   if CheckBox2.Checked then Form1.Font.Color:=clPurple
                              else Form1.Font.Color:=clBlack;
end;

14.  Для Button3 в код обработчика события OnClick  ввести

procedure Form1.Button3Click(Sender: TObject);
begin
   Close;
end;

15.  Код для TButton4 пока отсутствует. Временно установить ее свойство Enable=False
16.  Добавить компонент TMainMenu (невизуальный). Двойным щелчком на свойстве Items запустить конструктор меню (либо из контекстного меню). Инспектор объектов при этом изменится. Установить свойство Caption=&Файл (амперсант& сообщает, что следующую за ним букву нужно подчеркнуть и включить ее в комбинацию быстрых клавиш. Здесь – Alt+Ф).
В выпадающем меню добавить пункт &Выход. Рядом с &Файл добавить пункт &Помощь с выпадающим списком из двух команд: По&мощь и &О программе… Разделить их между собой чертою, для чего добавить дефис (-) в свойство Caption строки меню сразу под По&мощь. Для пункта меню &Выход ввести код обработчика события Button3Click. Для команды &О программе… вывести окно сообщения со своими данными (используйте функцию ShowMessage).
17.  Добавить компонент TPopupMenu. Запустить конструктор меню, добавить команды «Готово» и «Обновить шрифты». Выбрать для них события, аналогичные событиям кнопок. Свяжите созданное меню с формой: в свойстве формы PopupMenu укажите PopupMenu1.
18.  Протестировать приложение.
19.  Для защиты работы необходимо уметь ответить на вопросы по своёствам и методам используемых в ней стандартных компонентов.

понеділок, 22 серпня 2011 р.

С кем я буду работать в 2011-2012 учебном году

В I семестре я буду вести следующие дисциплины:
Информатика - 21 рота
Информационные системы и технологии - 41 рота
Информационные технологии - 61 рота
Организация баз данных и знаний - 68 рота
Основы программирования и алгоритмы. Языки программирования - 69 рота.

Во II семестре:
Информационные технологии - 61 рота
Организация баз данных и знаний - 69 рота
Основы программирования и алгоритмы. Языки программирования - 60 рота.

пʼятниця, 8 липня 2011 р.

Нужны ваши голоса!

Моя новая игра на конкурсах Kongregate и NewGrounds:
http://www.kongregate.com/games/mofunzone/i-wanna-win
http://www.newgrounds.com/portal/view/574141

Поддержите, пожалуйста

понеділок, 27 червня 2011 р.

I Wanna Win!


Наконец-то я зарелизил свою новую флеш-игру игру - I Wanna Win!


В принципе, всё было готово в конце апреля, но то одно, то другое - уже и треть лета прошла.

В игре 25 уровней, в каждом - своя миниигра на меткость, внимание, память, логику. Сейчас игра доступна по ссылке, а через неделю пойду бороться за приз от крупных порталов. Надеюсь на вашу поддержку :)

субота, 14 травня 2011 р.

Решение уравнений методом половинного деления.

Эта тема выносится на рубежный контроль и в экзаменационные вопросы.
Дано уравнение
Необходимо найти его корень с точностью до 4 знаков после запятой.
Как бы мы вычисляли корень вручную:
Оцениваем, что корень уравнения лежит между нулём и десятью, (т.к. и ). Значит 0<х<10. Находим середину интервала: (10+0)/2=5 и подставляем пятёрку в уравнение вместо х.
. Значит 0<х<5. Опять находим середину: (0+5)/2=2,5 и пробуем:
. Значит 0<х<2,5. Снова находим середину: (0+2,5)/2=1,25 и подставляем
. Т.к. теперь знак <, то двигается левая граница промежутка и 1,25<х<2,5. Теперь подставляем в равнение число (1,25+2,5)/2=1,875
и 1,25<х<1,875. Далее будем получать такие промежутки:
1,5625<х<1,875
1,5625<х<1,7188
1,6407<х<1,7188
1,6798<х<1,7188
1,6798<х<1,6993
1,6798<х<1,6896
1,6847<х<1,6896
1,6872<х<1,6896
1,6872<х<1,6884
1,6878<х<1,6884
1,6878<х<1,6881
1,6878<х<1,6880
1,6879<х<1,6880
Следовательно, x=1,6879….
Теперь запишем наше решение в виде алгоритма.
  1. Нужно найти два числа (А и В) такие, чтобы корень уравнения находился между ними. Эти числа будет вводить пользователь.
  2. Нужно определить, неравенство с каким знаком (больше или меньше) получится из уравнения, если в него подставить число А (пусть это будет переменная Z, она будет равна -1 при знаке < и 1 – при знаке >)
  3. Нужно найти точку С, середину отрезка [A;B] по формуле C=(A+B)/2 и подставить его в уравнение.
  4. Если знак получившегося неравенства будет таким же, как и при подстановке в него числа А, то корень находится на промежутке [C;B], в противном случае корень – на промежутке [A;C]. Значит, в первом случае левая граница промежутка становится равной С: А, а во втором – правая: В=С
  5. Если разность B-A больше требуемой точности (для четырёх знаков после запятой это 0,0001), то перейти к пункту 3 алгоритма, иначе – вывести решение.
Теперь можно писать программу
10 PRINT “RESHAEM URAVNENIJE X^3+9X=20”
20 PRINT “VVEDITE LEVUJU GRANICU PROMEZHUTKA”
30 INPUT A
40 PRINT “VVEDITE PRAVUJU GRANICU PROMEZHUTKA”
50 INPUT B
60 IF A^3+9*A>20 THEN Z=1 ELSE Z=-1
70 C=(A+B)/2
80 Y=C^3+9*C
90 IF (Y-20)*Z>0 THEN A=С ELSE B=C
100 PRINT A;”<х<”;B
110 IF (B-A)>0.0001 THEN GOTO 70
120 PRINT “X=”;(A+B)/2
Пояснения:
Строки 10-50 – ввод краёв интервала, где находится корень уравнения (п.1. алгоритма)
Строка 60 – находим знак неравенства в левом краю промежутка (п.2. алгоритма)
Строка 70 – находим середину отрезка
Строка 80 – подставляем это значение в уравнение (п.3. алгоритма)
Строка 90 – когда выражение (Y-20)*Z будет больше нуля? Тогда, когда Y>20 и Z=1 и когда Y<20 и Z=-1, т.е. тогда, когда знак неравенства при подстановке в него числа С такой же, как и при подстановке числа А. Это и требовалось в п.4. алгоритма
Строка 100 – выпечатываем, каким путём мы подбираемся к корню
Строка 110 – проверка, не получена ли уже требуемая точность (п.5 алгоритма)
120 – печатаем результат, ещё раз усреднив промежуток.
Для того, чтобы программа решала другое уравнение с другой точностью, нужно внести изменения в строки 10, 60, 80, 90 и 110
Задания для самостоятельной работы
уравнение
точность
1
x-10sinx=15
5 знаков после запятой
2
x+2cosx=3
3 знака после запятой
3
4 знака после запятой
P.S. По научному метод половинного деления называется «дихотомия», так что выполнив работу вы с полным правом можете употреблять это мудрёное слово :)