رفتن به مطلب

اموزش توابع سی پلاس پلاس


mortza
 اشتراک گذاری

ارسال های توصیه شده

به نام نگارنده توابع 

===============================
جلسه 1:اموزش توابع در سی پلاس پلاس 
================================

سلام خدمت عزیزان گرامی امروز سعی بر این دارم که توابع در زبان شیرینه سی پلاس رو به روشنی اموزش بدم 
خیلی ساده از مبتدی ترین و پایه ایی ترین نظر شروع میکنم و کم کم میریم سراغ بررسی سورس کد هایی که برای مثال ساختم و اون ها رو کم کم تحلیل میکنیم
چرا که توابع رو متوجه نشین در هیچ زبان دیگه ایی موفق نخواهید بود 
پس لطفا اگر در توابع مشکلی دارین این تایپیک رو از دست ندین
(برای یادگیری باید مثال زد و اگه شما مثالی رو در نظر دارین که میتونه مفید واقع شه با هماهنگی  بزارین که قطعا کمکتون بی بهره نیست)

----------------

ابتدا نمیخوام سرتون رو درد بیارم
نگاه به اطرافتون کنید و چیز هایی که اطرافتون هست و دقیق نگاه کنید
حالا حتما با خودتون میگین (مثلا داره سی پلاس نگاه میکنه برامون اموزش نقاشی اورده :/)
نگران نباشید میخوام درکتون رو از تابع و کد نویسی سخت بیارم بیرون همیشه توابع در دنیای کد نویسی خیلی سخت به حساب میاد در حالی که اصلا اینطور نیست
همیشه از درک سخت گفتن اما نگفتن چجور درک کنیم 
برای مثال الان حتما بخاری روشنه(الان زمستونه..)
ببنید گاز وارد بخاری میشه بعد یه چیزایی اتفاق میوفته بعد از این ور گاز میسوزه و گرما تولید میشه 
حالا در اینجا ما میدونیم یه گازی اومده داخل بخاری شده و از این ور گرما تولید میشه و ما گرم میشیم
!این یک تابعه
چون تابع یک مقادیری رو گرفته و بر اساس اون ها تنها یک خروجی رو میده
الان به مقدار گاز به گرما تبدیل شده 

😅حالا میگین مباحث جالب...

:)هدفم از این حرفا این بود که بدونید تابع چیز زیاد سختی نیست همیشه یک برنامه نویس یا هر کسی به چجور شد فکر نمیکنه به اینکه چگونه شد فکر میکنه

-----------------
حالا نظرتون راجب به تابع عوض شد بریم سراغ تعریف سی پلاسیش 

در سی پلاس یک تابع میتواند یک یا چند ورودی بگیره و یه کارایی کنه(دستوراتی رو که بهش میدیم رو انجام بده)در نهایت اختیارا یک خروجی رو تحویل بده 
دقت کنید که من گفتن اختیارا 
یعنی نباید حتما یک خروجی رو بده میتونه خروجی رو برنگردونه همچنین این مطلب در مورد ورودی ها هم صدق میکنه 
یعنی تابع لزوما میتونه ورودی نداشته باشه همچنین خروجی هم نداشته باشه 

حالا بریم سراغ تعریف تابع در سی پلاس و بدونیم که چجور باید تابع باید بسازیم 
فرمت تعریف تابع در سی پلاس اینشکلیه:
 


returnType identifier(optional_parameters)
{
// statement(s)
}



:)نگران این عبارت های انگلیسی نامربوط نباشین
همشون رو با هم بررسی میکنیم
 

returnType :
یعنی چی؟
هر کسی که تازه سی پلاس رو یادگرفته میدونه داده چیه در اینجا منظور از همون داده هاست 
برای مثال int,float,...
حالا در اینجا یکم بیشتر بمونیم 
تعریف بشه void  گفتیم که تابع میتونه که هیچ  خروجی نداشته باشه به اصطلاح کد نویسا هیچ مقداری رو برنگردونه پس باید به صورت 
که برنامه متوجه بشه که قرار نیس هیچ خروجی این تابع داشته باشه
در رابطه با مقدار void یک نکته هست
وقتی شما با این نوع داده کار میکنید یادتون باشه که return رو بزارین 
چرا که باید یک مقداری رو در نهایت به برنامه بده و از تابع خارج بشه دیگه 

identifier :
اسم تابع حالا هر چی میتونه باشه برای مثال میتونیم اسمه تابع مین رو بگیم
int main()....

