جزوه کارگاه برنامه نویسی شامل: توضیح و حل برخی تمرینات آخر فصل کتاب الگوریتم و فلوچارت ایرج صادقی visual گریزی به نرم افزار stadio 2012 تهیه و تنظیم : محمد ربانی
1) مقدمه ای بر نحوه برنامه نویسی: دیدگاه برنامه نویس از سخت افزار رایانه:
محل رایانه ذخیره فایل ها دائمی اطالعات و پوشه های آنها فضای ذخیره سازی باال محلهایی از هارد هستند. سرعت دستیابی کم اطالعات HARD درایوهای RAM محل ذخیره موقت اطالعات فضای ذخیرهسازی کم سرعت دستیابی اطالعات باال اطالعات برنامه های باز شده در رم قرار میگیرد و در هنگام ذخیره تغییرات این تغیینرات در هنارد ذخینره خواهد شد. علت و جود رم در رایانه جبران سرعت پایی دستیابی اطالعات در هارد است. CPU محل پردازش اطالعات دهد: انجام نویسی برنامه محیط در میتواند نویس برنامه که کارهایی 1( تعریف متغییر 2( تخصیص متغیر 3( گرفت متغیر از ورودی و نمایش آن در خروجی 4( مقایسه بی متغیرها 5( کنترل کنترل برنامه
1( تعریف متغیر : منظور از تعریف متغیر در زبان برنامه نویسی ای است که فضایی در ram رایانه برای یک متغیر در نظر گرفته شود. در زبان VB تعریف متغیر به صورت زیر است: نوع متغیر as نام متغیر Dim نام متغیر : نام متغیر را برای آن تعیی می کنیم که بعدا بتوانیم به آن اشاره کنیم که میتواند ترکیبی از حروف و اعداد باشد اما نباید با عدد شروع شود مثال نام متغیر می تواند a1 باشد یا s و یا ali و هر چیز دیگری. نوع متغیر: نوع متغیر را برای آن تعی می کنیم که کامپیوتر بداند چه اندازه فضا باید برای متغیر ما در ram در نظر بگیرد که برای اعداد صحیح به جای نوع متغیر می نویسیم integer برای اعداد اعشاری می نویسیم double و برای متغیر از نوع حروف )کاراکتر( می نویسیم string برای مثال عبارت dim k1 as double زمانی که در برنامه اجرا شود کامپیوتر فضایی به اندازه ی double در ram خود برای متغیر اعشاری k1 در نظر می گیرد.
2( تخصیص متغیر منظور از تخصیص متغیر قرار دادن مقدار در متغیر است مثال اگر ما در یک برنامه بنویسیم: Dim a as double A=3.14 در زمان اجرای برنامه در خط اول متغیر a از نوع اعشاری تعریف میشود در زمان تعریف یک متغیر مقدار اولیه که برای آن در نظر گرفته می شود مقدار صفر است یعنی وقتی خط اول اجرا میشود کامپیوتر یک فضا به اندازه ی اعداد اعشاری )double( در ram در نظر می گیرد که مقدار اولیه ی آن صفر است حال زمانی که خط دوم اجرا می شود رایانه عدد 3.14 را در متغیر a قرار میدهد. پس برای انجام عمل تخصیص یا مقدار دهی متغیر ما از عالمت = در زبان برنامه نویسی استفاده می کنیم ای عالمت با عالمت تساوی که در زبان ریاضی استفاده می شود متفاوت است که در ادامه متوجه می شوید. طرف دوم عالمت = در زبان برنامه نویسی می تواند یک محاسبه ی ریاضی بی یک یا چند متغیر باشد مثال عبارت a=a+1 در زبان برنامه نویسی یعنی حاصل 1+a را در a قرار بده اما از نظر ریاضی عبارت a=a+1 اشتباه است. مثال دیگر: عبارت 2/(4 + b2 =b a1) * در زبان برنامه نویسی یعنی متغیر a1 را در متغیر b2 ضرب ک و بعد با عدد 4 جمع کرده سپس حاصل را بر 2 تقسیم کرده جواب را در متغیر b بریز. دقت کنیم که در زبان برنامه نویسی b2 به معنای b x 2 نیست b2 کال نام یک متغیر است و اگر در زبان برنامه نویسی بخواهیم b x 2 اجرا شود باید بنویسیم 2*b و نه b2
از ورودی با عبارت Console.Readline() = نام متغیر 3( گرفت متغیر از ورودی و نمایش آن در خروجی: در زبان VB و در پلت فرم console گرفت متغیر و نمایش متغیر در خروجی با عبارت (نام متغیر) Console.WriteLine نوشته می شود. مثال برنامه ای بنویسید که یک عدد اعشاری را از ورودی بگیرد و به توان خودش برساند و در خروجی نمایش دهد. حل: Dim a as double A = Console.Readline() A = a ^ a Console.WriteLine(a) توضیح برنامه: خط اول متغیر a را تعریف می کند تا فضایی به اندازه ی double برای عددی که کاربر وارد می کند در ram در نظر گرفته شود خط دوم عددی که کاربر وارد می کند را از ورودی می گیرد خط سوم آن عدد را به توان خودش میرساند و در خودش می ریزد خط چهارم حاصل را نمایش می دهد.
4( مقایسه ی بی متغیر ها: وقتی ما دو مقدار را با هم مقایسه می کنیم حاصل به صورت صحیح یا غلط است مثال وقتی ما وزن فیل را با وزن شیر مقایسه می کنیم اگر بگوییم وزن فیل کمتر از وزن شیر است غلط است و اگر بگوییم وزن شیر کمتر از وزن فیل است صحیح است کامپیوتر هم می تواند مقدار دو یا چند متغیر را با هم مقایسه کند و اگر حاصل ای مقایسه درست باشد کارهایی را انجام دهد و اگر حاصل ای مقایسه غلط باشد کارهای دیگری را انجام دهد. مقایسه در زبان vb با دستور شرطی if صورت می گیرد که حالت کلی آن را با یک مثال شرح می دهیم. مثال: برنامه ای بنویسید که عدد صحیحی را از ورودی دریافت کند اگر ای عدد برابر 1 باشد عبارت one را چاپ کند برای عدد 2 عبارت tow برای عدد 3 عبارت three و برای عدد بیشتر از 3 عبارت more than three را چاپ کند. توضیح: خط اول متغیر ش را تعریف می کند. خط دوم متغیر a را از ورودی دریافت می کند خط سوم میگوید اگر متغیر a برابر 1 باشد سپس )انگاه( خط چهارم اجرا شود خط چهارم عبارت one را چاپ می کند خط پنجم می گوید در غیر اینصورت )یعنی 1=a نبود( اگر 2=a بود خط شش اجرا شود و... خط آخر end if پایان دستور if را اعالم می کند. Dim a As Integer a = Console.ReadLine() If a = 1 Then Console.WriteLine("one") ElseIf a = 2 Then Console.WriteLine("tow") ElseIf a = 3 Then Console.WriteLine("three") ElseIf a > 3 Then Console.WriteLine("more than tree") End If
دستور if در حالت کلی: اگر برای یک پدیده که دارای n کنیم. حالت است بخواهیم برای هر حالت کارهایی صورت گیرد از ای دستور استفاده می پدیده حالت برای ای کار در VB می نویسیم: 3 حالت 2 حالت 1 حالت...... n کارهای 3 کارهای 2 کارهای 1 کارهایn حالت If 1 Then کارهای 1 ElseIf حالت 2 then کارهای 2 ElseIf حالت 3 then کارهای 3... ElseIf حالتn-1 then کارهایn-1 Else کارهایn End if
حالت If 1 Then کارهای 1 End if اگر تنها یک حالت داشته باشیم دستور if را میتوانیم به صورت زیر بنویسیم. و یا اینکه با قرار دادن عالمت : بی کارها دستور if را در یک خط بنویسیم.... کار 2 : کار 1 Then حالت If 1 5( کنترل کنترل برنامه : پنجمی و آخری کاری که رایانه در زمان برنامه نویسی می تواند انجام دهد کنترل کنترل برنامه است.زمانی که یک برنامه ی نوشته شده اجرا می شود رایانه برنامه را به صورت خط به خط )دستور به دستور( از باال به پایی اجرا می کند. منظور از کنترل برنامه محل اجرای برنامه در هر لحظه است. منظور از کنترل کنترل برنامه ای است که می توان کنترل برنامه را از یک خط به خط دیگر انتقال داد مثال برنامه تا خط 5 اجراشده حال می توان با دستورهایی کنترل برنامه را به خط 3 یا خط 12 و یا هر خط دیگری انتقال داد. ای قسمت در بخش حلقه ها توضیح داده خواهد شد.
نحوه ی نوشت برنامه در محیط کنسول: 1( برنامه ی visual studio 2005 یا ورژن باالتر را نصب نمایید. 2( در منوی استارت ویندوز تایپ نمایید visual studio تا برنامه پیدا شود. 3( برنامه ی visual studio را اجرا نمایید و صبر کنید تا صفحه ی start آن باز شود. در شکل 1 صفحه ی start ویژوال استودیو 2010 را مشاهده می کنید. شکل start 1- صفحه ی ویژوال استودیو 2010
2 Project نحوه ی نوشت برنامه در محیط کنسول: 4( از منوی فایل گزینه ی New و بعد گزینه ی را انتخاب نمایید. شکل شکل 2- انتخاب پروژه ی جدید
3 نحوه ی نوشت برنامه در محیط کنسول: 5( حال پنجره ی new project باز میشود در ای پنجره مطابق شکل عمل نمایید. )1 روی visual basic کلیک نمایید. 2( این گزینه را انتخاب نمایید 3( نام پروژه را تعیین کنید. )4 روی ok کنید. کلیک محل ذخیره ی پروژه را انتخاب نمایید. )5 شکل 3- انتخاب پروژه ی جدید
نحوه ی نوشت برنامه در محیط کنسول: 6( حال محیط کنسول باز می شود و شما می توانید کدهای خود را در محل مشخص شده در شکل 4 بی enter کلیک کرده sub main() قرار دهید. برای ای کار در انتهای خط end sub و sub main() حال برنامه ی خود را تایپ نمایید. خطوط را بزنید محل نوشتن کدهای برنامه شکل 4- محیط کنسول 7( قبل از اجرای برنامه اگر زیر کدی از برنامه خطی به رنگ آبی کشیده شده باشد یعنی اشکال تایپی و یا ساختاری در برنامه وجود دارد مثال اگر یک دستور if شامل عبارت end if نباشد برنامه زیر عبارت if خط آبی می کشد. تمامی اشکاالت را برطرف کنید. برای تست و اجرای برنامه از کلید ترکیبی Ctrl + F5 استفاده کنید.
2 مثال( جواب برنامه ای در محیط کنسول بنویسید که ضرایب معادله را حساب کرده در خروجی نمایش دهد. و کند دریافت را درجه معادله
در این دستور ما برای اینکه متغیر x1 و x2 را در یک خط در خروجی نمایش دهیم طوری که بین آنها مقداری فاصله باشد تا به هم نچسبند از عملگر اتصال رشته ی & استفاده کرده ایم و متغیر x1 را به رشته ی و آن را به متغیر x2 اتصال دادیم. )اگر متوجه نشدید نکات 7 و 8 تمرینات ص 86 را بخوانید.(
86 کتاب: تمری های صفحه ی
نکات تمرینات صفحه 86: VB عدد a مضرب عدد b است اگر باقی مانده تقسیم عدد a بر عدد b باقی مانده تقسیم a/b را به صورت a mod b نشان می دهند. برای تعویض محتوای دو متغیر a و b به صورت زیر عمل می کنیم: با استفاده از متغیر سوم c زبان در شود. صفر برابر.1.2 الف( متغیر سوم از استفاده بدون ب( عبارت از توان می همچنی 3. نمایش خارج قسمت تقسیم a بر b در VB به صورت Int(a/b) است. 4. نماد مخالف در VB به صورت <> است. 5. متد FLOOR کالس MATH برای نمایش جزء صحیح استفاده می شود INT هم برای اینکار بهره جست)مانند زیر(.
نکات تمرینات صفحه 86: 6. متدهای پرکاربرد کالس :Math متد Math.PI Math.E Math.Exp(x) Math.Abs(a) Math.Pow(a, b) Math.Sqrt(a) Math.Log10(a) Math.Log(a) Math.Round(a) Math.Floor(a) توضیح عدد پی) π( عدد نپر (e) e x a a b a log 10 a ln a روند a a
7. بنرای نمنایش حنروف و کلمنات )رشنته( بایند آنهنا را بنی دابنل کوتیشن قنرار داد. منثال Console.WriteLine(" Hello! " ) 8.برای اتصال چند متغیر یا رشته به هم و نمایش آنها در یک سطر از عملونند اتصنال رشنته ی & استفاده می کنیم. مثال عبارت (b Console.WriteLine(a & "is" & متغیر a را بنه رشنته ی is و سپس به متغیر b اتصال داده و نمایش می دهد. 9. برای نوشت چند خط از برنامه در یک خط بی خطوط از عالمت : استفاده می شود. مثال: 10. برای خالصه نویسی در تعریف چند متغیر بی متغیرها از عالمت, استفاده می شود. مثال: 11. برای تعریف متغیر از نوع رشته )حروف اعداد و نمادها( از عبارت dim a as string استفاده می شود و برای تعریف متغیر از نوع صحیح از عبارت dim a as integer 12. برای ریخت یک متغیر عددی مثل x بنه متغینر از ننوع رشنته مثنل s از عبنارت s=str(x) استفاده می شود و بلعکس برای ریخت یک متغیر رشته مثال s که شامل تنها عدد باشند در ینک متغیر عددی مثل x از عبارت x=val(s). 13. برای نوشت عبارات توضیحی قبل از آن عبارت از عالمنت کوتیشن اسنتفاده میشنود عبنارات توضیحی کمپایل نمیشوند و تاثیری در برنامه ندارند مثال: Dim ass, b, c, n As DoubleDim a, b, c, n Doue
از تمری حل 2 تمرینات صفحه 86: نمونه خروجی برنامه
از تمری حل 3 تمرینات صفحه 86: نمونه خروجی برنامه
:86 از تمری حل 8 تمرینات صفحه نمونه 1 از خروجی برنامه نمونه 2 از خروجی برنامه
برنامه(: کنترل )کنترل حلقه ها )1 حلقه ی for next عبارات داخل براکت یعنی اختیاری یکی از راه های ایجاد حلقه استفاده از عبارت for next است که در VB به صورت فرمت باال نوشته می شود. زمانی که کنترل برنامه به خط عبارت for میرسد مقدار start را در متغیر counter قرار داده بعد بررسی میکند که آیا شرط counter<= end صحیح است یا نه در صورت صحیح بودن آن: خطوط بعد از خط for را اجرا میکند تا اینکه به خط next برسد حال به اندازه ی متغیر step به counter می افزاید و دوباره به خط for برمیگردد و حلقه ادامه می یابد. درصورت غلط بودن آن: کنترل برنامه به خط بعد از next میرود. مثال: برنامه ای بنویسید که مجموع اعداد یک تا 100 را نمایش دهد.
برنامه(: کنترل )کنترل حلقه ها )2 حلقه ی do loop حلقه ی for next زمانی استفاده می شود که تعداد تکرار حلقه مشخص باشد اما اگر در برنامه ایی تعداد تکرار مشخص نیست میخواهیم تا زمانی که شرایطی (condition) برقرار است کارهای حلقه انجام شود از حلقه ی do loop استفاده می کنیم. ما مثال و فرمت های حلقه ی do loop در :VB 1 2 While در در اینجا یعنی تا وقتی که شرط برقرار است حلقه اجرا شود. در فرمت 1 زمانی که کنترل برنامه به عبارت do میرسد شرایط را بررسی می کند و در صورت برقرار بودن شرایط جمالت درون do برگشته و شرایط را بررسی حلقه اجرامیشود تا اینکه کنترل برنامه به عبارت loop برسد حال کنترل برنامه دوباره به خط صورت کنترل برنامه خطوط بعد از خط loop را اجرا می کند. روند ادامه می یابد تا اینکه شرایط برقرار نشود در ای میکند و ای در فرمت 2 زمانی که کنترل برنامه به عبارت do میرسد جمالت درون حلقه اجرامیشود تا اینکه کنترل برنامه به عبارت loop برسد حال کنترل برنامه شرایط را بررسی می کند و در صورت برقرار بودن شرایط کنترل برنامه دوباره به خط do برگشته و جمالت صورت کنترل برنامه خطوط بعد از خط روند ادامه می یابد تا اینکه شرایط برقرار نشود در ای درون حلقه را اجرا می کندو ای loop را اجرا می کند.
برنامه(: کنترل )کنترل حلقه ها مثال: با استفاده از حلقه do loop برنامه ای بنویسید که جمع اعداد یک تا 100 را نشان دهد. حل:
تمرینات صفحه 176 کتاب :
176 از حل قبل باید که مهمی نکات تمرینات صفحه باشیم بلد داریم: کلی در حالت (1 S = b i=a f(i) وقتی کنترل برنامه for i=a to b s = s + f(i) Next i به این محل برسد مقدار اس برابر مجموع است. معادل s در نویسی VB برنامه زبان اعداد 4 مثال: تمری 1 ص 176 برنامه ای بنویسید که جمع رقمی مضرب 3 را حساب کرده و چاپ نماید. 1002 اولی عدد 4 رقمی مضرب 3 و 9999 هم آخری عدد 4 رقمی مضرب بر 3 است.
3 4 تمری 1 ص 176 برنامه ای بنویسید مضرب رقمی اعداد که جمع نماید. و چاپ کرده را حساب خروجی برنامه 2( در برخی مسائل نیاز است که تعداد ارقام یک متغیر را پیدا کنیم. تعداد ارقام یک متغیر برابر است با جزء لوگاریتم در مبنای 10 آن متغیر بعالوه یک در نتیجه اگر Tr تعداد ارقام متغیر a باشد داریم: صحیح tr = Int(Math.Log10(a)) + 1 3( در برخی مسائل نیاز است که رقم خاصی از یک متغیر را جدا کنیم و در متغیر دیگری بریزیم. در حالت کلی اگر Rn رقم n اوم از متغیر a باشد داریم: Rn = Int(a / (10 ^ (n - 1))) Mod 10 می شود: نتیجه فرمول ای از = R1 = a mod 10 رقم اول = R2 = int( a / 10 ) mod 10 رقم دوم = R3 = int( a / 100 ) mod 10 رقم سوم = R4 = int( a / 1000 ) mod 10 رقم چهارم...
مثال: تمری 5 ص 176 برنامه ای بنویسید که عدد طبیعی a را بخواند و تعیی کند که آیا ای عدد بر مجموع ارقامش بخش پذیر است یا نه حل: توضیح: ابتدا باید بدانیم تعداد ارقام عدد (tr) a را تعیی کنیم. بعد در یک حلقه ی for next که به تعداد ارقام عدد a تکرار میشود باید ارقام عدد )rn ( a را جدا کنیم و با استفاده از فرمول s=s+rn مجموع ارقام را بدست آوریم حال خارج حلقه اگر عدد a بر s )مجموع ارقام( بخش پذیر باشد عبارت = 0 s a mod را چاپ میکنیم و در غیر ای صورت عبارت <> 0 s.a mod پس داریم: نمونه خروجی 12340=a وارد شود. که وقتی دقت کنیم که متغیر حلقه باید n باشد چرا که ما می خواهیم ارقام را در حلقه جدا کنیم وقتی حلقه اجرا میشود خط 8 در هربار اجرای حلقه یکی از ارقام a را جدا میکند ابتدا رقم اول بعد رقم دوم تا رقم آخر که n=tr میشود خط 9 هم در هر بار اجرای حلقه رقم جداشده را با مقدار مجموع ارقام جداشده ی قبل جمع میکند در حقیقت با توجه به نکته ی یک f(i) در اینجا همان rn است درنتیجه خارج حلقه s برابر مجموع ارقام است.
اسکناس یک کردن 1000 اسکناس به تومانی 4( حلقه های تو در تو: ای نکته را با حل تمری 9 توضیح می دهیم: تمری 9 ص 176: برنامه ای بنویسید که کلیه ی حاالت ممک برای خرد های 50 تومانی 100 تومانی 200 تومانی و 500 تومانی را چاپ نماید.
1000 تمری 9 ص 176: برنامه ای بنویسید که کلیه ی حاالت ممک های 50 تومانی 100 تومانی 200 تومانی و 500 تومانی را چاپ برای نماید. اسکناس یک کردن خرد اسکناس به تومانی از آندرالین برای شکستن یک خط به دو خط استفاده میشود دقت نمایید که در اینجا 4 حلقه ی تو در توی for next داریم و خطوط 10 تا 13 که بی ای حلقه ها قرار گرفته 20*5*10*2 مرتبه اجرا میشود.
Project نحوه ی نوشت برنامه در پلت فرم :Windows Form Application 1( بعد از اجرای visual studio از منوی فایل گزینه ی New و بعد گزینه ی را انتخاب نمایید. شکل 1 شکل 1- انتخاب پروژه ی جدید
نحوه ی نوشت برنامه در پلت فرم :Windows Form Application 2( حال پنجره ی new project باز میشود در ای پنجره مطابق شکل 2 عمل نمایید. رویbasic visual کلیک نمایید. )1 2( این گزینه را انتخاب نمایید 3( نام پروژه را تعیین کنید. محل ذخیره ی پروژه را انتخاب نمایید. )4 )5 روی ok کلیک کنید. شکل 2- انتخاب پروژه ی جدید
نحوه ی نوشت برنامه در پلت فرم :Windows Form Application 3( حال وارد محیط Windows Form شده ایم. در ای محیط سه پنجره ی مهم داریم که در شکل 3 مشخص شده است. پنجره ی toolbox پنجره ای که نمودار درختی از این پنجره برای آوردن فایل های برنامه را نشان کنترل های مختلف در پنجره می دهد ی فرم استفاده می شود. پنجره ی فرم رابط گرافیکی کاربر) GUI ( یا پنجره ای که برای برنامه ی خود طراحی می کنیم پنجره ای که خصوصیات هر کنترلی که در پنجره ی فرم در حالت انتخاب قرار دارد را نشان می دهد. و می توان آنها را تغییر داد. شکل 3- محیط ویندوز فرم
سوال: در محیط ویندوز فرم کدهای برنامه ی خود را کجا قرار دهیم جواب: چون محیط ویندوز فرم یک محیط رویدادگرا است لذا ساده تری راه ای است که برنامه ی خود را در رویداد کلیک یک دکمه ( button ) بنویسیم یعنی ساده تری راه ای است که برنامه ی ما با کلیک روی یک button اجرا شود برای ای کار از پنجره ی toolbox روی button دابل کلیک نمایید با ای کار یک دکمه به نام button1 در فرم ایجاد می شود اگر روی ای دکمه )button1( دابل کلیک نمایید وارد محیط کد نویسی می شوید. شکل 4 1( روی button دابل کلیک نمایید 2( button1 در فرم 1 ایجاد می شود با دابل کلیک روی ای کنترل وارد محیط برنامه نویسی می شویم به شکل 5 نگاه کنید. شکل 4- ایجاد button
مطابق شکل 5 کدهای خود را بی خطوط button1_click private sub و end sub اجرای برنامه کلید f5 را فشار دهید. برای بنویسید. وقتی روی button1 دابل کلیک نمایید وارد ای محیط می شوید کدهای خود را در ای محل قرار دهید تا در زمان اجرای برنامه وقتی روی button1 کلیک شود اجرا شوند button1 شکل 5- رویداد کلیک
گرفت متغیر از ورودی و نمایش متغیر در خروجی در محیط :Windows Form Application ) عنوان, مت inputbox( = نام متغیر a( گرفت متغیر از ورودی 1- استفاده از دستور :inputbox ای دستور را به ای صورت می توان نوشت نمونه ی استفاده از inputbox در شکل زیر می بینید. ) نام متغیر Msgbox( b( نمایش متغیر در خروجی 1- استفاده از دستور :msgbox ای دستور را به ای صورت می توان نوشت
) نام متغیر Listbox1.items.add( b( نمایش متغیر در خروجی 2- استفاده از کنترل :listbox ای دستور را به ای صورت می توان نوشت Msgbox زمانی مناسب است که تعداد خروجی ها کم باشد اگر تعداد خروجی ها زیاد بود از کنترل listbox برای نمایش خروجی استفاده می کنیم. 1000 مثال: برنامه ای بنویسید که اعداد 1 تا را در خروجی نمایش دهد. ابتدا یک button در فرم ایجاد میکنیم سپس یک listbox هم به آن می افزاییم button و listbox ای که ایجاد کرده ایم را در فرم مرتب میکنیم مانند تصویر حال روی button1 دابل کلیک کرده و در محیط کدنویسی مانند شکل 6 برنامه را می نویسیم.
شکل 6- کدهای برنامه ی نمایش اعداد 1 تا 1000 1 تا 1000 در listbox button1 برای اجرا کلید f5 مانند شکل زیر. را می زنیم حال اگر روی کلیک کنیم اعداد لیست خواهد شد.
نکته: تمام تمریناتی که در محیط کنسول انجام دادیم را می توانیم به محیط ویندوز فرم هم انتقال دهیم برای ای منظور تنها کافی است مانند مثال قبل یک listbox و یک button در فرم قرار دهیم و روی button1 دابل کلیک کرده و در محل مربوطه کدهای برنامه ی کنسول مان را کپی کنیم و دو تغییر زیر را انجام دهیم. a = Console.readline() تبدیل شود به a = inputbox( ) Console.writeline( a ) تبدیل شود به listbox1.items.add( a)
ادامه ی تمرینات صفحه ی 176: از ای به بعد تمرینات را در محیط ویندوز فرم انجام می دهیم برای تمامی تمرینات یک button می کنیم و کدهای خود را در رویداد button1 می نویسیم. و یک listbox ایجاد 13 7 تمری 3( برنامه ای بنویسید که جمع اعداد مضرب 7 و 13 کوچکتر از 2000 را چاپ کند. حل: یک راه ساده ای است که در یک حلقه ی for next اعداد کوچکتر از 2000 را بسازیم سپس مضارب را از دل آن بیرون بکشیم در ای صورت می توانیم مجموع را با فرمول ساده ی s = s + i پیدا کنیم. و خروجی برنامه نکته: چون اعداد بخش پذیر بر 13 و 7 را می خواهیم از کلمه ی and در مقایسه استفاده کرده ایم. در ای مکان تنها i هایی می توانند حضور یابند که هم مضرب 13 و 7 باشند پس در پایان حلقه s برابر مجموع است.
تمری 6( برنامه ای بنویسید که اعداد سه رقمی که ارقام یکان و دهگان و صدگان مساوی دارند و ارقامشان فرد است را چاپ کند. حل: راه ساده ای است که ابتدا کلیه ی اعداد سه رقمی را با استفاده از حلقه ی for next بسازیم بعد با فرمولی که برای جدا کردن ارقام ذکر شد ارقام را جدا کنیم سپس با استفاده از دستور if اعدادی که شرایط مسئله را دارند شکار کنیم و در لیست باکس خود لیست نماییم. در ای تمری متغیر a3 برای اعداد سه رقمی r1 برای رقم یکان r2 برای رقم دهگان و r3 برای رقم صدگان تعریف شده اند. کلمات بعد از کوتیش به رنگ سبز در می آیند که به معنای عبارات توضیحی هستند و می توانند به هر زبانی باشند ای کلمات کمپایل نمی شوند. خروجی برنامه
تمری 8( برنامه ای بنویسید که مقلوب اعداد سه رقمی فرد را چاپ کند. حل: توضیح: مقلوب یعنی جای ارقام عدد قرینه شود یعنی مثال مقلوب عدد 123 می شود 321 در ای مسئله ما ابتدا کل اعداد سه رقمی را با حلقه ی for next می سازیم سپس اعداد فرد را جدا می کنیم و بعد ارقام را جدا می کنیم سپس با فرمول زیر مقلوب را می سازیم. = r1 * 100 + r2 * 10 + r3 مقلوب یک عدد سه رقمی = r3 * 100 + r2 * 10 + r1 یک عدد 3 رقمی
تمری 12( برنامه ای بنویسید که اعداد زوج 5 رقمی فاقد رقم صفر را چاپ کند مجموع را هم چاپ کند. حل: کل اعداد 5 رقمی را با حلقه ی for می سازیم بعد ارقام آنها را جدا می کنیم بعد با دستور if ارقام فاقد رقم صفر را شکار می کنیم حال آنها را نمایش می دهیم مجموع را هم با دستور ساده ی + s=s حساب می کنیم و مسئله را ویالن می اندازیم.
تمری 19( برنامه ای بنویسید که 50 عدد طبیعی را بگیرد سپس تعداد ارقام هر یک را مشخص و چاپ کند و مشخص کند چه تعداد ازای اعداد اول هستند. حل: همانطور که قبال گفتیم تعداد ارقام یک عدد برابر جزء صحیح لوگاریتم در مبنای آن عدد بعالوه ی یک است. عددی اول است که هیچ مقسوم علیه ی بی عدد 2 تا نصف آن عدد وجود نداشته باشد. در ای تمری aw برای عدد ورودی ta برای تعداد ارقام taa برای تعداد عدد اول و tam هم برای تعداد عدد مرکب در نظر می گیریم. نکته: برای خروج زود هنگام از حلقه ی for از عبارت exit for استفاده می کنیم. به علت نوشت exit for در خط 17 فکر کنید.
را دریافت کند سپس سری زیر را محاسبه و چاپ نماید. e x = 1+ x + x2 + x3 + x4 + + xn 1! 2! 3! 4! n! تمری 20( برنامه ای بنویسید دو عدد x و n حل: مطابق فرمول گفته شده برای مجموع عمل می کنیم.
آرایه ها: برای تعریف متغیر از نوع ماتریس از آرایه ها استفاده می شود. در VB برای تعریف ماتریس یک بعدی می نویسیم: نوع متغیر as (تعداد عنصر)نام متغیر Dim مثال برای تعریف یک ماتریس یک بعدی 10 عضوی از نوع اعشاری داریم Dim a(10) as double حال فرض کنید می خواهیم عنصر 4 روم از ماتریس a را برابر 3.14 قرار دهیم می نویسیم: a(4)=3.14 نکته: در VB با تعریف مثال (10)a یک ماتریس با 11 عنصر شامل (10)a a(0),a(1),a(2) اما ما برای سادگی کار عنصر (0)a را نادیده می گیریم. تعریف ماتریس دو بعدی سه بعدی و چند بعدی: در رم ایجاد می شود نوع متغیر ) as تعداد ستون,تعداد سطر)نام متغیر Dim نوع متغیر as (تعداد ارتفاع, تعداد ستون,تعداد سطر)نام متغیر Dim نوع متغیر as (تعداد بعد آخر,, تعداد بعد دوم,تعداد بعد اول )نام متغیر Dim
تمرینات صفحه 242
تمری 3( برنامه ای که جذر اعداد دورقمی فرد را در یک آرایه ذخیره و نمایش دهد. حل: در تعریف آرایه حتما باید تعداد عناصر آرایه مشخص باشد. در ای مسئله تعداد عناصر آرایه برابر تعداد اعداد دو رقمی فرد که می شود = 45 90/2
تمری 5( برنامه ای که نمرات میان ترم و پایان ترم 40 نفر دانشجو ی کالسی را دریافت کند سپس جمع ای دو نمره را برای هر دانشجو در آرایه ای ذخیره کند و میانگی کالس را نمایش دهد. حل: برای اینکه شماره ی دانشجو در عنوان پنجره ی inputbox نشان داده شود ای طور نوشتم می توان برای سادگی ای عبارت را حذف کرد.
تمری 8( برنامه ای که 20 عدد را دریافت کند در آرایه ای بریزد سپس جای عناصر 1 تا 10 را با 11 تا 20 عوض نماید به طوری که عنصر 1 به خانه ی 11 و عنصر 11 به خانه ی 1 برود تا... عنصر 10 به خانه ی 20 و عنصر 20 به خانه 10 برود. حل: برای تست اینکه برنامه درست نوشته شده یا نه دو عدد listbox ایجاد شده در یکی اعداد ارایه قبل از جابجایی و در یکی هم اعداد ارایه بعد از جابجایی نمایش داده شده اند. برای حل ای گونه مسائل باید فکر کرد به خطوط 13 تا 17 فکر کنید. در خط 13 تعداد تکرار حلقه ی 10 for بار انتخاب شده چون تعداد جابجایی مسئله 10 تا است. شما باید مهارت قرار دادن فرمول مناسب در اشاره ی صحیح به عناصر آرایه در یک حلقه )خطوط 13 تا 17 در ای تمری ) را با حل اینگونه تمری ها کسب کنید.
تمری 9( برنامه ای که 28 جمله از دنباله فیبوناچی را بسازد و در آرایه F بریزد سپس مربع اعداد تولیدی را در ارایه ی M ریخته و نسبت هر عضو از آرایه ی F به عضو متناظر آن از ارایه ی M از عضو دوم به بعد را چاپ بنماید. حل: توضیح: دنباله ی فیبوناچی دنباله ای است که جمله ی اول آن صفر است جمله ی دوم آن یک و جمالت بعدی از جمع دو جمله ی قبل بدست می آید پس:,0,1,1,2,3,5,8,13,21,34 = دنباله فیبوناچی
عدد را دریافت کند فاکتوریل هر کدام را محاسبه نماید و در یک ماتریس 9x8 به صورت سطری تمری 13( برنامه ای که 72 ذخیره نماید و نمایش دهد. برای اینکه فرمت خروجی برنامه به صورت روبه رو باشد ای گونه نوشته شد.
1 را بگیرد سپس یک ماتریس مربعی nxn ایجاد کند که قطر اصلی و فرعی آن و تمری 14( برنامه ای که عدد طبیعی n بقیه ی درایه ها صفر باشد. حل: در برنامه ی زیر خروجی به ازای 4=n است.
نمایش دهد. ( سوال 2 از میانترم سال 95 دکتر( 2( برنامه ای که تعداد اعداد زوج بی دو عدد ورودی از کاربر را در یک msgbox توضیح : در ای برنامه باید با یک حلقه ی for که از عدد ورودی کوچکتر شروع می شود و در عدد ورودی دوم پایان می یابد تمام اعداد بی دو عدد ورودی را پیمایش کنیم و درون حلقه با شرط if اعداد زوج را جدا کرده و با یک متغیر شمارنده مثال sh و نوشت جمله ی sh=sh+1 درون شرط اعداد زوج را بشماریم یادمان باشد که انتهای حلقه متغیر sh برابر تعداد اعداد زوج است. چون حلقه ی for ما باید از عدد کوچکتر به عدد بزرگتر بشمارد در صورتی که کاربر عدد دوم را کوچکتر از عدد اول وارد نماید باید اعداد جابجا شوند که خطوط 9 تا 14 ای کار را انجام می دهند.
را در آرایه ی به نام N فراخوانی کرده و ( سوال 3 از میانترم سال 95 دکتر( 3( برنامه ی که 10 عدد ذخیره شده در فایلی به نام a.text در درایو D مجموع اعداد مضرب 7 از ای اعداد را در یک listbox نمایش دهد. توضیح : دقت نمایید که فایل باید در مود input باز شود.
( سوال 4 از میانترم سال 95 دکتر( 4( برنامه ای که عددی را دریافت کند سپس اولی عدد مربع کامل بعد از آن را یافته به توان عدد ورودی رسانده در msgbox نمایش دهد. توضیح : شرط مربع کامل ای است که جذر عدد صحیح باشد در vb یعنی math.sqrt(a)=int(math.sqrt(a)) در ای مسئله ما برای تعیی مربع کامل ابتدا عدد ورودی را در mk قرار دادیم سپس در یک حلقه ی do یکی یکی به mk افزودیم اما ای افزایش باید تا وقتی که mk مربع کامل نیست ادامه یابد ای شرط را باید به صورت خط 10 بنویسیم.
( سوال 5 از میانترم سال 95 دکتر( 5( برنامه ای که تعداد نامعینی عدد دریافت کند سپس آنها را در یک آرایه ریخته بزرگتری و کوچکتری آنها را نمایش دهد. حل: برای اینکه تعداد نامعلومی داده دریافت کنیم نوع داده ی دریافتی را string انتخاب می کنیم و در یک حلقه ی do شرط اتمام حلقه را وارد کردن کلمه ی end توسط کاربر قرار می دهیم درون حلقه داده ها را دریافت می کنیم و یک متغیر شمارنده )در اینجا n( هم برای شمارش تعداد داده قرار می دهیم. چون می خواهیم داده ها را بعدا در یک آرایه بریزیم داده ها را درون یک listbox می ریزیم تا بعدا بتوانیم از انجا داده ها را فراخوانی کرده و درون ارایه بریزیم. برای خواندن یک داده از لیست باکس و قرار دادن آن در یک متغیر مانند a از عبارت (شماره جمله) a=listbox1.items استفاده میکنیم و چون شماره ی جمله از صفر شروع می شود در خط 15 عبارت 1-i را در جای شماره جمله قرار دادیم. تابع val متغیر رشته ای را به متغیر عددی تبدیل می کند.
( سوال 5 از میانترم بدون ریخت داده ها در آرایه سال 95 دکتر( 5( برنامه ای که تعداد نامعینی عدد دریافت کند سپس بزرگتری و کوچکتری آنها را نمایش دهد. حل: برای اینکه تعداد نامعلومی داده دریافت کنیم نوع داده ی دریافتی را string انتخاب می کنیم و در یک حلقه ی do شرط اتمام حلقه را وارد کردن کلمه ی end توسط کاربر قرار می دهیم درون حلقه داده ها را دریافت می کنیم.
ب.م.م و ک.م.م سوال: برنامه ای بنویسید که دو عدد را دریافت کرده و ب.م.م و ک.م.م آنها را چاپ نماید. حل: برای یافت ب.م.م دو عدد از روش نردبانی استفاده می کنیم در ای روش ما یک دنباله می سازیم به ای تر تیب که جمله ی اول برابر عدد بزرگتر جمله ی دوم برابر عدد کوچکتر است و جمله ی سوم به بعد برابر باقی مانده ی تقسیم دو جمله ی قبل است ای دنباله در جمله ای به عدد صفر میرسد در ای صورت یک جمله قبل از جمله ی صفر برابر ب.م.م است. ب.م.م /حاصلضرب دو عدد =ک.م.م برای یافت ک.م.م هم داریم: قطعه کد تعیی ب.م.م چون حلقه تا زمانی ادامه دارد که r) باقی مانده( مخالف صفر است و چون در ابتدا r صفر است قبل از ورود به حلقه 1=r قرار می دهیم. درون حلقه هم بعد از محاسبه ی باقی مانده باید جمالت جدید را برای محاسبه ی باقی مانده ایجاد کنیم مطابق خط 15 روی آن فکر کنید.
سوال 5 از نمونه سواالت دکتر برای بردن یک عدد به مبنای دیگر مثال مبنای 2 به ای صورت عمل می کنیم که رقم یکان عدد در مبنای 2 می شود باقی مانده ی تقسیم عدد بر 2 رقم ده گان می شود باقی مانده ی خارج قسمت تقسیم قبلی بر 2 وبرای ارقام بعدی همینطور تقسیمات را تا وقتی که خارج قسمت مخالف صفر است ادامه می دهیم به ای ترتیب برنامه ی ما می شود: خروجی به ازای عدد 15
سوال 8 از نمونه سواالت دکتر
سوال 9 از نمونه سواالت دکتر
الگوریتم های مرتب سازی: دو الگوریتمی که دکتر درس داده اند یکی به نام الگوریتم انتخابی است و دیگری به نام الگوریتم حبابی تصویر توضیح ای دو الگوریتم در کتاب به صورت زیر است.
مثال: سوال 4 از نمونه سواالت دکتر حل به روش انتخابی:
مثال: سوال 4 از نمونه سواالت دکتر حل به روش حبابی: قطعه کد صعودی سازی به روش حبابی برای n داده روی آن فکر کرده و آن را به خاطر بسپارید.