Skocz do zawartości

ForumPC.pl używa plików cookies, by ułatwić korzystanie z serwisu internetowego. Więcej informacji na ten temat znajdziesz w polityce prywatności.    Akceptuję używanie plików cookies



Zdjęcie

Problem z zadaniem z informatyki: pseudojęzyk


  • Zaloguj się, aby dodać odpowiedź
5 odpowiedzi w tym temacie

#1 OFFLINE   Denator

Denator
  • Użytkownik
  • 3 postów
0
Neutralny
  • Numer GG:

Napisano 29 październik 2011 - 17:19

Witam, a więc jest taka sprawa, że nie mam pojęcia jak rozwiązać pewne zadanie z informatyki. Szukałem w internecie wszystkiego na ten temat ale nadal nie wiem o co chodzi. Jest to zadanie z ubiegłorocznego konkursu z Informatyki. Przygotowuję się na następny konkurs i chciałbym zrozumieć to. Proszę tylko o wyczerpujące odpowiedzi od obeznanych w tym temacie osób.
Zadanie poniżej, prawidłową odpowiedź znam, ale nie potrafię do niej dojść.
Dziękuję i pozdrawiam.

Poniżej przedstawiony został algorytm, zapisany w pseudojęzyku. Jaki będzie wynik działania dla n=25 i m=15?

Podaj (n)
Podaj (m)
DOPÓKI m>0 WYKONUJ
( r:= reszta z dzielenia n przez m
n:=m
m:=r )
wynik:=n
PISZ (wynik)

a) 1
b) 5
c) 15
d) 25

Użytkownik Denator edytował ten post 29 październik 2011 - 17:23

  • 0




#2 OFFLINE   user1212

user1212
  • Użytkownik
  • 1735 postów
187
Dobry
Poradniki

Napisano 29 październik 2011 - 17:49

Witaj,

Zadanie jest proste i nie trzeba znać się na informatyce, żeby je zrobić.
Tłumacz od zera to masz krótką lekcje :)

Program, czyli ten algorytm można podzielić na 3 części:
1. Wstęp, pobranie danych:
Podaj (n)
Podaj (m)
2. Obliczenia:
DOPÓKI m>0 WYKONUJ
( r:= reszta z dzielenia n przez m
n:=m
m:=r )
3. Wyświetlenie wyniku działania algorytmu:
wynik:=n
PISZ (wynik)

Najważniejsza część to oczywiści druga. Do pętli - bo tak się nazywa część kod cyklicznie powtarzanego aż do momentu kiedy będzie spełniony warunek. W Twoim wypadku warunek to:
DOPÓKI m>0 WYKONUJ

Dane wejściowe to n = 25 i m = 15
Analizując kod i dane dochodzimy do wniosku:
1 wywołanie pętli
r := [b]10[/b] [color=#a9a9a9]reszta z dzielenia n przez m[/color]
n := [b]15[/b]
m := 10 [color=#a9a9a9]z pierwszej linijki wynik[/color]
Kod się wykonał raz. Teraz sprawdzamy warunek:
DOPÓKI m>0 WYKONUJ
No jakby nie patrząc m jest większe od zera więc wykonujemy jeszcze raz pętle:
r := [b]5[/b] [color=#a9a9a9]reszta z dzielenia 15 przez 10[/color]
n := [b]10[/b]
m := 5 [color=#a9a9a9]z pierwszej linijki wynik[/color]
Warunek dalej nie spełniony. Jedziemy dalej:
r := [b]0[/b] [color=#a9a9a9]reszta z dzielenia 10 przez 5[/color]
n := [b]5[/b]
m := 0 [color=#a9a9a9]z pierwszej linijki wynik[/color]
W tym miejscu warunek zostaje spełniony bo m = 0
Ostatnia wartość n = 5 więc wynik to 5.

Pozdrawiam,
  • 1

#3 OFFLINE   Denator

Denator
  • Autor tematu
  • Użytkownik
  • 3 postów
0
Neutralny
  • Numer GG:

Napisano 09 listopad 2011 - 20:13

Dziękuję bardzo za pomoc i dokładne wyjaśnienie! Już teraz wszystko rozumiem, i to jednak nie takie trudne jak się wydawało ;P

Przepraszam, że zawracam głowę, ale mam 2 kolejne zadania, tym razem pytające o ilość pętli. Siedzę i myślę, ale jakoś nie mogę pogodzić się z prawidłowymi odpowiedziami zawartymi na karcie odpowiedzi. :/ Oto one:

k:=5
POWTARZAJ
k:=k-1
AŻ k>4


Ile razy zostanie wykonana pętla:
a)nieskończoną ilość razy
b)5 razy
c)raz
d)ani raz
e)3 razy

___________________________________________________________________
k:=10
POWTARZAJ
k:=k-1
AŻ k>10

Ile razy zostanie wykonana pętla:
a)nieskończoną ilość razy
b)5 razy
c)1 raz
d)ani raz
e)3 razy




Bardzo proszę o pomoc, bo kompletnie nie rozumiem.

Użytkownik Denator edytował ten post 09 listopad 2011 - 20:24

  • 0

#4 OFFLINE   user1212

user1212
  • Użytkownik
  • 1735 postów
187
Dobry
Poradniki

Napisano 09 listopad 2011 - 22:31

Witam,

W pierwszym zadaniu odpowiedź jest nieskończenie wiele razy. Dlaczego?
Na początku deklarujesz, że k = 5
Wchodzisz do pętli z tą wartością i odejmujesz -1 czyli masz k = 4
Dochodzisz do warunku - wykonaj do momentu k będzie miało wartość większą niż 4. Kiedy taką będzie miało? Nigdy - w pierwszym wywołaniu masz już 4, później 3,2,1......,-100,-101,.... itd.

W drugim masz to samo tylko, pętla raz się wykona bo program do niej wejdzie i od razu spełni sobie warunek - ale raz wykona!

Pozdrawiam.
  • 0

#5 OFFLINE   Denator

Denator
  • Autor tematu
  • Użytkownik
  • 3 postów
0
Neutralny
  • Numer GG:

Napisano 09 listopad 2011 - 23:10

No dobrze, z pierwszym zadaniem bym sobie poradził, ale gdy zobaczyłem drugie i porównałem je, to doszedłem do wniosku że coś jest nie tak.
Chodzi o to, że teraz nie rozumiem zadania drugiego. Dlaczego pętla została wykonana raz? Przecież nie został spełniony warunek k>10, bo k-1=9, a 9 na pewno nie jest większe od 10, więc wg. mnie pętla powinna być wykonywana dalej, aż do nieskończoności. Gdzie ja popełniam błąd?
  • 0

#6 OFFLINE   user1212

user1212
  • Użytkownik
  • 1735 postów
187
Dobry
Poradniki

Napisano 10 listopad 2011 - 00:41

Ale według odpowiedzi to jest pętla do-while czyli nawet jak warunek jest spełniony to pętla się wykona :)
  • 0




Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych

Przekaż 1% podatku na rzecz OPP | tanie domeny w PROGRESO

Zawartość każdej wiadomości wyraża poglądy i opinie jego autora, a nie administratorów czy moderatorów (poza wiadomościami pisanymi przez nich)