تبليغاتX
فقط به خاطر تو

Viewing topics

--------------------------------------------------------------------------------

Adobe provides complete documentation in an accessible HTML-based help system. The help system includes information on all the application's tools, commands, and features for both Windows and Mac OS systems.

 

Using the help window

 

The help window is divided into two frames: the Navigation frame on the left and the Topic frame on the right. In the Navigation frame, click one of the following underlined links:

 

Using Help to return to this introduction.

Contents to see the help's table of contents.

Index to see the help's index.

Site Map to see all topic titles in Help and the index in one list.

Search to look for topics containing specific text.

To display a help topic in the Topic frame, click a link in the Navigation frame. For example, click a link in the table of contents to display the corresponding topic.

 

To resize the frames, drag the vertical border between them.

 

Navigating in help topics

 

Click the following underlined links in the Topic frame to navigate in Help:

 

Previous to display the previous topic in Help.

Next to display the next topic.

Top to jump from the bottom to the top of a topic.

Cross-references to other topics to display the referenced topic.

Parent topic links at the top and bottom of the topic to move back in the hierarchy of help topics.

Related subtopics in the list at the end of the topic.

 

 

Using the Contents

--------------------------------------------------------------------------------

The Contents contains links to all chapter titles in Help.

:To find a topic using the Contents

     Click Contents at the top of the Navigation frame. 1-

Chapter title links appear in the Navigation frame.

2-Click a title in the Navigation frame.

The corresponding topic appears in the Topic frame with links to all related subtopics.

To display a subtopic, click its link. 3-

Tips

.To scan second-level topics in Help, click the chapter titles in the Contents one after the other. Each time you click a title in the Contents, its subtopics appear in the Topic frame.

.To see a list of all help topics, use the Site Map.

 

 

Using Search

--------------------------------------------------------------------------------

Use Search to find all topics that contain specific words.

 

To use Search, JavaScript must be active in your web browser. If the Search link does not appear in the Navigation frame, check your browser's settings.

 

To find a topic using Search:

1- Click Search at the top of the Navigation frame    

The Search text box and button appear in the Navigation frame

 

2- Type words you want to find and click Search.

Links to topics that contain the search words appear in the Navigation frame. The topics that are most likely to contain the information you want are at the top of the list.

 

3- To display a topic, click its title in the search results.

Search details

 

- If you type more than one word separated by spaces, the results include topics that contain all words you typed. For example, if you type "Adobe Photoshop," the results include topics containing both "Adobe" and "Photoshop" anywhere in their title or body content.

- The Search feature doesn't do word-stemming. For example, if you search for "image" the search won't match "images" or "imaging." Also, if you search for "images" the search won't match "image."

- Matches are not case-sensitive; so "Photoshop" is the same as "photoshop."

- Topics that include matches in their titles are ranked higher in the search results. The number of matches in a topic's body content also affects its rank.

- The Search feature ignores all punctuation characters except periods within words and underscores.

Stop words

 

The Search feature filters (and ignores) very common words you type in the Search text box. Often called stop words, these common words usually don't improve the search results. Examples of stop words include "the," "of," "as," and "when." In addition, the Search feature ignores one- and two-character words (unless the 2-character word includes a digit).

 

For example, if you type "working with color management" in the text box, the search excludes the word "with" and displays pages that contain "working," "color," and "management."

 

 

Web browser requirements

--------------------------------------------------------------------------------

 

The help system uses frames and JavaScript to display topics. If you can't view or navigate in topics, make sure that your web browser meets these minimum requirements.

 

To view Help properly:

 

- Use Netscape Communicator 4.75 and later or Internet Explorer 5.0 and later on Mac OS and Windows.

- Make JavaScript active.

- Set your browser to always accept cookies.

- JavaScript does not work reliably in Netscape Communicator when viewing Chinese, Japanese, or Korean pages. If you experience problems, use Internet Explorer.

- If your browser runs out of memory on the Macintosh, increase the browser's preferred memory size.

- If the text is hard to read because it is too small, increase the browser's default font size.

- To use a different font for the help text, change your browser's default font.

 

Accessibility features of Help

--------------------------------------------------------------------------------

The accessible HTML-based help system provides easy navigation online, as well as easy reading using third-party readers compatible with Windows. The following are features of Help that make it accessible to the vision- and motion-challenged community:

 

- Alternate text for images. All images in Help include alternate text.

