Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ Príspevkov: 12 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 30.04.08
Prihlásený: 15.05.15
Príspevky: 884
Témy: 3
Príspevok NapísalOffline : 07.07.2008 17:25

Zdravim, mal by som na vas jednu otazku... Kvoli comu sa vyuzivaju pointery(ukazovatele)? Ja som to pochopil asi tak, ze ich pouzitim nebude program zaberat tolko miesta v pamati RAM, teda po dealokacii sa vlastne hodnota pointera vymaze z pamati, pricom premenna by tam ostala a zaberala miesto. Aspon takto som to pochopil. Mohol by mi s tym niekto pomoct, prosim? Snazil som sa hladat cez google aj wikipediu, no k ziadnemu uspokojivemu vysledku som sa nedopracoval. Dakujem :)


Offline

Užívateľ
Užívateľ
Vyuzitie pointerov

Registrovaný: 30.05.07
Prihlásený: 29.03.14
Príspevky: 641
Témy: 46
Príspevok NapísalOffline : 07.07.2008 19:31

ak hovorime o pascale tak mas pravdu + pomocou nich sa robia v pascale dynamicke struktury ako zasobnik a fronta


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 30.04.08
Prihlásený: 15.05.15
Príspevky: 884
Témy: 3
Príspevok Napísal autor témyOffline : 07.07.2008 19:39

Ano, ano, o pascale. No lenze je mi trochu nejasne, naco sluzia, ved namiesto nich sa mozu pouzit normalne premenne, nie? :roll: Mohol by si mi to, prosim ta trochu obozrejmit? dik


Offline

Užívateľ
Užívateľ
Vyuzitie pointerov

Registrovaný: 30.05.07
Prihlásený: 29.03.14
Príspevky: 641
Témy: 46
Príspevok NapísalOffline : 07.07.2008 20:29

v pascale existuje iba staticke pole = na zaciatku definujes velkost a ta sa neda menit, ked chces ale dynamicke pole tak musis pouzit smernik (pointer), v packale to je poriadna prplacka a povedal by som ze aj dost tazke
napriklad dynamicke pole (tiez sa to vola linked list) sa da vytvorit takto:
Kód:
type p = ^bunka;
        bunka = record
              value : integer;
              next : p
              end;
var first, last, current : p;


takze 'p' je ukazatel na 'bunka', bunka je zaznam - ma svoju hodnotu, napr integer, a ma svoj ukzatel na dalsiu bunku (p)
Potom sa s tym pracuje pomocou premennych first, last, current typu p. Ak chces tak napis a napisem aj priklad pouzitia, ze ako sa to robi v programe potom.


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 30.04.08
Prihlásený: 15.05.15
Príspevky: 884
Témy: 3
Príspevok Napísal autor témyOffline : 07.07.2008 20:40

Hm, OK, ak mas cas, tak by si mohol postnut nejaku ukazku... Ale ajtak, s pascalom uz koncim a prechadzam na C, len toto mi nebolo trohu jasne...
Diki moc... :D


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 21.05.08
Prihlásený: 04.10.09
Príspevky: 21
Témy: 0
Príspevok NapísalOffline : 07.07.2008 21:09

neutronmind píše:
Hm, OK, ak mas cas, tak by si mohol postnut nejaku ukazku... Ale ajtak, s pascalom uz koncim a prechadzam na C, len toto mi nebolo trohu jasne...
Diki moc... :D

Citácia:
Pointers are the heart and soul of a programming language C

Teda ak chceš programovať a vedieť pracovať s čímkoľvek, tak pointery musíš poznať a hlavne ich vedieť používať. Je ich treba už pri otvorení súboru, kde plníš pamäť štruktúry ukazujúceho pointeru na túto štruktúru. Tiež je nutnosť vedieť pointerovu aritmetiku. Už samotné funkcie majú majú formálne parametre pointerov, kde ukladáš či už absolutnú adresu premennej, alebo samotný pointer.


Offline

Užívateľ
Užívateľ
Vyuzitie pointerov

Registrovaný: 30.05.07
Prihlásený: 29.03.14
Príspevky: 641
Témy: 46
Príspevok NapísalOffline : 07.07.2008 22:25

teraz nemam cas pisat program, mozno behom tyzdna, tak tu je aspon priklad na frontu a zasobnik: http://www.learn-programming.za.net/pro ... arn14.html

imho pointre sa oplati vediet este tak pre C ale vo vyssich jazykoch (java napr) je to uz skoro uplne skryte pred programatorom, nas to ani v C nejako moc neucili kedze dynamicke pole sa tam da vytvorit jednoducho a fifo a lifo sme tam nerobili, tak ani neviem ci sa to nejako moc v C lisi od pascalu
Ak sa niekomu bude chciet mohol by dat kus pekneho kodu s lifo alebo fifo v C (ak nie tak pozrem na webe ak si najdem cas)


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 08.06.08
Prihlásený: 09.07.08
Príspevky: 39
Témy: 1
Príspevok NapísalOffline : 08.07.2008 1:53

