برنامه نویسی جاوا – قسمت هشتم

یکشنبه, ۴ام بهمن , ۱۳۸۸ | ۹ دیدگاه

عبارات کنترلی: هر زبان برنامه سازی از عبارات کنترلی برای هدایت جریان اجرای برنامه بر اساس تغیییرات وضعیت آن استفاده می کند. عبارات کنترلی جاوا به دو دسته تقسیم می شوند: ۱- انتخاب  ۲- تکرار و۳- پرش. عبارات انتخابselection statement به برنامه ها امکان می دهد تا مسیر های اجرایی مختلفی را بر اساس نتیجه یک جمله جبری یا وضعیت یک متغیر؛انتخاب کند. عبارات کنترلiteration statement به برنامه ها امکان می دهد تا یک یا چند عبارت را تکرار کند(ایجاد حلقه ها) و عبارات پرشjump statement به برنامه ها امکان می دهد تا به صورت غیر خطیnonlinear اجرا شوند.

نکته: اگر با C/C++/C# آشنا باشید این فصل به نظر شما بسیار آسان خواهد آمد. در واقع عبارات کنترلی جاوا بسیار شبیه به زبانهای مذکور است اما چند تفاوت نیز به ویژه در مورد دستوراتbreak و continue وجود دارد.

عبارات انتخاب جاوا

جاوا از دو نوع عبارت انتخاب پشتیبانی می کند: if وswitch . این عبارات امکان کنترل جریان اجرای برنامه ها را بر اساس شرایطی که تنها در طی اجرای مشخص می شوند؛ فراهم می سازد. این دو عبارت قدرت و انعطاف پذیری شگفت انگیزی دارند.

If

عبارت if ؛عبارت انشعاب شرطی جاواست.با استفاده از آن می توان اجرای برنامه ها را از طریق دو مسیر مختلف هدایت نمود. با شکل کلی این عبارت آشنا می شویم:

If (condition) statement 1 ;
Else statement 2 ;

Statement در هر یک از دو حالت می تواند یک عبارت واحد یا چند عبارت در بین {} brace باشد(یعنی یک block ). Condition نیز می تواند هر شرطی با حاصل Boolean باشد. قسمتelse هم اختیاری است.

عبارت if به این شرح است: اگر حاصل condition مقدار true باشد در آن صورتstatement 1 اجرا می شود و در غیر این صورت؛ statement 2 (در صورت وجود) اجرا می گردد. تحت هیچ شرایطی دو عبارت با هم اجرا نمی شود.

در بیشتر مواقع در شرط کنترلif از عملگرهای رابطه ای استفاده می شود اما این امر از نظر فنی ضرورت ندارد. عبارتif را می توان همچون مثال زیر با یک مقدار بولی هم کنترل کرد:

Boolean  dataAvailable;
//…
If (dataAvailable)
processData() ;
else
waitForMoreData();

if های تو در تو(متداخل)

منظور از if تودرتو آن است که عبارتif دیگری؛ در یک if یا else دیگر قرار گیرد. Ifهای تودرتو در برنامه سازی بسیار متداول هستند. مهمترین نکته در مورد این نوعifها این است که باید به خاطر داشته باشید که هر عبارتelse همیشه به نزدیکترین عبارتif موجود در همان بلوکelse که باelse دیگری هم مرتبط نیست؛ ارجاع دارد.

If (i==10) {
If(j<20) a=b;
If(k>1000) c=d;
Else  a=c;
}
Else a=d;

نردبان if-else-if

یکی از ساختارهای برنامه سازی متداولی که بر اساس یک سری ifهای تودرتو بنا شده است؛ نردبانladder ؛if-eelse-if است که به صورت زیر نوشته می شود:

If (condition)
Statement;
Else if (condition)
Statement;
Else if(condition)
Statement;
.
.
.
Else
Statement;

عبارات if از بالا به پایین اجرا می شوند .به محض اینکه حاصل یکی از شرطهای کنترل کننده if مقدار true باشد؛ عبارت مرتبط با آن if اجرا شده و از مابقی نردبان صرفنظر می شود.اگر هیچ یک از شرطها درست نباشد؛ آخرین عبارت else اجرا خواهد شد. آخرین else به صورت پیش فرض عمل می کند یعنی چنانچه هیچ یک از شرطها برقرار نباشد ؛ در آن صورت آخرین عبارت else اجرا می شود و اگر عبارتelse آخری موجود نباشد و مقدار تمام شرطها نیزfalse باشد در آن صورت هیچ عملی انجام نمی گیرد.

