Zaczynamy od rzucenia Cię na głęboką wodę. Poniżej zaprezentowane są funkcje obliczające największy wspólny dzielnik (NWD) dwóch liczb naturalnych. Każda funkcja napisana jest w innym języku. Jeśli nie rozumiesz poniższych przykładów kodu, to bardzo dobrze – ten rozdział ma cię jedynie oswoić z różnymi językami programowania. Nie musisz rozumieć poszczególnych instrukcji, ważne abyś zauważył ogólne różnice i podobieństwa pomiędzy Lispem, Pythonem, Javą, C, PHP i Rubim.
C
int nwd(int a, int b) {
int temp;
while(b != 0) {
temp = a % b;
a = b;
b = temp;
}
return a;
}
LISP
(defun nwd (a b)
(loop
(if (= b 0) (return a)
(prog1
(setq a (mod a b))
(setq temp a)
(setq a b)
(setq b temp)
)
)
)
Java
class Arytmetyka {
static int nwd(int a, int b) {
int temp;
while (b!=0) {
temp = a % b;
a = b;
b = temp;
}
return a;
}
}
PHP
function nwd($a, $b) {
while ($b) {
$temp = $a % $b;
$a = $b;
$b = $temp;
}
return $a;
}
Python
def nwd(a,b):
while b != 0:
a = a % b
a, b = b, a
return a
Ruby
def nwd(a, b)
while b != 0
a = a.modulo(b)
a, b = b, a
end
return a
end
marzec 6, 2008 o 3:13 pm
Fajna strona, fajny pomysł… myślisz jednak, że zaczynanie od “Macie tu sześć kodów źródłowych – radźcie sobie sami w zrozumieniu go jest dobrym pomysłem na start ?
Pozjadało Ci znaczki przy includach w C.
Pozdrawiam! Będę tu jeszcze zaglądał.
marzec 7, 2008 o 1:14 pm
Natrafiłeś na stronę jak była jeszcze w budowie
Ten kurs programowania jest pionierski jeżeli chodzi o sbosób przedstawiania wiedzy. Jestem zwolennikiem teori, że im wcześniej coś zaczniesz ćwiczyć tym szybciej się tego nauczysz. Dlatego od razu przedstawiam próbki kodu, bez teoryzowania i rozpisywania się gdzie to nie jest konieczne.
marzec 13, 2008 o 9:43 am
Nie znam się na wszystkich językach programowania, ale przy C popełniłeś imho dwa błędy. Zmienna temp nie została zadeklarowana i brakuje średnika przy returnie.
Może warto pomyśleć o kompilacji wszystkich tych programów? Będziesz miał wtedy pewność, że wszystkie są napisane poprawnie.
Pozdrawiam!
marzec 13, 2008 o 9:34 pm
Dzięki za czujność. Zainstalowałem już wszystkie kompilatory i każdy kod będzie sprawdzany przed publikacją, więc nie powinno być więcej błędów składniowych