# சி++



**சி++** (*C++*) சியின் மேம்பாடுகளைக் கொண்ட ஓர் பொதுவான நிரலாக்கல் மொழியாகும். இது மேல் நிலை நிரலாக்கம் மற்றும் வன்பொருட்களை கையாளும் கீழ்நிலை நிரலாக்கம் ஆகிய இரண்டையும் ஆதரிப்பதால் இது ஓர் இடை நிலை மொழியாகும். இம்மொழியில் நிரலாக்க வரிகள் இவ்வாறுதான் வரவேண்டும் (அதாவது இந்தவரியில் இந்த நிரலாக்கம் தான் என்று கோபால் நிரலாக்க மொழி போன்ற கட்டுப்பாடுகள் ஏதும் கிடையாது. பொதுவாக சி++ நிரல்கள் கம்பைல் செய்யப்படும். இவ்வாறு கம்பைல் செய்யப்படும்போது அக்கணினியை இலக்கு வைத்த இயந்திரமொழிக்குக் கொண்டுவரப்படும்.) சி++ மொழி 1980 ஆம் ஆண்டு தொடக்கத்தில் ஏடீ & டீ பெல் ஆய்வுக் கூடத்தில் பியார்னே இசுற்றூத்திரப்பு என்பவரால் உருவாக்கப்பட்டது.  

## வரலாறு
அமெரிக்க பெல் ஆய்வுக்கூடத்தில் பணியாற்றிய பியார்னே இசுற்றூத்திரப்பு சியை மேம்படுத்தும் முகமாக 1979 ஆம் ஆண்டில் வகுப்புகளுடன் கூடிய சி (C with Classes) ஆக விருத்தி செய்தார். இது 1983 ஆம் ஆண்டில் சி மொழியில் வரும் ++ ஆனது increment operator ஐக் குறிக்கும் வகையில் இதுவும் சி++ என மாற்றப்பட்டது.  

## தத்துவம்
சி++ இன் வாழ்நாள் முழுவதும், அதன் வளர்ச்சி மற்றும் அதன் பரிணாம வளர்ச்சியில் பின்பற்றப்பட வேண்டும் என்று ஒரு விதிமுறை தொகுப்பு முறைசாராமல் நிர்வகிக்கப்பட்டு வருகின்றது.  

- இது உண்மையான பிரச்சினைகள் மற்றும் அதன் அம்சங்களைக் கொண்டு இயக்கப்படுவதோடு உண்மையான உலக திட்டங்களில் உடனடியாகப் பயனுள்ளதாக இருக்க வேண்டும்.

- இதன் அம்சங்கள் நடைமுறைச் சாத்தியம் மிக்கனவாக இருக்க வேண்டும்.

- நிரலாளர்கள் தங்களது சொந்த நிரலாக்கப் பாணியில் எடுக்க உருவாக்கச் சுதந்திரம் கொடுப்பதாக இருக்க வேண்டும், மற்றும் அந்த பாணி முழுமையாக சி++ ஐ ஆதரிக்க வேண்டும்.

- ஒரு பயனுள்ள அம்சத்தை அனுமதிப்பது சி++ இன் ஒவ்வொரு சாத்தியமான தவறைத் தடுப்பதை விட முக்கியமானது.

- சி++ இன் கீழே எவ்வித மொழியும் இருக்கக் கூடாது.

- நீங்கள் பயன்படுத்தத் தேவையில்லை என்று நினைக்கும் எந்த அம்சங்களையும் கொடுக்கத் தேவையில்லை.

- நிரலாக்குநர் என்ன செய்ய வேண்டும் என விரும்புகின்றார் என்று தெரியவில்லை என்றால், நிரலாக்குநரே அதைக் குறிப்பிட அனுமதிக்கின்றது

## மொழி அமைப்பு
## அடிப்படை உள்ளீடும் வெளியீடும்
### வெளியீடு
<syntaxhighlight lang="cpp">  
char *name="John";  
char *country="India";  

cout << "Hello, I am " << name << ". I am from "<< country << endl;  
</syntaxhighlight>  

### உள்ளீடு
<div>  
<syntaxhighlight lang="cpp">  
1. include <iostream>
using namespace std;  

int main  
{  
int i;  
cout << "Please enter an integer value: ";  
cin >> i;  
cout << "The value you entered is " << i;  
cout << " and its squre is " << i*i << ".\n";  
return 0;  
}  
</syntaxhighlight>  
</div>  
<div>  
<pre>  
Please enter an integer value: 5  
The value you entered is 5 and its square is 25.  
</pre>  
</div>  
<br />  

## கட்டுப்பாடு
### எனில்/if else if
<div>  
<syntaxhighlight lang="cpp">  
string selection;  
selection = "ta";  

