تبليغاتX
C++ برنامه نويسي به زبان

اين وبلاگ در مورد فناوري اطلاعات و علوم مرتبط ميباشد

آرم وبلاگ
سلام دوست عزيز . من مرضيه دانشجوي مقطع كارشناسي فناوري اطلاعات هستم . اين وبلاگ در مورد فناوري اطلاعات و علوم مرتبط با اون هست و داراي آموزش كامل و گام به گام برنامه نويسي به زبان ++C .
************************
پيشنهاد مي‌كنم از لينك‌هاي بخش مقالات فناوري اطلاعات ديدن كنيد .
************************
به اميد اينكه مطالب مفيد واقع بشه . با ارائه نظرات سازنده ي خودتون من رو در هرچه پربارتر كردن اين وب ياري كنيد .
متشكرم

مقالات فناوري اطلاعات
پیوندها
جستجوگر

طراح قالب

Powered By
BLOGFA.COM
لینک RSS
برنامه نويسي به زبان ++C (پست 79)

دستور for

نحو دستور for به صورت زير است :

for ( initialization ; condition ; update ) statement ;

سه قسمت داخل پرانتز ، حلقه را كنترل مي‌كنند . عبارت initialization براي اعلان يا مقداردهي اوليه به متغير كنترل حلقه استفاده مي‌شود . اين عبارت ، اولين عبارتي است كه ارزيابي مي‌شود پيش از اينكه نوبت به تكرارها برسد . عبارت condition براي تعيين اينكه آيا حلقه بايد تكرار شود يا خير بكار مي‌رود . يعني اين عبارت شرط كنترل حلقه است . اگر اين شرط درست باشد ، دستور statement اجرا مي‌شود . عبارت update براي پيش بردن متغير كنترل حلقه بكار مي‌رود . اين عبارت پس از اجراي statement ارزيابي مي‌شود . بنابراين زنجيره‌ي وقايعي كه تكرار را ايجاد مي‌كنند عبارتند از :

1- ارزيابي عبارت initialization
2- بررسي شرط condition . اگر نادرست باشد حلقه خاتمه مي‌يابد .
3- اجراي statement
4- ارزيابي عبارت update
5- تكرار گام‌هاي 2 تا 4

عبارت‌هاي initialization و condition و update عبارت‌هاي اختياري هستند . يعني مي‌توانيم آنها را در حلقه ذكر نكنيم .

 

نوشته شده توسط: مرضيه در پنجشنبه چهاردهم شهریور 1387|+|
در حاشيه‌ي ++C

در پست 78 برنامه نويسي به زبان ++C ، مثالي از اعداد فاكتوريل رو نوشتم . از اونجايي كه ممكنه بعضي از دوستان با مفهوم فاكتوريل آشنايي نداشته باشن ، من در اين پست مفهوم فاكتوريل رو شرح ميدم :

براي اينكه نشون بديم كه مي‌خوايم فاكتوريل يك عدد رو محاسبه كنيم ، جلوي اون عدد علامت ! قرار ميديم . مثل : !1 يا !2 يا !3 يا ...

در رياضيات محاسبه‌ي فاكتوريل يك عدد بشكل زير هست :

مثلاٌ براي گرفتن فاكتوريل از هر عددي (در اينجا عدد 5) داريم :

5! = 5 * 4 * 3 * 2 * 1 = 120

و به اين شكل خونده ميشه : پنج فاكتوريل برابر است با پنج ضربدر چهار ، ضربدر سه ، ضربدر دو ، ضربدر يك ، برابر است با صدوبيست .

و براي هر عدد ديگري هم به همين شكل عمل مي‌كنيم .

در ضمن اين نكته رو به ياد داشته باشيد كه فاكتوريل صفر برابر با يك هست : 1=!0

 

نوشته شده توسط: مرضيه در چهارشنبه سیزدهم شهریور 1387|+|
برنامه نويسي به زبان ++C (پست 78)

مثال : اعداد فاكتوريل

اعداد فاكتوريل !0 و !1 و !2 و !3 و ... با استفاده از رابطه‌هاي بازگشتي زير تعريف مي‌شوند :

0! = 1    , n! = n ( n - 1 ) !

براي مثال ، به ازاي n=1 در معادله‌ي دوم داريم :

1! = 1 ( ( 1-1 ) ! ) = 1 ( 0! ) = 1 ( 1 ) = 1

