Добрый день. У меня задание по КП написать прогру на плюсах: «Поставил begin — поставь и end.». Дан массив строк, представляющий собой фрагмент программы на языке Pascal. Напишите программу, проверяющую правильность вложения операторных скобок begin . end — каждому begin должен соответствовать end.»
Мне всё предельно ясно, нет проблем.
Вот только не ясно как распознать вложения. Точнее как узнать место куда вставить end, в комментариях я выделил end, который «забыли» поставить а мне его нужно дописать. Код должен работать правильно, после проверки а не испортиться.
Например:
var a,n,c,d:word; begin readln( a ); n:=1; while ( n d then writeln( d ); inc( n ); < вот как понять, что end;должен стоять до а не после? >end; end.
Я бы без проблем решил эту проблему за счет отступов. Но я уверен, что мой преподаватель будет копировать не отформатированный код в textBox. Подскажите пожалуйста, как же решить такую проблему? Уверен, что есть хороший способ. Не хочу костылировать.
38 print, BEGIN{}, {}, END{}
- Вопрос задан более трёх лет назад
- 814 просмотров
2 комментария
Оценить 2 комментария
Источник: qna.habr.com
BEGIN. END (Transact-SQL)
Включает в себя последовательность инструкций Transact-SQL, позволяя выполнять группу инструкций Transact-SQL. Ключевые слова BEGIN и END относятся к языку потока управления.
Синтаксис
BEGIN < sql_statement | statement_block >END
Ссылки на описание синтаксиса Transact-SQL для SQL Server 2014 и более ранних версий, см. в статье Документация по предыдущим версиям.
Аргументы
< sql_statement | statement_block >
Любая допустимая инструкция или группа инструкций Transact-SQL, определенная с помощью блока операторов.
Примечания
Блоки BEGIN. END могут быть вложенными.
Хотя все инструкции Transact-SQL допустимы в пределах блока BEGIN. END, некоторые инструкции Transact-SQL не следует группировать в пределах одного пакета (блока операторов).
Примеры
В следующем примере ключевые слова BEGIN и END определяют ряд инструкций Transact-SQL, которые будут выполняться вместе. Если не включить блок BEGIN. END , будут выполнены оба оператора ROLLBACK TRANSACTION и возвращены оба сообщения PRINT .
Примеры: Azure Synapse Analytics и Система платформы аналитики (PDW)
В приведенном ниже примере ключевые слова BEGIN и END определяют ряд инструкций языка SQL, которые выполняются вместе. Если не включить блок BEGIN. END , в приведенном ниже примере образуется непрерывный цикл.
Источник: learn.microsoft.com
Вопрос Зачем этой программе две программы begin, и end?
Язык Си с нуля — Урок 21- Указатели, адреса, NULL
begin и end не программы, а так называемые операторные скобки — просто вид скобок.
Никколай
Никколай
Регистрация 27 Дек 2013 Сообщения 76 Репутация 0 Спасибо 0 Монет 0
Первый begin начинает саму программу, второй запускает тело цикла
PBSasha
PBSasha
Регистрация 20 Сен 2013 Сообщения 72 Репутация 0 Спасибо 0 Монет 0
Пара begin / end называется «составной оператор» и используется везде, где надо вставить несколько операторов в тех местах, где синтаксис языка допускает наличие строго одного оператора: после then, else, do и т. д. Разный синтаксис вариантов «один оператор» и «несколько операторов» — это общий недостаток ранних языков как с Algol-подобным, так и с C-подобным синтаксисами. В Pascal точка с запятой — разделитель операторов. Потому перед end точка с запятой не нужна.
Источник: 4cht.com