نمونه برنامه هایی در زبان پاسکال

اينم شيرزاديان:

 

برنامه معکوس يک عدد
PROGRAM INVERSE;
uses crt,dos;
var number:longint;
{ *** INVERSE *** }
procedure invers(n:longint);
begin
if n>9 then
begin
write(n mod 10);
n:=n div 10;
invers(n);
end
else
write(n);
end;
{ --- MAIN BODY --- }
begin
clrscr;
write(' ENTER A NUMBER : ');
readln(number);
writeln;
textcolor(11);
write(' INVERSE OF ',number,'=');
invers(number);
readkey;
end.

برنامه چاپ اعداد اول کمتر از ان
PROGRAM AVAL2;
uses crt,dos;
var k,n,a,c,d,b,f,e:integer;
t:array [1..350] of integer;
begin
clrscr;
textbackground(0);
textcolor(10);

writeln;
write(' ENTER A NUMBER : ');
a:=1;
t[1]:=2;
read(n);
for e:=3 to n do
begin
b:=0;
for f:=1 to a do
begin
d:=(e mod (t[f]));
if (d=0) then
b:=b+t[f];
end;
if (b=0) then
begin
a:=a+1;
t[a]:=e;
end;
end;
begin { *}
for e:=1 to a do
begin
write(t[e]:6);
if (e mod 10)=0 then writeln;
end;
end; { for * }
readkey;
end.

برنامه چاپ سری فيبوناتچی
PROGRAM FIBONAT2;
uses crt,dos;
var counter:shortint;
n1,n2:longint;
n:integer;
begin
clrscr;
textbackground(1);
textcolor(11);
write(' ENTER N : ');
readln(n);
n1:=1;
n2:=1;
textcolor(10);
for counter:=1 to n do
begin
write(n1:4);
n2:=n1+n2;
n1:=n2-n1;
end;
readln;
end.
برنامه محاسبه جمله ان ام سری فیبوناتچی
PROGRAM FIBONAT1;
uses crt,dos;
var n,a:integer;
{ *** FIBO *** }
function fibo(m:integer):integer;
begin
if (m=1) or (m=2) then
fibo:=1
else
fibo:=fibo(m-1)+fibo(m-2);
end;
{ --- MAIN BODY --- }
begin
clrscr;
textbackground(0);
textcolor(10);
write(' PLEASE ENTER A NUMBER : ');
readln(n);
writeln;
textcolor(11);
write( '',fibo(n));
readln;
end.
برنامه تقویم با در نظر گرفتن سالهای کبیسه :
توجه : در برنامه باید سال شمسی را وارد کنید.
PROGRAM TAGHVIM;
uses crt,dos;
type
day=(saturday,sunday,monday,tuesday,wednesday,
thursday,friday);
week=(we1,we2,we3,we4,we5,we6);
month=1..12;
const cate=1376;
var j:week;
years: array[month,week,day] of integer;
control,i:day;
k:month;
year,l,test,nom,h:integer;
{ *** FINDDAY *** }
procedure findday( var control:day; year:integer );
var i,j:integer;
begin
i:=( abs(cate-year)+((abs(cate-year)) div 4)) mod 7;
if year>cate then
i:=6-i;
for j:=1 to i do
if (control=saturday) then
control:=friday
else control:=pred(control)
end; { for procedure }
{ *** LEAPYEAR *** }
function leapyear( year:integer ):integer;
begin
if (abs(cate-year) mod 4)=0 then
leapyear:=31
else leapyear:=30;
end; { for function }
{ *** MAIN BODY *** }
begin
clrscr;
textbackground(0);
textcolor(13);
write(' PLEASE ENTER YEAR ''DATE : ');
read(year);
control:=thursday;
findday(control,year);
for l:=1 to 12 do
for j:=we1 to we6 do
for i:=saturday to friday do
years[l,j,i]:=0;
nom:=1;
test:=32;
for k:=1 to 12 do
begin
for j:=we1 to we6 do
begin
for i:=saturday to friday do
begin
if j=we1 then
begin
i:=control;
control:=succ(i);
if i=friday then
control:=saturday
end; { for if }
years[k,j,i]:=nom;
nom:=nom+1;
if nom=test then
begin
control:=succ(i);
if i=friday then
control:=saturday;
i:=friday;
j:=we6;
nom:=1;
end; { for if nom }
end; { for for with index i }
end; { for for with index j }
case k of
6: test:=31;
11: test:=leapyear(year);
end { for case }
end; { of for with index k }
test:=1;
l:=3;
for nom:=1 to 4 do
begin
writeln;
writeln;
write('':30);
case nom of
1: begin
textcolor(20);
writeln('BAHAR');
textcolor(13);
writeln;
writeln('':7,'FARVARDIN','ORDIBEHESHT':28,'KHORDAD':22);
end;
2: begin
textcolor(20);
writeln('TABESTAN');
textcolor(13);
writeln;
writeln('':7,'TIR','MORDAD':31,'SHAHRIVAR':25);
end;
3: begin
textcolor(20);
writeln('PAEIZ');
textcolor(13);
writeln;
writeln('':7,'MEHR','ABAN':28,'AZAR':22);
end;
4: begin
textcolor(20);
writeln('ZEMESTAN');
textcolor(13);
writeln;
writeln('':7,'DAY','BAHMAN':31,'ESFAND':25);
end;
end; { for case }
write(' sa su mo tu we th fr');
writeln(' sa su mo tu we th fr',
' sa su mo tu we th fr');
for j:=we1 to we6 do
begin
for k:=test to l do
begin
for i:=saturday to friday do
if (years[k,j,i]>=1) and (years[k,j,i]<=31) then
write(years[k,j,i]:3)
else
write('':3);
write('':5);
end;
writeln;
end; { for for k }
l:=l+3;
test:=test+3;
readkey;
for h:=1 to 60 do writeln;
gotoxy(30,5);
end; { for for j }
readln;
end.