همچنين براي n=2 داريم :

2! = 2 ( ( 2-1 ) ! ) = 2 ( 1! ) = 2 ( 1 ) = 2

و به ازاي n=3 داريم :

3! = 3 ( ( 3-1 ) ! ) = 3 ( 2! ) = 3 ( 2 ) = 6

برنامه‌ي زير همه‌ي اعداد فاكتوريل را كه از عدد داده شده كوچكترند ، چاپ مي‌كند :

int main()
{   long bound ;
    cout << " enter a positive integer : " ;
    cin >> bound ;
    cout << " factorial numbers < " << bound << " : \ n1 " ;
    long  f=1 , i=1 ;
    do
    {   cout << " ,  " << f ;
        f *= ++i ;
    }
    while ( f < bound ) ;
}

خروجي برنامه عبارت است از :

enter a positive integer : 100000
factorial numbers < 100000 :
1 , 1 , 2 , 6 , 24 , 120 , 720 , 5040 , 40320 , 362880

حلقه‌ي do..while تا وقتي تكرار مي‌شود كه شرط درون حلقه‌ي while نادرست شود . 

نوشته شده توسط: مرضيه در چهارشنبه سیزدهم شهریور 1387|+|
برنامه نويسي به زبان ++C (پست 77)

دستور do..while

ساختار do..while روش ديگري براي ساختن حلقه است . نحو آن به صورت زير است :

do statement while ( condition ) ;

به جاي condition يك شرط قرار مي گيرد و به جاي statement دستور يا بلوكي قرار مي‌گيرد كه قرار است تكرار شود . اين دستور ابتدا statement را اجرا مي‌كند و سپس شرط condition را بررسي مي‌كند . اگر شرط درست بود ، حلقه دوباره تكرار مي‌شود وگرنه حلقه پايان مي‌يابد .

دستور do..while مانند دستور while است . با اين تفاوت كه شرط اجراي حلقه به جاي اينكه در ابتداي حلقه ارزيابي گردد ، در انتهاي حلقه ارزيابي مي‌شود . يعني هر متغير كنترلي به جاي اينكه قبل از شروع حلقه تنظيم شود مي‌تواند درون آن تنظيم گردد . نتيجه‌ي ديگر اين است كه حلقه‌ي do..while هميشه بدون توجه به مقدار شرط اجرا ، حداقل يكبار اجرا مي‌شود اما حلقه‌ي while مي‌تواند اصلاٌ اجرا نشود .


مثال : محاسبه‌ي حاصل جمع اعداد صحيح متوالي با حلقه‌ي do..while

int main()
{   int  n , i=0 ;
    cout << " enter a positive integer : " ;
    cin >> n ;
    long  sum=0 ;
    do
        sum += i++ ;
    while ( i <= n ) ;
    cout << " the sum of the first " << n << " integer is " << sum ;
}

 

نوشته شده توسط: مرضيه در چهارشنبه سیزدهم شهریور 1387|+|
برنامه نويسي به زبان ++C (پست 76)

متوقف كردن يك حلقه‌ي نامتناهي

اگر از راهكارهاي خاتمه‌ي حلقه استفاده نكنيد ، حلقه براي هميشه ادامه پيدا مي‌كند و به طبع آن ، برنامه هم هيچگاه به پايان نمي‌رسد . ممكن است شرطي كه براي اجراي حلقه مي‌نويسيد هنگام اجراي برنامه هيچگاه نادرست نشود و حلقه تا بي‌نهايت ادامه يابد . در چنين مواردي از سيستم‌عامل كمك بگيريد . با فشردن كليدهاي Ctrl+C سيستم‌عامل يك برنامه را به اجبار خاتمه مي‌دهد . كليد Ctrl را پايين نگاه داشته و كليد C روي كيبورد خود را فشار دهيد تا برنامه‌ي فعلي خاتمه پيدا كند . به كد زير نگاه كنيد :

int main()
{   long bound ;
    cout << " enter a positive integer : " ;
    cin >> bound ;
    cout << " fibonacci numbers < " << bound << " : \ n0 , 1 " ;
    long  f0=0 , f1=1 ;
    while ( true )    // ERROR : INFINITE LOOP ! Press < Ctrl >+ C . )
    {   long  f2 = f0 + f1 ;
        cout << " , " << f2 ;
        f0 = f1 ;
        f1 = f2 ;
    }
}

