برنامه نویسی

مطالعه موردی: یافتن اندازه دایرکتوری

Summarize this content to 400 words in Persian Lang
روش های بازگشتی برای حل مسائل با ساختارهای بازگشتی کارآمد هستند. مثال های قبلی را می توان به راحتی بدون استفاده از بازگشت حل کرد. این بخش مشکلی را ارائه می دهد که حل آن بدون استفاده از بازگشت دشوار است. مشکل این است که اندازه یک فهرست را پیدا کنید. اندازه یک دایرکتوری مجموع اندازه تمام فایل های موجود در دایرکتوری است. دایرکتوری d ممکن است حاوی زیر شاخه ها باشد. فرض کنید یک دایرکتوری شامل فایل های f1, f2, … , fm و زیر شاخه های d1, d2, … , dn است که در شکل زیر نشان داده شده است.

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

size(d) = size(f1) + size(f2) + … + size(fm) + size(d1) + size(d2) + … + size(dn)

این فایل class را می توان برای نمایش یک فایل یا دایرکتوری و به دست آوردن ویژگی های فایل ها و دایرکتوری ها استفاده کرد. دو روش در فایل کلاس برای این مشکل مفید است:

این طول () متد اندازه یک فایل را برمی گرداند.
این listFiles() متد یک آرایه از فایل اشیاء تحت یک دایرکتوری

کد زیر برنامه ای را ارائه می دهد که از کاربر می خواهد یک دایرکتوری یا یک فایل را وارد کرده و اندازه آن را نمایش دهد.

اگر فایل شی یک دایرکتوری را نشان می دهد (خط 20)، هر زیر آیتم (فایل یا دایرکتوری فرعی) در دایرکتوری به صورت بازگشتی برای بدست آوردن اندازه آن فراخوانی می شود (خط 23). اگر فایل شی یک فایل را نشان می دهد (خط 26)، اندازه فایل به دست می آید و به اندازه کل اضافه می شود (خط 27).

اگر یک دایرکتوری نادرست یا ناموجود وارد شود چه اتفاقی می افتد؟ برنامه تشخیص می دهد که دایرکتوری نیست و فراخوانی می کند file.length() (خط 27) که برمی گردد 0. بنابراین، در این مورد، getSize روش باز خواهد گشت 0.

برای جلوگیری از اشتباه، آزمایش همه موارد یک تمرین خوب است. به عنوان مثال، شما باید برنامه را برای ورودی فایل، یک دایرکتوری خالی، یک دایرکتوری ناموجود و یک فایل غیرموجود آزمایش کنید.

روش های بازگشتی برای حل مسائل با ساختارهای بازگشتی کارآمد هستند. مثال های قبلی را می توان به راحتی بدون استفاده از بازگشت حل کرد. این بخش مشکلی را ارائه می دهد که حل آن بدون استفاده از بازگشت دشوار است. مشکل این است که اندازه یک فهرست را پیدا کنید. اندازه یک دایرکتوری مجموع اندازه تمام فایل های موجود در دایرکتوری است. دایرکتوری d ممکن است حاوی زیر شاخه ها باشد. فرض کنید یک دایرکتوری شامل فایل های f1, f2, … , fm و زیر شاخه های d1, d2, … , dn است که در شکل زیر نشان داده شده است.

توضیحات تصویر

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

size(d) = size(f1) + size(f2) + ... + size(fm) + size(d1) + size(d2) + ... + size(dn)

این فایل class را می توان برای نمایش یک فایل یا دایرکتوری و به دست آوردن ویژگی های فایل ها و دایرکتوری ها استفاده کرد. دو روش در فایل کلاس برای این مشکل مفید است:

  • این طول () متد اندازه یک فایل را برمی گرداند.
  • این listFiles() متد یک آرایه از فایل اشیاء تحت یک دایرکتوری

کد زیر برنامه ای را ارائه می دهد که از کاربر می خواهد یک دایرکتوری یا یک فایل را وارد کرده و اندازه آن را نمایش دهد.

توضیحات تصویر

اگر فایل شی یک دایرکتوری را نشان می دهد (خط 20)، هر زیر آیتم (فایل یا دایرکتوری فرعی) در دایرکتوری به صورت بازگشتی برای بدست آوردن اندازه آن فراخوانی می شود (خط 23). اگر فایل شی یک فایل را نشان می دهد (خط 26)، اندازه فایل به دست می آید و به اندازه کل اضافه می شود (خط 27).

اگر یک دایرکتوری نادرست یا ناموجود وارد شود چه اتفاقی می افتد؟ برنامه تشخیص می دهد که دایرکتوری نیست و فراخوانی می کند file.length() (خط 27) که برمی گردد 0. بنابراین، در این مورد، getSize روش باز خواهد گشت 0.

برای جلوگیری از اشتباه، آزمایش همه موارد یک تمرین خوب است. به عنوان مثال، شما باید برنامه را برای ورودی فایل، یک دایرکتوری خالی، یک دایرکتوری ناموجود و یک فایل غیرموجود آزمایش کنید.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا