ਐਰੇ (ਡਾਟਾ ਕਿਸਮ)
ਕੰਪਿਊਟਰ ਵਿਗਿਆਨ ਵਿੱਚ, ਐਰੇ ਇੱਕ ਡੇਟਾ ਕਿਸਮ ਹੈ ਜੋ ਤੱਤਾਂ (ਮੁੱਲ ਜਾਂ ਵੇਰੀਏਬਲ) ਦੇ ਇੱਕ ਸੰਗ੍ਰਹਿ ਨੂੰ ਦਰਸਾਉਂਦਾ ਹੈ, ਹਰੇਕ ਇੱਕ ਜਾਂ ਇੱਕ ਤੋਂ ਵੱਧ ਸੂਚਕਾਂਕ (ਪਛਾਣ ਵਾਲੀਆਂ ਕੁੰਜੀਆਂ) ਦੁਆਰਾ ਚੁਣਿਆ ਜਾਂਦਾ ਹੈ ਜੋ ਪ੍ਰੋਗਰਾਮ ਐਗਜ਼ੀਕਿਊਸ਼ਨ ਦੌਰਾਨ ਰਨ ਟਾਈਮ 'ਤੇ ਗਣਨਾ ਕੀਤੀ ਜਾ ਸਕਦੀ ਹੈ। ਅਜਿਹੇ ਸੰਗ੍ਰਹਿ ਨੂੰ ਆਮ ਤੌਰ 'ਤੇ ਐਰੇ ਵੇਰੀਏਬਲ ਜਾਂ ਐਰੇ ਮੁੱਲ ਕਿਹਾ ਜਾਂਦਾ ਹੈ।[1]
ਗਣਿਤਿਕ ਧਾਰਨਾਵਾਂ ਵੈਕਟਰ ਅਤੇ ਮੈਟ੍ਰਿਕਸ ਦੇ ਸਮਾਨਤਾ ਦੁਆਰਾ, ਇੱਕ ਅਤੇ ਦੋ ਸੂਚਕਾਂਕ ਵਾਲੀਆਂ ਐਰੇ ਕਿਸਮਾਂ ਨੂੰ ਅਕਸਰ ਕ੍ਰਮਵਾਰ ਵੈਕਟਰ ਕਿਸਮ ਅਤੇ ਮੈਟ੍ਰਿਕਸ ਕਿਸਮ ਕਿਹਾ ਜਾਂਦਾ ਹੈ। ਹੋਰ ਆਮ ਤੌਰ 'ਤੇ, ਇੱਕ ਬਹੁ-ਆਯਾਮੀ ਐਰੇ ਕਿਸਮ ਨੂੰ ਇੱਕ ਟੈਂਸਰ ਕਿਸਮ ਕਿਹਾ ਜਾ ਸਕਦਾ ਹੈ, ਭੌਤਿਕ ਧਾਰਨਾ ਦੇ ਸਮਾਨਤਾ ਦੁਆਰਾ, ਟੈਂਸੋ।[2]
ਐਰੇ ਕਿਸਮਾਂ ਲਈ ਭਾਸ਼ਾ ਸਮਰਥਨ ਵਿੱਚ ਕੁਝ ਬਿਲਟ-ਇਨ ਐਰੇ ਡੇਟਾ ਕਿਸਮਾਂ, ਕੁਝ ਸਿੰਟੈਕਟਿਕ ਨਿਰਮਾਣ (ਐਰੇ ਕਿਸਮ ਕੰਸਟਰਕਟਰ) ਸ਼ਾਮਲ ਹੋ ਸਕਦੇ ਹਨ, ਜੋ ਪ੍ਰੋਗਰਾਮਰ ਅਜਿਹੀਆਂ ਕਿਸਮਾਂ ਨੂੰਤੱਤਾਂ ਪਰਿਭਾਸ਼ਿਤ ਕਰਨ ਅਤੇ ਐਰੇ ਵੇਰੀਏਬਲ ਘੋਸ਼ਿਤ ਕਰਨ ਲਈ ਵਰਤ ਸਕਦਾ ਹੈ, ਅਤੇ ਐਰੇ ਐਲੀਮੈਂਟਸ ਨੂੰ ਇੰਡੈਕਸ ਕਰਨ ਲਈ ਵਿਸ਼ੇਸ਼ ਸੰਕੇਤ। ਉਦਾਹਰਨ ਲਈ, ਪਾਸਕਲ ਪ੍ਰੋਗਰਾਮਿੰਗ ਭਾਸ਼ਾ ਵਿੱਚ, ਪੂਰਨ ਅੰਕ ਦੀ ਘੋਸ਼ਣਾ ਕਿਸਮ ਮਾਈ ਟੇਬਲ= ਐਰੇ [1..4,1..2], ਇੱਕ ਨਵੀਂ ਐਰੇ ਡਾਟਾ ਕਿਸਮ ਨੂੰ ਪਰਿਭਾਸ਼ਿਤ ਕਰਦੀ ਹੈ ਜਿਸਨੂੰ ਮਾਈ ਟੇਬਲ ਕਹਿੰਦੇ ਹਨ। ਘੋਸ਼ਣਾ ਵੇਰੀਏਬਲ ਏ: ਮਾਈ ਟੇਬਲ ਫਿਰ ਉਸ ਕਿਸਮ ਦੇ ਇੱਕ ਵੇਰੀਏਬਲ ਏ ਨੂੰ ਪਰਿਭਾਸ਼ਿਤ ਕਰਦਾ ਹੈ, ਜੋ ਕਿ ਅੱਠ ਤੱਤਾਂ ਦਾ ਇੱਕ ਸਮੂਹ ਹੈ, ਹਰੇਕ ਇੱਕ ਪੂਰਨ ਅੰਕ ਵੇਰੀਏਬਲ ਹੈ ਜੋ ਦੋ ਸੂਚਕਾਂਕ ਦੁਆਰਾ ਪਛਾਣਿਆ ਜਾਂਦਾ ਹੈ। ਪਾਸਕਲ ਪ੍ਰੋਗਰਾਮ ਵਿੱਚ, ਉਹਨਾਂ ਤੱਤਾਂ ਨੂੰ A[1,1], A[1,2], A[2,1], …, A[4,2] ਵਜੋਂ ਦਰਸਾਇਆ ਗਿਆ ਹੈ। [3] ਵਿਸ਼ੇਸ਼ ਐਰੇ ਕਿਸਮਾਂ ਨੂੰ ਅਕਸਰ ਭਾਸ਼ਾ ਦੀਆਂ ਮਿਆਰੀ ਲਾਇਬ੍ਰੇਰੀਆਂ ਦੁਆਰਾ ਪਰਿਭਾਸ਼ਿਤ ਕੀਤਾ ਜਾਂਦਾ ਹੈ।
ਗਤੀਸ਼ੀਲ ਸੂਚੀਆਂ ਵੀ ਗਤੀਸ਼ੀਲ ਐਰੇ ਨਾਲੋਂਏ ਵਧੇਰੇ ਆਏ ਅਤੇ ਲਾਏ ੂ ਕਰਨ ਵਿੱ ਏ ਆਸਾਨ ਹਨ [ਸ਼ੱਕੀ - ਚਰਚਾ]। ਐ ਿਸਮਾਂ ਨੂੰ ਰਿਕਾਰਡ ਕਿਸਮਾਂ ਤੋਂ ਵੱਖਰਾ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਕਿਉਂਕਿ ਉਹ ਰਨ ਟਾਈਮ 'ਤੇ ਐਲੀਮੈਂਟ ਸੂਚਕਾਂਕ ਦੀ ਗਣਨਾ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦੇ ਹਨ, ਜਿਵੇਂ ਕਿ ਪਾਸਕਲ ਅਸਾਈਨਮੈਂਟ A[I,J] := A[N-I,2*J]। ਹੋਰ ਚੀਜ਼ਾਂ ਦੇ ਨਾਲ, ਇਹ ਵਿਸ਼ੇਸ਼ਤਾ ਇੱਕ ਸਿੰਗਲ ਦੁਹਰਾਓ ਸਟੇਟਮੈਂਟ ਨੂੰ ਇੱਕ ਐਰੇ ਵੇਰੀਏਬਲ ਦੇ ਕਈ ਤੱਤਾਂ ਨੂੰ ਆਪਹੁਦਰੇ ਢੰਗ ਨਾਲ ਪ੍ਰਕਿਰਿਆ ਕਰਨ ਦੀ ਆਗਿਆ ਦਿੰਦੀ ਹੈ।
ਵਧੇਰੇ ਸਿਧਾਂਤਕ ਸੰਦਰਭਾਂ ਵਿੱਚ, ਖਾਸ ਤੌਰ 'ਤੇ ਟਾਈਪ ਥਿਊਰੀ ਵਿੱਚ ਅਤੇ ਐਬਸਟਰੈਕਟ ਐਲਗੋਰਿਦਮ ਦੇ ਵਰਣਨ ਵਿੱਚ, ਸ਼ਬਦ "ਐਰੇ" ਅਤੇ "ਐਰੇ ਟਾਈਪ" ਕਈ ਵਾਰ ਐਬਸਟਰੈਕਟ ਡੈਟਾ ਟਾਈਪ (ADT) ਦਾ ਹਵਾਲਾ ਦਿੰਦੇ ਹਨ ਜਿਸਨੂੰ ਐਬਸਟਰੈਕਟ ਐਰੇ ਵੀ ਕਿਹਾ ਜਾਂਦਾ ਹੈ ਜਾਂ ਇੱਕ ਐਸੋਸਿਏਟਿਵ ਐਰੇ ਦਾ ਹਵਾਲਾ ਦੇ ਸਕਦਾ ਹੈ। ਜ਼ਿਆਦਾਤਰ ਭਾਸ਼ਾਵਾਂ ਵਿੱਚ ਇੱਕ ਆਮ ਐਰੇ ਕਿਸਮ ਦੇ ਬੁਨਿਆਦੀ ਕਾਰਜਾਂ ਅਤੇ ਵਿਵਹਾਰ ਵਾਲਾ ਗਣਿਤਿਕ ਮਾਡਲ - ਮੂਲ ਰੂਪ ਵਿੱਚ, ਤੱਤਾਂ ਦਾ ਇੱਕ ਸੰਗ੍ਰਹਿ ਜੋ ਰਨ-ਟਾਈਮ 'ਤੇ ਗਣਨਾ ਕੀਤੇ ਸੂਚਕਾਂਕ ਦੁਆਰਾ ਚੁਣਿਆ ਜਾਂਦਾ ਹੈ।
ਭਾਸ਼ਾ 'ਤੇ ਨਿਰਭਰ ਕਰਦੇ ਹੋਏ, ਐਰੇ ਦੀਆਂ ਕਿਸਮਾਂ ਹੋਰ ਡਾਟਾ ਕਿਸਮਾਂ ਨੂੰ ਓਵਰਲੈਪ ਕਰ ਸਕਦੀਆਂ ਹਨ (ਜਾਂ ਨਾਲ ਪਛਾਣੀਆਂ ਜਾਂਦੀਆਂ ਹਨ) ਜੋ ਮੁੱਲਾਂ ਦੇ ਸਮੂਹਾਂ ਦਾ ਵਰਣਨ ਕਰਦੀਆਂ ਹਨ, ਜਿਵੇਂ ਕਿ ਸੂਚੀਆਂ ਅਤੇ ਸਤਰ। ਐਰੇ ਕਿਸਮਾਂ ਨੂੰ ਅਕਸਰ ਐਰੇ ਡੇਟਾ ਢਾਂਚੇ ਦੁਆਰਾ ਲਾਗੂ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਪਰ ਕਈ ਵਾਰ ਹੋਰ ਸਾਧਨਾਂ ਦੁਆਰਾ, ਜਿਵੇਂ ਕਿ ਹੈਸ਼ ਟੇਬਲ, ਲਿੰਕਡ ਸੂਚੀਆਂ, ਜਾਂ ਖੋਜ
ਇਤਿਹਾਸ
[ਸੋਧੋ]ਹੇਨਿਜ਼ ਰੁਟੀਸ਼ੌਸਰ, ਇੱਕ ਪ੍ਰੋਗਰਾਮਿੰਗ ਭਾਸ਼ਾ ਸੁਪਰ ਪਲਾਨ (1949-1951) ਵਿੱਚ ਬਹੁ-ਆਯਾਮੀ ਐਰੇ ਸ਼ਾਮਲ ਹਨ। ਰੁਟੀਸ਼ੌਸਰ ਨੇ ਹਾਲਾਂਕਿ ਇਹ ਵਰਣਨ ਕਰਦੇ ਹੋਏ ਕਿ ਉਸਦੀ ਭਾਸ਼ਾ ਲਈ ਇੱਕ ਕੰਪਾਇਲਰ ਕਿਵੇਂ ਬਣਾਇਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ, ਇੱਕ ਨੂੰ ਲਾਗੂ ਨਹੀਂ ਕੀਤਾ।
ਅਸੈਂਬਲੀ ਭਾਸ਼ਾਵਾਂ ਅਤੇ ਵੀ,ਸੀ,ਪੀ,ਐੱਲ[4] ਵਰਗੀਆਂ ਨੀਵੇਂ-ਪੱਧਰੀ ਭਾਸ਼ਾਵਾਂ ਵਿੱਚ ਆਮ ਤੌਰ 'ਤੇ ਐਰੇ ਲਈ ਕੋਈ ਸਿੰਟੈਕਟਿਕ ਸਮਰਥਨ ਨਹੀਂ ਹੁੰਦਾ।
ਕੁਸ਼ਲ ਗਣਨਾ ਲਈ ਐਰੇ ਢਾਂਚਿਆਂ ਦੀ ਮਹੱਤਤਾ ਦੇ ਕਾਰਨ, ਫੋਰਟਰਨ (1957), ਕੋਬੋਲ (1960), ਅਤੇ ਐਲਗੋਲ 60 (1960) ਸਮੇਤ ਸਭ ਤੋਂ ਪੁਰਾਣੀਆਂ ਉੱਚ-ਪੱਧਰੀ ਪ੍ਰੋਗਰਾਮਿੰਗ ਭਾਸ਼ਾਵਾਂ ਨੇ ਬਹੁ-ਸਭ ਲਈ ਸਹਾਇਤਾ ਪ੍ਰਦਾਨ ਕੀਤੀ।
ਐਬਸਟ੍ਰੈਕਟ ਐਰੇ
[ਸੋਧੋ]ਇੱਕ ਐਰੇ ਡੇਟਾ ਬਣਤਰ ਨੂੰ ਦੋ ਓਪਰੇਸ਼ਨਾਂ ਦੇ ਨਾਲ ਇੱਕ ਐਬਸਟਰੈਕਟ ਡੇਟਾ ਢਾਂਚੇ (ਇੱਕ ਐਬਸਟਰੈਕਟ ਐਰੇ) ਦੇ ਰੂਪ ਵਿੱਚ ਗਣਿਤਿਕ ਰੂਪ ਵਿੱਚ ਮਾਡਲ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ।
Get (A, I): ਐਰੇ ਏ ਦੇ ਐਲੀਮੈਂਟ ਵਿੱਚ ਸਟੋਰ ਕੀਤਾ ਡੇਟਾ ਜਿਸ ਦੇ ਸੂਚਕਾਂਕ ਪੂਰਨ ਅੰਕ ਟੂਪਲ ਆਈ ਹਨ।
Set (A,I,V): ਉਹ ਐਰੇ ਜੋ ਉਸ ਤੱਤ ਦੇ ਮੁੱਲ ਨੂੰ ਵੀ 'ਤੇ ਸੈੱਟ ਕਰਕੇ ਨਤੀਜਾ ਦਿੰਦਾ ਹੈ।
ਇਹਨਾਂ ਓਪਰੇਸ਼ਨਾਂ ਨੂੰ ਸਵੈ-ਸਿੱਧਿਆਂ ਨੂੰ ਪੂਰਾ ਕਰਨ ਲਈ ਲੋੜੀਂਦਾ ਹੈ।[5]
Get (set (A,I,V)= V
Get(Set(I, V ), J) = Get(A,J) ਜੇਕਰ ਆਈ≠ J
ਕਿਸੇ ਵੀ ਐਰੇ ਸਟੇਟ ਲਈ, ਕੋਈ ਵੀ ਮੁੱਲ V, ਅਤੇ ਕੋਈ ਵੀ ਟੂਪਲ I, ਜੇ ਜਿਸ ਲਈ ਓਪਰੇਸ਼ਨ ਪਰਿਭਾਸ਼ਿਤ ਕੀਤੇ ਗਏ ਹਨ।
ਪਹਿਲੇ ਅਕਸੀਓਮ ਦਾ ਮਤਲਬ ਹੈ ਕਿ ਹਰੇਕ ਤੱਤ ਇੱਕ ਵੇਰੀਏਬਲ ਵਾਂਗ ਵਿਹਾਰ ਕਰਦਾ ਹੈ। ਦੂਜੇ ਸੂਚਕਾਂਕ ਦਾ ਮਤਲਬ ਹੈ ਕਿ ਵੱਖੋ-ਵੱਖਰੇ ਸੂਚਕਾਂਕ ਵਾਲੇ ਤੱਤ ਡਿਸਜਜੁਇੰਟ ਵੇਰੀਏਬਲ ਦੇ ਰੂਪ ਵਿੱਚ ਵਿਹਾਰ ਕਰਦੇ ਹਨ, ਤਾਂ ਜੋ ਇੱਕ ਤੱਤ ਵਿੱਚ ਮੁੱਲ ਨੂੰ ਸਟੋਰ ਕਰਨ ਨਾਲ ਕਿਸੇ ਹੋਰ ਤੱਤ ਦੇ ਮੁੱਲ ਨੂੰ ਪ੍ਰਭਾਵਤ ਨਾ ਹੋਵੇ।
ਇਹ ਅਕਸੀਓਮਸ ਵੈਧ ਸੂਚਕਾਂਕ ਟੂਪਲਜ਼ ਆਈ ਦੇ ਸੈੱਟ 'ਤੇ ਕੋਈ ਰੁਕਾਵਟਾਂ ਨਹੀਂ ਰੱਖਦੇ ਹਨ, ਇਸਲਈ ਇਸ ਐਬਸਟਰੈਕਟ ਮਾਡਲ ਨੂੰ ਤਿਕੋਣੀ ਮੈਟ੍ਰਿਕਸ ਅਤੇ ਹੋਰ ਅਜੀਬ-ਆਕਾਰ ਵਾਲੀਆਂ ਐਰੇਆਂ ਲਈ ਵਰਤਿਆ ਜਾ ਸਕਦਾ ਹੈ।
ਲਾਗੂ ਕਰਨਾ
[ਸੋਧੋ]ਐਰੇ ਬਣਤਰਾਂ (ਪੁਆਇੰਟਰ ਅੰਕਗਣਿਤ ਦੁਆਰਾ ਇੰਡੈਕਸਿੰਗ ਦੇ ਨਾਲ) ਵਰਗੀਆਂ ਕਿਸਮਾਂ ਦੇ ਵੇਰੀਏਬਲਾਂ ਨੂੰ ਪ੍ਰਭਾਵਸ਼ਾਲੀ ਢੰਗ ਨਾਲ ਲਾਗੂ ਕਰਨ ਲਈ, ਬਹੁਤ ਸਾਰੀਆਂ ਭਾਸ਼ਾਵਾਂ ਸੂਚਕਾਂਕ ਨੂੰ ਪੂਰਨ ਅੰਕ ਡੇਟਾ ਕਿਸਮਾਂ [1] (ਜਾਂ ਹੋਰ ਕਿਸਮਾਂ ਜਿਨ੍ਹਾਂ ਨੂੰ ਪੂਰਨ ਅੰਕਾਂ ਵਜੋਂ ਵਿਆਖਿਆ ਕੀਤੀ ਜਾ ਸਕਦੀ ਹੈ, ਜਿਵੇਂ ਕਿ ਬਾਈਟਸ) ਤੱਕ ਸੀਮਤ ਕਰ ਦਿੰਦੀਆਂ ਹਨ। ਅਤੇ ਗਿਣੀਆਂ ਗਈਆਂ ਕਿਸਮਾਂ), ਅਤੇ ਇਹ ਲੋੜ ਹੈ ਕਿ ਸਾਰੇ ਤੱਤ ਇੱਕੋ ਜਿਹੇ ਡੇਟਾ ਕਿਸਮ ਅਤੇ ਸਟੋਰੇਜ਼ ਆਕਾਰ ਹੋਣ। ਇਹਨਾਂ ਵਿੱਚੋਂ ਬਹੁਤੀਆਂ ਭਾਸ਼ਾਵਾਂ ਹਰੇਕ ਸੂਚਕਾਂਕ ਨੂੰ ਪੂਰਨ ਅੰਕਾਂ ਦੇ ਇੱਕ ਸੀਮਿਤ ਅੰਤਰਾਲ ਤੱਕ ਵੀ ਸੀਮਿਤ ਕਰਦੀਆਂ ਹਨ, ਜੋ ਕਿ ਐਰੇ ਵੇਰੀਏਬਲ ਦੇ ਜੀਵਨ ਕਾਲ ਦੌਰਾਨ ਸਥਿਰ ਰਹਿੰਦਾ ਹੈ। ਕੁਝ ਕੰਪਾਇਲ ਕੀਤੀਆਂ ਭਾਸ਼ਾਵਾਂ ਵਿੱਚ, ਅਸਲ ਵਿੱਚ, ਸੂਚਕਾਂਕ ਰੇਂਜਾਂ ਨੂੰ ਕੰਪਾਇਲ ਸਮੇਂ ਜਾਣਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ।
ਦੂਜੇ ਪਾਸੇ, ਕੁਝ ਪ੍ਰੋਗਰਾਮਿੰਗ ਭਾਸ਼ਾਵਾਂ ਵਧੇਰੇ ਉਦਾਰ ਐਰੇ ਕਿਸਮਾਂ ਪ੍ਰਦਾਨ ਕਰਦੀਆਂ ਹਨ, ਜੋ ਮਨਮਾਨੇ ਮੁੱਲਾਂ, ਜਿਵੇਂ ਕਿ ਫਲੋਟਿੰਗ-ਪੁਆਇੰਟ ਨੰਬਰ, ਸਤਰ, ਵਸਤੂਆਂ, ਸੰਦਰਭਾਂ, ਆਦਿ ਦੁਆਰਾ ਇੰਦੇ ਦੀ ਆਗਿਆ ਦਿੰਦੀਆਂ ਹਨ। ਅਜਿਹੇ ਸੂਚਕਾਂਕ ਮੁੱਲਾਂ ਨੂੰ ਅੰਤਰਾਲ ਤੱਕ ਸੀਮਤ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ, ਬਹੁਤ ਘੱਟ ਇੱਕ ਸਥਿਰ ਅੰਤਰਾਲ. ਇਸ ਲਈ, ਇਹ ਭਾਸ਼ਾਵਾਂ ਆਮ ਤੌਰ 'ਤੇ ਕਿਸੇ ਵੀ ਸਮੇਂ ਮਨਮਾਨੇ ਨਵੇਂ ਤੱਤਾਂ ਨੂੰ ਬਣਾਉਣ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦੀਆਂ ਹਨ। ਇਹ ਚੋਣ ਐਰੇ ਡਾਟਾ ਢਾਂਚੇ ਦੇ ਰੂਪ ਵਿੱਚ ਐਰੇ ਕਿਸਮਾਂ ਨੂੰ ਲਾਗੂ ਕਰਨ ਤੋਂ ਰੋਕਦੀ ਹੈ। ਭਾਵ, ਉਹ ਭਾਸ਼ਾਵਾਂ ਇੱਕ ਹੋਰ ਆਮ ਸਹਿਯੋਗੀ ਐਰੇ ਸਿਮੈਂਟਿਕਸ ਨੂੰ ਲਾਗੂ ਕਰਨ ਲਈ ਐਰੇ-ਵਰਗੇ ਸੰਟੈਕਸ ਦੀ ਵਰਤੋਂ ਕਰਦੀਆਂ ਹਨ, ਅਤੇ ਇਸਲਈ ਇੱਕ ਹੈਸ਼ ਟੇਬਲ ਜਾਂ ਕਿਸੇ ਹੋਰ ਖੋਜ ਡੇਟਾ ਢਾਂਚੇ ਦੁਆਰਾ ਲਾਗੂ ਕੀਤਾ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ।
ਭਾਸ਼ਾ ਸਹਾਇਤਾ
[ਸੋਧੋ]ਬਹੁ-ਆਯਾਮੀ ਐਰੇ
[ਸੋਧੋ]ਕਿਸੇ ਤੱਤ ਨੂੰ ਨਿਸ਼ਚਿਤ ਕਰਨ ਲਈ ਲੋੜੀਂਦੇ ਸੂਚਕਾਂਕ ਦੀ ਸੰਖਿਆ ਨੂੰ ਐਰੇ ਕਿਸਮ ਦਾ ਅਯਾਮ, ਅਯਾਮ ਜਾਂ ਦਰਜਾ ਕਿਹਾ ਜਾਂਦਾ ਹੈ। (ਇਹ ਨਾਮਕਰਨ ਰੇਖਿਕ ਅਲਜਬਰੇ ਵਿੱਚ ਅਯਾਮ ਦੀ ਧਾਰਨਾ ਨਾਲ ਟਕਰਾਅ ਕਰਦਾ ਹੈ, ਜੋ ਇੱਕ ਮੈਟ੍ਰਿਕਸ ਦੀ ਸ਼ਕਲ ਨੂੰ ਦਰਸਾਉਂਦਾ ਹੈ। ਇਸ ਤਰ੍ਹਾਂ, 5 ਕਤਾਰਾਂ ਅਤੇ 4 ਕਾਲਮਾਂ ਵਾਲੇ ਸੰਖਿਆਵਾਂ ਦੀ ਇੱਕ ਐਰੇ, ਇਸਲਈ 20 ਤੱਤ, ਨੂੰ ਕੰਪਿਊਟਿੰਗ ਸੰਦਰਭਾਂ ਵਿੱਚ ਮਾਪ 2 ਕਿਹਾ ਜਾਂਦਾ ਹੈ, ਪਰ ਦਰਸਾਉਂਦਾ ਹੈ ਇੱਕ ਮੈਟ੍ਰਿਕਸ ਜਿਸਨੂੰ 4×5-ਅਯਾਮੀ ਕਿਹਾ ਜਾਂਦਾ ਹੈ, ਨਾਲ ਹੀ, "ਰੈਂਕ" ਦਾ ਕੰਪਿਊਟਰ ਵਿਗਿਆਨ ਦਾ ਅਰਥ ਟੈਂਸਰ ਰੈਂਕ ਦੀ ਧਾਰਨਾ ਨਾਲ ਟਕਰਾਅ ਕਰਦਾ ਹੈ, ਜੋ ਕਿ ਇੱਕ ਮੈਟ੍ਰਿਕਸ ਦੇ ਰੈਂਕ ਦੇ ਰੇਖਿਕ ਅਲਜਬਰਾ ਸੰਕਲਪ ਦਾ ਇੱਕ ਆਮਕਰਨ ਹੈ।
ਬਹੁਤ ਸਾਰੀਆਂ ਭਾਸ਼ਾਵਾਂ ਸਿਰਫ਼ ਇੱਕ-ਅਯਾਮੀ ਐਰੇ ਦਾ ਸਮਰਥਨ ਕਰਦੀਆਂ ਹਨ। ਉਹਨਾਂ ਭਾਸ਼ਾਵਾਂ ਵਿੱਚ, ਇੱਕ ਬਹੁ-ਆਯਾਮੀ ਐਰੇ ਨੂੰ ਆਮ ਤੌਰ 'ਤੇ ਇੱਕ ਇਲਿਫ ਵੈਕਟਰ ਦੁਆਰਾ ਦਰਸਾਇਆ ਜਾਂਦਾ ਹੈ, ਇੱਕ ਅਯਾਮ ਘੱਟ ਦੇ ਐਰੇ ਦੇ ਸੰਦਰਭਾਂ ਦੀ ਇੱਕ-ਅਯਾਮੀ ਐਰੇ। ਇੱਕ ਦੋ-ਅਯਾਮੀ ਐਰੇ, ਖਾਸ ਤੌਰ 'ਤੇ, ਇਸਦੀਆਂ ਕਤਾਰਾਂ ਦੇ ਪੁਆਇੰਟਰਾਂ ਦੇ ਵੈਕਟਰ ਵਜੋਂ ਲਾਗੂ ਕੀਤਾ ਜਾਵੇਗਾ। ਇਸ ਤਰ੍ਹਾਂ ਇੱਕ ਐਰੇ A ਦੀ ਕਤਾਰ i ਅਤੇ ਕਾਲਮ j ਵਿੱਚ ਇੱਕ ਤੱਤ ਡਬਲ ਇੰਡੈਕਸਿੰਗ ਦੁਆਰਾ ਐਕਸੈਸ ਕੀਤਾ ਜਾਵੇਗਾ (A[i][j] ਆਮ ਸੰਕੇਤ ਵਿੱਚ)। ਬਹੁ-ਆਯਾਮੀ ਐਰੇਜ਼ ਦੀ ਨਕਲ ਕਰਨ ਦਾ ਇਹ ਤਰੀਕਾ ਜੇਗੇਡ ਐਰੇ ਬਣਾਉਣ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦਾ ਹੈ, ਜਿੱਥੇ ਹਰੇਕ ਕਤਾਰ ਦਾ ਵੱਖਰਾ ਆਕਾਰ ਹੋ ਸਕਦਾ ਹੈ - ਜਾਂ, ਆਮ ਤੌਰ 'ਤੇ, ਜਿੱਥੇ ਹਰੇਕ ਸੂਚਕਾਂਕ ਦੀ ਵੈਧ ਰੇਂਜ ਸਾਰੇ ਪਿਛਲੇ ਸੂਚਕਾਂਕ ਦੇ ਮੁੱਲਾਂ 'ਤੇ ਨਿਰਭਰ ਕਰਦੀ ਹੈ।
ਬਹੁ-ਆਯਾਮੀ ਐਰੇ ਲਈ ਇਹ ਪ੍ਰਤੀਨਿਧਤਾ C ਅਤੇ C++ ਸਾਫਟਵੇਅਰ ਵਿੱਚ ਕਾਫ਼ੀ ਪ੍ਰਚਲਿਤ ਹੈ। ਹਾਲਾਂਕਿ, C ਅਤੇ C++ ਬਹੁ-ਆਯਾਮੀ ਐਰੇ ਲਈ ਇੱਕ ਲੀਨੀਅਰ ਇੰਡੈਕਸਿੰਗ ਫਾਰਮੂਲੇ ਦੀ ਵਰਤੋਂ ਕਰਨਗੇ ਜੋ ਕੰਪਆਇਲ ਟਾਈਮ ਸਥਿਰ ਆਕਾਰ ਦੇ ਨਾਲ ਘੋਸ਼ਿਤ ਕੀਤੇ ਗਏ ਹਨ, ਉਦਾਹਰਨ ਲਈ. int A[10][20] ਜਾਂ int A[m][n] ਦੁਆਰਾ, ਰਵਾਇਤੀ int **A ਦੀ ਬਜਾਏ।
ਇੰਡੈਕਸਿੰਗ ਨੋਟੇਸ਼ਨ
[ਸੋਧੋ]ਜ਼ਿਆਦਾਤਰ ਪ੍ਰੋਗਰਾਮਿੰਗ ਭਾਸ਼ਾਵਾਂ ਜੋ ਐਰੇ ਦਾ ਸਮਰਥਨ ਕਰਦੀਆਂ ਹਨ ਸਟੋਰ ਅਤੇ ਚੋਣ ਕਾਰਜਾਂ ਦਾ ਸਮਰਥਨ ਕਰਦੀਆਂ ਹਨ, ਅਤੇ ਇੰਡੈਕਸਿੰਗ ਲਈ ਵਿਸ਼ੇਸ਼ ਸੰਟੈਕਸ ਹੁੰਦੀਆਂ ਹਨ। ਮੁਢਲੀਆਂ ਭਾਸ਼ਾਵਾਂ ਵਿੱਚ ਬਰੈਕਟ ਵਰਤੇ ਜਾਂਦੇ ਸਨ, ਉਦਾਹਰਨ ਲਈ A(i,j), ਜਿਵੇਂ ਕਿ FORTRAN ਵਿੱਚ; ਦੂਸਰੇ ਵਰਗ ਬਰੈਕਟ ਚੁਣਦੇ ਹਨ, ਉਦਾਹਰਨ ਲਈ A[i,j] ਜਾਂ A[i][j], ਜਿਵੇਂ ਕਿ ਐਲਗੋਲ 60 ਅਤੇ ਪਾਸਕਲ (ਫੰਕਸ਼ਨ ਕਾਲਾਂ ਲਈ ਬਰੈਕਟਾਂ ਦੀ ਵਰਤੋਂ ਤੋਂ ਵੱਖ ਕਰਨ ਲਈ)।
ਸੂਚਕਾਂਕ ਦੀਆਂ ਕਿਸਮਾਂ
[ਸੋਧੋ]ਐਰੇ ਡਾਟਾ ਕਿਸਮਾਂ ਨੂੰ ਅਕਸਰ ਐਰੇ ਢਾਂਚੇ ਵਜੋਂ ਲਾਗੂ ਕੀਤਾ ਜਾਂਦਾ ਹੈ: ਪੂਰਨ ਅੰਕ (ਜਾਂ ਪੂਰੀ ਤਰ੍ਹਾਂ ਕ੍ਰਮਬੱਧ) ਮੁੱਲਾਂ ਤੱਕ ਸੀਮਤ ਸੂਚਕਾਂਕ ਦੇ ਨਾਲ, ਐਰੇ ਬਣਾਉਣ ਦੇ ਸਮੇਂ 'ਤੇ ਫਿਕਸਡ ਇੰਡੈਕਸ ਰੇਂਜ, ਅਤੇ ਮਲਟੀ-ਲੀਨੀਅਰ ਐਲੀਮੈਂਟ ਐਡਰੈਸਿੰਗ। ਇਹ ਜ਼ਿਆਦਾਤਰ "ਤੀਜੀ ਪੀੜ੍ਹੀ" ਭਾਸ਼ਾਵਾਂ ਵਿੱਚ ਸੀ, ਅਤੇ ਅਜੇ ਵੀ ਜ਼ਿਆਦਾਤਰ ਸਿਸਟਮ ਪ੍ਰੋਗਰਾਮਿੰਗ ਭਾਸ਼ਾਵਾਂ ਜਿਵੇਂ ਕਿ Ada, C, ਅਤੇ C++ ਦਾ ਮਾਮਲਾ ਹੈ। ਕੁਝ ਭਾਸ਼ਾਵਾਂ ਵਿੱਚ, ਹਾਲਾਂਕਿ, ਐਰੇ ਡੇਟਾ ਕਿਸਮਾਂ ਵਿੱਚ ਆਰਬਿਟਰੇਰੀ ਕਿਸਮ ਅਤੇ ਗਤੀਸ਼ੀਲ ਤੱਤ ਰਚਨਾ ਦੇ ਸੂਚਕਾਂਕ ਦੇ ਨਾਲ, ਐਸੋਸਿਏਟਿਵ ਐਰੇ ਦੇ ਅਰਥ ਵਿਗਿਆਨ ਹੁੰਦੇ ਹਨ। ਇਹ ਕੁਝ ਸਕ੍ਰਿਪਟਿੰਗ ਭਾਸ਼ਾਵਾਂ ਜਿਵੇਂ ਕਿ Awk ਅਤੇ Lua, ਅਤੇ ਸਟੈਂਡਰਡ C++ ਲਾਇਬ੍ਰੇਰੀਆਂ ਦੁਆਰਾ ਪ੍ਰਦਾਨ ਕੀਤੀਆਂ ਗਈਆਂ ਕੁਝ ਐਰੇ ਕਿਸਮਾਂ ਵਿੱਚ ਹੁੰਦਾ ਹੈ।
ਸੀਮਾਵਾਂ ਦੀ ਜਾਂਚ
[ਸੋਧੋ]ਕੁਝ ਭਾਸ਼ਾਵਾਂ (ਜਿਵੇਂ ਕਿ ਪਾਸਕਲ ਅਤੇ ਮੋਡੂਲਾ) ਹਰੇਕ ਪਹੁੰਚ 'ਤੇ ਸੀਮਾਵਾਂ ਦੀ ਜਾਂਚ ਕਰਦੀਆਂ ਹਨ, ਇੱਕ ਅਪਵਾਦ ਪੈਦਾ ਕਰਦੀਆਂ ਹਨ ਜਾਂ ਪ੍ਰੋਗਰਾਮ ਨੂੰ ਰੱਦ ਕਰਦੀਆਂ ਹਨ ਜਦੋਂ ਕੋਈ ਸੂਚਕਾਂਕ ਇਸਦੀ ਵੈਧ ਸੀਮਾ ਤੋਂ ਬਾਹਰ ਹੁੰਦਾ ਹੈ। ਕੰਪਿਈਲਰ ਗਤੀ ਲਈ ਵਪਾਰਕ ਸੁਰੱਖਿਆ ਲਈ ਇਹਨਾਂ ਜਾਂਚਾਂ ਨੂੰ ਬੰਦ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਦੇ ਸਕਦੇ ਹਨ। ਹੋਰ ਭਾਸ਼ਾਵਾਂ (ਜਿਵੇਂ ਕਿ FORTRAN ਅਤੇ C) ਪ੍ਰੋਗਰਾਮਰ 'ਤੇ ਭਰੋਸਾ ਕਰਦੇ ਹਨ ਅਤੇ ਕੋਈ ਜਾਂਚ ਨਹੀਂ ਕਰਦੇ ਹਨ। ਚੰਗੇ ਕੰਪਾਈਲਰ ਸੰਭਾਵੀ ਮੁੱਲਾਂ ਦੀ ਰੇਂਜ ਨੂੰ ਨਿਰਧਾਰਤ ਕਰਨ ਲਈ ਪ੍ਰੋਗਰਾਮ ਦਾ ਵਿਸ਼ਲੇਸ਼ਣ ਵੀ ਕਰ ਸਕਦੇ ਹਨ ਜੋ ਸੂਚਕਾਂਕ ਵਿੱਚ ਹੋ ਸਕਦਾ ਹੈ, ਅਤੇ ਇਹ ਵਿਸ਼ਲੇਸ਼ਣ ਸੀਮਾ-ਜਾਂਚ ਨੂੰ ਖਤਮ ਕਰਨ ਦੀ ਅਗਵਾਈ
ਸੂਚਕਾਂਕ ਮੂਲ
[ਸੋਧੋ]ਕੁਝ ਭਾਸ਼ਾਵਾਂ, ਜਿਵੇਂ ਕਿ C, ਸਿਰਫ਼ ਜ਼ੀਰੋ-ਅਧਾਰਿਤ ਐਰੇ ਕਿਸਮਾਂ ਪ੍ਰਦਾਨ ਕਰਦੀਆਂ ਹਨ, ਜਿਸ ਲਈ ਕਿਸੇ ਵੀ ਸੂਚਕਾਂਕ ਲਈ ਘੱਟੋ-ਘੱਟ ਵੈਧ ਮੁੱਲ 0 ਹੁੰਦਾ ਹੈ। ਇਹ ਚੋਣ ਐਰੇ ਲਾਗੂ ਕਰਨ ਅਤੇ ਪਤਾ ਗਣਨਾ ਲਈ ਸੁਵਿਧਾਜਨਕ ਹੈ। C ਵਰਗੀ ਭਾਸ਼ਾ ਦੇ ਨਾਲ, ਕਿਸੇ ਵੀ ਐਰੇ ਦੇ ਅੰਦਰੂਨੀ ਹਿੱਸੇ ਲਈ ਇੱਕ ਪੁਆਇੰਟਰ ਨੂੰ ਪਰਿਭਾਸ਼ਿਤ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ ਜੋ ਪ੍ਰਤੀਕ ਰੂਪ ਵਿੱਚ ਇੱਕ ਸੂਡੋ-ਐਰੇ ਵਜੋਂ ਕੰਮ ਕਰੇਗਾ ਜੋ ਨਕਾਰਾਤਮਕ ਸੂਚਕਾਂਕ ਨੂੰ ਅਨੁਕੂਲ ਬਣਾਉਂਦਾ ਹੈ। ਇਹ ਸਿਰਫ਼ ਇਸ ਲਈ ਕੰਮ ਕਰਦਾ ਹੈ ਕਿਉਂਕਿ C ਵਰਤਿਆ ਜਾਣ 'ਤੇ ਸੀਮਾਵਾਂ ਦੇ ਵਿਰੁੱਧ ਸੂਚਕਾਂਕ ਦੀ ਜਾਂਚ ਨਹੀਂ ਕਰਦਾ ਹੈ।
ਹੋਰ ਭਾਸ਼ਾਵਾਂ ਸਿਰਫ਼ ਇੱਕ-ਅਧਾਰਿਤ ਐਰੇ ਕਿਸਮਾਂ ਪ੍ਰਦਾਨ ਕਰਦੀਆਂ ਹਨ, ਜਿੱਥੇ ਹਰੇਕ ਸੂਚਕਾਂਕ 1 ਤੋਂ ਸ਼ੁਰੂ ਹੁੰਦਾ ਹੈ; ਇਹ ਗਣਿਤ ਵਿੱਚ ਮੈਟ੍ਰਿਕਸ ਅਤੇ ਗਣਿਤ ਦੇ ਕ੍ਰਮਾਂ ਲਈ ਰਵਾਇਤੀ ਪਰੰਪਰਾ ਹੈ। ਕੁਝ ਭਾਸ਼ਾਵਾਂ, ਜਿਵੇਂ ਕਿ ਪਾਸਕਲ ਅਤੇ ਲੁਆ, n-ਅਧਾਰਿਤ ਐਰੇ ਕਿਸਮਾਂ ਦਾ ਸਮਰਥਨ ਕਰਦੀਆਂ ਹਨ, ਜਿਨ੍ਹਾਂ ਦੇ ਘੱਟੋ-ਘੱਟ ਕਾਨੂੰਨੀ ਸੂਚਕਾਂਕ ਪ੍ਰੋਗਰਾਮਰ ਦੁਆਰਾ ਚੁਣੇ ਜਾਂਦੇ ਹਨ। ਹਰੇਕ ਚੋਣ ਦੇ ਅਨੁਸਾਰੀ ਗੁਣ ਗਰਮ ਬਹਿਸ ਦਾ ਵਿਸ਼ਾ ਰਹੇ ਹਨ। ਜ਼ੀਰੋ-ਅਧਾਰਿਤ ਇੰਡੈਕਸਿੰਗ ਔਫ-ਬਾਈ-ਵਨ ਜਾਂ ਫੈਂਸਪੋਸਟ ਗਲਤੀਆਂ ਤੋਂ ਬਚ ਸਕਦੀ ਹੈ, [10] ਖਾਸ ਤੌਰ 'ਤੇ (i = 0; i <5; i += 1) ਲਈ 0-ਆਧਾਰਿਤ (5-0) ਵਾਰ ਦੁਹਰਾਉਂਦਾ ਹੈ, ਜਦੋਂ ਕਿ ਬਰਾਬਰ ਵਿੱਚ (i = 1; i <6; i += 1) ਲਈ 1-ਅਧਾਰਿਤ ਅੱਧੀ-ਖੁੱਲੀ ਰੇਂਜ 6 ਆਪਣੇ ਆਪ ਵਿੱਚ ਇੱਕ ਸੰਭਾਵੀ ਅਜਿਹੀ ਗਲਤੀ ਹੈ, ਖਾਸ ਤੌਰ 'ਤੇ ਲੰਬਾਈ() + 1 ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ, ਅਤੇ (i = ਲਈ 1-ਆਧਾਰਿਤ ਸੰਮਿਲਿਤ ਸੀਮਾ) 1; i <= 5; i+= 1) ਦੁਹਰਾਉਂਦਾ ਹੈ (5-1) +1 ਵਾਰ।
ਉੱਚਤਮ ਸੂਚਕਾਂਕ
[ਸੋਧੋ]ਇੱਕ ਐਰੇ ਘੋਸ਼ਣਾ ਵਿੱਚ ਦਿਖਾਈ ਦੇਣ ਵਾਲੇ ਸੰਖਿਆਵਾਂ ਅਤੇ ਉਸ ਐਰੇ ਦੇ ਆਖਰੀ ਤੱਤ ਦੇ ਸੂਚਕਾਂਕ ਦੇ ਵਿਚਕਾਰ ਸਬੰਧ ਵੀ ਭਾਸ਼ਾ ਦੁਆਰਾ ਬਦਲਦਾ ਹੈ। ਕਈ ਭਾਸ਼ਾਵਾਂ (ਜਿਵੇਂ ਕਿ C) ਵਿੱਚ, ਕਿਸੇ ਨੂੰ ਐਰੇ ਵਿੱਚ ਸ਼ਾਮਲ ਤੱਤਾਂ ਦੀ ਗਿਣਤੀ ਨਿਰਧਾਰਤ ਕਰਨੀ ਚਾਹੀਦੀ ਹੈ; ਜਦੋਂ ਕਿ ਦੂਜਿਆਂ ਵਿੱਚ (ਜਿਵੇਂ ਕਿ ਪਾਸਕਲ ਅਤੇ ਵਿਜ਼ੂਅਲ ਬੇਸਿਕ .NET) ਇੱਕ ਨੂੰ ਆਖਰੀ ਤੱਤ ਦੇ ਸੂਚਕਾਂਕ ਦਾ ਸੰਖਿਆਤਮਕ ਮੁੱਲ ਨਿਰਧਾਰਤ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ। ਇਹ ਕਹਿਣ ਦੀ ਲੋੜ ਨਹੀਂ, ਇਹ ਅੰਤਰ ਉਹਨਾਂ ਭਾਸ਼ਾਵਾਂ ਵਿੱਚ ਬੇਲੋੜਾ ਹੈ ਜਿੱਥੇ ਸੂਚਕਾਂਕ 1 ਤੋਂ ਸ਼ੁਰੂ ਹੁੰਦੇ ਹਨ, ਜਿਵੇਂ ਕਿ ਲੂਆ।
ਐਰੇ ਅਲਜਬਰਾ
[ਸੋਧੋ]ਕੁਝ ਪ੍ਰੋਗਰਾਮਿੰਗ ਭਾਸ਼ਾਵਾਂ ਐਰੇ ਪ੍ਰੋਗਰਾਮਿੰਗ ਦਾ ਸਮਰਥਨ ਕਰਦੀਆਂ ਹਨ, ਜਿੱਥੇ ਕੁਝ ਖਾਸ ਡਾਟਾ ਕਿਸਮਾਂ ਲਈ ਪਰਿਭਾਸ਼ਿਤ ਓਪਰੇਸ਼ਨਾਂ ਅਤੇ ਫੰਕਸ਼ਨਾਂ ਨੂੰ ਉਹਨਾਂ ਕਿਸਮਾਂ ਦੇ ਤੱਤਾਂ ਦੇ ਐਰੇ ਤੱਕ ਸਪਸ਼ਟ ਤੌਰ 'ਤੇ ਵਧਾਇਆ ਜਾਂਦਾ ਹੈ। ਇਸ ਤਰ੍ਹਾਂ ਕੋਈ ਵੀ ਦੋ ਐਰੇ A ਅਤੇ B ਦੇ ਅਨੁਸਾਰੀ ਤੱਤਾਂ ਨੂੰ ਜੋੜਨ ਲਈ A+B ਲਿਖ ਸਕਦਾ ਹੈ। ਆਮ ਤੌਰ 'ਤੇ ਇਹ ਭਾਸ਼ਾਵਾਂ ਤੱਤ-ਦਰ-ਤੱਤ ਗੁਣਾ ਅਤੇ ਰੇਖਿਕ ਅਲਜਬਰੇ ਦੇ ਮਿਆਰੀ ਮੈਟ੍ਰਿਕਸ ਗੁਣਨਫਲ ਪ੍ਰਦਾਨ ਕਰਦੀਆਂ ਹਨ, ਅਤੇ ਇਹਨਾਂ ਵਿੱਚੋਂ ਕਿਸ ਨੂੰ * ਆਪਰੇਟਰ ਦੁਆਰਾ ਦਰਸਾਇਆ ਜਾਂਦਾ ਹੈ, ਬਦਲਦਾ ਹੈ। ਭਾਸ਼ਾ ਦੁਆਰਾ.
ਐਰੇ ਪ੍ਰੋਗਰਾਮਿੰਗ ਸਮਰੱਥਾਵਾਂ ਪ੍ਰਦਾਨ ਕਰਨ ਵਾਲੀਆਂ ਭਾਸ਼ਾਵਾਂ APL ਦੇ ਇਸ ਖੇਤਰ ਵਿੱਚ ਨਵੀਨਤਾਵਾਂ ਤੋਂ ਬਾਅਦ ਫੈਲੀਆਂ ਹੋਈਆਂ ਹਨ। ਇਹ ਡੋਮੇਨ-ਵਿਸ਼ੇਸ਼ ਭਾਸ਼ਾਵਾਂ ਜਿਵੇਂ ਕਿ GAUSS, IDL, Matlab, ਅਤੇ Mathematica ਦੀਆਂ ਮੁੱਖ ਸਮਰੱਥਾਵਾਂ ਹਨ। ਉਹ ਨਵੀਂਆਂ ਭਾਸ਼ਾਵਾਂ ਵਿੱਚ ਇੱਕ ਮੁੱਖ ਸਹੂਲਤ ਹਨ, ਜਿਵੇਂ ਕਿ ਜੂਲੀਆ ਅਤੇ ਫੋਰਟਰਨ ਦੇ ਤਾਜ਼ਾ ਸੰਸਕਰਣ। ਇਹ ਸਮਰੱਥਾਵਾਂ ਹੋਰ ਆਮ ਉਦੇਸ਼ ਪ੍ਰੋਗਰਾਮਿੰਗ ਭਾਸ਼ਾਵਾਂ (ਜਿਵੇਂ ਕਿ ਪਾਈਥਨ ਲਈ ਵਿਆਪਕ ਤੌਰ 'ਤੇ ਵਰਤੀ ਜਾਂਦੀ NumPy ਲਾਇਬ੍ਰੇਰੀ) ਲਈ ਸਟੈਂਡਰਡ ਐਕਸਟੈਂਸ਼ਨ ਲਾਇਬ੍ਰੇਰੀਆਂ ਰਾਹੀਂ ਵੀ ਪ੍ਰਦਾਨ ਕੀਤੀਆਂ ਜਾਂਦੀਆਂ ਹਨ।
ਸਤਰ ਦੀਆਂ ਕਿਸਮਾਂ ਅਤੇ ਐਰੇ
[ਸੋਧੋ]ਬਹੁਤ ਸਾਰੀਆਂ ਭਾਸ਼ਾਵਾਂ ਉਸ ਕਿਸਮ ਦੇ ਮੁੱਲਾਂ ਨੂੰ ਬਣਾਉਣ ਲਈ ਵਿਸ਼ੇਸ਼ ਸੰਕੇਤ ("ਸਟ੍ਰਿੰਗ ਲਿਟਰਲ") ਦੇ ਨਾਲ ਇੱਕ ਬਿਲਟ-ਇਨ ਸਟ੍ਰਿੰਗ ਡੇਟਾ ਕਿਸਮ ਪ੍ਰਦਾਨ ਕਰਦੀਆਂ ਹਨ। ਕੁਝ ਭਾਸ਼ਾਵਾਂ (ਜਿਵੇਂ ਕਿ C) ਵਿੱਚ, ਇੱਕ ਸਤਰ ਕੇਵਲ ਅੱਖਰਾਂ ਦੀ ਇੱਕ ਲੜੀ ਹੁੰਦੀ ਹੈ, ਜਾਂ ਬਹੁਤ ਕੁਝ ਉਸੇ ਤਰੀਕੇ ਨਾਲ ਸੰਭਾਲਿਆ ਜਾਂਦਾ ਹੈ। ਦੂਜੀਆਂ ਭਾਸ਼ਾਵਾਂ, ਜਿਵੇਂ ਕਿ ਪਾਸਕਲ, ਸਟ੍ਰਿੰਗਾਂ ਅਤੇ ਐਰੇ ਲਈ ਬਹੁਤ ਵੱਖਰੀਆਂ ਕਾਰਵਾਈਆਂ ਪ੍ਰਦਾਨ ਕਰ ਸਕਦੀਆਂ ਹਨ।
ਐਰੇ ਇੰਡੈਕਸ ਰੇਂਜ ਸਵਾਲ
[ਸੋਧੋ]ਕੁਝ ਪ੍ਰੋਗਰਾਮਿੰਗ ਭਾਸ਼ਾਵਾਂ ਓਪਰੇਸ਼ਨ ਪ੍ਰਦਾਨ ਕਰਦੀਆਂ ਹਨ ਜੋ ਇੱਕ ਵੈਕਟਰ ਦਾ ਆਕਾਰ (ਐਲੀਮੈਂਟਸ ਦੀ ਗਿਣਤੀ) ਵਾਪਸ ਕਰਦੀਆਂ ਹਨ, ਜਾਂ, ਆਮ ਤੌਰ 'ਤੇ, ਇੱਕ ਐਰੇ ਦੇ ਹਰੇਕ ਸੂਚਕਾਂਕ ਦੀ ਰੇਂਜ। C ਅਤੇ C++ ਐਰੇ ਸਾਈਜ਼ ਫੰਕਸ਼ਨ ਦਾ ਸਮਰਥਨ ਨਹੀਂ ਕਰਦੇ ਹਨ, ਇਸਲਈ ਪ੍ਰੋਗਰਾਮਰਾਂ ਨੂੰ ਅਕਸਰ ਆਕਾਰ ਨੂੰ ਰੱਖਣ ਲਈ ਵੱਖਰੇ ਵੇਰੀਏਬਲ ਦੀ ਘੋਸ਼ਣਾ ਕਰਨੀ ਪੈਂਦੀ ਹੈ, ਅਤੇ ਇਸਨੂੰ ਇੱਕ ਵੱਖਰੇ ਪੈਰਾਮੀਟਰ ਵਜੋਂ ਪ੍ਰਕਿਰਿਆਵਾਂ ਵਿੱਚ ਪਾਸ ਕਰਨਾ ਪੈਂਦਾ ਹੈ।
ਇੱਕ ਨਵੀਂ ਬਣਾਈ ਐਰੇ ਦੇ ਐਲੀਮੈਂਟਸ ਵਿੱਚ ਪਰਿਭਾਸ਼ਿਤ ਮੁੱਲ (ਜਿਵੇਂ ਕਿ C ਵਿੱਚ) ਹੋ ਸਕਦੇ ਹਨ, ਜਾਂ ਇੱਕ ਖਾਸ "ਡਿਫੌਲਟ" ਮੁੱਲ ਜਿਵੇਂ ਕਿ 0 ਜਾਂ ਇੱਕ ਨਲ ਪੁਆਇੰਟਰ (ਜਿਵੇਂ ਜਾਵਾ ਵਿੱਚ) ਹੋਣ ਲਈ ਪਰਿਭਾਸ਼ਿਤ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ।
C++ ਵਿੱਚ ਇੱਕ std::vector ਆਬਜੈਕਟ ਉੱਪਰ ਦੱਸੇ ਗਏ ਕਾਰਜਕੁਸ਼ਲਤਾ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਦੇ ਨਾਲ ਸਟੋਰ, ਸਿਲੈਕਟ ਅਤੇ ਅਪੈਂਡ ਓਪਰੇਸ਼ਨ ਦਾ ਸਮਰਥਨ ਕਰਦਾ ਹੈ। ਵੈਕਟਰਾਂ ਨੂੰ ਉਹਨਾਂ ਦੇ ਆਕਾਰ ਲਈ ਪੁੱਛਗਿੱਛ ਕੀਤੀ ਜਾ ਸਕਦੀ ਹੈ ਅਤੇ ਮੁੜ ਆਕਾਰ ਦਿੱਤਾ ਜਾ ਸਕਦਾ ਹੈ। ਮੱਧ ਵਿੱਚ ਇੱਕ ਤੱਤ ਪਾਉਣ ਵਰਗੇ ਹੌਲੀ ਓਪਰੇਸ਼ਨ ਵੀ ਸਮਰਥਿਤ ਹਨ।
ਕੱਟਣਾ
[ਸੋਧੋ]ਇੱਕ ਐਰੇ ਸਲਾਈਸਿੰਗ ਓਪਰੇਸ਼ਨ ਇੱਕ ਐਰੇ-ਟਾਈਪਡ ਇਕਾਈ (ਮੁੱਲ ਜਾਂ ਵੇਰੀਏਬਲ) ਦੇ ਤੱਤਾਂ ਦਾ ਇੱਕ ਸਬਸੈੱਟ ਲੈਂਦਾ ਹੈ ਅਤੇ ਫਿਰ ਉਹਨਾਂ ਨੂੰ ਕਿਸੇ ਹੋਰ ਐਰੇ-ਟਾਈਪ ਵਾਲੀ ਇਕਾਈ ਦੇ ਰੂਪ ਵਿੱਚ ਇਕੱਠਾ ਕਰਦਾ ਹੈ, ਸੰਭਵ ਤੌਰ 'ਤੇ ਹੋਰ ਸੂਚਕਾਂਕ ਦੇ ਨਾਲ। ਜੇਕਰ ਐਰੇ ਦੀਆਂ ਕਿਸਮਾਂ ਨੂੰ ਐਰੇ ਬਣਤਰਾਂ ਵਜੋਂ ਲਾਗੂ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਤਾਂ ਬਹੁਤ ਸਾਰੇ ਉਪਯੋਗੀ ਸਲਾਈਸਿੰਗ ਓਪਰੇਸ਼ਨ (ਜਿਵੇਂ ਕਿ ਇੱਕ ਉਪ-ਐਰੇ ਦੀ ਚੋਣ ਕਰਨਾ, ਸੂਚਕਾਂਕ ਦੀ ਅਦਲਾ-ਬਦਲੀ ਕਰਨਾ, ਜਾਂ ਸੂਚਕਾਂਕ ਦੀ ਦਿਸ਼ਾ ਨੂੰ ਉਲਟਾਉਣਾ) ਢਾਂਚੇ ਦੇ ਡੋਪ ਵੈਕਟਰ ਨੂੰ ਹੇਰਾਫੇਰੀ ਕਰਕੇ ਬਹੁਤ ਕੁਸ਼ਲਤਾ ਨਾਲ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ। ਸੰਭਵ ਸਲਾਈਸਿੰਗ ਲਾਗੂ ਕਰਨ ਦੇ ਵੇਰਵਿਆਂ 'ਤੇ ਨਿਰਭਰ ਕਰਦੀ ਹੈ: ਉਦਾਹਰਨ ਲਈ, FORTRAN ਇੱਕ ਮੈਟ੍ਰਿਕਸ ਵੇਰੀਏਬਲ ਦੇ ਇੱਕ ਕਾਲਮ ਨੂੰ ਕੱਟਣ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦਾ ਹੈ, ਪਰ ਇੱਕ ਕਤਾਰ ਨਹੀਂ, ਅਤੇ ਇਸਨੂੰ ਇੱਕ ਵੈਕਟਰ ਵਜੋਂ ਮੰਨਦਾ ਹੈ; ਜਦੋਂ ਕਿ C ਇੱਕ ਮੈਟ੍ਰਿਕਸ ਤੋਂ ਇੱਕ ਕਤਾਰ ਨੂੰ ਕੱਟਣ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦਾ ਹੈ, ਪਰ ਇੱਕ ਕਾਲਮ ਨਹੀਂ।
ਦੂਜੇ ਪਾਸੇ, ਹੋਰ ਸਲਾਈਸਿੰਗ ਓਪਰੇਸ਼ਨ ਸੰਭਵ ਹਨ ਜਦੋਂ ਐਰੇ ਕਿਸਮਾਂ ਨੂੰ ਹੋਰ ਤਰੀਕਿਆਂ ਨਾਲ ਲਾਗੂ ਕੀਤਾ ਜਾਂਦਾ ਹੈ।
ਮੁੜ ਆਕਾਰ ਦੇਣਾ
[ਸੋਧੋ]ਕੁਝ ਭਾਸ਼ਾਵਾਂ ਗਤੀਸ਼ੀਲ ਐਰੇ (ਜਿਸ ਨੂੰ ਮੁੜ ਆਕਾਰ ਦੇਣ ਯੋਗ, ਵਧਣਯੋਗ ਜਾਂ ਵਿਸਤ੍ਰਿਤ ਵੀ ਕਿਹਾ ਜਾਂਦਾ ਹੈ) ਦੀ ਆਗਿਆ ਦਿੰਦੀਆਂ ਹਨ: ਐਰੇ ਵੇਰੀਏਬਲ ਜਿਨ੍ਹਾਂ ਦੀ ਸੂਚਕਾਂਕ ਰੇਂਜਾਂ ਨੂੰ ਇਸ ਦੇ ਮੌਜੂਦਾ ਤੱਤਾਂ ਦੇ ਮੁੱਲਾਂ ਨੂੰ ਬਦਲੇ ਬਿਨਾਂ, ਰਚਨਾ ਤੋਂ ਬਾਅਦ ਕਿਸੇ ਵੀ ਸਮੇਂ ਫੈਲਾਇਆ ਜਾ ਸਕਦਾ ਹੈ।
ਇੱਕ-ਅਯਾਮੀ ਐਰੇ ਲਈ, ਇਹ ਸਹੂਲਤ ਇੱਕ ਓਪਰੇਸ਼ਨ "ਏਪੈਂਡ(A,x)" ਵਜੋਂ ਪ੍ਰਦਾਨ ਕੀਤੀ ਜਾ ਸਕਦੀ ਹੈ ਜੋ ਐਰੇ A ਦੇ ਆਕਾਰ ਨੂੰ ਇੱਕ ਨਾਲ ਵਧਾਉਂਦੀ ਹੈ ਅਤੇ ਫਿਰ ਆਖਰੀ ਐਲੀਮੈਂਟ ਦੇ ਮੁੱਲ ਨੂੰ x 'ਤੇ ਸੈੱਟ ਕਰਦੀ ਹੈ। ਹੋਰ ਐਰੇ ਕਿਸਮਾਂ (ਜਿਵੇਂ ਕਿ ਪਾਸਕਲ ਸਟ੍ਰਿੰਗਜ਼) ਇੱਕ ਕਨਕੇਟੇਨੇਸ਼ਨ ਆਪਰੇਟਰ ਪ੍ਰਦਾਨ ਕਰਦੀਆਂ ਹਨ, ਜਿਸਦੀ ਵਰਤੋਂ ਉਸ ਪ੍ਰਭਾਵ ਨੂੰ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਕੱਟਣ ਦੇ ਨਾਲ ਕੀਤੀ ਜਾ ਸਕਦੀ ਹੈ ਅਤੇ ਹੋਰ ਵੀ ਬਹੁਤ ਕੁਝ। ਕੁਝ ਭਾਸ਼ਾਵਾਂ ਵਿੱਚ, ਇੱਕ ਐਰੇ ਦੇ ਇੱਕ ਤੱਤ ਨੂੰ ਇੱਕ ਮੁੱਲ ਨਿਰਧਾਰਤ ਕਰਨਾ ਆਪਣੇ ਆਪ ਐਰੇ ਨੂੰ ਵਧਾਉਂਦਾ ਹੈ, ਜੇਕਰ ਲੋੜ ਹੋਵੇ, ਤਾਂ ਉਸ ਤੱਤ ਨੂੰ ਸ਼ਾਮਲ ਕੀਤਾ ਜਾ ਸਕੇ। ਹੋਰ ਐਰੇ ਕਿਸਮਾਂ ਵਿੱਚ, ਇੱਕ ਟੁਕੜੇ ਨੂੰ ਵੱਖ-ਵੱਖ ਆਕਾਰ ਦੇ ਇੱਕ ਐਰੇ ਨਾਲ ਬਦਲਿਆ ਜਾ ਸਕਦਾ ਹੈ, ਜਿਸਦੇ ਬਾਅਦ ਦੇ ਤੱਤਾਂ ਨੂੰ ਉਸ ਅਨੁਸਾਰ ਮੁੜ-ਨੰਬਰ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ - ਜਿਵੇਂ ਕਿ ਪਾਈਥਨ ਦੀ ਸੂਚੀ ਅਸਾਈਨਮੈਂਟ "A[5:5] = [10,20,30]", ਜੋ ਕਿ ਤਿੰਨ ਨਵੇਂ ਸ਼ਾਮਲ ਕਰਦਾ ਹੈ। ਤੱਤ "A[5]" ਤੋਂ ਪਹਿਲਾਂ ਤੱਤ (10,20, ਅਤੇ 30)। ਮੁੜ ਆਕਾਰ ਦੇਣ ਯੋਗ ਐਰੇ ਸੰਕਲਪਿਕ ਤੌਰ 'ਤੇ ਸੂਚੀਆਂ ਦੇ ਸਮਾਨ ਹਨ, ਅਤੇ ਦੋ ਸੰਕਲਪਾਂ ਕੁਝ ਭਾਸ਼ਾਵਾਂ ਵਿੱਚ ਸਮਾਨਾਰਥੀ ਹਨ।
ਇੱਕ ਐਕਸਟੈਂਸੀਬਲ ਐਰੇ ਨੂੰ ਇੱਕ ਫਿਕਸਡ-ਸਾਈਜ਼ ਐਰੇ ਵਜੋਂ ਲਾਗੂ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ, ਇੱਕ ਕਾਊਂਟਰ ਦੇ ਨਾਲ ਜੋ ਇਹ ਰਿਕਾਰਡ ਕਰਦਾ ਹੈ ਕਿ ਅਸਲ ਵਿੱਚ ਕਿੰਨੇ ਤੱਤ ਵਰਤੋਂ ਵਿੱਚ ਹਨ। ਜੋੜ ਕਾਰਵਾਈ ਸਿਰਫ਼ ਕਾਊਂਟਰ ਨੂੰ ਵਧਾਉਂਦੀ ਹੈ; ਜਦੋਂ ਤੱਕ ਪੂਰੀ ਐਰੇ ਦੀ ਵਰਤੋਂ ਨਹੀਂ ਕੀਤੀ ਜਾਂਦੀ, ਜਦੋਂ ਐਪੈਂਡ ਕਾਰਵਾਈ ਨੂੰ ਫੇਲ ਹੋਣ ਲਈ ਪਰਿਭਾਸ਼ਿਤ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ। ਇਹ ਇੱਕ ਸਥਿਰ ਸਮਰੱਥਾ ਦੇ ਨਾਲ ਇੱਕ ਡਾਇਨਾਮਿਕ ਐਰੇ ਦਾ ਲਾਗੂਕਰਨ ਹੈ, ਜਿਵੇਂ ਕਿ ਪਾਸਕਲ ਦੀ ਸਟ੍ਰਿੰਗ ਕਿਸਮ ਵਿੱਚ। ਵਿਕਲਪਕ ਤੌਰ 'ਤੇ, ਅਟੈਂਡ ਓਪਰੇਸ਼ਨ ਇੱਕ ਵੱਡੇ ਆਕਾਰ ਦੇ ਨਾਲ ਅੰਡਰਲਾਈੰਗ ਐਰੇ ਨੂੰ ਮੁੜ-ਅਲਾਟ ਕਰ ਸਕਦਾ ਹੈ, ਅਤੇ ਪੁਰਾਣੇ ਤੱਤਾਂ ਨੂੰ ਨਵੇਂ ਖੇਤਰ ਵਿੱਚ ਕਾਪੀ ਕਰ ਸਕਦਾ ਹੈ।
ਹਵਾਲੇ
[ਸੋਧੋ]- ↑ 1.0 1.1 Sebesta, Robert W. (1999). Concepts of programming languages (4th ed ed.). Reading, Mass: Addison-Wesley. ISBN 978-0-201-38596-0.
{{cite book}}
:|edition=
has extra text (help) - ↑ "Introduction to Tensors | TensorFlow Core". TensorFlow (in ਅੰਗਰੇਜ਼ੀ). Retrieved 2024-07-29.
- ↑ Jensen, Kathleen; Wirth, Niklaus (1991). "Pascal User Manual and Report". doi:10.1007/978-1-4612-4450-9.
{{cite journal}}
: Cite journal requires|journal=
(help) - ↑ Mitchell, John C. (2002-10-14). Concepts in Programming Languages. Cambridge University Press. ISBN 978-0-521-78098-8.
- ↑ Luckham, David C.; Suzuki, Norihisa (1979-10). "Verification of Array, Record, and Pointer Operations in Pascal". ACM Transactions on Programming Languages and Systems. 1 (2): 226–244. doi:10.1145/357073.357078. ISSN 0164-0925.
{{cite journal}}
: Check date values in:|date=
(help)