خروجي برنامه :

enter a positive integer : 1000
fibonacci numbers < 1000 :
0 , 1 , 1 , 2 , 3 , 5 , 8 , 13 , 21 , 34 , 55 , 89 , 144 , 233 , 377 , 610 , 987 , 159781 , 6765 , 10946 , 17711 , 28657 , 46368 , 75025 , 121393 , 196418 , 317811 , 5040 , 1346265 , 2173809 , 3524578 , 5702887 , 9227465 , 14930352 , 24157817 , 63245986 , 102334155 , 165580141 , 267914296 , 433494437 ,

چون هيچ شرط پايان حلقه‌اي در اين برنامه وجود ندارد ، اجراي برنامه تا بي‌نهايت ادامه خواهد يافت (تا وقتي حافظه سرريز شود) . پس كليدهاي Ctrl+C را فشار دهيد تا برنامه خاتمه يابد .

 

نوشته شده توسط: مرضيه در چهارشنبه سیزدهم شهریور 1387|+|
رمضان
سلام . فرا رسيدن رمضان ، ماه ضيافت الهي رو به همه‌ي شما تبريك مي‌گم و اميدوارم هيچ كدوم از مهموني خدا دست خالي برنگرديم .
نوشته شده توسط: مرضيه در سه شنبه دوازدهم شهریور 1387|+|
برنامه نويسي به زبان ++C (پست 75)

مثال : استفاده از تابع (0)exit

تابع (0)exit روش ديگري براي خاتمه دادن به يك حلقه است . هرچند كه اين تابع بلافاصله اجراي كل برنامه را پايان مي‌دهد :

int main()
{   long bound ;
    cout << " enter a positive integer : " ;
    cin >> bound ;
    cout << " fibonacci numbers < " << bound << " : \ n0 , 1 " ;
    long  f0=0 , f1=1 ;
    while ( true )
    {   long  f2 = f0 + f1 ;
        if ( f2 > bound )  exit ( 0 ) ;   // terminates the program immediately
        cout << " ,  " << f2 ;
        f0 = f1 ;
        f1 = f2 ;
    }
}

خروجي برنامه‌ي بالا به شكل زير است :

enter a positive integer : 1000
fibonacci numbers < 1000 :
0 , 1 , 1 , 2 , 3 , 5 , 8 , 13 , 21 , 34 , 55 , 89 , 144 , 233 , 377 , 610 , 987

برنامه‌ي بالا پس از بدنه‌ي حلقه هيچ دستور ديگري ندارد . پس خاتمه دادن حلقه به معني پايان دادن برنامه است . برنامه نويسان ترجيح مي‌دهند از break براي خاتمه دادن به حلقه‌هاي نامتناهي استفاده كنند زيرا قابليت انعطاف بيشتري دارد .

 

نوشته شده توسط: مرضيه در دوشنبه یازدهم شهریور 1387|+|
برنامه نويسي به زبان ++C (پست 74)

مثال : اعداد فيبوناچي

اعداد فيبوناچي ... F0 , F1 , F2 , F3 به شكل بازگشتي توسط معادله‌هاي زير تعريف مي‌شوند :

F0 = 0   ,   F1 = 1   ,   Fn = Fn-1 + Fn-2  

مثلاٌ براي n=2 داريم :

F2 = F2-1 + F2-2 = F1 + F0 = 0 + 1 = 1

يا براي n=3 داريم :

F3 = F3-1 + F3-2 = F2 + F1 = 1 + 1 = 2

و براي n=4 داريم :

F4 = F4-1 + F4-2 = F3 + F2 = 2 + 1 = 3

برنامه‌ي زير همه‌ي اعداد فيبوناچي را تا يك محدوده‌ي مشخص كه از ورودي دريافت مي‌شود ، محاسبه و چاپ مي‌كند :

int main()
{   long bound ;
    cout << " enter a positive integer : " ;
    cin >> bound ;
    cout << " fibonacci numbers < " << bound << " : \ n0 , 1 " ;
    long f0=0 , f1=1 ;
    while ( true )
    {   long  f2=f0+f1 ;
        if ( f2 > bound )  break ;    // terminates the loop imadiately
        cout << " ,  " << f2 ;
        f0 = f1 ;
        f1 = f2 ;
    }
}