(optional_parameters) :
پارامتر های تابع 
پرامتر در تابع یه معنای ورودی های تابعه که میتونه نوشته نشه
چرا که من گزاشتم اپشنال یعنی اضافه میتونه باشه میتونه نباشه 
یادتون هست گفتم که تابع میتونه اصلا ورودی نداشته باشه 
در ضمن اگه پارامتر های زیادی داشته باشین به اون لیست پارامتر گفته میشه(گفتم نگین نگفتی)

statement(s) :
اون عبارت وسط دو اکولاد همون کارایی رو که قراره تابع انجام بده رو اونجا مینویسیم
به این دستورات بدنه تابع میگن
چرا که تابع یه کارایی رو انجام میده دیگه 
این دستورات به دین شکل نوشته میشن


این از تعریف کلی تابع در سی پلاس 
حالا اگر بخوایم از تابع استفاده کنیم باید اون رو به حالت اجرا در بیاریم 
🥺به اجرای تابع فراخوانی گفته میشه (نه در سی پلاس بلکه در برنامه نویسی کلا به اجرای تابع میگین فراخوانی دیگه نگین اجرا بگین فراخوانی)
فرمت فراخوانی تابع اینطوریه :

identifier (optional_arguments);

خب یه چند تا کلمه جدید 😕
 identifier : این رو از قبل میدونید همون اسم تابع تعریف شده 
 optional_arguments : یه مشت چیز میز که بهشون میگن ورودی که ما به تابع میدیم (به اصطلاح پاس میدیم از این به بعد اینم بگین پاس دادن ورودی به تابع)
 اسم این مقادیر هم از این به بعد بگین ارگومان هم خوشگل تره هم کد نویسی تره 
 وقتی داریم ارگومان ها رو قراخوانی میکنیم 
 باید تعداد  و توع پارامتر های تابع رو بنویسیم 

 
😄حالا من هم دیگه از  تئوری خسته شدم 
بریم سراغ یه مثال نه چندان کاربردی(خو اول از کوچیک شروع میکنیم دیگه...)

یک برنامه مینویسیم که یه تابع داره 
این تابع قراره 2 تا ورودی(ارگومان)بگیره و بزگترین اون ها رو نشون بده(برگردونه):

#include <iostream> //برای خروجی گرفتن 
using namespace std; //برای راحتی کارمون
float ls(float a , float b) // تابع رو فراخوانی کردیم و دو ارگومان بهش دادیم با نوع داده فلوت
{ 
  if(a > b) // اگر عدد اول از عدد دوم بزرگتر بود
  {
  return a; // عدد اول رو نشون بده(به اصطلاح برگردون )
  }else //اگر شرط اولی درست نبود 
  {
  return b; //دومی رو نشون بده
  }
}
int main() // تابع مین که گفته بودم
{
cout << "bishtarin  = " <<  ls(1000 ,999)  << endl; // در اینجا  تابع رو نشون دادیم و به جایه اولی دومی مقدار عددی بهش دادیم پس از اینکه این دو عدد وارد تابع بشوند یک خروجی در نهایت نشون داده میشه
return 0; //نشون میده که برنامه تموم شده (بدون خطا تموم شده با توجه به اینکه عددی که بعدشه یک نیست)
}


با اجرای این کد میتونید ببینید که عدد 1000 نشون داده میشه 
در اینجا ما یک بار این تابع رو فراخوانی کردیم (یه بار دیگه صداش زدیم مقایسه کنه خب)
میتونیم چندین بار فراخوانی کنیم تابع رو از این منظر نگرانی وجود نداره

در این مثال ما از ساختار شرطی if استفاده کردیم 
شما میتونید از ساختار های تکرار  و...هم استفاده کنید 
و برنامه های متفاوتی بسازید 

جلسه یک به اتمام رسید
😅تکلیف جلسه بعدتون (تکلیف هم میدیم جوابشم جلسه بعد میگم...)
 استفاده کنیدforیک برنامه بسازید مثله من ولی اینبار بجای استفاده از ساختار شرطی از حلقه 
!تا جلسه بعد موفق

لینک به دیدگاه
به اشتراک گذاری در سایت های دیگر

به نام نگارنده توابع 

===============================
جلسه 2:اموزش توابع در سی پلاس پلاس 

================================

...در این جلسه قراره بریم مطالب جلسه قبل رو کامل کنیم قراره بگیم میتونیم دو تا تابع همنام اما با داده های مختلف رو در یک برنامه استفاده کنیم یا نه

