Я очень новичок в C++.
Как я могу "перенаправить" код на определенную позицию?
В основном, что я должен поставить вместо строк комментариев здесь:
if ( N>1 ) {
// What should be here to make the code start from the beginning?
}
else {
// What should be here to make the code start from certain point?
}
Я понимаю, что C++ не является языком сценариев, но если код написан как скрипт, как я могу его перенаправить?
спасибо
Команда goto
будет делать то, что вы хотите, но она обычно нахмурилась в вежливых кругах :-)
Он имеет свое место, но вы, возможно, лучше научитесь структурированным методам программирования, поскольку чрезмерное использование goto
ведет к тому, что мы называем кодом спагетти, трудно понять, следовать и отлаживать.
Если ваш мандат состоит в том, чтобы внести минимальные изменения в код, который звучит так, как будто он может быть плохо написан, goto
может быть лучшим решением:
try_again:
n = try_something();
if (n > 1)
goto try_again;
Со структурированным программированием у вас будет что-то вроде:
n = try_something();
while (n > 1)
n = try_something();
Вы не можете видеть большую часть разницы между этими двумя случаями, но это потому, что это просто. Если вы закончите с ярлыками и goto
разделенными на две группы, или сорок два разных ярлыка, вы попросите структурированную версию.
Используйте функции, циклы и т.д. Для управления "потоком" вашего приложения. Подумайте о том, что код является многократно используемым, все, что будет использоваться повторно, должно быть помещено в функцию или зацикливаться.
Вот пример:
void main()
{
int i = 0;
SayHello();
if (i < 1)
{
SayHello();
i++;
}
else
{
SayGoodbye();
}
}
void SayHello()
{
cout << "Hello" << endl;
}
void SayGoodbye()
{
cout << "Goodbye" << endl;
}
Я не совсем уверен, что вы подразумеваете под "перенаправлением", но считайте следующее:
if (N > 1) {
speak();
} else {
do_something_else();
}
поскольку paxdiablo уже заявил, что метод goto
не является хорошей практикой. Было бы лучше использовать функции, которые делают определенную вещь, таким образом отладка проще, и кто-то может действительно следовать тому, что делает ваш код (или, по крайней мере, то, что он должен делать).