خروجي برنامه به شكل زير است :

enter a positive integer : 1000
fibonacci numbers < 1000 :
0 , 1 , 1 , 2 , 3 , 5 , 8 , 13 , 21 , 34 , 55 , 89 , 144 , 233 , 377 , 610 , 987

حلقه‌ي while شامل بلوكي از پنج دستور است . وقتي شرط ( f2 > bound ) درست باشد ، دستور break اجرا شده و بدون اينكه سه دستور آخر حلقه اجرا شوند ، حلقه فوراٌ پايان مي‌يابد .

توجه داشته باشيد كه از كاراكتر خط جديد 'n\' در رشته‌ي "1,n0\:" استفاده شده است . اين باعث مي‌شود كه علامت : در پايان خط فعلي چاپ شود و سپس مكان‌نما به خط بعدي روي مانيتور پرش كند و رشته‌ي 0,1 را ابتداي آن خط چاپ كند .

 

نوشته شده توسط: مرضيه در یکشنبه دهم شهریور 1387|+|
برنامه نويسي به زبان ++C (پست 73)

خاتمه دادن به يك حلقه

در پست‌هاي قبل طرز استفاده از دستور break براي كنترل دستورالعمل switch را ديديم . از دستور break براي پايان دادن به حلقه‌ها نيز استفاده مي‌شود .

مثال : استفاده از دستور break براي خاتمه دادن به حلقه

int main()
{   int  n , i=1 ; 
    cout << " enter a positive integer : " ;
    cin >> n ;
    long  sum=0 ;
    while ( true )
    {   if ( i>n )  break ;          // terminates the loop immediately
        sum += i++ ;
    }
    cout << " the sum of the first " << n << " integers is " << sum ;
}

خروجي برنامه :

enter a positive integer : 100
the sum of the first 100 integers is 5050

در برنامه‌ي بالا همين كه مقدار i به n برسد ، حلقه خاتمه مي‌يابد و دستور خروجي در پايان برنامه اجرا مي‌شود . توجه كنيد كه شرط اجراي حلقه ، true است . بدين ترتيب حلقه براي هميشه تكرار مي‌شود و هيچگاه پايان نمي‌يابد ، اما در بدنه‌ي حلقه شرطي هست كه سبب پايان يافتن حلقه مي‌شود : به محض اينكه i>n شود دستور break حلقه را مي‌شكند و كنترل به بيرون حلقه پرش مي‌كند . وقتي قرار است حلقه از درون كنترل شود ، معمولاٌ شرط كنترل حلقه را true مي‌گذارند . با اين روش عملاٌ شرط اجراي حلقه حذف مي‌شود .
     

 

نوشته شده توسط: مرضيه در سه شنبه پنجم شهریور 1387|+|
برنامه نويسي به زبان ++C (پست 72)

مثال : استفاده از حلقه‌ي while براي تكرار يك محاسبه

برنامه‌ي زير جذر هر عددي كه كاربر وارد كند را محاسبه مي‌كند . در اين برنامه از حلقه‌ي while استفاده شده تا مجبور نباشيم براي محاسبه‌ي جذر عدد بعدي برنامه را دوباره اجرا كنيم :

int main()
{   double  x ;
    cout << " enter a positive number : " ;
    cin >> x ;
    while ( x > 0 )
    {   cout << " sqrt ( " << x << " ) = " << sqrt ( x ) << endl ;
         cout << " enter another positive number ( or 0 to quite ) : " ;
         cin >> x ;
    }
}

خروجي برنامه :

enter a positive number : 49
sqrt ( 49 ) = 7
enter another positive number ( or 0 to quite ) : 3.14159
sqrt ( 3.14159 ) = 1.77245
enter another positive number ( or 0 to quite ) : 100000
sqrt ( 100000 ) = 316.228
enter another positive number ( or 0 to quite ) : 0

در اين برنامه ، شرط اجراي حلقه ، عبارت (x>0) است . مقدار x درون حلقه با تغيير عدد ورودي تغيير مي‌كند . بنابراين حلقه فقط وقتي خاتمه مي‌يابد كه عدد ورودي برابر با صفر يا كمتر از آن باشد . متغيري كه به اين شكل براي كنترل حلقه استفاده شود ، متغير كنترل حلقه نام دارد .

 

