آموزش پاسکال (قسمت سوم ) آرایه ها : آرایه ها به عناصری اتلاق میشود که با یک نام تعدادی محل از حافظه را کنترل کند برای تشخیص محلها از اندیس استفاده میشود انواع آرایه ها : 1- آرایه های یک بعدی 2- عناصر دو بعدی 3- آرایه های سه بعدی
تعریف آرایه ها : var نوع of ]اندیس پایان..اندیس شروع: array [ نام آرایه نوع متغیر آرایه : متغیر آرایه خواندن آرایه : مثال : برنامه ای بنویسید که نمرات 100 دانش آموز را از ورودی دریافت و در یک آرایه بریزد. ادامه آموزش در ادامه مطلب ....
مثال : برنامه ای بنویسید که دو عدد را از ورودی دریافت و طبق جدول زیر نسبت به مقدار آن واکنش نشان دهد
3 2 1 a B+...+3+2+1 1..b b..1 واکنش Begin Writeln (' enter a,b :'); Readln(a,b); Case a of 1:begin for i:=1 to b do write(i); end; 2:begin or I;=b downto 1 do write(i); end; 3:begin sum:=0; for i:=1 to b do sum:=sum+I; write(sum); end; end. آرایه ها : آرایه ها به عناصری اتلاق میشود که با یک نام تعدادی محل از حافظه را کنترل کند برای تشخیص محلها از اندیس استفاده میشود انواع آرایه ها : 1- آرایه های یک بعدی 2- عناصر دو بعدی 3- آرایه های سه بعدی
تعریف آرایه ها : var نوع of ]اندیس پایان..اندیس شروع: array [ نام آرایه نوع متغیر آرایه : متغیر آرایه خواندن آرایه : مثال : برنامه ای بنویسید که نمرات 100 دانش آموز را از ورودی دریافت و در یک آرایه بریزد. Var A:array[1..100] of real; Begin For i:=1 to 100 do Readln(a[i]); مثال : برنامه ای بنویسید که نمرات 100 دانش آموز را از ورودی دریافت و 50 تای اول را چاپ کند سپس تعداد نمرات 20 را مشخص کند.
Var A:array[1..100] of real; Begin For I;=1 to 100 do Writeln('enter no(',I,')'); Readln(a[i]); For i:=1 to 50 do Writeln(a[i]); S:=0; For i:=1 to 100 do If i:=1 to 100 do If a[i]=20 then S:=s+1; Writeln(s); End. پیدا کردن max,min عنصر اول =min حلقه برای گردش در آرایه Min < عنصر فعلی if عنصر فعلی min := Write(min); مثال : برنامه ای بنویسید که با دریافت نمرات 100 دانش آموز بالاترین و پایین ترین نمره را در بین این 100 نفر پیدا کند. Var A:array[1..100] of real; I:integer; Begin For i:=1 to 100 do Readln(a[i]); Min:=a[1]; Max:=a[1]; For i:=2 to 100 do Begin If a[1]< min then Min:=a[i]; If a[i]>max then Max := a[i]; End; Writeln('max is :',max,'min is :',min); End. مثال : برنامه ای بنویسید که با دریافت 100 اسم به ما بگوید تعداد تکرار اسم ali چند بار است وآیا اسم hassan بیشتر ذکر شده یا اسم reza ؟ Var A:array [1..100] of string; Begin For i:=1 to 100 do Readln(a[i]); Ali:=0; Reza:=0; Hassan:=0; For i:=1 to 100 do Begin If a[i]='ali' then Ali:=ali+1; If a[i]='reza' then Reza:=reza+1; If a[i]='hassan' then Hassan:=hassan+1; Endd Writeln(ali is :',ali); If reza>hassan then Writeln('reza') Else Writeln('hassan'); End. مثال : برنامه ای بنویسید که با دریافت نام و نمره 100 دانش آموز تنبل ترین فرد کلاس را مشخص کند. Var Name:array[1..100] of string; No:array[1..100] of real; Begin For i:=1 to 100 do Begin Readln(name[i]); Readln(no[i]); End; Min:=no[1]; Namemin:=name[1]; For i:=2 to 100 do begin If no[i] Begin Min:=no[i]; Namemin:=name[i]; Writeln(namemin); End. آرایه های دو بعدی: وقتی از آرایه دوبعدی استفاده میکنیم باید از دو حقه for استفاده کنیم. مثال : برنامه ای بنویسید که نمرات 4 کلاس که هر یک 20 دانش آموز دارد را از ورودی دریافت وتنبل ترین فرد را در این 4 کلاس مشخص کند. Var A:array[1..20,1..4] of real; Begin For i:=1 to 4 do Begin For j:=1 to 20 do Readln(a[j,i]); End; Min:=a[1,1]; For i:=1 to 4 do For j:=1 to 20 do If a[j,i]< min then Min:=a[j,i]; Writeln(min); End. مثال : در یک آرایه 100*20دوهزار کاراکتر نگهداری میشود برنامه ای بنویسید که تعداد تکرار حرف A را با a مقایسه کند و همچنین به ما بگوید آیا کاراکتر z در این ماتریس وجود دارد ؟ Var A:array[1..20,1..100] of character; Bool:Boolean; B,b1:integer; Begin For i:=1 to 100 do For j:=1 to 20 do If a[I,j]='A' then B:=b+1; If a[I,j]='a' then B1:=b1+1; If a[I,j]='z' then Bool:=true; End; If b>b1 then writeln('A>a'); If b<a?); If b=b1 then writeln('A=a'); If true then writeln('''z''exist'); End. تکلیف : میخواهیم نام و نمره تعدادی دانش آموز یک کلاس را از ورودی دریافت کنیم و مشخص کنیم که تنبل ترین و زرنگ ترین فرد کلاس کیست.چند نفر نمره زیر 10 گرفتند؟نام کسانی که نمره آنها در بازه 17 تا 15 می باشد ب همراه نمره آنها چاپ شود آخرین نفر نامش end است حداکثر تعداد دانش آموزان 100 نفر است. Var
a:array [1..100] of string ; b:array[1..100] of real; begin i:=1; read(a[i]); while a[i]<>'end' do begin readln(b[i]); i:=i+1; readln(a[i]); end; j:=i-1; min:=a[1]; max:=a[1]; for i:= 2 to j do begin if b[i] >max then begin max:=b[i]; name:a[i]; end; end writeln(name); count:=0; for i:=1 to j do if b[i]<=10 then count:=count+1; writeln(count); for i:=1 to j do if (b[i]<17) and (b[i]>15) then write(b[i],a[i]); end. تکلیف : برنامه ای بنویسید که حاصل این عبارت را حساب کند.i/i!=1/1!+2/2!+3/3!+4/4!+5/5!N!= 1*2*3*4*…*n Begin Sum:=0; For n:=1 to 5 do Begin For m:=1 to n do F:=f*m; Sum:=sum+n/f; End; Writeln(sum); End. تکلیف : برنامه ای بنویسید که نمرات 80 دانش آموز را که در چهار کلاس دسته بنده شده اند را از ورودی دریافت کند سپس به سوالات زیر جواب دهد. 1- معدل هر یک از کلاسها 2- نمره تنبل ترین و زرنگترین شخص در هر کلاس به طور جداگانه Var A:array [1..4,1..20] of real; Begin For i:=1 to 4 do For j:=1 to 20 do Begin Writeln('please enter nomreh'); Readln(a[I,j]); End; For i:=1 to 4 do Begin Sum:=0 ; For j:=1 to 20 do Begin Sum:=a[I,j]+sum; End; Writeln(sum/20,'average of this class'); End; For i:=1 to 4 do Begin Max :=a[1,1]; Min:=a[1,1]; For j:=2 to 20 do Begin If a[I,j]>max then Max :=a[I,j]; End; Writeln(I,min,max); End; End. - String : String آرایه ای از کاراکترهاست .اغلب لازم است کاراکترهایی در رشته موجود درج شوندو یا کاراکترهایی به جای بخشی از رشته نوشته شوند , زیررشته ای در رشته جستجو گردد و یا دو رشته با هم الحاق شوند. رشته تهی : طول رشته ثابت نیست و با داداه هایی که در آن ذخیره شده است مشخص می گردد.کاراکترهایی که در رشته قرار می گیرد از حداکثر طولی که برای آن تعیین میشود بیشتر نخواهد بود. اگر name رشته کاراکتری باشد دستور زیر name را به رشته تهی تبدیل میکند: Name:=''; تبدیل رشته به اعداد : در پاسکال زیر برنامه هایی وجود دارند که به آسانی میتوانند رشته ها را پردازش کنند. زیربرنامه val رشته عددی را گرفته به مقدار عددی تبدیل میکند. رشته عددی رشته ای است که حاوی کاراترهای '0' تا '9' و نقطه ممیز باشد مثل '12.5' و'13.5' زیربرنامه val به صورت زیر به کار میرود. Val (st,number,error) St رشته ای است که باید به عدد تبدیل شود و number متغیری است که رشته تبدیل شده به عدد در آن قرار میگیرد. چنانچه در رشته st کاراکتر نا معتبری (کاراکترهای غیر از( '0' تا '9' و'.' ) , محل وجود آن کاراکتر در پارامتر error قرار میگیرد. اگر error برابر با صفر باشد معنایش اینست که کاراکتر نا معتبری وجود ندارد. اگر number از نوع صحیح باشد st به مقدار صحیح و اگر number از نوع اعشاری باشد st به مقدار اعشاری تبدیل میشود . مثال زیر را در نظر بگیرید: Var st :string; Num,e:integer; St:='352'; Val (st,num,e); مقدار 352 در متغیر num ومقدار صفر در متغیر e قرار میگیرد اکنون دستورات زیر را در نظر بگیرید : St:='35#'2; Val (st,num,e); با اجرای دستور val به دلیل وجود کاراکتر' # ' که کاراکتر نامعتبری در اعداد است عدد 2 در متغیر e قرار میگیرد و معنایش اینست که کاراکتر شماره 2 ( شماره گذاری از صفر شروع میشود) نامعتبر است و عمل تبدیل صورت نمیگیرد و مقدار num تعریف نشده است. تبدیل عدد به رشته : برای تبدیل مقدار عددی به رشته عددی از زیربرنامهstr استفادهمیشود و به صورت زیر به کار میرود: Str (number : format,numstring) با این دستور مقداری که در number قرار دارد به رشته ای به طول format تبدیل میشود و در رشته numstring قرار میگیرد . دستورات زیر را در نظر بگیرید: Var x:integer; St:string; X=352; Str(x:5,st); با اجرای این دستور مقدار 352 به رشته '352' تبدیل شده در st قرار میگیرد . |