٩٦ نﺎﺘﺴﻣز ‐ ﻪﺘﻓﺮﺸﯿﭘ ﺴﯾﻮﻧ ﻪﻣﺎﻧﺮﺑ یﺮﻫﻮﺟ ﻦﯿﺴﺣ :ﻂﺳﻮﺗ ﺲﯾرﺪﺗ ﺳﻮﻃ ﻦﯾﺪﻟاﺮﯿﺼﻧ ﻪﺟاﻮﺧ هﺎ ﺸﻧاد ‐ ﺿﺎﯾر هﺪ ﺸﻧاد
مود سرد ﻪﺻﻼﺧ
:سرد ﻦﯾا ﻢﯿﻫﺎﻔﻣ ﻊﺑاﻮﺗ ﺎﺑ رﺎﮐ زا ﻟﺎﺜﻣ C++ ﻪﻣﺎﻧﺮﺑ ﯾ ﻠﮐ رﺎﺘﺧﺎﺳ
پوﺮﺗ سرﺎﺘﺳا ﻪﻧرﺎﯿﺑ ﻂﺳﻮﺗ ١٩٧٩ لﺎﺳ رد ﻪﮐ ﺖﺳا هرﻮﻈﻨﻣ ﻪﻤﻫ ﺴﯾﻮﻧ ﻪﻣﺎﻧﺮﺑ نﺎﺑز ﯾ C++ ﺴﯾﻮﻧ ﻪﻣﺎﻧﺮﺑ نﺎﺑز و ﺪﺷﺎﺑ ﻣ C ﺴﯾﻮﻧ ﻪﻣﺎﻧﺮﺑ نﺎﺑز زا یا ﻪﻌﺳﻮﺗ ﻊﻗاو رد C++ نﺎﺑز .ﺖﺳا هﺪﺷ ﺣاﺮﻃ Bjarne Stroustrup ﻪﻤﻫ ﺎﺒﯾﺮﻘﺗ .ﺖﺳا هدﺮﮐ ﻪﻓﺎﺿا C ﻪﺑ ار هﺮﯿﻏ و یزﺎﺠﻣ ﻊﺑاﻮﺗ ،اﺮﮔ ﺷ ﺴﯾﻮﻧ ﻪﻣﺎﻧﺮﺑ ﻪﻠﻤﺟ زا یدﺎﯾز یﺎﻬﺘﯿﻠﺑﺎﻗ .ﺪﻨﺘﺴﻫ هدﺎﻔﺘﺳا ﻞﺑﺎﻗ C++ نﺎﺑز رد C نﺎﺑز تارﻮﺘﺳد
C++ ﻪﻣﺎﻧﺮﺑ ﯾ ﻠﮐ رﺎﺘﺧﺎﺳ ١
.ﺪﺷﺎﺑ ﻣ ﻊﺑاﻮﺗ و ﺎﻬﺳﻼﮐ ،ﺎﻫﺮﯿﻐﺘﻣ ،ﺎﻫ هﺪﻧزادﺮﭘ ﺶﯿﭘ ﻒﯾﺮﻌﺗ زا یا ﻪﻋﻮﻤﺠﻣ C++ ی ﻪﻣﺎﻧﺮﺑ ﯾ ﻪﺻﻼﺧ رﻮﻄﺑ هدﺎﺳ ﻪﻣﺎﻧﺮﺑ ﯾ
#include <iostream>
int main() {
std::cout << "Hello, world! \n";
return 0;
}
C++ رد ﻊﺑاﻮﺗ زا هدﺎﻔﺘﺳا
#include <iostream>
using namespace std;
int Square (int n) {
return n*n;
}
int Cube (int n) {
return n*n*n;
}
int main() {
Cout << “The Square of 27 is “ << Square(27) << endl;
Cout << “The Cube of 27 is “ << Cube(27) << endl;
return 0;
}
.ﺖﺳا ﻪﻣﺎﻧﺮﺑ یاﺮﺑ ﺎﻬﺿﺮﻓ ﺶﯿﭘ یﺮﺳ ﯾ نﻼﻋا ﻞﻣﺎﺷ preprocessor directivesﺎﻫ هﺪﻧزادﺮﭘ ﺶﯿﭘ • ( header ﻞﯾﺎﻓ ﯾ ﺎﺣﻼﻄﺻا ) c++ ﺮ ﯾد ﻪﻣﺎﻧﺮﺑ ﺎﯾ ﻪﻧﺎﺨﺑﺎﺘﮐ ﯾ include هﺪﻧزادﺮﭘ ﺶﯿﭘ لﺎﺜﻣ یاﺮﺑ ﺮ ﯾد یﺎﻫ ﻪﻣﺎﻧﺮﺑ تﺎﻧﺎ ﻣا و راﺰﺑا زا ﺪﻧاﻮﺗ ﻣ دﻮﺟﻮﻣ ﻪﻣﺎﻧﺮﺑ ،رﺎﮐ ﻦﯾا ﺎﺑ .ﺪﻨﮐ ﻣ ﻪﻓﺎﺿا دﻮﺟﻮﻣ ﻪﻣﺎﻧﺮﺑ ﻪﺑ ار ﻪﺑ طﻮﺑﺮﻣ یﺎﻫراﺰﺑا و ﻒﯾرﺎﻌﺗ ﻞﻣﺎﺷ include<iostream> هﺪﻧزادﺮﭘ ﺶﯿﭘ لﺎﺜﻣ ناﻮﻨﻋ ﻪﺑ .ﺪﻨﮐ هدﺎﻔﺘﺳا ﺮﯾز هﺪﻧزادﺮﭘ ﺶﯿﭘ .ﺖﺳا ﺟوﺮﺧ و یدورو یﺎﻬﻧﺎﯾﺮﺟ زا هدﺎﻔﺘﺳا
#define TableSize 100
TableSize زا ﻪﮐ ﻪﻣﺎﻧﺮﺑ یﺎﺟ ﺮﻫ .ﺪﻨﮐ ﻣ ﻒﯾﺮﻌﺗ100راﺪﻘﻣ ﺎﺑ و ﺖﺑﺎﺛ ﯾ ترﻮﺼﺑ ار TableSize ﻢﺳا .دﺮﯿﮔ ﻣ ﺮﻈﻧ رد100دﺪﻋ یﺎﻨﻌﻣ ﻪﺑ ار نآ ﺮﻠﯾﺎﭙﻣﺎﮐ ﺪﺷ هدﺎﻔﺘﺳا .ﺪﺷ ﺪﻫاﻮﺧ هداد ﺢﯿﺿﻮﺗ یﺪﻌﺑ سورد رد class سﻼﮐ درﻮﻣ رد .سﻼﮐ • ﻒﯾﺮﻌﺗ یﺎﻬﺳﻼﮐ و دﻮﺟﻮﻣ یا هداد عاﻮﻧا زا ﻪﺘﻓﺮﮔﺮﺑ ﺮﯿﻐﺘﻣ یﺮﺳ ﯾ ﻒﯾﺮﻌﺗ و نﻼﻋا ﻞﻣﺎﺷ ﺎﻫﺮﯿﻐﺘﻣ ﻒﯾﺮﻌﺗ •
رﻮﺘﺳد لﺎﺜﻣ یاﺮﺑ .ﺪﺷﺎﺑ ﻣ هﺪﺷ
int x=43;
.ﺪﻨﮐ ﻣ ﻒﯾﺮﻌﺗ43ﻪﯿﻟوا راﺪﻘﻣ ﺎﺑ x ﻢﺳا ﻪﺑ ﺮﯿﻐﺘﻣ ﯾ
یﺮﺳ ﯾ ﻊﺑاﻮﺗ ﻻﻮﻤﻌﻣ .ﺪﻫد ﻣ مﺎﺠﻧا ار ﺻﺎﺧ ﻪﻔﯿﻇو و ﺖﺳا تارﻮﺘﺳد زا ﻪﻋﻮﻤﺠﻣ ﻞﻣﺎﺷ ﻊﺑﺎﺗ ﺮﻫ • مﺎﻧ ﻪﺑ ﻠﺻا ﻊﺑﺎﺗ ﯾ C++ ﻪﻣﺎﻧﺮﺑ ﺮﻫ .ﺖﺳا ﻊﺑﺎﺗ رﺎﮐ ﻪﺠﯿﺘﻧ ﻪﮐ دراد ﺟوﺮﺧ ﯾ و (ﺎﻫﺮﺘﻣارﺎﭘ) یدورو ﺮ ﯾد ﻊﺑاﻮﺗ main ﻊﺑﺎﺗ نورد .دﻮﺷ ﻣ عوﺮﺷ main ﻊﺑﺎﺗ یاﺮﺟا ﺎﺑ هراﻮﻤﻫ ﻪﻣﺎﻧﺮﺑ یاﺮﺟا .دراد main .دﻮﺷ هﺪﻧادﺮﮔﺮﺑ main ﻊﺑﺎﺗ ﻪﺑ ﺎﻬﻧآ ﺞﯾﺎﺘﻧ و ﺪﻧﻮﺷ ﻧاﻮﺧاﺮﻓ ﺖﺳا ﻦ ﻤﻣ
[ ﺎﻫ هﺪﻧزادﺮﭘ ﺶﯿﭘ Preprocessor Directives
]
[ ﺎﻬﺳﻼﮐ ﻒﯾﺮﻌﺗ Class Definitions
]
[ ﺎﻫﺮﯿﻐﺘﻣ ﻒﯾﺮﻌﺗ Variable Declarations
]
[ main ﻊﺑﺎﺗ ﻞﻣﺎﺷ ﻊﺑاﻮﺗ ﻒﯾﺮﻌﺗ Functions
]
C++ رد سﻼﮐ زا هدﺎﻔﺘﺳا زا ﻟﺎﺜﻣ
#include <iostream>
#define TableSize 100;
using namespace std;
class Car {
public:
Car(int color, spring brand);
start();
drive();
stop();
speed_Up(int speed);
speed_Down(int speed);
fill_tank();
get_Color();
get_Tank();
private:
int speed;
string color;
double tank;
string brand;
}
void Square (int n) { return n*n; } int Cube (int n) { return n*n*n; } int main()
{
int a[Table_Size];
Car mycar(“red”, “bmw”);
mycar.Start();
mycar.Drive();
mycar.Speed_Up(100);
mycar.Speed_Down(60);
mycar.Stop();
return 0;
}
string سﻼﮐ روﺮﻣ ٢
.ﺪﻨﮐ ﻣ دﺎﺠﯾا ار هﺪﺷ هداد ﻪﯿﻟوا ﺮﯾدﺎﻘﻣ ﺎﺑ strb و stra یﺎﻬﻣﺎﻧ ﻪﺑ string عﻮﻧ زا ﺊﯿﺷ ود ﺮﯾز تارﻮﺘﺳد string stra(“hello, how are you?”);
string strb(“fine, thanks.”);
ﺎﺑ ﻪﮐ strb و stra ﻪﺘﺷر ود لﺎﺼﺗا ﺎﺑ ﺮﺑاﺮﺑ ار نآ راﺪﻘﻣ و ﺪﻨﮐ ﻣ دﺎﺠﯾا ار string عﻮﻧ زا strc ﺌﺷ ﺮﯾز رﻮﺘﺳد .ﺪﻫد ﻣ راﺮﻗ ﺪﻧا هﺪﺷ اﺪﺟ ﻢﻫ زا ﻂﺧ نﺎﯾﺎﭘ ﺮﺘﮐارﺎﮐ ﯾ string strc = stra + “\n” +strb;
.ﺪﻧادﺮﮔ ﻣﺮﺑ ار ﻪﺘﺷر لﻮﻃ length ﺪﺘﻣ cout << strc.length(); // prints 33
فﺮﺣ j نآ لﻮﻃ و هﺪﺷ عوﺮﺷ i ﺲﯾﺪﻧا رد ﻪﮐ ﺪﻧادﺮﮔ ﻣﺮﺑ ار رﻮﮐﺬﻣ ﻪﺘﺷر زا ﻪﺘﺷرﺮﯾز ﯾ substr(i،j) ﺪﺘﻣ .ﺖﺳا cout<< strc.substr(7,3); // prints how
طﻮﺑﺮﻣ یﺎﻫﺪﺘﻣ ناﻮﺗ ﻣ ﻞﯿﻟد ﻦﯿﻤﻫ ﻪﺑ .ﺖﺳا string عﻮﻧ زا ﺌﺷ ﯾ دﻮﺧ یﺪﯿﻟﻮﺗ ﻪﺘﺷرﺮﯾز ﻪﮐ ﺪﯿﻨﮐ ﺖﻗد .دﺮﮐ ﻧاﻮﺧاﺮﻓ نآ یاﺮﺑ ار string ﻪﺑ cout<< str3.substr(7,3).length(); //prints 3
( header ﻞﯾﺎﻓ و ﻊﺑاﻮﺗ ﺎﺑ رﺎﮐ ) ﻪﻠﺌﺴﻣ ﯾ ﻞﺣ ٣
.ﺪﻨﮐ ﻪﺴﯾﺎﻘﻣ ﻢﻫ ﺎﺑ ار ﻒﻠﺘﺨﻣ ( ﺴﻤﺷ – یﺮﺠﻫ) ﺦﯾرﺎﺗ ود ﻪﮐ ﻢﯿﺴﯾﻮﻨﺑ یا ﻪﻣﺎﻧﺮﺑ ﻢﯿﻫاﻮﺧ ﻣ ﺪﯿﻨﮐ ضﺮﻓ
؟دﻮﺷ ﻣ هداد ﻪﻣﺎﻧﺮﺑ ﻪﺑ ﯽﺒﻟﺎﻗ ﻪﭼ رد رﻮﮐﺬﻣ ﺦﯾرﺎﺗ ود :لاﻮﺳ دﺪﻋ dd .ﺪﻨﺷﺎﺑ dd/mm/yyyy ﺖﻣﺮﻓ ﺎﺑ string عﻮﻧ زا ﻪﺘﺷر ود ﺐﻟﺎﻗ رد رﻮﮐﺬﻣ یﺎﻬﺨﯾرﺎﺗ ﻢﯿﻨﮐ ﻣ ضﺮﻓ
.ﺪﻫد ﻣ نﺎﺸﻧ ار لﺎﺳ دﺪﻋ yyyy و هﺎﻣ دﺪﻋ mm ،زور یاﺮﺑ ٣٠ ﺎﺗ ٠١ زا و (لﺎﺳ لوا هﺎﻣ ﺶﺷ یاﺮﺑ) ٣١ ﺎﺗ ٠١ ﻦﯿﺑ ﺪﯾﺎﺑ dd ﺮﺒﺘﻌﻣ ﺦﯾرﺎﺗ ﯾ رد ﻪﮐ ﺖﺳا ﻌﯿﺒﻃ ﻞﯿﻟﺪﺑ .ﺪﺷﺎﺑ ١٢ ﺎﺗ ٠١ ﻦﯿﺑ ﺪﯾﺎﺑ mm .(ﻪﺴﯿﺒﮐ لﺎﺳ یاﺮﺑ ﺰﺠﺑ) ﺪﺷﺎﺑ ٢٩ ﺎﺗ ٠١ ﻦﯿﺑ ﺮﺧآ هﺎﻣ یاﺮﺑ و یﺪﻌﺑ هﺎﻣ ﺞﻨﭘ ﺖﻟﺎﺣ ﻦﯾا رد .ﺖﺳا ١٤٧٢ ﺎﺗ ١٣٤٣ یﺎﻬﻟﺎﺳ ﻦﯿﺑ yyyy ﻪﮐ ﻢﯾﺮﯿﮔ ﻣ ضﺮﻓ ،ﻪﺴﯿﺒﮐ لﺎﺳ ﻪﺒﺳﺎﺤﻣ یﺎﻫ ﮔﺪﯿﭽﯿﭘ .ﺪﺷﺎﺑ ٣٠ ،٢٦ ،٢٢ ،١٧ ،١٣ ،٩ ،٥ ،١ داﺪﻋا زا ﯾ ٣٣ ﺮﺑ yyyy ﻢﯿﺴﻘﺗ هﺪﻧﺎﻤﯿﻗﺎﺑ ﻪﮐ ﺖﺳا ﻟﺎﺳ ﻪﺴﯿﺒﮐ لﺎﺳ .ﺪﯾآ ﻣ بﺎﺴﺣ ﻪﺑ ﺮﺒﺘﻌﻣﺎﻧ ﺦﯾرﺎﺗ ﯾ ،ﺪﺷﺎﺑ ﻪﺘﺷاﺪﻧ ار رﻮﮐﺬﻣ ﻂﯾاﺮﺷ ﻪﮐ یا ﻪﺘﺷر ﺪﯾﺎﺑ ﺮ ﯾد فﺮﻃ زا و ﻪﻧ ﺎﯾ ﺖﺴﻫ ﺮﺒﺘﻌﻣ ﺦﯾرﺎﺗ ﯾ یدورو ﻪﺘﺷر ﻪﮐ ﺪﻫد ﺺﯿﺨﺸﺗ ﺪﯾﺎﺑ ﻪﻣﺎﻧﺮﺑ فﺮﻃ ﯾ زا عﻮﻧ ﯾ .ﻢﯿﻨﮐ ﻪﺴﯾﺎﻘﻣ ﻢﻫ ﺎﺑ ار ﺦﯾرﺎﺗ ود ﻢﯿﻧاﻮﺘﺑ ﻪﮑﻨﯾا یاﺮﺑ .ﺪﻨﮐ ﻪﺒﺳﺎﺤﻣ ار ﺮﺒﺘﻌﻣ ﺦﯾرﺎﺗ ود یﺎﻫزور فﻼﺘﺧا
.ﻢﯿﻨﮐ ﻣ ﻒﯾﺮﻌﺗ struct زا هدﺎﻔﺘﺳا ﺎﺑ Date هداد
struct Date { int day;
int month;
int year;
};
ار string_to_Dateﻊﺑﺎﺗ لوا .ﻢﯿﻨﮐ ﻣ ﻢﯿﺴﻘﺗ ﻪﻠﺌﺴﻣ‐ﺮﯾز ود ﻪﺑ ار یدورو ﺦﯾرﺎﺗ رﺎﺒﺘﻋا ﺺﯿﺨﺸﺗ ﻪﻠﺌﺴﻣ ﺪﺷﺎﺑ ﻪﺘﺷاد ار لﻮﺒﻗ ﻞﺑﺎﻗ یﻮ ﻟا یدورو ﻪﺘﺷر ﻪﮐ ﺗرﻮﺻ رد و هدﺮﮐ ﺖﻓﺎﯾرد ار یدورو ﻪﺘﺷر ﻪﮐ ﻢﯿﻨﮐ ﻣ ﻒﯾﺮﻌﺗ ﻦﯾا ﺮﯿﻏ رد .ﺪﻧادﺮﮔ ﻣﺮﺑ ار ﺖﺳا یدورو ﺦﯾرﺎﺗ ﺎﺑ لدﺎﻌﻣ ﻪﮐ Date هداد عﻮﻧ زا ﺮﯿﻐﺘﻣ ﯾ (dd/mm/yyyy) .دﻮﺷ ﻣ جرﺎﺧ ﺎﻄﺧ مﺎﯿﭘ ﺎﺑ ﻪﻣﺎﻧﺮﺑ ترﻮﺻ Date string_to_Date(string date_string)
زور ترﻮﺻ ﻪﺑ ﻻﺎﺣ ﺎﻣا (33/55/2000لﺎﺜﻣ یاﺮﺑ) ﺪﺷﺎﺑ ﺮﺒﺘﻌﻣﺎﻧ ﺪﻧاﻮﺗ ﻣ زﻮﻨﻫ هﺪﺷ هداد ﺦﯾرﺎﺗ ﺪﯿﻨﮐ ﺖﻗد .دﻮﺷ ﻣ مﺎﺠﻧا is_valid_Date() ﻊﺑﺎﺗ رد ﯽﯾﺎﻬﻧ رﺎﺒﺘﻋا ﺺﯿﺨﺸﺗ ﻪﻠﺣﺮﻣ .ﺖﺳا هﺪﺷ ﯿﮑﻔﺗ لﺎﺳ و هﺎﻣ و ار true راﺪﻘﻣ ﺪﻫد نﺎﺸﻧ ار ﺮﺒﺘﻌﻣ ﺦﯾرﺎﺗ ﯾ ﻪﮐ ﺗرﻮﺻ رد ،هدﺮﮐ ﺖﻓﺎﯾرد ار Date عﻮﻧ زا ﺮﯿﻐﺘﻣ ﯾ ﻊﺑﺎﺗ ﻦﯾا .ﺖﺴﯿﻧ ﺮﺒﺘﻌﻣ هﺪﺷ هداد ﺦﯾرﺎﺗ ﻪﮐ ﺪﻨﮐ ﻣ پﺎﭼ ترﻮﺻ ﻦﯾا ﺮﯿﻏ رد ﺪﻧادﺮﮔ ﻣﺮﺑ
.ﻢﯿﻫد ﻣ راﺮﻗ date.h ﻞﯾﺎﻓ رد ار ﺮ ﯾد ﻤﮐ ﻊﺑاﻮﺗ و ﻊﺑاﻮﺗ ﻦﯾا ﻒﯾﺮﻌﺗ file date.h
#include <iostream>
#include<stdlib.h>
using namespace std;
struct Date{
int day;
int month;
int year; };
//////////////////////////////////////////////////////////////////////////////
void invalid_input(){
cout <<"error: invalid input!"<<endl;
exit(1);
}
//////////////////////////////////////////////////////////////////////////////
void invalid_date(){
cout <<"error: invalid date!"<<endl;
exit(1);
}
/////////////////////////////////////////////////////////////////////////////
Date string_to_Date(string date_string){
// allowed date format dd/mm/yyyy 01<= dd <=31, 01<=m<=12, 0000 <= yyyy <= 9999
int d, m, y;
int index = 0;
char c;
//checking if the length of the string is correct if (date_string.length() != 10)
invalid_input();
// checking for slash / characters
if (date_string[2]!='/' || date_string[5]!= '/' ) invalid_input();
while(index < 10){
if (index == 2 || index ==5){
index++;
continue;
}
c = date_string[index++];
if(c < '0' || c > '9' )
invalid_input();
}
d=atoi(date_string.substr(0,2).c_str()); //convert to int m=atoi(date_string.substr(3,2).c_str());
y=atoi(date_string.substr(6,4).c_str());
Date x;
x.day = d;
x.month = m;
x.year = y;
return x;
}
///////////////////////////////////////////////////////////////////////////
int is_valid_Date(Date dd){
int d=dd.day;
int m=dd.month;
int y=dd.year;
if (y <1343 || y > 1472) invalid_date();
if ( m<1 || m > 12) invalid_date();
if (d < 1 || d > 31) invalid_date();
if (m > 6 && d > 30 ) invalid_date();
bool Kabise = (y % 33 ==1) || (y % 33 == 5) || (y % 33 == 9) ||
(y % 33 == 13) || (y % 33 == 17) || (y % 33 == 22) ||
(y % 33 == 26) || (y % 33 == 30);
if (m ==12 && d > 29 && !Kabise) invalid_date();
return 1;
}
////////////////////////////////////////////////////////////////////////
void print_Date(Date ddate) {
cout << ddate.day <<"/"<<ddate.month <<"/" <<ddate.year <<endl;
}
/////////////////////////////////////////////////////////////////////////
رد .ﺪﯿﻨﮐ ﺖﻗد ﻪﻣﺎﻧﺮﺑ include ﺖﻤﺴﻗ ﻪﺑ .ﺖﺳا هﺪﺷ ﻒﯾﺮﻌﺗ convertdate.cpp ﻞﯾﺎﻓ رد main ﻊﺑﺎﺗ .ﺖﺳا هﺪﺷ ﺮﮐذ ﻪﻣﺎﻧﺮﺑ رد header ﻞﯾﺎﻓ ناﻮﻨﻋ ﻪﺑ date.h ﻞﯾﺎﻓ ﺎﺠﻨﯾا file convertdate.cpp
#include <iostream>
#include<stdlib.h>
#include "date.h"
int main() {
string example="31/12/1362";
Date date_example = string_to_Date(example);
if(is_valid_Date(date_example)) print_Date(date_example);
return 0;
}