if (selection=="hi")  
cout<< "You have selected the Tamil Wikipedia";  
else if (selection=="ta")  
cout<< "You have selected the Tamil Wikibooks";  
else  
cout<< "You have selected the Tamil Wikisource";  
</syntaxhighlight>  
</div>  
<div>  
<pre>  
You have selected the Tamil Wikipedia  
</pre>  
</div>  
<br />  

### தெரிவு/switch
சி++ பி.எச்.பி போன்ற இதர மொழிகள் போல் அல்லாமல் சொற்தொடர்களை தெரிவில் பயன்படுத்த முடியாது.  

<div>  
<syntaxhighlight lang="cpp">  
int selection;  
selection = 2;  
switch (selection){  
case 1:  
cout<< "You have selected Tamil Wikipedia";  
break;  
case 2:  
cout<< "You have selected Tamil Wikibooks";  
break;  
default:  
cout<< "You have selected Tamil Wikisource";  
break;  
}  
</syntaxhighlight>  
</div>  
<div>  
<pre>  
You have selected Tamil Wikibooks  
</pre>  
</div>  
<br />  

## சுற்று
### while சுற்று
<div>  
<syntaxhighlight lang="cpp">  
int i=1;  
while(i<=5)  
{  
cout << "The number is "<< i <<"\n" ;  
i++;  
}  
</syntaxhighlight>  
</div>  
<div>  
<pre>  
The number is 1  
The number is 2  
The number is 3  
The number is 4  
The number is 5  
</pre>  
</div>  
<br />  

### do while சுற்று
<div>  
<syntaxhighlight lang="cpp">  
int i=1;  
do {  
cout << "The number is " << i << "\n";  
i++;  
} while (i <= 5);  
</syntaxhighlight>  
</div>  
<div>  
<pre>  
The number is 1  
The number is 2  
The number is 3  
The number is 4  
The number is 5  
</pre>  
</div>  
<br />  

### for சுற்று
<div>  
<syntaxhighlight lang="cpp">  
int i=1;  

for (i=1; i<=5; i++)  
{  
cout << "Iteration:"<<i<<" Hello World!\n";  
}  
</syntaxhighlight>  
</div>  
<div>  
<pre>  
Iteration:1 Hello World!  
Iteration:2 Hello World!  
Iteration:3 Hello World!  
Iteration:4 Hello World!  
Iteration:5 Hello World!  
</pre>  
</div>  
<br />  

## செயலி
### pass by value
<div>  
<syntaxhighlight lang="cpp">  
int main {  
int add (int a, int b);  
int ans;  
ans = add(4, 2);  
cout << "Ths sum is " << ans << "\n";  
return 0;  
}  

int add (int a, int b){  
int ans;  
ans = a + b;  
return ans;  
}  

</syntaxhighlight>  
</div>  
<div>  
<pre>  
The Sum is 6  
</pre>  
</div>  
<br />  

### pass by references
<div>  
<syntaxhighlight lang="cpp">  
int main {  
void passbyref (int& a, int& b);  
int a=1, b=3;  
passbyref (a, b);  
cout << "a=" << a << ", b=" << b << "\n";  
return 0;  
}  

void passbyref (int& a, int& b){  
a = a + 10;  
b= b + 10;  
}  
</syntaxhighlight>  
</div>  
<div>  
<pre>  
a=11, b=13;  
</pre>  
</div>  
<br />  

## பொருள் நோக்கு நிரலாக்கம்
<div>  
<syntaxhighlight lang="cpp">  

class Calculator {  
int x, y;  
public:  
void set_values (int,int);  
int add {  
int ans;  
ans = x + y;  
return ans;  
}  
};  

void Calculator::set_values (int a, int b) {  
x = a;  
y = b;  
}  

int main {  
Calculator c1;  
c1.set_values (5, 3);  
cout << "The sum is: " << c1.add << endl;  
return 0;  
}  

</syntaxhighlight>  
</div>  
<div>  
<pre>  
The sum is: 8  
</pre>  
</div>  
<br />  

## நினைவாக ஒதுக்கீடு
சி ++ நன்கு வகையான நினைவாக ஒதுக்கீடு கொண்டு உள்ளது  
நிலையான நினைவாக ஒதுக்கீடு:இந்த நிலையான நினைவாக ஒதுக்கீடு என்பது ஒரு நிலையான வேரியபுல்கு ஒரு பொருளை ஒதுக்கீடுசெய்வது ஆகும் இந்த ஒதுக்கீடு கம்பையில் டைம்இன் போது நடை பெரும் ஒரு செயல் ஆகும் ஒதுக்கப்பட்ட சேமிப்பு பகுதி ஒரு நிலையான இடமாகும் செமிகபடுபோது அதனுடன் செயல்படும் நிரல் அமைந்து இருக்கும் .இது போன்ற திறவுசொர்கள் ஸ்டாடிக் என்ற சொலுடன் இணைத்து டிச்ளைர் செய்யப்படும்.