Switch
عبارتswitch عبارت انشعاب چند شاخه ای جاوا است. این عبارت روش آسانی برای هدایت کنترل اجرای برنامه به قسمتهای مختلف بر اساس مقدار یک جمله جبری فراهم می سازد. بدین ترتیب؛جایگزین بهتری برای یک سری عبارات if-else-if طولانی به شمار می آید:

Switch (expression) {
Case  value 1:
//statement sequence
Break;
Case value 2:
//statement sequence
Break;
.
.
.
Case value N:
Break;
Default:
//default statement sequence
}

Expression باید از نوع byte,short ,int یا char باشد. هر یک ازvalue های مشخص شده در عبارات case باید از نظر نوع متناسب با expression باشند.(از مقادیر نوع enumeration که در آینده بررسی می شوند می توان برای کنترل switch استفاده نمود)
هر یک از مقادیرcase باید یک لیترال منحصر به فرد باشد(باید یک مقدار ثابت باشد و نه متغیر).مقدار case نباید تکراری باشد.
عملکردswitch به این شرح است:
مقدارexpression با هریک از مقادیر لیترال عبارت case مقایسه می شود. اگر مقدار متناظری پیدا شود؛ عبارت یا عبارتهای پس از case اجرا می شود. اگر هیچ یک از مقادیر ثابت با مقدار expression برابر نباشد؛ در آن صورت عبارتdefault اجرا می شود. با این وجود عبارت مذبور اختیاری است. اگر مقدار متناظری پیدا نشود و عبارت default هم موجود نباشد در آن صورت هیچ عملی انجام نمی شود.
از عبارتbreak درswitch برای پایان دادن به یک سری از عبارات استفاده می شود. وقتی نوبت به اجرای عبارتbreak می رسد؛ اجرای برنامه به نخستین سطر پس از کل عبارت switch هدایت می شود. بدین ترتیب کنترل از عبارت switch خارج می شود.
حذف عبارتbreak کاربردهای عملی زیادی در برنامه های واقعی دارد.

عبارات switch تو در تو

از عبارتswitch می توانید به عنوان یکی از عبارات یک switch دیگر استفاده کنید. ار آنجایی که هر عبارتswitch بلوک مخصوص به خود را تعریف می کند؛ هیچ تداخلی بین ثابت case های switch داخلی و خارجی پیش نمی آید.

سه ویژگی مهم و قابل توجه از عبارتswitch به طور خلاصه در ذیل فهرست شده اند:

  • عبارت switch بر خلاف عبارتif تنها قابلیت بررسی تساوی دو مقدار را دارد؛ در صورتی که if ها می توانندهر نوع جمله بولی را ارزیابی کنند. یعنی switch تنها مقداری را جستجو می کند که با یکی از ثابتهای case خود برابر باشد.
  • هیچکدام از ثابتهایcase در یک عبارتswitch نمی توانند با هم یکسان باشند.البته ثابتهای case یک عبارتswitch و عبارت switch داخل ن می توانند یکسان باشند.آآن می توانند یکسان باشند.
  • عبارتswitch معمولا کارآمد تر از مجموعه ای ازif های تودرتو است.

عبارات تکرار

عبارات تکرارiteration statement در جاوا عبارتند ازfor,while و do-while . نتیجه عملکرد این عبارات عموما حلقه loop نامیده می شود. هر حلقه مکررا مجموعه ای از دستورالعمل ها را آنقدر اجرا می کند تا شرط پایان کار برآورده شود. جاوا حلقه هایی برای برآورده ساختن تمام نیازهای برنامه سازی دارد.

While

حلقه while اصلی ترین حلقه جاوا محسوب می شود. تا زمانی که حاصل جمله کنترل کننده این حلقهtrue است؛ اجزای عبارت یا بلوکی از عبارات تکرار می شود. شکل کلی آن بدین صورت است:

While  (condition)  {
//body of loop
}