در نهایت هم تکلیف جلسه قبل رو قرار بدیم

----------------

در مثال جلسه گذشته دیدیم که تابع رو قبل تابع اصلی یا همون مین تعریف کردیم و بعد اون رو داخل مین فراخوانی(استفاده کردیم) حالا میشه تابع رو قبل مین هم بنویسیم شدنیه ایا؟

 مسلما ارور میخوریم و کامپایل نمیشه خب چرا ما که تابع رو گفتیم چرا کامپایلر ارور میده ؟

چون کامپایلر هنوز نمیدونه تابع کجاس به این دلیل به ارور برمیخوره برای رفع این ارور باید تابع رو قبل مین اعلان کنیم و بعدش کارایی رو که باید تابع انجام بده(تعریف کنه)بعد مین قرار بدیم 

در پروژه های بزرگ و همچنین کوچک و تقریبا توی اکثر کار هایی که من میکنم تابع رو از اول قبل مین اعلان میکنم بعد  مین تعریف میکنم هم کار سادس هم  اینکه راحت تر میشه 

مثال جلسه قبل یادتون هست حالا میخوایم به صورت پروتوتایپ بنویسیمش 

بدین شکل:

#include <iostream>
using namespace std;
float ls(float a, float b); //اعلان تابع قبل تابع اصلی
int main() //تابع اصلیمون
{
    cout << "bishtarin : " << ls(1000, 999) << endl;
    return 0;
}
float ls(float a, float b) //تابعی که قرار بود بزرگترین دو عدد رو بسنجه
{
    if (a > b)
    {
        return a;
    }
    else {
        return b;
    }
        
}

این رو کامپایل کنید نتیجه با مثال قبلی برابره و فقط ما در کد نویسی از پروتوتایپ استفاده کردیم

این جور نوشتن لذت بخشه...

حالا غیره از سورس اصلی میتونید در یک فایل دیگه هم با استفاده از انکلود هم توابعتون رو بنویسید و در سورس اصلی فقط اعلانشو بنویسید در پروژه های بزرگ به ندرت میشه گفت از این قابلیت استفاده نمیکنن

و اکثرا به دلیل اینکه قراره چند نفر پروژه رو درست کنن برای راحتی کار چندین تابع رو به چندین نفر میدن و تنها در فایل مین اعلان میکنن که این از مزیت استفاده از توابعه 

همچنین شما میتونید در اعلان تابع ارگومان رو ننویسید و تنها نوع داده رو بنویسید

----------------

مطلب بعدی اینه که در سی پلاس پلاس میتونیم چند تابعی که اسامی شبیه به همی دارن هم قرار بدیم ولی یادتون باشه باید در تعداد یا نوع داده پارامتر ها تفاوتی وجود داشته بشه چرا که اینطور دو تا تابع تکرار  داریم خب برای چی  

به این عمل اورلود تابع گفته میشود(overload)

