لذت برنامه نویسی!

!The Joy of Programming
by Babak Mahmoudabadi

نویسندگان

۲۱ مطلب توسط «بابک محمودآبادی» ثبت شده است

  • ۰
  • ۰

1-برنامه ای بنویسید که اعداد 1 تا 100 را چاپ کند.

2-برنامه ای بنویسید که اعداد 100 تا 1 را چاپ کند.

3-برنامه ای بنویسید که اعداد زوج بین 1 تا 100 را چاپ کند.

4-برنامه ای بنویسید که مجموع اعداد 1 تا 100 را محاسبه کرده و نمایش دهد.

5-برنامه ای بنویسید که مجموع اعداد زوج 1 تا 100 را محاسبه کرده، نمایش دهد.

6-برنامه ای بنویسید که 10 عدد را از ورودی دریافت کرده مجموع آنها را چاپ کند.

7-برنامه ای بنویسید که 10 عدد را از وروذی دریافت کرده میانگین آنها را چاپ کند.

8-برنامه ای بنویسید که 10 عدد را از وروذی دریافت کرده بزرگترین آنها را چاپ کند.

9-برنامه ای بنویسید که 10 عدد را از وروذی دریافت کرده کوچکترین آنها را چاپ کند.

10-برنامه ای بنویسید که 10 عدد را از ورودی دریافت کرده تعداد اعداد زوج دریافت شده را نمایش دهد.




  • ۰
  • ۰

 حکم FOR-NEXT برای ساخت حلقه تکرار نامحدود بکار می رود. استفاده از FOR-NEXT  بسیار ساده تر از پیاده سازی حلقه با  IF-GOTO است ، همچنین باعث خوانایی و خلاصه شدن برنامه می شود. به مثال زیر توجه کنید:

10 FOR I=1 TO 5

20 PRINT "HELLO"

30 NEXT

همانطور که مشاهده می کنید حلقه FOR نیز دارای یک متغییر شمارنده است. در خط 10 مقدار اولیه و پایانی شمارنده I تعیین شده است. در این مثال نیز "PRINT "HELLO دستوری است که باید تکرار شود. دستور NEXT نشان دهنده انتهای حلقه بوده و به کامپیوتر می گوید که مقدار شمارنده را یک واحد افزایش داده و به شرط نرسیدن به مقدار نهایی حلقه را از ابتدا تکرار کند. پیاده سازی برنامه بالا با IF-GOTO  به شکل زیر است:

10 I=1

20 PRINT "HELLO"

30 I=I+1

40 IF I <= 5 THEN GOTO 20

نتیجه اجرای هر دو برنامه:

HELLO

HELLO

HELLO

HELLO

HELLO





  • ۰
  • ۰

در بعضی مواقع نیاز داریم یک یا چند دستور را چندین بار اجرا کنیم. در این شرایط باید یک حلقه تکرار بسازیم.

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

به مثال زیر توجه کنید:

10 PRINT "HELLO"

20 GOTO 10

در این مثال "PRINT "HELLO دستوری است که باید تکرار شود.اگر برنامه فوق را اجرا کنید کلمه HELLO تا ابد چاپ خواهد شد زیرا پس از هر بار چاپ HELLO در خط 10،  دستور GOTO در خط بعد به کامپیوتر می گوید که دوباره به خط 10 رفته و مجددا HELLO را چاپ کند و این کار تا بی نهایت بار تکرارخواهد شد. برای توقف اجرای برنامه دکمه ESC را فشار دهید. برای ادامه برنامه دستور CONT را وارد کنید.


حال می خواهیم تنها 5 بار کلمه HELLO را چاپ کنیم یا به عبارت دیگر حلقه فقط 5 بار تکرار شود. برنامه را به شکل زیر اصلاح می کنیم:

10 I=1

20 PRINT "HELLO"

30 I=I+1

40 IF I <= 5 THEN GOTO 20

همانطور که مشاهده می کنید برای کنترل تعداد تکرار حلقه از متغییر I به عنوان شمارنده استفاده شده است. 

شمارنده I در خط 10 قبل از اجرای حلقه با عدد یک مقدار دهی شده است و پس از هر بار چاپ HELLO در خط 30 یک واحد افزایش پیدا می کند.

در خط 40 درصورتی که مقدار شمارنده I کوچکتر یا مساوی 5 باشد دستور GOTO 20 اجرا شده و حلقه از ابتدا شروع می شود. درصورتی که مقدار I بزرگتر از 5 باشد برنامه خاتمه میابد.


پس برای ساخت یک حلقه تکرار نامحدود حتما به موارد زیر نیاز داریم:

1- متغییری برای شمارش تعداد تکرار (I در مثال قبل)

2- تعیین مقدار اولیه شمارنده (I=1 در مثال قبل)

