تبليغاتX
کامپیوتر - چند برنامه ي ساده ي بيسيک
چند برنامه ي ساده ي بيسيک
مثال 1 : برنامه اي بنويسيد كه اعداد يك تا ده را چاپ كند سپس مقابل هريك ريشه چهارم آن را نمايش دهد .

CLS
FOR i = 1 TO 10
 ( ( PRINT i ; "                    " ; SQR ( SQR( i      
NEXT i
END

توضيح : به منظور ايجاد فاصله بين عدد و ريشه چهارمش از يك رشته خالي به طول 20 كاراكتر استفاده شده است . مي توانستيد به جاي اينكه 20 بار space را فشار دهيد از تابعي كه به همين منظور آماده شده ، استفاده كنيد : تابع (SPC(a به تعداد مشخص شده ( a تا ) فضاي خالي ايجاد مي كند . در اين صورت خط سوم برنامه به اين صورت در مي آمد كه صحيح تر و بهتر است :

 ( ( PRINT i ; SPC (20) ; SQR ( SQR( i

=================================================

مثال 2 : برنامه اي بنويسيد كه كليه مقسوم عليه هاي يك عدد ورودي را محاسبه و چاپ كند .

CLS
INPUT "Enter a number" , num
FOR i = 1 TO num
 IF INT( num / i ) = num / i THEN PRINT i       
NEXT i
END

توضيح : اين بار اين مسئله را با استفاده از تابع ( )INT حل كرديم . اگر num بر i بخشپذير باشد ، پس حاصل num/i يك عدد صحيح است و جزءصحيح آن با خودش برابر است .

=================================================

مثال 3 : برنامه اي را بنويسيد كه جدول مقادير مثلثاتي زواياي 1 تا 90 را نمايش دهد .

CLS
CONST pi = 3.1415
"PRINT "Degree" ; SPC(3) ; "Sin" ; SPC(3) ; "Cos" ; SPC(3) ; "Tan" ; SPC(3) ; "Cot
PRINT
FOR i = 1 TO 90
 ;( PRINT i ; SPC(3      
 rad = i * pi / 180       
( PRINT  SIN(rad); SPC(3); COS(rad); SPC(3); TAN(rad); SPC(3); 1/Tan(rad       
NEXT i
END

=================================================

مثال 4 : برنامه اي بنويسيد كه يك رشته را دريافت كرده و حروف آن را معكوس كرده ، نمايش دهد .

CLS
$INPUT "Enter a string : " , test
" " = $reverse
 ( $FOR i = 1 TO LEN ( test
( temp$ = MID$ ( test$ , i , 1       
 $ reverse$ = temp$ + reverse       
NEXT i
$PRINT "Reverse of string : " ; reverse
END

=================================================

مثال 5 : برنامه اي بنويسيد كه يك رشته را از ورودي دريافت كرده و تمام فاصله هاي آن را (جاهاي خالي رشته) به ستاره تبديل كند .

$INPUT a
" " = $b
($FOR i = 1 TO LEN (a
( temp$=MID$ ( a$ , i , 1       
 "*"=$IF temp$ = " " THEN temp       
$b$ = b$ + temp      
NEXT i
$PRINT b
END

=================================================

مثال 6 : برنامه اي بنويسيد كه يك رشته اصلي را دريافت كند و يك رشته كه درون آن موجود است را دريافت كرده و به رشته اي ديگر تغيير دهد . مثلا رشته "This is a test" را به عنوان رشته اصلي دريافت كند . سپس به جاي حروف "s" حرف "V" را چاپ كند . يعني خروجي بايد به صورت "ThiV iV a tevt" باشد .

$INPUT "Enter the mail string ", mainstr
$INPUT "What string do you want to replace it ?",oldstr
$INPUT "What is new string ?",newstr
INPUT "Enter start position : "start
DO
($pos=INSTR(start,mainstr$,oldstr      
 IF pos<>0 THEN      
(Leftstr$=LEFT$(mainstr$,pos-1               
($Rightstr$=RIGHT$(mainstr$,pos+LEN(oldstr               
$mainstr$=Leftstr$+newstr$+Rightstr              
 ENDIF      
LOOP WHILE pos<>0
 " :PRINT "New main string is
$PRINT mainstr
END

=================================================

مثال 7 : برنامه اي بنويسيد كه يك عدد را دريافت كند و تعداد رقم هاي آن را چاپ كند .

INPUT "Type a number ranging from 1 to 7 digits ",num
( ( a = LEN ( STR$ ( num
"PRINT "You typed a "; a ; "digit number
END

=================================================

مثال 8 : برنامه اي بنويسيد كه يك عدد را در مبناي 2 دريافت كرده و معادل آن را در مبناي ده نمايش دهد .

INPUT "Enter a binary number ",numbin
(numbin$ = MID$ (STR ( numbin ) , 1
sum = 0
pow = 0
FOR i = LEN ( numbin$ ) TO 1 STEP -1
( abit$ = MID$ ( numbin$ , i , 1       
 IF VAL ( abit$ ) > 1 THEN       
"!PRINT "Error in number                
  sum = 0                
  EXIT FOR                
 ENDIF       
 sum = sum + VAL ( abit$ ) * 2^pow       
 pow = pow + 1       
NEXT i
PRINT "Decimal form is : " ; sum
END

=================================================

مثال 9 : برنامه اي بنويسيد كه نام و نمره دانش آموزان را بگيرد و در آرايه ذخيره كند . سپس امكان جستجو را به اين ترتيب براي كاربر فراهم كند كه با دريافت نام دانش آموز ، نمره وي را نمايش دهد . برنامه را طوري بنويسيد كه case sensitive نباشد . ( نسبت به بزرگي و كوچكي حروف حساس نباشد )

INPUT "How many students are there ?" , n
(DIM name$(n
(DIM grade(n
count = 1
DO WHILE  count <= n
 PRINT "Enter name of student " ; count      
( INPUT name$( count      
 PRINT "Enter grade of student " ; count      
( INPUT grade ( count      
 count = count + 1      
LOOP
FOR i = 1 TO n : name$ ( i ) = UCASE ( name$ ( i ) ) : NEXT i
$INPUT "Enter name of student to see her/his grade " , a
FOR i = 1 TO n
( IF name$(i)=UCASE$(a$) THEN PRINT name$(i)" 's grade is : " ; grade (i       
NEXT i
END

=================================================

مثال ?? : برنامه اي بنويسيد كه دو رشته را دريافت كرده و تمام محل هاي وجود رشته دوم را در رشته اول بررسي كرده و نشان دهد .

CLS
$INPUT "Enter the main string " , main
$INPUT "What string is you want to search it ? " , search
DO
 ($location = INSTR (location+1 , main$ , search      
IF location = 0 THEN EXIT DO      
PRINT " Location : " ; location      
LOOP
END

 

 
   =================================================


?-

REM This program can show the name of colors
CLS
%INPUT "Enter a number from 1 to 6 " , a
%SELECT CASE a
 CASE 1            
"  PRINT " Black                     
 CASE 2            
"  PRINT " Red                     
 CASE 3            
"  PRINT " Green                      
 CASE 4           
"  PRINT " Blue                      
 CASE 5            
"  PRINT " Orange                      
 CASE 6            
"  PRINT " Brown                      
 CASE ELSE           
"  PRINT " Invalid number                      
     END SELECT    
END

=================================================

?-

CLS
%INPUT "Enter a number ( >=0 )",num
count = 1
fact = 1
IF num% >= 0 THEN
% DO WHILE count <= num          
  fact = fact * count                   
  count = count +1                   
 LOOP          
 PRINT num% ; "! =" ; fact          
ELSE
" PRINT " Invaid number          
END IF
END

توضيح : برنامه داراي متغيري به نام count است كه حكم شمارنده اي را دارد كه از مقدار ? شروع مي شود و تا زماني كه به عدد ورودي كاربر برسد ، هربار در عدد قبلي خود ضرب شده و در متغيري به نام fact قرار مي گيرد . سپس يك واحد به آن اضافه شده و دوباره در عدد قبلي ضرب مي شود . به اين ترتيب حاصلضرب اعداد از ? تا n  ) n عدد ورودي كاربر است ) محاسبه شده كه همان فاكتوريل است . به دستور PRINT قبل از ELSE دقت كنيد . اين دستور از سه قسمت تشكيل شده است . دو قسمت عددي و يك قسمت رشته اي به اين ترتيب كه ابتدا عدد ورودي كاربر نمايش داده مي شود . سپس علامت فاكتوريل (!) روبه روي عدد قرار مي گيرد .آنگاه با چاپ علامت مساوي (=) فاكتوريل عدد در مقابل مساوي چاپ مي شود . براي مثال اگر عدد ورودي كاربر ? باشد ، از آنجا كه 0>1 يك عبارت نادرست است ، حلقه DO WHILE اجرا نمي شود و دستور بعدي كه همان دستور PRINT است اجرا شده و با توجه به اينكه مقدار fact تغييري نكرده است ، خروجي به فرم زير خواهد بود :    

1 = ! 0
=================================================
?-

REM      This program can calculate (1+2+3+..+n)^2
INPUT "Enter the last number (n) " , n
sum = 0
FOR i = 1 TO n
 sum = sum + i       
NEXT i
PRINT "Answer is : ";sum^2
END
 

   چهارشنبه دهم مرداد 1386   15:5    رسول فضلی