В delphi укажите инструкцию условия

  Здравствуйте, в этом уроке я познакомлю вас с конструкцией if…then…else и мы напишем программу проверки логина и пароля!
И так, приступим! Конструкцией if…then…else можно проверять какое-нибудь условие, дословно она переводится так: если…то…иначе.

Конструкция имеет такой вид:

if (условие) then
begin
//Если условие верно, выполняем действия
end
else
begin
//Если условие не верно, выполняем действия
end;

Кстати, после двойного слеша «//» пишется комментарий. Он никак не влияет на код программы, потому что компилятор его игнорирует.

Теперь я попытаюсь вам объяснить всё на практике. Открываем Delphi и создаем новый проект.
Кидаем на форму уже знакомые нам компоненты Button, Label 3 штуки и еще не знакомый Edit 2 штуки (он находится правее от компонента Label).

Edit, это Ученик. Ученик, это Edit. Вот я вас и познакомил :)
Извините за мой глупый юмор, Edit это обычное поле ввода, которое встречается в повседневной жизни, например при регистрации на сайте.
Располагаем компоненты так, как показано на рисунке:

Пример формы

Переходим в инспектор объектов и изменяем свойства у компонентов по очереди:

  • Label1.Caption = ‘Логин’
  • Label2.Caption = ‘Пароль’
  • Label3.AutoSize = False Выставив значение False у свойства AutoSize, мы запретили автоматически менять размер компоненту
  • Label3.Caption = ‘ ‘ Когда мы стёрли весь текст, размер компонента не изменился
  • Edit1.Text = ‘ ‘
  • Edit2.Text = ‘ ‘
  • Button1.Caption = ‘Авторизоваться’

Сейчас выделяем компонент Label3 и растягиваем его ширину на всю форму:

Пример формы

Нужно изменить еще одно свойство у компонента Label3, оно называется Alignment и отвечает за выравнивание текста по центру. Выставляем значение taCenter.
Теперь весь текст будет появляться в этом лейбле по центру.

Мы завершили с настройкой формы, теперь создаем обработчик OnClick на нашей кнопке.
И так, принцип работы нашей программы: если логин и пароль верны, то оповещаем об этом, иначе — выдаем ошибку.

Начнем с простого — проверка логина:

procedure TForm1.Button1Click(Sender: TObject);
begin
if Edit1.Text = 'admin' then //Если логин верный, то...
begin
Label3.Caption:='Вы авторизованны!'; //Авторизовываем пользователя
end
else //Иначе
begin
Label3.Caption:='Логин не верный!'; //Выдаем ошибку
end;
end;

Компилируем программу и вводим в наш Edit1 слово admin, нажимаем на кнопку и вуаля — Label3 оповестит о том, что мы авторизованы,
теперь напишите что-нибудь другое в Edit1 и нажмите на кнопку.
Label3 оповестит, что логин не верный.

Идем дальше — проверяем логин и пароль. Так как нужно проверять 2 условия, каждое из условий нужно окружить скобками, а между скобок напишем ключевое слово and:

procedure TForm1.Button1Click(Sender: TObject);
begin
if (Edit1.Text = 'admin') and (Edit2.Text = 'pass') then //Если логин И пароль верны то...
begin
Label3.Caption:='Вы авторизованны!'; //Авторизовываем пользователя
end
else //Иначе
begin
Label3.Caption:='Логин ИЛИ пароль не верный!'; //Выдаем ошибку
end;
end;

Компилируем программу и проверяем правильность работы кода.

Идем дальше — так же проверяем логин и пароль, но теперь между условиями напишем ключевое слово or вместо and это означает что авторизация пройдет если верно хоть одно из условий:

procedure TForm1.Button1Click(Sender: TObject);
begin
if (Edit1.Text = 'admin') or (Edit2.Text = 'pass') then //Если логин ИЛИ пароль верны то...
begin
Label3.Caption:='Вы авторизованны!'; //Авторизовываем пользователя
end
else //Иначе
begin
Label3.Caption:='Логин И пароль не верны!'; //Выдаем ошибку
end;
end;

