کرم های کامپیوتر





قالب وبلاگ در حال ویرایش شدن!

ممکن است اشکالاتی در قالب پیش بیاید
بنابراین پیشاپیش متاسفیم!

کرم های کامپیوتر

من و دوستم دو تا کرمیم که داریم تو سیستم ها وُل می خوریم و بعضی وقت ها براتون چیزایی که تو این وُل خوردن ها یاد گرفتیم رو می نویسیم!!!!!

ربات تلگرامی ما
آخرین نظرات
  • ۲۹ شهریور ۹۷، ۱۴:۱۸ - فرهاد حسن پور
    جالب بود
  • ۱۰ تیر ۹۷، ۲۰:۵۴ - پسر ساده
    داس

۵۴ مطلب با موضوع «آموزش :: برنامه نویسی» ثبت شده است

تابع qsort از کتاب‌خانه‌ی استاندارد(stdlib.h) از توابع مفید و البته استاندارد هست.این تابع با دادن آدرس آرایه، تعداد اعضا، اندازه‌ی هر عضو و یک تابع برای مقایسه‌ی دو عضو،آرایه  را بصورت صعودی مرتب میکند.

با اینکه این تابع استاندارد هست اما اجباری در پیاده‌سازی آن نیست، به این معنی که qsort ضرورتا همه‌جا(منظور از همه جا دقیقا همه‌جاست! این یعنی ابر‌رایانه‌ها،فبلت‌ها،رایانه‌های شخصی و همچنین میکروکنترلر‌ها مانند AVR و PIC را نیز حساب میکنیم) وجود ندارد.

void qsort(void *base, size_t nmemb, size_t size,
            int (*compar(const void *, const void *)))

  • فاروق کریمی زاده
complex(real_part=0, imag_part=0)
complex(str)

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

  • فاروق کریمی زاده
os.urandom(n)

تابع os.urandom تعداد n بایت تصادفی برمیگرداند که برای مصارف رمزنگاری و دیگر کاربرد‌ها که اعداد تصادفی با کیفیت‌تر نیاز دارند مناسب است

  • فاروق کریمی زاده
مطمئن نبودم که باید این پست را بنویسم یا نه. بعد از اندکی فکر کردن، دیدم بهتر است این حرف‌ها را به گوش بقیه رسانده و عقیده‌ی خود را ابراز کنم! شاید دلیل نوشتن حداقل بخشی از این پست یک تعصب پنهان به بعضی زبان‌ها و سیستم‌عامل‌ها باشد.بخشی دیگر هم مطالبی بودند که فکر کردم پست بهنام سیمجو به اندازه کافی به آنها نپرداخته یا مبهم نوشته و ...
قبل از هر چیز باید بگم دنیای برنامه‌نویسی بسیار گسترده است و سر‌و‌ته ندارد. کافیست جست‌و‌جویی ساده بکنید تا ببینید چندین زبان برنامه‌نویسی وجود دارد که هرکدام دروازه‌ای به شهری از کد‌ها و الگو هاست.
ویکی‌پدیای انگلیسی در اینجا به تنهایی حدود چند صد زبان را فهرست میکند که البته طبق چیزی که خودش گفته، زبان‌های مجرمانه و نسخه‌های مختلف بیسیک را حساب نمی‌کند. معیار‌های سرشناسی ویکی‌پدیا هم که بماند. اما این زبان‌ها اکثر اوقات(اگر نه همیشه) روی همدیگر بنا می‌شوند. در نتیجه دستور آنها(همان syntax) بسیار شبیه هم هست. در مورد زبان‌هایی مثل سی و سی‌پلاس‌پلاس این قضیه حتی بدتر(یا بهتر؟) هم می‌شود.

