المپیک برنامه نویسی اولها(قسمت سوم)
هفته ی گذشته همه درگیر نمایشگاه بودیم از اینرو به طرح 2 سوال بسنده کردیم اما این هفته سوالهای بیشتری در انتظار شماست :
8- برنامهای بنویسید که تعداد اعداد بین 200 و 2000 را که بر 17 بخشپذیر هستند ولی بر 7 بخشپذیر نیستند بنویسد.
9- برنامهای بنویسید که n را از ورودی بگیرد و جدول زیر را چاپ کند. مثلاً برای n = 4 :
|
1 |
* |
3 |
* |
|
5 |
* |
7 |
* |
|
9 |
* |
11 |
* |
|
13 |
* |
15 |
* |
10- برنامهای بنویسید که یک عدد را بگیرد (تعداد ارقام آن مشخص نیست) و مجموع ارقام آن را بنویسد. مثلاً برای عدد 7254 عدد18 را چاپ کند.
11- برنامهای بنویسید که n را از ورودی بگیرد و n خط از جدول زیر را چاپ کند. مثلاً برای n = 3 :
|
|
|
1 |
|
|
|
|
* |
3 |
* |
|
|
5 |
* |
7 |
* |
9 |
12- برنامهای بنویسید که یک عدد را بگیرد (تعداد ارقام آن مشخص نیست) و کوچکترین رقم آنرا بنویسد. مثلاً برای عدد 7254 عدد 2را چاپ کند.
المپیک برنامه نویسی اولها(قسمت دوم)
6- برنامه ای بنویسید که عدد n را از کاربر گرفته و 6 امین عدد بزرگتر از n را که جمع یکان و دهگانش 6 است را پیدا کند.
7- الف) برنامه ای بنویسید که دو عدد را بگیرد و جمع رقم یکان اعداد بین این دو عدد را حساب کند.
ب) برنامه ای بنویسید که در مساله ی بالا پیدا کند چند عدد بین دو عدد گرفته شده وجود دارد که جمع یکان و دهگانشان مضرب 5 است
المپیک برنامه نویسی اولها(قسمت اول)
ببخشید کمی به تاخیر سوالها را گذاشتیم، قبل حل سوال به نکات ذیل دقت کنید:
- سوالها از آسان به مشکل مرتب شده اند و شما باید ترتیب سوالها را رعایت کرده و تنها پس از به پایان رسیدن هر سوال حق رفتن به سوال بعدی رو دارید.
- یک folder به نام tamrin در Z باز کرده و جواب تمرینها را به نام شماره سوال در آنجا save کنید. تا معلم شما از این طریق جوابها را چک کنند.
- روشهای مبتکرانه و هوشمندانه برای حل سوالها نمره مثبت دارد.
خوب بریم سراغ سوالات:
1- ب.ب.ک 2 عدد طبیعی از کاربر گرفته و اعداد طبیعی بین آن دو را چاپ کند.
2- ب.ب.ک 2 عدد طبیعی از کاربر گرفته و اعداد زوج بین آن دو را چاپ کند.
3- ب.ب.ک 2 عدد طبیعی از کاربر گرفته و اعداد مضرب 15 بین آن دو را چاپ کند.
4- برنامه ای بنویسید که عددی اعشاری کوچکتر از 1000 گرفته و رند آن را حساب کند.
5- ب.ب.ک 2 عدد اعشاری از کاربر گرفته و اعداد طبیعی بین آن دو را چاپ کند.
منتظر ما باشید!!!
تمرین 89/9/9
2- ب.ب.ک یک خط در راستای عمود بکشد.
3- ب.ب.ک خطی مورب بکشد.(زاویه دار نسبت به محورهای مختصات)
4- با استفاده از دستورهایی که در برنامه ی هفته پیش آمده بود
یک ماشین بکشید و سعی کنید ماشین را رنگ کنید.
تمرین(2) 89/8/25
{Moves a stick figure across the screen.}
uses
Graph, Crt;
const
Directory = 'C:\tp\BGI'; {Graphicd directory}
DelayTime = 250; {time between "frames" - 1/4 of a second}
var
XPosition, YPosition, {Position of stick figure}
Driver, Mode, {graphics system indicators}
I : Integer; {loop control variable}
Standing : Boolean; {flag - determines orientation}
procedure DrawMan (X, Y {input} : Integer;
Standing {input} :Boolean);
{
Draw a standing or jumping stick figure.
Pre : X, Y, Standing are defined.
Post: Stick figure is drawn with head centered at pixel
(X, Y) with arms and legs down if Standing is True
and with arms and legs raised if Standing is False.
}
begin {DrawMan}
Circle (X, Y, 20);
Line (X, Y + 20, X, Y + 60);
if Standing then
begin {Standing}
Line (X, Y + 30, X - 20, Y + 60); {Draw left arm.}
Line (X, Y + 30, X + 20, Y + 60); {Draw right arm.}
Line (X, Y + 60, X - 20, Y + 100); {Draw left leg.}
Line (X, Y + 60, X + 20, Y + 100) {Draw right leg.}
end {Standing}
else
begin {jumping}
Line (X, Y + 30, X - 30, Y + 20); {Draw left arm.}
Line (X, Y + 30, X + 30, Y + 20); {Draw right arm.}
Line (X, Y + 60, X - 30, Y + 80); {Draw left leg.}
Line (X, Y + 60, X + 30, Y + 80) {Draw right leg.}
end {jumping}
end; {DrawMan}
begin {JumpingJack}
InitGraph (driver, Mode, Directory); {Initialize graphics.}
OutTextXY (10, 10,'Press any key to stop the stick figure:');
XPosition := 20;
YPosition := GetMaxY div 2;
{Draw the stick figure repeatealy.}
Standing := True; {Start in standing position.}
repeat
{Draw the stick figure.}
SetColor (White);
DrawMan (XPosition, YPosition, Standing);
Delay (DelayTime); {Wait . . .}
{Erase the stick figure.}
SetColor (Black);
DrawMan (XPosition, YPosition, Standing);
{Move the stick figure and change its position.}
XPosition := Xposition + 5;
Standing := not standing
until KeyPressed
end. {JumpingJack}
تمرین(1) 89/8/25
ب) با استفاده از این برنامه، برنامه ای بنویسید که یک آرایه را از پایین به بالا مرتب کند.
var
a:array [1..10] of integer;
temp, i: integer;
begin
//reading an Array
for i:= 1 to 10 do
begin
write('please enter a number to put in the list the (',i,'): ');
read(a[i]);
end;
// shifting the biggest number in the array to the end
for i:= 2 to 10 do
if a[i] < a[i-1] then
begin
temp:=a[i];
a[i]:=a[i-1];
a[i-1]:=temp;
end;
end.
تمرین های 89/8/18
اینا تمرینای هفته بعدتونه، هیچ بهونه ای برای انجام ندادنشون قابل قبول نیست:
1- برنامه ای بنویسید که 10 عدد از کاربر گرفته و سپس در آن بین بدنبال عدد 11می که کاربر وارد میکند بگردد و بگوید که آیا عدد 11ام در مجموعه 10 عدد قبلی موجود است یا خیر و اگر موجود است چندمین عدد است؟
(1-مسئله را برای حالتی که تنها یک نمونه از آن عدد در مجموعه 10 عدد قبلی وجود دارد حل کنید 2- همان مسئله را برای حالتی حل کنید که بیش از یک نمونه در مجموعه 10 عدد قبلی باشد)
مثال: فرض کنید کاربر به ترتیب اعداد زیر را وارد کند:
18-1
13-2
10-3
19-4
88-5
19-6
44-7
67-8
53-9
3-10
حال فرض کنید کاربر به دنبال 44 باشد، در این حالت خروجی باید اینگونه باشد:
mojood ast, 7om
حال فرض کنید کاربر به دنبال 19باشد، در این حالت خروجی باید اینگونه باشد:
mojood ast. 4om 6om
حال فرض کنید کاربر به دنبال 81 باشد، در این حالت خروجی باید اینگونه باشد:
mojood nist
برنامه ای بنویسید که سریهای زیر را در آرایهای با اندازه مناسب بریزد:
2 | 3+4 | 5+6+7 | 8+9+10 | 11+12+13+14 | ....|...+100+...|
2 | 2+3 | 3+4+5 | 5+6+7+8 | 8+9+10+11+12 | ....|...+100+...|
يه تعدادي برنامه ي آموزشي پيدا كردم، يه نگاهي به برنامه ها بكنبد شايد 4 تا چيز ياد گرفتيد:)
2-برنامه ای بنویسید که با گرفتن تاریخ تولد کاربر و تاریخ امروز بگوید که آیا او به سن قانونی(18 سال تمام) رسیده است یا خیر؟(تاریخ را به سال و ماه و روز بگیرد)
3- با فرض اینکه سال 1300 سال کبیسه است و هر 4 سال یک بار یک سال کبیسه داریم بگویید که در مثال قبل کاربر در طول عمر خود چند سال کبیسه داشته است؟
4- این فرد چند بار در طول عمر خود شب یلدا را دیده است؟
....(ادامه دارد)
دستتون درد نکنه
ماله همه رو حتی اونهایی که تو نظر خواهی بود رو هم دیدم...
یه معذرت خواهی درست و حسابی هم بابت دیر کرد! مخصوصاْ از گلی کانی![]()
|
برنامه ای بنویسید که در یک حلقه نمرات دانش آموزی را بگیرد تا وقتی که -1 را وارد کنیم وسپس معدل را حساب کند :
var
a,b,c,d,e,f,g:integer;
begin
a:=0;
b:=0;
repeat
read(c);
a:=a+c;
b:=b+1;
until (c = -1);
writeln(a / b);
end.
ب.ب.ک.عددی را بگیرد و بگوید ضرب حداکثر چند تا 2 کوچک تر از عدد گرفته شده است:
var
a,b,c,d,e,f,g:integer;
begin
e:=0;
d:=2;
a:=2;
read(b);
for c:=1 to b do
begin
a:=d*a;
e:=e+1;
if a>b then
break;
end;
writeln(e);
end.
ب.ب.ک عدد n را بگیرد و شکلی مانند شکل زیر رسم کند
1
22
333
4444
55555
var
a,b,c,d,e,f,g,h:integer;
begin
c:=0;
read(a);
for b:=1 to a do
begin
c:=c+1;
d:=a-(a-c);
for e:=1 to d do
write(d);
writeln;
end;
end.
****
****
****
****
var
a,b,c,d,ef,g,h:integer;
begin
read(a);
c:=a;
for b:=1 to a do
begin
c:=c-1;
for d:=1 to c do
write(' ');
write('****');
writeln;
end;
end.
+
*+
**+
***+
****+
var
a,b,c,d,e,f,g,h,i,j:integer;
begin
b:=0;
read(a);
writeln('+');
for c:=1 to a do
begin
b:=b+1;
for c:=1 to b do
begin
write('*');
end;
writeln('+');
writeln;
end;
end.
ب.ب.ک عددی را بگیرد و از 1 تا آن عدد را حساب کند نه چاپ:
var
a,b,c,d,ef,g,h:integer;
begin
e:=0;
f:=10;
read(a);
for d:=1 to a do
begin
e:=e+1;
b:=a-(a-e);
write(b*(f div 10));
end;
end.
برنامه ای بنویسید که جمع عوامل 5و7 عدد گرفته شده را چاپ کند:
var
a,b,c,d,e,f,g,h:integer;
begin
read(a);
b:=((a-a mod 7) div 7);
c:=((a-a mod 5) div 5);
writeln(b+c);
end. |
اينم شيرزاديان:
|
برنامه معکوس يک عدد برنامه تقویم با در نظر گرفتن سالهای کبیسه :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 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 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', end; 2: begin textcolor(20); writeln('TABESTAN'); textcolor(13); writeln; writeln('':7,'TIR','MORDAD':31 end; 3: begin textcolor(20); writeln('PAEIZ'); textcolor(13); writeln; writeln('':7,'MEHR','ABAN':28, end; 4: begin textcolor(20); writeln('ZEMESTAN'); textcolor(13); writeln; writeln('':7,'DAY','BAHMAN':31 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. برنامه تغییر اندازه مکان نما در پاسکال : آموزش پاسکال در ابتدا تعریفی از برنامه: نحوه چیدن این اجزا در کنار هم را مقررات یا نحوSYNTAXزبان نامیده می شود وباید در برنامه نویسی رعایت شود.تعریفی از علائم : ساختار کلی برنامه نویسی به زبان پاسکال : ; نام برنامه 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 که در این دستور ما ابتدا متغیر مثال : برنامه ای بنویسید که 5 عدد را بگیرد و معدل را بدهد . نکته : ;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 مثال :
.end * برای مرور درس های گذشته و نيزآشنايی با الگوريتم ها كار را با چند مثال برنامه نويسی ادامه دهیم : مثال ۱ : ;program faktoriel + ما در اينجا از متغيير longint استفاده كرديم كه همان integer است ولی ظرفيت بيشتری دارد . مثال : ;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 begin ;('writeln('Enter Name ;(readln(s1,s2,s3,s4,s5,s6,s7 if s1 begin ;n:=s1 ;end if s2 begin ;n:=s2 ;end به اين ترتيب تا s10 می نويسيم ;(writeln('n=',n .end مثال درس بعد : برنامه ای بنويسيد که مرتبا حروف را از کاربر بگيرد و اگر کاراکتر مورد نظر Q بود از برنامه خارج شود .. ;program myprog ;end توضيح مثال بالا : متغير char : halt دستور : char متغییر : مثال ;program ib var begin for i:=1 to 28 do .end توضیح مثال بالا ;i:integer يعنی اين كه يك متغير از نوع inteegr تعريف كرديم (كه می تواند حاوی عدد باشد) ;i:char يعنی اين كه يك متغير از نوع charactr تعريف كرديم (كه می تواند حاوی حرف باشد) begin یعنی برنامه نویسی شروع شد. ;('writeln ('Enter character یعنی متنenter character را به کاربر نشان بده . for i:=1 to 28 do ;(readln (c یعنی c را از کاربر بخواه if c='Q' then end یعنی برنامه را تمام کن. مثال : برنامه ای بنويسيد که سانتی متر را بگيرد و بر حسب اينچ چاپ کند . اطلا عات مورد نياز : توجه : کاميوتر در حالت يش فرض، اعداد اعشاری را به صورت علمی نمايش می دهد . يعنی ۱۵ = ۱.۵ * ۱۰ ;Program ibprogram var ;begin ;n:=n*2.54 ;(writeln('n=' , n توضیح مثال بالا ;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 بدست آوردن طول رشته (string) مثال : برنامه ای بنویسید که یک رشته ( متن) را از کاربر بگیرد و طول رشته (تعداد حروف آن) را چاپ کند . ;program ibprogrammer var ;begin ;(readln(s .end توضیح مثال بالا ;s:string يعنی اين كه يك متغير از نوع string تعريف كرديم (كه می تواند حاوی متن باشد) begin یعنی برنامه نویسی شروع شد. ;(readln(s یعنی از کاربر بخواه تا متنی که باید درون s قرار بگیرد را تایپ کند . ;( (writeln( s , ' = ' , length(s end یعنی برنامه را تمام کن.
مثال : برنامه ای بنویسید که یک رشته ( متن) را از کاربر بگیرد و آخرين حرف رشته را ستاره بگذارد. ;Program myprog دستور تبديل int به str ;(عدد,رشته)str دستور mod
mod 2=0 عدد مثال : برنامه ای بنویسید که عدد از كاربر بگيرد و بگويد كه عدد متقارن است و اگر نبود بگويد كه عدد متقارن نيست ;Program myprog end.
من در اینجا یک متغیر از نوع string (متنی) تعریف کرده ام . ارگ : با زدن هر دکمه می توانید صدایی مختلف بشنوید. uses crt; لود کردن uses crt; var i,x,y:integer; begin clrscr; write('loading'); end. برنامه ی عدد اول : uses crt;
SHAYAN SHIRZADIAN |
خوشمان آمد!
برنامه هاي خوبي نوشته اين شيرزاديان... فقط بايد چپ چينش ميكرد!
نظر به اينكه هميارها وظيفه ي خودشون رو بدرستي انجام ندادند اين امكان رو به بقيه ميدم كه نهايتاً تا ساعت 16 امروز(چهارشنبه 1/3/87) مابقي جواب سوالهاي تمرين عيد رو به من email بزنند و نمرهي اضافي بگيرند.(بجاش از هميار ها نمره كم ميشه مگر اينكه خودشون هم جواب سوالها رو بفرستند!!!)
نكته: بديهيست ميزان نمره ي كمكي وابسته به سختي سواليست كه ميفرستيد!
آخه شما همیارید...
مگه قرار نبود متن سوالها رو بزارید تو Weblog؟
حالا بزنم از وسط نصف شید!
سعی میکنم تا صبح چهارشنبه یه بلایی سرش بیارم!
2 عدد ابتدای دنباله ی فیبوناچی 1 میباشد و مابقی هر یک از جمع دوتای قبل بدست می آید.
قسمت دوم: برنامه ی بالا را برای n عدد بنویسید.