Вернемся к коду, где использовали ключевое слово and между условиями. У нас там выдается ошибка ‘Логин ИЛИ пароль не верный’, если пользователь ошибся.
Давайте сделаем ошибку конкретней, чтобы она сообщала, что именно не верно, логин или пароль? Для этого сотрем нашу не конкретную ошибку и добавим еще 3 конструкции if…then.
Вместо знака равенства в условии, мы будем использовать знак не равенства <>

procedure TForm1.Button1Click(Sender: TObject);
begin
if (Edit1.Text = 'admin') and (Edit2.Text = 'pass') then //Если логин И пароль верны то...
begin
Label3.Caption:='Вы авторизованны!'; //Авторизовываем пользователя
end
else //Иначе
begin
if Edit1.Text <> 'admin' then //Если логин не верный
begin
Label3.Caption:='Логин не верный!'; //Выдаем ошибку
end;
if Edit2.Text <> 'pass' then //Если пароль не верный
begin
Label3.Caption:='Пароль не верный!'; //Выдаем ошибку
end;
if (Edit1.Text <> 'admin') and (Edit2.Text <> 'pass') then //Если логин и пароль не верны
begin 
Label3.Caption:='Логин и пароль не верны!';  //Выдаем ошибку
end;
end;
end;

Компилируем и проверяем! У меня всё работает, а у вас? Пишите в комментариях, если возникли трудности.

Да, чуть не забыл, на последок хочу вам показать еще один компонент, так называемый XPManifest, он находится на вкладке Win32 (самый последний компонент на этой вкладке).
XPManifest восстанавливает вид всех компонентов из классического вида в тот, который сейчас используется в системе.
Добавив его на форму, мы увидим прекрасные кнопочки :)

Пример работы XPManifest

Задание на закрепление: дополнить в программу несколько пользователей со своими паролями.

Ну вот и всё! Удачи!
Встретимся в следующем уроке!

Чтобы понять, что означает условный оператор If и вся конструкция If then else, ее просто нужно перевести на русский язык.

If then… else…, —  это тоже самое, если бы мы сказали по русски:  

Если… Тогда… Иначе…

Оператор If — не зря назван условным, он предназначен для работы с условиями. К программированию на Delphi это имеет следующее отношение…

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

если a<>b        тогда c=d+e          иначе c=d*e ,

Тут как раз к нам на помощь и приходит конструкция, If then else, — призванная реализовать нашу задумку.

Записываем, теперь то же условие, только уже на языке понятном программе:

var

a,b,c,d,e: Integer;

begin  

if a<>b then //если a<>b тогда

с:=d+e

else //иначе, выполнить действия ниже

c:=d*e;

end;

Кстати, применение секции else  в нашей конструкции, не является обязательным, если мы например хотим сформулировать условие, без else, например:

var

a,b,c,d,e: Integer;

begin

if a<>b then // если a<>b тогда с=d+e иначе — ничего не делать;

с:=d+e;

end;

Этот пример, тоже будет работать. Здесь только важно обратить внимание на синтаксис. Если мы применяем постусловие else, то после выражения, за которым оно следует, знак — ; (точка с запятой) — не ставится. Если мы не применяем постусловие — else, тогда наоборот знак — ; (точка с запятой) — ставится обязательно.

Если нужно, чтобы после проверки условия выполнился — ряд операций, тогда этот ряд после «if — then» нужно заключить в конструкцию «begin — end». Например мы хотим, чтобы после проверки  if a<>b then выполнились не только с:=d+e, но еще f:=f*h, и i:=j/k, тогда пишем код следующим образом:

var

a,b,c,d,e,f,g,h,i,j,k: Integer;

begin

if a<>b then // если a<>b тогда с=d+e иначе — ничего не делать

begin

с:=d+e;

f:=f*h;

i:=j/k;

end;

end;