nerobim sice s packalom iba s C-ckom ale tam by mali pointery fungovat rovnako. co sa tyka pouzitia. predstav si ze mas pole 4 stringov. ako mozno vies string ako datovy typ v c-cku neexistuje. musis ho deklarovat polom charov. takze to uz mame 2rozmerne pole. a ked sa pozries ako to vyzera "vnutry"

deklaracia s polom ukazatelov:
Kód:
char *cislo[] = {"Jeden", "Dva", "Tri", "Stryri"};

V pamati to potom vyzera takto
cislo:
+----+
| +--|--------->| Jeden\0 |
| +--|--------->| Dva\0 |
| +--|--------->| Tri\0 |
| +--|--------->| Styri/0 |
+----+

a takto to vyzera s 2rozmernym polom
Kód:
char cislo[][15] = {"Jeden", "Dva", "Tri", "Styri"};


+-----------------------------------------------------------------------+
| Jeden\0 Dva\0 Tri\0 Styri\0 |
+-----------------------------------------------------------------------+
0 15 30 45

cize je z toho hned vidiet ze ked deklarujes 2rozmerne pole tak sa ti alokuje v pamati 45 bytov, a ked deklarujes pole ukazatelov nemusi ani jeden odkazovat na celych 15 bytov. jeden moze na 2 byte dalsi moze na 50.
a pamat musis ale alokovat vzdy. pokial mas napriklad strukturu a chces vytvorit pointer na tu strukturu mozes to urobit bud takto:
napriklad mas strukturu bod
Kód:
struct bod {
        int a;
        int b;
}

tak pointer vytovirs bud predanim adresy:
Kód:
struct bod p, *u;
u = &p;

to sa hodi hlavne ked predavas adresu pointeru ako parameter funkcie.
alebo mozes prenu manualne alokovat pamet tzv. "za behu":
Kód:
struct bod *u;
u = (struct bod *)malloc(sizeof(struct bod));

ale to uz pletiem c-cko s paskalom. ale hadam si pochopil co som sa snazil napisat ;)







_________________
XMPP(Jabber): k3tch@xmpp.sk
No money? No Credit? Eat shit!
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 25.06.08
Prihlásený: 13.10.10
Príspevky: 30
Témy: 10
Príspevok NapísalOffline : 08.07.2008 14:02

neutronmind píše:
Ano, ano, o pascale. No lenze je mi trochu nejasne, naco sluzia, ved namiesto nich sa mozu pouzit normalne premenne, nie? :roll: Mohol by si mi to, prosim ta trochu obozrejmit? dik


Predstav si, že máš program, ktorý zaznamenáva mená a ukladá si ich do poľa.
A máš problém: akú dĺžku dať poľu typu char, ktoré bude predstavovať meno? 20 znakov? 50? 100? A koľko môže byť mien? 100? 1 000? 6 000 000 000? (No dobre, to trochu preháňam...) Ak budeš mať namiesto poľa polí char pole ukazovateľov na char, môžeš definovať funkciu, ktorá vždy pri pridaní nového mena pridelí presne toľko pamäte, koľko meno potrebuje a vytvorí niekde v pamäti pole char, na ktoré bude ukazovať ukazovateľ z hlavného poľa (pamätá si adresu). Bude existovať len toľko polí char, koľko potrebuješ a každé bude mať len takú dĺžku, akú potrebuješ. Budeš mať síce mnoho ukazovateľov, ktoré nebudú ukazovať nikam, ale stále lepšie ako prázdne polia zaberajúce tak po 50 bajtov...

Ukazovatele sa oplatia len vtedy, keď ukazujú na štruktúru alebo reťazec, jednoducho na niečo, čo by spotrebovalo viac pamäte ako ukazovateľ (to je okolo 10 bajtov, teraz presne neviem).







_________________
"Civilizácia sa rozvíja nárastom počtu dôležitých úkonov, ktoré môžeme vykonávať bez predchádzajúcej úvahy."
Alfred North Whitehead
Offline

Užívateľ
Užívateľ
Vyuzitie pointerov

Registrovaný: 16.02.08
Prihlásený: 08.12.10
Príspevky: 235
Témy: 13
Príspevok NapísalOffline : 29.07.2008 14:09

Ide o setrenie pamate. Na to cele pointre. Aj tak jazyk ako Java, tam o poitroch ani nevies, lebo vsetko za teba robi automatika (gargabe collector). Preto je aj Java pomala, lebo automatika je pomala. Aj napriklad automaticka prevodovka, sice je pohodlna, ale nedostanes z toho maximum.

Ak vies kolko pamate ti treba, tak das staticky, je to aj rychlejsie. Ale dost casto nevies, kolko pamate ti bude treba...

Len si vsimni widnows Vista. Vobec nesetria pamatou a vidis kolko ramky to zere. A zbytocne. Optmilizacia a jednoduchost Microsfu asi nic nehovori. Vsetky ich softy z ktorymi som sa stretol, boli prehnane komplikovane... Take, tazkopadne...

