Poprawność częściowa - dowód[pomocy]

Odpowiedz Nowy wątek
2013-02-09 18:53
0

Witam , mam pewne zadanie do rozwiązania :X proszę o pomoc : (

Przeprowadzić dowód poprawności częściowej następującego programu:

ALFA :{n => 1}
x: =1; y:=0;
while x<n do
y:=y+ 2x;
x:= x+1
{y=2 ( n(n+1)/2 ) }

Z tego co wiem , mamy warunek początkowy(alfa) i warunek końcowy(beta) . Warunek poczatkowy musi sie zgadzac ,aby zachodziła poprawnosc czesciowa.

a więc:

Warunek alfa (n=>1) , X=1 , a warunek w pętli to x<n => 1<1 - FALSE

Proszę o pomoc : )!!

Pozostało 580 znaków

2013-02-12 14:18
0

up?
Czyli nikt nie jest wstanie mi pomóc :/ ??

Pozostało 580 znaków

2013-02-12 14:28
0

http://wazniak.mimuw.edu.pl/i[...]prawno%C5%9Bci_program%C3%B3w
Prześledź przykłady i samemu rozwalisz te zadanie.

Pozostało 580 znaków

2013-02-12 14:38
0

Jedyny sposób sprawdzenia poprawności podanego programu to puszczenie przez kompilator - przeszło = poprawny; nie przeszło = nie poprawny.
Sprawdzenie poprawności w przypadku kodów określa się w porównaniu z podanym zadaniem, u ciebie nie podano.
Sprawdzenie poprawności musi dotyczyć kodu w którym wiadomo co po czym następuje i co zawiera, w twoim nie wiadomo.
Podsumowując to co podałeś nie jest zadaniem tylko jakimś ... (wstawić odpowiednie słowo).


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Pozostało 580 znaków

2013-02-12 16:59
0
_13th_Dragon napisał(a):

Jedyny sposób sprawdzenia poprawności podanego programu to puszczenie przez kompilator - przeszło = poprawny; nie przeszło = nie poprawny.
Sprawdzenie poprawności w przypadku kodów określa się w porównaniu z podanym zadaniem, u ciebie nie podano.
Sprawdzenie poprawności musi dotyczyć kodu w którym wiadomo co po czym następuje i co zawiera, w twoim nie wiadomo.
Podsumowując to co podałeś nie jest zadaniem tylko jakimś ... (wstawić odpowiednie słowo).

Przedmiot : Teoretyczne podstawy informatyki

Zadanie z egzaminu, dokładnie znak w znak z kartki!

Potrafię indukcyjnie to rozwiązać , przy założeniu ze warunek (WHILE X<=N) ,a jest x<n .... . Jakies sugestie plox?

Pokaż pozostałe 2 komentarze
Chodzi o to, że bez wcięć nie wiadomo które instrukcje podchodzą pod pętle - satirev 2013-02-12 17:06
eee pod pętle podchodza dwa przypisania y:=y+ 2x; x:= x+1 - Cash8 2013-02-12 17:07
Co u Ciebie oznacza symbol =>? nierówność czy implikację? Jeśli w tym wierszu ALFA :{n => 1} jest nierówność, to algorytm jest niepoprawny. - bogdans 2013-02-12 17:09
wieksze rowne , zadną implikacje :P - Cash8 2013-02-12 17:09
Nierówność się zapisuje tak: >=. - bogdans 2013-02-12 17:20

Pozostało 580 znaków

2013-02-12 17:14

Jeżeli pod while podchodzą dwie instrukcji to sumujesz:
2+4+6+... +2(n-1)
Z równania na sumę ciągu arytmetycznego mamy:
(n-1)
(2+2(n-1))/2
uproszczając:
(n-1)
(2+2n-2)/2
(n-1)
2n/2
n
(n-1)


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
Pokaż pozostałe 2 komentarze
bo stracilem watek? co z tego ze warunek koncowy ( beta) sie zgadza skoro alfa nie? Poprawnosc czesciowa zaklada ze program sie wykona do PEWNEGO momentu a nie od któregos - Cash8 2013-02-12 17:31
@_13th_Dragon, co jest poprawne? - bogdans 2013-02-12 17:34
Wyżej udowodniłem że dla n>=1 algorytm w zadaniu realizuje y=n(n-1), myślałem że chodzi ci o to że przy n=1 to nie będzie zgodne z powyższym dowodem. To że n(n-1) != 2 ( n(n+1)/2 wydawało mi się oczywistym. - _13th_Dragon 2013-02-12 17:34
Czyli wedlug ciebie algorytm przy zalozeniu n>=1 biorac pod uwage n=1 jest błedny? - Cash8 2013-02-12 17:41
Algorytm jest błędny całkowicie, dla każdego n algorytm ma zwracać n(n+1). @_13th_Dragon pokazał wyżej, że algorytm zwraca zawsze n(n-1). - bogdans 2013-02-12 17:48

Pozostało 580 znaków

2013-02-12 17:51
0

"Algorytm jest błędny całkowicie, dla każdego n wynik algorytm zwraca n(n+1). @_13th_Dragon pokazał wyżej, że algorytm zwraca zawsze n(n-1). - bogdans 2013-02-12 17:48 "

Ok , ale treść zadania brzmi "udowodnij" , a nie sprawdz czy algorytm jest poprawny czy nie. Prowadzacy jest pedantem i jezeli sie pomylil ... - NIE SĄDZE.

Treśc podałem cała (dane). Ma ktoś jakieś pomysły?

Na przykład źle przepisałeś, tak jak z tymi wcięciami i znkaiem >= - _13th_Dragon 2013-02-12 17:55
Wierz mi badz nie , ale algorytm jest naprawde przepisany dobrze , wciecia (moj bład) - Cash8 2013-02-12 17:55
Jeżeli >= to nie twój błąd to masz dowód na to że prowadzący (mimo jest pedantem) przynajmniej raz się pomylił w tym zadaniu. - _13th_Dragon 2013-02-12 17:58
oj ty czepialski XD , zle zapisalem operator ( moj blad ) , powinno byc od samego poczatku >= , a reszta ok - z dwoch zrodel mam ten kod ; ] - Cash8 2013-02-12 18:00

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0