حالا بیایم یه مثال بزنیم ببینیم چه خبره

 استفاده میکنیم که از این مظر  هم مشکلی نباشه (voidدر این مثال از نوع تابع بدون مقدار بازگشتی(همون

       :int و دیگری از نوع char  یه برنامه که دو تابع همنام با یه دونه پارامتر داره که یکی از تابع ها از نوع

#include <iostream>
  using namespace std;
  void khoroji(int a) //دقت کنید میبینید که توابع همنام هستند
  {
  cout << "adad = " << a << endl; 
  }
  void khoroji(char a)
  {
  cout << "harf = " << a << endl; //همنام
  }
  int main()
  {
   khoroji(12); //نشون داده میشوند
   khoroji('m');// ..
  return 0;
  }

خب بعد کامپایل میبینید که بدون هیچ تداخلی برنامه عدد رو جلوی عدد و حرف رو جلوی حرف طبق گزاره بالا نشون میده

خب تا به اینجا با اورلود و همچنین پروتوتایپ اشنایی کافی پیدا کردین و با هم مثالی رو حل کردیم

تا اینجای کار رو داشته باشین در جلسه بعدی میریم که مطالب بیس تابع رو تموم کنیم در جلسات بعدش میریم سراغ جنبه های مختلف استفاده توابع 

امید وارم تا به اینجایه کار خوب پیش اومده باشین و  اشنایی پیدا کرده باشین

تا جلسه اینده موفق

تکلیف شماره 1.cpp

لینک به دیدگاه
به اشتراک گذاری در سایت های دیگر

به نام نگارنده توابع 

===============================
جلسه 3:اموزش توابع در سی پلاس پلاس 

================================

خب دوستان گرامی قراره در این جلسه بیس کار رو تموم کنیم تا در ادامه مشکلی وجود نداشته باشه 

در این جلسه قراره با پارامتر ها و ارگومان های پیشفرض اشنا بشیم و تکنیک بازگشتی رو خدمتتون عرض کنیم 

----------------

پارامتر های پیش فرض

دیدید که چگونه ما تابعی رو اعلان میکنیم حالا میتونیم  برای یک سری پارامتر هایی که داریم مقادیر پیشفرض قرار بدیم که اگه یه وقت ارگومانی به تابع اصطلاحا پاس داده نشه پارامتر های تابع از قبل مقدار دهی شده باشن

به زبون ساده جهت احتیاط به جایه اینکه ورودی رو به تابع بدیم  از همون اول به صورت پیشفرض پارامتر ها رو مقدار دهی کنیمبه این مثال ساده توجه کنید

#include <iostream>

using namespace std;

void namayesh(int a, int b = 4) //یک تابع که پارامتر پیشفرض داره 
{
    cout << "a= " << a  << "\n b= " << b << endl;
}
int main()
{
    namayesh(1); //فقط یک  ارگومان 
    namayesh(1, 2);

    return 0;
}


حالا ببینید دوستان در این مثال ما اومدیم فقط پارامتر اولی رو مقدار دهی کردیم و پارامتر دومی رو مقدار دهی نکردیم 
با این حال به دلیل اینکه به صورت پیشفرض ما مقدار دهی کردیم پس مشکلی پیش نمیاد و عدد 4 نمایش داده میشه

----------------

ارگومان های پیشفرض

شما میتونید مثل کاری که با پارامتر های ییشفرض کردین با ارگومان ها هم انجام بدین خیلی ساده
اما مراقب باشین یه وقت با این کار فراخوانی تابع از بین نره ها 
همین کار رو با مثال بالا انجام بدین ببینید چه اتفاقی میوفته
اگه ارور خوردین دلیلش اینه  که هر دو تابع هزمان قابل اجرا میشن و دیگه کامپایلر  نمیفهمه که کدوم تابع رو باید الان فراخوانی کنه خلاصه ارور میخورین

----------------

تکنیک بازگشتی 

یه تکتیک سادس که برای سادگی به کار میبریم 
این عمل باعث میشه که یک تابع خودش رو فراخوانی کنه که دیگه لازم نباشه ما فراخوانی کنیمش 
البته خودتونم میدونید اگه ما این کار رو بکنیم یک حلقه ی بی پایان فراخوانی درست میشه 
حالا برای اینکه از حلقه خارج بشه باید یه دستور بزاریم از حلقه خارج بشه
جهت اطلاع به این دستور بیس کیس میگن(حالت پایه)
بیایم یه برنامه با این روش بنویسیم 
یه برنامه بنویسیم که با بازگشتی باشه که در صورتی عددی که میخوایم از 1 بیشتر باشه عدد یک رو نشون بده و اگه عدد  منفی یک بود به علاوه یک کنه که صفر بشه
(مثال برای یادگیری بود راستش ایده خاصی به ذهنم نرسید خودتون با یه ننگاه سر سری به این میفهمید دیگه..)

#include <iostream>
using namespace std;

int hale(int x)
{
    if (x += 1)// حالت پایه بازگشتی
    {
        return 1;  
    }
    else
    {
        return x*hale(x + 1);
    }
}


int main()
{
    cout << hale(-1) << endl;
    return 0;

----------------

خب عزیزان ما تا اینجا به صورت کلی تابع رو یادتون دادیم
در ادامه میرسیم به چگونگی استفاده از تابع در ارایه ها و مباحث پیش رو 
امید وارم تا اینجا مطالب مفید واقع شده باشه 
تکلیف هم اینه که برید یک برنامه با تکنیک بازگشتی بنویسید(موضوع برنامه ازاد :)
!موفق

لینک به دیدگاه
به اشتراک گذاری در سایت های دیگر

به نام نگارنده توابع 

===============================
جلسه 4:اموزش توابع در سی پلاس پلاس 

================================

خب در جلسات قبل بیس کار رو بهتون معرفی کردیم
گفتیم تابع چیه و از این جور حرفا این جلسه قراره بریم سراغ استفاده های توابع در جنبه های مختلف سی پلاس پلاس

ابتدا استفاده از ارایه و دادن اون به تابع رو یادمیگیریم
و سپس در ادامه جهت تکمیل میریم سراغ چگونگی پاس دادن مقدار(تغییر ارگومان اصلی)و همچنین با نحوه پاس دادن ادرس به تابع اشنا میشیم
همچنین یک سری توابع پیش فرض رو هم توضیح میدیم که چی هستن مثل تابع عضو تابع لامبدا 

پیش نیاز این جلسه ارایه هستش باید بدونید ارایه چیه که چطور ارایه رو پاس بدیم به تابع ....

بریم سره کارمون

-------------------------------

پاس دادن ارایه تک بعدی به تابع

برای اینکه ما یک ارایه رو به تابع بدیم خیلی راه ها وجود داره 
در اینجا ما اول میریم سراغ پاس دادن یک ارایه تک بعدی سپس به توابع چند بعدی خواهیم رسید...
نکته: یادتون باشه هنگام فراخوانی تابع باید اسم ارایه بدونه تعداد عناصر درونش نوشته بشه ضمنا باید ارایه در لیست پارامتر باشه 
بدین شکل:

#include <iostream>

using namespace std;

void namayesArraye(int a[] , int meghdar) //یک تابع بدون مقدار بازگشتی
{
   for(int x = 0; x < meghdar; x++) //یک حلقه فور دیگه طرز کارشو بلدین
  {
     cout << a[x] << endl; // نشون دادن ارایه پاس داده شده
  }
}

int main()
{
    int a[4] = { 1,2,10,22 };  //تعریف ارایه
   namayesArraye(a,5); //پاس دادن ارایه به تابع(مقدار دهی اولیه..)
  return 0;
}



یک مثال سطح پایین میزنم که در اینده بریم سراغ مثال های جون دار 
😕 این مثال گویایه کله حرفمونه و نیازی به توضیح نداره راستشو بخواین اخه متغیر ها رو هم فارسی نوشتم 

-----------

پاس دادن ارایه دو  یا چند بعدی به تابع(همه رو بنویس اولی رو ولش )!کاره ساده اییه مثل مثال بالا ولی دقت کنید همیشه باید تعداد عناصر همه بعد های ارایه نوشته بشه غیره از بعد اول
به  نگا به مثال کنید بد نیست

#include <iostream>

using namespace std;

void namayesArraye(int arr[][3], int b , int c ) // همون طور که گفته شد تو پارامتر ها بعد اول رو ننوشتیم همون قضیه همه رو بنویس اولی رو ولش
{
    for (int a = 0; a < b; a++) 
    {
        for (int b = 0; b < c; b++) //خب چون ارایه مون دو بعدی هستش
        {
            cout << arr[a][b] << endl; 
        }
    }
}

int main() //همو رو بنویس اولی رو ولش ....
{
    int a[2][3] = {{1,2},{2,8}};
    namayesArraye(a, 1, 2);
    return 0;
}

بریم سراغ مبحث بعدی

-------------------------------

پاس دادن مقدار در تابع 

شما با نحوه مقدار دهی توابع اشنا شده بودین(همون ارگومان )اما اینجور پاس دادن ها چجور کار میکنه
پارامتر که گفتیم چیه میاد و  مقدار رو ور میداره  و در تابع اصلی مین قرار میده 
در این حالت مقدار اصلی ارگومان تغییر پیدا نمیکنه و در بعضی موارد که ما احتیاج داریم انی مقدار رو تغییر بدیم ممکن نیست
برای حله این مشکل به صورت یک مثال بیایم عمل کنیم

#include <iostream>
using namespace std;

void passmeghdar(int a)
{
    a = 100;
}
int main()
{
    int b = 10; // یک متغیر  جدید با همون نوع داده درست کردیم
    passmeghdar(b);
    cout << "b shode= " << b << endl;
    return 0;
}


در هنگام فراخوانی میایم و مقدار رو پاس میدیم ...به همین سادگی 

-------------------------------

پاس دادن ادرس به تابع 

حتما با اپراتور ادرس اشنا هستین(&)
حالا میخوایم مثل مفدار این رو هم به تابع پاس بدیم 
میبینید که هیچ فرقی با مثال بالا نداره

 

#include <iostream>
using namespace std;

void passmeghdar(int a)
{
    a = 100;
}
int main()
{
    int b = 10; 
    passmeghdar(&b); // فقط این فرق داره :/
    cout << "b shode= " << b << endl;
    return 0;
}


کارکردش رو بگیم
با پاس دادن ادرس و گرفته شدنش تابع با مقدار ارگومانی که از قبل گذاشتیم  کار میکنه و اگه اون مقداری رو که براش گذاشتیم عوض بشه مقدار ارگومان اصلیمون هم تعویض میشه

---------------------------------

رسیدیم به یک سری توابع که توی سی پلاس پلاس مدرن خیلی به کار میان

توابع لامبدا 

بخونید lambda...
این توابع اسمی ندارن (گمنام...) و تو هر جایی از برنامه میتونن تعریف بشن(دیگه لازم نیس بالا پایینه مین رو نگران باشیم...)
فرمشون بدین صورته:

[capture list] (parameter list) mutable throw() -> {function body}

به ترتیب میگیم چی هستن:
---
[capture list] = لیست دریافت عناصر 
که به 3 نوع میتونید بنویسید
1_[] , 2_[&] , 3_[=] 
1: [ ] : متغیر های محلی رو میتونید در اینجا بنویسید البته لابمدا نمیتونه بهشون دسترسی پیدا کنه
2: [&] : متغیر های محلی که با ادرسشون دروین لامبدا قرار میگیرن
3: [=] :  متغیر های محلی که با مقدارشون درون لامبدا قرار میکیرن

---
mutable 
وقتی بخوایم مقادیر متغیر های گرفته شده رو تغییر بدیم از این استفاده میکنیم تا قابل تغییر بشن
البته این اختیاری نوشتنش...
---
throw()
برای استثنا استفاده میشه و طبیعتا اینم اختیاریه...
---

خب بریم سراغ یه مثال ریز

#include <iostream>
#include <ostream>
using namespace std;

int main()
{
    int a, b;
    int a = 11;
    cout << "Enter A number: " << endl; //یک برنامه که یک عدد رو میگیره و بزرگی اون رو از 11 بررسی میکنه و نتیجه رو برمیگردونه
    cout << [](int a, int b) { if (a > b) { return a; }else { return b; } << endl; //استفاده از لامبدا 
    return 0;
}

 

با طریقه استفاده از لامبدا اشنا شدید لامبدا کارایه بزرگی از دستش برمیاد ها
اصولا لامبدا پایه برنامه نویسی تابعی به شمار میره یعنی در اونجا محاسبات بر اساس توابع صورت میگیره
البته بیشتر لامبدا زمانی استفاده میشه که بخوایم به توابع تابعی رو پاس بدیم
خلاصه اینکه خیلی خوبه...


---------------------------------

autoتوابع 

در سی پلاس مدرن علاوه بر لامبدا یه ن.ع تابع بازگشتی هم وجود داره 
فراخوانی صورت بگیره  return در صورت استفاده از بازگشت در این توابع باید حداقل بعد از یک 
یه مثال ساده بزنیم خودتون برگ و بال بهش بدین

auto run() {
  return 123;
}

---------------------------------

خب دوستان عزیز به پایان کار رسیدیم
 امید وارم تا اینجا این مطالب به دردتون خورده باشه
 موفق!

لینک به دیدگاه
به اشتراک گذاری در سایت های دیگر

برای ارسال دیدگاه یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید دیدگاهی ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در سایت ما ثبت نام کنید. عضویت خیلی ساده است !

ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید

ورود به حساب کاربری
 اشتراک گذاری

انجمن تیم امنیتی گارد ایران

تیم امنیتی گارد ایران یک گروه مستقل است که قوانین آن با خط مشی جمهوری اسلامی ایران مغایرت ندارد. تیم امنیتی گارد ایران از سال 1393 فعالیت خود را آغاز کرد و هدف این تیم تامین امنیت سایت ها و سرورهای ایرانی است. تیم ما همیشه برای دفاع از مرزهای سایبری سرزمین عزیزمان ایران آماده است.

شرکت گاردایران

پردازشگران ایمن داده ي آدلان

شماره ثبت: 9438

شبکه های اجتماعی

 

نمادها

logo.aspx?id=56084&Code=ybjZVyBlXag5cNRv logo-samandehi

×
×
  • اضافه کردن...

اطلاعات مهم

فعالیت شما در این انجمن به منزله تایید قوانین انجمن میباشد! شرایط استفاده