Condition می تواند هر جمله بولی باشد. تا زمانی که حاصل آن true باشد؛ قسمتbody اجرا می شود. هرگاه حاصل آن false شود؛ کنترل به نخستین سطر پس از حلقه هدایت می شود. چنانچه هدف تکرار ؛اجرای تنها یک عبارت باشد؛ وجود {} لازم نخواهد بود.
از آنجایی گه حلقه while جمله شرطی خود را در ابتدای حلقه بررسی می کند ؛ در صورت false بودن شرط؛ قسمت body حلقه اصلا اجرا نمی شود.
قسمت body حلقه while (یا سایر حلقه های جاوا) می تواند خالی باشد. دلیل این امر آن است که عبارتهایnull( عباراتی که تنها از یک” ; “ تشکیل می شوند)از نظر گرامری درست هستند.

Do – While

همانگونه که خواندید؛ چنانچه جمله شرطی کنترل کننده هر حلقه while از ابتدا false باشد؛ در آن صورت قسمت body حلقه اصلا اجرا نمی شود. اما گاهی لازم است قسمتbody حداقل یک مرتبه اجرا شود حتی اگر حاصل جمله شرطی از همان ابتدا false باشد. یعنی گاهی اوقات لازم است جمله شرطی را به جای ابتدا؛ در انتهای حلقه بررسی کنید.حلقهdo-while همیشه قسمتbody را حداقل یک مرتبه اجرا می کند ؛چرا که جمله شرطی آن در انتهای حلقه قرار دارد.شکل کلی آن را با هم می بینیم:

Do {
//body of loop
}while (condition);

هر بار که حلقه do-while تکرار می شود؛ ابتدا قسمتbody اجرا می شود و سپس حاصل جمله شرطی ارزیابی می گردد. اگر این حاصلtrue باشد؛حلقه تکرار خواهد شد و در غیر این صورت حلقه به پایان می رسد. شرطه حلقه باید حتما از نوع Boolean باشد.
حلقه do-while خصوصا زمانی مفید است که از آن برای پردازش گزینه های یک منو استفاده می کنید. چرا که معمولا در این گونه شرایط لازم است قسمتbody حداقل یک مرتبه اجرا شود.

For
حلقهfor یکی از ساختارهای قدرتمند و کاربردی جاوا به شمار می آید.
وجود دو شکل مختلف برای حلقه for از نگارش J2SE 5 مطرح شد. نخستین شکل حلقه for ؛همان حلقه قدیمی است که از زمان عرضه نخستین نگارش جاوا مطرح بوده است. شکل دوم که شکل جدید این حلقه است؛ به صورتfor-each می باشد.
شکل کلی حلقه قدیمی به این صورت است:

For ( initialization ; condition ; iteration) {
//body
}

حلقه for به این شکل عمل می کند:
وقتی حلقه آغاز می شود؛قسمت initialization حلقه اجرا می شود. عموما این قسمت جمله جبری است که مقدارد متغیر کنترل حلقه را تعیین می کند. از این متغیر به عنوان شمارنده کنترل حلقه استفاده می شود. لازم است بدانید که جمله جبری مقدار دهی اولیه تنها یک مرتبه اجرا می شود. سپس condition ارزیابی می شود. حاصل آن باید از نوع Boolean باشد.condition معمولا متغیر کنترل حلقه را با یک مقدار معین مقایسه می کند. چنانچه حاصل کار true باشد؛ قسمت body اجرا می شود.
چنانچه حاصل false باشد حلقه به پایان می رسد. سپس قسمتiteration حلقه اجرا می گردد .این قسمت معمولا جمله جبری است که مقدار متغیر کنترل حلقه را افزایش یا کاهش می دهد. حلقه سپس تکرار می شود و هر بار ابتدا جمله شرطی ارزیابی می شود؛سپس قسمت body اجرا می گردد و سپس قسمت interation اجرا می گردد. این فرآیند آنقدر تکرار می گردد تا حاصل جمله کنترل کنندهfalse شود.
گاهی اوقات لازم می شود که بیش از یک عبارت را در قسمتهایinitialization و interation به کار ببرید.برای این کار این عبارت ها را توسط کاما از هم جدا می کنیم.
می توانید سه قسمت نامبرده در حلقه for را حذف کنید؛ در این حالت می توانید یک حلقه نامحدود که هیچگاه به پایان نمی رسد بسازید.
هر کدام از این سه قسمت می تواند از ساختار اصلی حلقه for حذف گردد.

