Problem ze schematem blokowym pętli "for"

makuu
Użytkownik
Użytkownik
Posty: 48
Rejestracja: 7 maja 2010, o 01:42
Płeć: Mężczyzna

Problem ze schematem blokowym pętli "for"

Post autor: makuu »

W schemacie blokowym przy pętli for mamy sytuacje następujące:

1. Jest jakaś wartość np i:=0 i jest ona w bloku PRZED blokiem decyzyjnym, jest jakaś wczytana przed blokiem decyzyjnym wartość "n", następnie blok decyzyjny, a potem w pętli mamy i:=i+1 oraz PO TYM ale w tym samym bloku obliczeniowym mamy s:=s+1;. I teraz należy to o ile rozumiem liczyć jako for i:=1 to n do s:=s+i; a to i:=0 zostało przypisane nie tyle w programie co w schemacie blokowym aby to móc przedstawić?

2. Czy może to jest tak, że PRZED blokiem decyzyjnym mamy wczytaną jakąś wartość "n", wartość i:=1, potem blok decyzyjny, następnie s:=s+1; i dopiero PO TYM i:=i+1; i traktujemy to jako for i:=1 to n do

Wydaję mi się że tak jak jest to pokazane w punkcie 2 być nie powinno, bo wtedy wypisze nam na końcu jakąś wartość "i" dla której skończy się pętla, a która pozostanie "pusta", bez żadnej przypisanej jej wartości "s" do obliczania.
sonicwork
Użytkownik
Użytkownik
Posty: 67
Rejestracja: 3 wrz 2010, o 00:38
Płeć: Mężczyzna
Lokalizacja: Polska
Podziękował: 2 razy
Pomógł: 1 raz

Problem ze schematem blokowym pętli "for"

Post autor: sonicwork »

najlepiej to narysuj i pokaż
makuu
Użytkownik
Użytkownik
Posty: 48
Rejestracja: 7 maja 2010, o 01:42
Płeć: Mężczyzna

Problem ze schematem blokowym pętli "for"

Post autor: makuu »

... 29,r:0,s:0

Tutaj jest link do tego. Tutaj wynika z tego, że pętla "for" zaczyna się tu dla licznik:=1, natomiast gdyby była taka sama sytuacja, ale w bloku obliczeniowym obliczanie silni byłoby PRZED obliczaniem licznika , wtedy można to interpretować jako for licznik:=0 to n do
Crizz
Użytkownik
Użytkownik
Posty: 4094
Rejestracja: 10 lut 2008, o 15:31
Płeć: Mężczyzna
Lokalizacja: Łódź
Podziękował: 12 razy
Pomógł: 805 razy

Problem ze schematem blokowym pętli "for"

Post autor: Crizz »

Hmmm...

Jeśli zamienisz inkrementację licznika z instrukcją do wykonania, to pętla nie wykona się dla \(\displaystyle{ i=N}\). W takiej postaci metoda 2. byłaby błędna. Mógłbyś jednak zamienić "TAK" z "NIE" przy bloku decyzyjnym i zmienić warunek na \(\displaystyle{ licznik \le N}\), dla mnie najbardziej naturalne rozwiązanie (bo wg. mnie, jeśli już ma być pętla FOR licznik:=1 to N, to dziwne jest początkowe przypisywanie wartości zawsze o jeden mniejszej niż początkowa wartość licznika; tak samo zmniejsza czytelność zastąpnienie \(\displaystyle{ N}\) w warunku przez \(\displaystyle{ N+1}\), bo dobrze byłoby, żebyś patrząc na schemat blokowy miał od razu przed oczami wartość początkową i końcową licznika pętli).
makuu
Użytkownik
Użytkownik
Posty: 48
Rejestracja: 7 maja 2010, o 01:42
Płeć: Mężczyzna

Problem ze schematem blokowym pętli "for"

Post autor: makuu »

Tak tylko, jeśli nie mylę się w tym co napisałeś zaczynałoby się od i:=1 które de facto nie byłoby w tej pętli narysowanej na schemacie blokowym, a jako że już w tej pętli licznik byłby po obliczeniach silni, więc na końcu wyliczyłby wartość licznika równą n+1, która nie byłaby już równa lub mniejsza "n", a dla te wartości nie byłoby żadnych obliczeń, więc tak jakby została na końcu pusta wartość licznika.

Strasznie to "umowne", jak dla mnie za umowne
Crizz
Użytkownik
Użytkownik
Posty: 4094
Rejestracja: 10 lut 2008, o 15:31
Płeć: Mężczyzna
Lokalizacja: Łódź
Podziękował: 12 razy
Pomógł: 805 razy

Problem ze schematem blokowym pętli "for"

Post autor: Crizz »

makuu pisze:więc na końcu wyliczyłby wartość licznika równą n+1, która nie byłaby już równa lub mniejsza "n", a dla te wartości nie byłoby żadnych obliczeń
No dla \(\displaystyle{ i=N+1}\) nie wchodziny już do ciała petli. Kiedyś licznik musi wyjść poza zakres ważności, żeby pętla się skończyła, tego nie ominiesz, bo na tym cała konstrukcja pętli się opiera Jeśli to Cię nie przekonuje, to używaj petli jak chcesz, głównym kryterium konstruowania algorytmu powinna być poprawność.
ODPOWIEDZ