Если все-таки нужно применить постусловие else, например, в случае, если a<>b — ложно, выполнить — l:=m-k, Тогда после — end, идущего перед else, знак — ; (точка с запятой) — не ставится. См пример ниже:

var

a,b,c,d,e,f,g,h,i,j,k,l,m,k: Integer;

begin

if a<>b then // если a<>b тогда с=d+e иначе — ничего не делать

begin

с:=d+e;

f:=g*h;

i:=j/k;

end

else

l:=mk;

end;

Далее рассмотрим некоторые тонкости.

Например, если в операции  if — then  нам нужно рассмотреть несколько условий, например — если a<>b и z<=0тогда выполнить  с:=d+e; мы эти свои два условия   a<>b и z<=0 объединяем при помощи логической операции and, а сами условия берем в скобки.

var

a,b,c,d,e,z: Integer;

begin

if (a<>b) and (z<=0) then // если a<>b и z<=0, тогда с:=d+e; иначе — ничего не делать

с:=d+e;

end;

Здесь у нас and — означает иа еще можно объединять условия при помощи логических операций or — илиnot — неили других  операций — xor например.

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

если a<>b тогда проверяем если z<=0 тогда c:=d+e; иначе c:=0; Записываем:

var

a,b,c,d,e,z: Integer;

begin

if a<>b then

if z<=0 then // если a<>b и z<=0, тогда с:=d+e; иначе — ничего не делать

с:=d+e

else  // относится к if где — z<=0

c:=0;

end;

В этом примере не все условные операторы имеют постусловие else.  И чтобы понимать к какому из упомянутых дважды в нашем коде — if, относится постусловие else, в Delphi существует правило, — зарезервированное слово else, всегда относится к ближайшему оператору if, которое с else  еще не было связано.


В этом уроке мы познакомимся с условиями. Условие имеет конструкцию if…then…else. Общий вид условия:

if (условие) then
  begin
  //если условие верно, выполняем действия
  end
else
  begin
  //если условие неверно, выполняем действия
  end;

Есть еще неполное условие:

if (условие) then
  //если условие верно, выполняем действия

Теперь напишем программу с условием:

procedure TForm1.Button1Click(Sender: TObject);
var a, b:integer;
begin
  a:=StrToInt(Edit1.Text);
  if a<5 then
    begin
      Edit2.Text:='Число подходит!';
    end
  else
    begin
      Edit2.Text:='Число неправильное!!';
    end;
end;

Таблица операторов

Оператор Значение
< меньше
> больше
= равно
<= нестрогое неравенство
>= нестрогое неравенство
<> не равно

Таблица логических слов

Слово перевод
and и
or или
not не

Давайте теперь напишем игру «Пароль». Суть заключается в том, что нужно назвать правильное слово (другие слова не подойдут).

procedure TForm1.Button1Click(Sender: TObject);
begin
  if Edit1.Text='Яблоко' then //пароль - "яблоко"
    begin
      Edit2.Text:='Пароль - верный!';
    end
  else
    begin
      Edit2.Text:='Пароль - неверный!'; //выдаем ошибку
    end;
end;

Теперь добавим одно слово для пароля, если одно из двух правильных слов будет введено, то пароль верный. Чтобы в условие добавить ИЛИ, нужно между двумя условиями добавить or.

procedure TForm1.Button1Click(Sender: TObject);
begin
  if (Edit1.Text='Яблоко') or (Edit2.Text='картошка') then //пароль - "яблоко" или "картошка"
    begin
      Edit3.Text:='Пароль - верный!';
    end
  else
    begin
      Edit3.Text:='Пароль - неверный!'; //выдаем ошибку
    end;
end;

Изменим условие, теперь нужно ввести два слова, чтобы пароль был верным. Для этого добавим в условие И, вместо or добавим and.

procedure TForm1.Button1Click(Sender: TObject);
begin
  if (Edit1.Text='Яблоко') and (Edit2.Text='картошка') then //пароль - "яблоко" и "картошка"
    begin
      Edit3.Text:='Пароль - верный!';
    end
  else
    begin
      Edit3.Text:='Пароль - неверный!'; //выдаем ошибку
    end;