نوشته شده توسط: مرضيه در سه شنبه پنجم شهریور 1387|+|
برنامه نويسي به زبان ++C (پست 71)

مثال : محاسبه‌ي حاصل جمع اعداد صحيح متوالي با حلقه‌ي while

اين برنامه مقدار زير را براي عدد ورودي n محاسبه مي‌كند :

1+2+3+...+n

int main()
{   int  n , i=1 ;
    cout << " enter a positive integer : " ;
    cin >> n ;
    long sum=0 ;
    while ( i<=n )
    sum += i++ ;
    cout << " the sum of the first " << n << " integers is " << sum ;
}

برنامه‌ي بالا از سه متغير محلي n و i و sum استفاده مي‌كند . متغير i با مقدار 1 مقداردهي اوليه مي‌شود و عددي كه كاربر وارد مي‌كند در متغير n قرار مي‌گيرد . متغير sum نيز با صفر مقداردهي اوليه مي‌شود . سپس حلقه‌ي while آغاز مي‌گردد : ابتدا مقدار i با n مقايسه مي‌گردد . اگر i<=n بود مقدار i با مقدار sum جمع شده و حاصل در sum قرار مي‌گيرد . به i يكي افزوده شده و دوباره شرط حلقه بررسي مي‌شود . هنگامي كه i بزرگتر از n شود ، حلقه متوقف مي‌شود . پس n آخرين مقداري است كه به sum افزوده مي‌شود .

 

نوشته شده توسط: مرضيه در سه شنبه پنجم شهریور 1387|+|
برنامه نويسي به زبان ++C (پست 70)

تكرار (Iteration)

تكرار اجراي پي‌در‌پي يك دستور يا بلوكي از دستورالعمل‌ها در يك برنامه است . با استفاده از تكرار مي‌توانيم كنترل برنامه را مجبور كنيم تا به خطوط قبلي برگردد و آنها را دوباره اجرا كند . ++C داراي سه دستور تكرار است : دستور while ، دستور do_while و دستور for . دستورهاي تكرار به علت طبيعت چرخه مانندشان ، حلقه (Loop) نيز ناميده مي‌شوند .

دستور while

نحو دستور while به شكل زير است :

while ( condition )  statement ;

بجاي condition يك شرط قرار مي‌گيرد و بجاي statement دستوري كه بايد تكرار شود قرار مي‌گيرد . اگر مقدار شرط ، صفر (يعني نادرست) باشد ، statement ناديده گرفته مي‌شود و برنامه به اولين دستور بعد از while پرش مي‌كند . اگر مقدار شرط ناصفر (يعني درست) باشد ، statement اجرا شده و دوباره مقدار شرط بررسي مي‌شود . اين تكرار آنقدر ادامه مي‌يابد تا اينكه مقدار شرط صفر شود . توجه كنيد كه شرط بايد درون پرانتز قرار بگيرد .

 

نوشته شده توسط: مرضيه در جمعه یکم شهریور 1387|+|
برنامه نويسي به زبان ++C (پست 69)

كلمات كليدي

تا اينجا با كلماتي مثل if و case و float آشنا شديم . دانستيم كه اين كلمات براي ++C معني خاصي دارند . از اين كلمات نمي‌توان بعنوان نام يك متغير يا هر منظور ديگري استفاده كرد و فقط بايد براي انجام همان كار خاص استفاده شوند . مثلاٌ كلمه‌ي float فقط بايد براي معرفي يك نوع اعشاري بكار رود . يك كلمه‌ي كليدي در يك زبان برنامه‌نويسي كلمه‌اي است كه از قبل تعريف شده و براي هدف مشخصي منظور شده است . ++C استاندارد اكنون شامل ۷۴ كلمه‌ي كليدي است :

 and / and_eq / asm / auto / bitand / bitor / bool / break / case / catch / char / class / compl / const / const_cast / continue / default / delete / do / double / dynamic_cast / enum / explicit / export / extern / false / float / for / friend / goto / if / inline / int / long / mutable / namespace / new / not / not_eq / operator / or / or_eq / private / protected / public / register / reinterpret_cast / return / short / signed / sizeof / static / static_cast / struct / switch / template / this / throw / true / try / typedef / typoid / typename / using / union / unsigned / virtual / void / volatile / wchar_t / while / xor / xor_eq

