Другие языки программирования и технологии

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

как понять когда тебе надо написать begin , и за чем он нужен,желательно чтобы было понятно.И когда надо писать end?
begin-end - это - операторные скобки. Грубо говоря, если переводить на русский язык означают "начать-закончить" выполнение действий. Вообще программа в Pascal (а Delphi - это развитие Pascal) представляет собой структуру, подобную рецепту. Вон как в кулинарной книге или в интернете мы что видим: название, используемые ингредиенты и, собственно, то, что с ними сделать. Или как в таблице какой. Т.е. Программа такая-то, используемые переменные такие-то, и вот с ними нужно СДЕЛАТЬ (главный, основной begin). Далее идёт основной текст программы и внутренние begin ставятся лишь в том случае, когда нужно выполнить несколько действий (например при условии). Эти внутренние begin заканчиваются end с точкой запятой на конце, а последнее финальное основное end - точкой. Внимание: перед else точка с запятой не ставится, т.е. если бы было
 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.
Демиш Александр
Демиш Александр
43 559
Лучший ответ
Нужен всегда, когда оператор составной, то есть состоит из нескольких других операторов. begin пишется в начале, end в конце составного оператора.
 if i = 1 then
write('Зели');
writeln('Боба');
Здесь, если i = 1, то в консоли появится текст "ЗелиБоба".
А если i = 0, то просто "Боба".

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

Проблема в том, что по условию выполняется один и только один оператор.
Чтобы по условию выполнить несколько, нужно объединить их в составной оператор:
 if i = 1 then
begin
write('Зели');
writeln('Боба'); {Перед end точка с запятой необязательна, но я ставлю}
end;
То же самое с циклами for и while:
 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 в конце:
 case Country of 
'Россия': Capital := 'Москва';
'Франция': Capital := 'Париж';
'Италия': Capital := 'Рим';
else Capital := 'Страна отсутствует в базе данных';
end;
Если вы пишете процедуру или функцию, у них тело всегда заключается в begin...end. Даже если процедура делает что-то одно или вообще ничего.
 procedure PrintSquare(i: integer); 
begin
writeln(i*i);
end;