برنامه تبديل مبنای ده به ايکس یا ده به ۲و۳و۴و۵و۶و۷و۸و۹ :
PROGRAM MAB10TOX;
uses crt,dos;
label 1;
const hexconst: array [0..15] of char=('0','1','2','3','4',
'5','6','7','8','9',
'a','b','c','d','e','f');
var y,j:shortint;
dec,t:longint;
bin:string;
{ *** READDECIMALNUMBER *** }
procedure readdecimalnumber;
begin
clrscr;
textcolor(10);
repeat
write(' PLEASE ENTER A
POSITIVE DECIMAL NUMBER ? ');
readln(dec);
until dec>0;
end;
{ *** WRITEDECIMALNUMBER *** }
procedure writedecimalnumber;
begin
if j<>16 then gotoxy(1,2+2*j)
else
gotoxy(1,18);
textcolor(10);
write('(',dec,')=');
gotoxy(wherex-1,wherey+1);
textcolor(12);
write(10);
gotoxy(wherex+1,wherey-1);
end;
{ *** DECIMALTOX *** }
procedure decimaltox;
begin
t:=dec;
bin:='';
repeat
y:=t mod j;
t:=t div j;
bin:=hexconst[y]+bin;
until t=0;
end;
{ *** WRITEXNUMBER *** }
procedure writexnumber;
begin
writedecimalnumber;
textcolor(10);
write('(',bin,')');
gotoxy(wherex,wherey+1);
textcolor(12);
write(j);
end;
{ --- MAIN BODY --- }
begin
textbackground(0);
textcolor(10);
clrscr;
readdecimalnumber;
1: for j:=2 to 16 do
if (j>9) and (j<16) then
goto 1
else
begin
writedecimalnumber;
decimaltox;
writexnumber;
end;
readln;
end.

برنامه تبديل مبنای دو به ايکس یا دو به ۳و۴و۵و۶و۷و۸و۹و۱۰ :
PROGRAM MAB_2TOX;
uses crt,dos;
label 1;
const hexconst: array [0..15] of char=('0','1','2','3',
'4','5','6','7',
'8','9','a','b','c',
'd','e','f');
var i,result,t:longint;
bin,bin1:string;
j,r:shortint;
flag:boolean;
{ *** READBINARYNUMBER *** }
procedure readbinarynumber;
begin
clrscr;
repeat
flag:=true;
write(' PLEASE ENTER A
POSITIVE BINARY NUMBER ? ');
readln(bin);
for i:=1 to length(bin) do
if (bin[i]<>'0') and (bin[i]<>'1') then
flag:=false;
until flag and (length(bin)<>0);
end;
{ *** WRITEBINARYNUMBER *** }
procedure writebinarynumber;
begin
if i=16 then gotoxy(1,15)
else
gotoxy(1,2*i);
textcolor(10);
write('(',bin,')=');
gotoxy(wherex-1,wherey+1);
textcolor(12);
write(2);
gotoxy(wherex+1,wherey-1);
end;
{ *** BINARYTODECIMAL *** }
procedure binarytodecimal;
var k:longint;
begin
result:=0;
k:=1;
for j:=length(bin) downto 1 do
begin
if bin[j]='1' then inc(result,k);
k:=2*k;
end;
end;
{ *** DECIMALTOX *** }
procedure decimaltox;
begin
t:=result;
bin1:='';
repeat
r:=t mod i;
t:=t div i;
bin1:=hexconst[r]+bin1;
until t=0;
end;
{ *** WRITEXNUMBER *** }
procedure writexnumber;
begin
textcolor(15);
write('(',bin1,')');
gotoxy(wherex,wherey+1);
textcolor(12);
write(i);
end;
{ --- MAIN BODY --- }
begin
textcolor(10);
textbackground(0);
clrscr;
readbinarynumber;
1: for i:=3 to 20 do
if (i>10) and (i<16) then
goto 1
else
begin
writebinarynumber;
binarytodecimal;
decimaltox;
writexnumber;
end;
readln;
end.

برنامه جدول ضرب به پاسکال :
PROGRAM J_10IN10;
uses crt,dos;
var i,j:byte;
begin
clrscr;
textcolor(blue);
for i:=12 to 69 do
for j:=4 to 22 do
begin
gotoxy(i,j);
write(#221);
end;
textbackground(red);
textcolor(white);
for i:=1 to 10 do
for j:=1 to 10 do
begin
gotoxy(6*j+6,2*i+2);
write(i*j:4);
end;
readkey;
end.
برنامه محاسبه اولین و آخرین مکان یک عدد در بین اعداد :
PROGRAM MAKAN;
uses crt,dos;
var a,n:real;
e,f,i,c:integer;
begin
clrscr;
textbackground(0);
textcolor(11);
write(' ENTER N FOR SEARCH : ');
write(' N= ');
readln(n);
f:=0;
i:=0;
e:=0;
c:=0;
if n<>1 then
a:=1
else
a:=2;
while a<>n do
begin
write(' NEW NUMBER = ');
readln(a);
if a=0 then
begin
write(' THIS NUMBER NOT FOUND ! ');
readln;
exit;
end; { for if };
i:=i+1;
end; { for while }
f:=i;
c:=1;
e:=1;
while a<>-1 do
begin
write(' NEW NUMBER = ');
readln(a);
if a=n then
begin
c:=c+1;
e:=i+1;
end; { for if }
i:=i+1;
end; { for while }
textcolor(10);
write(' COUNTER =',c,'':8,'FIRST PLACE =',f,'':8,'LAST PLACE = ',e);
readln;
end.

برنامه تغییر اندازه مکان نما در پاسکال :
PROGRAM CHANGE_MOUSE;
uses crt,dos;
var i:integer;
{ *** CURSIZE *** }
procedure cursize(size:integer);
var regs:registers;
begin
regs.ah:={$$data};
case size of
0: begin
regs.ch:=$20;
regs.cl:=$20;
end;
1..4: begin
regs.ch:={$$data};
regs.cl:={$$data}+size;
end;
end; { for case }
intr($10,regs);
end;{ for procedure }
{ --- MAIN BODY --- }
begin
clrscr;
textbackground(0);
textcolor(11);
for i:=4 downto 0 do
begin
cursize(i);
readkey
end;
cursize(2);
end.
حل معادله ی درجه دوم :
PROGRAM MOADELEH;
uses crt,dos;
var a,b,c,x1,x2,del:real;
{ *** COMMENT *** }
procedure comment;
begin
clrscr;
textbackground(0);
textcolor(10);
writeln(' AX2+BX+C=0 ');
writeln(' DEL=B^2-4AC ');
writeln(' X1=(-B+SQRT(DEL))/2A ');
writeln(' X2=(-B-SQRT(DEL))/2A ');
writeln;
end;
{ *** GETABC *** }
procedure getabc;
begin
textcolor(12);
writeln('***********************************');
writeln;
textcolor(11);
write(' A = ');
readln(a);
write(' B = ');
readln(b);
write(' C = ');
readln(c);
end;
{ *** SOLVER *** }
procedure solver;
begin
del:=sqr(b)-4*a*c;
if del<0 then
writeln(' THIS EQUATION HAS NO REAL ROOTS ')
else
if del=0 then
writeln(' X1=X2= ',-b/(2*a):5:2)
else
begin
writeln(' X1 = ',(-b+sqrt(del))/(2*a):5:2);
writeln(' X2 = ',(-b-sqrt(del))/(2*a):5:2);
end;
end;
{ --- MAIN BODY --- }
begin
clrscr;
comment;
getabc;
solver;
readkey;
end.

آموزش پاسکال

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

۱-کلمات ذخیره شده
2-شناسه ها
3-ثابتها
4-علائم


نحوه چیدن این اجزا در کنار هم را مقررات یا نحوSYNTAXزبان نامیده می شود وباید در برنامه نویسی رعایت شود.تعریفی از علائم :
1-کلمات ذخیره شده:
کلماتی هستند که منحصرا در اختیار زبان برنامه نویسی
قرار دارند و به منظور خاصی در نظر گرفته شده اند مانند:FOR,BEGIN,END,PROGRAM
که از این کلمات نمی توان برای منظورهای دیگر استفاده کرد .

2-شناسه ها:
شناسه ها به دو دسته شناسه های استاندارد وشناسه های غیر
استاندارد تقسیم می شوند.شناسه های استاندارد کلماتی هستند که از سوی توربو پاسکال
برای منظورهای خاص تعریف شده اند.مانند:Writeln,Readln,Strln;
اماشناسه های غیر استاندار کلماتی هستند که از برنامه نویس تعریف می شوند. مثل
sum,fact,.....;
.حروف کوچک و بزرگ در کلمات کلیدی وشناسه ها یکسان تلقی می شود.اشاره دارندBEGIN هر دو به کلمه ذخیره شده  Begin,BEGinیکسان هستندویاکلمات  SUM,sumیعنی دو شناسه


3-تابتها
:مقادیری هستند که در طول اجرای برنامه تغییر
نمی کنند.ثابتها به دو دسته عددی ورشته ای تقسیم می شوند.
هر آنچه بین علامت گیومه قرار داشته باشد تابت رشته ای تلقی می شود
۴-علائم:
علامت از یک یا چند کراکتر تشکیل شده است که
معنی بخصوصی در یک زبان دارد مثلا علامت *

به معنی عملگر ضرب و کاراکتر$
برای مشخص کردن اعداد در مبنای 16 به کار می رود
.

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

; نام برنامه Program

برای پاسکال تحت داس یا Uses WinCRT; برای پاسکال تحت ویندوز ;Uses CRT

Begin

دستورات

.End

 دستور write :

جهت نوشتن هر متنی روی صفحه ی مونیتور مورد استفاده قرار می گیرد .

;Program ibpersianblogcom

;Uses WinCRT

Begin

   ;('نوشته ی مورد نظر مثل=>Write(' This is made by ib.persianblog.com

.End

 دستور gotoxy :

جهت دادن مختصات چاپ بکار می رود .

;Program ibpersianblogcom

;Uses WinCRT

Begin

;(Gotoxy(10,18

;('.Write('This is made by I.B

;(Gotoxy(5,10

;('Write(' ib.persianblog.com is the weblog of IB programming group

.End

 دستور CLRscr :

 Begin جهت پاک کردن صفحه ی نمایش معمولا" بعد از قرار می گیرد .

 دستور Textbackground :

با استفاده از این دستور می توانیم رنگ زمینه را با استفاده از نام خود رنگ ها تغییر دهیم .(توجه : این دستور در توربو پاسکال تحت ویندوز کار نمی کند )

;Program ibpersianblogcom

;Uses WinCRT

Begin

CLR Scr

);Textbackground(green

);Gotoxy(10,18

;('Write('Our e-mail address is iran@programmer.net

.End

 دستور Textcolor :

جهت تغییر رنگ نوشته به کار می رود .(توجه : این دستور در توربو پاسکال تحت ویندوز کار نمی کند )

از blink همچنین جهت چشمک زدن متن استفاده می شود که در این مثال هم ما رنگ آبی را چشمک زن قرار دادیم . 

;Program ibpersianblogcom

;Uses WinCRT

Begin

;(Textbackground(green

CLR Scr

;(textcolor(red

('write('IB hopes to learn you pascal

;(textcolor(blue + blink

;('Write('you can ask your questions by wayiran@yahoo.com

.End


دانلود زبان پاسکال

در پست بعد محیط توربو پاسکال ۷ را در این وبلاگ دانلود کنید.

 ۲:

 # دستور: writeln

  همان دستورwrite می باشد با این تفاوت که بعد از عمل نوشتن نوشته به خط بعد می رود . 

;Program ibpersianblogcom

;Uses WinCRT

Begin

;('writeln('IB hopes to teach you pascal

.End

استفاده از متغیر :

داده ها اطلاعاتی هستند که از کاربر گرفته می شوند . مثلا اگر کامپیوتر باید عمل جمع را انجام دهد نیاز به اعدادی دارد تا آن ها را جمع کند که این اعداد همان داده هستند .

برای این که بتوان از کاربر داده گرفت ما نیاز به متغیری داریم که این داده در آن قرار گیرد . برای استفاده از متغیر ها ابتدا باید آن ها را تعریف کرد . برای تعریف متغیر باید مانند قسمت هایی که به رنگ بنفس هستند عمل کرد .

 پس از تعریف متغیر باید داده را در آن قرار داد که برای این کار از علامت انتصاب یعنی := مانند قسمت قهوه ای استفاده می کنیم .

;Program ibpersianblogcom

;Uses WinCRT

var

;a:string

;b:string

Begin

'a:='hello

;a:=b

;(write (a

;(write (b

End.

متغیر متغیر ها انواع مختلفی دارند که هر نوع آن ها استفاده مخصوص به خود را دارند . مثلا متغیر  strin برای متن وintegerبرای اعداد می باشد .

در درس های بعد به طور مفصل متغیر ها را مورد بررسی قرار می دهیم .

# دستورread

این دستور برای گرفتن داده از کاربر مورد استفاده قرار می گیرد .

مثال :

این برنامه یرای مثال ابتدا 2 عدد از کاربر می گیرد و آن ها را جمع می کند ، سپس نتیجه را نمایش می دهد .

;Program ibpersianblogcom

;Uses WinCRT

var

;a:integer

;b:integer

Begin

;('write('enter two numbers to add

;(readln(a,b

;a:=a+b

;(write ('a=',a

.End

۳:

 

# دستور if

این دستور را اگر بخواهیم با معنای فارسی آن که در ( ) نوشته ام بنویسیم اینطور می شود :

(سپس)then  شرط  (اگر)if

(شروع)begin

;دستورات

;(پایان)end

که یعنی اگر شرط ما درست بود دستورات را انجام بده .

مثال :

در مثال زیر یک عدد از کاربر می گیریم و اگر آن عدد از 100 بزرگتر بود yes و اگر مساوی 100 بود yesno و اگر کوچکتر از 100 بود no را در جواب نمایش میدهد .

;Program ibpersianblogcom

;Uses WinCRT

var

;a:integer

Begin

;clr scr

;('write('enter greade of our weblog more than 100 or 100 or less than 100

;(readln(a

if a>100 then

begin

;('writeln ('yes

;end

if a=100 then

begin

;('writeln ('yesno

;end

if a<100 then

begin

;('writeln ('no

;end

.End

همانطور که در مثال بالا دیدید در بیان شرط از علامت های <>= استفاده کرده ایم . در زیر اینگونه علامت ها را به طور کامل توضیح می دهیم .

تساوی =

نامساوی<>

کوچکتر>

بزرگتر<

کوچکتر یا مساوی >=

بزرگتر یا مساوی <=

نکته !

اگر ما از دستور if در یک خط استفاده کنیم نیاز به brgin و end نیست مانند این مثال :

('if a=100 then writeln('yesno

 

توجه !

از {} برای نوشتن توضیحات در وسط کد استفاده می شود . از این پس هر متنی را که در میان {} در کدها نوشتیم فقط برای توضیح بیشتر است .

 

# دستور if به همراه else

این دستور دقیقا" مثل if است ولی فقط قسمتی به نام else دارد که توضیح می دهم :

(سپس)then  شرط  (اگر)if

(شروع)begin

;دستورات

|(پایان)end

(در غیر اینصورت)else

(شروع)begin

;دستورات

;(پایان)end

;End

که یعنی اگر شرط ما درست بود دستورات قسمت اول را انجام بده و در غیر اینصورت اگر شرط درست نبود دستورات قسمت دوم را انجام بده .

نکته !

قبل از else , در خط بالایش نباید ; قرار بگیرد که من با | نشان داده ام .

 ۴:

 # دستورfor

این دستور برای تکرار دستورات به کار می رود . به این ترتیب که تعداد دفعات تکرار دستور را با دو مقدار (اولیه و نهایی) مشخص می کنیم .

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

ساختار این دستور به صورت زیر می باشد .

;Program ibpersianblogcom

;Uses WinCRT

var

Begin

do مقدار نهایی  to مقدار اولیه := اسم شمارنده for 

begin

دستورات

;end

.End

مثلا" :

;Program ibpersianblogcom

;Uses WinCRT

var

;i:integer

Begin

for i:=1 to 200 do

begin

;('writeln('visit our site => http://ib.co.sr

;end

.End

که در این دستور ما ابتدا متغیر

i را از نوع integer تعریف کردیم . سپس با استفاده از دستور for از کامپیوتر خواستیم تا 200 بار دستور writeln را انجام دهد که نتیجه آن 200 بار نوشته شدن متن 'visit our site => http://ib.co.sr' است .

مثال :

برنامه ای بنویسید که 5 عدد را بگیرد و معدل را بدهد .

نکته :

متغیر real برای اعداد اعشاری استغاده می شود .

;Program ibpersianblogcom

;Uses WinCRT

var

;i:integer

;num:real

;average:real

Begin

for i:=1 to 5 do

begin

;('writeln('please type your number

;(read(num

avarage:=avarage+num

;end

;(writeln (avarage/5

.End

توجه :

فقط وقتی از

# دستور while

این دستور برای تکرار دستورات به کار می رود . به این ترتیب که تا زمانی كه شرط صادق است دستورات بين begin و end تكرار می شود .

فرق دستور while با for در اين است كه در for تعداد تكرار مشخص است ولی در while اين شرط است كه مشخص ميكند يك دستور چند بار تكرار می شود .

 ساختار این دستور به صورت زیر می باشد .

do شرط while
begin
         دستورات       
;end

مثال :
در اين مثال كه از دستور while كمك گرفتيم كامپيوتر مرتبا' يك حرف را از كاربر می گيرد و اگر آن حرف برابر q بود متوقف می شود .


;program ibpersianblogcom
;uses wincrt
var
;c : char

begin
;clrscr
;(readln(c

while c<>'Q' do
begin
      ;(readln(c    

;end

.end

* برای مرور درس های گذشته و نيزآشنايی با الگوريتم ها  كار را با چند مثال برنامه نويسی ادامه دهیم :

مثال ۱ :
برنا مه ای بنويسيد كه يك عدد بگيرد و فاكتوريل آن را حساب كند و در آخر نتيجه را نمايش دهد .

;program faktoriel
;uses wincrt
var
;fact,n,i : longint

begin
     ;'(writeln('enter an integer number
      ;(readln(n
fact:=1

for i:=1 to n do
          fact:=fact*i     
;end

;(writeln('factorial=',fact
.end

+ ما در اينجا از متغيير longint استفاده كرديم كه همان integer است ولی ظرفيت بيشتری دارد .
+ الگوريتم هم كه بسيار ساده است ‏ابتدا عدد را از كاربر می گيرد بعد ۱ يا همان fact را به تعداد دفعات بزرگی عدد در آن عدد ضرب می كند كه حاصل با راه حل رياضی نيز هماهنگی دارد .

مثال :
برنامه ای بنويسيد که N را از ورودی بگيرد و نتيجه اين سری را محاسبه كند .
1+2+3+4+....+N

;program seri

;Uses WinCrt

var

;i,m,n : integer

begin

;('writeln('Enter one number

;(readln(n

;m:=0

for i:=1 to n do

begin

;m:=m+i

;end

;(writeln('Enter one number:',m

.End

 

مثال:
برنامه ای بنويسيد كه اسامی ۱۰ نفر را بگيرد و آن كدام كه حرف اولش (با توجه به ترتيب حروف الفبای انگليسی) بزرگتر است را چاپ كند .

;program biger name

;uses wincrt

var

;n,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10:string

begin

;('writeln('Enter Name

;(readln(s1,s2,s3,s4,s5,s6,s7,s8,s9,s10

if s1

begin

;n:=s1

;end

if s2

begin

;n:=s2

;end

به اين ترتيب تا s10 می نويسيم

;(writeln('n=',n

.end

مثال درس بعد :
برنامه ای بنويسيد كه مرتبا حروف را از كاربر بگيرد و اگر حرف مورد نظر Q بود از برنامه خارج شود .

برنامه ای بنويسيد که مرتبا حروف را از کاربر بگيرد و اگر کاراکتر مورد نظر Q بود از برنامه خارج شود ..

;program myprog
;uses wincrt
var
     ;c:char     

begin
;clrscr
;(readln(c

while c<>'a' do
begin
;(readln(c
;end

;end

توضيح مثال بالا :

دو خط اول كه برای نوشتن هر برنامه در پاسكال استفاده می شه .

var را وقتی استفاده می كنيم كه بعدش بخواهيم متغير تعريف كنيم .

;c:char يعنی اين كه يك متغير از نوع char (كه می تواند حاوی يك حرف باشد) تعريف كرديم .

begin يعنی اينكه می خواهيم برنامه نويسی را شروع كنيم .

;clrscr يعنی اينكه اگر در صفحه نوشته ای از قبل باقی مانده است اون را پاك كند .

;(readln(c
يعنی اينكه از كاربر c را بپرس يعنی اينكه كاربر می تونه هر چيزی رو كه می خواهد در c قرار بگيره تايپ كنه 
 
while c<>'a' do
begin
;(readln(c
;end
در اينجا از دستور WHILE استفاده كردم و گفتم تا وقتی كه شرط درست نيست دستور بين begin و end را تكرار كن .در اينجا 'c<>'a همون شرط ما هستش و يعنی اينكه تا وقتی كه C نا مساوی a هستش دستورات بين begin و end را تكرار كن .
;(readln(c رو هم كه قبلا توضيح دادم .

end هم كه يعنی تمام .

متغير char
اين متغير مكانی از حافظه است كه يك حرف را می توان درون آن جا داد .

: halt دستور
این دستور جهت اتمام برنامه در هر زمانی مورد استفاده قرار می گیرد . ه

: char متغییر
این نوع متغییر مکانی از حافظه است که یک حرف یا کاراکتر می توان درون آن جای داد .
ه
 

: مثال
با استفاده از دستورfor  برنامه ای بنویسید که مرتبا حروف از کاربر بگیرد و اگر کاراکتر مورد نظر Q بود برنامه خاتمه پیدا کند . 

;program ib
;Uses WinCrt

var
;i:integer
;c:char

begin
;('writeln ('Enter character

for i:=1 to 28 do
        begin
        ;(readln (c
        if c='Q' then
        ;halt
        ;end
;end

.end

توضیح مثال بالا
 دو خط اول كه برای نوشتن هر برنامه در پاسكال استفاده می شه.

  var را وقتی استفاده می كنيم كه بعدش بخواهيم متغير تعريف كنيم.

;i:integer  يعنی اين كه يك متغير از نوع  inteegr تعريف كرديم   (كه می تواند حاوی عدد باشد)

;i:char  يعنی اين كه يك متغير از نوع  charactr تعريف كرديم   (كه می تواند حاوی حرف باشد)

 begin یعنی برنامه نویسی شروع شد.

;('writeln ('Enter character  یعنی متنenter character  را به کاربر نشان بده .  

for i:=1 to 28 do
begin
;end
یعنی دستورات بین  begin و end را 28 بار تکرار کن  .

;(readln (c  یعنی c  را از کاربر بخواه
 

if c='Q' then
        ;halt
        ;end

یعنی اگر  برابر کاراکتر Q بود برنامه را تمام کن .

end   یعنی برنامه را تمام کن.   

 

مثال : برنامه ای بنويسيد که سانتی متر را بگيرد و بر حسب اينچ چاپ کند .
 inch <= cm

اطلا عات مورد نياز :
1inch = 1cm * 2.54

توجه : کاميوتر در حالت يش فرض، اعداد اعشاری را به صورت علمی نمايش می دهد . يعنی ۱۵ = ۱.۵  * ۱۰

;Program ibprogram
;Uses WinCrt

var
;n:real

;begin
 ;(':writeln('enter one real number
 ;(readln(n

;n:=n*2.54

;(writeln('n=' , n
.end

  

توضیح مثال بالا
 دو خط اول كه برای نوشتن هر برنامه در پاسكال استفاده می شه.

  var را وقتی استفاده می كنيم كه بعدش بخواهيم متغير تعريف كنيم.

;n:real  يعنی اين كه يك متغير از نوع  real تعريف كرديم   (كه می تواند حاوی اعداد حقيقی باشد)

 begin یعنی برنامه نویسی شروع شد.

;('writeln ('Enter one real number  یعنی متن enter one real number  را به کاربر نشان بده .  
 

;(readln (n  یعنی n يا همان عدد حقيقی را از کاربر بخواه
 

;n:=n*2.54  يعنی به جای مقدار n مقدار n*2.54 را قرار بده .

;(writeln('n=' , n  يعنی < مقدار n = n > را به کاربر نشان بده.

end   یعنی برنامه را تمام کن.

متغير string
اين متغير مكانی از حافظه است كه نوشته ها و متن (به تعداد 256 character) را می توان درون آن قرار داد . فرق آن با متغیر char در این است که متغیر char می تواند یک حرف را در خود جا دهد در حالی که string می تواند کلمه و یا حتی کلمات (متن) که تعداد حروف آن بیش تر از 256 character نباشد را در  آن جا داد .
توجه : رشته = string = متن یا نوشته

 

بدست آوردن طول رشته (string)
دستور
length  : از این دستور برای محاسبه تعداد حروف یک رشته استفاده می شود .

مثال : برنامه ای بنویسید که یک رشته ( متن) را از کاربر بگیرد و طول رشته (تعداد حروف آن) را چاپ کند .

;program ibprogrammer
;Uses WinCrt

var
;s:string

;begin

;(readln(s
;( (writeln( s , ' = ' , length(s

.end

توضیح مثال بالا
 دو خط اول كه برای نوشتن هر برنامه در پاسكال استفاده می شه.

  var را وقتی استفاده می كنيم كه بعدش بخواهيم متغير تعريف كنيم.

;s:string  يعنی اين كه يك متغير از نوع  string تعريف كرديم (كه می تواند حاوی متن باشد)

 begin یعنی برنامه نویسی شروع شد.

;(readln(s  یعنی از کاربر بخواه تا متنی که باید درون s قرار بگیرد را تایپ کند .

 ;( (writeln( s , ' = ' , length(s
 یعنی طول رشته (تعداد حروف متن) را به کاربر به صورت زیر نشان بده ( اگر s = متن تایپ شده توسط کاربر=welcome to ib )
                           welcome to ib = 11

end   یعنی برنامه را تمام کن.

مثال : برنامه ای بنویسید که یک رشته ( متن) را از کاربر بگیرد و آخرين حرف رشته را ستاره بگذارد.

;Program myprog
;Uses WinCRT
var
;i:integer
;s:string
begin
;('writeln('enter string
;(readln(s
;(i:=lenght(s
;'*'=:[s[i
;(writeln(s
.end

دستور تبديل int به str 
این دستور محتوي يك عد صحيح را به رشته تبديل مي كند

;(عدد,رشته)str

دستور mod
براي تعين زوج يا فرد بودن يك عد مورد استفاده قرار مي گيرد و اگر باقي مانده آن عد تقسيم بر دو صفر بود زوج و در غير اينصورت فرد است

mod 2=0 عدد

مثال : برنامه ای بنویسید که عدد از كاربر بگيرد و بگويد كه عدد متقارن است و اگر نبود بگويد كه عدد متقارن نيست

;Program myprog
;Uses WinCRT
var
;i,len:integer
;s:string
begin
;('writeln('enter number
;(readln(i
;(str(i,s
(len:=lenght(s
if len mod 2=0 then
begin
;('عد متقارن نيست')write
;halt
end;
for i:=1 to len/2 do
begin
if s[i]<>s[len-i+1] then
begin
;('عد متقارن نيست')writeln
halt
end
;('عد متقارن هست')writeln

end.

در اینجا در دستور writeln ما avarage/5 را بین دو علامت ' ' نگذاشتیم چون :' ' استفاده می کنیم که بخواهیم دقیقا" متن نوشته شده توسط ما چاپ شود یعنی در این مثال اگر 'avarage/5' را می نوشتیم خود avarage/5 چاپ می شد ولی اکنون که از ' ' استفاده نکرده ایم نتیجه ی تقسیم مقدار avarage به عدد 5 نمایش داده خواعد شد .;integer:اسم شمارنده

همچنین دستورreadln داده ها را از کاربر در خط بعد می گیرد .

 

من در اینجا یک متغیر از نوع string (متنی) تعریف کرده ام .

ارگ :

با زدن هر دکمه می توانید صدایی مختلف بشنوید.

uses crt;
var
n:char;
begin
clrscr;
repeat
n:=readkey;
if n='w' then
begin
sound(100);
delay(87);
nosound;
end
else
if n='e' then
begin
sound(200);
delay(87);
nosound;
end
else
if n='r' then
begin
sound(300);
delay(87);
nosound;
end
else
if n='t' then
begin
sound(400);
delay(87);
nosound;
end
else
if n='y' then
begin
sound(500);
delay(87);
nosound;
end
else
if n='u' then
begin
sound(600);
delay(87);
nosound;
end
else
if n='i' then
begin
sound(700);
delay(87);
nosound;
end
else
if n='o' then
begin
sound(800);
delay(87);
nosound;
end
else
if n='p' then
begin
sound(900);
delay(87);
nosound;
end
else
if n='[' then
begin
sound(1000);
delay(87);
nosound;
end
else
if n=']' then
begin
sound(1100);
delay(87);
nosound;
end
else
if n='a' then
begin
sound(1200);
delay(87);
nosound;
end
else
if n='s' then
begin
sound(1300);
delay(87);
nosound;
end
else
if n='d' then
begin
sound(1400);
delay(87);
nosound;
end
else
if n='f' then
begin
sound(1500);
delay(87);
nosound;
end
else
if n='g' then
begin
sound(1600);
delay(87);
nosound;
end
else
if n='h' then
begin
sound(1700);
delay(87);
nosound;
end
else
if n='j' then
begin
sound(1700);
delay(87);
nosound;
end
else
if n='k' then
begin
sound(1800);
delay(87);
nosound;
end
else
if n='l' then
begin
sound(1900);
delay(87);
nosound;
end
else
if n=';' then
begin
sound(2000);
delay(87);
nosound;
end
else
if n='z' then
begin
sound(2100);
delay(87);
nosound;
end
else
if n='x' then
begin
sound(2200);
delay(87);
nosound;
end
else
if n='c' then
begin
sound(2300);
delay(87);
nosound;
end
else
if n='v' then
begin
sound(2400);
delay(87);
nosound;
end
else
if n='b' then
begin
sound(2500);
delay(87);
nosound;
end
else
if n='n' then
begin
sound(2600);
delay(87);
nosound;
end
else
if n='m' then
begin
sound(2700);
delay(87);
nosound;
end
else
if n=',' then
begin
sound(2800);
delay(87);
nosound;
end
else
if n='.' then
begin
sound(2900);
delay(87);
nosound;
end
else
if n='/' then
begin
sound(3000);
delay(87);
nosound;
end
until n='q';
exit;
end.

لود کردن

uses crt;

var

i,x,y:integer;

begin

clrscr;

write('loading');
gotoxy(9,10);
for bb:=1 to 50 do
begin
writeln('_');
y:=y+2;
write('    %',y);
delay(20);
x:=x+1;
clreol;
gotoxy(x,10);
end;
delay(500);

end.

برنامه ی عدد اول :

uses crt;
var
f:boolean;
m,i,l:longint;
n:char;
begin
clrscr;
f:=true;
gotoxy(10,8);
write('press q to quit');
gotoxy(10,10);
write('press s to start');
n:=readkey;
if n='q' then
exit
else if n='s' then
begin
clrscr;
read(m);
for i:=2 to (m div 2)-1 do
if m mod i =0 then
f:=false;
write(f);
end;
readln;
readln;
end.

 

SHAYAN SHIRZADIAN

+ نوشته شده در  چهارشنبه یکم خرداد 1387ساعت 18:2  توسط کلانترزاده  |