end;

Операторы выбора if в Delphi

Выбор в точке разветвления алгоритма очередного шага программы может быть реализован при помощи инструкций if и саsе.

Инструкция if — позволяет выбрать один из двух возможных вариантов, инструкция case — один из нескольких.Инструкция if Инструкция if позволяет выбрать один из двух возможных вариантов развития программы. Выбор осущестнляется в зависимости от выполнения условия.

В общем виде инструкция if записывается так:

01.if   then

02.begin

03.

04.

05.end

06.else

07.begin

08.

09.

10.end;

Обратите внимание, что перед else (после end) точка с запятой не ставится.

Выполняется инструкция if следующим образом:

  1.  Вычисляется значение условия (условие — выражение логического типа, значение которого может быть равно True или False).
  2. Если условие истинно (значение выражения условие равно True), то выполняются инструкции, следующие за словом then (между begin и end).

На этом выполнение операции if заканчивается, то есть инструкции, следующие за else, не будут выполнены.

Если условие ложно (значение выражения условие равно False), то выполняются инструкции, следующие за словом else (между begin и end).

Например, если переменная t обозначает тип соединения сопротивлений в электрической цепи (t=l соответствует последовательному соединению, t=2 — параллельному), a ri и г2 — величины сопротивлений, то приведенная ниже инструкция if осуществляет выбор формулы, по которой будет выполнен расчет.

1.if t=l then begin

2.z:=rl+r2;

3.end

4.else

5.begin

6.z: = (rH-r2)/(rl*r2> ;

7.end;

Если в инструкции if между begin и end находится только одна инструкция, то слова begin и end можно не писать.

Например, инструкцию

01.if oCV=3

02.then

03.begin

04.prav:=prav+l;

05.end

06.else

07.begin

08.ShowMessage('Ошибка!');

09.and;

можно переписать так: 

2.if  otv=3 then

3.pcav:=prav+l

4.else

5.ShowMessage('Ошибка!');

Если какое-либо действие должно быть выполнено только при выполнении определенного условия и пропущено, если это условие не выполняется, то инструкция if может быть записана так:

1.if  условие

2.then

3.begin

4.f инструкции, которые надо выполнять,

5.если условие выполняется, истинно )

6.end

Например, инструкция

1.if n=m

2.than с: =C4-1;

увеличивает значение переменной с только в том случае, если значения переменных л и га равны.

Помоги проекту! Расскажи друзьям об этом сайте:

  • 100
  • 1
  • 2
  • 3
  • 4
  • 5

Недавно мы рассказали про язык Delphi — где применяется, что интересного и где он востребован. Теперь перейдём к практике и посмотрим на Delphi изнутри — как он устроен и как на нём программировать. Возможно, уже через пару часов вы начнёте реализовывать свою мечту — писать собственную программу складского учёта. 

👉 Если вы проходили «Паскаль» в школе, то вы вряд ли узнаете что-то новое. В этом сила Delphi — это очень простой в освоении язык с поддержкой ООП и почти всех современных парадигм программирования.

О чём пойдёт речь

Комментарии

Переменные

Ввод и вывод данных с клавиатуры

Присваивание и сравнение

Операторные скобки (составной оператор)

Условный оператор if

Оператор множественного выбора case

Цикл с предусловием for

Циклы с предусловием и постусловием

Процедуры

Функции

В Delphi после каждого оператора ставится точка с запятой. Пропускать её нельзя — это будет ошибка и программа не запустится.

Комментарии

Чтобы поставить комментарий в Delphi, раньше использовали только фигурные скобки. Сейчас для комментариев кроме них можно ставить круглую скобку со звёздочкой или два слеша подряд, но с одной стороны:

{ Это комментарий }
(* Это тоже комментарий
на несколько строк *)
// А вот этот комментарий действует только до конца строки

