о! давайте про goto. Практический пример
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено bialix 02 сентября 2004 г. 12:39
В ответ на: Господа! Раз пошла такая пьянка и работать не охота... чет про goto давно не спорили... отправлено F8 02 сентября 2004 г. 10:17

есть цикл. в нем обрабатывается некий массив данных. Допустим я что-то ищу в этиом массиве. Если нашел, то выходу из цикла и иду дальше. Если не нашел, то нужно произвести какие-то действия и тоже идти дальше.

Вопрос: как это сделать без goto, но чтобы программа была минимально-оптимальной и максимально понятной.

Ответ: на Си - нет прямого решения. На Python - есть.

Код на питоне:

for i in array:
if i == 0: break # какая-то проверка данных
# do something
else:
print '0 not found'
# do something

# дальше продолжить в любом случае отсюда

Объяснение программы (упрощенно):
символ # означает комментарий до конца строки
отступами обозначается тело каждого элемента (мысленно добавьте кривые скобки как в си)
1 строка - цикл, который обходит все элементы массива array, i - это итератор, на каждом проходе он равен текущему элементу массива
2 строка - некая проверка текущих данных, если условие выполняется - выход из цикла, туда где комметарий "# дальше продолжить отсюда"
4 строка - альтернативная ветвь цикла(!) - будет выполнена если цикл естественным образом закончился. Если был выход из цикла через break, то эта ветвь пропускается

Ну?

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru