ورود به حساب ثبت نام جدید فراموشی کلمه عبور
برای ورود به حساب کاربری خود، نام کاربری و کلمه عبورتان را در زیر وارد کرده و روی “ ورود به حساب” کلیک کنید.





اگر فرم ثبت نام برای شما نمایش داده نمیشود، اینجا را کلیک کنید.









اگر فرم بازیابی کلمه عبور برای شما نمایش داده نمیشود، اینجا را کلیک کنید.





صفحه 1 از 2 12 آخرین
نمایش نتایج: از 1 به 10 از 15
  1. #1
    adminmsp
    مدیر کل و موسس سایت
    تاریخ عضویت
    1970 Jan
    محل سکونت
    M.S.P Soft
    نوشته ها
    1,590
    759
    465

    اموزش ساختمان داده ها به زبان فارسی

    اموزش ساختمان داده ها را برای شما دوستان اماده کرده ایم که خیلی جالب و حرفه سعی کردیم مقالات را جمع اوری کنیم تا بتونیم نیاز شما دوستان را برطرف کنیم.ابتدا توضیحاتی در مورده ساختمان داده میدم و بعد رئوس مطلب را براتون مینویسم.
    در اصطلاح کامپیوتری، ساختمان داده به روشهایی از ذخیره اطلاعات گفته می شود که برای استفاده بهینه از اطلاعات ذخیره شده اتخاذ می شود. غالباً انتخاب یک ساختمان داده موجب ایجاد الگوریتم (الخوارزمی) های متناسب با آن خواهد شد که این دو در کنار هم موجب افزایش سرعت انجام یک وظیفه یا کاهش مصرف حافظه برای پردازش داده می شود؛ سنگ بنای ساختمان های داده انواع داده و اشاره گرهای گوناگون است. که با توجه به چگونگی تعریف کاربرد آنها در هر زبان برنامه نویسی پیاده سازی آنها متفاوت خواهد بود. ما اکنون به پیاده سازی ساختمان های داده نمی پردازیم بلکه به توضیح انواع داده موجود در زبان پایتون می پردازیم؛ به دلیل سطح بالای این زبان انواع داده موجود در آن دارای ساختار پیچیده ای هستند که باعث شد ما از این انواع به عنوان ساختمانهای داده یاد کنیم.
    در زبان های سطح پایین تر که اکثر آنها از پایه های پایتون به حساب می آیند انواع داده پیش فرض انواعی ابتدایی هستند که در زبان اسمبلی نیز قابل تعریف هستند. مثلاً در زبان C از انواع int , char,float, double, long ,short استفاده می شود که همه آنها دارای خاصیتی مشترک هستند و این خاصیت این است که بر روی پردازنده به طور مستقیم دارای دستور العمل هایی هستند که می توان با آنها کار کرد. همچنین برای ایجاد یک زنجیره(آرایه) از این انواع از علامت "[]" استفاده می شد، ولی از این انواع داده غیر از عملیات ریاضی کاری بر نمی آید ، مگر اینکه از آنها با قرار دادهای خاصی ساختمان داده هایی بسازیم.

    رئوس مطلب:

    1)آرایه ها در ساختمان داده

    2)پشته در ساختمان داده

    3)صف در ساختمان داده

    4)لیست هاي پيوندي (يك طرفه خطي و ...) در ساختمان داده

    5)درخت در ساختمان داده

    6)گراف در ساختمان داده
    با M.S.P Soft به دنياي برنامه نويسي وارد شويد[برای نمایش لینک باید عضو شوید. ]
  2. #2
    adminmsp
    مدیر کل و موسس سایت
    تاریخ عضویت
    1970 Jan
    محل سکونت
    M.S.P Soft
    نوشته ها
    1,590
    759
    465

    ارایه ها در ساختمان داه ها

    آرایه:
    مجموعه ای از داده ها هستند که نوعشان یکسان است به عنوان مثال:اگر 10 عدد صحیح را بخواهیم در حافظه اصلی قرار دهیم بجای انکه 10 متغیر (int) تعریف بکنیم یک آرایه (int) تعریف می کنیم که 10 خانه داشته باشد .

    [Int b [3][4 = آرایه 2 بعدی : مثال




    آرایه های 2 بعدی را ماتریس نیز می گویند .

    در آرایه های 2 بعد به بالا برای اینکه بتوانیم عناصر را به صورت صحیح از خانه هایی که ذخیره شده اند بازیابی نماییم بایستی مشخص گردد که اگر ذخیرهء عناصر به شکل سطری است بازیابی آنها نیز به شکل سطری باشد و اگر ستونی است بازیابی انها به صورت ستونی باشد.



    روش سطری پیمایش و ذخیرهء آرایه ها :


    b11 , b12 , b13 , b14 , b21 , b22 , b23 , b24 , b31 , b32 , b33 , b34


    در پیمایش سطری آرایه ها اندیسهای خانه های آرایه از سمت راست تغییر می کنند بطوریکه اندیس سمت چپ به صورت ثابت باقی می ماند و یک واحد یک واحد به اندیس سمت راست اضافه می شود تا زمانیکه به ماکسیمم مقدار خود برسد که در این لحظه یک واحد به اندیس سمت چپ اضافه می شود و دوباره اندیس سمت راست شروع به افزایش می یابد واین کار تا زمانی ادامه پیدا می کند که هر 2 اندیس به ماکسیمم مقدار خود برسد.
    مثال : ماتریس 3 بعدی زیر را به صورت سطری پیمایش کنید:
    [Int a [3][4][3

    a111 , a211 , a311 , a121 , a221 , a321 , a131 , a231 , a331 , a141 , a241 , a341 , a112 , a212 , a312 , a122 , a222 , a322 , a132 , a232 , a332 , a142 , a242 , a342 , a113 , a213 , a313 , a123 , a223 , a323 , a133 , a233 , a333 , a143 , a243 , a343



    روش ستونی پیمایش ذخیره ها :

    در روش ستونی اندیسهای آرایه از سمت چپ شروع به افزایش می کنند یعنی اندیسهای سمت چپ یک واحد یک واحد اضافه می شوند تا زمانی که به ماکسیمم مقدار خود برسند که در این لحظه یک واحد اندیس سمت راست اضافه می شود و دوباره اندیس سمت چپ از 1 شروع به افزایش می کند و این کار تا زمانی انجام می گیرد که تمامی اندیسها به ماکسیمم مقدار خود برسند .
    b11 , b21, b31 , b12 , b22 , b32 , b13 , b23 , b33 , b14 , b24 , b34



    a111 , a211 , a311 , a121 , a221 , a321 , a131 , a231 , a331 , a141 , a241 , a341 , a112 , a212 , a312 , a122 , a222 , a322 , a132 , a232 , a332 , a142 , a242 , a342 , a113 , a213 , a313 , a123 , a223 , a323 , a133 , a233 , a333 , a143 , a243 , a343
    با M.S.P Soft به دنياي برنامه نويسي وارد شويد[برای نمایش لینک باید عضو شوید. ]
  3. #3
    adminmsp
    مدیر کل و موسس سایت
    تاریخ عضویت
    1970 Jan
    محل سکونت
    M.S.P Soft
    نوشته ها
    1,590
    759
    465

    ماتریس (خلوت - پراکنده) در ساختمان داده ها

    اسپارس (خلوت - پراکنده) :
    ماتریسی است که اکثریت عناصر ان مقدار ثابت و غیر قابل محاسبه ( معمولا صفر) می باشد و تنها تعداد کمی از خانه های ان داده ها به درد بخور می باشند بنابراین فضای بسیار زیادی از حافظه اصلی را برای ذخیره کردن این تعداد کم داده ها تلف می کنیم .


    مثال :


    0 0 0 2 0
    0 0 3 0 1
    0 0 0 0 0
    0 18 0 0 0


    به عنوان مثال در ماتریس فوق برای ذخیره کردن چهار عنصر غیر صفر یک ماتریس ( 5 * 4 ) و 20 خانه از حافظه را تلف کرده ایم روشی که برای ذخیرهء بهینهء این نوع ماتریسها استفاده می شود بدین صورت است که یک ماتریس در نظر می گیریم که همیشه 3 ستون خواهد داشت و به تعداد عناصر غیر صفر سطر خواهد داشت که در هر سطر در ستون اول شمارهء سطر مربوط به عنصر غیر صفر ودر ستون دوم شمارء مربوط به ستون عنصر غیر صفر ودر ستون سوم مقدار عنصر غیر صفر را ذخیره خواهیم کرد
    که کاهش قابل توجهی در میزان حافظه مصرفی خواهیم داشت.
    i j value
    2 2 1
    1 1 2
    3 3 2
    18 4 4
    با M.S.P Soft به دنياي برنامه نويسي وارد شويد[برای نمایش لینک باید عضو شوید. ]
  4. #4
    adminmsp
    مدیر کل و موسس سایت
    تاریخ عضویت
    1970 Jan
    محل سکونت
    M.S.P Soft
    نوشته ها
    1,590
    759
    465

    الگوريتمهاي مربوط به پيمايش هاي سطري و ستوني

    الگوريتمهاي مربوط به پيمايش هاي سطري و ستوني


    [A [n][m


    پیمایش سطری:


    for  i: =1  to  n  do 
    for j: =1 to m do
    write (a [i,j] ) ;



    پیمایش ستونی :


    for  j: =1  to  m  do 
    for i: =1 to n do
    write (a[i,j] ) ;




    مثال : با استفاده ازfor های تو در تو یک ماتریس 3 بعدی

    ( 2* 3 * 4 ) به 2 روش سطری و ستونی پیمایش کنید:



    پیمایش سطری:


    for  i: =1  to  4  do

    for j: =1 to 3 do

    for k: =1 to 2 do

    write ( a [i,j,k] ) ;



    پیمایش ستونی :


    for  k: =1  to  2  do

    for j: =1 to 3 do

    for i: =1 to 4 do

    write (a[i,j,k]) ;


    مثال : با استفاده از for های تو در تو الگوريتمي بنویسید که 2 ماتریس (2 * 3 * 4) رابا یکدیگر جمع کرده ودر ماتریس سوم قرار دهد:

    پیمایش سطری:


    for  i: =1  to  4  do

    for j: =1 to 3 do

    for k: =1 to 2 do

    c [i,j,k] = b [ i,j,k] + a [i,j,k]

    write (c [i,j,k]) ;
    با M.S.P Soft به دنياي برنامه نويسي وارد شويد[برای نمایش لینک باید عضو شوید. ]
  5. #5
    adminmsp
    مدیر کل و موسس سایت
    تاریخ عضویت
    1970 Jan
    محل سکونت
    M.S.P Soft
    نوشته ها
    1,590
    759
    465

    پشته در ساختمان داده ها

    خوب بریم سراغ پشته اول اینکه پشته چیست ؟
    پشته به لیست مرتبی گفته می شود که عملیات درج و حذف از اون از یک طرف صورت بگیره. عملکرد اون به صورت LIFO هست. (Last In First Out(. یعنی آخرین عنصر وردی، اولین عنصر خروجی هستش. مثل قرار دادن یک سری بشقاب روی هم دیگه که آخرین بشقاب قرار داده شده، اولین بشقابی هست که می شه اونو برداشت.
    اما مهمترین کاربرد پشته ذخیره آدرس های بازگشت تو برنامه نویسی و ساخت متغیرهای محلی در صدا زدن توابع است. یکی دیگه از کاربرد های مهم پشته اجرای عملیات undo و redo هست که همه باهاش کار کردیم.
    با M.S.P Soft به دنياي برنامه نويسي وارد شويد[برای نمایش لینک باید عضو شوید. ]
  6. #6
    adminmsp
    مدیر کل و موسس سایت
    تاریخ عضویت
    1970 Jan
    محل سکونت
    M.S.P Soft
    نوشته ها
    1,590
    759
    465

    نمایش پشته در ساختمان داده ها

    ساده ترین روش برای نمایش پشته استفاده از یک آرایه 1 بعدی به طول n می باشد. در کنار آرایه متغیری به نام top وجود دارد که به عنصر بالایی اشاره دارد. top در ابتدای کار صفر است و از 0 تا n تغییر می کند.
    شرط خالی بودن پشته عبارت است از : if top=0
    شرط پر بودن پشته عبارت است از : if top= n
    زیر برنامه های حذف از پشته (pop) و اضافه کردن به پشته یا نوشتن در آن (push) در زبان C به صورت زیر است:


    void push (item k)
    {
    if (top ==n-1)
    stackfull ();
    else
    ;stack[++top]=k
    }




    items pop()
    }
    if (top==-1)
    stackempty();
    else return stack [top--];
    {
    با M.S.P Soft به دنياي برنامه نويسي وارد شويد[برای نمایش لینک باید عضو شوید. ]
  7. #7
    adminmsp
    مدیر کل و موسس سایت
    تاریخ عضویت
    1970 Jan
    محل سکونت
    M.S.P Soft
    نوشته ها
    1,590
    759
    465

    پشته چندگانه در ساختمان داده ها

    اگر فقط نیاز به دو پشته در برنامه داشته باشیم راه حل ساده است. برای این منظور از یک آرایه n خانه ای استفاده می کنیم. s[1] ابتدای پشته اول و s[n] ابتدای پشته دوم را نشان می دهد و پشته ها به سمت همدیگر می توانند رشد کنند. بدین ترتیب از حافظه موجد به صورت بهینه استفاده می شود.
    ولی اگر بخواهیم بیش از دو پشته داشته باشیم، روش فوق قابل استفاده نیست. در این حال برای نمایش n پشته حافظه s[1..n] را به n قسمت تقسیم می کنیم. تقسیم بندی آرایه ها متناسب با نیازها باشد. در این حالت مقادیر به صورت زیر خواهد بود:
    1

    b[i]=t[i]=[m/n](i-1)+1


    که در آن n تعداد پشته ها و m حد بالای آرایه است.
    مثال: اگر در آرایه s[1..495] بخواهیم 4 پشته به وجود آوریمآدرس ابتدای هرپشته را بدست آورید. اندازه پشته ها یکسان است.

    پاسخ:
    m=495 , m=4
    b[1]=1
    b[2] [495/4](2-1)+1=124
    b[3]= [495/4](3-1)+1=247
    b[4]=[495/4](4-1)+1=370


    در حالت پشته های چندگانه (n>2) ممکن است یکی از پشته ها سریع تر از بقیه پر شود و به همین دلیل استفاده از حافظه بهینه نخواهد بود. برای رفع این مشکل باید عناصر شیفت داده شوند تا در انتهای پشته پشته پر شده فضای خالی تولید شود و این عمل در بدترین حالت o(m) خواهد بود. در پشته های چند گانه (n=2) استفاده از حافظه بهینه است و زمان پردازش نیز از مرتبه o(1) است.
    با M.S.P Soft به دنياي برنامه نويسي وارد شويد[برای نمایش لینک باید عضو شوید. ]
  8. #8
    adminmsp
    مدیر کل و موسس سایت
    تاریخ عضویت
    1970 Jan
    محل سکونت
    M.S.P Soft
    نوشته ها
    1,590
    759
    465

    اضافه کردن و حذف کردن از پشته

    زیر برنامه های اضافه کردن و حذف کردن از پشته i ام در پشته های چندگانه:


    procedure pop (i:integer,var k:items);
    begin
    if t[i]=b[i] then stackempty(i)
    else begin
    k:=s[t[i]];
    t[i]:=t[i]-1;
    end;
    end;





    procedure push (i:integer,var k:items);
    begin
    if t[i]=b[i+1] then stackfull(i)
    else begin
    k:=t[i]+1;
    s[t[i]]:=k;
    end;
    end;
    با M.S.P Soft به دنياي برنامه نويسي وارد شويد[برای نمایش لینک باید عضو شوید. ]
  9. #9
    adminmsp
    مدیر کل و موسس سایت
    تاریخ عضویت
    1970 Jan
    محل سکونت
    M.S.P Soft
    نوشته ها
    1,590
    759
    465

    صف (queue) در ساختمان داده ها

    خوب بریم مرحله بعد صف (queue)
    صف لیست مرتبی است که عمل اضافه کردن (نوشتن) از یک طرف آن به نام انتهای صف (rear) و عمل خواندن (حذف کردن) از طرف دیگر صف به نام ابتدای صف (Front) می شود. ساختار صف به صورت FIFO است. (First In First Out). یکی از کاربردهای مهم صف در زمانبدی برنامه ها در سیستم عامل هستش. ساده ترین راه نمایش صف استفاده از یک آرایه یک بعدی به طول n می باشد.
    برای کار با صف معمولی به دو اشاره گر نیاز داریم: یکی Front که همیشه به یک عنصر قبل از عنصر ابتدایی اشاره می کنه و rear که همیشه به آخرین عنصر اشاره داره.
    دامنه تغییرات front و rear از 0 تا n هست و مقادیر اولیه اونها 0 قرار می گیره.
    شرط خال بودن صف عبارت است از :
    if front = rear
    و شرط پر بودن صف عبارت است از :
    if rear = n
    با M.S.P Soft به دنياي برنامه نويسي وارد شويد[برای نمایش لینک باید عضو شوید. ]
  10. #10
    adminmsp
    مدیر کل و موسس سایت
    تاریخ عضویت
    1970 Jan
    محل سکونت
    M.S.P Soft
    نوشته ها
    1,590
    759
    465
    مشکل اصلی صف ها در این است که صف در یک لحظه می تونه پر و خالی (همزمان) باشه. مثلاً اگر n=5 داده را در یک صف 5 خانه ای ریخته و سپس آنها را بخوانیم در حالتی که r=f=5 داریم:
    صف خالی است چون: r=f
    صف پر است چون: r=n=5
    با M.S.P Soft به دنياي برنامه نويسي وارد شويد[برای نمایش لینک باید عضو شوید. ]
صفحه 1 از 2 12 آخرین
نمایش نتایج: از 1 به 10 از 15

اطلاعات موضوع

کاربرانی که در حال مشاهده این موضوع هستند

در حال حاضر 1 کاربر در حال مشاهده این موضوع است. (0 کاربران و 1 مهمان ها)

موضوعات مشابه

  1. آموزش اموزش مقدماتی Win 32 به زبان فارسی
    توسط MspSoft در انجمن برنامه نویسی با MFC و ++Visual C
    پاسخ: 4
    آخرين نوشته: 2012-10-11, 05:03 PM
  2. پاسخ: 0
    آخرين نوشته: 2012-10-07, 03:33 PM
  3. مجموعه فایل های اموزشی شبکه به زبان فارسی
    توسط MspSoft در انجمن رشته مهندسي كامپيوتر
    پاسخ: 0
    آخرين نوشته: 2012-09-16, 03:41 PM
  4. پاسخ: 0
    آخرين نوشته: 2012-09-05, 12:36 PM
  5. آموزش گذاشتن قفل حجمی روی سی دی
    توسط sina در انجمن امنیت در نرم افزار و برنامه نویسی
    پاسخ: 1
    آخرين نوشته: 2012-01-25, 10:02 AM

مجوز های ارسال و ویرایش

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

Content Relevant URLs by vBSEO 3.6.0 RC 2