При этом если после { или (* без пробела идёт знак доллара, то это уже не комментарий, а директива компилятору. Это значит, что мы можем переопределить стандартное поведение на то, которое нам нужно, например выключить проверку выхода значений переменной за границы диапазонов:

{$RANGECHECKS OFF}

А так мы превратим нашу программу в консольную, чтобы вся работа шла в командной строке:

{$APPTYPE CONSOLE}

Переменные

Для описания переменной используют ключевое слово var:

var
        X: Integer;         // переменная целого типа 
        in, out: string;    // две переменных строкового типа 
        result: Double;     // переменная вещественного (дробного) типа

Без слова var сразу использовать переменную не получится: компилятор обязательно проверит, объявили ли вы её заранее или нет. Это сделано для контроля над оперативной памятью.

Ввод и вывод данных с клавиатуры

Чаще всего в Delphi делают программы с графическим интерфейсом, где есть поля ввода и кнопки. В этом случае данные получают оттуда, используя свойства разных компонентов. Но если нужно организовать ввод-вывод в консоли, то для этого используют такие команды:

write('Введите координаты X и Y: '); // выводим на экран строку
read(x,y); // считываем переменные x и y

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

write('Привет!');
write('Это журнал «Код».');
// на экране будет надпись в одну строчку и без пробела: Привет!Это журнал «Код».

Чтобы перенести курсор на новую строку после ввода или вывода, к команде добавляют в конец Ln:

 writeLn('Привет!');
    writeLn('Это журнал «Код».');
    // Привет!
    // Это журнал «Код».

Присваивание и сравнение

В отличие от большинства языков программирования, в Delphi оператор присваивания выглядит как двоеточие со знаком равно:

var x: integer;
...
x:=10;

Если вы видите в коде такое, то почти всегда это будет программа на Delphi или Pascal. Сравнение тоже выглядит не так как везде — одинарный символ равенства, как в математике:

:= ← присваивание

= ← сравнение

== ← а вот такого в Delphi нет

Остальные математические команды и операторы сравнения работают как обычно. Логические сравнения пишутся словами:

not ← НЕ

or ← ИЛИ

and ← И

Операторные скобки (составной оператор)

Во многих других языках границы функций, команд в условии и прочие границы обозначаются фигурными скобками, например в JavaScript:  function fn() {…}.

А вот в Delphi такие границы задаются отдельными словами begin и end и называются операторными скобками, или составным оператором. Они используются для обозначения границ подпрограмм и там, где язык разрешает ставить только одну команду. Чтобы обойти это ограничение, используют операторные скобки. Простой пример: 

if a > b then
begin
что-то полезное
end
else
begin
что-то другое полезное
end

Начало и конец основной программы тоже заключают в операторные скобки.

Условный оператор if

Классический оператор проверки условий, работает так же, как и в других языках:

if <условие> then
<оператор 1>
else
<оператор 2>;

Часть с else — необязательная, если она не нужна, то её можно не писать:

if <условие> then
<оператор 1>;

Так как после then можно ставить только один оператор, то, чтобы поставить больше, используют те самые операторные скобки:

if A > B then
    begin
        C := A;
        writeLn('Первое число больше второго');
        writeLn('Останавливаем проверку');
    end
else
    C := B;

Вкладывать условные операторы можно друг в друга сколько угодно.

Оператор множественного выбора case

Если нам нужно выбрать что-то одно сразу из нескольких вариантов, лучше использовать оператор выбора case, который работает так:

  1. Оператор получает переменную, с которой будет работать, и несколько вариантов её значений.
  2. Затем по очереди проверяет, совпадает ли очередное значение со значением переменной.
  3. Как только находится совпадение — выполняется соответствующий оператор, и case на этом заканчивается.
  4. Если ничего не совпало — то компьютер просто переходит дальше или выполняет то, что написано после else.

Вот как это может выглядеть в коде:

Write('Введите сегодняшнее число');
ReadLn(Day);
  case Day of // начинается оператор множественного выбора
    1..10: Writeln('Это начало месяца');
    11..20: Writeln('Это середина месяца');
    21..31: WriteLn('Это конец месяца');
    else Writeln('Нет такого дня недели');  // что мы делаем, если ничего не подошло
  end; // закончился оператор множественного выбора

Цикл с предусловием for

Особенность этого цикла в том, что мы в нём задаём не условие окончания, а чёткое количество шагов:

for <параметр цикла> := <значение 1> to <значение 2> do <оператор>;

Перевод:

for i := 0 to 99 do что-то полезное;

Логика такая:

  1. Нам нужно заранее объявить переменную цикла (написать как в JS let i = 1 — не получится).
  2. Этой переменной мы присваиваем начальное значение и указываем конечное.
  3. На каждом шаге цикла значение переменной будет автоматически увеличиваться на единицу.
  4. Как оно превысит конечное значение — цикл остановится.

Выведем числа от 1 до 10:

var I: Integer;
...
for I := 1 to 10 do Writeln(I);

Если нам нужно идти наоборот, в сторону уменьшения значения переменной, то вместо to используют downto:

var I: Integer;
...
// выведем числа в обратном порядке, от 10 до 1
for I := 10 downto 1 do Writeln(I);

Циклы с предусловием и постусловием

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

Цикл с предусловием — это когда сначала проверяется условие цикла, и если оно верно, то цикл выполняется до тех пор, пока оно не станет ложным. В общем виде такой цикл выглядит так:

while <условие> do
<оператор>;

Выведем с его помощью числа от 1 до 10 (обратите внимание на операторные скобки):

var I: Integer;
...
I:=1;
while I < 11 do
    begin
      writeLn(I);
      I++;
    end;

Цикл с постусловием работает наоборот: он сначала выполняет тело цикла, а потом проверяет условие. Операторные скобки в нём не ставятся, потому что границы цикла задаются самими командами цикла:

repeat
<оператор 1>;
...
<оператор N>;
until <условие>;

Если условие становится истинным — цикл останавливается. Особенность такого цикла в том, что он выполнится как минимум один раз, прежде чем проверится условие.

var I: Integer;
...
I:=1;
repeat
  writeLn(I);
  I++;
until I > 10

Процедуры

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

В общем виде объявление процедуры выглядит так:

procedure <имя> ( <список параметров, если они нужны> ) ;
const ...; // раздел констант
type ...; // раздел типов
var ...; // раздел переменных
begin // начало процедуры
<операторы>
end; // конец процедуры

Если какой-то раздел в процедуре не нужен, его можно пропустить. Сделаем процедуру, которая будет приветствовать пользователя и спрашивать его имя:

var name: string;
procedure hello;  // объявляем процедуру
begin
  writeln('Привет! Как тебя зовут? ');
  readLn(name);
end;

begin     // начало основной программы
  hello;  // вызываем процедуру
end.

В нашем примере имя пользователя попадёт в глобальную переменную name — доступ к глобальным переменным возможен из любого места программы.

Функции

Функции в Delphi работают точно так же, как и во всех остальных языках программирования. Единственное, о чём нужно помнить, — мы должны заранее определить, какой тип данных вернёт нам функция.

Для примера сделаем функцию возведения в степень: мы передаём в неё два числа, а оно возводит первое в нужную степень:

function power(x, y: double): double;       
begin
  result := Exp(Y * Ln(X)); // возвращаем результат работы функции
end;

begin // начало основной программы
  Writeln('5 в степени 6 равно ', power(5, 6)); 
  Readln; // ждём нажатия любой клавиши и выходим из программы
end.

Что теперь

Надевайте фланелевую рубашку, заваривайте чай в пакетике, подключайте мышку к порту PS/2 и садитесь программировать. Вам снова 16 лет, на завтра нет домашки, а в кармане свежая карточка на 500 мегабайт интернета.

Понравилась статья? Поделить с друзьями:
  • В 7000 клей инструкция по применению время высыхания
  • В 333 аппарат для миостимуляции инструкция
  • Бюрократ следующий инструкции не вникая в суть
  • Бюро хемнэс инструкция по сборке
  • Бюллер 2375 инструкция по эксплуатации