- All links provide context. All links include information about the target of the link (usually the topic's title). In the Index, this information is encoded in the link's TITLE attribute, which some screen readers use instead of link text.

- All information conveyed with color is available without color. For example, all links are blue and underlined.

- Standard tags represent the information's hierarchy. The topics are formatted using standard HTML tags (for example, H1, H2, and H3) that indicate the information's hierarchy.

- Style sheets control the formatting. The topics contain no embedded font tags. The help system should be functional if you use your own style sheet or change the font size and styles your browser uses.

- High contrast between foreground and background colors. The black text against the white background provides high-contrast viewing.

- Site Map. All topics in Help appear in the Site Map.

- All frames include meaningful titles. Screen readers use these titles to provide context.

+ نوشته شده در  دوشنبه چهارم تیر 1386ساعت 12:23  توسط رضا,مهدی  | 

                   نمايش دادن موضوعات

آدب اسناد و مدارك را بطور كامل بر اساس html با روش help در دسترس قرار ميدهد.سيستم كمكي شامل اطلاعات بر روي همه ابزار كاربرديءفرمانها و ويژگيهايي براي هر دو هم ويندوز و هم سيستم عامل mac است.

پنجره help به دو بخش تقسيم مي شود:كادر مرور كه در سمت چپ است و كادر موضوع كه در سمت راست است.در كادر مرورءيكي از پيوندهاي زير را كليك كنيد.

*استفاده از help براي برگشتن به اين مقدمه

*محتواها براي ديدن محتويات جدول help

*فهرست راهنما براي ديدن فهرست help

*نقشه مكاني براي ديدن عنوان همه موضوعات در help وفهرست راهنما در يك ليست

*جستجو براي موضوعاتي كه در خود متن خاصي دارند.

براي نشان دادن يك موضوع كمكي در كادر موضوعءيك پيوندرا در فهرست مطالب كليك كنيد تا موضوع مورد نظر به نمايش در آيد.

پيوندهاي خط كشيده شده زير را در كادر موضوع كليك كنيد نا در help مرور شوند.

*قبل از نمايش دادن موضوع قبلي در help

*بعد از نمايش داد ن موضوع بعدي

*پرش از پايين به بالاي موضوع

*بازگست به موضوعات ديگر براي نمابش دادن موضوع مراجعه شده

*پيوندهاي موضوعي ما در بالا وپايين موضوع براي برگشت به عقب به سلسله مراتب موضوعات help

*موضوعات فرعي مربوطه در فهرست در پايان موضوع

                  استفاده از محتواها

محتواها درخود پيوندهايي براي همه عنوانهاي بخشها در help دارد براي پيدا كردن يك موضوع از محتواها استفاده كنيد.

1-كليك كنيد محتواها را كه در بالاي كادر مرور وجود دارد

پيوندهاي عنوان فصل در كادر مرور ظاهر مي شوند.

2-يك عنوان را در كادر موضوعه كليك كنيد

موضوع مربوطه را در كادرموضوع با پيوندهاي همه موضوعات فرعي مربوطه ظاهر ميشود.

3- براي نشان دادن يك موضوع فرعيءپيوند آنرا كليك كنيد.

 راهنماي ها

براي اسكن كردن موضوعات دست دوم در help عنوانهاي فصل را در محتواها يكي بعد از ديگري كليك كنيدءهر بار كه شما يك عنوان را در محتواها كليك مي كنيدءموضوعات فرعي آن در كادرموضوع ظاهر مي شوندءبراي ديدن ليستي از همه موضوعات help ءاز نقشه مكاني استفاده كنيد.

                  استفاده از جستجو

از جستجو استفاده كنيد تا همه موضوعاتي را كه در خود كلمات خاصي دارند پيدا كنيد براي استفاده از جستجوءجاوااسكريپت بايد در مرورگر شبكه شما فعال باشدءاگر پيوند جستجو در كادر مرور ظاهر نشود تنظيمات مرورگر خود را بررسي كنيد.

براي پيدا كردن يك موضوع با استفاده از جستجو

1-جستجو را كه در بالاي كادر مرور است را كليك كنيد.

جعبه متني جستجو و دكمه يا كليد در كادر مرور ظاهر مي گردند

2-كلماتي را پيدا كنيد كه در ميخواهيد پيدا كنيد وجستجو را كليك كنيد.

پيوندهاي موضوعاتي كه درخود كلمات جستجو دارند در كادر مرور ظاهر ميشوند موضئعاتي كه به احتمال زياد در خود اطلاعاتي دارند كه شما ميخواهيد در بالاي ليست هستند.

3-براي نمايش دادن يك موضوع ء عنوان آنرا در نتايج جستجو كليك كنيد و جزئيات را جستجوكنيد.

*اگر شما بيش از يك كلمه را جدا از هم با فواصلي تايپ كنيد نتيجه آن موضوعاتي خواهد بود كه در خود همه كلماتي كه تايپ كرده ايد داشته باشندءبراي مثالءاگر شما آدب فتوشاپ را تايپ كنيدءنتايج شامل موضوعاتي خواهد بود كه در خود  هم آدب و هم فتوشاپ دارند در همه عنوانها يا محتواي متنها.

ويژگي جستجو اين است كه به ريشه كلمه كار نداردءبراي نمونه اگر شما"تصور" را جستجو كنيدءاين جستجو برابر با تصور نخواهد بودءعلاوه بر اين اگر شما در جستجوي "تصاويري"باشيدءجستجو با تصوير همانند نخواهد بود يا جور در نخواهد آمدءاين هماننديها يك مورد حساس نيستند بنابراين فتوشاپ همان فتوشا ايت.موضوعاتي كه در خود شباهتهاي عنواني دارند در رتبه بندي بالاتري در نتايج قرار ميگيرند.تعداد شياهتهاي محتواي متن موضوع هم بر رتبه بندي آن اثر ميگذارد.

خصيصه جستجو اينست كه همه كاراكترهاي علامت گذاري را به جز نقطه ها در كلمات و زير خطها و كلمات نقطه دار ناديده ميگيرد.

ويژگي جستجو اينست كه فيلتر ميكند(و ناديده ميگيرد)كلمات خيلي معمولي را كه شما در جعبه متن جستجو تايپ ميكنيدءغالبا اينها كلمات وقفه اي ناميده ميشوندءاين كلمات وقفه اي معمولا شامل theءofءasءwhenءin addition ميباشدءويژگي جستجو اينست كه حروف يك يا دو كاراكتر دار را ناديده ميگيرد(مگر اينكه اين كلمه دو حرفي شامل يك رقم باشد)براي مثال اگر شما اين نصف جمله "working with color management"را در جعبه متن تايپ كنيدءجستجو كلمه with را ناديده ميگيرد وصفحاتي را نشان ميدهد كه در خود working و color  و management دارند.

                       نيازهاي مرورگر وب

در سيستم help از كادرها و جاوا اسكريپت براي نشان دادن موضوعات استفاده ميشود.اگر شما نتوانيد موضوعات را ببينيد يا مرور كنيدءاطمينان حاصل كنيد كه مرورگر شبكه شما اين نيازهاي حداقلي را دارد.

براي ديدن help بطور مناسب

*از ارتباط برقرار كننده نت اسكيپ 4.75 استفاده كنيد و بعدا از اينترنت اكسپلورر 5.0 و بعدها از سيستم عامل mac و ويندوزها.

*جاوا اسكريپت را فعال سازيد.

*مرورگر خود را تنظيم كنيد كه هميشه عكسهاي دلربا را قبول كند.

*جاوااسكريپت بطور قابل مطمئني در ارتباط برقراركننده نت اسكيپ كار نمي كندءهنگامي كه زبان چيني ءژاپني يا صفحات كرهاي ميبينيد.اگر مشكلي را تجربه ميكنيدءاز اينترنت اكسپلورر استفاده كنيد.

*اگر مرورگر شما حافظه اش در مكينتاش تمام شود اندازه حافظه مرورگر را ترجيحا افزايش دهيد.

*اگر خواندن متن سخت است چون خيلي كوچك استءاندازه فونت پيش فرض مرورگر را افزاريش دهيد.

*براي استفاده كردن از فونت متفاوت براي متن helpءفونت پيش فرض مرورگرتان را عوض كنيد.                

+ نوشته شده در  دوشنبه چهارم تیر 1386ساعت 12:4  توسط رضا,مهدی  | 

 برنامه اي بنويسيد كه مجموع !N را محاسبه كند؟

1! + 2! + 3! + 4! + … + n!

حل:

sum را به i این برنامه شبيه به برنامه قبلی است با این تفاوت که در داخل حلقه، باید به جای اینکه

اضافه کنيم. م یدانيم که فاکتوریل یک عدد sum را محاسبه کنيم و آنرا به i اضافه کنيم مقدار فاکتوریل

برابر است با حاصلضرب کليه اعداد کو چکتر و مساوی آن عدد. مثلا برای محاسبه فاکتوریل عدد ۵، باید

حاصلضرب زیر را محاسبه کنيم:

5! = 1 * 2 * 3 * 4 * 5

لازم داریم . مقدار اوليه متغير این حلقه را برابر ١ for بنابراین برای محاسبه فاکتوریل یک عدد، یک حلقه

است، حلقه n می گذاریم. شرط حلقه این است که تا وقتيکه مقدار متغير حلقه کوچکتر یا مساوی

تکرار شود و بالاخره گام حلقه برابر ١ است، یعنی هر بار یکی به مقدر قبلی متغير حلقه اضافه شود .

را محاسبه کرده و در آن i می گيریم که مقدار فاکتوریل عدد f پس در برنامه یک متغير دیگر به نام مثلا

از دستورات زیر استفاده م یکنيم: ،i ذخيره کنيم. برای محاسبه فاکتوریل

f=1;

for(int j=1;j<=i;j++)

f = f * j;

را محاسبه می کند. حال فقط کافيست در برنامه سوال قبلی، به جای i دستورات فوق، مقدار فاکتوریل

اضافه کنيم. sum اضافه کنيم، این مقدار فاکتوریل را به sum را به i آنکه مقدار

import javax.swing.JOptionPane;

public class Example4{

public static void main(String args[]){

int n,sum=0,f;

String inputNumber;

inputNumber = JOptionPane.showInputDialog("Number:");

n=Integer.parseInt(inputNumber);

for(int i=1;i<=n; i++)

{

f=1;

for(int j=1;j<=i;j++)

f = f * j;

sum = sum + f;

}

System.out.println("Sum = " + sum);

System.exit(0);

}

}

+ نوشته شده در  جمعه دهم آذر 1385ساعت 12:57  توسط رضا,مهدی 

برنامه اي بنويسيد كه مجموع N جمله از سري زير را محاسبه نمايد؟

1 + 2 + 3 + 4 + 5 + … + n

حل:

م یگذاریم. حال تمام اعداد از ١ تا این عدد را n برنامه باید عددی را از کاربر دریافت کند . نام این عدد را

مورد نياز است که مقدار اوليه متغير آن ١ است . شرط for باید با همدیگر جمع کند. بنابراین یک حلقه

است تکرار شود و بالاخره گام n حلقه این است که تا وقتيکه مقدار متغير حلقه کوچکتر یا مساوی

حلقه نيز ١ است، یعنی هر بار که حلقه تکرار شود یکی به مق دار متغير حلقه اضافه می شود . تمام

ذخيره م یکنيم. sum اعداد را با هم جمع م یکنيم و در متغيری با نام

مجموعه مثا لهای برنام هنویسی جاوا سری اول

٣

import javax.swing.JOptionPane;

public class Example3{

public static void main(String args[]){

int n,sum=0;

String inputNumber;

inputNumber = JOptionPane.showInputDialog("Number:");

n=Integer.parseInt(inputNumber);

for(int i=1;i<=n; i++)

sum +=i;

System.out.println("Sum = " + sum);

System.exit(0);

}

}

+ نوشته شده در  جمعه دهم آذر 1385ساعت 12:54  توسط رضا,مهدی  | 

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

حل:

عدد اول، عددی است که بجز ١ و خودش بر هيچ عدد دیگری قابل قسمت نباشد . مثلا عدد ۵ عددی

اول است ، چون بجز ١ و خودش بر عدد دیگری قابل قسمت نيست. عدد ٢١ اول نيست، چون بجز ١ و

خودش، بر ٣ و ٧ نيز قاب لقسمت است.

حال چگونه ت شخيص دهيم که عددی اول است یا خير؟ . اول باید راهی پيدا کنيم برای اینکه چگونه

بفهميم دو عدد بر هم قابل قسمت هستند . مثلا اگر بخواهيم بفهميم عدد ٢١ ، اول است یا نه . باید به

گونه ای تشخيص دهيم که عدد ٢١ بر ٣ قابل قسمت است تا با استفاده از آن نتيجه بگيریم که این

عدد، عددی اول نيست.

با استفاده از باقيمانده تقسيم دو عدد بر یکدیگر می توان تشخيص داد که دو عدد بر یکدیگر قابل

قسمت هستند یا خير . اگر باقيمانده تقسيم دو عدد بر یکدیگر صفر باشد، آنگاه آن دو عدد بر یکدیگر

قابل قسمت هستند در غير اینصورت بر یکدیگر قابل قسمت ني ستند . باقيمانده تقسيم ٢١ بر ٣ برابر

صفر است، بنابراین ٢١ بر ٣ قابل قسمت است.

گفتيم عددی اول است که بر هيچ عدد دیگری بجز ١ و خودش قابل قسمت نباشد . بنابراین باید برای

همه اعداد بجز ١ و خود عدد، تست کنيم که آیا این عدد بر آنها قابل قسمت است یا نه . انجام اینک ار

برای همه اعداد امکان پذیر نيست، بنابراین باید به گونه ای این بازه اعدادی را که باید تست کنيم، را

کاهش دهيم . می دانيم که هيچ عددی نيست که بر عددی بزرگتر از خودش قابل قسمت باشد . مثلا

عدد ٢١ نمی تواند بر عدد ٢٢ قابل قسمت باشد. بنابراین برای عدد ٢١ ، تنها کافيست تا اعداد کوچکتر

از آن یعنی اعداد از ٢ تا ٢٠ را تست کنيم . اگر برنام ه ای بنویسد که از ٢ تا ٢٠ را برای عدد ٢١ ، تست

کند تا تشخيص دهد که این عدد اول است یا خير، برنامه درستی نوشت ه اید ولی عملکرد این برنامه را

می توان بهتر کرد . اگر دقت کنيد، خواهيد دید که تنها کافيست اعداد بين ٢ تا نصف ٢١ (یعنی ١٠٫۵ ) را

چک کنيم و عددی نيست که بر اعداد بزرگتر از نصف خودش قابل قسمت باشد . بنابراین در نوشتن این

برنامه از عدد ٢ شروع می کنيم و تا نصف عدد وارد شده توسط کاربر، تست م ی کنيم که اگر بر آن عدد

قابل قسمت است، در خروجی بنو یسيم که عدد اول نيست و اگر همه اعداد تست شد و بر هيچ

عددی قابل قسمت نبود، در خروجی م ینویسيم که عدد اول است.

import javax.swing.JOptionPane;

public class Example2{

public static void main(String args[]){

int n;

String inputNumber;

inputNumber = JOptionPane.showInputDialog("Number:");

n=Integer.parseInt(inputNumber);

for(int i=2;i<=n/2; i++)

{

if (n%i==0)

{

System.out.println("It is not a prime number");

System.exit(0);

}

}

System.out.println("It is a prime number");

System.exit(0);

}

}

+ نوشته شده در  جمعه دهم آذر 1385ساعت 12:50  توسط رضا,مهدی  | 

برنامه ای بنویسيد که عددی را از ورودی دریافت کند و مربع و مکعب آن عدد و اعداد کوچکتر از

آنرا به صورت زیر در خروجی بنویسد.

N: 5

Number square cube

1 1 1

2 4 8

3 9 27

4 16 64

5 25 125

حل:

n برنامه در ابتدا عددی را از کاربر دریافت می کن د: مثلا کاربر عدد ۵ را وارد می کند . نام این عدد را

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

از یکدیگر جدا شده اند . آنرا در tab نوشته شود . خط اول که رشته ای است حاوی سه کلمه که با

خروجی می نویسيم. خط بعدی عدد ١ است با مربع و سپس مکعب آن . خط بعدی، عدد ٢ است و

سپس مربع عدد ٢ و بعد از آن مکعب عدد ٢. و همينطور سطرهای بعدی هر کدام، در ابتدا یک عدد

فاصله، مربع آن عدد و سپس مکعب آن عدد در آن خط نوشته می شود . tab نوشته می شود و با یک

عددی که در هر خط مورد استفاده قرا ر می گيرد، یکی از عدد خط قبل بزرگتر است. و این تکرار خ ط ها

آنقدر ادامه پيدا می کند تا به عددی برسيم که کاربر آنرا وارد کرده است. پس چون در این برنامه یک کار

تکراری انجام می شود، باید یک حلقه داشته باشيم که در هر تکرار این حلقه، یک سطر از خروجی بالا،

عددی که کاربر وارد کرده است ). )n چاپ می شود. تعداد تکرارهای این حلقه مشخص است . از ١ تا

