نمایش نتایج 1 تا 11 از 11

نام تاپیک: این کد چی کار میکنه؟

  1. #1
    کاربر دائمی آواتار 1485159
    تاریخ عضویت
    فروردین 1388
    محل زندگی
    NULL
    سن
    30
    پست
    886

    این کد چی کار میکنه؟

    من هرچی به خودم فشار آوردم نفهمیدم
    اگه میشه کلمه به کلمه تو ضیح بدین:
    type
    TRGB32 = packed record
    B, G, R, A: Byte;
    end;
    TRGB32Array = packed array[0..MaxInt div SizeOf(TRGB32)-1] of TRGB32;
    PRGB32Array = ^TRGB32Array;

  2. #2
    کاربر دائمی
    تاریخ عضویت
    فروردین 1388
    محل زندگی
    ایران سرای من است
    پست
    2,655

    نقل قول: این کد چی کار میکنه؟

     
    type
    TRGB32 = packed record // تعریف متغییر برای رکورد
    B, G, R, A: Byte;
    end;
    TRGB32Array = packed array[0..MaxInt div SizeOf(TRGB32)-1] of TRGB32;
    // یک نوع جدید که در زیر هم ازش استفاده شده است تعریف میکند که از نوع رکورد پکت و نوع ارایه
    //بر اندازه رکورد تعیین شده MaxInt که اندازه این آرایه برابر خارج قسمت
    PRGB32Array = ^TRGB32Array;// این هم نتیجه عمل که استفاده شده

  3. #3
    کاربر دائمی آواتار 1485159
    تاریخ عضویت
    فروردین 1388
    محل زندگی
    NULL
    سن
    30
    پست
    886

    نقل قول: این کد چی کار میکنه؟

    packed record

    این یعنی چی؟

  4. #4
    کاربر دائمی آواتار masoud_z_65
    تاریخ عضویت
    اردیبهشت 1385
    محل زندگی
    Tehran-SHiraz
    سن
    37
    پست
    294

    نقل قول: این کد چی کار میکنه؟

    تا اونجایی که من یادمه packed نوع جدیدی رو تعریف میکرد اما بصورت فشرده
    مثل اینجا یک نوع رکورد به اسم TRGB32 اما بصورت فشرده

  5. #5
    کاربر دائمی آواتار 1485159
    تاریخ عضویت
    فروردین 1388
    محل زندگی
    NULL
    سن
    30
    پست
    886

    نقل قول: این کد چی کار میکنه؟

    یعنی چی فشرده؟

  6. #6

    نقل قول: این کد چی کار میکنه؟

    با سلام
    میشه بفرمایید از این کد برای چه منظوری استفاده میکنید؟

  7. #7
    کاربر دائمی آواتار 1485159
    تاریخ عضویت
    فروردین 1388
    محل زندگی
    NULL
    سن
    30
    پست
    886

    نقل قول: این کد چی کار میکنه؟

    این تاپیک رو نگاه کنی میفهمی که در چه موردی کار برد داره:
    http://forum.p30world.com/showthread.php?t=232062

  8. #8

    نقل قول: این کد چی کار میکنه؟

    تا اونجایی که من یادمه packed نوع جدیدی رو تعریف میکرد اما بصورت فشرده
    یعنی کامپایلر عناصر رکورد را Align نمیکنه. Align کردن شیوه ایی برای بالا بردن کارایی کد هست. روش کار هم به این شکل هست که در یک CPU 32 بیتی اگر داده ها به صورت بلوک های 32 بیتی ارسال بشند، نیاز به پردازش کمتری دارند. چون CPU در هر سیکل 32 بیت داده دریافت میکنه، اگر طول داده ایی بیش از این مقدار باشه، داده باید در دو بلوک به CPU ارسال بشه. پس در این شرایط، وقتی یک رکورد مثل رکورد زیر بخواد به CPU ارسال بشه:
    TTest Record = record
    a : byte;
    b : real;
    c : integer;
    end;

    در حالت packed، سه بلوک داده به این شکل ارسال میشه:
    1- a و 3 بیت از b
    2- چهار بیت از b
    3- بیت آخر b و 3 بیت از c
    4- یک بیت از c و 3 بیت خالی.

    اگر داده ها Align شده باشند، رکو به این شکل ارسال میشه:
    1- a و 3 بیت خالی
    2- چهار بیت از b
    3- دو بیت از b و 2 بیت خالی
    4- c.

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

    در بعضی مواقع خاص لازم هست که مطمئن بشیم به همراه رکورد ما داده غیر ضروری دیگه ایی ذخیره نمیشه، مثلا زمانی که یک رکورد باید روی شبکه ارسال بشه، یا روی فایل نوشته بشه، در اون صورت، به کامپایلر، با استفاده از packed، گفته میشه که از Align کردن فیلدهای رکورد صرف نظر بکنه.


    وَ سَيَعْلَمُ الَّذِينَ ظَلَمُوا [آل محمد حقهم] أَيَّ مُنْقَلَبٍ يَنْقَلِبُونَ - الشعراء (227)
    و ظالمین [حق آل محمد (ص) ] به زودی خواهند دانست که به کدام بازگشتگاه بازخواهند گشت.

  9. #9
    کاربر دائمی آواتار masoud_z_65
    تاریخ عضویت
    اردیبهشت 1385
    محل زندگی
    Tehran-SHiraz
    سن
    37
    پست
    294

    نقل قول: این کد چی کار میکنه؟

    آرايه هاي فشرده : آرايه فشرده آرايه اي است كه فاصله ميان عناصر آن كم است و درنتيجه ميزان حافظه كمتري براي ذخيره سازي آن مورد نياز است ولي سرعت اجراي برنامه در آرايه هاي فشرده كمتر است .


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

    تعریف آرایه های فشرده:
    شکل استفاده :
    type string type = packed array [1 . . size] of char ;


    مثال:

    type string10 = packed array [1 . . 10] of char ;

    تذکر :
    نوع اندیس برای string type باید از1 شروع شود.

    تذکر:
    هنگام نمایش یک متغیر رشته ای ، می توان از یک قالب مشخص استفاده کرد.
    دستورات :
    Write ( ‘Hello’ , FirstName :4 ) ;
    writeLn ( ‘ ! Good to see you .’ )
    Hello A.C. ! Good to see you .

    کاراکتر های یک رشته درست مثل هر متغیر از نوع char می توانند مورد استفاده قرار گیرند.

    مثال 1 :
    در صورتی که FirstName حاوی رشته ‘A.C. Jones’ باشد،
    دستورات
    FirstName [1] := ‘D’ ;
    FirstName [6] := ‘B ;’

    محتویاتFirstName را به ‘D.C. Bones’ تغییر می دهند.

    تذکر:
    یک عنصر رشته ای برای یک پارامتر متغیر از نوع Char نمی تواند ارسال شود. ولی یک کاراکتر مستقیما می تواند به عنوان عنصری ازیک متغیر رشته ای خوانده شود.

    دستور :
    Read ( FirstName [1] )

    اولین کاراکتر موجود در رشته FirstName را با کاراکتر داده خوانده شده جایگزین می کند.

    مثال :
    برنامه نوشتن نامه فرم :

    Const
    StringLength = 40
    Type
    StringType = packed array [1 . . StringLength] of Char ;
    Var
    BodyFile , { input – body of letter }
    Letter : Text ; { output – completed letter file }
    begin { FormLetter }
    Reset ( BodyFile ) ;
    Rewrite ( Letter ) ;
    WriteLn (Output , ‘writing job application letter .’ ) ;
    Preamble ( Letter ) ;
    WriteBody ( BodyFile, Letter ) ;
    WriteLn ( Output, ‘Letter copied to output file .’ )
    End . { FormLetter }

  10. #10

    نقل قول: این کد چی کار میکنه؟

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


    وَ سَيَعْلَمُ الَّذِينَ ظَلَمُوا [آل محمد حقهم] أَيَّ مُنْقَلَبٍ يَنْقَلِبُونَ - الشعراء (227)
    و ظالمین [حق آل محمد (ص) ] به زودی خواهند دانست که به کدام بازگشتگاه بازخواهند گشت.

  11. #11
    کاربر دائمی آواتار masoud_z_65
    تاریخ عضویت
    اردیبهشت 1385
    محل زندگی
    Tehran-SHiraz
    سن
    37
    پست
    294

    نقل قول: این کد چی کار میکنه؟

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

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •