Poslao: 28 Mar 2006 18:20
|
offline
- bocke
- Moderator foruma
- Glavni moderator Linux foruma
- Pridružio: 16 Dec 2005
- Poruke: 12530
- Gde živiš: Južni pol
|
Kupio sam skoro knjigu "Programsko Okruženje Delphi 4 sa rešenim zadacima" Lasla Krausa. U njoj sam našao sledeći primer:
program Trougao;
function P (A: Real = 2; B: Real =2; C: Real = 2): Real;
var S: real;
begin
S := (A + B + C) / 2;
P := Sqrt (S * (S - A) * (S - B) * (S - C));
end;
begin
PrintLn ('P = ', P: 4.2);
PrintLn ('P(3) = ', P(3): 4.2);
PrintLn ('P(3,4) = ', P(3,4): 4.2);
PrintLn ('P(3,4,5) = ', P(3,4,5): 4.2);
end.
Ne koristim Delphi, pa ne znam da li stvarno postoji funkcija "PrintLn". Ali me zanima da li postoji ili ne. Koliko ja znam PrintLn je metod Javinog objekta SystemOut... Da nije autor pomešao nešto ili da nije u pitanju štamparska greška (ne kompajlira se pod mojim kompajlerom - a treba li bi... Ovo prilično liči na ANSI Pascal).
Pošto imam ograničeno znanje Pascala (preferiram C, ali mi je trenutno potreban Pascal) posegao sam za jednim malim tutorijalom sa neta... Uz pomoć njega, za par sekundi sam ono gore prepravio u ovo:
program Trougao;
function P (A: Real = 2; B: Real =2; C: Real = 2): Real;
var S: real;
begin
S := (A + B + C) / 2;
P := Sqrt (S * (S - A) * (S - B) * (S - C));
end;
begin
WriteLn ('P = ', P :4:2);
WriteLn ('P(3) = ', P(3) :4:2);
WriteLn ('P(3,4) = ', P(3,4) :4:2);
WriteLn ('P(3,4,5) = ', P(3,4,5) :4:2);
end.
To radi i kod mene... Dakle... Da ponovim pitanje: da li PrintLn postoji u Delphiju ili ne?
|
|
|
Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
|
|
Poslao: 28 Mar 2006 19:08
|
offline
- beli0135
- Executor
- Pridružio: 03 Jan 2005
- Poruke: 2990
- Gde živiš: Beograd
|
PrintLn ne postoji u delfiju, bar ne genericki. Zapravo, ne postoji ni u TurboPascalu iz cega je Delphi nastao.
Verovatno je 3rd-party funkcija .
WriteLn zavrshava posao jer ta funkcija pishe liniju na sta god bilo.
Inace, batali autora koji u delfiju pishe "real" kao tip podataka....
(to je u principu "znam da prckam po delfiju, pa hajde da napisem knjigu i zaradim keke")
|
|
|
|
|
|
Poslao: 28 Mar 2006 21:27
|
offline
- NuLLCoDe
- Legendarni građanin
- Đuro Glumac
- dipl. ing. informatike
- Pridružio: 08 Feb 2004
- Poruke: 3640
- Gde živiš: ApAtIn
|
Strog ::@ beli0135
Pa sta ima veze sto je stavio Real?
Pa to je u neku ruku kao "skolski" tip. Kod izrade oprofesionalnih programa uvek se preporucuje koristiti extended, posebno ako se radi o nekim novcanim jedinicama i sl. zbog broja znacajnih cifara.
Verovatno je Beli mislio na to?
|
|
|
|
Poslao: 28 Mar 2006 21:49
|
offline
- Strog
- Stručni saradnik
Web programiranje
- Bojan Kopanja
- Web & Mobile developer @ ZeusSoftware
- Pridružio: 26 Jul 2003
- Poruke: 2597
- Gde živiš: Stara Pazova
|
Pa ne znam, ali i ja najcesce koristim real posto bi mi extended bez veze trosio vise memorije ...
|
|
|
|
Poslao: 28 Mar 2006 21:58
|
offline
- snoop
- Genghis Khan
- Pridružio: 18 Apr 2003
- Poruke: 8134
- Gde živiš: U kesici gumenih bombona...
|
Sto se tice one greske oko PrintLn, moguce je da je pogresio posto Laslo predaje i Javu (na VETS) pa se greska mogla desiti.
|
|
|
|
Poslao: 28 Mar 2006 22:02
|
offline
- bobby
- Administrator
- Pridružio: 04 Sep 2003
- Poruke: 24135
- Gde živiš: Wien
|
Ako se dobro secam, u Fortranu je isto postojao PrintLn.
|
|
|
|
Poslao: 28 Mar 2006 22:11
|
offline
- beli0135
- Executor
- Pridružio: 03 Jan 2005
- Poruke: 2990
- Gde živiš: Beograd
|
@Nullcode i @Strog
Obojica ste malo pogresili...
Real je implementiran samo zbog Backward compatability i nije Delphi-native tip. To je u stvari "Double". Posle su napravili typecast u stilu type Real:Double;
Ne znam zasto je preporucljivo koristiti Extended?! Koristis ono sta ti treba. Iskreno, u 99.99% slucajeva je dovoljan Double.
Ako ti broj nije velik i ne treba velika preciznost, koristi se single. Ako je normalni racionalni broj, Double zadovoljava sve potrebe.
Samo za extremnu preciznost (kao napr, kod proracuna navigacijskih tacaka, atomske fizike i sl.) ti treba Extended.
Double ima 13 decimala, sta ce ti vise?
|
|
|
|
Poslao: 31 Mar 2006 09:45
|
offline
- bocke
- Moderator foruma
- Glavni moderator Linux foruma
- Pridružio: 16 Dec 2005
- Poruke: 12530
- Gde živiš: Južni pol
|
snoop ::Sto se tice one greske oko PrintLn, moguce je da je pogresio posto Laslo predaje i Javu (na VETS) pa se greska mogla desiti.
Izgleda da je bas ovo u pitanju. Kasnije se ispravio... Inace, ako zanemarimo ovo, knjiga predstavlja jednostavan uvod u Delphi. Nije tako losa.
|
|
|
|