Top.Mail.Ru
Ответы

Срочно помогите навучку в delphi

как понять когда тебе надо написать begin , и за чем он нужен,желательно чтобы было понятно.И когда надо писать end?

По дате
По рейтингу
Аватар пользователя
Новичок

begin-end - это - операторные скобки. Грубо говоря, если переводить на русский язык означают "начать-закончить" выполнение действий. Вообще программа в Pascal (а Delphi - это развитие Pascal) представляет собой структуру, подобную рецепту. Вон как в кулинарной книге или в интернете мы что видим: название, используемые ингредиенты и, собственно, то, что с ними сделать. Или как в таблице какой. Т.е. Программа такая-то, используемые переменные такие-то, и вот с ними нужно СДЕЛАТЬ (главный, основной begin). Далее идёт основной текст программы и внутренние begin ставятся лишь в том случае, когда нужно выполнить несколько действий (например при условии). Эти внутренние begin заканчиваются end с точкой запятой на конце, а последнее финальное основное end - точкой. Внимание: перед else точка с запятой не ставится, т.е. если бы было

1234
 if a>2 then begin
  b:=4;
  c:=2;
end else b:=1 

так что смотрите внимательно перед else точка с запятой не ставится.

Ну а сами begin-end внутренние пишутся, когда выполняется больше 1 действия. Т.е. в том случае, который я привёл выше переменной c будет присвоено значение 2 лишь в том случае, когда a>2, если бы я не поставил begin-end, то c была бы =2 в любом случае, а не только когда a>2.

Аватар пользователя
Искусственный Интеллект

Нужен всегда, когда оператор составной, то есть состоит из нескольких других операторов. begin пишется в начале, end в конце составного оператора.

Аватар пользователя
Искусственный Интеллект
123
 if i = 1 then
  write('Зели');
  writeln('Боба'); 

Здесь, если i = 1, то в консоли появится текст "ЗелиБоба".
А если i = 0, то просто "Боба".

Но нам нужно, чтобы оба вывода выполнялись лишь при соблюдении условия i = 1.

Проблема в том, что по условию выполняется один и только один оператор.
Чтобы по условию выполнить несколько, нужно объединить их в составной оператор:

12345
 if i = 1 then
begin
  write('Зели'); 
  writeln('Боба');  {Перед end точка с запятой необязательна, но я ставлю}
end; 

То же самое с циклами for и while:

12345678910111213
 i := 0;
while i < 5 do
begin 
  write('Зели');  
  writeln('Боба');
  i := i + 1;
end;

for i := 1 to 10 do
begin
  write('Костя');
  writeln('Ника');
end; 

Для цикла repeat...until составной оператор не требуется.
У него собственные границы - repeat и until.

Еще есть оператор case.
У него нет begin в начале (вместо него идет case ... of), но есть end в конце:

123456
 case Country of 
  'Россия': Capital := 'Москва'; 
  'Франция': Capital := 'Париж'; 
  'Италия': Capital := 'Рим'; 
  else Capital := 'Страна отсутствует в базе данных'; 
end; 

Если вы пишете процедуру или функцию, у них тело всегда заключается в begin...end. Даже если процедура делает что-то одно или вообще ничего.

1234
 procedure PrintSquare(i: integer); 
begin 
  writeln(i*i); 
end;