Skocz do zawartości

Schemat Blokowy


MitS

Rekomendowane odpowiedzi

Witam serdecznie,

 

mam mały problem otóż przyszło mi pisać schematy blokowe programów i powiem szczerze - do tej pory tego nie robiłem a sprawa jest dość pilna dlatego też napisze pewną część wykreowany przykładu, która mnie dręczy i byłbym wdzięczny za odpowiedź jak taki schemat wykonać (dalej sobie poradzę).

 

 

mamy program:

 

#include <iostream>

 

int fun1(int);

int fun2(int);

 

int main(){

count << "Wynik: " << fun1(10) << endl;

return 1;

}

 

int fun1(int a){

if(a == 0)

return 0;

 

return a * fun2(1 ^ (a >> 1));

}

 

int fun2(int a){

if(a == 0)

return 1;

 

return a + fun1(a - 1);

}

 

 

do tej pory wykonałem coś takiego:

schematu.th.jpg

 

ale dalej nie wiem jak to ugryźć dlatego prosiłbym was o pomoc.

 

Pozdrawiam

 

------------

Warto sprawdzić przed wysłaniem postu czy link działa. Do tego m.in. służy przycisk [Podgląd postu] pod polem edycji. Wkleiłeś miniaturkę obrazka nie podając linku do niego.

Edytowane przez WalDo
Podanie poprawnego linku do obrazka
Odnośnik do komentarza
Udostępnij na innych stronach

Takie uwagi na pierwszy rzut oka się nasuwają:

"przypisz x=n" - nigdzie w kodzie nie występuje "x" ani "n". Parametr "a" ma przypisana stałą, więc chyba w prostokąciku "a=10".

"Czy x==0?" - za moich czasów nie stosowano notacji danego języka, więc porównanie nie z C ("==") tylko pojedynczy znak równości (ale to się mogło zmienić). Na pewno nie powinno być w bloku decyzyjnym słówka "czy". Wg mnie po prostu "a=0".

No i oczywiście na rysunku brak "domknięcia" decyzji - co się dzieje gdy a!=0? Każda decyzja i pętla musi być zakończona.

 

Ale poczekaj, niech inni się wypowiedzą, bo schematów blokowych wieki nie pisałem.

Odnośnik do komentarza
Udostępnij na innych stronach

faktycznie nie pozmieniałem literek (bo ten x to z pełnego kodu jest a ja dałem tylko wycinek i musiałem pozmieniać by zadziałało :P).

Co do podpowiedzi dzięki na pewno się przydadzą nie mniej jednak właśnie zależy mi na dokończeniu algorytmu w przypadku gdy a!=0 (tam jest rekurencja i nie do końca wiem jak to mam zobrazować)

Odnośnik do komentarza
Udostępnij na innych stronach

W prostokątach umieszczasz instrukcje proste. Mim zdaniem, wejście powinno być w równoległoboku, podobnie jak wyjście. Założenia co do danych (w mądrym języku zwane asercjami) nie są częścią wejścia. Ja bym pisał asercje w postaci komentarzy, w klamrach przytwierdzonych do strzałek na schemacie.

 

Twój kod posługuje się rekursją, a najwyraźniej zamierzasz przedstawić schemat iteracyjny. Są dwie możliwości: albo zachowujesz rekursywność, co wymaga zdefiniowania schematów dla fun1 i fun2, i następnie odwołania się do nich w głównym schemacie, albo przekształcasz algorytm na równoważny, lecz iteracyjny. To pierwsze może być zabronione w narzuconej Ci konwencji, to drugie jest wykonalne tylko w szczególnych przypadkach rekursji.

 

Co do zestawu symboli, nie jest istotne czy używasz = i == , czy ? i = , czy := i = . Ważne, żeby zachować jednoznaczność.

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
×
×
  • Dodaj nową pozycję...