Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Самое доступное обучение Delphi (от са-а-амого начала)


Информационный Канал Subscribe.Ru

              Здравствуйте, уважаемые подписчики. Сегодня выходит третий (юбилейный!!!) выпуск нашей великолепной рассылки J и поэтому достойно отметим это торжественное событие, с двойным усердием взявшись за изучение Delphi.

Сегодня:

1.Операторы ветвления.

2.Небольшая программка для практики.

Операторы ветвления.

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

If -  если

Then -тогда (то)

Else - иначе

Вот так будет выглядеть схема условного перехода:

If <наше условие> then <если условие выполняется, то выполняются действия стоящие здесь> else <если не выполняются, то выполняется здешний код>

Пример:

Пусть у нас есть переменные A = 1 и B = 0, тогда следуюйщий фрагмент:

If a = 1 then a: = 0 else a: = 1;

If b = 1 then b: = 0 else b: = 1;

Даст результат: a=0; b=1, так как в первом случае а действительно равно 1, следовательно этой переменной присваивается значение 0, тогда как в случае с переменной b условие не выполняется, следовательно выполняется код, стоящий после служебного слова else. (Кстати, следует запомнить что перед else точка с запятой не ставится)

           Как уже было сказано, после слова then идут инструкции, выполняющиеся в случае истинности условия, а в случае обратном выполняется код стоящий за ключевым словом else. Так вот, мы конечно же можем и после then и после else прописывать столько действий сколько пожелаем, но тут есть нюанс: если действий больше одного, тогда придется их все заключить в блок begin..end.

Пример:

If a=1 then a:=1; b:=0; else ... неправильно.

If a=1 then begin a:=1; b:=0; end; else... тоже неправильно.

If a=1 then begin a:=1; b:=0 end else... теперь правильно.

           Условий также может быть множество и формироваться они могут по принципу И или ИЛИ. То есть в первом случае для истинности общего условия необходима истинность обоих условий, а во втором – достаточно и одного. На английском это будет соотвественно and и or.

Пример:

If (a = 1) and (b = 0) then a := b else b := a;

If (a = 1) or (b = 0) then a := b else b := a;

          В первом случае для того, чтобы A получило значение B необходимо, чтобы А равнялось одному и В равнялось нулю, тогда как во втором достаточно любого из этих условий.

 

           Осталось еще упомянуть о том, что операторы условного перехода могут быть вложены друг в друга, то есть: если выполняется это, то проверь, выполняется ли то, и если выполняется, то тогда только делай

На практике это будет выглядеть так:

If a = 1 then begin

If b = 0 then a := b;

End;

            Как видно, мы здесь опустили оператор else. Так тоже можно делать, тогда в случае невыполнения любого из этих условий просто не выполнится ничего вообще.

 

            Ну вот, теперь можно применить операторы условного перехода на практике.

            Для начала напишем программу, которая будет изменять цвет какой-нибудь надписи при наведении на нее курсора. Для этого во-первых придется познакомиться с функцией Random, а во-вторых, узнать, где в программе объявляются переменные и вот наверное и все.

            Итак, функция Random. Эта функция очень часто пригождается начинающим программистам и делает такое действие, как выдача случайного числа в определенном диапазоне. То есть если вы написали, например, A:= Random(10), то ваша переменная А может получить любое значение в интервале от 0 до 9.

            Теперь о объявлении переменных. Сегодня и вообще в ближайшее время мы будем пользоваться общедоступными (глобальными) переменными. Объявляются они после служебного слова Var в разделе Interface, чуть выше слова implementation. (тип взять лучше всего простой -integer)

            Ну вот, наконец, приступим к написанию самой программы. Для начала разместим на форме компонент Label – простую надпись. Отрегулируем ее размеры по желанию и затем в инспекторе объектов на вкладке событий находим событие OnMouseMove.  Создаем шаблон для этого события. Все, теперь необходимо определить, что же будет делать наш текст при перемещении над ним курсора. Нам нужно, чтобы при каждом таком перемещении наша надпись меняла цвет случайным образом.  Для начала хватит и трех основных цветов. Запускаем генератор случайных чисел командой Randomize; и пишем ниже а:= random(3); Переменную A необходимо также обьявить в разделе Interface после слова var. Теперь при перемещении курсора наша переменная A будет всякий раз принимать новое значение. (или 0, или 1, или 2);

Осталось связать цифры с цветами. Вот и воспользуемся для этого операторами условного перехода.

if a=0 then label1.Font.Color := clRed;

if a=1 then label1.font.Color := clBlue;

if a=2 then label1.font.Color := clGreen;

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

unit Unit1;

 

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls;

type

TForm1 = class(TForm)

Label1: TLabel;

procedure Label1MouseMove(Sender: TObject; Shift: TShiftState; X,

Y: Integer);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

a:integer;

implementation

{$R *.dfm}

procedure TForm1.Label1MouseMove(Sender: TObject; Shift: TShiftState; X,

Y: Integer);

begin

randomize;

a:=random(3);

if a=0 then label1.Font.Color:= clRed;

if a=1 then label1.font.Color:= clBlue;

if a=2 then label1.font.Color:= clGreen;

end;

end.

 

              Вот собственно и все, теперь можно и проверять уже. Кстати, если кто не помнит, то запись label1.Font.Color := clRed; означает то, что свойству color свойства font компонента с именем label1 присваивается значение красного цвета. Так что, если вы по каким-то своим соображениям изменяли имя лейбла, то следует естественно вместо Label1 ввести имя вашего компонента.

             Вот и все на сегодня. В следующий раз встречаемся как всегда, через неделю.J .

 

Как всегда приглашаем посетить наш сайт WWW.image.h12.ru

Вопросы по теме можно направить на ящик bakster@rin.ru.

 


http://subscribe.ru/
http://subscribe.ru/feedback/
Подписан адрес:
Код этой рассылки: comp.soft.prog.delph007delph
Отписаться

В избранное