استفاده می کنيم(معمولا در انتخاب نوع حلقه، for بنابراین چون تعداد تکرار حلقه را می دانيم از حلقه

باید بدانيم که ،for استفاده م یکنيم). برای حلقه while و اگر ندانيم از for اگر تعداد تکرار را بدانيم از

متغير حلقه باید از چه عددی شروع شود، شرط حلقه چيست و گام حلقه چند است . برای حلقه ای که

برای این برنامه نياز داریم، مقدار اوليه متغير حلقه، ١ است . شرط حلقه این است که مقدار متغير

باشد . گام حلقه، برابر ١ است، چ ون در هر سطر یکی به مقدار عدد ی که n حلقه، کوچکتر یا مساوی

برای آن خط نياز داریم، اضافه م یشود.

import javax.swing.JOptionPane;

public class Example1{

public static void main(String args[]){

int n;

String inputNumber;

inputNumber = JOptionPane.showInputDialog("Number:");

n=Integer.parseInt(inputNumber);

System.out.println("Number\tSquare\tCube");

for(int i=1;i<=n;i++)

System.out.println(i + "\t" + i*i + "\t" + i*i*i);

System.exit(0);

}

}

+ نوشته شده در  پنجشنبه نهم آذر 1385ساعت 20:20  توسط رضا,مهدی  | 

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

