الان بهت میگم
الان بهت میگم
.:: Things Are The Way They Were Before ::.
چند تا مثل:
برای محاسبات پیچیده مورد استفاده قرار میگیره...
10 LET X=5
20 LET y=5
30 LET z=x+y
40 PRINT z
50 END
بعد از منویی که میاد استارت رو بزنی بهت میده 7 یعنی جواب...
.:: Things Are The Way They Were Before ::.
آقا 10 رو قبل از Let بزار اینتو نتونستم بزارم هی می رفت آخر حواست باشه
.:: Things Are The Way They Were Before ::.
اینم حرفه ای از یه وبلاگ که آخر میگم:
بيسيک چيست ؟
************************************************** ***************************
با توجه به گستردگی روزافزون علم کامپیوتر در تمام ابعاد زندگی انسان و نیاز به یادگیری این علم نوین و از آنجایی که زبان QBASIC ( نسخه جدید تر BASIC) زبانی ساده و در عین حال قدرتمند برای آموزش مفاهیم برنامه نویسی است ، در این وبلاگ اقدام به آموزش قدم به قدم این زبان کرده ام . امید است مورد استفاده دوستان عزیز قرار گیرد .
************************************************** ***************************
در این یادداشت ، می توانید با تاریخچه و خانواده BASIC آشنا شوید . در یادداشت های بعدی اصول برنامه نویسی QBASIC را شروع خواهم کرد .
بیسیک را می توان متداولترین زبان برنامه نویسی کامپیوتر در چند دهه اخیر به حساب آورد . عموما این زبان اولین زبانی است که کارآموزان ، دانش آموزان و دانشجویان با آن آشنا می شوند و برنامه نویسان با ذوق ، زبان فوق را به علت سهولت استفاده و قابلیت های مناسب آن دوست دارند . کلمه BASIC مخفف عبارت Beginner’s All-purpose Symbolic Instruction Code به معنای "کد حاوی دستورات نمادین همه منظوره مخصوص نوآموزان" می باشد . نسخه ی اصلی آن در کالج دارتموث (Dartmouth) در سال 1964 برای نوآموزان به عنوان یک زبان آموزشی ایجاد گشت . علت اصلی ایجاد این زبان را می توان در پیچیدگی های زبان های متداول از قبیل Fortran ، Assembly و غیره جستجو کرد.
برنامه نویسی ساخت یافته :
همزمان با آمدن زبان هایی که دارای ساختارهای کنترلی کاربردی (مانند C و پاسکال) بودند و امکان طراحی زیباتر ، دقیق تر و مناسبتر برنامه ها را به برنامه نویسان دادند نیاز به نسخه اول BASIC کم شده و نسخه های جدیدی از آن مانند QBASIC برای رفع کمبودهای نسخه اول به بازار عرضه شد که ضمن حفظ سادگی بیسیک ، قابلیت برنامه نویسی ساخت یافته را نیز به آن افزودند . برنامه نویسی ساخت یافته روشی از برنامه نویسی است که در آن برنامه را به قطعات کوچکتر تقسیم بندی می کنند و هر قطعه کار مشخصی را انجام می دهد . همچنین در این روش اجرای برنامه و کنترل ترتیب اجرای دستورالعمل ها با استفاده از کلمات و سمبل های جدید آسان تر شده است . اصلی ترین مزیت برنامه نویسی ساخت یافته را می توان در سادگی امکان توسعه و نکهداری برنامه ها دانست . برنامه هایی که با زبانهای غیر ساخت یافته نوشته می شدند ، به سادگی قابل تغییر نبودند و گاهی فراتر رفتن میزان تغییرات از حد مشخصی ، نیاز به بازنویسی کامل برنامه را ایجاب می کرد . در نتیجه برنامه نویسی ساخت یافته ، راه حل این مشکل بود .
مفسر و مترجم :
پس از آن که برنامه ای در محیط زبان برنامه نویسی نوشته شد ، باید توسط کامپیوتر اجرا شود . در دنیای زبان های برنامه نویسی دو روش مختلف برای اجرای برنامه ها وجود دارد :
روش اول : مفسر (Interpreter) که برنامه ها را در زمان اجرا خط به خط به کدهای ماشین (صفر و یک) تبدیل می کند .
روش دوم : مترجم (Compiler) که کل برنامه را یکجا به کدهای ماشین تبدیل می کنند . مترجم ها معمولا فایل هایی با پسوند EXE یا COM ایجاد می کنند که این فایل ها قابلیت اجرا در محیط سیستم عامل را دارند و نیازی به خود زبان برنامه نویسی در هنگام اجرا ندارند ، در حالی که برای اجرای برنامه ای که با زبان های دارای مفسر نوشته شده است ، نیاز به وجود فایل های زبان برنامه نویسی نیز می باشد .
بیسیک نیز جزو زبان های تفسیری محسوب می شود . زبان های تفسیری علی رغم سادگی در پیاده سازی زبان چند اشکال مهم دارند :
کندی اجرای برنامه ها در مقایسه با زبان های مترجم دار
نیاز به تفسیر هر دستور حتی اگر در یک حلقه آن دستور را هزاران بار داشته باشیم .
QBASIC علاوه بر آنکه مفسر است ، با بهینه سازی هایی که در آن صورت گرفته ، کل برنامه را یکجا تفسیر می کند . یعنی دارای کامپایلر نیز می باشد و این امر تا حد زیادی کارایی آن را بالا برده است .
QBASIC مفسر بیسیکی است که به همراه MS-DOS نسخه 5 و بالاتر ارائه می گردد . شرکت مایکروسافت تولید کننده QBASIC با تکمیل این محصول ، نسخه های دیگری از بیسیک را روانه بازار کرده است که عبارتند از :
Quick BASIC و BASIC PDS و VISUAL BASIC .
.:: Things Are The Way They Were Before ::.
در اين يادداشت مي خواهم به معرفي انواع داده ها بپردازم. در Qbasic لزومي براي معرفي داده ها وجود ندارد ولي بهتر است در ابتداي برنامه آنها را معرفي كنيم .
انواع داده ها :
داده ها به طور كلي به دو نوع ثابت و متغير تقسيم مي شوند كه هركدام داراي دو دسته عددي و رشته اي هستند .
*داده ثابت :
داده اي كه در طول برنامه مقدار آن تغيير نمي كند . براي معرفي اين نوع داده از دستور CONST استفاده مي كنيم
مثال :
CONST pi=3.14
*داده متغير:
داده اي است كه مي تواند بر حسب منطق برنامه و در جايگاه هاي مختلف مقادير متفاوتي بپذيرد كه همانطور كه گفتم دو نوع دارد : متغير عددي و متغير رشته اي .
*متغير عددي :
متغير های عددی دارای ۴ نوع مختلف هستند :
نام
مخفف
حافظه اشغال كننده
علامت
نوع
عدد صحيح معمولی
INT
2 BYTE
%
INTEGER
عدد صحيح بلند
LNG
4 BYTE
&
LONG
عدد اعشاري با دقت معمولی
SNG
4 BYTE
!
SINGLE
عدد اعشاري با دقت مضاعف
DBL
8 BYTE
#
DOUBLE
اگر بخواهيم محاسبات برنامه با دقت بالايي انجام شود ، بايد متغيرها را از نوع مناسب (مثلا اعشاري با دقت مضاعف) در ابتداي برنامه به وسيله دستور DIM تعريف كنيم .
مثال : براي اين كه متغير A از نوع اعشاري با دقت معمولي باشد ، در ابتداي برنامه اين دستور را مي نويسيم :
DIM A AS SINGLE
راه دوم اين است که هرجا نياز به استفاده از A بود ، آن را به صورت A! به كار مي بريم .
*متغيرهاي رشته اي
همان طور كه از نام اين متغير مشخص است،براي نگهداري رشته اي از حروف به كار مي رود و دو نوع دارد :
نام
مخفف
علامت
نوع
متغير رشته اي با طول متغير
STR
$
STRING
متغير رشته اي با طول ثابت
STR
$
STRING*N%
فرض كنيد مي خواهيم متغير رشته اي به نام name و متغير رشته اي با طول 10 كاراكتر به نام family تعريف كنيم . مانند متغيرهاي عددي از دستور ِDIM استفاده مي كنيم :
DIM name AS STRING
DIM family AS STRING*10
حتما متوجه شده ايد كه N تعداد حروف متغير را بيان مي كند و طبيعتا از نوع % يعني عدد صحيح معمولي است .
اگر بدون معرفي متغير رشته اي را در برنامه استفاده كنيم ، Qbasic به طور خودكار آن را مساوي " " يعني يك رشته خالي قرار مي دهد و اگر متغير از نوع عددي باشد ، Qbasic به طور پيش فرض آن را مساوي صفر قرار مي دهد.
.:: Things Are The Way They Were Before ::.
حال می خواهيم اولين برنامه خود را در QBasic بنويسيم . برای اين كار نياز به معرفی چند دستور داريم :
۱- دستور PRINT برای چاپ عدد رشته و يا مقادير متغيرها به كار می رود . فقط فراموش نكنيد اگر می خواهيد پيغامی نمايش دهيد رشته مورد نظر را حتما داخل علامت كوتيشن (") قرار دهيد برای مثال دستور زير عبارت This is my first program را چاپ می كند .
" PRINT "This is my first pogram
برای تركيب چند رشته يا متغير بايد بين متغيرها / رشته ها از ; يا , استفاده كنيد . در ادامه تفاوت اين دو را بيان خواهيم كرد .
۲- دستور INPUT برای دريافت مقادير (عددی و رشته اي) از كاربر به كار می رود . برای مثال دستور ! INPUT a يك عدد اعشاری با دقت مضاعف از كاربر دريافت می كند . وقتی دستور INPUT اجرا می شود به طور خودكار علامت ؟ روی صفحه نمايش چاپ شده و برنامه منتظر ورود داده از طرف كاربر می ماند . اما اين دستور را می توان طور ديگری نيز به كار برد . مثلا فرض كنيد می خواهيم به كاربر پيغام دهيم :"يك عدد وارد كن" و سپس اين عدد را در متغير a قرار دهيم . برای اين كار بايد ابتدا يك دستور PRINT برای چاپ رشته و سپس دستور INPUT را برای دريافت عدد به كار ببريم . مانند زير :
"PRINT "Enter a number
INPUT a
اما می توان اين كار را در يك خط انجام داد ! دستور INPUT اجازه چاپ پيغام را نيز به ما می دهد . به اين نكته توجه داشته باشيد : بين پيغام و نام متغير بايد ; يا , قرار دهيم . اگر از ; استفاده كنيم بعد از چاپ پيغام يك علامت سوال چاپ می شود و نشانگر بلافاصله بعد از علامت سوال قرار می گيرد ولی در صورت استفاده از , علامت سوال خودكار چاپ نمی شود و نشانگر بعد از يك tab فاصله روبه روی پيغام قرار می گيرد . به دستورات زير كه ترکيب دو دستور بالاست توجه كنيد و تفاوت های آنها را در خروجی مشاهده كنيد (فرض كنيد كاربر عدد ۲ را وارد می كند )
2 INPUT "Enter a number" , a \\ khorooji=> Enter a number
INPUT "Enter a number" ; a \\ khorooji=> Enter a number?2
حال دو دستور ساده ديگر را هم ياد بگيريد :
۱- REM : اين دستور برای اضافه كردن توضيحات به برنامه به كار می رود و اصولا زمانی كه مترجم برنامه به اين دستور می رسد بلافاصله به خط بعدی می رود و عبارت جلوی REM را ناديده می گيرد .
۲- END : استفاده از اين دستور نيز مانند REM اختياری است و نشان دهنده پايان برنامه است .
با توجه به درس جلسه قبل و اين جلسه با هم برنامه ای می نويسيم كه دو عدد از كاربر دريافت كرده و حاصل جمع آنها را نمايش دهد .
REM this program can add two numbers
".PRINT "I can add two numbers . please enter them
INPUT "Enter first number:",a
INPUT "Enter second number:",b
c=a+b
PRINT "Sum is :";c
END
مثالی از خروجی برنامه :
. I can add two numbers . please enter them
Enter first number: 31
Enter second number: 24
Sum is : 55
تمرين : برنامه ای بنويسيد كه ۳ عدد را دريافت كند و الف) حاصل جمع آنها را چاپ كند . ب) ميانگين آنها را چاپ كند .
نكته : اگر برنامه بالا را بنويسيد و اجرا نماييد متوجه می شويد كه اگر برای متغيرها علامت خاصی قرار ندهيد QBasic آنها را به عنوان عدد صحيح (integer) می شناسد و در نتيجه ميانگين نيز مقدار صحيحی نمايش داده می شود . برای دقيق تر شدن خروجی برنامه و اينكه ميانگين عددی اعشاری باشد بايد متغيرهای مربوط به سه عدد دريافتی , حاصل جمع و ميانگين از نوع اعشاری باشد . يعنی بايد متغيرها را مانند !a يا #a به كار ببريد تا خروجی برنامه دقيق و برابر مقدار واقعی ميانگين باشد .
.:: Things Are The Way They Were Before ::.
ابتدا حل تمرين جلسه قبل . راه اول اين بود که متغير ها را به صورت !a به كار ببريم ( مانند برنامه زير ) و راه دوم اين بود كه با توجه به درس جلسه دوم در ابتداي برنامه تمام متغيرها را از نوع اعشاري تعريف نماييم براي مثال عبارت DIM a AS SINGLE را در ابتداي برنامه بنويسيم تا هرجا از a استفاده كرديم نوع آن اعشاري باشد .در اين روش نيازي نيست در هر بار استفاده از متغير علامت نوع را در انتهاي آن بنويسيم.
***REM ***program number 1
"PRINT "enter three number
!INPUT a! , b! , c
!sum! = a! + b! + c
!PRINT "Sum is : ";sum
PRINT "Average is : ";sum!/3
END
حال بررسي ساختارهاي كنترلي كه يكي از پركاربردترين دستورها هستند را شروع مي كنم .
1- ساختار IF
اين دستور براي انجام كاري در صورت درست بودن شرطي به كار مي رود . شكل كلي آن به صورت زير است :
THEN شرط 1 IF
كارهايي كه در صورت برقرار بودن شرط 1 بايد انجام شود .
THEN شرط 2 ELSE IF
كارهايي كه در صورت برقرار بودن شرط 2 بايد انجام شود .
...
ELSE
كارهايي كه در صورت برقرار نبودن هيچ يك از شرط هاي بالا بايد انجام شود .
END IF
مثال 1: فرض كنيد عددي از كاربر دريافت كرده و مي خواهيم مثبت يا منفي بودن آن را مشابه تابع(sgn(xدر رياضيات اعلام كنيم . ( در صورت مثبت بودن ، عدد 1 / منفي بودن ، عدد 1- / و اگر صفر وارد شد ، عدد ضفر چاپ مي شود ) . دستور زير اين امكان را فراهم مي سازد : (فرض كنيد عدد در n ذخيره شده است )
IF n>0 THEN
"PRINT "1
ELSE IF n<0 THEN
"PRINT "-1
Else
"PRINT "0
END IF
نكته : اگر مي خواهيد فقط يك شرط را بررسي كنيد (مثلا فقط در صورت مثبت بودن n عدد 1 چاپ شود و در غير اين صورت هيچ كاري انجام نشود ) مي توانيد دستورIF را در يك خط بدون نياز به END IF بنويسيد . مانند زير :
"IF n>0 THEN PRINT "1
2- DO...WHILE
اين ساختار كارهايي را تا زماني كه شرطي برقرار باشد انجام مي دهد . شكل كلي آن به صورت زير است :
شرط DO WHILE
كارهايي كه بايد انجام شوند
LOOP
عبارت LOOP نشان دهنده پايان حلقه است . اين ساختار داراي انواع ديگري نيز هست . مثلا در نوع معرفي شده كارها فقط زماني انجام مي شوند كه شرط برقرار باشد و اگر شرط برقرار نباشد برنامه به خط بعد از LOOP مي رود . اما نوع ديگري از اين ساختار وجود دارد كه ابتدا يك بار كار را انجام مي دهد و سپس شرط را چك مي كند . شكل كلي آن به صورت زير است :
DO
كارهايي كه بايد انجام شوند
شرط LOOP WHILE
مي توان به جاي عبارت WHILE از UNTIL استفاده كرد اما در اين صورت بايد نقيض شرط را بنويسيم .
مثال ۲: مي خواهيم تا زماني كه كلمه وارد شده از طرف كاربر مخالف رمز عبور (مثلا kamyar ) است ، رمز دوباره دريافت شود . به روش هاي مختلف نوشتن اين برنامه توجه كنيد :
1) $INPUT pass
"DO WHILE pass$<>"kamyar
$INPUT pass
LOOP
------------------------------------------
2) $INPUT pass
"DO UNTIL pass$="kamyar
$INPUT pass
LOOP
------------------------------------------
3) DO
$INPUT pass
"LOOP WHILE pass<>"kamyar
-------------------------------------------
4) DO
$INPUT pass
"LOOP UNTIL pass$="kamyar
همانطور كه مشاهده مي كنيد هر 4 بخش يك كار را انجام مي دهند اما بخش هاي 3 و 4 از 1 و 2 بهترند زيرا متن برنامه آنها كوتاه تر است . بسته به منطق برنامه بايد تشخيص دهيد كدام روش بهتر است .
مثال ۳: برنامه اي بنويسيد كه مجموع اعداد از 1 تا 1000 را حساب كند .
counter = 1
sum = 0
DO WHILE counter<=1000
sum=sum+counter
counter=counter+1
LOOP
PRINT "Sum of numbers between 1 & 1000 is : ";sum
END
مثال ۴: برنامه اي بنويسيد كه ميانگين نمرات را تا زماني كه عدد 1- وارد نشده ، حساب كند .
counter=1
sum=0
DO
INPUT "Enter grade",grade
sum=sum+grade
counter=counter+1
LOOP WHILE grade<>-1
IF sum<>-1 THEN
PRINT "average is";(sum+1)/counter
ELSE
"!PRINT "there isn't any grade
END IF
END
توضيح : در قسمت چاپ ميانگين مقدار ميانگين را برابرsum+1)/counter قرار داديم زيرا وقتي عدد 1- وارد مي شود ابتدا با sum جمع شده و سپس شرط چك مي شود و از حلقه بيرون مي آيد پس براي محاسبه ميانگين اعدادي كه قبل از 1- وارد شده اند بايد 1- را از sum حذف كرد يعني به sum يك مقدار اضافه كنيم.
3-FOR
اين ساختار شبيه ساختار WHILE است با اين تفاوت كه براي ايجاد حلقه هايي كه داراي شمارنده هستند به كار مي رود . مي توانيد شمارنده حلقه را درون اين دستور مقدار دهي اوليه كنيد . همچنين مقدار تغيير شمارنده (يكي يكي يا دوتا دوتا يا ... ) نيز با دستور STEP قابل تنظيم است . شكل كلي اين دستور به شكل زير است :
مقدار تغيير شمارنده STEP مقدار نهايي TO مقدار اوليه = شمارنده FOR
كارهايي كه بايد در طول حلقه انجام شود
متغير شمارنده NEXT
مثال ۴ : مثال ۳ را با اين دستور مي نويسيم :
FOR i=1 TO 1000 STEP 1
sum=sum+i
NEXT i
PRINT "Sum of numbers between 1 & 1000 is : ";sum
END
نكته : اگر مقدار تغيير شمارنده برابر يك است ، مي توانيد STEP 1 را ننويسيد .
تمرين :
1- برنامه اي بنويسيد كه مجموع اعداد زوج سه رقمي را چاپ كند .
2- برنامه اي بنويسيد كه ابتدا رمز عبور را از كاربر بخواهد . اگر رمزabc بود آنگاه ۱۰ عدد را بخواند و max آنها را چاپ كند . اگر رمز اشتباه بود ، پيغام مناسبي نمايش داده شده و رمز عبور دوباره خواسته شود .
3- برنامه اي بنويسيد كه رمز عبوري را از كاربر بخواهد . اگر رمز درست بود پيغام "your password is correct" را چاپ كند . برنامه بايد فقط ۳ بار از كاربر رمز را بپرسد . اگر كاربر نتوانست رمز را در اين 3 بار وارد كند پيغام "Sorry! you can't continue" چاپ شود .
.:: Things Are The Way They Were Before ::.
همانطور كه خواسته شده بود ، در مورد برنامه QBasic توضيحاتي را مي دهم :
تهيه، نصب و استفاده :
اين برنامه را به راحتي مي توانيد از بازار تهيه كنيد اما در صورت تمايل تمامي كساني كه مايل به داشتن QBasic (تحت Dos) هستند مي توانند آدرس اي- ميل خود را بفرستند تا اين برنامه به ميلشان فرستاده شود . حجم برنامه (بدون help) بسيار كم و در حدود 300KB است و نيازي به نصب ندارد ! كافي است بر روي فايل QBasic.exe كليك كنيد تا وارد محيط برنامه شويد . اگر از ويندوز xp استفاده مي كنيد ، احتمالا در اجراي برنامه با مشكل روبرو خواهيد شد . براي رفع اين مشكل مي توانيد مسير Start | All Programs | Accessoreies | Command prompt را طي كرده و مسيري را كه برنامه در آن كپي شده است ، بنويسيد مثلا اگر پوشه QBasic را در درايو E خود ذخيره كرده ايد ، بنويسيد : E : \ QBasic \ QBasic.exe . (براي خروج از Dos كلمه exit را تايپ كنيد ) پس از نوشتن برنامه براي اجراي آن كليد تركيبي Shift+F5 را فشار دهيد يا از منوي run گزينه start را انتخاب كنيد . پس از اتمام اجراي برنامه ، پيغامي ظاهر مي شود كه از شما مي خواهيد كليد دلخواهي فشار دهيد تا به محيط برنامه بازگرديد .
و در پايان ...
در اين وبلاگ سعي مي شود كه روش كار از سطح پايين شروع شود . بعدها كه QBasic را بهتر و بيشتر ياد گرفتيد ، متوجه مي شويد كه مثال ها و تمرين هاي اين جلسات اوليه بسيار بسيار ساده است . فقط نياز داريد تا تمرين كنيد . سعي كنيد مثال ها و مخصوصا تمرين ها را براي خود حل كنيد .
در مورد پيشنهادي كه داده بوديد اميدوارم جوابتان را گرفته باشيد .
با تشكر از توجه شما ، به اميد اين كه با پيشنهاداتتان كمك كنيد تا وبلاگ بهتري داشته باشيم .
.:: Things Are The Way They Were Before ::.
حل تمرين جلسه قبل :
1- برنامه بسيار ساده و به صورت زير است :
sum=0
FOR i=100 TO 998 STEP 2
sum=sum+i
NEXT i
PRINT "Sum is :",sum
ـــــــــــــــــــــــــ ـــــــــــــــــــــــــ ـــــــــــــــــــــــــ ـــــــــــــــــــــــــ ــــــــــــــــــــ
2-
DO
$INPUT "Enter pass";pass
IF pass$<>"abc" THEN
"PRINT "Your password is not correct ! try again
END IF
"LOOP WHILE pass$<>"abc
"PRINT "Enter ten numbers
INPUT a
max=a
FOR i=1 TO 9
INPUT a
IF a>max THEN max=a
NEXT i
END
*نكات : تا زماني كه كاربر رمز عبور را درست وارد نكرده ، حلقه تكرار مي شود و تنها زماني كه رمز به درستي وارد شود ، برنامه به خط بعد از LOOP مي رود و دستورات بعدي انجام مي شود . براي تعيين max دسته اي از اعداد ، ابتدا اولين عدد ورودي را در max قرار مي دهيم سپس بقيه اعداد را در يك حلقه از كاربر دريافت كرده ، بعد از دريافت هركدام ، آنها با max مقايسه مي شوند تا اگر بيشتر از max بودند ، در آن قرار گيرند . دقت کنيد چون يک عدد بيرون حلقه دريافت کرده ايم ۹ عدد ديگر باقيمانده است (شرط حلقه ) براي به دست آوردن min نيز از همين روش استفاده مي كنيم .
ـــــــــــــــــــــــــ ـــــــــــــــــــــــــ ـــــــــــــــــــــــــ ـــــــــــــــــــــــــ ــــــــــــــــــــ
3-
c=1
DO
$INPUT"Enter password",pass
c=c+1
LOOP WHILE pass$<>"123" AND c<=3
IF pass$="123" THEN
"!PRINT "your password is correct
ELSE
"PRINT "Sorry ! you can't continue
END
نكات : در شرط حلقه از عملگر منطقي AND استفاده شده زيرا استفاده از AND سبب مي شود اگر يكي از شرطها هم غلط باشد ، كل عبارت نادرست شود . (عينا مانند استفاده از "و" در منطق رياضي ) يعني در هريك از دو صورتي كه "pass$="abc (رمز درست وارد شود) يا c (شمارنده) بزرگتر از 3 شود ، برنامه از حلقه خارج مي شود و با توجه اين كه بر اثر درست وارد شدن رمز از حلقه خارج شده ايم يا بر اثر تمام شدن تعداد حدس ها ، پيغام مناسب چاپ مي شود .
و اما درس جديد :
در درس امروز ابتدا به معرفي آرايه مي پردازيم .
فرض كنيد مي خواهيم n عدد را به صورت صعودي مرتب كنيم . براي ذخيره سازي اين اعداد بايد n متغير به نام هاي a1,a2,a3,...,an تعريف كنيم . نوشتن برنامه اي كه بتواند اين n عدد را مرتب كند مخصوصا زماني كه مقدار n بزرگ باشد ، بسيار مشكل و تقريبا غير ممكن است . در چنين مواردي از آرايه ها يا ماتريس ها استفاده مي كنيم . به كمك آرايه ها مي توان تعداد مشخصي متغير همنوع را فقط با يك نام و مشخص كردن انديس آنها به كار برد . براي مثال مي توان ده عدد را در متغيري به نام N از نوع آرايه اي به طول 10 ذخيره كرد :
325
145
23
965
3
47
10
0
71
400
N
1 2 3 4 5 6 7 8 9 10
مثلا N(1)=325 و N(9)=71
براي تعريف آرايه از دستور DIM به شكل كلي زير استفاده مي شود :
[ نوع داده AS ] (دامنه يا تعداد عناصر ) نام متغير آرايه DIM
( عبارت داخل [ ] اختياري است )
به مثال هاي زير توجه كنيد :
ايجاد آرايه اي به نام B و داراي 20 عنصر : (DIM B(1 TO 20 يا (DIM B(20
ايجاد آرايه اي به نام M از نوع عدد صحيح و داراي 50 عنصر : (DIM M%(50
ايجاد آرايه اي به نام Grade از نوع اعشاري ساده داراي 35 عنصر : DIM Grade(35) AS SINGLE
مثال 1 : برنامه ای بنويسيد که ۱۴ نمره يک دانش آموز را در آرايه ذخيره کرده و مجموع و ميانگين نمرات را چاپ کند .
DIM Grade(1 TO 14 ) AS INTEGER
sum!=0
FOR i=1 TO 14
(%INPUT "Grade : "Grade(i
(%sum! = sum! + Grade(i
NEXT i
average!=sum!/14
!PRINT "sum = ";sum
!PRINT "average = ";average
اين برنامه را می توانستيد با دريافت نمرات در حلقه يا دريافت تک تک نمرات (۱۴ بار) نيز بنويسيد . اما فرض کنيد کاربر بخواهد نمره سوم يا ششم خود را مشاهده کند . در اين صورت بايد از آرايه ها استفاده کنيد زيرا در روش قبلی امکان دسترسی به تک تک اطلاعات وجود نداشت ولی حالا با افزودن قطعه کد زير به برنامه بالا می توان برنامه ای ساخت که نمره دلخواه کاربر را نمايش دهد :
INPUT "which grade do you want to see?",a
(PRINT "grade ";a;" is = ";Grade(a
آرايه های دوبعدی و چند بعدی :
در مواقعی نياز به آرايه هايی داريم که هر عنصر آن دارای دو بعد باشد . مثلا برای ذخيره مختصات چند نقطه نياز به يک آرايه دو بعدی داريم تا مختصات x و y نقطه را ذخيره کنيم . تعريف آرايه های n بعدی به طور کلی به شکل زير است : (A1,A2,A3,...,An و B1,B2 و ... همگي عدد هستند )
(DIM (A1 TO A2,B1 TO B2, ... , Z1 TO Z2 يا (DIM (A1,A2,A3,...,An
مثال ۲ : برنامه ای بنويسيد که جدول ضرب اعداد از يک تا ده را در يک آرايه دوبعدی ذخيره نمايد .
(DIM N(10,10
FOR I%=1 TO 10
FOR J%=1 TO 10
%N(I%,J%)=I%*J
%NEXT J
%NEXT I
مثلا N(3,5)=15 .
تمرين :
اين جلسه تنها يک تمرين نسبتا مشکل را عنوان می کنم تا در تعطيلات روی آن فکر کنيد ! : برنامه ای بنويسيد که ۱۰ عدد را دريافت کند و آنها را به ترتيب به صورت صعودی مرتب کند . برنامه را برای n عدد تعميم دهيد . ( راهنمايی : دستور SWAP a,b مقدار دو متغير را عوض می کند . يعنی اگر a=1,b=2 باشد بعد از اجرای اين دستور a=2,b=1 خواهد بود . از اين دستور می توانيد برای جابه جايی عناصر آرايه به منظور مرتب سازی استفاده کنيد . )
.:: Things Are The Way They Were Before ::.
happyhome82 (13-04-07), XFXForce (07-04-07)
1 کاربر در حال مشاهده این موضوع. (0 عضو و 1 میهمان)
Bookmarks