شکل for-each از حلقه for
نظریه معاصر زبانها مفهومfor-each را به خوبی پذیرفته است و این سبک به سرعت به یکی از ویژگه های استانداردی مبدل می شود که برنامه سازان می بایست انتظار آن را داشته باشند. حلقه سبک for-each به گونه ای طراحی شده است تا چرخه ای برای کلکسیونی از شی ء ها ؛مثلا یک آرایه؛ به صورت کاملا متوالی و سریال و از ابتدا تا انتها ایجاد نماید.
بر خلاف زبانهایی چون C# که این سبک از حلقه for را با استفاده از کلمه کلیدیforeach پیاده سازی می کنند؛ جاوا این قابلیت را از طریق بهبود عبارتfor افزوده است. مزیت این رویه آن است که کلمه کلیدی جدیدی لازم نیست و روتین های موجود نیز تغییر نمی یابند. به سبک for-each حلقه for ؛حلقه for پیشرفته نیز گفته می شود. شکل کلی حلقه را با هم می بینیم:

For (type itr-var : collection)  statement-block

type مشخص کننده نوع و itr-var مشخص کننده نام متغیر تکرار است که عناصر یک کلکسیون را یک به یک و از ابتدا به انتها دریافت می کند. کلکسیونی که چرخه برای آن ایجاد می شود؛ با collection مشخص می شود. انواع گوناگونی از کلکسیون ها را می توان با for به کار برد اما تنها نوع مورد استفاده در این unit ؛ آرایه ها هستند(در آینده سایر انواع کلکسیونهای قابل استفاده با for ؛ همچون کلکسیونهایی که به وسیله collection framework تعریف می شوند را بررسی می کنیم).

هر بار که حلقه تکرار می شود؛ عنصر بعدی در کلکسیون بازیابی و در itr-var ذخیره می شود. حلقه آنقدر تکرار می شود تا تمام عناصر در کلکسیون بازیابی می شود.چون متغیر تکرار؛ مقادیرش را از کلکسیون ها به دست می آورد؛type باید با نوع عناصر ذخیره شده در کلکسیون یکسان باشد(یا سازگار باشد). از این رو ؛type هنگام گردش در بین عناصر آرایه باید با نوع عناصر آنها سازگار باشد. برای درک انگیزه ابداع حلقه های سبک for-each ؛ نوع حلقه for ایی را در نظر بگیرید که این سبک جدید به عنوان جایگزین آن طراحی شده است.
اگرچه حلقه for-each آنقدر تکرار می شود تا تمام عناصر موجود در آرایه بررسی شوند؛اما این امکان وجود دارد که حلقه را با استفاده از عبارت break در همان مراحل اولیه قطع کرد.
نکته مهمی درباره حلقه سبکfor-each وجود دارد که باید به خوبی درک کنید. چون متغیر تکرار آن با آرایه مرتبط است؛ لازم است “فقط خواندنی” باشد. تخصیص مقدار به این متغیر؛ هیچ تاثیری بر آرایه ندارد. به عبارت دیگر؛ محتوای آرایه را نمی توانید از طریق تخصیص مقدار جدید به متغیر تکرار تغییر دهید. برنامه زیر را در نظر بگیرید:

//the for-each loop is essentially read-only.
Class NoChange{
Public static void main(string args[])  {
Int nums[ ] = {1,2,3,4,5,6,7,8,9,10};
For (int x:nums) {
System.out.print(x+” “);
X=x*10;    //no effect on nums
}
System.out.println( );
For(int x : nums)
System.out.print(x+” “ );
System.out.println( );
}
}

نخستین حلقه for ؛ مقدار متغیر تکرار را به اندازه ۱۰۰ واحد افزایش می دهد. اما همانکونه که حلقه for نشان می دهد؛ این کار هیچ تاثیری بر آرایه nums ندارد. این نکته با خروجی زیر به اثبات رسیده است:

۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۱۰

۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۱۰

عبارات پرش

جاوا از سه عبارت پرشjump ، break,continue و return پشتیبانی می کند. این عبارات؛ کنترل را به بخش دیگری از برنامه تان انتقال می دهند.آنها را با هم بررسی می کنیم:

