Kezdőoldal » Számítástechnika » Programozás » Egy lista elemeinek számozása...

Egy lista elemeinek számozása miért 0-ról indul?

Figyelt kérdés

pl pythonban:


lista = ["nagyon", "fura", "ez", "nekem"]

print lista[1]


a kimenet a "fura" lesz, de miért nem a "nagyon"? nem látok benne túl sok logikát így elsőre...


2013. okt. 28. 11:44
1 2
 11/18 anonim ***** válasza:
szerintem teljesen logikus, hogy 0-tól indulnak.
2013. okt. 28. 16:15
Hasznos számodra ez a válasz?
 12/18 2xSü ***** válasza:
100%

Előjel nélküli egész esetén a nulla a legkisebb szám. A tömb nem más mint az egész számok és adott elemek közötti egyirányú megfeleltetés.


Ha mondjuk egy adott rendszerben 16 bites szám az index, és mi pontosan 65536 darab dolgot akarunk tárolni, akkor az 1-essel kezdődő index miatt csak probléma lenne.


Igen, elsőre fura, hogy az indexelés nulláról indul, sok esetben probléma is van belőle, de bizonyos esetekben kimondottan hasznos, és megspórol néhány műveletet a dolog. Mire gondolok? Pl. az, hogy egy adott naptári nap a hét melyik napjára esik, arra van egy képlet, ami pl. modulust a végén használ. Az eredmény tehát 0-tól 6-ig lehet egész szám. Ilyen esetben kimondottan hasznos tud lenni, hogy 0-tól kezdődik az indexelés, hiszen elég ennyit írni: napok=["hétfő","kedd",…,"vasárnap"], majd kiírni a napok[(………)%7] értéket. Megspórolunk egy +1-et például.


Stringeknél is ugye a legtöbb nyelv nullával kezdi a számozást. Itt is egy dec2hex függvény megírásánál jól jön a dolog. Pl. az utolsó számjegy kiszámolása:

hexchars="0123456789ABCDEF";

lastchar=hexchars.substr(number % 16,1);

Itt is megspórolunk egy „+1” műveletet.


Tehát a nullától kezdődő index abból a korból maradt fenn, mikor egy tömbben azért esélyes volt, hogy valaki pont annyi elemet akar tárolni, mint ahány szám ábrázolható az adott típusú egész esetén. De ennek ellenére még itt-ott lehet hasznos is.

2013. okt. 28. 16:33
Hasznos számodra ez a válasz?
 13/18 anonim ***** válasza:

A matematikában vannak pozitív, negatív számok, és a nulla. A számítógépben azonban csak pozitív és negatív számok vannak. Az előjelbitnek csak két állapota van. A nulla esetén ez úgy van beállítva, mint a pozitív számoknál.

Az első magas szintű programozási nyelv még egytől indexelt, és így indexel még ma is. Csak később, egy másik nyelvben kezdtek el nullától indexelni, talán azért, mert így egyszerűbbek a számítások.

2013. okt. 28. 21:24
Hasznos számodra ez a válasz?
 14/18 iostream ***** válasza:
Persze a számítógép ismeri a negatív 0 értékét, csak nem a kettes komplemensű egészábrázolásban. De való igaz, a 0 önkényesen pozitív számként tárolódik HA előjelesen tárolsz. Ettől még a 0 nem lesz pozitív, hiszen a kérdező pont a magasszintűséget hiányolja, hogy vonatkoztassunk el a hardvertől.
2013. okt. 28. 21:26
Hasznos számodra ez a válasz?
 15/18 anonim ***** válasza:

A szépen lepontozott második nem mondott hülyeséget, az amerikai programozási hagyományból ered a 0 kezdőindex.


Itt ugye arról van szó, hogy adott hosszon, mondjuk bemelegítésül egy byte-on 0 és 2^bitszám-1 közötti (pl. 0-255) számokat ábrázolhatsz. Ha nullától kezded a számozást, akkor ki tudod használni mind a 256 lehetőséget. Ha egytől, akkor elpazaroltál egyet, vagy folyton konvertálgatni kéne, ami meg időpocsékolás.

2013. okt. 30. 09:11
Hasznos számodra ez a válasz?
 16/18 anonim ***** válasza:

"Csak azért, mert ugye elvileg a magas szintű nyelvek lényege, hogy az ember logikájához jobban igazodjon."


Melyik ember logikájához? :-)

Mindig kompromisszumokban kell gondolkodni. Az első számítógépeket még csak matematikusok tudták programozni gépi kódban. Aztán jött Kemény János György azzal az ideával, hogy legyen a számítógép mindenkié, először is a nagygép processzora működjön időosztással, hogy több terminált kiszolgáljon, és többen hozzáférjenek az erőforráshoz (még akkor nem volt PC), másodszor legyen egy olyan programnyelv, amit mindenki elsajátíthat, ez lett a BASIC. A BASIC úgy van megalkotva, hogy egy jól fejlett agyú, értelmes gimnazista is megtanulhassa. De neki is lesznek olyan osztálytársai, akik ugyanerre képtelenek lesznek.

Egy igen magas szintű nyelv ebből a szempontból az SQL lekérdező nyelv, ami egy angol anyanyelvű ember számára majdnem hétköznapi mondatokból áll. "Válaszd ki a születési dátumot az emberek táblából, ahol a megadott nem a férfi." Stb. Na de ehhez is kell valami formális logika, mert aki a matematikai ÉS/VAGY működését meg a műveleti sorrendet nem bírja felfogni, az az SQL-t sem bírja használni!


Szóval a lényeg, hogy azért az embernek is igazodnia kell közben a gép logikájához, amíg nem gondolatolvasó gépet építünk.

2013. okt. 30. 09:18
Hasznos számodra ez a válasz?
 17/18 anonim ***** válasza:
Ha jól emlékszem, akkor ez a konvenció az ALGOLból ered, ami európai és amerikai számítástechnikusok közös munkája. A legtöbb ma használt programozási nyelv pedig az ALGOL utódja, ezért ezt is örökölték.
2013. okt. 30. 20:48
Hasznos számodra ez a válasz?
 18/18 2xSü ***** válasza:

#15: > A szépen lepontozott második nem mondott hülyeséget, az amerikai programozási hagyományból ered a 0 kezdőindex.


Csakhogy a második válaszoló nem azt mondta, hogy „az amerikai programozási hagyományból ered a 0 kezdőindex”, hanem azt, hogy „amerikaiak 0-tól számoznak nagy általánosságban nem 1-től”, ami ebben a formában biztos, hogy nem fedi a valóságot.

2013. okt. 30. 21:49
Hasznos számodra ez a válasz?
1 2

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!