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





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

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

ربات تلگرامی ما
آخرین نظرات

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

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

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

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

این نوع حلقه که در c++11(همون C++0x) معرفی شد، الآن در زبان های برنامه نویسی جاوا، سی شارپ، پایتون، پرل و روبی وجود دارد، حلقه for-each برای انجام دادن یک عمل برای تمام اعضای یک مجموعه - مثلا یک آرایه - است، کد زیر را در نظر بگیرید:

int ary[5] = {1, 2, 4, 8, 16};
for (int i = 0; i < 5; i++){
cout << ary[i] << endl;
}

اما با استفاده از حلقه for-each میتوانید کار بالا را بصورت زیر انجام بدهید:

int ary[5] = {1, 2, 4, 8, 16};
for (a : ary){
cout << a << endl;
}

سینتکس کلی بصورت زیر هست:

for ( range_declaration : range_expression ) loop_statement

 در range_declaration باید متغیری رو که هر بار برابر با یکی از عناصر range_expression قرار میگیره رو تعریف بکنید، میتونید از کلمه کلیدی auto(که در C++11) معرفی شد استفاده بکنید یا خودتون یک نوع رو مشخص بکنید:

int ary[5] = {1, 2, 4, 8, 16};
for (auto a : ary){
cout << a << endl;
}

همچنین میتونید از یک نوع ارجاعی استفاده بکنید تا بتونید همزمان عناصر رو تغییر هم بدید:

int ary[5] = {1, 2, 4, 8, 16};
for (int& a : ary){
a *= 2;
}

اما کاری که میتونستید با حلقه for معمولی بکنید و با for-each نمیتونید بکنید، فهمیدن index عنصر فعلی هست، حلقه for-each امکانی رو برای این نداره، لذا باید خودتون یک متغیر تعریف کنید و هر بار افزایش بدیدش.

int ary[5] = {1, 2, 5, 8, 16};
int index = 0;
for (int a : ary){
cout << "Element #" << index++ << " is " << a << endl;
}
  • فاروق کریمی زاده

این تکه کد ساده یک مشاهده گر ساده هست که تک تک بایت های فایل را داخل مبنای شانزده(Hex) نمایش میده.

// hexview.c
// Author: FarooghKZ
// It's free software under GPL3+ and comes WITHOUT ANY WARRENTY FROM MAIN AUTHOR
#include <stdio.h>

int main(int argc, char *argv[]){
    if (argc == 1 || !strcmp(argv[1], "-h")){
        printf("Usage: hexview file_path\n");
        return 0;
    }
    FILE *fs = fopen(argv[1], "r");
    long byte_number = 0;
    while(1){
        if ((++byte_number % 26) == 0) // goes to new line each 26 bytes
            printf("\n"); // you may remove this part and then use fold to split it into lines


        int t = getc(fs);
        if (t == EOF)
            break;

        printf("%.2X ", t);
    }
    printf("\n");
    return 0;
}

پیوند کد در گیت‌هاب گیست(برای دریافت به اینجا بروید)

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

الگوریتم های مرتب سازی آن دسته از الگوریتم هایی هستند که برای مرتب سازی یک مجموعه از اعداد و یا حروف و یا اسامی(با توجه به اینکه هر حرف یک ارزش عددی دارد) استفاده میشود.در این مطلب الگوریتم مرتب سازی حبابی- که از ساده ترین الگوریتم های مرتب سازی استمورد بررسی قرار میگیرد.

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

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


حجم: 1.42 مگابایت
  • فاروق کریمی زاده

این پست در حال بروز رسانی است.

رشته ها(Strings) مجموعه ای از کاراکتر ها هستند که برای نمایش پیغام ها، ذخیره اسامی و ... کاربرد دارند. این آموزش را میتوان در سی پلاس پلاس نیز استفاده کرد.

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

یک کاراکتر در زبان سی به این صورت تعریف میشود:

char ch = 'A';
  • فاروق کریمی زاده