تصویر بالا بر اساس اطلاعات ویکی‌پدیای انگلیسی درست شده و نشان می‌دهد چه زبانی از چه زبانی تاثیر پذیرفته است.
همان طور که می‌دانید می‌توان یک مفهوم و معنی را با بی‌شمار زبان و روش گفت. زبان‌های برنامه‌نویسی هم به همین شکل هستند.
این جمله تا حدی درست است اما نه کاملا. برای مثال شعار پایتون «تنها یک راه حل برای یک مسئله» هست. احتمالا بعضی از دیگر زبان‌ها هم تلاش میکنند همینطور باشند.
البته که زبان اصلی رایانه‌ها زبان ماشین است که بسیار سنگین است و برای نوشتن آن نیاز به ریاضیات و محاسبات قوی دارد.
دوباره ترساندن از زبان ماشین یا اسمبلی؟ هر ماشین زبان مخصوص به خودش را دارد. زبان AVR‌ها با ۸۰۵۱ قدیمی و گوشی اندرویدی شما با معماری ARM و ... همه با هم متفاوت هستند.بعضی آسان‌تر و ساده‌تر و بعضی سخت‌تر هستند  اما زبان ماشین ترسناک نیست. اتفاقا تجربه‌ی زبان ماشین جالب و حتی جذاب است و شما را با سخت‌افزار رایانه بهتر آشنا میکند و تفکری متفاوت از زبان‌های معمول مانند سی و بیسیک به شما می‌دهد.
به طور کل زبان پایتون بهترین و قابل فهم‌ترین زبان برای آغاز برنامه نویسی است. زبان پایتون زبانی ساده و در عین حال کارآمد ولی متنی است یعنی خروجی آن تنها به صورت متنی نمایش داده می شود و تا آنجا که من می دانم رابط گرافیکی ندارد.
در این مورد مطمئن نیستم. شخصا فکر میکنم دلایل دیگری هم هست که افراد زیادی پایتون را برای شروع پیشنهاد میدهند: پایتون هم بدرد یادگیری برنامه‌نویسی میخورد و هم میتوانید بعدا آنرا واقعا استفاده کنید.میتوانید این ویژگی پایتون را با بیسیک مقایسه کنید. یک دلیل دیگر «عادت های خوب» هست. مثلا پایتون برنامه‌نویس را مجبور میکند که از دندانه‌گزاری(indentation) استفاده کند که این در دیگر زبان‌ها نیز یک عادت خوب تلقی می‌شود و برای خوانایی بهتر کد توصیه می‌شود.
و در مورد متنی بودن، برای پایتون نیز مانند بسیاری از زبان‌های برنامه‌نویسی کتابخانه و ماژول و چهارچوب وجود دارد. همچنین مانند بسیاری از دیگر زبان‌ها، برنامه‌نویسی رابط کاربری گرافیکی جزئی از زبان نیست.
توجه داشته باشید که زبان پایتون یک زبان اسکریپتی است و در ویندوز برای اجرای کد نیاز به برنامه دیگری است ولی در لینوکس مستقیما از ترمینال اجرا می شود.
بله برای اجرای کد های پایتون در حالت عادی باید از یک برنامه استفاده کنید که اسکریپت‌های پایتون را اجرا می‌کند. این برنامه در بسیاری از توزیع‌های گنو/لینوکسی و تعدادی از لپ‌تاپ‌های ویندوزی از قبل نصب شده است.
زبان دیگری که برای برنامه‌نویسان مبتدی است و از نامش هم پیداست، بیسیک (BASIC) می باشد. البته زبان پایتون از بیسیک خلاصه‌تر هست ولی بیسیک و مخصوصا ویژوال بیسیک (visual basic) امکان برنامه‌نویسی گرافیکی در ویندوز را به شما می دهد.
هرچند که خودم چندان با بیسیک کار نکردم و نظری در این مورد ندارم اما بزرگان(از جمله اریک ریموند) توصیه کردند که به دلیل طراحی بد و دادن عادات بد به برنامه‌نویس سمت بیسیک نرویم. اگر هم خواستید تجربه کنید، ویژوال بیسیک تنها گزینه‌ی شما نیست.گزینه‌های دیگری که حتی آزاد یا متن‌باز هستند وجود دارند.
زبانی که آقای کریمی زاده با آن برنامه‌نویسی را آغاز کرد همین بود.
درست هست که من با سی‌شارپ شروع کردم اما این شروع کاملا تصادفی بود و هیچ منطق یا فلسفه‌ای پشتش نبود. این را به بقیه نیز توصیه نمیکنم!
توجه داشته باشید که دو زبان بیسیک و سی‌شارپ بیشتر برای ویندوز هستند.
اگر منظور ویژوال بیسیک هست، بله وگرنه نسخه های مختلفی از بیسیک وجود دارند. همچنین فراموش نکنیم که بازی و برنامه‌های مختلفی با سی‌شارپ و پروژه مونو نوشته‌شده‌اند.
دنیای لینوکس برای کاربران مبتدی نیست و اگر کاربر مبتدی با لینوکس طرف باشد از آن بیزار می شود ولی لینوکس برای برنامه نویسان و کاربران پیشرفته‌تر حکم بهشت را دارد!
فکر نمیکنم قسمت اول نوشته چندان درست باشد. الآن برعکس گذشته توزیع‌هایی دقیقا برای مبتدیان(مثلا اوبونتو) و غیرفنی‌ها وجود دارد و روی بسیاری از توزیع‌ها یک رابط کاربری گرافیکی از قبل نصب شده.
پیشنهاد من این است که اگر تصمیم دارید که کرم کامپیوتر باشید بعد از این که در ویندوز چرخیدید و کودک نو پای برنامه نویسیتان راه رفتن یاد گرفت به دنیای لینوکس مهاجرت کنید.
البته گزینه‌ی دیگری جز لینوکس هم دارید: بی‌اس‌دی(BSD).خودم چندان با بی‌اس‌دی‌ها کار نکردم اما بنظر می‌آید(با توجه به نوشته‌ی اریک ریموند و دیگر نوشته‌ها) گزینه‌های خوبی هستند.
  • فاروق کریمی زاده

