C-and-C++/C2/Logical-Operators/Punjabi
From Script | Spoken-Tutorial
Revision as of 10:51, 23 March 2017 by PoojaMoolya (Talk | contribs)
Time | Narration |
00:02 | C ਅਤੇ C++ ਵਿਚ ਲੋਜੀਕਲ ਅੋਪਰੇਟਰਸ (Logical operators in) ਦੇ ਸਪੋਕਨ ਟਯੂਟੋਰਿਅਲ ਵਿਚ ਤੁਹਾਡਾ ਸੁਆਗਤ ਹੈ। |
00:08 | ਇਸ ਟਯੂਟੋਰੀਅਲ ਵਿਚ ਅਸੀਂ ਸਿਖਾਂਗੇ:
ਲੋਜੀਕਲ ਅੋਪਰੇਟਰਸ ਜਿਵੇਂ ਕਿ && ਅਤੇ ਲੋਜੀਕਲ AND ਜਿਵੇਂ ਕਿ ਐਕਸਪ੍ਰੇਸ਼ਨ1 && ਐਕਸਪ੍ਰੇਸ਼ਨ2 (Logical operators like && Logical AND eg. expression1 && expression2) |
00:17 | ਲੋਜੀਕਲ ਅੋਰ (Logical OR)
ਜਿਵੇਂ ਕਿ ਐਕਸਪ੍ਰੇਸ਼ਨ1 || ਐਕਸਪ੍ਰੇਸ਼ਨ2 eg. expression1 || expression2) |
00:21 | !ਲੋਜੀਕਲ ਨੋਟ (! Logical NOT)
ਜਿਵੇਂ ਕਿ !(ਐਕਸਪ੍ਰੇਸ਼ਨ1) eg. !(Expression1) |
00:25 | ਅਸੀਂ ਇਹ ਉਦਾਹਰਣ ਦੀ ਮੱਦਦ ਨਾਲ ਕਰਾਂਗੇ। |
00:28 | ਇਸ ਟਯੂਟੋਰਿਅਲ ਨੂੰ ਰਿਕਾਰਡ ਕਰਨ ਲਈ ਮੈਂ ਅੋਪਰੇਟਿੰਗ ਸਿਸਟਮ (operating system) ਵਜੋਂ ਵਰਤ ਰਹੀ ਹਾਂ ਊਬੰਤੂ 11.10 (Ubuntu 11.10) |
00:34 | ਊਬੰਤੂ ਤੇ gcc ਅਤੇ g++ ਕੰਪਾਇਲਰ ਵਰਜ਼ਨ 4.6.1
(gcc and g++ Compiler version 4.6.1 on Ubuntu.) |
00:40 | ਆਉ ਅਸੀਂ ਲੋਜੀਕਲ ਅੋਪਰੇਟਰਸ (logical operators) ਦੀ ਇੰਟਰੋਡੇਕਸ਼ਨ ਨਾਲ ਸ਼ੁਰੂ ਕਰੀਏ। |
00:44 | C ਅਤੇ C++ ਵਿਚ, ਕੋਈ ਵੀ ਵੈਲਯੂ ਜੋ 0 ਨਹੀਂ ਹੈ, ਸਹੀ (true ) ਹੁੰਦੀ ਹੈ |
00:49 | ਨੋਨ ਜ਼ੀਰੋ (non zero) ਦਾ ਮਤਲਬ ਸਹੀ ਹੈ। |
00:51 |
ਨੋਨ ਜ਼ੀਰੋ = ਸਹੀ (Non zero = True) ਜ਼ੀਰੋ ਦਾ ਅਰਥ ਹੈ ਗਲਤ (False) ਜ਼ੀਰੋ= ਗਲਤ (Zero= (False) |
00:53 | ਐਕਸਪਰੈਸ਼ਨਸ (Expressions) ਜਿਨ੍ਹਾਂ ਵਿਚ ਲੋਜੀਕਲ ਅੋਪਰੇਟਰਸ ਵਰਤੇ ਜਾਂਦੇ ਹਨ, ਸਹੀ ਲਈ 1 ਅਤੇ ਗਲਤ ਲਈ ਰਿਟਰਨ 0 ਦਿੰਦੇ ਹਨ। |
00:59 | ਹੁਣ ਮੈਂ ਉਦਾਹਰਣ ਦੀ ਮਦਦ ਨਾਲ ਲੋਜੀਕਲ ਅੋਪਰੇਟਰਸ ਨੂੰ ਦਸਾਂਗੀ। |
01:04 | ਇਥੇ C ਵਿਚ ਲੋਜੀਕਲ ਅੋਪਰੇਟਰਸ (logical operators) ਲਈ ਪ੍ਰੋਗਰਾਮ ਹੈ। |
01:09 | ਮੇਨ ਬਲੋਕ (main block) ਦੇ ਅੰਦਰ |
01:11 | ਇਹ ਸਟੇਟਮੈਂਟ, ਵੈਰੀਏਬਲਸ a, b ਅਤੇ c ਨੂੰ ਇੰਟੀਜ਼ਰ ਘੋਸ਼ਿਤ ਕਰਦੀ ਹੈ। |
01:16 | printf ਸਟੇਟਮੈਂਟ ਯੂਜ਼ਰ ਨੂੰ a, b ਅਤੇ c ਦੀ ਵੈਲਯੂਸ ਐਂਟਰ ਕਰਨ ਲਈ ਕਹੇਗੀ। |
01:22 | scanf ਸਟੇਟਮੈਂਟ, ਵੈਰੀਏਬਲਸ a, b ਅਤੇ c ਲਈ ਯੂਜ਼ਰ ਇਨਪੁਟ (input) ਲਏਗੀ। |
01:28 | ਇਥੇ, ਅਸੀਂ ਗਰੇਟੇਸਟ (greatest) ਲੱਭਣ ਲਈ a ਦੀ ਵੈਲਯੂ ਨੂੰ b ਅਤੇ c ਨਾਲ ਕੰਪੇਏਰ (compare) ਕਰ ਰਹੇ ਹਾਂ। |
01:33 | ਇਕੋ ਵਾਰੀ ਕੰਪੇਏਰ ਕਰਨ ਲਈ, ਅਸੀਂ ਲੋਜੀਕਲ ਐਂਡ (logical AND) ਅੋਪਰੇਟਰਸ ਇਸਤੇਮਾਲ ਕਰਾਂਗੇ। |
01:38 | ਇਥੇ, ਲੋਜੀਕਲ ਐਂਡ (logical AND) ਨੂੰ ਸਹੀ (true) ਵੈਲਯੂ ਰਿਟਰਨ ਦੇਣ ਲਈ, ਇਸ ਦੀਆਂ ਸਾਰੀਆਂ ਕੰਡੀਸ਼ਨਸ ਸਹੀ(true) ਹੋਣੀਆਂ ਚਾਹੀਦੀਆਂ ਹਨ। |
01:44 | ਇਹ ਗਲਤ ਕੰਡੀਸ਼ਨ ਮਿਲਣ ਤੇ ਅੱਗੇ ਐਕਸਪਰੈਸ਼ਨ ਇਵੈਲਯੂਏਟ (expression, evaluate) ਨਹੀਂ ਕਰਦਾ। |
01:49 | ਇਸ ਲਈ, ਐਕਸਪਰੈਸ਼ਨ (a>c) ਤਾਂ ਹੀ ਇਵੈਲਯੂਏਟ ਹੋਏਗਾ ਜੇ (a>b) ਸਹੀ(true) ਹੈ। |
01:57 | ਜੇ a, b ਤੋਂ ਘਟ ਹੋਏਗਾ ਤਾਂ ਐਕਸਪਰੈਸ਼ਨ ਅੱਗੇ ਇਵੈਲਯੂਏਟ ਨਹੀਂ ਹੋਏਗਾ। |
02:03 | ਇਹ ਤਾਂ ਹੀ ਇਵੈਲਯੂਏਟ ਹੋਏਗੀ ਜੇ ਪਹਲੀ ਕੰਡੀਸ਼ਨ, ਸਹੀ(true) ਹੋਏਗੀ। |
02:07 | ਅੱਗੇ (b>c) ਇਵੈਲਯੂਏਟ ਹੋਏਗਾ। |
02:10 | ਜੇ ਕੰਡੀਸ਼ਨ, ਸਹੀ(true) ਹੈ ਤਾਂ ਸਕਰੀਨ ਤੇ ਆਏਗਾ :
b ਗਰੇਟੇਸਟ (greatest) ਹੈ (b is greatest) |
02:17 | ਨਹੀਂ ਤਾਂ ਸਕਰੀਨ ਤੇ ਆਏਗਾ :
c ਗਰੇਟੇਸਟ ਹੈ (c is greatest ) |
02:21 | ਹੁਣ ਅਸੀਂ ਲੋਜੀਕਲ ਅੋਰ (logical OR) ਅੋਪਰੇਟਰ ਤੇ ਆਉਂਦੇ ਹਾਂ। |
02:24 | ਇਥੇ ਲੋਜੀਕਲ ਅੋਰ (logical OR) ਨੂੰ ਸਹੀ(true) ਵੈਲਯੂ ਰਿਟਰਨ ਦੇਣ ਲਈ, ਇਸ ਦੀ ਕੋਈ ਵੀ ਇਕ ਕੰਡੀਸ਼ਨ, ਸਹੀ(true) ਹੋਣੀ ਚਾਹੀਦੀ ਹੈ। |
02:31 | ਸਹੀ(true) ਕੰਡੀਸ਼ਨ ਮਿਲਣ ਤੇ ਐਕਸਪਰੈਸ਼ਨ ਅੱਗੇ ਇਵੈਲਯੂਏਟ ਨਹੀਂ ਹੁੰਦਾ। |
02:36 | ਇਸ ਲਈ ਜੇ a == zero ਹੈ ਤਾਂ ਬਾਕੀ ਦੇ ਦੋ ਐਕਸਪਰੈਸ਼ਨਸ ਇਵੈਲਯੂਏਟ (expressions, evaluate) ਨਹੀਂ ਹੋਣਗੇ। |
02:43 | ਇਹ printf ਸਟੇਟਮੈਂਟ ਐਕਜ਼ੀਕਿਯੂਟ ਹੋਏਗੀ ਜੇ a, b ਜਾ c, 0 ਹੋਣਗੇ। |
02:49 | ਪ੍ਰੋਗਰਾਮ ਦੇ ਅੰਤ ’ਤੇ ਆ ਰਹੇ ਹਾਂ। ਰਿਟਰਨ 0 ਅਤੇ ਐਂਡਿੰਗ ਕਰਲੀ ਬਰੈਕਟ (ending curly bracket.) |
02:54 | ਹੁਣ ਪ੍ਰੋਗਰਾਮ ਸੇਵ ਕਰੋ। |
02:58 | ਇਸਨੂੰ ਐਕਸਟੈਨਸ਼ਨ.ਸੀ (extension .c) ਨਾਲ ਸੇਵ ਕਰੋ। |
03:00 | ਮੈਂ ਆਪਣੀ ਫਾਈਲ, ਲੋਜੀਕਲ.c (logical.c) ਨਾਮ ਨਾਲ ਸੇਵ ਕੀਤੀ ਹੈ |
03:04 | Ctrl, Alt ਅਤੇ T ਬਟਨ ਇੱਕਠੇ ਦਬਾ ਕੇ ਟਰਮਿਨਲ ਵਿੰਡੋ ਖੋਲ੍ਹੋ । |
03:09 | ਕੰਪਾਇਲ ਕਰਨ ਲਈ ਕੋਡ, gcc logical.c -o log ਟਾਈਪ ਕਰੋ। ਐਂਟਰ ਦਬਾਉ । |
03:23 | ਐਕਜ਼ੀਕਿਯੂਟ ਕਰਨ ਲਈ ./log ਟਾਈਪ ਕਰਕੇ |
03:27 | ਐਂਟਰ ਦਬਾਉ । |
03:30 | ਮੈਂ ਵੈਲਯੂਸ ਐਂਟਰ ਕਰਾਂਗੀ ਜਿਵੇਂ,
0 34 567 |
03:40 | ਆਉਟਪੁਟ ਇੰਝ ਦਿਸੇਗੀ : |
03:43 | c ਗਰੇਟੇਸਟ ਹੈ
(c is greatest.) |
03:46 | b ਅਤੇ c ਦਾ ਗੁਣਨਫਲ ਜ਼ੀਰੋ ਹੈ
(The product of a, b and c is zero.) |
03:50 | ਤੁਸੀਂ ਇਸ ਪ੍ਰੋਗਰਾਮ ਨੂੰ ਅੱਲਗ-ਅੱਲਗ ਸੈਟਸ ਆਫ (sets of) ਇਨਪੁਟਸ ਨਾਲ ਐਕਜ਼ੀਕਿਯੂਟ ਕਰਨ ਦੀ ਟਰਾਈ (try) ਕਰ ਸਕਦੇ ਹੋ। |
03:55 | ਹੁਣ ਆਉ ਇਸੀ ਪ੍ਰੋਗਰਾਮ ਨੂੰ C++ ਵਿਚ ਲਿਖੀਏ |
03:59 | ਮੈਂ ਪਹਿਲਾਂ ਹੀ ਪ੍ਰੋਗਰਾਮ ਲਿਖਿਆ ਹੋਇਆ ਹੈ ਅਤੇ ਤੁਹਾਨੂੰ ਦਿਖਾ ਦਿੰਦੀ ਹਾਂ। |
04:03 | C++ ਦਾ ਕੋਡ ਇਹ ਹੈ। |
04:07 | ਹੁਣ ਇਸੇ ਪ੍ਰੋਗਰਾਮਨੂੰ C++ ਵਿਚ ਲਿਖਣ ਲਈ ਅਸੀਂ ਕੁਝ ਬਦਲਾਉ ਕਰਾਂਗੇ। |
04:12 | ਇਥੇ ਹੈਡਰ ਫਾਈਲ ’ਚ ਬਦਲਾਉ ਹੈ। |
04:15 | ਯੂਜ਼ੀਂਗ ਸਟੇਟਮੈਂਟ, ਇਸਤੇਮਾਲ ਕੀਤੀ ਗਈ ਹੈ। |
04:18 | ਆਉਟਪੁਟ ਅਤੇ ਇਨਪੁਟ ਸਟੇਟਮੈਂਟਸ ਵਿਚ ਵੀ ਅੰਤਰ ਹੈ। |
04:22 | ਇਥੇ ਵੀ ਅੋਪਰੇਟਰਸ ਉਂਝ ਹੀ ਚਲਦੇ ਹਨ ਜਿਵੇਂ ਕਿ C ਵਿਚ। |
04:26 | ਸੇਵ ਤੇ ਕਲਿਕ ਕਰੋ । |
04:27 | ਯਕੀਨੀ ਬਣਾਉ ਕਿ ਫਾਈਲ, ਐਕਸਟੈਨਸ਼ਨ .cpp ਨਾਲ ਹੋਈ ਹੇ। |
04:31 | Ctrl, Alt ਅਤੇ T ਬਟਨ ਇੱਕਠੇ ਦਬਾ ਕੇ ਟਰਮਿਨਲ ਵਿੰਡੋ ਖੋਲ੍ਹੋ । |
04:37 | ਕੰਪਾਇਲ ਕਰਨ ਲਈ g++ logical.cpp -o log1 ਟਾਈਪ ਕਰੋ। |
04:49 | ਐਕਜ਼ੀਕਿਯੂਟ ਕਰਨ ਲਈ ./log1 ਟਾਈਪ ਕਰੋ। |
04:54 | ਐਂਟਰ ਦਬਾਉ । |
04:56 | ਮੈਂ ਵੈਲਯੂਸ ਐਂਟਰ ਕਰਾਂਗੀ ਜਿਵੇਂ,
0 34 567 |
05:02 | ਅਸੀਂ ਵੇਖਦੇ ਹਾਂ ਕਿ ਆਉਟਪੁਟ ਉਹੀ ਹੈ ਜੋ C ਪ੍ਰੋਗਰਾਮ ਵਿਚ ਸੀ। |
05:05 | ਤੁਸੀਂ ਇਸ ਪ੍ਰੋਗਰਾਮ ਨੂੰ ਅੱਲਗ-ਅੱਲਗ ਸੈਟਸ ਆਫ (sets of) ਇਨਪੁਟਸ ਨਾਲ ਐਕਜ਼ੀਕਿਯੂਟ ਕਰਨ ਦੀ ਟਰਾਈ (try) ਕਰ ਸਕਦੇ ਹੋ। |
05:10 | ਆਉ ਉਹ ਗਲਤੀ ਵੇਖੀਏ ਜੋ ਸਾਡੇ ਕੋਲੋਂ ਹੋ ਸਕਦੀ ਹਾਂ। |
05:13 | ਐਡੀਟਰ ਤੇ ਵਾਪਸ ਆਉ। |
05:16 | ਮੰਨ ਲਉ ਇਥੇ ਅਸੀਂ ਬਰੈਕਟਸ ਭੁੱਲ ਜਾਂਦੇ ਹਾਂ |
05:20 | ਇਹ ਅਤੇ ਇਹ ਡਿਲੀਟ (Delete) ਕਰ ਦਿਉ। |
05:26 | ਆਉ ਵੇਖੀਏ ਕੀ ਹੁੰਦਾ ਹੈ, ਪ੍ਰੋਗਰਾਮ ਸੇਵ ਕਰੋ। |
05:31 | ਟਰਮਿਨਲ ਤੇ ਵਾਪਸ ਆਉ। |
05:33 | ਪਹਿਲਾਂ ਵਾਂਗ ਕੰਪਾਇਲ ਅਤੇ ਐਕਜ਼ੀਕਿਯੂਟ ਕਰੋ। |
05:38 | ਅਸੀਂ ਗਲਤੀ ਵੇਖਦੇ ਹਾਂ : |
05:41 | ਐਕਸਪੈਕਟਿਡ ਆਈਡੈਂਟੀਫਾਇਰ ਬਿਫੋਰ'(' ਟੋਕਨ
(Expected identifier before '(' token.) |
05:46 | ਇਹ ਇਸ ਲਈ ਹੇ ਕਿਉਂਕਿ ਇਥੇ ਸਾਡੇ ਕੋਲ ਦੋ ਅੱਲਗ-ਅੱਲਗ ਐਕਸਪਰੈਸ਼ਨਸ (different expressions) ਹਨ। |
05:49 | ਅਸੀਂ ਇਹਨਾਂ ਨੂੰ ਐਂਡ (AND) ਅੋਪਰੇਟਰ ਇਸਤੇਮਾਲ ਕਰਦਿਆਂ ਇਕ ਐਕਸਪਰੈਸ਼ਨ ਦੀ ਤਰ੍ਹਾਂ ਇਵੈਲਯੂਏਟ ਕਰਨਾ ਹੈ। |
05:53 | ਆਉ ਪ੍ਰੋਗਰਾਮ ਤੇ ਵਾਪਸ ਚਲੀਏ ਅਤੇ ਗਲਤੀ ਠੀਕ ਕਰੀਏ। |
05:58 | ਆਉ ਇਥੇ ਅਤੇ ਇਥੇ ਬਰੈਕਟਸ ਪਾ ਦਈਏ। |
06:04 | ਸੇਵ ਤੇ ਕਲਿਕ ਕਰੋ। |
06:07 | ਟਰਮਿਨਲ ਤੇ ਵਾਪਸ ਆਉ। |
06:09 | ਪਹਿਲਾਂ ਵਾਂਗ ਕੰਪਾਇਲ ਅਤੇ ਐਕਜ਼ੀਕਿਯੂਟ ਕਰੋ। |
06:14 | ਹੁਣ ਇਹ ਠੀਕ ਚਲ ਰਿਹਾ ਹੈ। |
06:22 | ਆਉ ਹੁਣ ਟਿਯੂਟੋਰਿਅਲ ਨੂੰ ਸੰਖੇਪ ਕਰੀਏ । |
06:24 | ਇਸ ਟਿਯੂਟੋਰਿਅਲ ਵਿਚ ਅਸੀਂ ਸਿੱਖਿਆ ਹੈ
&& ਲੋਜੀਕਲ ਐਂਡ eg. ((a > b) && (a > c)) (&& Logical AND eg. ((a > b) && (a > c)) |
06:32 | ਲੋਜੀਕਲ ਅੋਰ
(Logical OR) eg. (a == 0 || b == 0 || c == 0) |
06:40 | ਅਸਾਈਨਮੈਂਟ,ਇਕ ਪ੍ਰੋਗਰਾਮ ਲਿਖੋ ਜੋ ਯੂਜ਼ਰ ਤੋਂ ਦੋ ਨੰਬਰਸ (numbers) ਦੀ ਇਨਪੁਟ ਲਵੇ। |
06:45 | ਨੋਟ (NOT) ਅੋਪਰੇਟਰ ਦੀ ਵਰਤੋਂ ਨਾਲ ਚੈਕ ਕਰੋ ਕਿ ਦੋਨੋ ਨੰਬਰ (number) ਇਕੁਅਲ (equal ) ਹਨ ਜਾਂ ਨਹੀਂ।
Hint: (a != b) |
06:54 | ਨੀਚੇ ਦੱਸੇ ਗਏ ਲਿੰਕ ’ਤੇ ਉਪਲੱਭਦ ਵੀਡੀਊ ਵੇਖੋ । |
06:57 | ਇਹ ਸਪੋਕਨ ਟਿਯੂਟੋਰਿਅਲ ਪੋ੍ਰਜੈਕਟ ਨੂੰ ਸੰਖੇਪ ਕਰਦਾ ਹੈ । |
06:59 | ਜੇ ਤੁਹਾਡੇ ਇੰਟਰਨੈਟ ਦੀ ਸਪੀਡ ਚੰਗੀ ਨਹੀਂ ਹੈ ਤਾਂ ਤੁਸੀਂ ਇਸ ਨੂੰ ਡਾਊਨਲੋਡ ਕਰਕੇ ਦੇਖ ਸਕਦੇ ਹੋ। |
07:03 | ਸਪੋਕਨ ਟਿਯੂਟੋਰਿਅਲ ਪੋ੍ਜੈਕਟ ਟੀਮ, ਸਪੋਕਨ ਟਿਯੂਟੋਰਿਅਲ ਦੀ ਵਰਤੋਂ ਨਾਲ ਵਰਕਸ਼ਾਪ ਲਗਾਉਂਦੀ ਹੈ |
07:08 | ਔਨਲਾਈਨ ਟੈਸਟ ਪਾਸ ਕਰਨ ਵਾਲਿਆਂ ਨੂੰ ਸਰਟੀਫਿਕੇਟ ਦਿਤਾ ਜਾਂਦਾ ਹੈ । |
07:11 | ਜਿਆਦਾ ਜਾਣਕਾਰੀ ਲਈ, ਸਪੋਕਨ ਹਾਈਫਨ ਟਿਯੂਟੋਰਿਅਲ ਡੋਟ ਅੋ.ਰ.ਜੀ. (spoken hyphen tutorial dot org) ਤੇ ਲਿਖ ਕੇ ਸੰਪਰਕ ਕਰੋ। |
07:18 | ਸਪੋਕਨ ਟਿਯੂਟੋਰਿਅਲ ਪੋ੍ਰਜੈਕਟ “ਟਾਕ ਟੂ ਏ ਟੀਚਰ ਪੋ੍ਜੈਕਟ”(Talk to a Teacher project) ਦਾ ਇਕ ਹਿੱਸਾ ਹੈ। |
07:21 | ਇਸ ਦਾ ਸਮਰੱਥਨ ਆਈ.ਸੀ.ਟੀ.( ICT), ਐਮ. ਐਚ.ਆਰ.ਡੀ.(MHRD), ਭਾਰਤ ਸਰਕਾਰ ਦੇ ਨੈਸ਼ਨਲ ਮਿਸ਼ਨ ਅੋਨ ਏਜੂਕੈਸ਼ਨ (National Mission on Education) ਕਰਦਾ ਹੈ। |
07:27 | ਇਸ ਮਿਸ਼ਨ ਦੀ ਹੋਰ ਜਾਣਕਾਰੀ ਇਸ ਲਿੰਕ ’ਤੇ ਉਪਲੱਭਦ ਹੈ |
07:30 | ਸਪੋਕਨ ਹਾਈਫਨ ਟਿਯੂਟੋਰਿਅਲ ਡੋਟ ਅੋ.ਆਰ.ਜੀ. ਸਲੈਸ਼ ਐਨ. ਐਮ.ਈ.ਆਈ.ਸੀ.ਟੀ. ਹਾਈਫਨ ਇੰਟਰੋ (spoken hyphen tutorial dot org slash NMEICT hyphen Intro) |
07:37 | ਇਸ ਸਕਰਿਪਟ ਦਾ ਅਨੁਵਾਦ ਮਹਿੰਦਰ ਰਿਸ਼ਮ ਨੇ ਕੀਤਾ ਹੈ।
ਸ਼ਾਮਲ ਹੋਣ ਲਈ ਧੰਨਵਾਦ |