Pascal: tömb elemeinek számát változóval miként lehet megadni, van erre mód?
Free Pascal alatt szeretném megadni változóval a tömb elemeinek számát (nem dinamikus hanem statikus tömböt szeretnék használni).
A fordítónak minden esetben tudnia kell statikus tömb esetén a konkrét ememszámot (?) gondolom talán ezért nem megy...
Nincs mégis valami mód?
program tprog;
var
n : longint;
tomb : array [1..n] of longint;
begin
end.
Konkrétan tapasztalat, hogy lassabb. :-)
Az, hogy gyors program és hogy Free Pascal-ban szeretném írni eleve kizáró tényező a gyorsaság mert Pascal fordító "nem tud úgy optimalizálni" mint a C fordító?
"Konkrétan tapasztalat, hogy lassabb. :-) "
Mégis min futtatod? Egy krumplin? Mutatsd meg légyszi a forráskódot. Nem szabadna érezhető sebességkülönbséget tapasztalni egy dinamukus memóriaallokáció miatt. Gyanítom, hogy még az alapokat sem tudod, ezért borzasztóan szervezted a kódot. Ez nem baj, csak ne akadj le ilyen apró lassúságokon meg inline-okon. Tanulni kell egy kicsit, aztán rájössz, hogy hogy kell dinamikus memóriát kezelni hatékonyan.
Régebben írt program esetén tapasztaltam, a kód most nincs kéznél de jópár másodperces különbség volt amikor kipróbáltam a statikus és dinamikus tömb közti különbséget.
A mutatózást régebben se szerettem és nem is értettem dinamikus tömb esetén.
#13:
SimkoL már ilyen impulzív természet, és érthető, ha második anyanyelvének tenyeres-talpas kezelését nehezen viseli. A pascal valóban nem híres a gyorsaságáról, sőt, eddigi tapasztalataim alapján a Free Pascal sem versenyezhet a Delphivel. Ezt azonban tényleg ne marhaságokkal akard megoldani, hanem ismerd meg a rendelkezésére álló sok unit lehetőségeit. Az igazán sebességkritikus részek megírására mindig ott az egérút, az assembly kód beépítése, de szerintem nem sok olyasmi fog az eszedbe jutni, amit még nem oldottak meg egyéb módon.
Szerintem se ártana, ha konkrét kódot is fölraknál valahova (pl. pastie.org), mert így kölcsönösen csak a levegőbe üzengetünk. Én el tudom képzelni, hogy a lassúság oka egészen máshol van, mint keresed. Nem ritka eset, hogy az ember kitalálja magának, mi lehet a probléma, és erőnek erejével arra az egy dologra kérdez rá, ahelyett, hogy szélesebb rálátást adna másoknak, akik még egyébre is tudnának figyelni, mert nem alakult ki bennük ugyanaz a meggyőződés.
Bölcs gondolat, értem én, de látod az inline-os dolog is baromságnak volt titulálva pedig ott még kód is volt. :-)
Egyébként tényleg teljesen logikus amit leírtál.
Jelen esetben csak az érdekelt volna hogy statikus tömb méretét változóval meg lehet -e adni, innen kanyarodtunk el a dinamikus felé.
„A mutatózást régebben se szerettem”
Én speciel nem sokszor használtam dinamikus tömböt, de mutatókat speciel soha. Tudom, hogy lehet (a Turbóban még egyenesen muszáj volt), és bizonyos célokra nyilván nagyon hasznos, de amire nekem kellett, ott tökéletesen működött ugyanaz az indexelés, mint a statikus tömböknél.
'Bölcs gondolat, értem én, de látod az inline-os dolog is baromságnak volt titulálva pedig ott még kód is volt. :-)' Csak nem jó. Megnézted a mellékelt kódot és a kapott eredményt látható, hogy minimális az eltérés. A fordítóknál nagyon sok dolog alapból be van kapcsolva, az inline és az optimozation is. A titok nyitja: jó kódot kell írni. Az emberi hülyeséget nem tolerálja, javítja a gép - bár van amit igen :). A Delphi-t szinte 'gyerekkora' óta ismerem, sebességben vetekszik a C++ kódokkal - nem a Lazarus / Free Pascal hanem a fizetős Delphi -
Vannak dolgok minden nyelvben amiket nem tudsz megváltoztatni, ha tetszik ha nem. Az ezeréves Delphi 7 - 2002 - fordító a mai napig is kenterbe veri a FPC 3.0-t, nem véletlenül kell érte - mármint az újabb verziókért - kiégetni 1 misit. C++ Builder, Delphi XE.. szinte ugyanazt fordítja. Az ingyenes dolgoknak szinte mindig van hátulütője. Talán nézd meg a Gimp-et és a PhotoShop-ot. Bármennyire is jó a Gimp, a másik mindig előtte lesz egy lépéssel. Nincs is ezzel gond, mert valamilyen szinten versenyhelyzetet teremt, amivel csak a felhasználó jár jól.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!