این منظور، چندین روش از رو شهای مرت بسازی را بررسی م یکنيم.

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

مرت بسازی حبابی، مرتب نماید.

حل:

یکی از ابتدایی ترین، الگوریتم های مطرح شده در زمينه مرتب سازی یک آرایه، الگوریتم مرت ب سازی

حبابی می باشد. ایده این الگوریتم به این صورت است که اگر آرایه را به صورت عموی نگه داریم . اعداد

کوچکتر مثل حباب از پایين به سمت بالا حرک ت می کنند . این الگوریتم، دقيقا همين کار را انجام

می دهد. اعداد کوچکتر آرام آرام ب ه سمت بالای آرایه حرکت می کنند. از پایين آرایه شروع م ی کنيم و با

عنصر بالایی مقایسه م یکنيم، اگر کوچکتر از عنصر بالایی بود، جای آنها عوض می شود و عنصر کوچکتر

به یک خانه بالاتر منتقل می شود. همينطور عمل مقایسه ادامه پيدا می کند، و عناصر کوچکتر پایين با

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

به صورت زیر تعریف شده باشد: x عنوان مثال، اگر آرایه

x[0] 8

x[1] 9

x[2] 3

x[3] 1

x[4] 10

از خانه آخر، مقایسه را شروع می کنيم و عدد هر خانه را با عدد خانه بالاتر مقایسه م ی کنيم ، اگر

عددی کوچکتر در خانه پایين تر وجود داشته باشد، آن را با خانه بالایی جابجا می کنيم تا عدد کوچکتر به

سمت بالا حرکت کند.

