Strona 1 z 1

wcześniejsze wyjście z pętli FOR

: 29 mar 2006 21:17
autor: Gość
Cześć
Jestem początkujący i od razu mam takie pytanie. Mam pętle FOR która wykonuje się 10.000 razy, ale w pewnych okolicznościach chcę wyjść z tej pętli wcześniej, zanim indeks dojdzie do 10.000. Jak to zrobić ? Wymyśliłem zastąpienie FOR pętla WHILE, ale jestem ciekawy czy istnieje możliwość wcześniejszego wyjścia właśnie z pętli FOR.

Re: wcześniejsze wyjście z pętli FOR

: 29 mar 2006 22:35
autor: Smooth
To raczej niemożliwe i moim zdaniem bez sensu, przecież w pętli while też masz terminal z nr bierzącej iteraji, więc można whilem zrobić wszystko to co forem, że tak powiem - wystarczy dołożyć warunek "> od liczby iteracji" jaka nas interesuje. Nie kombinuj -> tego co wymyślono w prehistorii programowania się nie zmienia. :lol:

Re: wcześniejsze wyjście z pętli FOR

: 30 mar 2006 06:39
autor: Gość
To nie jest kombinowanie. Myślę, że zbyt płytko traktujesz temat. W sumie nie ma róąnicy czy problem dotyczy pętli FOR czy czegokolwiek innego.
Być może pytanie powinno brzmieć:
Jak przerwać wykonywanie się działającego właśnie VI ?

Re: wcześniejsze wyjście z pętli FOR

: 30 mar 2006 06:51
autor: Mikrobi
Smooth ma rację. Pętla FOR ma ściśle zdefiniowany sposób dzialania, który mówi o tym, że: - pętla wykona się tyle razy ile wynosi wartość N wprowadzona do górnego terminala (jawna deklaracja pętli) - wykona się tyle razy ile jest elementów w tablicy wprowadzonych przez indeksowany tunel (niejawna deklaracja pętli). Różnica jest, jak najbardziej widoczna w ścisłych definicjach.
Pętla WHILE ma działanie pozwalające na wyjście programu z kodu zawartego wewnątrz pętli (warunek STOP).
Istnieje sposób który pozwoli na "wykonanie" kodu wewnatrz pętli FOR w sposób o jakim myślisz, ale jego zastosowanie świadczy o: - nieznajomości dzialania pętli FOR i WHILE - (i/lub) nieprzemyśleniu struktury programu

Re: wcześniejsze wyjście z pętli FOR

: 30 mar 2006 06:55
autor: Gość
A więc chciałbym poznać ten sposób.

Re: wcześniejsze wyjście z pętli FOR

: 30 mar 2006 07:03
autor: Mikrobi
Case

Re: wcześniejsze wyjście z pętli FOR

: 30 mar 2006 07:04
autor: Gość
A poza tym - każdy program można napisać w Pascalu nie używając instrukcji GOTO. Mimo to twórcy tego języka przewidzieli możliwość jej stosowania w przypadkach gdy:
- znacznie ułatwi to życie potencjalnemu programiście
- nastąpi nieprzewidziana przez nich sytuacja
Widocznie byli bardziej pokorni niż niektórzy użytkownicy tego forum.

Tak więc zapomnijmy o pętli FOR ... zadam to pytanie w inny sposób:
W jaki sposób można awaryjnie przerwać działanie VI który aktualnie się wykonuje ?
Przykładem testowym niech będzie .... pętla FOR ....

Re: wcześniejsze wyjście z pętli FOR

: 30 mar 2006 07:20
autor: Mikrobi
gość pisze:A poza tym - każdy program można napisać w Pascalu nie używając instrukcji GOTO. Mimo to twórcy tego języka przewidzieli możliwość jej stosowania w przypadkach...
Odpowiem tak: "Proponuję zatem Pascala" (poprostu gotuj) ;)
gość pisze: gdy: - znacznie ułatwi to życie potencjalnemu programiście
...który nie przemyślał struktury programu.
gość pisze: - nastąpi nieprzewidziana przez nich sytuacja
...czyli wystąpi konieczność zastosowania pętli WHILE (warunek STOPu związany z ogólnie mówiąc błędem programowym lub sprzętowym).
gość pisze:Tak więc zapomnijmy o pętli FOR ... zadam to pytanie w inny sposób W jaki sposób można awaryjnie przerwać działanie VI który aktualnie się wykonuje ?
Skoro pojawiło się rzeczowe pytanie:
VIServer, węzeł,
metoda Abort VI.

Re: wcześniejsze wyjście z pętli FOR

: 30 mar 2006 11:00
autor: Gość
Proponuję zatem zgłębienie problemu Pascala. Tylko ja sam znam klikanaście przypadków kiedy użycie GOTO diametralnie poprawiało czytelność kodu lub wręcz umożliwiło jego wykonanie.

W LabVIEW też zapewne można znaleźć wiele przypadków, kiedy zaproponowana przez Ciebie metoda "Abort VI" będzie użyteczna.

Dziekuję za zainteresowanie tematem.

Re: wcześniejsze wyjście z pętli FOR

: 30 mar 2006 14:19
autor: jogurt_owocowy
Długa dyskusja na ten temat jest tutaj. Konkluzje to: 1. Przydałoby się zwiększenie funkcjonalności fora... 2. ... , ale póki break'a w forze nie ma, to żaden problem przystosować do tego while'a, bo w końcu po to on jest.
(...) -"A więc chciałbym poznać ten sposób." -"Case" Przy tym sposobie warto się zastanowić gdzie tego Case'a wstawić i pamiętać, że w LV pętla While to, w nomenklaturze C, Do-While.
Pozdrawiam:)

Re: wcześniejsze wyjście z pętli FOR

: 10 sie 2007 13:15
autor: jogurt_owocowy
Oto nastała światłość (lepiej późno, niż wcale)! Życzeniu Gościa i wielu innych użytkowników LV (w tym mnie) stało się zadość - w LabView 8.5 pojawił się w końcu upragniony break w pętli for.
(To tak tytułem aktualizacji tego wątku.)

Re: wcześniejsze wyjście z pętli FOR

: 10 sie 2007 13:56
autor: Koza
Pozwolę sobie przypomnieć raz jeszcze Użytkownikom forum, że jest możliwość składania propozycji zmian/ulepszeń w produktach NI. Jak widać na przykładzie pętli for można sugerować pewne rozwiązania ułatwiające pracę z LabVIEW (i nie tylko).

Tutaj link:
http://digital.ni.com/applications/psc. ... t?OpenForm

(wymaga logowania).

Pozdrawiam,
Koza

Re: wcześniejsze wyjście z pętli FOR

: 11 sie 2007 08:30
autor: Mikrobi
A tutajlink do opisu nowej funkcjonalności pętli FOR.