نکته: جاوا علاوه بر عبارت پرش مورد بررسی در اینunit؛ از روش دیگری برای تغییر جریان اجرای برنامه تان پشتیبانی می کند: از طریق مدیریت استثنا ها. مدیریت استثنا ها روش ساختار یافته ای در اختیارتان می گذارد که خطاهای زمان اجرا از طریق آن قابل به دام انداختن و مدیریت می شوند. این روش با کلمات کلیذی try,catch,throw,throws وfinally پشتیبانی می شود. در واقع مکانیزم مدیریت استثناها؛امکان پرش غیر محلیnonlocal را برای برنامه تان فراهم می سازد.از آنجایی که مدیریت استثنا ها؛ موضوع گسترده ای است؛ به طور جداگانه در unit های بعدی بررسی خواهند شد.

استفاده از break

عبارتbreak در جاوا سه کاربرد دارد. نخست اینکه؛ همان گونه که دیده اید؛ به اجرای متوالی عبارات در یکی از حالات عبارت switch پایان می بخشد. دوم اینکه از آن می توان برای خروج از حلقه استفاده نمود و سوم اینکه از آن می توان به صورت شکل متمدنی از goto استفاده نمود. دو کاربرد آخر را با هم بررسی می کنیم:

استفاده ازbreak برای خروج از حلقه ها

با استفاده ازbreak می توانید یک حلقه را فورا پایان ببخشید و از جمله شرطی و مابقی عبارت موجود در قسمتbody صرفنظر کنید.وقتی نوبت به اجرای عبارتbreak در یک حلقه می شود؛ اجرای حلقه به پایان رسیده و کنترل اجرای برنامه به نخستین عبارت پس از حلقه هدایت می شود:

//using break to exit a loop.
Class BreakLoop{
Public static void main(string args[]) {
For (int i=0; i<100; i++){
If (i==10)break;     //terminate loop if I is 10
System.out.println(“i:” +);
}
System.out.println(“Loop complete.”);
}
}

Out put:
I: 0
I: 1
I: 2
. . .
I: 9
Loop complete.

وقتی از عبارت break در مجموعه ای از حلقه های تو در تو استفاده شود؛ تنها اجرای داخلی ترین حلقه قطع می شود.

ممکن است بیش از یک عبارتbreak در هر حلقه وجود داشته باشد اما مواظب باشید ؛استفاده بیش از اندازه از این عبارت موجب از بین رفتن ساختار یافتگی برنامه تان می شود.

چنانچه عبارتbreak اجرای برنامهswitch را قطع کند؛ تاثیر آن تنها بر همان عبارت خواهد بود و نه حلقه در بر گیرنده آن.

نکته: break برای فراهم ساختن روش متعارف قطع اجرای حلقه ها طراحی نشده است. انجام این کار بر عهده جملات شرطی حلقه ها است. از عبارتbreak باید برای قطع اجرای حلقه ها تنها در صورت بروز شرایط ویژه استفاده نمود.

استفاده از break به عنوان نوعی goto

زبان جاوا فاقد عبارتgoto است چرا که عبارت مذبور ؛روشی برای انشعاب غیر شرطی فراهم نموده و موجب از بین رفتن ساختار یافتگی برنامه ها می شود.

انجام این کار معمولا سبس می شود تا درک و نگهداشت روتین هایgoto دار دشوار شود. این عبارت همچنین از برخی از بهینه سازیهای  کامپایلر ها جلوگیری می کند. اما عبارت goto در برخی از موارد؛ساختاری ارزشمند و قانونی برای هدایت رو به جلو جریان برنامه هاست.

جاوا برای مدیریت اینگونه شرایط؛از شکل گسترده ای از عبارتbreak پشتیبانی می کند. با استفاده از این فرم از عبارتbreak می توانید ازاجرای یک یا چند بلوک صرفنظر کنید.لزومی ندارد که این گونه بلوک ها؛ در یک حلقه یا عبارتswitch باشند. این کار برای هر بلوکی میسر است. به علاوه می توانید دقیقا مشخص کنید که اجرای برنامه ها از کجا ادامه یابد؛ چرا که این فرم از عبارتbreak همراه با برچسبهاlabel به کار برده می شود.

 Break label;

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

گاهی اوقات لازم است که اجرای حلقه پیش از رسیدن به انتها تکرار شود. این کار با عبارتcontinue انجام می شود. این عبارت در حلقه های while و do-while سبس انتقال مستقیم کنترل به جمله شرطی کنترل کننده حلقه می شود. در حلقه for کنترل نخست به قسمت interation و سپس به جمله شرطی عبارتfor هدایت می شود. در هر سه حلقه جاوا؛ عبارات پس از continue (تا انتهای حلقه)نادیده انگاشته می شوند.