نيست، پس جابجایی صورت نم یگيرد. x[ کوچکتر از [ 3 x[ چون [ 4

است، پس جای این دو عدد عوض x[ کوچکتر از [ 2 x[ مقایسه می کنيم، چون [ 3 x[ را با [ 2 x[ حالا، [ 3

م یشود. یعنی آرایه تبدیل به آرایه زیر خواهد شد:

x[0] 8

x[1] 9

x[2] 1

x[3] 3

x[4] 10

مقایسه می شود، چون کوچکتر است، جای آنها عوض می شود. آرایه به صورت زیر تبدیل x[ با [ 1 X[2]

م یشود:

x[0] 8

x[1] 1

x[2] 9

x[3] 3

x[4] 10

مقایسه م یشود و چون باز هم کوچکتر است، جابجا م یشود. یعنی داریم: x[ با [ 0 x[ و بالاخره، [ 1

x[0] 1

x[1] 8

x[2] 9

x[3] 3

x[4] 10

پس همانطور که می بينيد، عدد کوچکتر که ١ اس ت به بالای آرایه منتقل شد . در تکرارهای بعد اعداد

کوچکتر بعدی به بالای آرایه منتقل می شوند. فقط، چون ١ از همه کوچکتر بوده است، دیگر در تکرار بعد

را x[ مقایسه کنيم و همچنين در تکرارهای بعد دیگر لازم نيست که [ 3 x[ را با [ 0 x[ لازم نيست که [ 1

مقایسه کنيم و بهمين ترتيب تعداد مقایس هها کاهش م ییابد. x[ با [ 2

مجموعه مثا لهای برنام هنویسی جاوا سری دوم

٢

public static void bubbleSort(int[] a){

int temp;

for(int i=0;i<a.length;i++)

for(int j=a.length-1;j>i;j--)

{

if(a[j]<a[j-1]){

temp=a[j];

a[j]=a[j-1];

a[j-1]=temp;

}

}

}

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

مرت بسازی درجی، مرتب نماید.

حل:

فرض کنيد که می خواهيد، یک دسته برگه که روی هر کدام عددی نوشته شده است را مرتب کنيد .

معمولا برای مرتب کردن این برگه ها، به این صورت عمل می کنيم که مثلا برگه های نامرتب را در دست

چپ می گيریم. یکی یکی برگه ها را از دست چپ خارج می کنيم و به دست راست اضافه م ی کنيم .

برگه ها در دست راست به صورت مرتب شده قرار خواهند گرفت . وقتی م یخواهيم، یک برگه جدید به

دست راست خود ، اضافه کنيم، از سمت بالا برگ هها را آنقدر رد م یکنيم تا به جایی که باید این برگه

قرار گيرد، برسيم. برای روشن شدن مطلب به مثال زیر توجه کنيد:

٣۶ و ۵ نوشته شده است . برای مرتب ،٢٢٢ ،٣٨ ، تعدادی برگه داریم که به ترتيب روی آنها اعداد ١٠

کردن این برگه بر اساس شماره آنها، برگه اول را بر م ی داریم و در دست راست قرار م یدهيم . چون تا

حالا برگه ای وجود ندارد، پس کاری لازم نيست تا انجام شود . برگه دوم را برمی داریم، چون ٣٨ از ١٠

بزرگتر است، پس ١٠ را رد می کنيم و ٣٨ را به زیر ١٠ اضافه می کنيم. برای ٢٢٢ ، بای د برگه های ١٠ و

٣٨ را رد کنيم و این برگه را به زیر این دو برگه اضافه کنيم . برای برگه ٣۶ ، برگ ه ١٠ را رد می کنيم ولی

چون این برگه از ٣٨ کوچکتر است، آنرا به بعد از همين ١٠ اضافه می کنيم و همينطور....

در روش مرت بسازی درجی از همين روش استفاده م یشود.

public static void insertionSort(int[] a){

int key,j;

for(int i=2;i<a.length;i++)

{

key = a[i];

j=i-1;

while(j>=0 && a[j]>key){

a[j+1] = a[j];

j = j-1;

}

a[j+1] = key;

}

}

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

مرت بسازی انتخابی، مرتب نماید.

حل:

یکی دیگر از روش های مرتب سازی که در زندگی خود از آن استفاده می کنيم به این صورت است که از

بين اعداد نامرتب موجود، کوچکترین عدد را انتخاب می کنيم و به قسمت اعداد مرت ب شده م ی بریم .

سپس عدد کوچکتر بعدی را انتخاب می کنيم و به قسمت اعداد مرتب شده می بریم و بهمين ترتيب هر

مجموعه مثا لهای برنام هنویسی جاوا سری دوم

٣

دفعه کوچکترین عدد را از بين اعداد نامرتب موجود انتخاب م یکنيم و به قسمت اعداد مرتب شده اضافه

م یکنيم.

public static void selectionSort(int[] a){

int min,temp;

for(int i=0;i<a.length;i++)

{

min = i;

for(int j=i+1;j<a.length;j++)

if (a[j]<a[min]) min=j;

temp = a[i];

a[i] = a[min];

a[min] = temp;

}

}

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

مرت بسازی ادغام، مرتب نماید.

حل:

یکی از روش های حل مسائل، روش شکستن مسئله و غلبه بر آن است . یعنی مسئله را به جزءهای

کوچکتری م یشکنيم تا آنقدر ساده شود که راه حل آن خيلی ساده باشد. برای مرتب کردن یک آرایه نيز

می توان از یک چنين روشی استفاده کرد . یک آرایه اگر یک عضو داشته باشد، دیگر نيازی به مرتب

کردن ندارد . پس یک آرایه را آنقدر می شکنيم تا به اعضای آن برسيم . همچنين دو آرایه مرتب را خيلی

راحت م ی توان با هم ترکيب کرد و یک آرایه مرتب توليد کرد . از ابتدای هر دو آرایه شروع م ی کنيم و

کوچکترین اعضا را در خروجی می نویسيم و به همين صورت، عضوهای ابتدای آنها را مقایسه می کنيم

و هر کدام کوچکتر بود را در خروجی می نویسيم تا اعضای دو آرایه تمام شود . پس آرایه را به دو جزء

می شکنيم، هر جزء را مرتب می کنيم و دو جز ء مرتب شده را در هم ادغام می کنيم. اگر آرایه یک عضو

داشته باشد، دیگر نيازی به شکستن ندارد و سپس ادغام ندارد، چون خودش مرتب است . به عنوان

را با استفاده از روش مرتب a={ مثال، به شکل زیر دقت کنيد . می خواهيم آرایه { 5,2,4,7,1,3,2,6

سازی ادغام مرتب کنيم:

ایندکس شروع و پایان از آرایه است که باید آن محدوده مرتب شود . تابع last و first ، در تابع زیر

دو آرایه مرتب را در هم ادغام م یکند. ،merge

merge

5 2 4 7 1 3 2 6

2 5 4 7 1 3 2 6

2 4 5 7 1 2 3 6

1 2 2 3 4 5 6 7

مجموعه مثا لهای برنام هنویسی جاوا سری دوم

٤

public static void mergeSort(int[] a,int first,int last){

int mid;

if(first<last){

mid=(first+last)/2;

mergeSort(a,first,mid);

mergeSort(a,mid+1,last);

merge(a,first,mid,last);

}

}

public static void merge(int[] a,int first,int mid,int last){

int n1=mid-first+1;

int n2=last-mid;

int i,j;

int[] L=new int[n1+1];

int[] R=new int[n2+1];

for(i=0;i<n1;i++)

L[i]=a[first+i];

for(i=0;i<n2;i++)

R[i]=a[mid+i+1];

L[n1]= Integer.MAX_VALUE;

R[n2]= Integer.MAX_VALUE;

i=0;

j=0;

for(int k=first;k<=last;k++)

{

if(L[i]<=R[j]){

a[k]=L[i];

i++;

}

else{

a[k]=R[j];

j++;

}

}

}

را برای آرایه مثال بالا انجام دهيد. mergeSort(a, به صورت دستی، تابع ( 0,7

 

+ نوشته شده در  پنجشنبه نهم آذر 1385ساعت 20:16  توسط رضا,مهدی  | 

در این مجموعه مثال، می خواهيم با کاربرد آرایه های چند بعدی و مخصوصا آرایه های دو بعدی آشنا

شویم. آرایه دو بعدی در جاوا به صورت زیر تعریف م یشود.

;[][]نا مآرایه نو عآرایه

مثال:

int x[][];

float y[][];

double[][] x;

با هر کدام از دستورات فوق یک آرایه دوبعدی از یک نوع موردنظر تعریف می شود. گفتيم که ایجاد یک

آرایه دو مرحله دارد : تعریف متغيری از نوع مورد نظر و تخصيص حافظه . به هر کدام از آرای ه های فوق

م یتوان همانند آرایه ی کبعدی حافظه تخصيص داد:

x=int[3][4]

3، تخصيص حافظه م ی دهد . * تعریف شد را به صورت یک آرای ه دوبعدی 4 int بالا که از نوع x آرایه

همچنين م یتوان این دو مرحله را با هم انجام داد:

double y[][]=new double[4][5];

در دستور فوق، یک آرایه دو بعدی از نوع اعشاری تعریف شده است و به آن حافظه تخصيص داده شده

4 ایجاد می کند. این آرایه ۴ سطر و ۵ ستون دارد. م یتوان شکل زیر را * است. دستور فوق یک آرایه 5

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

بنابراین خان ههای آن، به صورت زیر قابل دسترس م یباشد:

y[0][0] y[0][1] y[0][2] y[0][3] y[0][4]

y[1][0] y[1][1] y[1][2] y[1][3] y[1][4]

y[2][0] y[2][1] y[2][2] y[2][3] y[2][4]

y[3][0] y[3][1] y[3][2] y[3][3] y[3][4]

می توان تعداد سطرها را بدست آورد . برای تعداد y.length برای آرایه فوق، با استفاده از دستور

می توان استفاده کرد . در حقيقت ما یک آرایه داریم که y[0].length ستون ها در سطر اول، از دستور

یعنی یک y[ سطرها است و هر خانه این آرایه خود یک آرایه دیگر است . بنابراین وقتی می گویيم [ 0

استفاده کرد و طول آنرا بدست آورد. length آرایه داریم. پس م یتوان از

آرای ههای دو بعدی را م یتوان در هنگام ایجاد، مقداردهی اوليه کرد:

int x[][]={{2,3},{6,7},{3,1}};

3 ایجاد می کند. اگر شکل زیر این آرایه دوبعدی را نشان دهد، مقداری * دستور بالا یک آرایه دوبعدی 2

که در خان ههایش قرار م یگيرد به صورت زیر م یباشد:

٢ ٣

۶ ٧

٣ ١

سوال: متدی بنویسيد که یک آرایه دوبعدی از نوع صحيح را مقداردهی اوليه کند . از این متد در داخل

برنامه ای استفاده کنيد که یک آرایه دو بعدی جدید ایجاد می کند . تعداد سطر و ستون آرایه از کاربر

دریافت م یشود.

حل:

باید متدی تعریف کنيم که به عنوان پارامتر ورودی یک آرایه دو بعدی را دریافت م یکند. سپس این آرایه را

مقداردهی اوليه کند . در برنام ه اصلی، بعد از اینکه آرایه را تعریف کردیم و به آن حافظه تخصيص دادیم،

این آرایه را به این متد ارسال م یکنيم تا آنرا مقداردهی اوليه کند.

قبل از نوشتن هر متدی، باید نامی برای آن متد انتخاب کنيم، تعداد پارامترهای آنرا و نام و نوع آنها را

meghdardehi مشخص کنيم و همچنين مشخص کنيم که متد چه مقداری برمی گرداند . نام متد را

مجموعه مثا لهای برنام هنویسی جاوا سری سوم

٢

m می گذاریم. یک پارامتر ورودی دارد که این پارامتر ورودی آرای ه ای دوبعدی از نوع صحيح است. نام آنرا

int[][] a : انتخاب م یکنيم. پس در پارامتر ورودی خواهيم داشت

این متد مقداری برنخواهد گرداند، ب لکه تنها همين آرایه ورودی را مقداردهی خواهد کرد . پس نوع متد یا

خواهيم گذاشت. void مقداربرگشتی آنرا

چون می خواهيم از تمام کلاس ها بتوانيم از این متد استفاده کنيم، برای مشخصه دستيابی آن نوع

را انتخاب می کنيم و همچنين چون قبل از استفاده از این متد، نم ی خواهيم متغيری از نوع public

را بر می گزینيم. static کلاس ایجاد کنيم، برای آن

import javax.swing.JOptionPane;

public class TwoD {

public static void main(String args[]){

String number;

int row,col;

number = JOptionPane.showInputDialog("Row");

row = Integer.parseInt(number);

number = JOptionPane.showInputDialog("Col");

col = Integer.parseInt(number);

int[][] x = new int[row][col];

meghdardehi(x);

System.exit(0);

}

public static void meghdardehi(int[][] m){

String number;

for(int i=0;i<m.length;i++)

for(int j=0;j<m[i].length;j++)

{

number = JOptionPane.showInputDialog("Array["+i+"]["+j+"] = ");

m[i][j] = Integer.parseInt(number);

}

}

}

سوال: متدی بنویسيد که یک آرایه دوبعدی از نوع اعشاری را در خروجی چاپ کند. از این متد در

برنام های استفاده کنيد که یک آرایه دوبعدی از نوع اعشاری را دریافت کند و سپس در خروجی چاپ

کند.

حل:

متدی م یخواهيم که یک پارامتر ورودی دارد و آن پارامتر آرایه ای است از نوع اعشاری. این متد قرار

نيست که مقداری برگرداند، فقط م یخواهد عناصر آرایه را در خروجی چاپ کند.

علاوه بر این متد که برای چاپ یک آرایه دوبعدی از نوع اعشاری خواهيم نوشت، یک متد م یخواهيم که

که در سوال قبل نوشتيم، نمی تونيم meghdardehi آرایه از نوع اعشاری ما را مقداردهی کند. از متد

استفاده کنيم. چون آن متد یک آرایه دوبعدی از نوع صحيح را مقداردهی اوليه م یکرد. یک متد جدید

م یخواهيم که آرایه اعشاری را مقداردهی کند. این متد خيلی شبيه به متد سوال قبل خواهد شد،

فقط نوع آن اعشاری خواهد بود.

م یگذاریم و نام متدی که آرایه از نوع chap ، نام متدی که آرایه دو بعدی از نوع اعشاری را چاپ م یکند

خواهيم گذاشت. meghdardehi اعشاری را مقداردهی م یکند، همان

(نکته: جالب است بدانيد که در جاوا م یتوان چند متد هم نام در یک کلاس از برنامه داشت. مثلا

جدیدی که م یخواهيم بنویسيم و آرای های از نوع اعشاری را meghdardehi م یتوان هم این متد

که در سوال قبل داشتيم و آرای های از نوع صحيح را meghdardehi مقداردهی م یکند و هم آن متد

مقداردهی م یکرد را در یک کلاس کنار هم داشت. جاوا با استفاده از پارامتر ورودی تشخيص می دهد

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

اجرا م یشود و اگر از نوع صحيح باشد، متدی که در سوال قبل نوشتيم اجرا خواهد شد. این ویژگی،

یکی از خصوصيات جالب زبا نهای ش ئگرا است).

مجموعه مثا لهای برنام هنویسی جاوا سری سوم

٣

import javax.swing.JOptionPane;

public class TwoD {

public static void main(String args[]){

String number;

int row,col;

number = JOptionPane.showInputDialog("Row");

row = Integer.parseInt(number);

number = JOptionPane.showInputDialog("Col");

col = Integer.parseInt(number);

double[][] x = new double[row][col];

meghdardehi(x);

chap(x);

System.exit(0);

}

public static void meghdardehi(double[][] m){

String number;

for(int i=0;i<m.length;i++)

for(int j=0;j<m[i].length;j++)

{

number = JOptionPane.showInputDialog("Array["+i+"]["+j+"] = ");

m[i][j] = Double.parseDouble(number);

}

}

public static void chap(double[][] m){

for(int i=0;i<m.length;i++){

for (int j = 0; j < m[i].length; j++)

System.out.print(m[i][j]+ "\t");

System.out.println();

}

}

}

سوال: متدی بنویسيد که دو آرایه د وبعدی صحيح را با هم جم ع کند. از این متد در برنام های استفاده

کنيد که دو آرایه دوبعدی از نوع صحيح را از ورودی دریافت کند و سپس مجموع آنها را محاسبه کرده و

در خروجی چاپ کند.

حل:

متدی می خواهيم که دو آرایه دو بعدی از نوع صحيح را با هم جمع کند. پس دو پارامتر ورودی داریم که

هر کدام آرای های دوبعدی از نوع صحيح است. این متد قرار است که یک آرایه دوبعدی جدید ایجاد کند و

مجموع این دو آرایه دوبعدی را در آن ذخيره کند. سپس باید این آرایه مجموع را از متد برگرداند. پس نوع

متد یا نوع مقدار برگشتی از متد، آرای های است دوبعدی و از نوع صحيح.

این برنامه، تعداد سطر و ستون آرای هها را از کاربر دریافت م یکند. چون دو آرایه باید تعداد سطر و ستون

یکسانی داشته باشند، تنها کافيست که یکبار تعدا سطر و ستون از کاربر پرسيده شود. سپس به

استفاده می کند تا آرایه اول meghdardehi کاربر پيغام م یدهد که آرایه اول را وارد کن و از متد

مقداردهی شود. سپس به کاربر پيغام م یدهد که آرایه دوم را وارد کن و از دوباره از متد مقداردهی

استفاده م یکند تا مجموع دو majmoo استفاده م یکند تا این آرایه مقداردهی شود. سپس از متد

آرایه را بدست آورد و در نهایت آنرا در خروجی چاپ م یکند.

import javax.swing.JOptionPane;

public class TwoD {

public static void main(String args[]){

String number;

int row,col;

number = JOptionPane.showInputDialog("Row");

row = Integer.parseInt(number);

مجموعه مثا لهای برنام هنویسی جاوا سری سوم

٤

number = JOptionPane.showInputDialog("Col");

col = Integer.parseInt(number);

int[][] a,b,c;

a = new int[row][col];

b = new int[row][col];

JOptionPane.showMessageDialog(null,"Enter first array:");

meghdardehi(a);

JOptionPane.showMessageDialog(null,"Enter second array:");

meghdardehi(b);

c = majmoo(a,b);

chap(c);

System.exit(0);

}

public static void meghdardehi(int[][] m){

String number;

for(int i=0;i<m.length;i++)

for(int j=0;j<m[i].length;j++)

{

number = JOptionPane.showInputDialog("Array["+i+"]["+j+"] = ");

m[i][j] = Integer.parseInt(number);

}

}

public static int[][] majmoo(int[][] x,int[][] y){

int[][] z = new int[x.length][x[0].length];

for(int i=0;i<x.length;i++)

for(int j=0;j<x[i].length;j++)

z[i][j] = x[i][j] + y[i][j];

return z;

}

public static void chap(int[][] m){

for(int i=0;i<m.length;i++){

for (int j = 0; j < m[i].length; j++)

System.out.print(m[i][j]+ "\t");

System.out.println();

}

}

}

موفق باشيد

٢۴ آبان ١٣٨۵

+ نوشته شده در  پنجشنبه نهم آذر 1385ساعت 20:6  توسط رضا,مهدی  | 

مجموعه مثا لهای برنام هنویسی جاوا سری چهارم

١

اجرای اپلت:

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

کمپایل می کنيم. در مرحله کمپایل، خطاهای برنامه مشخص خواهد javac استفاده از

شد و درصورتيکه برنامه خطایی نداشته باشد، م یتوان آنرا اجرا کرد.

ذخيره کرد هایم. ابتدا TestApplet.java فرض کنيد که اپلت را نوشت ه ایم و آنرا با نام فایل

دستور زیر را اجرا م یکنيم تا برنامه کمپایل شود:

javac TestApplet.java

حال اگر خطایی نداشته باشد، اپلت نوشته شده را با یکی از روش های زیر می تواني م

اجرا کرده و نتيجه آنرا ببينيم:

١- روش اول اجرای اپلت:

به صورت زیر بسازید: html یک فایل

<html>

<body>

<applet code=TestApplet width=200 height=200>

</applet>

</body>

</html>

مربوط به تگ code را اگر باز کنيد، اپلت اجرا خواهد شد . در قسمت html حال این فایل

فوق، باید نام کلاس را بنویسيد. applet

٢- روش دوم اجرای اپلت:

وجود دارد که می توانيد از این برنامه برای اجرای اپلت appletviewer برنامه ای با نام

استفاده کنيد. یک خط توضيحات به برنامه خود به صورت زیر اضافه کنيد:

//<applet code=TestApplet width=200 height=200></applet>

حال م یتوانيد با دستور زیر، اپلت خود را اجرا کنيد:

appletviewer TestApplet.java

سوال: یک اپلت بنویسيد که یکسری شکل در خروجی چاپ کند!

حل:

می گذاریم. برای نوشتن در خروجی یک اپلت باید دستورات DrawRandom نام اپلت را

بنویسيم. در این متد، ابتدا یک خط در خروجی می کشيم . برای paint خود را در متد

بدهيم تا drawLine کشيدن یک خط، باید مختصات نقطه شروع و پایان خط را به متد

این متد خط را رسم کند . این مختصات را به صورت تصادفی توليد می کنيم. برای بقيه

اشکال نيز به همين ترتيب، نقاطی به صورت تصادفی توليد می شود یا یکسری عدد

ثابت به آنها اختصاص داده شده است، و شکل رسم شده است . یک خط توضيحات در

این کد گنجانده شده است . همانگونه که در بالا توضيح داده شد، بعد از کمپایل این

کمک خواهد کرد تا اپلت را appletviewer این خط به برنامه ،javac برنامه با استفاده از

DrawRandom.java اجرا کند . بنابراین برای اجرای اپلت زیر ابتدا آنرا در فایلی با نام

ذخيره کنيد و سپس دستور زیر را اجرا کنيد:

javac DrawRandom.java

اگر برنامه خطایی نداشت، دستور زیر را اجرا کنيد:

appletviewer DrawRandom.java

کد این اپلت به صورت زیر م یباشد:

import java.applet.Applet;

import java.awt.Graphics;

import java.awt.Color;

مجموعه مثا لهای برنام هنویسی جاوا سری چهارم

٢

//<Applet code=DrawRandom width="200" height=200></applet>

public class DrawRandom extends Applet {

public void paint(Graphics g) {

//drawLine

int x1,y1,x2,y2;

x1= (int)(Math.random()*180+10);

y1= (int)(Math.random()*180+10);

x2= (int)(Math.random()*180+10);

y2= (int)(Math.random()*180+10);

g.setColor(Color.black);

g.drawLine(x1,y1,x2,y2);

//drawRect

int x,y,w,h;

x= 10;

y= 10;

w= (int)(Math.random()*180);

h= (int)(Math.random()*180);

g.setColor(Color.blue);

g.drawRect(x,y,w,h);

//drawOval

x= 20;

y= 20;

w= (int)(Math.random()*180);

h= (int)(Math.random()*180);

g.setColor(Color.red);

g.drawOval(x,y,w,h);

//fillOval

x= 20;

y= 50;

w= (int)(Math.random()*180);

h= 100;

g.setColor(Color.cyan);

g.fillOval(x,y,w,h);

//draw3DRect

x= 60;

y= 20;

w= 100;

h= (int)(Math.random()*180);

g.setColor(Color.orange);

g.draw3DRect(x,y,w,h,true);

//fill3DRect

x= 100;

y= 100;

w= 60;

h= 60;

g.setColor(Color.orange);

g.fill3DRect(x,y,w,h,true);

//drawArc

x= 10;

مجموعه مثا لهای برنام هنویسی جاوا سری چهارم

٣

y= 100;

w= 60;

h= 60;

g.setColor(Color.red);

g.drawArc(x,y,w,h,45,160);

//fillArc

x= 10;

y= 130;

w= 60;

h= 70;

g.setColor(Color.blue);

g.fillArc(x,y,w,h,0,360);

}

}

سوال: یک اپلت بنویسيد که ساعت سيستم را به صورت یک ساعت دیواری نمایش

دهد.

حل:

این اپلت، فقط ساعت سيستم را در همان لحظه اجرای اپلت نمایش می دهد و دیگر

آنرا بروزرسانی نمی کند. یعنی عقربه های آن حرکت نمی کنند . اینکار را بعدا انجام

خواهيم داد.

می گيریم. حال برای بدست آوردن ساعت از این زمان، از Date زمان فعلی را با تابع

مشخص می کنيم applyPattern استفاده می کنيم. با متد SimpleDateFormat کلاس

که چه قسمتی از زمان را لازم داریم، مثلا اگر فقط ساعت را لازم داریم از

از این کلاس را با پارامتر format استفاده می کنيم و سپس اگر متد applyPattern("h")

ورودی تاریخ فعلی فرابخوانيم، فقط قسمت ساعت آن به عنوان جواب این متد،

برگشت داده می شود. به همين صورت، دقيقه و ثانيه را نيز محاسبه می کنيم . بعد از

آن، یکسری بازی با ریاضيات انجام می دهيم تا مختصات نقاط انتهایی عقربه های

ساعت، دقيقه و ثانيه را بدست آوریم. مختصات نقطه ابتدایی را نيز به صورت

پيش فرض برای ساعت مشخص کرده ایم . برای مرکز ساعت ، مختصات ( 55,55 ) را

درنظرگرفت هایم.

توضيحات بيشتر در صورت نياز، در آزمایشگاه ارائه خواهد شد.

import java.applet.Applet;

import java.awt.Graphics;

import java.awt.Color;

import java.text.SimpleDateFormat;

import java.util.Date;

public class Clock extends Applet {

SimpleDateFormat df=new SimpleDateFormat();

int xcenter=55,ycenter=55;

public void paint(Graphics g){

Date currentDate = new Date();

int xh,yh,xm,ym,xs,ys;

int h,m,s;

String number;

df.applyPattern("h");

number = df.format(currentDate);

h=Integer.parseInt(number);

df.applyPattern("m");

مجموعه مثا لهای برنام هنویسی جاوا سری چهارم

٤

number=df.format(currentDate);

m=Integer.parseInt(number);

df.applyPattern("s");

number=df.format(currentDate);

s=Integer.parseInt(number);

xs=xcenter+(int) (Math.sin(s*Math.PI/30)*45);

ys=ycenter-(int)(Math.cos(s*Math.PI/30)*45);

xm=xcenter+(int) (Math.sin(m*Math.PI/30)*40);

ym=ycenter-(int)(Math.cos(m*Math.PI/30)*40);

xh=xcenter+(int) (Math.sin(h*Math.PI/6+m*Math.PI/360)*30);

yh=ycenter-(int)(Math.cos(h*Math.PI/6+m*Math.PI/360)*30);

g.setColor(Color.black);

g.drawArc(xcenter-50,ycenter-50,100,100,0,360);

g.drawString("12",xcenter-5,ycenter-40);

g.drawString("3",xcenter+40,ycenter);

g.drawString("9",xcenter-45,ycenter);

g.drawString("6",xcenter-5,ycenter+45);

g.drawLine(xcenter,ycenter,xs,ys);

g.setColor(Color.blue);

g.drawLine(xcenter,ycenter,xm,ym);

g.drawLine(xcenter,ycenter,xh,yh);

}

}

+ نوشته شده در  پنجشنبه نهم آذر 1385ساعت 20:4  توسط رضا,مهدی  | 

import javax.swing.*;
public class Fibo{
public static void main(String args[]){
int c,b=1,a=1,n;
String number;
number=JOptionPane.showInputDialog("enter a number=");
n=Integer.parseInt(number);
System.out.print(a);
System.out.print(b);
 for(int i=3;i<=n;i++)
{
c=a+b;
a=b;
b=c;
System.out.print(c);
}
System.exit(0);
}
}

+ نوشته شده در  پنجشنبه نهم آذر 1385ساعت 19:40  توسط رضا,مهدی  | 

#include<stdio.h>
#include<conio.h>
#include<math.h>
int Cross(int a,int b,int d){
    if (a==b || abs(a-b)==d)
      return 0;
    else
      return 1;
}
void main (void){
     int a,b,c,d,e,f,g,h,count=0;
     clrscr();
     for(a=1;a<=8;a++)
 for(b=1;b<=8;b++)
    if(Cross(a,b,1))
      for(c=1;c<=8;c++)
  if(Cross(c,b,1) && Cross(c,a,2))
     for(d=1;d<=8;d++)
        if(Cross(d,c,1) && Cross(d,b,2) && Cross(d,a,3))
   for(e=1;e<=8;e++)
      if(Cross(e,d,1) && Cross(e,c,2) && Cross(e,b,3) && Cross(e,a,4))
        for(f=1;f<=8;f++)
    if(Cross(f,e,1) && Cross(f,d,2) && Cross(f,c,3) && Cross(f,b,4) && Cross(f,a,5))
      for(g=1;g<=8;g++)
         if(Cross(g,f,1) && Cross(g,e,2) && Cross(g,d,3) && Cross(g,c,4) && Cross(g,b,5) && Cross(g,a,6))
     for(h=1;h<=8;h++)
        if(Cross(h,g,1) && Cross(h,f,2) && Cross(h,e,3) && Cross(h,d,4) && Cross(h,c,5) && Cross(h,b,6) && Cross(h,a,7)){
          count++;
          printf("%d,%d\n",1,a);
          printf("%d,%d\n",2,b);
          printf("%d,%d\n",3,c);
          printf("%d,%d\n",4,d);
          printf("%d,%d\n",5,e);
          printf("%d,%d\n",6,f);
          printf("%d,%d\n",7,g);
          printf("%d,%d\n\n",8,h);
          getch();
        }
        printf("%d",count);
}
+ نوشته شده در  پنجشنبه نهم آذر 1385ساعت 11:4  توسط رضا,مهدی 

import java.applet.*;
import java.awt.*;
import java.awt.event.*;
class queensCanvas extends Canvas{
 public queensCanvas(){
  setSize(128,128);  
  setVisible(true);
  repaint();
 }

 public void update(Graphics g){
   paint(g);
 }
 
 public void paint(Graphics g){
  for(int y = 0;y < 8;y++){
   for(int x = 0;x<8;x++){
     if(((x % 2) ^ (y % 2)) == 0)
     g.setColor(Color.white);
    else
     g.setColor(Color.black);
    if(board != null && board[x] == y)
     g.setColor(Color.blue);
    g.fillRect(x<<4,y<<4,16,16);
   }
  }
 }
}
public class queens extends Applet implements Runnable,
 ActionListener{

 private Thread m_queens = null;

 private queensCanvas m_processwindow = null;
 private queensCanvas m_viewwindow = null;
 private Button m_stopbutton = null;
 private Button m_continuebutton = null;
 private Button m_viewbutton = null;
 private List  m_viewlist = null;
 private Label m_solutioncount = new Label("  ");
 private int  m_sleeptime = 2;
 private boolean m_already_ran = false;

 public String getAppletInfo(){
  return "Name: queens\r\n"
  }

 public void init(){
  m_processwindow = new queensCanvas();
  m_viewwindow = new queensCanvas();
  m_stopbutton = new Button("Stop");
  m_stopbutton.addActionListener(this);
  m_continuebutton = new Button("Continue");
  m_continuebutton.addActionListener(this);
  m_viewlist = new List(8,false);
  m_viewbutton = new Button("View");
  m_viewbutton.addActionListener(this);
  GridBagLayout gridbag = new GridBagLayout();
  GridBagConstraints c = new GridBagConstraints();
  setLayout(gridbag);
  Label label = new Label("Process");
  c.gridx = 0;
  c.gridy = 0;
  gridbag.setConstraints(label,c);
  add(label);
  label = new Label("View"); 
  c = new GridBagConstraints();
  c.gridx = 1;
  c.gridy = 0;
  gridbag.setConstraints(label,c);
  add(label);
  m_solutioncount = new Label("Solutions: ");
  c = new GridBagConstraints();
  c.gridx = 2;
  c.gridy = 0;
  gridbag.setConstraints(m_solutioncount,c);
  add(m_solutioncount);
  c = new GridBagConstraints();
  c.gridx = 0;
  c.gridy = 1;
  gridbag.setConstraints(m_processwindow,c);  
  add(m_processwindow);
  c = new GridBagConstraints();
  c.gridx = 1;
  c.gridy = 1;
  gridbag.setConstraints(m_viewwindow,c);
  add(m_viewwindow);
  c = new GridBagConstraints();
  c.gridx = 2;
  c.gridy = 1;
  gridbag.setConstraints(m_viewlist,c);
  add(m_viewlist);
  Panel temp = new Panel();
  temp.add(m_stopbutton);
  temp.add(m_continuebutton);
  c = new GridBagConstraints();
  c.gridx = 0;
  c.gridy = 2;
  gridbag.setConstraints(temp,c);
  add(temp);
  label = new Label("Copyright © 1998, Particle");
  c = new GridBagConstraints();
  c.gridx = 1;
  c.gridy = 2;
  gridbag.setConstraints(label,c);  
  add(label);
  c = new GridBagConstraints();
  c.gridx = 2;
  c.gridy = 2;
  gridbag.setConstraints(m_viewbutton,c);
  add(m_viewbutton);

 }

 public void start(){
  if(m_queens == null){
   m_queens = new Thread(this);
   m_queens.start();
  }
 }
 
 public boolean attacks(byte[] row,int col){
  int diff = row[col] - col;
  int sum = row[col] + col;
  for(int i=0;i<col;i++)
   if(row[i] == row[col])
    return true;
   else if((row[i] - i) == diff)
    return true;
   else if((row[i] + i) == sum)
    return true;
  return false;
 }
 public void solution(byte[] sol){
  if(!m_already_ran){
   String s = new String();
   for(int i = 0;i<sol.length;i++)
    s += sol[i];
   m_viewlist.add(s);
   m_solutioncount.setText("Solutions: "+m_viewlist.getItemCount()+"  ");
  }
 }
 public void find8Queens(byte[] row){
  int col = 0;
  row[col] = -1;
  while(m_processwindow == null);
  while(col >= 0){
   row[col]++;
   m_processwindow.setWhatToDraw(row);
   try{    
    Thread.sleep(m_sleeptime);
   }catch(InterruptedException e){} 

   while(row[col] < 8 && attacks(row,col)){
    row[col]++;
    m_processwindow.setWhatToDraw(row);
    try{    
     Thread.sleep(m_sleeptime);
    }catch(InterruptedException e){} 
   }
   if(row[col] < 8)
    if(col == 7)
     solution(row);
    else
     row[++col] = -1;
   else
    col--;
  }
 }
 
 public void run(){
  byte[] arr = new byte[8];
  while(true){
   for(int i = 0;i<arr.length;i++)
    arr[i] = 0;
   find8Queens(arr);
            if(m_already_ran == false && m_queens != null)
  m_queens.suspend();
   m_already_ran = true;
   m_sleeptime = 15;
  }
 }

 public void actionPerformed(ActionEvent e){
  if(e.getActionCommand() == "Stop"){
   if(m_queens != null)
    m_queens.suspend();
  }else if(e.getActionCommand() =="Continue"){
   if(m_queens != null)
    m_queens.resume();
  }else if(e.getActionCommand() == "View"){
   String selection = m_viewlist.getSelectedItem();
   if(selection != null){
    byte[] arr = new byte[8];
    for(int i=0;i<8;i++)
     arr[i] = (byte)(Integer.parseInt(""+selection.charAt(i)));
    m_viewwindow.setWhatToDraw(arr);   
   }
  }
 }
}

+ نوشته شده در  پنجشنبه نهم آذر 1385ساعت 10:42  توسط رضا,مهدی