3- افزایش مقدار شمارنده پس از هر بار اجرای دستور یا دستورات داخل حلقه  (I=I+1 در مثال قبل)

4- تکرار حلقه تازمانی که شمارنده از مقدار نهایی بزرگتر نباشد(IF I <= 5 THEN GOTO 20 در مثال قبل)


  • ۰
  • ۰

ComputerSaz Demo by Hamed Ranjbarnavazi
http://csdb.dk/release/?id=120670

https://www.facebook.com/C64PERSIAN-505097052908080/

 


  • ۰
  • ۰

 این برنامه با دریافت قد و وزن ، شاخص تناسب اندام(BMI)  را محاسبه کرده و براساس مقدار BMI  پیامی مبنی بر لاغری، وزن متعادل، اضافه وزن و چاقی را نمایش می دهد. 

به عنوان مثال در صورتی که مقدار BMI بزرگتر یا مساوی 25 و (AND) کوچکتر از 30 باشد پیام شما اضافه وزن دارید را هستید را نمایش می دهد. دراینجا "AND" یک عملگر منطقی می باشد و به کامپیوتر می گوید که نمایش پیام فقط باید درصورت برقراری هر دو شرط انجام شود.  


10 INPUT "ENTER YOUR WEIGHT (KG)"; WEIGHT

20 INPUT "ENTER YOUR HEIGHT (METER)"; HEIGHT

30 BMI = WEIGHT / (HEIGHT ^ 2)

40 PRINT

50 PRINT "YOUR BMI IS ="; BMI

60 IF BMI < 18.5 THEN PRINT "YOU ARE UNDER WEIGHT"

70 IF BMI >= 18.5 AND BMI<25 THEN PRINT "YOUR WEIGHT IS  NORMAL"

80 IF BMI >=25 AND BMI<30 THEN PRINT "YOU ARE OVER WEIGHT"

90 IF BMI >= 30 THEN PRINT "YOU ARE OBESE"





  • ۰
  • ۰

بعضی اوقات نیاز داریم اجرای یک یا چند دستور را منوط به برقراری شرط مشخصی نماییم در این مواقع حکم IF-THEN مورد استفاده قرارمی گیرد. 

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

10 INPUT "ENTER DAILY WAGE"; WAGE

20 INPUT "ENTER TOTAL DAYS" ; DAYS

30 INPUT "ENTER TAX EXEMPTION"; EXEMPT

40 IMPURE = WAGE * DAYS

50 INSURANCE = IMPURE * 0.07

60 TAX = 0

70 IF IMPURE  > EXEMPT THEN TAX = (IMPURE - EXEMPT) * 0.1

80 SALARY = IMPURE - INSURANCE - TAX 

90 PRINT

100 PRINT "IMPURE  SALARY ="; IMPURE 

110 PRINT "INSURANCE  ="; INSURANCE 

120 PRINT "TAX ="; TAX 

130 PRINT "SALARY ="; SALARY 




همانطور که می دانید حقوق تا سقف مشخصی از مالیات معاف می باشد. به عنوان مثال در سال 94 حقوق کمتر از مبلغ 1150000 تومان معاف از مالیات می باشد و به مابقی آن 10 در صد مالیات تعلق میگرد.

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

به عبارت دیگر TAX تنها زمانی محاسبه می شود که مقدار متغییر IMPURE از مقدار متغییر EXEMPT بزرگتر باشد.

60 TAX = 0

70 IF IMPURE  > EXEMPT THEN TAX = (IMPURE - EXEMPT) * 0.1


پرسش: در خط 70 دلیل استفاده از پرانتز در عبارت محاسباتی را توضیح دهید.

  • ۰
  • ۰

چند تمرین ساده

1- برنامه ای بنویسید که دو عدد از ورودی دریافت کرده، مجموع و میانگین آنرا محاسبه کرده، نمایش دهد.

10 INPUT "ENTER FIRST NUMBER"; N1

20 INPUT "ENTER SECOND NUMBER"; N2

30 SUM = N1 + N2

40 AVG = SUM / 2

50 PRINT "SUM ="; SUM

60 PRINT "AVERAGE = "; AVG

2-برنامه ای بنویسید که طول و عرض یک مستطیل را از ورودی دریافت کرده، محیط و مساحت آنرا محاسبه کرده، نمایش دهد.

3-برنامه ای بنویسید که اندازه شعاع یک دایره را از ورودی دریافت کرده، محیط و مساحت آنرا محاسبه کرده، نمایش دهد.

  • ۰
  • ۰

متغییر چیست؟

متغییر قسمتی از حافظه اصلی کامپیوتر است که موقتا برای ذخیره یک مقدار مورد استفاده می گیرد. متغییر ها را می توان در عبارت محاسباتی بکار برد و دریافت و چاپ کرد.

هر متغییر داری سه مشخصه اصلی است:

