Reza.Black 405 گزارش دادن ارسال شده در آذر 99 به نام خدای بزرگ با سلام خیلی وقت بود که قصد داشتم یک تاپیک جامع ایجاد کنم. البته بین C و python دو دل بودم که در نهایت تصمیم گرفتم که C رو آموزش بدم. در این تاپیک با پایه های این زبان به خوبی آشنا میشید و گام محکمی برای مفاهیم پیچیده تر این زبان بر می دارید. مخاطب این تاپیک همگان هستن به خصوص افرادی که قصد دارن برنامه نویسی رو شروع کنن چه خوب هست که مفاهیم رو از دریچه ی C نگاه کنن. به هر حال یادگیری این زبان به ویژه در مباحث مربوط به هک یک اصل محسوب میشه. این هم لیست عناوین : آشنایی با ساختار کلی زبان C آشنایی با متغیرها و ثوابت ورودی و خروجی استاندارد آشنایی با عملگرها دستور شرطی switch و if حلقه ی تکرار for و while توابع آرایه ها اشاره گرها کار با رشته ها ساختارها فکر می کنم که یکی از تاپیک های خوب در این زمینه باشه و دارای نکات فنی خوبی هم باشه. این تاپیک به مرور زمان کامل میشه. فعلا یا علی 7 4 واکنش ها : KR0N0S ، hackerr ، RT3N و 8 نفر دیگر به اشتراک گذاری این ارسال لینک به ارسال به اشتراک گذاری در سایت های دیگر
Reza.Black 405 گزارش دادن ارسال شده در آذر 99 زبان C در اوایل دهه ی 1970 توسط Thompson و Ritchie ابداع شد. این زبان ارتباط بسیار نزدیکی با سیستم عامل یونیکس داره چون هر دو به صورت همزمان در طول زمان تکامل پیدا کردند. زبان C یک زبان میانی هست یعنی هم به زبان محاوره ای ما و هم به زبان ماشین نزدیک هست و برای اجرا احتیاج به کامپایل داره. (فرایند ترجمه ی کد به زبان ماشین رو کامپایل میگن) من در این آموزش از سیستم عامل کالی لینوکس و ویرایشگر متن nano استفاده می کنم و برای کامپایل برنامه ها هم از gcc که به صورت پیش فرض نصب هست. {ساختار کلی زبان C} به این برنامه ی ساده دقت کنید. این ساده ترین برنامه به زبان C هست که فقط عبارت in the name of God رو برای ما چاپ می کنه. خط اول مربوط به پیش پردازنده هست در واقع برای وارد کردن فایل های هدر کتابخونه ای. ()main تابع اصلی ما هست و نقطه ی ورود ما به برنامه محسوب میشه. تابع ()printf برای چاپ پیام هست. و n\ یک کاراکتر کنترلی هست که رفتار عادی یک دستور رو تغییر میده و در اینجا به معنی خط جدید هست. ;0 return همون نتیجه ی ما هست که از جنس عدد صحیح هست به خاطر جنس خود تابع int main و 0 به معنای موفقیت هست. تمام دستورات C به ; ختم میشن خوب برنامه رو کامپایل و اجرا می کنیم. برای کامنت های تک خطی هم از // استفاده می کنیم که برای نمایش توضیحات در کد به کار میره و می تونه خیلی مفید باشه. 7 واکنش ها : MrExploit ، johnjones ، MR.MSA و 4 نفر دیگر به اشتراک گذاری این ارسال لینک به ارسال به اشتراک گذاری در سایت های دیگر
Reza.Black 405 گزارش دادن ارسال شده در آذر 99 {آشنایی با متغیر ها و ثوابت} متغیر در واقع بخشی از حافظه هست که ما مقداری رو در داخل اون قرار میدیم. و این مقدار می تونه دستخوش تغییر بشه در طول اجرای برنامه برای مثال دریافت نام یک کاربر و یا ضرب دو عدد همه ی این مقادیر باید در داخل متغیرها قرار بگیرن. در زبان C یک متغیر با نوع و نام و مقدار در رابطه هست و از این نظر بسیار سخت گیر هست. برای تعریف یک متغیر در زبان C به این شکل عمل می کنیم. که متغیر age از نوع عدد صحیح با مقدار 25 هست انواع دیگر از متغیرها نیز وجود داره مثل float برای اعداد اعشاری و یا char برای نوع کاراکتری برای نامگذاری متغیرها از حروف بزرگ و کوچک استفاده می کنیم و همین طور اعداد ولی به شرطی که عدد در ابتدای نام نباشه. ثابت : قوانین نامگذاری ثابت هم مثل متغیر هاست با این تفاوت که نمیشه مقدار اون رو تغییر دادو این هم باعث افزایش کارایی و هم امنیت میشه. برای تعریف یک ثابت از کلمه ی کلیدی const استفاده می کنیم البته روش های دیگه ای هم وجود داره. 7 واکنش ها : MR.MSA ، proxy ، MrExploit و 4 نفر دیگر به اشتراک گذاری این ارسال لینک به ارسال به اشتراک گذاری در سایت های دیگر
Reza.Black 405 گزارش دادن ارسال شده در آذر 99 {ورودی و خروجی استاندارد} زمانی که از ورودی و خروجی استاندارد صحبت می کنم در واقع اشاره می کنم به کنترل جریان ورودی و خروجی که معمولا ورودی مربوط میشه به صفحه کلید و خروجی به مانیتور (کاری به خطای استاندارد ندارم) ساده ترین دستور برای خروجی و چاپ پیام دستور printf هست که یک عبارتی رو برای ما چاپ می کنه.مثل برنامه ی اولی که نوشتیم. ما با متغیر ها آشنا شدیم و برای چاپ مقدار اون ها می تونیم از این دستور یا بهتر بگم تابع استفاده کنیم. ولی باید از پارامتر فرمت که نشون دهنده ی نوع متغیر و همین طور نام متغیر در انتها استفاده کنیم که متناظر هم باشن. معروف ترین پارامترهای فرمت در زبان C d% برای اعداد صحیح f% برای اعداد با ممیز شناور c% برای کاراکترها s% برای رشته ها این هم یک مثال ساده : ولی این یک برنامه ی یک طرفه هست و تعاملی با کاربر نداره و برای این کار باید از ورودی استاندارد استفاده کنیم. منظورم تابع معروف scanf هست این طوری می تونیم یک رابط کاربری ایجاد کنیم. این تابع اشاره به آدرس متغیر در حافظه داره این نکته رو یاد داشته باشید که موقع نوشتن یک متغیر باید به آدرس اون اشاره کنیم. البته با اشاره گرها اشتباه نشه و همین طور نوع متغیر این که از چه جنسی هست. یه مثال دیگه : 8 واکنش ها : RT3N ، johnjones ، Hb051 و 5 نفر دیگر به اشتراک گذاری این ارسال لینک به ارسال به اشتراک گذاری در سایت های دیگر
Reza.Black 405 گزارش دادن ارسال شده در آذر 99 {آشنایی با عملگرها} ما با استفاده از عملگرها و یا اپراتورها می تونیم اعمالی رو بر روی داده ها انجام بدیم. و چندین نوع عملگر مختلف در C وجود داره که مهم هاش رو توضیح میدم. عملگرهای محاسباتی که برای انجام اعمال محاسباتی مثل ضرب و تقسیم و ... به کار میرن. عملگرهای مقایسه ای که برای مقایسه ی مقادیر مثل کوچکتر و بزرگتر مساوی و عدم تساوی و ... کاربرد دارن. و همین طور عملگر های منطقی. فعلا کاری با این ها نداریم همین که سطحی هم بشناسید اون ها رو کافی هست. عملگر مهم sizeof این عملگر برای تعیین طول یک متغیر به کار میره و در معماری های گوناگون سیستم می تونه متفاوت باشه. برای مثال من می خوام بدونم که طول متغیر از نوع int که تعریف کردم چقدر هست. دقت کنید. بله معمولا عددصحیح 4 بایت هست. 7 واکنش ها : johnjones ، proxy ، RT3N و 4 نفر دیگر به اشتراک گذاری این ارسال لینک به ارسال به اشتراک گذاری در سایت های دیگر
Reza.Black 405 گزارش دادن ارسال شده در آذر 99 {دستور شرطی switch و if} ساده ترین دستور شرطی if هست که با استفاده از اون ما می تونیم جهت جریان یک برنامه رو کنترل کنیم. فرض کنید که ما درون یک چهارراه قرار داریم و این که باید کدوم مسیر رو انتخاب کنیم. دستور if هم به این شکل هست. دستور if همیشه دارای یک شرط هست که در داخل پرانتز قرار می گیره این شرط می تونه مثبت و یا منفی باشه. اگه شرط ما درست باشه دستوراتی برای ما اجرا میشن. برای مثال من یک متغیر ست کردم و یک شرط ساده تعیین می کنم و اگه شرط من درست بود عبارتی برای من چاپ بشه. من می تونم چند شرط چند خطی با else if و همین طور یک else تنها در انتها برای عدم صحت شرط خودم تعیین کنم. دستور switch اگه تعداد زیادی دستور else و if داشته باشم بهتر هست که از switch استفاده کنم. این طوری می تونم به طور متمرکز بر روی یک متغیر کار کنم و خوانایی برنامه هم افزایش پیدا می کنه. درون دستور switch ما کیس های مختلفی (شرط) های گوناگونی داریم. البته در پایان هر کیس باید از کلمه ی کلیدی break استفاده کنیم تا کیس های بعدی اجرا نشن. بهتر هست یک کیس default هم در نظر بگیریم تا یک شرط پیش فرض هم داشته باشیم. این هم یک مثال ساده. 6 واکنش ها : RT3N ، KR0N0S ، nonamee و 3 نفر دیگر به اشتراک گذاری این ارسال لینک به ارسال به اشتراک گذاری در سایت های دیگر
Reza.Black 405 گزارش دادن ارسال شده در آذر 99 {حلقه ی تکرار for و while} یکی از اصلی ترین مفاهیم در برنامه نویسی تکرارها هستند. و ما در زبان C با دستورات for و while سر و کار داریم که همانند دستور if دارای یک شرط هستند. و اینجا اگه شرط ما درست بود یکسری کار ها برای ما تکرار میشن. معمولا زمانی از حلقه ی while استفاده می کنیم که شرط ما مشخص نیست که کی به پایان میرسه. و یک کانتر برای کنترل حلقه و یا آپدیت اون به کار می بریم که می تونه هم کاهشی باشه و هم افزایشی. این هم یه مثال ساده : حلقه ی for زمانی که ما از شرط خاتمه آگاه هستیم می تونیم از حلقه ی for استفاده کنیم. هر چند که این دو حلقه همدیگر رو به خوبی پوشش میدن. ولی فرق حلقه ی for این هست که مقدار دهی اولیه و شرط و همین طور آپدیت همگی در یکجا قرار دارن. و این کنترل روی مقادیر رو افزایش میده و دستورات داخل پرانتز رو با ; از هم جدا می کنیم. 5 واکنش ها : RT3N ، proxy ، KR0N0S و 2 نفر دیگر به اشتراک گذاری این ارسال لینک به ارسال به اشتراک گذاری در سایت های دیگر
Reza.Black 405 گزارش دادن ارسال شده در آذر 99 {توابع} یکی از بلوک های اصلی برنامه نویسی توابع هستن و بدون اون ها واقعا برخی از برنامه ها دچار مشکل میشن. مثلا اگه قرار بود تابعی مثل scanf رو دستی بنویسیم واقعا چقدر دچار مشکل میشدیم و توابع کار رو برای ما آسون کردن. توابع برنامه ها رو ساده تر و خواناتر و قابلیت انعطاف به اون ها بخشیدن. یک تابع حاوی بدنه هست که در واقع یکسری دستورات هست. یک تابع می تونه یک یا چند آرگومان داشته باشه و برای اشاره به یک تابع به نام اون اشاره می کنیم. برای مثال من می خوام یک تابع بنویسم که یک عدد رو دو برابر کنه و در خروجی به من نشون بده. اسم تابع من multi هست. دقت کنید. 7 واکنش ها : KR0N0S ، MR.MSA ، johnjones و 4 نفر دیگر به اشتراک گذاری این ارسال لینک به ارسال به اشتراک گذاری در سایت های دیگر