Polski Serwis Naukowy - OnLine od 1999 roku
RSS
Czwartek, 31 maja 2012
Petronia, Bożysława, Ernestyna, Teodor
 1891: budowa Kolei Transsyberyjskiej
 1970: zagłada miasta Yungay w Peru
 WHO: Dzień bez Papierosa
Nowe publikacje
Post dodany: |27 Mar 2009|, 2009 16:59
Data rejestracji: 19 Mar 2008 postów: 17
Hej! Mam do napisania program obliczający pierwiastki trójmianu kwadratowego za pomocą 3 procedurowej funkcji ( ma zawierać rekurencyjne wywołanie funkcji). I potrafię napisac taki program, ale niesttey z użyciem "if". I przyznaję się - nie mam zielonego pojęcia jak zabrac się za to zadanie i to rekurenycjne wywołanie funkcji  ...
Post dodany: |27 Mar 2009|, 2009 17:57
Data rejestracji: 02 Sty 2009 postów: 242
a jaki jezyk programowania?
Post dodany: |27 Mar 2009|, 2009 18:59
Data rejestracji: 19 Mar 2008 postów: 17
Pascal, taki najzwyklejszy. Będę wdzięczna za pomoc...
Do tej pory nie miałam problemów z pisaniem programów, ale za ten to nawet nie wiem jak się wziąc...
Ostatnio zmieniony przez yomana |27 Mar 2009|, 2009 19:02, w całości zmieniany 2 razy
Post dodany: |27 Mar 2009|, 2009 19:04
Data rejestracji: 11 Cze 2007 postów: 5113
Ale z czym problem? Ze znalezieniem metody matematycznej czy z jej implementacją?
Post dodany: |27 Mar 2009|, 2009 20:11
Data rejestracji: 02 Sty 2009 postów: 242
a ja myślę że tu jest ten problem
| yomana napisał/a | | pierwiastki trójmianu kwadratowego |
Pokaż co masz ;] to cie naprowadzimy może
Post dodany: |27 Mar 2009|, 2009 22:08
Data rejestracji: 19 Mar 2008 postów: 17
mam z instrukcja if. a mam zrobić 3 procedurowy program z rekurencyjnym wywołaniem
funkcji. a więc program, który mam:
program tk;
uses crt;
var: a,b,c,del,x1,x2,x0: real;
begin
writeln ('wprowadź a');
readln (a);
IF a<>0 THEN
begin
writeln ('podaj b i c');
readln (b,c);
del:= (b*b)-(4*a*c);
end;
IF del <0 THEN
begin
writeln ('brak msc. zerowych');
end;
IF del=0 THEN
begin
x0:= (-b)/(2*a);
writeln (x0);
end;
IF del>0 THEN
begin
x1:=(-b-sqrt(del))/(2*a);
x2:=(-b+sqrt(del))/(2*asqrt(del))/(2*a);
writeln (x1,x2);
end;
else
begin
writeln ('funkcja nie jest trójmianem kwadratowym');
end;
end.
Ostatnio zmieniony przez yomana |27 Mar 2009|, 2009 22:09, w całości zmieniany 1 raz
Post dodany: |27 Mar 2009|, 2009 22:52
Data rejestracji: 02 Sty 2009 postów: 242
ej no to masz już robotę zrobioną bo tu np chodzi o to
dla ułatwienia rozrysuj sobie to na kartce jako schemat blokowy ;]
dzielisz na funkcje to co już masz
Pierwsza:
sprawdza czy a <>0 jak tak to wykonuje okreslone zadania czyli wyliczanie del jesli nie to wykonuje się ponownie (po pętli if dajesz else z ponownym wykonaniem funkcji pierwszej)
i tak w koło Macieju ;] teraz delte wyliczasz i wypisujesz w kolejnej funkcji i znów warunki odpowiednie muszą być spełnione (po if dany warunek dla wielkosci delty [ilość miejsc zerowych] )
i nastepna funkcja to obliczanie miejsc zerowych ;] ze wzoru w zaleznosci od ilosci miejsc jaka wynika z delty ;]
Koniec
Post dodany: |27 Mar 2009|, 2009 22:54
Data rejestracji: 19 Mar 2008 postów: 17
a jak zapisac to z tym słowkiem "procedure"? bo tego na prawdę nie wiem  i nie rozumiem. i to "rekurencyjnie"...
Ostatnio zmieniony przez yomana |27 Mar 2009|, 2009 22:56, w całości zmieniany 1 raz
Post dodany: |27 Mar 2009|, 2009 23:06
Data rejestracji: 02 Sty 2009 postów: 242
| Cytat | Procedury to „części” kodu programu, które wykonują przydzielone im zadanie. Procedury które pewnie znasz to np. Write. Powoduje ona wypisanie na ekranie tego, co podaliśmy w nawiasie. Jest zawarta w standardowych bibliotekach, więc nie musimy pisać jej kodu, wystarczy wpisać jej nazwę. Co mamy jednak począć, gdy musimy np. w kilku miejscach w programie wypisać na ekran taki sam domek? Mamy pisać kilka domków, co zajmuje dużo miejsca w naszym programie? Nie! Wystarczy napisać go raz, a później tylko wywoływać naszą procedurę!
Struktura naszej procedury wygląda następująco:
Procedure nazwa_procedury(przekazywane_zmienne);
var zmienna; {tutaj znajdują się zmienne naszej procedury}
begin
kod procedury {tu znajduje się treść naszej procedury}
end;
begin
clrscr;
nazwa_procedury; {tutaj procedura zostanie wykonana}
readkey;
end.
A teraz przykład:
procedure domek;
begin
Writeln(' ');
Writeln(' II /\');
Writeln(' II/ \');
Writeln(' I/ () \');
Writeln('----------');
Writeln('I [] [] I');
Writeln('I [] [] I');
Writeln('I [] [] I');
Writeln('I _ I');
Writeln('I I I I');
Writeln('----------');
end;
begin
clrscr;
domek;
readkey;
end.
Funkcja różni się tym od procedury, że zwraca nam wynik wykonanego zadania.
A teraz struktura funkcji:
function nazwa_funkcji(przekazywane_zmienne):typ_wyniku;
var zmienna; {tu znajdują się zmienne funkcji}
begin
kod funkcji {tu znajduje się treść naszej funkcji}
nazwa_funkcji:=wynik_funkcji;
end;
begin
write(nazwa_funkcji(zmienne znajdujące się w nawiasie przy nazwie funkcji);
readkey;
end.
A teraz przykład gotowej funkcji obliczającej pole kwadratu:
function kwadrat(a:integer):integer;
var pole:integer;
begin
pole:=a*a;
kwadrat:=pole;
end;
begin
clrscr;
write('Podaj bok kwadratu: ');
readln(a);
write(kwadrat(a));
readkey;
end. |
Post dodany: |28 Mar 2009|, 2009 17:31
Data rejestracji: 22 Lip 2006 postów: 1989
michalmaster1, jeśli to nie Twoje słowa to podaj źródło, z którego to skopiowałeś.
Nie możesz pisać nowych tematów Nie możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach Nie możesz załączać plików na tym forum Nie możesz ściągać załączników na tym forum
|
Wersja do druku
Dodaj temat do Ulubionych
|
Powered by
phpBB © 2000, 2002, 2005, 2007 phpBB Group
|