Potom rozne velmi caste a velmi vhodne struktury si bez pointrov neviem predstavit. Ani nie tak pole, to ma alternativu v statickom. Ale taky strom si bez pointrov neviem ani predstavit. Stromy sa brutalne vyuzivaju a maju velmi dobre vlastnosti...

Aj ked clovek nepouziva pointre, napr. javista, ale kazdopadne je ich dobre vediet lebo na pozadi su vzdy, aj databazy... Proste kopu veci na nic stoji... Java ma super univerzalnost, ale s pamatou v Jave nehnes....

Kazdopadne myslim, ze programator by mal mat pointre v malicku. Aj zakladne stromy :)

Priznam sa, v pascale mi systax robi aj robi problemy. Nikdy si take veci neviem zapamatat. Ale v C vsetko ok, velmi sa mi paci syntax.... Ale pascal ak fakt musim pozerat ze ako sa co pise :P


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 21.05.08
Prihlásený: 04.10.09
Príspevky: 21
Témy: 0
Príspevok NapísalOffline : 29.07.2008 14:49

ado21 píše:
Kazdopadne myslim, ze programator by mal mat pointre v malicku. Aj zakladne stromy

Len škoda, že to je tá menšia menšina.

ado21 píše:
Priznam sa, v pascale mi systax robi aj robi problemy. Nikdy si take veci neviem zapamatat. Ale v C vsetko ok, velmi sa mi paci syntax.... Ale pascal ak fakt musim pozerat ze ako sa co pise

A prečo robiť v pascale?

Inak čo ide o tie pointery, tak sa ti s tým moc ani neoplatí zaoberať, pokiaľ len prechádzaš základmi jazyka C (alebo nebodaj si nevšímaš pojmy ako heap, buffer,...). Výhodu ty môžeš vidieť pri práci s poľom (vyššie v príspevku je popísane viac).


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 30.04.08
Prihlásený: 15.05.15
Príspevky: 884
Témy: 3
Príspevok Napísal autor témyOffline : 29.07.2008 20:37

OK, dakujem vsetkym za odpovede, uz mi je to jasnejsie. Btw. potom v tej knizke som aj mal napisane niektore informacie, ktore ste tu uz ohladom pointerov spominali... Zhodou okolnosti sa prave idem ucit o pointeroch v C... Len sa mi to spociatku zdalo nezmyselne, pouzit pointer, ved som mohol pouzit normalnu premennu... A vtedy som uz bol nazhaveny na C, takze som polovicu knihu o Pascale preskocil :D Nastastie sa tykala iba prace so subormi, ale to uz viem robit v Cecku... Tak este raz vsetkym dakujem za prispevky :nod: :)


Odpovedať na tému [ Príspevkov: 12 ] 


Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy. Využitie procesora

v Intel - Integrated Electronics

18

3360

14.04.2012 17:26

broseph Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Cpu vyuzitie

v Intel - Integrated Electronics

2

327

25.09.2012 7:37

EndersoN Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Využitie cpu

v Intel - Integrated Electronics

7

402

08.09.2012 16:37

marxxxcel Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Využitie DLNA

v Siete

1

618

26.06.2011 13:52

shiro Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Vyuzitie RAM

v Notebooky a netbooky

2

473

13.06.2012 23:13

Zsolti Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Využitie i7

v Procesory

4

341

26.01.2013 11:20

Echo Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Využitie joysticku

v Externé zariadenia

2

360

23.02.2012 15:12

Trivi Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Vyuzitie nadbytkov...

v Modifikácie, návody a projekty

9

1827

06.03.2007 19:51

maugggly Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Vyuzitie RAMdisku

v Operačné systémy Microsoft

5

817

21.02.2010 18:45

armin.owen Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Vyuzitie ram

v Pamäte

2

436

22.02.2016 8:01

shiro Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Využitie ram

v Pamäte

22

1496

08.10.2015 12:39

DodoSKv Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. využitie pamäte

v Antivíry a antispywary

9

477

05.09.2015 20:41

tairikuokami Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Vyuzitie CPU

v AMD - Advanced Micro Devices

8

1083

14.03.2007 21:15

Baracuda Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Využitie GPS

v Smartfóny a tablety

3

440

13.01.2012 17:42

KatjushaMan Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Využitie procesora

v AMD - Advanced Micro Devices

18

1361

20.11.2011 12:56

magic Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. vyuzitie siete

v Siete

8

586

14.11.2009 16:37

Mindfreak Zobrazenie posledných príspevkov


Nemôžete zakladať nové témy v tomto fóre
Nemôžete odpovedať na témy v tomto fóre
Nemôžete upravovať svoje príspevky v tomto fóre
Nemôžete mazať svoje príspevky v tomto fóre

Skočiť na:  
cron

Powered by phpBB Jarvis © 2005 - 2024 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF
Ako väčšina webových stránok aj my používame cookies. Zotrvaním na webovej stránke súhlasíte, že ich môžeme používať.
Všeobecné podmienky, spracovanie osobných údajov a pravidlá fóra