ଓଡ଼ିଆରେ C ପ୍ରୋଗ୍ରାମିଂ ଶିକ୍ଷା
C Syntax ଓ Operators
C ପ୍ରୋଗ୍ରାମର ସଂରଚନା
ଆପଣ C ପ୍ରୋଗ୍ରାମିଂର ମୌଳିକ ଧାରଣା ସହିତ ପରିଚିତ ଥିବାରୁ, ଆମେ ସିଧାସଳଖ ଏହାର ଗଠନ ଏବଂ କାର୍ଯ୍ୟକାରିତା ଉପରେ ଧ୍ୟାନ ଦେବା। ପ୍ରତ୍ୟେକ C ପ୍ରୋଗ୍ରାମ କିଛି ମୁଖ୍ୟ ଅଂଶକୁ ନେଇ ଗଠିତ: ପ୍ରି-ପ୍ରୋସେସର୍ ଡାଇରେକ୍ଟିଭ୍, main() ଫଙ୍କସନ୍, ଏବଂ ଷ୍ଟେଟମେଣ୍ଟସ୍।
#include <stdio.h> // ପ୍ରି-ପ୍ରୋସେସର୍ ଡାଇରେକ୍ଟିଭ୍
int main() { // ପ୍ରୋଗ୍ରାମର ମୁଖ୍ୟ ପ୍ରବେଶ ପଥ
// Variable declaration and initialization
int a = 10, b = 20;
int sum;
// Expression evaluation
sum = a + b;
// Output statement
printf("The sum of %d and %d is %d\n", a, b, sum);
return 0; // ସଫଳ ସମାପ୍ତି ସୂଚାଏ
}
ଏହି ଉଦାହରଣରେ, int a = 10; ଏକ ଷ୍ଟେଟମେଣ୍ଟ ଯାହା ଏକ ଇଣ୍ଟିଜର୍ ଭେରିଏବଲ୍ a ଘୋଷଣା କରେ ଏବଂ ଏହାକୁ 10 ମୂଲ୍ୟ ଦିଏ। printf() ଫଙ୍କସନ୍ ଆଉଟପୁଟ୍ ଦେଖାଇବା ପାଇଁ ବ୍ୟବହୃତ ହୁଏ। ଏଥିରେ ଥିବା କୁ ଫର୍ମାଟ୍ ସ୍ପେସିଫାୟାର୍ କୁହାଯାଏ, ଯାହା କେଉଁ ପ୍ରକାରର ଡାଟା ପ୍ରିଣ୍ଟ ହେବ ତାହା ସ୍ଥିର କରେ। ସେହିପରି, ଇନପୁଟ୍ ନେବା ପାଇଁ scanf() ବ୍ୟବହାର କରାଯାଏ।
ଆରିଥମେଟିକ୍ ଓ ଲଜିକାଲ୍ ଅପରେଟର୍ସ
C ରେ ବିଭିନ୍ନ ଗାଣିତିକ ଏବଂ ଲଜିକାଲ୍ କାର୍ଯ୍ୟ ପାଇଁ ଅପରେଟର୍ସ ବ୍ୟବହାର କରାଯାଏ। ଆରିଥମେଟିକ୍ ଅପରେଟର୍ସ (+, -, *, /, %) ସାଧାରଣ ଗଣିତ ପାଇଁ ବ୍ୟବହୃତ ହୁଏ। ଏକାଧିକ ଅପରେଟର୍ ଥିବା ଏକ ଏକ୍ସପ୍ରେସନରେ, କେଉଁ ଅପରେସନ୍ ପ୍ରଥମେ ହେବ ତାହା ନିୟମ ଦ୍ୱାରା ସ୍ଥିର ହୁଏ। ଉଦାହରଣ ସ୍ୱରୂପ, * ଏବଂ / ର ପ୍ରାଥମିକତା + ଏବଂ - ଠାରୁ ଅଧିକ।
ଲଜିକାଲ୍ ଅପରେଟର୍ସ (&&, ||, !) ବୁଲିଆନ୍ (boolean) ମୂଲ୍ୟ ଉପରେ କାମ କରେ ଏବଂ ସର୍ତ୍ତମୂଳକ ଷ୍ଟେଟମେଣ୍ଟରେ ବ୍ୟବହୃତ ହୁଏ। && (AND) ଅପରେଟର୍ ଯଦି ଉଭୟ ଅପରାଣ୍ଡ ସତ ହୁଏ ତେବେ true ଫେରାଏ। || (OR) ଅପରେଟର୍ ଯଦି ଯେକୌଣସି ଗୋଟିଏ ଅପରାଣ୍ଡ ସତ ହୁଏ ତେବେ true ଫେରାଏ। C ରେ, 0 କୁ false ଏବଂ ଅନ୍ୟ କୌଣସି ଅଣ-ଶୂନ୍ୟ ସଂଖ୍ୟାକୁ true ଭାବରେ ବିବେଚନା କରାଯାଏ। ଲଜିକାଲ୍ ଅପରେଟର୍ସ ନାମକ ଏକ କୌଶଳ ବ୍ୟବହାର କରନ୍ତି।
int a = 5, b = 0;
// b ଶୂନ ହୋଇଥିବାରୁ, ଦ୍ୱିତୀୟ ସର୍ତ୍ତ (a/b > 1) ଯାଞ୍ଚ ହେବ ନାହିଁ
// ଏହା ଏକ 'division by zero' ଏରରରୁ ରକ୍ଷା କରେ
if (b != 0 && a / b > 1) {
printf("Condition is true");
}
ବିଟୱାଇଜ୍ ଓ ଆସାଇନମେଣ୍ଟ ଅପରେଟର୍ସ
ବିଟୱାଇଜ୍ ଅପରେଟର୍ସ ସଂଖ୍ୟାଗୁଡ଼ିକର ବାଇନାରୀ ପ୍ରତିନିଧିତ୍ୱ ଉପରେ ସିଧାସଳଖ କାର୍ଯ୍ୟ କରନ୍ତି। ଏଗୁଡ଼ିକ ସିଷ୍ଟମ୍-ସ୍ତରୀୟ ପ୍ରୋଗ୍ରାମିଂ, ଡାଟା କମ୍ପ୍ରେସନ୍, ଏବଂ ଏନକ୍ରିପସନରେ ଅତ୍ୟନ୍ତ ଉପଯୋଗୀ।
| ଅପରେଟର୍ | ନାମ | ବର୍ଣ୍ଣନା |
|---|---|---|
| & | Bitwise AND | ଯଦି ଉଭୟ ବିଟ୍ 1 ଥାଏ, ଫଳାଫଳ 1 ହୁଏ |
| | | Bitwise OR | ଯଦି ଯେକୌଣସି ଗୋଟିଏ ବିଟ୍ 1 ଥାଏ, ଫଳାଫଳ 1 ହୁଏ |
| ^ | Bitwise XOR | ଯଦି ବିଟଗୁଡ଼ିକ ଭିନ୍ନ ଥାଏ, ଫଳାଫଳ 1 ହୁଏ |
| ~ | Bitwise NOT | ସମସ୍ତ ବିଟକୁ ଓଲଟାଇ ଦିଏ (0 କୁ 1, 1 କୁ 0) |
| << | Left Shift | ବିଟଗୁଡ଼ିକୁ ବାମକୁ ସ୍ଥାନାନ୍ତର କରେ, ଡାହାଣରେ 0 ଯୋଗ କରେ |
| >> | Right Shift | ବିଟଗୁଡ଼ିକୁ ଡାହାଣକୁ ସ୍ଥାନାନ୍ତର କରେ |
ଉଦାହରଣ ସ୍ୱରୂପ, a = 5 (ବାଇନାରୀରେ 0101) ଏବଂ b = 3 (ବାଇନାରୀରେ 0011) ନିଅନ୍ତୁ।
ଆସାଇନମେଣ୍ଟ ଅପରେଟର୍ସ (=) ଏକ ଭେରିଏବଲକୁ ମୂଲ୍ୟ ଦେବା ପାଇଁ ବ୍ୟବହୃତ ହୁଏ। C ରେ କମ୍ପାଉଣ୍ଡ ଆସାଇନମେଣ୍ଟ ଅପରେଟର୍ସ ମଧ୍ୟ ଅଛି (ଯେପରିକି +=, -=, &=) ଯାହା ଏକ ଆରିଥମେଟିକ୍ କିମ୍ବା ବିଟୱାଇଜ୍ ଅପରେସନ୍ ସହିତ ଆସାଇନମେଣ୍ଟକୁ ମିଶାଇଥାଏ। ଉଦାହରଣ ସ୍ୱରୂପ, x += 5; ହେଉଛି x = x + 5; ର ଏକ ସଂକ୍ଷିପ୍ତ ରୂପ।
ଟର୍ନାରୀ ଅପରେଟର୍
ଟର୍ନାରୀ ବା କଣ୍ଡିସନାଲ୍ ଅପରେଟର୍ (? :) ହେଉଛି if-else ଷ୍ଟେଟମେଣ୍ଟର ଏକ ସଂକ୍ଷିପ୍ତ ବିକଳ୍ପ। ଏହା ତିନୋଟି ଅପରାଣ୍ଡ ନେଇଥାଏ, ତେଣୁ ଏହାର ନାମ ଟର୍ନାରୀ। ଏହାର ସାଧାରଣ ଫର୍ମାଟ୍ ହେଉଛି:
condition ? value_if_true : value_if_false;
ଯଦି
conditionସତ ହୁଏ, ତେବେvalue_if_trueଫେରସ୍ତ ହୁଏ। ନଚେତ୍,value_if_falseଫେରସ୍ତ ହୁଏ।
#include <stdio.h>
int main() {
int a = 10, b = 20;
int max;
// ଟର୍ନାରୀ ଅପରେଟର୍ ବ୍ୟବହାର କରି ବଡ଼ ସଂଖ୍ୟା ବାହାର କରିବା
max = (a > b) ? a : b;
printf("The maximum number is %d\n", max);
return 0;
}
ଏହା କୋଡକୁ ଅଧିକ ସଂକ୍ଷିପ୍ତ କରେ, କିନ୍ତୁ ଅତ୍ୟଧିକ ଜଟିଳ କିମ୍ବା ନେଷ୍ଟେଡ୍ ଟର୍ନାରୀ ଅପରେଟର୍ସ ବ୍ୟବହାର କଲେ କୋଡ୍ ପଢିବା କଷ୍ଟକର ହୋଇପାରେ। ତେଣୁ, ଏହାକୁ ସରଳ ସର୍ତ୍ତମୂଳକ ଆସାଇନମେଣ୍ଟ ପାଇଁ ବ୍ୟବହାର କରିବା ଉଚିତ୍।
C ପ୍ରୋଗ୍ରାମରେ main() ଫଙ୍କସନର ମୁଖ୍ୟ ଉଦ୍ଦେଶ୍ୟ କ’ଣ?
C ରେ printf() ଫଙ୍କସନ୍ ବ୍ୟବହାର କରି ଏକ ଇଣ୍ଟିଜର୍ (integer) ମୂଲ୍ୟ ପ୍ରିଣ୍ଟ କରିବା ପାଇଁ କେଉଁ ଫର୍ମାଟ୍ ସ୍ପେସିଫାୟାର୍ (format specifier) ବ୍ୟବହାର କରାଯାଏ?
ଏହିପରି, C ର ସିଣ୍ଟାକ୍ସ ଏବଂ ଅପରେଟର୍ସ ଗୁଡିକ ମିଶି ଶକ୍ତିଶାଳୀ ଏବଂ କାର୍ଯ୍ୟଦକ୍ଷ ପ୍ରୋଗ୍ରାମ ତିଆରି କରିବାରେ ସାହାଯ୍ୟ କରନ୍ତି।