كلمات كليدي مانند if و else تقريباٌ در هر زبان برنامه‌نويسي يافت مي‌شوند . ديگر كلمات كليدي همچون dynamic_cast منحصر به ++C هستند .

دو نوع كلمه‌ي كليدي وجود دارد : كلمه‌هاي رزرو شده و كلمات استاندارد .

يك كلمه‌ي رزرو شده كلمه‌اي است كه يك دستور خاص از آن زبان را نشان مي‌دهد . كلمه‌ي كليدي if و else كلمات رزرو شده هستند . يك شناسه‌ي استاندارد كلمه‌اي است كه يك نوع داده‌ي استاندارد از زبان را مشخص مي‌كند . كلمات كليدي bool و int شناسه‌هاي استاندارد هستند زيرا هر يك از آنها يك نوع داده‌ي خاص را در زبان ++C مشخص مي‌كنند . براي اطلاعات بيشتر در مورد كلمات كليدي به كامپايلر ++C مراجعه كنيد . 

نوشته شده توسط: مرضيه در چهارشنبه سی ام مرداد 1387|+|
برنامه نويسي به زبان ++C (پست 68)

عملگر عبارت شرطي

يكي از مزيت‌هاي ++C اختصار در كدنويسي است . عملگر عبارت شرطي يكي از امكاناتي است كه جهت اختصار در كد نويسي تدارك ديده شده است . اين عملگر را مي‌توانيم بجاي دستور if..else بكار ببريم . اين عملگر از نشانه‌هاي ؟ و : به شكل زير استفاده مي‌كند :

condition ? expression1 : expression2 ;

در اين عملگر ابتدا شرط condition بررسي مي‌شود . اگر اين شرط درست بود ، حاصل كل عبارت برابر با expression1 مي‌شود و اگر شرط نادرست بود ، حاصل كل عبارت برابر با expression2 مي‌شود . مثلاٌ در دستور انتساب زير :

min = ( x

اگر x

**************************************************************

مثال : نسخه‌ي جديدي از برنامه‌ي يافتن مقدار مينيمم

int main()
{   int  m,n ;
    cout << " enter two integers : " ;
    cin >> m >> n ;
    cout << ( m}

عبارت شرطي ( m : n ؟ m

 

 

نوشته شده توسط: مرضيه در چهارشنبه سی ام مرداد 1387|+|
برنامه نويسي به زبان ++C (پست 67)

مثال : تله‌ي سقوط در دستور switch

برنامه‌ي زير بدون دستورهاي break دچار تله‌ي سقوط مي‌شود .

int main()
{   int  score ;
    cout << " enter your test score : " ;   cin >> score ;
    switch (score/10)
    {   case  10 :
        case  9 :   cout << " your grade is A . " << endl ;   // LOGICAL ERROR
        case  8 :   cout << " your grade is B . " << endl ;   // LOGICAL ERROR
        case  7 :   cout << " your grade is C . " << endl ;   // LOGICAL ERROR
        case  6 :   cout << " your grade is D . " << endl ;   // LOGICAL ERROR
        case  5 :   
        case  4 :
        case  3 :
        case  2 :
        case  1 :
        case  0 :   cout << " your grade is F . " << endl ;   // LOGICAL ERROR
        default :    cout << " Error : score is out of range . \ n " ;
    }
    cout << " Goodluck . " << endl ;
}

خروجي برنامه :

enter your test score : 83
your grade is B .
your grade is C .
your grade is D .
your grade is F .
Error : score is out of range .
Goodluck .

در اجراي فوق ، پس از اينكه به case 8 انشعاب شد و عبارت مقابل آن چاپ شد ، چون دستور break وجود ندارد ، اجراي برنامه به خط بعدي كه case 7 است مي‌رود و عبارت your grade is C را نيز چاپ مي‌كند و به همين ترتيب يكي‌يكي همه‌ي عبارت‌هاي case را اجرا مي‌كند و سرانجام عبارت default را هم اجرا نموده و آنگاه از دستور switch خارج مي‌شود . 

 

نوشته شده توسط: مرضيه در سه شنبه بیست و نهم مرداد 1387|+|
منوي اصلی
آرشیو
آمار وبلاگ
» تعداد بازدیدها:
» مرورگر:
امکانات اضافي

© All Rights Reserved by mrz-it.Blogfa.com ©