وبلاگ سید جلال سیدیزدی

تمرین نوزدهم

جمعه, ۱۹ ارديبهشت ۱۳۹۳، ۱۲:۳۳ ب.ظ

سلام دوستان

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

در متد main یک حلقه با تعداد تکرار n بنویسید. در این حلقه به شی ای از کلاس String یک رشته یک حرفی الحاق کنید.

با استفاده از متد currentTimeMillis از کلاس System زمان قبل از اجرای حلقه و بعد از آن را گرفته و با کم کردن آنها از هم مدت اجرای حلقه را به دست آورده یادداشت کنید.

این کار را به ازای مقادیر مختلف n (مثلاً، 100، 500، 1000، ...، 2000000) انجام دهید. سپس نمودار زمان اجرای حلقه را بر حسب n  در Excel (یا برنامه دیگر) رسم کنید.


همین کار را با استفاده از StringBuilder انجام دهید. دو منحنی را بر روی یک نمودار رسم کنید.


کد برنامه و نمودار ایجاد شده را ارسال کنید.


مهلت ارسال: یکشنبه 21 اردیبهشت ساعت 22

با تاخیر: -


موفق باشید.

  • ۹۳/۰۲/۱۹

نظرات  (۵)

سلام  استاد. من یک بار برنامه رو با یک حلقه در یک کلاس و در متد main نوشتم که از بیلدر استفاده می کرد و مثلا برای n=100زمان 0 رو نشون می داد . دفعه دوم برنامه رو طوری دیگه نوشتم  دو تا کلاس تعریف کردم در یکی با استفاده از بیلدر و در اون یکی به روش معمولی الحاق کردم و در یک کلاس دیگر در main از این دو کلاس شی ساختم و متد های مربوطه را فراخوانی کردم (البته برای برسی هر حالت اون یکی رو کامنت کردم مثلا وقتی بیلدر رو م یخوام بررسی کنم اون یکی حالتش کامنت می شه)ولی برای n=0عدد بسیار بسیار بزرگی نشون می داد که قابل مقایسه با حالت اول نبود چرا؟
پاسخ:
سلام
عجیب به نظر می رسد. باید برنامه رو ببینم.
موفق باشید.

سلام . موقع استفاده از builder باید این جوری بنویسیم داخلش "-"یا '-' .

charsequenc چیست؟
پاسخ:
سلام
هر دو می شود ولی برای کاراکتر از '-' استفاده کنید.

یک اینترفیس است که تعدادی از کلاس ها از جمله String آن را پیاده سازی کرده اند. (ان شاء الله جسله بعد مفهوم این جمله رو می فهمید!)
A CharSequence is a readable sequence of char values
موفق باشید.



سلام
n (1 تا 2 میلیون هم باید بره؟
2) چرا زمان اجرای برنامه هر بار که اجرا میکنیم، یک عدد متفاوت است؟ (مثلا با n=2500 زمان اجرا یکبار 135 میلی ثانیه و بار دیگر 50 میلی ثانیه است)
 و هم اینکه گاهی اوقات مدت زمان اجرای برنامه با یک n کمتر، بیشتر از مدت زمان اجرای برنامه با n بیشتر است !
پاسخ:
سلام
1) بستگی به سرعت کامپیوتر مورد استفاده دارد. اگر خیلی طول می کشه کمتر هم اشکال نداره.
2) برای مقادیر n کم ممکنه. مدت زمان اجرای برنامه به تعداد برنامه های در حال اجرا روی کامپیوتر بستگی دارد. برای انجام این تمرین بقیه ی برنامه ها رو ببندید.
موفق باشید.
سلام، تو اکسل چه جوری باید یک نمودار خطی کشید؟
پاسخ:
سلام
اطلاعاتی که به دست آودید رو در سه ستون درج کنید. ستون سمت چپ مقادیر n و ستون دوم و سوم زمان برای روش اول و دوم.
سپس این داده را انتخاب کرده و از قسمت نمودارها نمودار Scatter خط دار را انتخاب کنید.

موفق باشید.
سلام . من string builder رو اصلا متوجه نشدم که چی هستش . لطفا یکمی توضیح بدید.
پاسخ:
سلام
در متد toString کلاس post در اسلایدها، یک متغیر از نوع String تعربف شده و بعد رشته های مختلف به آن الحاق شده است. به جای این کار می توان از کلاس StringBuilder استفاده کرد که سریعتر است.
بدین منظور یک شی از این کلاس ایجاد کرده و سپس هر تعداد رشته رو که بخواهیم با متد append به آن الحاق می کنیم. در نهایت با متد toString اش آن را به String تبدیل می کنیم.
حتماً با یک مثال ساده این روش رو امتحان کنید.
موفق باشید.
ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی