1. مهمان گرامی، جهت ارسال پست، دانلود و سایر امکانات ویژه کاربران عضو، ثبت نام کنید.
    بستن اطلاعیه

آموزش پاسکال ، آرایه ها و رشته ها

شروع موضوع توسط minaaa ‏24/11/11 در انجمن Pascal

  1. کاربر پیشرفته

    تاریخ عضویت:
    ‏9/12/10
    ارسال ها:
    19,795
    تشکر شده:
    6,456
    امتیاز دستاورد:
    113
    [h=2][/h]
    مثال : برنامه اي بنويسيد كه دو عدد را از ورودي دريافت و طبق جدول زير نسبت به مقدار آن واكنش نشان دهد۳ ۲ ۱ a
    B+…+۳+۲+۱ ۱..b b..۱ واكنش

    کد:

    Begin Writeln (’ enter a,b :’); Readln(a,b); Case a of ۱:begin for i:=۱ to b do write(i); end; ۲:begin or I;=b downto ۱ do write(i); end; ۳:begin sum:=۰; for i:=۱ to b do sum:=sum+I; write(sum); end; end.


    آرايه ها :
    آرايه ها به عناصري اتلاق ميشود كه با يك نام تعدادي محل از حافظه را كنترل كند براي تشخيص محلها از انديس استفاده ميشود
    انواع آرايه ها :
    ۱- آرايه هاي يك بعدي
    ۲- عناصر دو بعدي
    ۳- آرايه هاي سه بعدي

    تعريف آرايه ها :
    var
    نوع of ]انديس پايان..انديس شروع: array [ نام آرايه
    نوع متغير آرايه : متغير آرايه
    خواندن آرايه :
    مثال : برنامه اي بنويسيد كه نمرات ۱۰۰ دانش آموز را از ورودي دريافت و در يك آرايه بريزد.

    کد:

    Var A:array[۱..۱۰۰] of real; Begin For i:=۱ to ۱۰۰ do Readln(a);


    مثال : برنامه اي بنويسيد كه نمرات ۱۰۰ دانش آموز را از ورودي دريافت و ۵۰ تاي اول را چاپ كند سپس تعداد نمرات ۲۰ را مشخص كند.

    کد:

    Var A:array[۱..۱۰۰] of real; Begin For I;=۱ to ۱۰۰ do Writeln(’enter no(’,I,’)'); Readln(a); For i:=۱ to ۵۰ do Writeln(a); S:=۰; For i:=۱ to ۱۰۰ do If i:=۱ to ۱۰۰ do If a=۲۰ then S:=s+۱; Writeln(s); End.


    پيدا كردن max,min
    عنصر اول =min
    حلقه براي گردش در آرايه
    Min < عنصر فعلي if
    عنصر فعلي min :=
    Write(min);
    مثال : برنامه اي بنويسيد كه با دريافت نمرات ۱۰۰ دانش آموز بالاترين و پايين ترين نمره را در بين اين ۱۰۰ نفر پيدا كند.

    کد:

    Var A:array[۱..۱۰۰] of real; I:integer; Begin For i:=۱ to ۱۰۰ do Readln(a); Min:=a[۱]; Max:=a[۱]; For i:=۲ to ۱۰۰ do Begin If a[۱]< min then Min:=a; If a>max then Max := a; End; Writeln(’max is :’,max,’min is :’,min); End.


    مثال : برنامه اي بنويسيد كه با دريافت ۱۰۰ اسم به ما بگويد تعداد تكرار اسم ali چند بار است وآيا اسم hassan بيشتر ذكر شده يا اسم reza ؟

    کد:

    Var A:array [۱..۱۰۰] of string; Begin For i:=۱ to ۱۰۰ do Readln(a); Ali:=۰; Reza:=۰; Hassan:=۰; For i:=۱ to ۱۰۰ do Begin If a=’ali’ then Ali:=ali+۱; If a=’reza’ then Reza:=reza+۱; If a=’hassan’ then Hassan:=hassan+۱; Endd Writeln(ali is :’,ali); If reza>hassan then Writeln(’reza’) Else Writeln(’hassan’); End.


    مثال : برنامه اي بنويسيد كه با دريافت نام و نمره ۱۰۰ دانش آموز تنبل ترين فرد كلاس را مشخص كند.

    کد:

    Var Name:array[۱..۱۰۰] of string; No:array[۱..۱۰۰] of real; Begin For i:=۱ to ۱۰۰ do Begin Readln(name); Readln(no); End; Min:=no[۱]; Namemin:=name[۱]; For i:=۲ to ۱۰۰ do begin If no Begin Min:=no; Namemin:=name; Writeln(namemin); End.


    [B][FONT=Times New Roman][SIZE=3][COLOR=darkviolet]آرايه هاي دو بعدي:[/COLOR][/SIZE][/FONT][/B]
    وقتي از آرايه دوبعدي استفاده ميكنيم بايد از دو حقه for استفاده كنيم.
    مثال : برنامه اي بنويسيد كه نمرات ۴ كلاس كه هر يك ۲۰ دانش آموز دارد را از ورودي دريافت وتنبل ترين فرد را در اين ۴ كلاس مشخص كند.

    کد:

    Var A:array[۱..۲۰,۱..۴] of real; Begin For i:=۱ to ۴ do Begin For j:=۱ to ۲۰ do Readln(a[j,i]); End; Min:=a[۱,۱]; For i:=۱ to ۴ do For j:=۱ to ۲۰ do If a[j,i]< min then Min:=a[j,i]; Writeln(min); End. ​

    مثال : در يك آرايه ۱۰۰*۲۰دوهزار كاراكتر نگهداري ميشود برنامه اي بنويسيد كه تعداد تكرار حرف A را با a مقايسه كند و همچنين به ما بگويد آيا كاراكتر z در اين ماتريس وجود دارد ؟

    کد:

    Var A:array[۱..۲۰,۱..۱۰۰] of character; Bool:Boolean; B,b۱:integer; Begin For i:=۱ to ۱۰۰ do For j:=۱ to ۲۰ do If a[I,j]=’A’ then B:=b+۱; If a[I,j]=’a’ then B۱:=b۱+۱; If a[I,j]=’z’ then Bool:=true; End; If b>b۱ then writeln(’A>a’); If b If b=b۱ then writeln(’A=a’); If true then writeln(”’z”exist’); End. ​

    تكليف : ميخواهيم نام و نمره تعدادي دانش آموز يك كلاس را از ورودي دريافت كنيم و مشخص كنيم كه تنبل ترين و زرنگ ترين فرد كلاس كيست.چند نفر نمره زير ۱۰ گرفتند؟نام كساني كه نمره آنها در بازه ۱۷ تا ۱۵ مي باشد ب همراه نمره آنها چاپ شود آخرين نفر نامش end است حداكثر تعداد دانش آموزان ۱۰۰ نفر است.

    کد:

    Vara:array [۱..۱۰۰] of string ; b:array[۱..۱۰۰] of real; begin i:=۱; read(a[i]); while a[i]<>‘end’ do begin readln(b[i]); i:=i+۱; readln(a[i]); end; j:=i-۱; min:=a[۱]; max:=a[۱]; for i:= ۲ to j do begin if b[i] >max then begin max:=b[i]; name:a[i]; end; end writeln(name); count:=۰; for i:=۱ to j do if b[i]<=10 then count:=count+۱; writeln(count); for i:=۱ to j do if (b[i]<17) and (b[i]>۱۵) then write(b[i],a[i]); end.[/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i]​
    [i][i][i][i][i][i][i][i][i][i][i]

    [SIZE=2]تكليف : برنامه اي بنويسيد كه حاصل اين عبارت را حساب كند.
    i/i!=۱/۱!+۲/۲!+۳/۳!+۴/۴!+۵/۵!
    N!= ۱*۲*۳*۴*…*n
    [/SIZE]
    کد:

    [LEFT]Begin Sum:=۰; For n:=۱ to ۵ do Begin For m:=۱ to n do F:=f*m; Sum:=sum+n/f; End; Writeln(sum); End. [/LEFT]

    [SIZE=2]تكليف : برنامه اي بنويسيد كه نمرات ۸۰ دانش آموز را كه در چهار كلاس دسته بنده شده اند را از ورودي دريافت كند سپس به سوالات زير جواب دهد.
    ۱- معدل هر يك از كلاسها
    ۲- نمره تنبل ترين و زرنگترين شخص در هر كلاس به طور جداگانه
    [/SIZE]
    کد:

    [LEFT]Var A:array [۱..۴,۱..۲۰] of real; Begin For i:=۱ to ۴ do For j:=۱ to ۲۰ do Begin Writeln(’please enter nomreh’); Readln(a[I,j]); End; For i:=۱ to ۴ do Begin Sum:=۰ ; For j:=۱ to ۲۰ do Begin Sum:=a[I,j]+sum; End; Writeln(sum/۲۰,’average of this class’); End; For i:=۱ to ۴ do Begin Max :=a[۱,۱]; Min:=a[۱,۱]; For j:=۲ to ۲۰ do Begin If a[I,j]>max then Max :=a[I,j]; End; Writeln(I,min,max); End; End.[/LEFT]

    [SIZE=2][COLOR=darkviolet][B]- String :[/B][/COLOR]
    String آرايه اي از كاراكترهاست .اغلب لازم است كاراكترهايي در رشته موجود درج شوندو يا كاراكترهايي به جاي بخشي از رشته نوشته شوند , زيررشته اي در رشته جستجو گردد و يا دو رشته با هم الحاق شوند.
    رشته تهي : طول رشته ثابت نيست و با داداه هايي كه در آن ذخيره شده است مشخص مي گردد.كاراكترهايي كه در رشته قرار مي گيرد از حداكثر طولي كه براي آن تعيين ميشود بيشتر نخواهد بود. اگر name رشته كاراكتري باشد دستور زير name را به رشته تهي تبديل ميكند:
    [/SIZE]
    کد:

    [LEFT]Name:=”;[/LEFT]

    [SIZE=2]تبديل رشته به اعداد :
    در پاسكال زير برنامه هايي وجود دارند كه به آساني ميتوانند رشته ها را پردازش كنند. زيربرنامه val رشته عددي را گرفته به مقدار عددي تبديل ميكند.
    رشته عددي رشته اي است كه حاوي كاراترهاي ‘۰′ تا ‘۹′ و نقطه مميز باشد مثل ‘۱۲.۵′ و’۱۳.۵′ زيربرنامه val به صورت زير به كار ميرود.
    [/SIZE]
    کد:

    [LEFT]Val (st,number,error)[/LEFT]

    [SIZE=2]St رشته اي است كه بايد به عدد تبديل شود و number متغيري است كه رشته تبديل شده به عدد در آن قرار ميگيرد. چنانچه در رشته st كاراكتر نا معتبري (كاراكترهاي غير از( ‘۰′ تا ‘۹′ و’.’ ) , محل وجود آن كاراكتر در پارامتر error قرار ميگيرد. اگر error برابر با صفر باشد معنايش اينست كه كاراكتر نا معتبري وجود ندارد. اگر number از نوع صحيح باشد st به مقدار صحيح و اگر number از نوع اعشاري باشد st به مقدار اعشاري تبديل ميشود .
    مثال زير را در نظر بگيريد:
    [/SIZE]
    کد:

    [LEFT]Var st :string; Num,e:integer; St:=’۳۵۲′; Val (st,num,e); مقدار ۳۵۲ در متغير num ومقدار صفر در متغير e قرار ميگيرد اكنون دستورات زير را در نظر بگيريد : St:=’۳۵#’۲; Val (st,num,e);[/LEFT]

    [SIZE=2]با اجراي دستور val به دليل وجود كاراكتر’ # ‘ كه كاراكتر نامعتبري در اعداد است عدد ۲ در متغير e قرار ميگيرد و معنايش اينست كه كاراكتر شماره ۲ ( شماره گذاري از صفر شروع ميشود) نامعتبر است و عمل تبديل صورت نميگيرد و مقدار num تعريف نشده است.
    تبديل عدد به رشته :
    براي تبديل مقدار عددي به رشته عددي از زيربرنامهstr استفادهميشود و به صورت زير به كار ميرود:
    [/SIZE]
    کد:

    [LEFT]Str (number : format,numstring)[/LEFT]

    [SIZE=2]با اين دستور مقداري كه در number قرار دارد به رشته اي به طول format تبديل ميشود و در رشته numstring قرار ميگيرد . دستورات زير را در نظر بگيريد:
    [/SIZE]
    کد:

    [LEFT]Var x:integer; St:string; X=۳۵۲; Str(x:۵,st);[/LEFT]

    [SIZE=2]با اجراي اين دستور مقدار ۳۵۲ به رشته ‘۳۵۲′ تبديل شده در st قرار ميگيرد[/SIZE]
    [/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i]
    [i][i][i][i][i][i][i][i][i][i]
    [/i][/i][/i][/i][/i][/i][/i][/i][/i][/i]
    [i][i][i][i][i][i][i][i][i][/i][/i][/i][/i][/i][/i][/i][/i][/i]