1- نام: به عنوان شناسه ای منحصر به فرد برای دسترسی به محتوای متغییر بکار می رود.

2- نوع داده: مشخص کننده نوع مقدار ذخیره شده در متغییر می باشد.

در زبان بیسیک سه نوع داده وجود دارد:

  • حرفی یا رشته ای (Text String) مثل: "HELLO"
  • عدد صحیح (Integer) مثل: 255
  • عدد اعشاری (Floating Point) مثل: 3.141592

در زبان بیسیک از علامت $ و % به ترتیب برای تعیین نوع داده حرفی و عدد صحیح استفاده می شود و اعداد اعشاری فاقد علامت می باشند.

3- گنجایش: در مورد اعداد حداقل و حداکثر مقدار و در مورد حروف طول کلمه ای است که می توان درون متغییر ذخیره کرد. 

تحقیق: در مورد گنجایش انواع متغییر ها در بیسیک جستجو کنید.

به مثال زیر توجه کنید:

10 NAME$="HELLO"

20 A%=255

30 PI=3.141592

40 PRINT NAME$, A%, PI

در خط 10 کلمه HELLO درون متغییری با نام NAME و از نوع حرفی ذخیره می شود.

در خط 20 مقدار 255 درون متغییری با نام A و از نوع عدد صحیح ذخیره می شود.

در خط 30 مقدار 3.141592 درون متغییری با نام PI و از نوع عدد اعشاری ذخیره می شود.

در خط آخر مقادیر هر سه متغییر چاپ می شود.


توجه کنید که علامت = به معنای ذخیره کردن و جایگزینی می باشد و معنای تساوی ندارد. به مثال زیر توجه کنید:

10 A=100

20 A=A+500

30 PRINT A

RUN

600

در خط 20 مقدار فعلی متغییر A که 100 می باشد با مقدار 500 جمع شده و حاصل یعنی 600 در خود متغییر A ذخیره می شود. 

پرسش: در مثال بالا اعداد 100 و 500 و 600 صحیح می باشند اما نوع متغییر A اعشاری است به عبارت دیگر امکان ذخیره اعداد صحیح در متغییری از نوع اعشاری وجود دارد زیرا اعداد صحیح زیر مجموعه اعداد اعشاری هستند.

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

  • ۰
  • ۰

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

برای آشنایی با روش دریافت اطلاعات در زبان بیسیک مثال قبل را تکمیل می کنیم:

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

 

برای دریافت نام کاربر از دستور INPUT استفاده می کنیم. دستور INPUT پس از اجرا با نمایش پیامی منتظر ورود اطلاعات می ماند و کاربر باید پس از تایپ مقدار مورد نظر خود دکمه ENTER را به نشانه اتمام ورود اطلاعات فشار دهد. متن کامل برنامه به شکل زیر است:

10 PRINT "HELLO, I'M THE COMMODORE 64"

20 INPUT "WHAT IS YOUR NAME"; NAME$

30 PRINT "HELLO "; NAME$

40 PRINT "NICE TO MEET YOU!"

دستور INPUT در خط 20 به کامپیوتر می گوید که با نمایش پیام "WHAT IS YOUR NAME" آنچه کاربر تایپ کرده است را درون متغییر $NAME ذخیره کن. 

دستور PRINT در خط 30 مقدار متغییر $NAME را چاپ می کند.

در پست بعد به مفهوم متغییر می پردازیم. 

  • ۰
  • ۰

برنامه زیر را وارد کنید:

10 ? "HELLO, I'M THE COMMODORE 64"
20 ? "WHAT IS NAME?"
 
برای تسریع در نوشتن برنامه  می توان از ? که شکل خلاصه دستور PRINT می باشد استفاده کرد. با وارد کردن دستور LIST مشاهده می کنید که همه علامت سوال ها به PRINT تبدیل شده است.
10 PRINT "HELLO, I'M THE COMMODORE 64"
20 PRINT "WHAT IS NAME?"
حال می خواهیم خط 20 را به شکل زیر اصلاح کنیم. 
20 PRINT "WHAT IS YOUR NAME?"
برای اینکار دو روش وجود دارد:
روش اول اینکه کل خط 20 را مجددا وارد کنیم.
روش دیگر اینکه ابتدا دستور 20 LIST را وارد می کنیم تا خط 20 نمایش داده شود. سپس با استفاده از کلیدی های جهت (ARROW KEYS) مکان نما (Cursor)را در بین IS و NAME قرارداده و ادامه دستور را تا انتها وارد می کنیم. در انتها برای تائید کار کلید  Enter را فشار می دهیم. برای مشاهده نتیجه کار دستور LIST را مجددا وارد کنید.
 
برای حذف کامل یک خط کافیست شماره خط را به تنهایی وارد کرده و Enter کنیم.