این توابع از توابع توکار پایتون هستند و همانطور که از اسمشان مشخص است، یک عدد مبنای ده را به یک رشته که حاوی آن عدد در مبنای ۸،۱۶ یا ۲ است تبدیل میکند. فکر نمیکنم نیاز به توضیح زیادی داشته باشند اما توجه کنید که این توابع یک رشته برمیگردانند. چند مثال:

>>> hex(10)
'0xa'
>>> oct(13)
'0o15'
>>> bin(12)
'0b1100'

مطالب مرتبط:

  • فاروق کریمی زاده

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

  • بهنام سیم جو

وقفه 19h(در مبنای شانزده) با کد ماشین CD19(بازهم در مبنای ۱۶) در بعضی سیستم‌ها باعث ریبوت شدن ماشین و در بعضی دیگر باعث بوت از دستگاه بعدی میشود.

طرز استفاده:

int 19h
  • فاروق کریمی زاده

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

  • بهنام سیم جو

در زبان پایتون، تابع input از ورودی استاندارد(که بصورت پیشفرض و معمولا صفحه کلید است) تا زمانی که به نویسه‌ی خط جدید نرسیده میخواند و یک رشته(نوع str) با حذف خط جدید برمیگرداند.استفاده از آن بصورت زیر است:

input(prompt='')

prompt یک رشته است که به عنوان یک پیام به کاربر نمایش داده میشود و از کاربر میخواهد تا چیزی وارد کند، در صورتی که ذکر نشود،رشته‌ای خالی است(یعنی چیزی نمایش داده نمیشود). یک مثال:

name = input('What is your name?')
print('Hi,', name)

فراموش نکنید که تابع یک رشته برمیگرداند و در صورت نیاز باید آنرا به عدد و غیره تبدیل کنید.

مطالب مرتبط:

  • فاروق کریمی زاده

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

برای بدست آوردن حجم یک پرونده، البته بدون توجه به فایل‌سیستم و سیستم‌عامل میتوانیم به این صورت عمل کنیم: اول پرونده را باز میکنیم، سپس اشاره‌گر پرونده را به آخرین بایت آن انتقال میدهیم(معمولا تابعی به اسم seek یا مشابه وجود دارد)، حالا مکان اشاره‌گر را نسبت به اول پرونده بدست می‌آوریم(معمولا تابعی به اسم tell وجود دارد). حجم پرونده را به بایت بدست آورده‌ایم.

  • فاروق کریمی زاده