آموزش پاسکال بخش سوم در ادامه با دستورات حلقه سازی با تعداد تکرار نامعین آشنا می شویم : تعداد تكرار نامعين : While شرط Do Begin ___ ___ ___ End; مثال : برنامه اي بنويسيد كه اعداد 100..1 را چاپ كند Begin I:=1; While i<=100 do Begin Write(i); I:=i+1; End; مثال : برنامه اي بنويسيد كه تعدادي اسم را از ورودي دريافت و به ما بگويد چند بار اسم ali تكرار شده است(آخرين اسم end است ) Var S:integer; St:string; Begin Read(st); While st<> 'end' do Begin If st='ali' then S:=s+1; Read(st); End; write(s); End. مثال : برنامه اي بنويسيد كه تعدادي عدد كه آخرين آنها صفر است را از ورودي دريافت و حاصلجمع آنها را چاپ كند . Begin Readln(num); T:=1; While num<>0 do Begin Sum:=sum+num; Readln(num); T:=t+1; End; Writeln('s=',s,'average',s/t); End; تكليف : براي دانش آموزان يك كلاس برنامه اي بنويسيد كه نام آنها به همراه تعداد نمرات و سپس نمرات آنها را به فرم زير از ورودي دريافت كند.تعداد دانش آموزان كلاس نامعين است ولي آخرين نفر نامش end است .برنامه ميبايستي پس از دريافت هر يك از اطلاعات پيامي به شكل زير چاپ كند . Average: Sum: Ali Name: 3 18 20 13.5 program test; var name:string[10]; ave,sum,nomreh:real; num,i:integer; begin writeln('enter name ' ); readln(name); while name <> 'end' do begin writeln('enter num:'); readln(num); for i:=1 to num do begin writeln('enter nomreh: '); readln(nomreh); sum:=sum+nomreh; end; ave:=sum/num; writeln('name:',name,'sum:',sum,'ave:',ave); writeln('enter name '); readln(name); end; end. تكليف : ميخواهيم براي برنامه هاي خود يك منو تهيه كنيم اين منو شامل موارد زير است 1) load 2) save 3) edit 4) exit please select a number : program test; var num:integer; begin writeln(' 1) load'); writeln(' 2) save'); writeln(' 3) edit'); writeln(' 4) exit'); writeln(please select a number : '); readln(num); while num<>4 do begin case num of 1:writeln('loading'); 2:writeln('saving'); 3:writeln('editing'); end; end; end. مثال : برنامه اي بنويسيد كه دو عدد را از ورودي دريافت و طبق جدول زير نسبت به مقدار آن واكنش نشان دهد 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 For 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 نام آرایه : Array [اندیس ابتدای آرایه . . . اندیس انتهای آرایه] of نوع آرایه نوع متغير آرايه : متغير آرايه خواندن آرايه : مثال : برنامه اي بنويسيد كه نمرات 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; End 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.