//demonstrate continue
Class Continue{
Public static void main(string args[]){
For (int i=0 ; i<10 ; i++) {
System.out.print( I + “ “ ) ;
If (i% 2 == 0) continue;
System.out.println ( “ “ );
}
}
}

با استفاده از عملگر% بررسی می شود که مقدارi زوج است یا خیر. اگر چنین باشد ؛حلقه بون چاپ کاراکتر”سطر جدید” ادامه می یابد.

Return

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

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

//demonstrate return.
Class Return{
Public static void main(string args[]) {
Boolean t= true ;
System.out.println(“Before the return.”) ;
If (t) return  ;   //return to caller
System.out.println(“this wont execute.”);
}
}

آخرین نکته : در برنامه بالا if(t) ضروری است. کامپایلر جاوا در صورت عدم وجود آن؛ پیام خطای”unreachable code”  را نمایش می دهد.چرا که برای کامپایلر مشخص می شود که آخرین عبارتprintln هیچگاه اجرا نمی شود. برای پیشگیری از این خطا از عبارتif برای گول زدن کامپایلر جهت نشان دادن نکته مورد نظر استفاده شده است.

خوب این هم از درسنامه امروز.قرار شد از این unit به بعد؛موضوع درسنامه بعدی رو اعلام کنیم تا اگر کسی دوست داره برامون نمونه برنامه بفرسته.موضوعunit آینده “معرفی کلاس ها” در زبان برنامه سازی جاواست.

پستهای مرتبط :

برنامه نویس جاوا – قسمت ۷

برنامه نویس جاوا – قسمت ۶

برنامه نویس جاوا – قسمت ۵

برنامه نویس جاوا – قسمت ۴

برنامه نویس جاوا – قسمت ۳

برنامه نویس جاوا – قسمت ۲

برنامه نویس جاوا – قسمت ۱

Be Sociable, Share!


۹ دیدگاه


  1. عابد
    ۷ بهمن ۱۳۸۸

    با تشکر
    من اولین بازدیدم از سایت شما بود
    مطالب بسیار عالی است (مشتری شدیم)
    با تشکر




  2. مهدی
    ۱۳ بهمن ۱۳۸۸

    واقعا آموزشات جالبن البته من خودم برنامه نویس جاوام ولی خیلی خوشم اومد خوب توضیح داده بودی ،ولی کلا یه مشکل اگه آدم بخواد مطالب سایتت را پرینت کنه خیلی داغون می شه :دی اگه راه حلی داری ممنون می شم بهم بگی .




  3. کامران
    ۱۴ بهمن ۱۳۸۸

    تا حالا همچین چیزی نشنیده بودم
    فقط پرینت نطالب این سایت بهم ریختست؟؟؟




  4. مهدی
    ۱۴ بهمن ۱۳۸۸

    بله ،فقط سایت شما من سایتهای دیگری را هم پرینت می کنم مثل writeage ولی فقط مال شما خیلی خیلی قاطی می کنه :دی




  5. مهدی
    ۲۸ بهمن ۱۳۸۸

    با یه افزونه در فایر فاکس درستش کردم ولی می خواستم بگم دست خانوم مینا درد نکنه واقعا مطالب مفیدی ارئه دادن فقط یه چند جا از اول آموزش غلط املایی داشتند که عادیه 🙂
    یه چیز دیگه آموزش هشتم ۴ بهمن منتشر شده بعدی کی منتشر میشه ؟البته عجله ای نیست بهتر آموزش خوب باشه تا زود منتشر شه مثل آلبوم بعضی خواننده ها 🙂
    یه عرض دیگه هم داشتم می خواستم بدانم بعد از تمام شدن این آموزش ها آیا مثال یا ترفندی هم می گذارید؟چون به نظرم خیلی مفید تر از خود آموزش است 🙂
    موفق باشید




  6. کامران
    ۲۸ بهمن ۱۳۸۸

    مینا خانم تحویل بگیر
    جلسه بعدی چی شد :d




  7. مریم
    ۷ اسفند ۱۳۸۸

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




  8. مينا
    ۱۰ اسفند ۱۳۸۸

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




  9. finder
    ۱۵ شهریور ۱۳۸۹

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



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