صفحه 1:
لا شناخت حل مسئله و ارائه الگوریتم
لا شناخت اجزاء لازم برای حل مسئله
Q
بررسی صحت الگوریتم
صفحه 2:
هدفهای رفتاری
:دانشجو پس از مطالعه این فصل باید بتواند
الگوریتمی را برای حل مسئله ارائه دهد.
* الگوریتم های مختلف برای یک مسئله را مقایسه کند.
1# شرط ها و حلقه ها را در الگوریتم بکار بیرد .
صفحه 3:
معد مه
در ژنذگن روژمره انسان ب مسائل مختلفي روبروست و برای هر کدام از این مسائل (حل
مشکلات) راه حلی و روشی را بر میگزیند. مسانلی از قبیل راه رفتن, غذا خوردن. خواییدن و غیره
که بشر تقریباً هر روز آنها را پیش روی خود دارد.
همه این مسائل نیاز به روشی برای حل کردن دارند مثلا راه رفتن باید با ترتیب خاصی و مراحل
معینی انجام شود. تا مسئله راه رفتن برای بشر حل شود. اصطلاحاً روش انجام کار یا حل مسئله را
الگوریتم آن مسئله مینامند
صفحه 4:
* تعریف الگوریتم
الگوریتم مجموعهای از دستورالعمل هاء برای حل مسئله میباشد که شرایط زیر
را بايد دارا باشد:
* دقيق باشد
* جزئیات کامل حل مسئله را داشته باشد.
* پایانپذیر باشد.
صفحه 5:
+ 2
* مراحل الگوریتم
برای حل یک مسئله باید الگوربتم آن مسئله را مشخص کنیم (یا بیابیم) که
اصطلاحاً طراحي الگوریتم برای آن مسئله نامیده میشود. در طراحی
الگوریتم معمولا سه مرحله زیر را از هم جدا میکنند:
* خواندن دادهها
* انجام محاسبات
* خروجیها
صفحه 6:
مثال الگوریتمی بنوبسید که دو عدد از ورودی دریافت کرده مجموع دو عدد را
محاسبه و چاپ نماید.
boas انجام محاسبات ورودیها.
مجموع دو عدد. جمع دو عدد. a,b
صفحه 7:
مثال: الگوریتمی بنوبسید که سه عدد از ورودی دریافت کرده مجموع و میانگین
.سه عدد را محاسبه و چاپ کند
خروجیها انحام محاسبات ورودیا
چاپ مجموع محاسبه مجموع a
جاب ميانكين محاسبه ميانگین b
صفحه 8:
معمولا درک یک الگوریتم با شکل راحتر از نوشتن آن بصورت متن میباشد. لذا
الگوریتم را با فلوچارت(10170131])نمایش میدهند. فلوچارت از شکلهای
زیر تشکیل میشود.
؟ علامتهای شروع و پایان: که معمولا از یک بیضی استفاده میکنند:
* علامتهای ورودی و خروجی: که معمولا از متوازیالاضلاع استفاده میشود:
صفحه 9:
*علامتهای محاسباتی و جایگزینی: برای نمایش دستورات جایگزینی و محاسباتی از
مستطیل استفاده می کنند:
جایگزین یا محاسبات
*؟ علامت شرط: برای نمایش شرط از لوزی استفاده میشود.
* علامت اتصال: برای اتصال شکلهای مختلف بهم از فلشهای جهتدار استفاده میکنند.
صفحه 10:
* فلوچارت مجموع سه عدد )> Begin
۳"
Read(a,b,c)
Sum < atb+c
Ave < sum/3
ii Write(sum,ave) 7
صفحه 11:
مثال: فلوچارتی رسم نمائید که دو عدد از ورودی دریافت کرده سپس محتویات دو
عدد را پا هم جابجا نماید.
صفحه 12:
emp
temp
temp
a
12
15
صفحه 13:
:فلوچارت مسئله بالا بصورت زیر خواهد بود
صفحه 14:
4 تمرین
١ فلوجارتى رسم نمائيد كه طول و عرض مستطيل را از ورودى دريافت
رده محيظ و عساحتت آلرا محابيه و حاب كتدد
۲- فلوچارتی رسم نمائید که شعاع دایرهای را از ورودی دریافت کرده.
محيط و مساحت انرا محاسبه و جاب نمايد.
فلوچارتی رسم کنید که سه عدد ۲ ,5600۳00 ر 11370 را از و
بافت کرده. محتویات آنها را جابجا نموده. حاصل را در خروجی
پ کند.
صفحه 15:
6- فلوجارتی رسم نمائید که دو عدد از ورودی دریافت کرده. سپس
بحتویات دو عدد را بدون استفاده از متغیر کمکی جابجا کند.
۵- فلوچارتی رسم نمائید که عددی (درجه حرارت برحسب سانتیگراد)
را از ورودی دریافت کرده سپس آنرا به درجه فارنهایت تبدیل کند.
صفحه 16:
:ی
> دستورالعملهاي شرطي
در حل بسیاری از مسائل یا ت تقریباً تمام مسائل نیاز به استفاده از شروط
جزء نیازهای اساسی محسوب میشود. همانطور که ما خودمان در
زندگی روزمره با این شرطها سرکار داریم. بطور مثال اگر هوا ابری
باشد ممکن است چنین سخن بكوييم:
اگر هوا بارانی باشد سپس چتری برمیدارم.
در غیر اینصورت چتر برنمیدارم.
صفحه 17:
NO
عمل يا اعمال بعدى
صفحه 18:
مثال : فلوچارتی رسم نمائید که عددی را از ورودی
زوج بودن آن را تشخیص دهد. in)
Write(‘odd’) ۳
صفحه 19:
صفحه 20:
حير تسس
صفحه 21:
خروح
۱
2 و
اك
oS |i
=
a
8
“riers
صفحه 22:
:ی
* تمرین
۱- فلوچارتی رسم کنید که عددی را از ورودی دریافت کرده. قدر مطلق
عدد را در خروجی چاپ AS
۲- فلوچارتی رسم نمائید که عددی از ورودی دریافت کرده مثبت. منفی
یا صفر بودن عدد را تشخیص داده, در خروجی با پیغام مناسب
چا کت
۳- فلوچارتی رسم نمائید که عددی را از ورودی دریافت کرده. بخشپذیری
آن پر ۳ و ۵ را پررسی نماید.
فلوچارتی رسم نمائید که ضرایب یک معادله درجه دوم را از ورودی
دریافت کرده ریشههای آن را محاسبه در خروجی چاپ کند.
صفحه 23:
** حلقهها
در حل بسیاری از مسائل با عملیاتی روبرو میشویم . که نیاز به تکرار
دارند و عمل تکرار آنها به تعداد مشخصی انجام میگیرد. فرض AES
بخواهیم ميانكين ۰ عدد را محاسبه کنیم. در اینصورت منطقی بنظر
نمیرسد که ۰ متغیر مختلف را از ورودی دریافت کنیم سپس آنها ر
حت ع
صفحه 24:
*حلقه های با تکرار مشخص
*؟حلقه های با تکرار نا مشخص
صفحه 25:
در اين نوع حلقهها تعداد تکرار مشخص میباشد این حلقه از اجزاء زیر
تشکیل میشود:
۱- اندیس حلقه
۲- مقدار اولیه برای انديس حلقه
۳- مقدار افزاینده براى انديس حلقه (معمولا یک واحد در هر مرحله)
4- مقدار نهایی (تعداد تکرا حلقه)
۵- شرطی برای کنترل تعداد تکرار حلقه
صفحه 26:
صفحه 27:
صفحه 28:
صفحه 29:
1۵
1۵
ه و ویو
خروجی
صفحه 30:
مثال : فلوجارتى رسم كنيد كه 2 عدد از ورودی دریافت کرده.
بزرگترین مقدار از بین 2 عدد را بيدا كيده در خروجى جاب نمايد.
انديس حلقه i
بزرگترین مقدار
Max
صفحه 31:
صفحه 32:
ورودی دریافت کرده سپس 5 به و yn 9
صفحه 33:
write(pow)
yes
pow <— pow*x (=)
حلقه
i< 1
صفحه 34:
۱ ۲
(در پاسکال به حلقه مقط مشهورند.)
ر این حلقهها با توجه به ورودی. تعداد تکرار مشخص میشود. و دقیقاً
نمی توان تعداد تکرار حلقه را بدون ورودی معین کرد. اين حلقه ها فقط
شامل شرطی هستند که تا زمانیکه برفرار باشد حلقه اجرا میشود.
صفحه 35:
No
محموعه دستورالعملها
و جاگزینها
صفحه 36:
مثال: فلوچارتی رسم کنید که عددی را از ورودی دریافت کرده
سپس تعداد ارقام آن را شمرده در خروجی چاپ نماید.
؟عدد خوانده شده N
؟ تعداد ارقام count
صفحه 37:
Begin
count g 0
if N>0 then
yes
N <—Ndiv10
count < count+1
صفحه 38:
در حالت کلی جملات سری بصورت:
عدد خوانده شده
جمله اول سری
جمله دوم سری
جمله سوم سری
2 كل
025 a
صفحه 39:
صفحه 40:
3-0
* تمرين
-١ فلوجارتى رسم نمائيد كه عددى از ورودى دريافت كرده. كامل بودن
آنرا بررسى نماید. (عدد کامل. عددی است که مجموع مقسومعليههاى
آن با خودش برابر باشد.)
۲- فلوچارتی رسم کنید كه ا را از ورودی دریافت کرده ا جمله سری
فیبوناچی را تولید نماید.
۳ فلوچارتی رسم نمائید که دو عدد ]1۷ , لا را از ورودی خوانده.
بزرگترین مقسومعلیه مشترک دو عدد را محاسبه و چاپ کند.
صفحه 41:
EE EE EEE EE موممئي
حلقههاي تودر تو *
الكوريتمهايى كه تا حال بكار برديم. فقط شامل یک حلقه بودند.
در صورتى كه در بسيارى از مسائل ممكن است نياز به استفاده از جند
حلقه در داخل هم باشيم. در اين نوع حلقهها باید دقت بیشتری به خرج
دهيم. تا مشکلی پیش نیاید. اگر از حلقههای نوع اول بصورت تودرتو
استفاده کنیم در اینصورت برای هر حلقه شرط نهایی و انديس اوليه
جداگانه باید تعریف کنیم .
صفحه 42:
مقدار نهایی خود تکرار میشود. در کل اگر حلقه اولیه 12 بار تکرار شود و
حلقه داخلی 322 بار. در ایتصورت کل حلقه :
nxm
بار تکرار خواهد شد.
صفحه 43:
صفحه 44:
=
سرى 59 محاسبه نماید:
x
للىيى... + ۳ وت
* اندیس حلقه اول 1
* وریدی لا
* محاسبه فاکتوریل fact
* انديس حلقه داخلى ل
* مجموع Sum
صفحه 45:
cn سپ
صفحه 46:
* تمرینات آخر فصل
۱- فلوچارتی رسم نمائید که آل عدد از ورودی دریافت کرده تعداد
اعداد اول و کامل را شمرده در خروجی چاپ نماید.
- فلوچارتی رسم نمائید که 26 , ۷[ را از ورودی خوانده مقدار سری
یر را محاسبه کند:
Ss برچ شاد + +1- 5
صفحه 47:
ere 17 201ص
6 فلوجارتى رسم كنيد كه تاريخ تولد شخصى را از ورودى خوانده.
سن شخص را با تاريخ روزء محاسبه نموده در خروجى جاب كند.
۵- فلوچارتی رسم نمائيد که (10<10) ۷], لا را از ورودى دريافت
کرده سری فیبوناچی بین ]۷[, ۷[ را توليد كرده. در خروجى جاب كنا
صفحه 48:
Ve
کاربرد آرايه ها در الكو
كوريتم ها
هدفهاي كلي
اخت آرايه ها
5 سد
اخت ا ee جستجو
لگوریت ۱
تفت ریتم های لاز
oe ی لازم برای
35 =
il و
۱ و مر
جستجو يا ا
a زى
صفحه 49:
:دانشجو يس از مطالعه اين فصل بايد بتواند
"ذا از آرایه ها در حل مسئله استفاده کند .
8 بااستفاده از ارایه ها لیستی را مرتب نماید .
در صورت لزوم در لیستی جستجو انجام دهد .
صفحه 50:
فرض کنید بخواهیم اطلاعات ۱۰۰ کارمند را از ورودی بخوانیم و
سپس آنها را مرتب کنیم. در اینصورت باید ورودیها در جایی از
حافظه ذخيره کنیم. در زبانهای برنامهنویسی معمولا از آرایه برای
ذخیره اطلاعات در حافظه استفاده میکنند. در آرایهها ما با توحه به
تعداد ورودیها. طول آن را مشخص میکنیم. سپس دادهها را خوانده در
آن قرار مى دهيم
صفحه 51:
موممئي EE EE EEE EE
پم ده ۰
wis pi ** آرایه
خانههای پشت سر هم از حافظه که همنوع بوده و توسط یک اسم معرفی
میشوند. آرایه نام دارد.
نحوه دسترسی به هر یک از اعضاء آرایه. از طریق اندیس آرایه امکانپذیر
است . برای تعریف آرایه ابتدا طول آرایه که در حقیقت تعداد خانههای آن
راگن هی کلد,.قفین میکتيم: سیسن توع تعانها باید معین شوك
در فلوچارتها آرایهها را بصورت زير نمایش میدهیم:
Name[ 1 .. Length ]
طول آرایه اسم آرايه
صفحه 52:
زير مى باشد:
a{1..100]
Read(ali])
10
صفحه 53:
oe
Nam [ index 1
انديس آرايه اسم آرایه
مثال: فلوجارتى رسم كنيد كه يى آرايه حداكثر ٠٠١ عنصری را از ورودی
دريافت كرده. سيس آن را خروجى نمايش دهد.
صفحه 54:
yes
write(afil)
1 1
للع
Read(alil)
i <— i+l
جع
صفحه 55:
a[1..20]
i<1
ali] <— Nmod2 و و No
1 1 1ه 3
N <— Ndiv2
صفحه 56:
مثال : فلوچارتی رسم نمائید که عددی از ورودی دریافت کرده سپس
اعداد اول قبل از آن را تولید نموده . در یک آرایه قرار دهد.
[2]1..100
1 حه 1
A Read(N) 7
|
ke
‘alt |< 2
a[2] <— 1
صفحه 57:
صفحه 58:
EEE EEE << << ">
(search and Sort ) جستجو و مرتب سازي **
یکی از مسائلی که در بحث طراحی الگوریتم بسیار مهم است. بحث
مرتبسازی و جستجو میباشد. منظور از جستجو اینست که یک مقداری
را از یک لیست جستجو کنیم و منظور از مرتبسازی اینست که یک لیست
مرتب از دادهها را تولید کنیم.
برای جستجو و مرتبسازی الگوریتمهای مختلفی وجود دارد در زیر
الگوریتمهای اولیه. برای جستجو و مرتبسازی را بررسی میکنیم.
صفحه 59:
دو الگوریتم زير غالبا برای جستجو بکار میروند:
صفحه 60:
مين
نیب دوي
لین
با اولي
4
تر تیب
به
عبا جستجو را د
د >
زر
م
ات
7و
ىو
حستجو:
mae
شد
بيدا
جستحو )=
>>
مود
عنصر
Lie
می سب
يسه
مقاد
يه
آراب
عنصر
9
میدهیم,
oo
ales
آن را
اندیس
صفحه 61:
write(index)
صفحه 62:
در جستجوی دودوئی . لیست مورد جستجو مرتب میباشد. لذا برای
جستجو اعمال زیر انجام میشود:
۱- عنصر ۲ با عنصر وسط آرايه كه انديس آن برابر
middle (low+high)/2
مقایسه میشود.
صفحه 63:
tol 9 1
8 559 3 0 د ۱
ليست قرار دارد. لذا آرايه با انديسء جد يد در نظ ر كرفته
میشود و قسمت پایین لیست از فضاى جستجو حذف مىشود.
السك اذى
۳-اگر 2 از عنصر وسط آرایه بزرگتر باشد قسمت بالای لیست حذف
میشود و فضای جستجو, قسمت پایین آرایه خواهد بود.
۶- اگر 2 برابر عنصر وسط باشد عمل جستجو خاتمه میپذیرد.
صفحه 64:
مرتبسازی بحث بعدی این فصل میباشد. برای مرتب کردن دادهها نیز
/ -
الگوریتمهای مختلفی وجود دارد. که هر کدام مزایا و معایب خاص خود
را دارد. بحث مقصل در این مورد را به فصلهای بعد واگذار میکنيم.
صفحه 65:
موممئي EE EE EEE EE
50
* تمرین
*فلوچارتی رسم نمائید که عددی از ورودی دریافت کرده اعداد کامل
قبل از خود را تولید و در یک آرایه قرار دهد.
*فلوچارتی رسم نمائید که یک آرایه حداکثر ۱۰۰ عنصری از ورودی
دریافت کرده عناصری از آن که اول هستند را با صفر کردن حذف نماید.
*فلوچارتی رسم نمائید که یک عدد حداکثر ۲۰ رقمی را توسط آرایهای
از ورودی دریافت نماید. سپس یک عدد تک رقمی را از ورودی خوانده
در عدد ۲۰ رقمی ضرب نموده, حاصل را در خروجی چاپ نماید.
صفحه 66:
هدفهاي
كلي
شناخت اجزاى تشكيل دهنده يك برنامه
شناخت ساختار يك برنامه در زبان ياسكال
بررسى دستكاههاى خروجى و دستورات لازم در زبان
ياسكال براى توليد خروجى
صفحه 67:
:دانشجو يس از مطالعه اين فصل بايد بتواند
اجزاء لازم براى نوشتن برنامه در زبان ياسكال را بداند.
a يك شناسه صحيح در زبان ياسكال را تعريف كند.
ساختار یک برنامه در زبان پاسکال و اعلانهای مربوط به برنامه را
تعریف نماید.
یک برنامه ساده به زیان پاسکال که فقط خاصیت خروجی دازد؛ بنویسد.
صفحه 68:
(Reserved Words ) کلمات ذخیرهشده *
(identifier ( شناسهها *
صفحه 69:
کلمات ذخیره شده, کلماتی هستند که مترجم زبان آنها را میشناسد و
معنای خاصی برای زبان دارند. مترجم زبان به محض مشاهده این کلمات
اعمال خاصی را انجام میدهد. هر زبان دارای تعداد مشخصی
کلمات ذخبره شده میباشد و این تعداد قابل افزایش توسط برنامهنویس
صفحه 70:
then
unit
until
uses
var
with
while
exports mod
file nil
for not
function object
goto of
1 or
implementation packed
in procedure
inherited program
inline record
interface repeat
concat.
constructor
destructor
صفحه 71:
* شناسه در پاسکال برای نامگذاری ثابتهد تایپها؛ يروسيجروهاء توابع»
میدانهای یک رکورد. برنامه و همچنین یوئیت مورد استفاده قرار
مى كيرد.
صفحه 72:
ح 1 5
0 ما تان يبا
علستاندارد: لیر
= اس 0 هااز قباد
53h er t 2 2045 1
۱ نپاسکللتسعر یفشدملند
>
1 ها
تراسا 5-5
turers. ل
userdefine عن
گفته a
مونسود.
صفحه 73:
EE << << ">
* ساختار برنامه در زبان پاسکال
:اجزاء اصلي یک برنامه به زبان پاسکال بصورت زیر ميباشد
عنوان برنامه
قسمت تعاریف برنامه
قسمت دستور العملها
صفحه 74:
Constant Declaration اعلانثابتها ۶
Type Declaration اعلان انواع *
Declaration Variable اعلانمتفیرها *
Declaration Label اعلان برچسبها °
صفحه 75:
بصورت زیر بیان کرد:
استفاده از کلمه ذخیره شده ۳100713100 و اسم برنامه ( که میتواند
بكار برده نشود )
قسمت تعاریف شناسهها
بلوک اصلی برنامه که با 36010 ¢5,5 5 4 End همراه نقطه
(.) ختم میشود.
هر دستور در پاسکال به ( ۶) ختم میشود.
صفحه 76:
block
شناسه
del
| Statement
صفحه 77:
> << کچ
*مثال هاي حل شده
Program Print ( output ) ;
Begin
Writeln (' Pascal Language
۱۱8 Writeln (' Hello'
):
End.
صفحه 78:
:خروجي برنامه بالا بصورت زیر ميباشد
Pascal Language
Hello
صفحه 79:
فصل 5
نواع عملگرها و دادهها در زبان باسكال
هدفهاي
كلي
معرفي انواع عملكرها در زبان پاسکال
شناخت انواع دادهها
بررسي اولویت عملگرها
معرفي دستورات جايكزيني در باسكال
صفحه 80:
:دانشجو پس از مطالعه این فصل باید بتواند
"انواع عملگرها در زبان پاسکال را بكار ببرد
انواع دادهها برای یک برنامه را تعريف كند.
"ارايت عله عا دن تک عبارت وا تفحه دهد
ایک برنامه ساده با عملیات معمولی را بنویسد:
صفحه 81:
si لک ها
عملگرها نمادهایی هستند که برای انجام اعمال خاصی مورد استفاده
قرار میگیرند.عملگرها برای انجام اعمال خاصى روی عملوندها
( 026181205 ) بكار مىروند. با توجه به نوع عملگر ممکن
است يك يا دو عملوند وجود داشته باشد. عملگرها در زبان
ياسكال از تنوع زيادى برخوردارند.
صفحه 82:
صفحه 83:
منال نام عملگر
7 جمع ص
ae x-y, x وضع ١
= ضرب ay)
div تقسیم adivb
mod باقیمانده تقسیم |amodb
me سا | بح اه
5
صفحه 84:
مثال نام مار
۷ < 1 بزرگتر >
« بزرگتر مساوی =>
2s Sy كو جكتر <
د کوچکتر مساوی <=
aes مساوی بودن =
x<>y نامساوی ><
صفحه 85:
مثال
a>y and
y<x
xy 01
y<x
Not (x)
OR
Not
صفحه 86:
صفحه 87:
بالاترین تقدم (
Not
div / mod
- +
Shl shr
< =< =>
<> =
And
XOR
صفحه 88:
>" << آ" « ا
* انواع دادهها ( 965 012182 )
(Simple data type) ol. cesls <
Structural 122182 ( ( دادههاى ساختيانفته
Types
(Pointer Data Types) دادههاى اشارمكر
صفحه 89:
Char type) «Sis ¢s°
*صحیح ( 1۳1606۲ )
#عشاری (حقیقی)
String type) las, ¢5°
*نوع Boolean type) da
صفحه 90:
محدوده
ز 0 تا 255
128؟! 127
از 32768- تا 32767
از 0 تا 65535
از 2147483648- تا
2147483647
es:
Byte
Shortint
Integer
Word
Longint
صفحه 91:
10
تعداد ارقام
معني دار
13-11
8-7
16-15
30-19
30-19
محدوده
2.2 6-39 ..,
1.7 8
1:5 رت
7 3.4
e-324 ... 5.0
1.7 e 308
e -4932 ... 3.4
1.1 e 4932
69 oe:
9.2:e 18
Real
Single
Double
Extend
Comp
صفحه 92:
انواع دادههای ساختیافته عبارتند از:
ارایهها
رکوردها
مجموعهها
فایلها
صفحه 93:
EE EE EEE EE ">
(Variables) & pio *
متغیر. محلی از حافظه است که دارای نوع و اسم میباشد. نوع متغیر همان
,نوع داده بوده و اسم متغیر از قواعد اسم گذاری شناسه تبعیت میکند
در پاسکال برای معرفی متغیرها بصورت زیر عمل میکنند:
(کلمه ذخیره 14-5( Var
نوع متغیر: اسم متفیر
صفحه 94:
>" << آآآآاحسأ"اآ۳
(Constants) kat *
یک ثابت نام شناسهای است که در آغاز یک برنامه یک مقدار در آن جاگزین
میشود. درست مانند متغیرها. ثابتها را میتوان بعنوان خانههایی از حافظه در نظر
بكيريم که مقدار دادهها در آنها ذخیره میشود ولی مقدار ثابت مشخص میباشد,
,طوری که نمیتوان مقدار یک ثابت را در برنامه خود بوسیله یک دستور تغییر داد
te Sees pty po عریف ینکن cl
مقدار ثابت < اسم متفیر Const
صفحه 95:
:ی
* دستور جايگزيني
برای قرار دادن یک مقدار یا مقدار یک متفیر داخل یک متغیر دیگ از دستور
.جایگزینی استفاده میکنند
شکل کلی یک دستور جایگزینی در پاسکال بصورت زیر است:
عبارت محاسباتی t= اسم شناسه
عبارت قیاسی يا
عبارت منطقی
صفحه 96:
"" << آ" "اس "اآ" ۳طء+آ۳
آترودان فو bad When نه بر نامه
(Comment)
افزودن مطلب توضیحی در درون خود برنامه عملی پسندیده و مطلوب است
بدین ترتیب که بعد از مدتی امکان فراموشی کار با برنامه از بین میرود و در
.کل میتوان گفت که نوشتن توضیحات در پرنامه خوانایی آن را بالا میبرد
در پاسکال توضیحات بین دو آکولاد محصور میشوند.
This is comment } {
{ This program written by A.
Pascal }
صفحه 97:
4 مثال
جابجا كردن مقدار دو متغير
17
صفحه 98:
Var
a,b, temp : integer
Begin
a:=15;b:=17;temp:=0;
temp: =a;
a:=b;
خروجي برنامه 0
برط - ط ارو دو 13 رطملا -حة
صفحه 99:
EEE EEE
چند نکته در مورد برنامهنويسي
استفاده از اسامی با مفهوم برای متغیرها
* استفاده از دستور 0115 در صورتی که مقدار
ثابت در برنامه وجود داشته باشد.
سوال جوابی بودن برنامه (ورودیها و خروجیها بايد
دارای پیغام مناسب باشند)
*_نوشتن برنامه با فیمت مناسب (رعایت قرار گرفتن
خطوط مختلف برنامه زیر هم و فاصله گذاشتن آنها از
صفحه 100:
EE EE EEE EE موممئي
تمرینات *
«حاصل عبار تهاي زیر را بدست آورید
A)3*13 Mod3 div3 =?
B)7.3*5/3=?
C)(3+4<6) and (4+7<13)=?
D)33-8*3 div 3 mod (5 div3) =?
E)NOT (((3-4 MOD3)<5) and((6 div 4)
<=3 ))
صفحه 101:
A: = true ; B: = false ; C: = true ;
A)(A AND B) OR (A AND C)=?
B)(A OR NOT B) and (NotA ORC)=?
C)A OR B AND C=?
D) NOT (A OR B) AND C=?
صفحه 102:
EE << << ">
تمرینات برنامهنويسي
© برنامهای بنریسید که ابماد مخللت که عبارتند از ۳: ۱۲ راادر نظر
گرفته محیط و مساحت آن را محاسبه و با پیغام مناسب در
خروجی چاپ کند.
برنامهای بنویسید که دو متغیر صحیح با مقادیر ۳, ۱۵ زا دوز
گرفته محتویات دو عدد را بدون استفاده از متغیر کمکی جابجا
نماید.
* _ برنامهای بنوبسید که سه عدد بنام های , 1121۳0
Second, First بترتیب با مقادیر ۱۷, ۱۳,۱۵ را در
نظر گرفته بطور چرخشی مقادیر آنها را جابجا نموده در خروجی
لكل
صفحه 103:
6 فصل iG
ورودي و خروجي
معرفیدستورلتخروجی 610 ۱۷۷۲
معرفی خروجی فرمتبندی شده
بررسی دستورات ورودی 1٩630 و ReadLn
صفحه 104:
:دانشجو يس از مطالعه ابن فصل بايد بتواند
et ارات نر نظن ادر ري شان دقل
#أعبارات خروجى را با فرمت مناسب چاپ کند.
Gla ll مورد نياز برنامه را از ورودى دريافت نمايد.
#ابرنامةهاى ساده به زبان ياسكال بنويسد.
صفحه 105:
> << کچ
* خروجي با دستور ۲۷۲6
اين دستور برای نوشتن اطلاعات در خروجی بکار میرود. اطلاعات خروجی
میتوانند ثابتهای عددی. مقادیر متغیرها. عبارات و غیره باشند. شکل دستور در
:حالت کلی بصورت زیر است
(....... و متغیر ۲ و متغیر ۱ )۲۷۲16
يا sind ی عیارت: ۷و عبارت۱ 0
.. و ابت ۲ وابت CV
صفحه 106:
Ch: char ;
R: Real ;
egin
A:= 10; B:=15 ;
Ch: ="T' ۶
R: = 12.25
Write ('A=',A,'
B=',B) ;
Write (‘ch =',ch,'R=',R) ;
Write (' sum of A and B=',A+B) ;
ind. { end of program }
ی برنامه فوق در خروجی خواهیم داشت
B= 15 ch = TR = 1.2250000000 e + 01 sum of A and
صفحه 107:
> << کچ
٠ خروجى با دستور Writeln
اين دستور همانند دستور ۷۷۲16 عمل مىكند با اين تفاوت كه بعد از
اجراء كنترل را به ابتداى سطر بعد منتقل مى كند در نتيجه موجب چاپ
دادههای بعدى در ابتداى سطر بعد مى شود.
صفحه 108:
R: Real
in
15 < :ظ : 10 < :۱
2 ۳ ۲ * 2 ود
8-1228 7
Vriteln ; { new line }
Vriteln('A=',A,' B=',B);
Nriteln('Ch=',ch,'R=',R);
Vriteln ('Sum of A and B=',A+B) ;
.{ End of program }
:خروجی برنامه بصورت زير میباشد
A=10 ظ < 15
Ch=T R=1.225000000 e + 01
Sum of A and B= 25
صفحه 109:
۹
هه
خروجي فرمتبندي شده
اگر بخواهیم اطلاعات با فاصله های مشخص یا در مکان
مشخصی در صفحه نمایش قرار گيرند. باید فرمت جاپ
.را در دستورات بیان شده مشخص کنیم
صفحه 110:
:فرمت اعداد صحیح بصورت زير مشخص میشود
( طول میدان: داده صحیح ) ۷۷۲11۵18 یا Write
صفحه 111:
در تعريف طول ميدان براي متغيرها يا دادههابي از نوع صحيح به نکات زیر توجه کنید:
اكر طول ميدان از طول ارقام عدد صحيح بيشتر تعریف شود عدد در
منتهى اليه سمت راست ميدان نوشته مى شود.
+ اگز طول میدن اژ طول ارقام عدد صحیح کمتر تغریف شود طول dy lige
اندازه تعداد ارقام در نظر كرفته مى شود و طول ميدان تعريف شده بیاثر
خه اهد ب د.
صفحه 112:
X:= 3200 ;
As. = 12) 5
B= 217) :
Write (X:3,A:5 , B:5) ;
See دري
3200 12 217
صفحه 113:
برای نمایش اعداد اعشاری بصورت دلخواه می توان با تعریف طول
.میدان و تعداد ارقام اعشاری, عدد مزبور را نمایش داد
در حالتک لیطولمیللنرا میتسولنبه صوونذیر تعریفکرد :
( تعلداد ایقام بسعد از صمیز: طولمیدلن Write (cick pi
۷۲۵۴ با
صفحه 114:
اگر طول میدان بزرگتر از تعداد ارقام عدد ذکر شود. عدد در منتهی الیه سمت راست
مان مى كود
اكر فقط طول ميدان ذكر شود. عدد به صورت نماد علمى در طول ميدان مشخص شده
بجا ا دود
از آنجائى كه براى نمايش اعداد در نماد علمى حداقل 8 محل مورد نياز است. لذا
هنگامی که تنها طول میدان ذکر شده باشد. اكر از 8 رقم كمتر باشد. حداقل ۸ رقم
در نظر كرفته مى شود
صفحه 115:
۷ هنگامی که طول میدان همراه با تعداد ارقام بعد از ممیز ذکر شود. اگر طول
میدان کوچکتر از مقدار عدد باشد. پاسکال تنها طول میدان را به اندازهای
که مورد نیاز است تصحیح کرده و آنرا برابر اندازه واقعی که عدد در آن
قرار میگیرد. اصلاح میکند.
۲ اگر تعداد ارقام بعد از ممیز زیاد باشد و تعداد ارقام بعد از مميز ذكر شده د
ر طول میدان کمتر از تعداد ارقام اعشاری عدد باشد. تعداد ارقام اعشار
مطابق درخواست برنامهنویس نشان داده خواهد شد و رقم اخر اعشار آن
نسبت به عدد بعدی گرد میشود.
صفحه 116:
برای نمایش رشتهها و کاراکترهای با طول میدان بصورت زیر عمل
تن .
( طولمیدلث متغیر یسا عباتوشتهلییا کاراکتری) Write
در توربو پاسکال. کلیه موارد گفته شده در مورد اعداد صحیح برای
برشتهها ثیز صادق است
صفحه 117:
* ورودي با 13620 , 16۵012
از اين دستور برای خواندن داده ها و اختصاص آنها به متغیرها
:استفاده میشود. در خواندن داده ها به دو موضوع بايد دقت شود
منبع دادمها یبعنیدستگام ورودیکه از آندادمها خولنده -1
مینسود
متغيرىكه دادمهاىخولنده شده در كنقرار موكيره -2 .
صفحه 118:
... و متغير 7 و متغير 15680 (
اين دستور عمل خوائدن دادهها و ذخيره آنها در متغيرها را انجام مىدهد
و يس از اتمام عمل خواندن كنترل را براى خواندن و نوشتنهاى بعدى
در همانخط نگه میعارد .
صفحه 119:
ram Example _1 (input, output) ;
first , second , temp: integer ;
Writeln ;
Writeln ('Please Enter two numbers') ;
Readln ( first , second ) ;
Temp: = first ;
First: = second ;
Second: = temp ;
Write (' first = ', first , 'second = ': 10, second )
{end of program }
_
صفحه 120:
خروجی برنامه بالا به صورت زیر میباشد:
Please Enter two numbers
15 17
First = 17 second = 15
صفحه 121:
>" آاس۳
تمرینات
خروجوقطعه برنلعهوير را تسعيينكنيد :
Valuel: = 27.3 ;
Value2: = -8.5 ;
Writeln (' Valuel is', Valuel ) ;
Writeln ) ' Value2 is', Value2 ) ;
Sum: = Valuel1 + Value2 ;
Writeln ('Sum of Two Values =',
Sum: 6:2) ;
صفحه 122:
Writeln (' Xis ': 10,.X%: 6:2 ,'T istr4,1:5) 3
Writeln ('I is': 10,1: 1) ;
Writeln ('Xis':10,X:2:1) ;
Writeln ('Xis':15,X:7:1) ;
Writeln ( \Tis*: 1105‘ X is ': 104% 723 ))>
صفحه 123:
* تمرینات برنامه نويسي
برنامهای بنویسید که دو عدد را از ورودی دریافت کرده و
محتویات آنها را بدون استفاده از متفیر کمکی جابجا نماید
برنامهای بنویسید که سه عدد صحیح , Third
Second , first را از ورودی با پیغام مناسب دریافت
کرده سپس محتویات این سه متغیر را بصورت چرخشی جابجا
نموده با پیغام مناسب در خروجی چاپ کند.
صفحه 124:
برنامهای برای یک حسابدار اداره جمع آوری مالیات بنویسید که صورت
.حسابهای مالیات را محاسبه نماید
خورودی
شماره شناسایی مالیات دهنده
بهای ارزیابی شده
نرخ مالیات
اخروچین
صورت حساب بافرمت مناسب شامل تمام دادههای ورودی و میزان بدهی
صفحه 125:
فصل 7
ساختارهاي شرطي و کنترلي
هدفهاي كلي
معرفىدستور شرطي©119 20ة If
معرفى دستور CASE
پررسی دستورات تکرار for. while . repeat
استورات شرطی متدا <
بررسی چند تابع و روال استاندارد زبان پاسکال
صفحه 126:
:دانشجو يس از مطالعه ابن فصل بايد بتواند
"ا برنامههايى را بنويسد كه در آنها نياز به استفاده از شرط وجود دارد.
8 تفاوتهای بین دستورات مختلف با ك1 و 14 -©19© را تشخيص دهد.
كا برنامههايى كه نياز به تكرار تعدادى عمليات داشته باشئد را بنویسد.
"ا در صورت نياز بتواند در برنامههاء از روالها و توابع استاندارد زبان استفاده نماید
صفحه 127:
EEE EEE
2
دستورات شرطى “of
بطور کلی توسط اینگونه دستورات میتوان بر حسب شرایط مختلف.
تصمیمات متفاوتی را اتخاذ نمود و برحسب برقرار بودن یا نبودن شرایط
.دستورات متفاوتی را اجرا نمود
ت شرطي در حالت كلي به دو نوع تقسيم مي شوند:
دستور ]1
دستور 256
صفحه 128:
هرگاه در طول برنامه نیاز به استفاده از شرط یا شروط داشته باشیم. از دستور
1 .ستفاده می کنیم
دستور 11 بطور کلی به سه شکل بر حسب نیاز ممکن است ظاهر شود:
cooly if
Else sto. if
های متداخل
صفحه 129:
then
در اين نوع دستور شرطی اگر شرط خاصی تحقق يافته باشد. عمل يا اعمال
خاصی انجام میشود. در غیر اینصورت برنامه روال عادی خود را طی می کند.
در صورتی که شرط برقرار باشد ارزش منطقی 11116 به خود میگیرد و
اگر شرط برقرار نباشد. ارزش منطقی 32156 به خود خواهد گرفت.
صفحه 130:
:دیاگرام دستور بالا بصورت زیر میباشد
۵00۱5
صفحه 131:
Number: integer ;
Begin
Write ('Please enter Number:') ;
Readlin ( Number ) ;
if Number>0 then
Write (' Number is positive ' )
End
خروجی برنامه بالا بصورت زیر است:
Please enter Number: 12
Number is positive
صفحه 132:
* در این دستور ابتدا شرط بررسي ميشود, در
صورتي که شرط برقرار
mush عمل يا اعمال خاصي را انجام ميدهد و
در صورتي که شرط برقرار نباشد. عمل یا
اعمال بخصوص ديگري را اتجام خواهد داد.
صفحه 133:
۱ دستور
else
رز دستور ۲
دیاگرام دستور بصورت: د
صفحه 134:
gin
Writeln (‘Please enter Number:') ;
Readln ( Number ) ;
if (Number mod 2) =0 Then
Write (' even ' )
else
Write ('odd') ;
d. { end of program }
خروجی برنامه بالا بصورت زیر است:
Please enter Number:
17
odd
صفحه 135:
End
Else
Begin
ز دستور 1
ز دستور 2
صفحه 136:
هركاه در نوشتن برنامه نياز به انتخاب يك شرط از بين چند شرط داشته
باشیم. معمولاً از 1 متداخل استفاده مى كنند. در جنين مواقعى استفاده از 14
متداخل كارائى برنامه را بالا مىبرد زيرا بجاى كنترل تمام شروط فقط تا
زمانيكه شرط برقرار نشده. ]1 ها بررسی میشوند. بعد از برقرار شدن يكى
از شروط. كنترل برنامه به بعد از ۶ منتقل میشود و اين در بهبود كارائى
يك برنامه مى تواند بسيار موثر باشد.
صفحه 137:
if )2 عبیتشرطیا then
۱ دستور
60 عبيتشرطىئ؟ 14 واه
دستور۲
08۲ عبلیتشرطی else If
دستور ۳
else
1] عبیتشرطیا then
if عبیتشرطی] then
دستور |
else
دستور ۲
صفحه 138:
Grade
17-20
14-17
12-14
10 - 2
0 - 0
صفحه 139:
ReadIn ( Grade )
if Grade > = 17.0
Writeln ('Grade is A')
Else If Grade > = 14.0 Then
Writeln (' Grade is B')
Else If Grade > = 12.0 Then
Writeln ('Grade is C')
Else If Grade > = 10
Writeln (' Grade is D')
Else
Writeln (' Grade is F ‘¢
Writeln ('Press any Key ...' : 30
ReadIin :
Then
صفحه 140:
زبان پاسکال دستور 1856 را بصورت زیر در نظر میگیرد:
Case oc Of
و دستور١ 0 : مقدار ۱
,م دستور ۲ . : مقدار ۲
م دستور ۳ : مقدار ۳
Otherwise
> دستور
End ; { End of case }
صفحه 141:
Write (' please enter two Numbers: ' )
Readin(a,b) ;
Write (' please Enter A operator: ' )
Readeln ( op) ;
Case op of
'+': Writeln ('Sum =',(a+b):6:
2) 3
'.': Writeln (' Subtract =',(a-b):
63.25); >
'*': Writeln (' Multiple =',(a*b):
6:2)
۱/۰۰ Writeln. (‘ divide’= ‘) (a/b )1/6: 2)
ade oon ora nar a acne ENN
صفحه 142:
دیاگرام دستور ۵56 بصورت زير ميباشد:
صفحه 143:
EE << << ">
* ساختارهاي کنترلي
بسیاری از مواقع لازم است عمل يا اعمال به تعداد دفعات معین یا نامعین انجام شوند
در چنین مواقعی زبانهای برنامهنویسی دستوراتی دارند كه مى توان اين اعمال تکراری
را انجام داد. در حالت کلی ساختارهای کنترلی شامل یک یا چند شرط و همچنین
متغیر یا اصطلاحاً شمارندهای برای پایان دادن به شرط میباشند
صفحه 144:
0 مقدار نهایی 10 مقدار اولیه - اندیس For
۶ دستور
باید توجه داشته باشید که در حلقه تعداد تکرار کاملاً مشخص است و حلقه دقیفاً به
.تعداد تکرار مشخص اجرا میشود
صفحه 145:
دستور برای انجام عمل يا اعمالی مشخص به تعداد تکرار معین بکار برده میشود.
نه 101 شامل یک اندیس ( 10065 ) مقدار اولیه ( ۷۵1۳6 111 ) مقدار نهایی
( ۷۵16 1۳881 ) و مقدار افزاینده میباشد. اين حلقه با قرار دادن مقدار اولیه در
س حلقه شروع شده و بعد از هر تکرار یک واحد به اندیس حلقه اضافه میکند تا
نهایت به مقدار نهایی برسد. شکل کلی حلقه بصورت زیر میباشد:
صفحه 146:
Var
i, number , Sum: integer ;
Begin
Writeln (' please enter 100 Numbers:
1
For I:=1 to 100 do
Begin
ReadIn (number ) ;
Sum:= Sum + number ;
End ;
Writeln ('Sum =', Sum) ;
End. { end of program }
صفحه 147:
0 مقدار نهاي 001171180 مقدار اولیه - : لندیس ۴01
۶ دستون
ار اين شکل از دستور 370۳ ابتدا مقدار اولیه در اندیس حلقه قرار داده می شود
و بعد از آن در هر تکرار حلقه یک واحد از اندیس حلقه کم می شود تا به
مقدار نهایی برسد .
صفحه 148:
Var
i,n, Fact : integer ;
Begin
Fact: =1 ;
Write (' please enter A Number ') ;
Readin (n) ;
For I:=n downto 1 = do
Fact : = Fact * i ;
Writeln (' Fact = ', Fact) ;
End .
صفحه 149:
0 مقار نهایی 0 مقدار ایلیه - : لندیسا for
© مقدار نهایی 0 مقدار اولیه -: اندیس 2 for
۶ دستور
صفحه 150:
in
For j:=1 to 3 do
Write (' pascal': 8) ;
Writeln ;
1
خروجی
Pascal Pascal Pascal J) a>» (i =
1)
Pascal Pascal 2856081 مرحله دهم ) 1 >
2)
Paceral Paceal Pacecal . si. .f 7)
صفحه 151:
مقدار
نهايي
مقدار
اولیه
سرهم
صفحه 152:
در حالت كلى هدف از بكار بردن این دستور انجام عملیاتی مشخص
به تعداد دفعات نامعین است
مينحلقه به صووتؤير بكار بردهمى شود:
0 عبارت منطقى While
Desay
صفحه 153:
Numbers ') ;
ReadIn (m,n) ;
While (m Mod n) > < 0 0
MOD n;
End ; { end of
while }
صفحه 154:
صفحه 155:
اين دستور نيز از نوع دستورات تکراری میباشد و به کمک آن میتوان یک يا چند
.دستور را به تعداد نامعین بار اجرا کرد
لیردستور مشلبه دستور ۲16
:است. با تفاوتهایی که در زیر عنوان میکنیم
در دستور (1 1361068 بسرعکسدستور While
.شرط حلقه در انتهای حلقه بررسی میشود لذا حلقه حداقل یکبار اجرا میشود
_
صفحه 156:
۲) دستور 8606616 تا زمانی اجرا میشود که شرط خاصی تحقق
پیدا نکرده است در حالیکه دستور ۷۷0116 تا زمانی که شرط برقرار
aul اجراسشود.
۳ دستور :606۵ نیاز به بلوک ندارد و همراه 10 ظاهر میشود.
صفحه 157:
; شرط یا شروط until
صفحه 158:
eal ;
riteln (' please enter Numbers While is Not Negative ')
um: =0 ;
ve:= 0 3
epeat
Readln ( Number ) ;
Sum: = sum + Number ;
t=i+ 1 ۶
til number =0 ; { End of Repeat }
:=i-1
ve: = Sum /i ;
riteln ('Sum =', Sum, ' average = ': 12, ave: 7:2) ;
nd of program }
صفحه 159:
صفحه 160:
EEE EEE << << ">
** معرفي چند پروسیجر ( ۳۵6606
پروسیجرها یا زیر روالها قسمتهای مستقلی از برنامه اصلی میباشند که به
تنهایی اعمال خاصی را انجام داده و وظایف مستقل و بخصوصی بر عهده
آنها گذاشته میشود. یک مزیت بزرگ پروسیجرها اینست که یکبار در برنامه
گنجانده شده ولی در محلهای مختلف ازآن استفاده به عمل میآید و از
.اصول برنامهنویسی ساخت یافتهاست
صفحه 161:
هدف: انتقال کنترل برنامه به خارج از بلوک فعلی
Procedure Exit ;
استفاده از این پروسیجر در هر بلوک از برنامه باعث میشود که کنترل
برنامه بلافاصله به خارج از آن بلوک انتقال Lb
صفحه 162:
هدف: خاتمه دادن به اجرای یک حلقه
Procedure Break ;
استفاده از پروسیجر فوق باعث. میشود. که اجرای. یک خلقه: خائمه یافته و
کنترل برنامه به دستورالعمل بعدی انتقال پابد.
صفحه 163:
هدف: باز گشت به ابتدای حلقه
Procedure continue ;
وقتی انم پزوسحر, دز QU Rade isl ally UES! ad ge GOW MA
مییابد و دستورات بعد از پروسیجر اجرا نمیشوند.
صفحه 164:
غال : pistes IS
را 0
۱ کب
از ورود ۳ 2
ی
دريافت 1 عد
فت کرده. ۱
0 بح در مبذ
jae 00
sé
یک مینای ۲ ببرد.
صفحه 165:
Power: = 1 ;
N:=0;
Write (' enter A Number: ') ;
1۳801 ( Number ) ;
Repeat
R: = Number MOD 2 ;
Number: = Number DIV
2;
N: = N + Power* R ;
Power: = Power * 10 ;
Until Number < 2 ;
N: = N + Number * Power ;
Writeln ('Number In Base 2= '
oN);
IM tS 7 ال م
صفحه 166:
Readin (N) ;
Fl: =0;F2:=1;
Write (F1:5, F2:5) ;
For i:=3 to N_ do
Begin
F3: = Fl + F2;
If (i mod 10) =0 Then
Writeln ;
Write (F3:5) ;
۳1: < ۳2 ز
F2: = F3 ;
End ; { end of for }
|, { end of program }
صفحه 167:
۳ 1 116
“ah: 3
۰
تمرینات Begin
۱- خروجی قطعه برنامههای زیر را تعیین کنید:
Sum: = Sum +i
۱
end ;
b)
is = 0.3
Sum: =°0';
While i<=20 do
Begin
i+ ;
صفحه 168:
be Di
Until (b div 3)=5 ;
d)
Count
Stop :
While Count < Stop Do
Begin
For K:=1 to Count
Do
Write (K:3) ;
Writeln ;
صفحه 169:
EE EE EEE EE موممئي
تمرينات برنامه نویسی **
۱- برنامهای بنویسید که با استفاده از حلقه ها خروجی زير را تولید کند.
صفحه 170:
بسرنامهلوبنویسید که تسعدادیعدد از ورودیدویافتکرده مجموع -2
ايقام هر علد را در خروجىجا نايد ( پابانداده ها بسه ۱- ختممی
شود)
بسرنامهلوبنویسيد که دو علد صحیح را از ورودیدویافکرده -3
تن
.اعداد فيبوناجى بين اين دو عدد را جاب كند
برنامهلىيب:ويسيد كه يكلسكناس١٠٠٠ توملئنىرا به حلتهاى4
مخت نيعت يه لسکناس۲۰۰ تسوملنی ۱۰۰ تسوملنی 0۰ تسوملنی ۲۰
توملنی ۱۰ توملنیو سکه های۵ توملنیو ۲ توملنیو یکتوملنیخرد
bo.
صفحه 171:
8 فصل
Arrayb 47
هدفهاي كلي
شناخت لزوم استفاده از ساختار داده ای به نام آرایه
شناخت انواع آرایهها و موارد استفاده از آنها
ی و
شناخت الگوریتمهای مرتبسازی و جستجو
صفحه 172:
:دانشجو پس از مطالعه این فصل بايد بتواند
* آرایهها یک بعدی را در برنامههای خود بکار ببرد.
8 ماتریسها را پیادهسازی نماید.
عمل جستجو در آرایه انجام دهد.
#ایک لیست را توسط روشهای مرتب سازی حبابی انتخابی و غیره مرتب کند.
صفحه 173:
* آرایه و انواع آن
خانههای پشت سرهم از حافظه که همنوع بوده و توسط یک اسم معرفی
میشوند. آرایه نام دارد. نحوه دسترسی به هر یک از اعضاء ارایه از
تطر يق "انيسن ريه امكالوفة بر انتتی
برای تعریف آرایه ابتدا طول آرایه که درحقیقت تعداد خانههای آنرا مشخص
میکند. معین میگردد. سپس نوع خانههایی که دادهها در آن قرار خواهند
كرفت را تعيين مى كنند
صفحه 174:
آرایههای یک بعدی بصورت زیر تعریف میشوند:
Name ۳ array [1.. Length] of
alte | ْ هچ ان زره |
کلمه ذخیره شده اسم آرایه
صفحه 175:
Var
No: Array [1.. 50] of
integer ;
id: Array [1.. 20] of Byte ;
Name , Fam: Array [ 1.. 30] of
char ;
صفحه 176:
۱- با استفاده از دستورات ورودی
۲- مقداردهی در طول برنامه
طریقه دسترسی به عناصر آرایه بصورت زير میباشد:
Name [ index ]
|
انديس آزرایه
۳
صفحه 177:
Writeln (' please enter TEN Numbers') ;
For i:=1 to 100 do
Readin (No[il]) ;
Max: = No[ 1] ; Index: = 1 ;
For i:=2 to 100 do
If No[i] > Max Then
Begin
Max: = No[i] ;
Index: =i ;
End ;
Writeln ('The Maximum is =', Max) ;
۱ Writeln ('And Index =', Index) ;
End of program }
صفحه 178:
integer ;
Begin
Writeln (' please enter 100 Numbers :
13
For i:=1 to 100 do Begin
Read (a[li]) ;
If(i Mod 10)=0 Then
Writeln ;
End ;
For i:=1 to 50 do
Begin
Temp: =a[101-i] ;
a[101-i]:=a[i];
۱ ali]: =temp ;
End ;
صفحه 179:
برای نمایش ماتریس درحافظه معمولاً از آرایههایی بنام آرایههای دویعدی استفاده میکنند
رای فرزکا بیشتر ابیز آرایةها آنها را بضورت ماتربس دزانظر میگیرند
آرایههای دو بعدی بصورت زیر معرفی میشوند:
Name 1 array [1..row ,1.. column ] of
type ۳
لا ا . ] | | |
نوع عناصر آرایه کلمه ذخیره شده تعداد ستونها_
تعداد سطرها كلمه ذخيره شده اسم ارايه
صفحه 180:
jin
For i:=1 to 5 do
Begin
For j:=1 to 5 do
Read (ali,j]) ;
Writeln ;
End ;
Writeln ;
For i:=1 to 5 do Begin
For j:=1 to 5 do
Write (ali,j]:5) ;
Writeln ;
End ;
1.
صفحه 181:
میتوان آرایههایی با ابعاد بیشتر از دو نیز تعریف کرد. بطور کلی برای
: معرفى يك آرايه جند بعد توان بصورت زد د
ی .1 [ مج 3 1 Name: psu (iene
length2 ] ....
Of array [ 1..
lengthN ] of Type
ويا
Name: array [ 1.. length1, 1.. length2,.... 1..
lengthN ] of Type
صفحه 182:
EEE EEE << << ">
Ry نکاتی جند در مورد آرایهها
” تعریف آرایه با محدوده منفی
برای مثال:
A:array[-10..10] of Real 1 ;
7 تعريف آرايه از نوع منطقى ) (Boolean
براى مثال:
A:array[1..20] of Boolean ;
صفحه 183:
ای مثال
A: array [ Boolean ] of ee
;integer
۲آرایهای با محدوده کاراکتری:
بزاع شال
۵1 05 1[ ۲2 .۲۸۰۰ ] 27727 :۱
"آرایهای که برای اعضای آن محدودیت قائل شویم
براى مثال:
A: array[1.. 20] of 1.. 0
صفحه 184:
© جستجو و مربسازي ( 2310 5621012
(Sort
یکی از مسائلی که در بحث طراحی الگوریتم بسیار مهم است. بحث مرتبسازی
و جستجو می باشد. منظور از جستجو اینست که یک مقداری را از یک لیست
جستجو کنیم و منظور از مرتب سازی اینست که یک لیست مرتب از داده ها را
ایجاد کنیم. حال تعدادی الگوریتم که برای مرتبسازی و جستجو بکار میروند
را بسررسیمرکنيم بخصوص زمانيكه ساختار داده ما يكآرليه باشد .
صفحه 185:
در كل دو نوع عمل جستجو را در اين كتاب بررسی میکنیم :
Linear search (+ oye >”
Binary search جستجو دودویی
صفحه 186:
در جستجوی خطی عبارت مورد جستجو را نخست با اولین عضو آرایه مقایسه
مى ocd اگر برابر بود عمل جستجو با موفقیت همراه بوده و عمل جستجو
خاتمه مییابد در غیر اینصورت روند را ادامه داده و عبارت مورد جستجو را
بترتیب با عضو دوم. سوم ... مقایسه میکنیم تا اينكه حالت تساوی حاصل شود
.و اگر این حالت حاصل نشد. عباریت مورد جستجو در لیست قرار ندارد
صفحه 187:
ee
hile (i< =N) and (flag) Do
Begin
1-1+ 1 ۶
if A[i] =x Then
Begin
Index: =i ;
Flag: = false ;
End ;
End ;
flag Then
Writeln ('The Element is found ' )
56
Writeln ('The Element is not found') ;
صفحه 188:
درجستجوی دودوئی لیست اولیه بایدمرتب باشد. برای جستجو در چنین آرایهای
نخست انديس وسط آرايه را يبدا مى كنيم و عنصر واقع در اين انديس را با
:عبارت مورد جستجو مقايسه مى كنيم و حالات زير ممكن است حاصل شود
(0۲,] اندیس ابتدای آرایه و 13006 اندیس آخرین عناصرآرایه و
6 اندیس عنصر وسط میباشد.)
صفحه 189:
. ] ۸10016 [ < X Then
Low : = middle بر ایتصورت
و مقدار جدید 10010016 را که عبارتست از:
Middle : = ( low + middle ) / 2
صفحه 190:
1016 [ > Then
upper : = middle در اينصورت
و مقدار جدید 1010016 را که عبارتست از:
Middle : = ( low + middle ) / 2
صفحه 191:
idle ] =X Then
Write ('The Eiement is قر ابنضووة
found ' )
OW > ۱۷۵۳6۲ فيا ب لتفاقبیفند عملجستجو را تا زملنیکه ELL AS ope |
می باشد ادامه میدهیم و در هر مرحله که حالت سوم رخ دهد عمل جستجو خاتمه مییابد.
صفحه 192:
برای مرتبسازی دادهها روشهای متفاوتی وجود دارد . تفاوت روشهای
مرتبسازی در زمان اجرای آنها می باشد. در حالت کلی با توجه به تعداد
ورودیها (داده ها) و نوع مسئله مرتبسازی می توان از انواع روشهای
.مرتبسازی استفاده نمود
حال بعضی از روش های مرتب سازی عمومی را بررسی میکنیم.
*؟ مرتبسازی حبابی ) (Bubble sort
*مرتبسازی انتخابی ( 50۲۲ 5616611012 )
صفحه 193:
سادهترین روش مرتبسازی روش مرتبسازی حبابی میباشد. یکی از خصوصیات بارز اين
نوع مرتبسازی این است که فهم آن ساده بوده و برنامهنویسی آن به سهولت انجام می كيرد
مرتبسازی حبابی نخست عنصر اول و دوم را با هم مقایسه میکند و در صورت نیاز. آنها
را جابجا میکند. سپس عنصر دوم و سوم را مقایسه میکند. این عمل را تا زمانیکه به انتهای
آرایه نرسیده تکرار میکند. در پایان مرحله اول بزرگترین عنصر در آخرین all SE قرار
سر دا میدهد. اين روند را 1 - N مى كيرد. در مرحله دوم از خانه اول تا خانه
تا زمانیکه تمام عناصر آرایه مرتب نشدهاند ادامه میدهد و در نهایت یک لیست مرتب شده
بصورت صعودی در خروجی تولید میشود
صفحه 194:
For j:=1 to n-1 do
If x[j] >x[j+1] Then
Begin
Temp: = x[j] ;
۶ ][ 1: 2۶ ][ + 11 ز
X[j+1]: =temp ;
End ;
تعداد مقایسهها در این روش بصورت زير محاسبه میشود:
1-1 + 2-2 + .. +
N(N-
1)/2
صفحه 195:
در این روش مرتبسازی نخست کوچکترین عنصر را در کل آرایه پیدا کرده
در خانه اول آرایه قرار میدهيم سپس عنصر کوچکتر بعدی را یافته در خانه
دوم قرار میدهیم اين روند را تا زمانیکه کل آرایه مرتب نشده ادامه مید.
مرتب میدهیم
صفحه 196:
1: < 1 to n do
Min: = x[i];
Index: =i ;
For j:=i+lto n do
If x[j] < Min Then
Begin
Min: = x[jl];
Index: =j ;
End ; { find The smallest Element }
X [index]: = x[iJ ;
X[i]: = Min ; { swap Minimum With other Elem«
; { end of selection sort }
صفحه 197:
EEE << <<"
ad جند منال در مورد آرایهها
مثال : برنامهای بنویسید که یک عدد صحیح از ورودی دریافت کرده سپس
اعداد اول قبل از آن را تولید و در آرایه قرار دهد
a:array[1..50] of integer ;
i,j, N: integer ;
k: Byte ;
flag : Boolean ;
Write (' Enter A Number:') ;
Readin(N) ;a[1]:=2; a[2]:=3;
flag : = True ;
ks=2 ;
—
صفحه 198:
Flag : = false ;
If flag Then
Begin
K:=k+1;
ALK]: =1
End ;
Flag : = Ture ;
End ; { end of for }
Writeln ('The prime Numbers before N')
For j:=1 to K_ do
Writeln (a[i]:5 ) ;
nd .{ End of program }
صفحه 199:
Begin.
Writeln ('Enter Array') ;
for i:=1 to 3 do
for j:=1 to 3 do
Read(a[li,j]) ;
Writeln ; Writeln ('The result matrix
For i:=1 to 3 do Begin
For j:=1 to 3 do Begin
Write (a[i,j]:8:2) ;
Sum: = sum + a[i,j ];{ calculate sum
any row }
End ;
Writeln ( sum: 8:2 ) ; Sum:=0 ;
صفحه 200:
ray "36 ator integer
1۳9 يحب 1..60] of integer ;
M,N.1,j ,.ki Byte ;
Begin
Write ('Enter Dimention of arrays:') ;
ReadIn(N,M) ;
Writeln (‘Enter first Array') ;
for i:=1 to N do
Read (L1[i]) ;
Writeln ('Enter second Array') ;
= for j:=1 to M do
Read (L2[i]);
صفحه 201:
End
Else if L1[i] < L2[j] Then Begin
L3[k]:=L1[i] ;
;1 زرح(
End
Else Begin
]ناک ۶ ۶ ] ون 1 3
1» < 1+1 رز
۲۵ | ق ] اج(
i=l
زع نل +1:
end ;
k =k+1;
} ل ل سو
صفحه 202:
1 ز 1+ 16 ع
end
Else if j< =M Then
for p:=j to M do Begin
L3[k]:=L2[p];
k=k+1;
600,
Writeln ;
Writeln ('The result of merge is') ;
for i:=1 to k-1 do Begin
Write: (.L3) [1] 5).5
If (i mod 10)=0 Then
Writeln ;
End ; { end of merge }
id. { End of program }
صفحه 203:
Begin
Writeln (' Enter Number of sentence: ' )
Readin(N) ;
Writeln (‘Enter sentence') ;
for i:=1 to N do
Read (state [i]) ;
for i:=1 to N do
if state[i] =‘ ' Then
state[i]:='*' ;
Writeln_ ;
Writeln ('The output sentence') ;
for i:=1 to N do
Write (state[i]) ;
صفحه 204:
- کدامیک از دستورات زیر در مورد اعلان زیر صحیح است:
a: array['A'..'Z'] of
char
‘af A]: ='Z-w
ب- ۸ 2 :2۰1 ۲] 5 ۰
ج- 2-1 :1 ' 1ه
د- 12 2 :1 1۰ ۲ ] 2
ح- 12 < :1 ۲1۰] 2
صفحه 205:
a: array | -2U.. LU] Of char
‘a: array [ -20..-20,0..-20] of 'A'..'Z
a: array [ Booleam ] of char
a: array[1..10,'A'..'Z'] of integer
صفحه 206:
تمرینات برنامهنویسی
* برنامهای بنویسید که که یک آرایه حداکثر ۵۰ عنصری را از
ورودی دریافت کرده و سپس عناصری از ارایه که او هستند
را با صفر جایگزین کرده ارایه حاصل را در خروجی چاپ
کند.
برنامهای بنویسید که عددی از ورودی دریافت کرده سپس آن را به
عامل های اول تجزیه نماید و حاصل را بصورت زیر در خروجی
ذجاب: لمانب
برای مثال: ۳-۲۱ ۱ ۷ ۱)
صفحه 207:
برنامهاى ب که یک عدد از ورودی دریافت کرده سپس در صورت وجود صفرهای
آن را حذف نموده. نتيجه را در خروجى جاب نمايد.
* برنامه ای بنویسد که یک ماتریس ۵ * ۵ رااز ورودى دريافت كرده سبس مجموع هر
سطر را انتهای همان سطر و مجموع هر ستون را در انتهای همان ستون چاپ نماید.
صفحه 208:
ماتریس هم پر حسب ستون و هم بر حسب سطر مرتب نموده به همراه ماتریس اول
در يك سر عاك ابية
* برنامهاى بنويسيد كه يك آرايه ٠٠١ عنصرى ازنوع صحيح كه ١6١ عنصرمرتب
درآن قرار میگیرد را از ورودی دریافت کرده سپس آرایه دومی با ۵۰ عنصر را از
ورودی بخواند
صفحه 209:
فصل و |
هاي كتابخانه اى توابع و روال
هدفهاي كلي
شناخت ساختار تابع و روال
شناخت توابع و روالهاى استاندارد براى نوعهاى صحيح
شناخت توابع و روالهاى استاندارد براى نوعهاى اعشارى و كاركترى
أشناخت توابع و روالهاى استاندارد رياضى
صفحه 210:
:دانشجو پس از مطالعه این فصل باید بتواند
= توابع و روالهای استاندارد را در صورت نیاز در برنامه استفاده کند.
# ساختار توابع و خروجیهای آنها را تشخیص داده و در برنامه خود از آنها
استفاده کند.
۴ ساختار روالها و خروجیهای آنها را تشخیص داده و نتایج حاصل از آنها را
مورد استفاده قرار دهد.
#توابع ریاضی را برای محاسبه عبارت ریاضی در برنامه بکار ببرد.
صفحه 211:
EEE EEE << << ">
ساختار تابع 4
در كل هدف تابع اينست كه متغير يا متغيرهايى را بعنوان يارامتر از برنامه
اصلى دريافت كرد. عمل خاصى را روى بارامترها انجام داده و نتيجه را به
برنامه اصلی برگرداند
:شکل کلی فراخوانی توابع در برنامه اصلی بصورت زیر میباشد
ساختار تابع: 1
Function Name ( parameters )
Type
| | | |
نوع تابع پارامترها
اسم تابع کلمه ذخیره شده
صفحه 212:
EEE EEE << << ">
* توابعی برای اعداد صحیح و اعشاری
Abs at ¥
دف: باز گرداندن قدر مطلق ( 8۳5010116 ) پارامتري که به آن ارسال ميشود:
Function Abs (x: Integer ): Integer ;
Function Abs (x: Real ): Real ;
اين تابع يك عبارت از نوع حقیقی يا صحیح را بعنوان آراگون دریافت کرده سپس
.قدر مطلق آن را محاسبه و حاصل را برگرداند
صفحه 213:
Real ;
Integer ;
: = Abs (- 191.15 ) ;
خروجیحاصل:
F= 191.15 I= 171
صفحه 214:
هدف: باز گرداندن سینوس یک عدد از نوع اعشاری
Function Sin ( X: Real ): Real تابع:
6 یک عبارت یا عدد از نوع اعشاری بوده و حاصل مقدار سینوس ا میباشد.
صفحه 215:
Var
X: Real ;
Begin
2 : < 510 ) 10( :
Write ('sin(10)=', x:8:2);
End.
صفحه 216:
هدف: باز گرداندن کسینوس یک عدد از نوع اعشاری.
تابع: Function cos ( X: Real ): Real
ی کعبارتبا عدد از نوع لعشاریبوده و حاصلمقدار کسینوس ilies
صفحه 217:
۴
X: Real ;
gin
ز (10) 605 < : 2
Write ('cos(10)=', x:8:2) ;
d.
صفحه 218:
هدف: بازگرداندن آرک تانژانت یک عدد از نوع اعشاری
; Function ArcTan ( X: Real ): Real تابع:
6 یک عبارت يا عدد از نوع اعشاری بوده حاصل مقدار آرک تانژانت X میباشد.
صفحه 219:
Var
X: Real ;
Begin
X:=ArcTan (10) ;
Write (' ArcTan (10) =', x:8:2);
End.
توجه: در صورتى كه در توابع مثلثاتى زاويه از نوع درجه ارائه شود
:مى توان با فرمول زير معادل راديان آن را محاسبه كرد
Real = Dey * 3.14159 / 180
صفحه 220:
هدف: عدد نپر ( 2.71828 < 6 ...) رابه توان یک عدد میرساند.
شکل تابع: :) Function Exp ( X: Real
Real ;
X عبایتیا ستغیریاز نوع لعشاریوده و حاصلتلبع نیز یکعدد لعشاریسیاشد
اين تابع مقدار عبه توان ۴ را محاسبه میکند.
صفحه 221:
X: Real ;
i: integer ;
Begin
For i:=1 to 10 do
Begin
X:=exp (i) ;
Writeln ) ۶: 8:2 ( ۶
End ;
End.
صفحه 222:
هدف: قسمت اعشاری یک عدد اعشاری را برمیگرداند.
Function frac ( X: Real ): Real ی تابع:
عددعاز نوع لعشاییو حاصلتسلبع یکعدد لعناییکه قسمتلعشایی
عدد 26 است می باشد و بعبارت دیگر این تابع قسمت اعشاری عدد ورودی را
به عنوان خروجی باز میگرداند.
صفحه 223:
0
Y,X: Real ;
gin
X: = frac (24.769) ;
Y: = frac (- 12.75 ۱
Write ('x=', 8: 3,"y= "ee 23
0 ۰
X= 0.769 حلا - 5
صفحه 224:
هدف: قسمت صحیح یک عدد اعشاری را برمی گرداند.
‘unction Int ( X: Real ): Real تابع:
ا يكعبارتيا متغير از نوعلمعشايىو خروجىتابع فيزيكعلد
اعشارى است اين تابع مقدار صحيح يك عدد اعشارى در خروجى
نشان میدهد.
صفحه 225:
X: = Int (2.87) ; {2.0}
Y:=Int(-8.76) ; {-
صفحه 226:
هدف: محاسبه لگاریتم یک عدد
اعشاري در مبناي ».
; Function Ln ( X: Real ): Real شکل تابع:
6 ی کهبایتی| متفیر ازنوع لعشاریوده وحاصلتلیع فیز یک دلءاییم ی شا
صفحه 227:
r
X: Real ;
»gin
X:=Ln (2.87) ; {x = 3.73767 }
Write (°x=',x:10:5) ;
id.
صفحه 228:
هدف: فرد بودن عدد صحیح را
بررسي مي کند.
unction odd ( X: logint ): Booleam کل تابع:
یکعبایساز نوع 10120110 لستو تسلبع .فرد بسودنعباینتوا بسروسیمیک:
اگر مقدار خروجی تابع 1۳016 باشد 16 فرد است و اگر مقدار خروجی تابع alse
باشد ک فرد يست
صفحه 229:
صفحه 230:
هدف: غالباً براى يبدا كردن كد اسکی یک متغفیر کاراکتری بکار میرود.
شکل تابع: :) Function Ord (x: char
ارت ۲ از نوع كاركتري را بعنوان بارامتر دریافت
وكد اسكي أن را برمي كرداند.
اكر : از نوع اسكالر باشد تابع بعنوان خروجي
ترتیب قرار گرفتن : رادر مجموعه
اي که ابتدا به عنوان اسکالر اعلان شده, باز
ميگرداند.
صفحه 231:
Var
ch: char ;
Begin
For ch:='A' to '‘'Z' do
Write (ord (ch):5) ;
کد اسکی " ۸" تا" 2 ' را درخروجی چاپ میکند
كد اسکی ۲ ۸ ۰ عدد 1۵ میباشد.
End .
صفحه 232:
هدف: عدد پی را بر میگرداند.
Function pi: Real کل تابع:
اين تابع برای بازگرداندن عددی پی ( ۳۱۶۱۵۹۲ ۰۰۰) مورد استفاده قرار میگیرد.
صفحه 233:
هدف: مقدار قبل مقدار پارامتر را
بر مي گرداند.
pn pred (x): < same type of parameter > ; ۲
پارامتر تابع می تواند از هر نوع باشد و با توجه به نوع پارامتر تابع نیاز از
هم نوع میباشد و خروجی تابع مقدار قبل از * میباشد.
صفحه 234:
{ flag =
{i=-
Ch: = pred ('d') ;
c'}
i: = pred (15) ;
14 }
flag: = pred ( True ) ;
false }
i: = pred (- 30) ;
31 }
صفحه 235:
۲ تابع 1۳۵۱000
هدف: برای تولید عدد تصادفی
:شکل تابع
Function Random: Real ; )1
2)Function Random (x: word ):
word ;
اگر تابع [st 4 Random یک یعنی بدون آرگومان مورد
استفاده قرار گیرد یک عدد تساوی از نوع اعشاری بین صفر و یک
تولید می کند و اكر به شكل دو بكار رود باعث تولید یک عدد تصادفی
از نوع ۷۷0۵1 که بزرگتر یا مساوی صفر و کوچکتر از * است خواهد شد.
صفحه 236:
Var
i: integer ;
Begin
For i:=1 to 10 do
Begin
Writeln ( Random :
B27) ; Writeln
(Random )20(:8) ;
End ;
End.
۰ عدد تصادفى بين صفر و یک.
و ۱۰ عدد تصادفی Ge ۰ و ۶۰ تولید نماید.
صفحه 237:
هدف: برای گرد کردن اعداد اعشاری بکار می رود.
تابع: Function Round (x: Real ): Longint
} یکعبارتیامتفیر لعشاریسوده وخروجیتلبع یکعدد اننوع Longint
یباشد که نتیجه گرد کردن6 مىباشد. اين تابع 7 را به نزدیکترین مقدار
حیح گرد میکند.
صفحه 238:
er ee ee و
0 2 :) 1
13 1 9
هددع ein ee
{i=18 اللا
i: = Round (17.45) {i=18
صفحه 239:
هدف: برای محاسبه محذور یک عدد صحیح یا اعشاری بکار میرود.
شکل تابع:
Function sqr (x: Integer ): Integer ;
Function sqr (x: Real ): Real
7
* عبارتی یا متغییری از نوع صحیح یا اعشاری بوده و خروجی تابع فیزیک
یک عدد صحیح یا اعشاری می باشد اين تابع مجذور 16 را بعنوان خروجی بر
میگرداند.
صفحه 240:
Var
i: integer ;
Begin
For i:=1 to 10 do
Writeln ('I* 2=' , sqr
)1(( ز
End.
صفحه 241:
Function sqrt (x: 0
0 ; Real ): Rea
بر کت ee ee
ah ltl ys جنر # را بسعنولنخروجوبر میگ ردلند
صفحه 242:
Y, X: Real ;
Begin
Y:= sqrt (64) ; {y=8}
Z:= sqrt (0.16) ; {z=0.4
Write ('x =',x:8:2,'y=',y
5:82:27
End.
صفحه 243:
هدف: مقدار بعد از مقدار فعلی را برمی گرداند.
Function succ (x): same type of شکل تابع:
زر parameters
X یک عبارت از نوع صحیح. اولین و غیره بوده و خروجی تابع نیز از همان
نوع 3 مى باشد اين تابع مقدار بعد از ۱ را بعنوان خروجی بر میگرداند.
صفحه 244:
ch: = suce ('a') {ch='b'}
ch: = suce('A') {ch='B'}
i: =suce (15) {i= 16}
flag : = suce ( false ) { flag = True }
flag : = suce ( True ) { situa = 5 }
صفحه 245:
هدف: قسمت صحیح یک عدد اعشار را بر میگرداند.
Function Trunc (x: Real ): شکل تابع:
; Longint
x کضارتیا متعیر از نوغ شاوی ودد و خروجیتسلبع یکعدد از نوع
Longint میباشد. این تابع قسمت صحیح عدد اعشاری ۶ را بعنوان
خروجی بر میگرداند.
صفحه 246:
x,i,j:Longint ;
Begin
i: =trunc (12.5) ; {i=12}
j: =trunc (12.4) ; {i= 12}
k: = trunc (13.5) ; {k=13}
Writeln ('IT=',i:5 ,'j=',j:5,'
(5:علا,' دعا :
End.
صفحه 247:
ee
توابع از نوع کاراکتری *
در این بخش توابعي رآ بررسي مي کنیم که خروجي
آنها ار نوع كاراكتري باشد
chr at ¥
هدف: معادل کاراکتری یک کد اسکی را بر میگرداند.
Function chr ( X: Byte ): char کل تابع:
يكعباوتيا متغير از نوع بايتبوده و خروجىتالبع يككاركتر موياشد
ن تابع کد اسکی را دریافت کرده و معادل کارکتری آن را بر میگرداند.
صفحه 248:
Var ,
i: Byte ;
Begin
For i:=65 to 91 do
Writeln (chr(1)) ;
End. خروجی :
برنامه بالا حروف ۸ تا 2 را در خروجی le میکند.
صفحه 249:
هدف: براي تبديل يك كاراكتر به حرف
بزرگتر بکار ميرود.
Function Upcase (ch: char ): شکل تابع:
; Char
یک عبارت یا متفیر از نوع کاراکتر بوده و خروجی تلبع فیزیک کاراکتری
باشد این تلبع حرف کوچک رابه حرف بزرگ تبدیل کرده و بعنوان خروجی
حروف بزرك را بر مى كرداند.
صفحه 250:
yte ;
(‘enter Numbers: ') ;
m(N) ;
i:=1 to N do
Read (Sen[il]) ;
In ;
i:=1 to N do
If (sen[i] >='a') and (sen[i] <='z') Then
sen [i]: = Upcase (sen[i])
In (' Out pot of program') ;
i:=1 to N do
Writeln (sen[i]) ;
f program }
3
صفحه 251:
EEE EEE
روالهاي استانداره *
در بخش های قبل دیدید که در توابع پارامترها به تابع ارسال می شود و تابع نیز
مقداری را بعنوان خروجی برمیگرداند روالها نیز مشابه توابع عمل میکنند با
اين تفاوت که خروجی روالها از طریق پارامتر برمی گردانده میشود يا اعلان به
.سیستم عامل میباشد. بنابراین روالها بدون نوع هستند
:شکل کلی روالها بصورت زیر میباشد
Procedure Name
| | |
پارامترهاي روال اسم روال علمه
صفحه 252:
هدف: یک یا چند واحد از پارامتر ارسالی کم می کند.
:شکل روال
Procedure Dec (Var X: longint ) ;
Procedure Dec ( Var X: longint , N: longint ) ;
۴ يكمتغير از نوع ]10100130 و بسصورمتفیریسویساشدلین
روللکولحد از پسارلمتر ایسالکسم موکسند
صفحه 253:
Var 5
N : integer
Begin
N:=1201;
Dec (N) ; {N= 1200 }
Writeln (N) ;
Dec (N, 200) ; {W=
1000 }
Writeln (N) ;
End.
صفحه 254:
هدف: کنترل برنامه را به خارج از بلوک جاری منتقل می کند.
Procedure شکل روال:
> Exit
این روال باعث می شود که کنترل برنامه از بلوک جاری خارج شود. اگر این
روال در برنامه اصلی بکار رود باعث خروج از برنامه میشود. و اگر در یک
روال يا تابع بکار رود باعث خروج از روال یا تابع شده و کنترل برنامه به
برنامه اصلی منتقل میشود.
صفحه 255:
Var 9
i,j: integer ;
Begin
i: = 100;
[ : 2 20 ز
Dec (i,j) ;
Write (i) ;
Exit ;
End.
: خروجی
بعد از اتمام عمليات تابع 123:18 باعث خروج از برنامه می شود.
صفحه 256:
هدف: خاتمه دادن به اجرای برنامه
Procedure شکل روال:
; Halt
اين روال باعث خاتمه اجرای برنامه شده و کنترل برنامه به سیستم عامل بر
كردة.
صفحه 257:
هدف: اضافه کردن یک یا چند واحد به یک متغیر
cedure Inc ( Var X: longint ) شکل تلیع:
مد Inc ( Var X: longint , N: longint ) ;
ا يكهباينها متغير از نوع 10801126 مىباشد دين ولليه مقنار
متغير * يكيا جند واحد مضافه ميكند
صفحه 258:
Var
N,i,j: integer ;
Begin
{i= 101}
inc (j,N) ; {j= 210}
Writeln (i=',i,'j=',j) ;
End.
صفحه 259:
هدف: باعث تغیر نحوه تولید اعداد تصادفی می شود.
Procedure شکل روال:
; Randomize
وقتی در برنامه از تابع 18213010102 استفاده میکنیم اعداد تصادفی تولید
شده در اجراهای مختلف یکسان می باشد برای جلوگیری از این وضعیت قبل
از استفاده از تابع 1823000100 روال 180110101026 را بکار میبريم. تا
باعث تولید اعداد تصادفی متفاوت در اجراهای مختلف گردد.
صفحه 260:
Var
i: word ;
Begin
Randomize;
For i:=1 to 10 do
Writeln (Random (50) ) ;
End.
صفحه 261:
EE E EE EEE
حل چند مثال برنامهنويسي *
1 : 0 ) > < 10 ( مثال : برنامه ای بنویسید که یک ماتریس مربع
از مقادیر صحیح را از ورودی دریافت کرده آنگاه عناصری که مربع کامل
نیستند را صفر کرده و در نهایت ماتریس حاصل را در خروجی چاپ می کند.
۳
؟ تايوه 26667
a:array[1..10,1..10]of integer ;
gin
Write (' enter Number:') ;
For i:=1 to N do
For j:=1 to N do
Read: ((ai[ei jell) iy;
صفحه 262:
ali,j]sqr (Abs (ali,j1)))
Then
8 یرل زود
Writeln ('The oupput Mafrix') ;
For i:=1 to N do
Begin
For j:=1 to N do
Write (a [i,j 1:5) 3
Writeln ;
End ;
End. { End of program }
صفحه 263:
Vrite (' enter sentence ') ز
Repeat
Read (sen[i]) ;
Ing: Giy ¢
Until sen[i]='.' ;
Writeln ;
n: = Dec(i) ;
For i:=1 to n do
If (sen[i]>='A')and (sen[i]<='B') Then
sen[i]= chr(ord(sen[i])+(ord('a')-ord('
Writeln ('The result sentence') ;
For i:=1 to n do
Write (sen[i]) ;
End of program }
صفحه 264:
+ تمرینات
i,j: integer ۲ ۳
۱.خروجی تمرینات زیر را تعیین کنید: a aed
ز 20 < :[ 100 2< : 1
7 1001011
Dec (j,10) ;
Mead) 2
Writeln (1:25,j:5) ۶
y : integer ;
in
7 : =Round (18.31) MoD 5 ;
Writeln (y) ;
-_
صفحه 265:
Chi = "A" 3
Ch: = chr(ord(ch)+3) ;
Write (ch) ;
Xe S112" s
Suce Cx)
0: < BL
Pred (ch) ;
Write (x,ch) ;
صفحه 266:
EE EE EEE EE موممئي
۰ ۰ 5 د
** تمرینات برنامهنويسي
۱- برنامهای بنویسید که تعداد ۱۰۰۰ شماره حساب بانکی ۷ رقمی بطور
تصادفی بین ۵۱۱۹۶۳۲ و ۹۹۸۱۷۱۱ را تولید کرده و چاپ کند.
۲- برنامه ای بنویسید تا تعداد ۳۸ عدد تصادفی صحیح بین ۱۰ تا ۹٩ راتولید
کرده سپس آن را در خروجی به شکل مربع وسط صفحه نمایش چاپ کند.
۳- برنامهای بنویسید که یک عدد ۲۰ رقمی از ورودی دریافت کرده آن
زار نگدعده: تک برقبی طرب: موجه و حامل رارجر خروعی جات تباتیت
صفحه 267:
فصل 10
عتفیرهاک ایلکتروو وشتهها (String)
هدفهاي كلي
بررسی ساختار آرایه هایی از نوع کاراکتر
معرفی نوع داد جدید به نام رشته
مقایسه آرایه ای از کاراکتر و رشته
شناخت توابع و روالهای استاندارد برای رشته ها
صفحه 268:
:دانشجو يس از مطالعه اين فصل بايد بتواند
ja
رایهای از کاراکترها را در پرنامه پکار ببرد.
8 آرایهای از کاراکترها را با رشته مقایسه کند.
"ا اسمی افراد و غیره را با استفاده از آرایهای از رشته مرتب نماید.
#توابع و روالهای استاندارد مربوط به رشتهها را در برنامه خود بكار ببرد.
صفحه 269:
* متغيرهايي از نوع کاراکتر
متفیرهای کاراکتری ظرفیت پذیرش یک کاراکتر( شامل یک رقم. یک حرف از
.حروف و يا يك كاراكتر ديكر ) را دارا میباشند
مقدار دهیلینمتغیر ها به صووؤير مئهاشد :
یگ د بلع" :
اكر بخواهيم متغير هاى كاراكترى را از ورودى بخوانيم بايد دقت بيشترى
به .خرج دهيم براى اينكه فضاهاى خالى كاراكتر محسوب مى شوند
صفحه 270:
Writeln (' equal ' )
Else
Writeln (' Not equal') ;
خروجی حاصل از قطعه برنامه بالا بصورت زیر است:
Not equal
صفحه 271:
تیقمها بسصویتزیر مقایسه میسوند -1
9 ع وين 1 مهد 35" هم 1 ۷ PQS
.رقمها از لحاظ كد اسكى يشت سر هم قرار كرفتهاند
مقايسه مىشوند -2
صفحه 272:
EEE EEE << << ">
) 51 ( متغيرهاي رشتهاي
تعریف: مجموعهای از کاراکتر را یک رشته نامیده و متغفیر از نوع آن را
.یک متغیر رشتهای مینامند
این متغیر نیز مانند ساير متغیرها در قسمت تعاریف متغیرها ( ۷۵ ) معرفی
میشود. در تعریف یک متغیر رشتهای معمولاً طول آن را مشخص میکنند.
اكر طول تعیین نشود بطور قراردادی کامپایلر حداکثر طول را برای آن در نظر
مى كيرد. حداکثر طول رشته ۲۵۵ کاراکتر میباشد.
صفحه 273:
طول رشته
کلمه ذ<
اخترهشده |
سم رشته
صفحه 274:
Var
S:string[10] ;
Begin
S:='pascal' ;
Write (s) ;
End.
صفحه 275:
; Read (s )
هنگام خواندن متغیرهای رشتهای اگر طول رشته ورودی از طول تعریف
شده بیشتر باشد فقط به اندازه طول تعریف شده خوانده می شود و اگر طول
رشته ورودی کمتر از طول تعریف شده باشد. رشته ورودی در منتهیالیه
سمت چپ متغیر رشتهای قرار گرفته و بقیه متغیر رشته ای بدون محتوا
تاق مق هائك
صفحه 276:
7 میتوان استفاده کرد::
Write (s) ;
مثال : برنمهای بنویسید که شماره دانشجوئی. اسم و فامیل دانشجوثی را
.از ورودی دریافت کرده سپس در خروجی نمایش دهد
صفحه 277:
Name , family: string [ 40] ;
Id: longint
writeln (' Enter student number
ReadIn (Id) ;
writeln ('Enter Name') ;
ReadIn (Name ) ;
writeln ('Enter family') ;
ReadIn ( family ) ;
writeln(' Id Name Family
writeln ( Id: 7 , Name,
Var
Begin
صفحه 278:
آرايهاي از رشته بصورت زیر تعریف ميشود:
iy [1..length] of string
نوع رشته اي طول آرايه
صفحه 279:
برای خواندن چنین آرایهای بصورت زیر عمل میکنیم:
r i:=1 to 50 do
ReadIn (Name [i]) ;
ly نمایش آرایه در خروجی بصورت:
For i:=1 to 50 do
Writeln ( Name [i] )
صفحه 280:
ring[10] ; temp: i,j: Byte;
riteln (' Enter Ten Names') ;
2۲ i:=1 to 10 do
ReadIn (Name [i] ) ;
r j:=1 to 9 do
for j:=i+1 to 10 do
if Name [i] > Name [j] Then Begin
Temp : = name [i] ;
Name [i]: = Name[j] ;
Name [j]: = temp ;
End ; { sort Algrithm }
‘iteln ('The sorted list') ;
r i:=1 to 10 do
writeln (Name [i]) ;
nd of program }
صفحه 281:
00 58 اسمی از ورودی. سایر اطلاعات اسم خوانده شده را در
.صورت وجود در خروجى نمايش دهد
Name , Family: array[1..50] of string[ 30] ;
id: array[1..50] of longint ;
Nam : string [ 30] ;
صفحه 282:
write ('Enter Name:') ;
ReadIn (Name ) ;
write ('Enter family:') ;
Readln ( family ) ;
write ('Enter student Number:') ;
ReadIin (Id) ;
end ;
writeln ;
write ('Enter Name:') ;
Readin (Nam) ; -_
صفحه 283:
if Name[i] = Nam then
flag : = false ;
end ;
If flag then
writeln ('Not found') ;
Else
Begin
writeln(' Id Name
family ')
write (Id, Name : 30, family : 30 ) ;
end ;
صفحه 284:
EEE EEE << << ">
° توابع و روالماي كتابخانهاي براي متغيرهاي رشتهاي
Concat تبع v
مدف: الحاق دو يا چند رشته به یکدیگر
Function concat (S1,S2,...,Sn): :عبات شکل
; string
1 , 52 , ... , 532 متغيرهايى از نوع رشته هستند و خروجى تابع نيز
یک متغیر رشتهای است این تابع دویا چندتابع را به هم پیوند داده. و رشته
حاصل را برمی گرداند.
صفحه 285:
Str3 ر str1 , str2: string
egin
Str1 : ='Pascal' ;
572 : < ۲ 0016۲
Str3 : = Concat ( Str1 , Str2) ;
write ( Str3 ) ;
nd.
با اجرای برنامه فوق. عبارت 0016 Pascal نشان داده خواهد شد.
صفحه 286:
ندف: استخراج یک زیر رشته ( 511053110 ) از یک رشته
n copy (S:string ; Index:Integer; count: Integer): stri
يكهبايتيا متغير يشته لیک» میخولهيم از آنزیر پشته لیک» نقطه 5
میباشد جدا کنیم لنا زیر یشته ob , Count 112016 شریع آن
لمستموياشد 0۷11 حاصل یکیشته که طوللنبه لنلازد
صفحه 287:
Var
Strycstnil: string: 5
Begin
Str: =' Pascal Book' ;
Siriv= Capy( Str, 7,4) 74 Sri]
Book }
write (Str1) ;
End.
صفحه 288:
هدف: حذف یک زیر رشته از یک رشته
شکلروال: Procedure delete (Var str: string;
Index:integer;length: integer ) ;
5 یبکمتفر رشته لی 1110102 یکعبارتیامتغیر صحیح و Length نب
٠ عبارت یا متیر صحیح میباشد. روال 126166 یک زیر رشته را از یک
ته حذف میکند این روال از محل Index بطول 1.6۳01 از رشته ٩]
ف میکند و رشته حاصل بعنوان خروجی روال برگردانده میشود.
صفحه 289:
Var
St: string ;
Begin
St: = 'Pascal.Book' ;
Delete (St,7,5) ۶
writeln (St) ;
End.
خروجی حاصل از برنامه فوق 389081 میباشد.
صفحه 290:
هدف: درج ( وارد کردن ) یک رشته در یک رشته دیگر
Procedure Insert ( Str1: string ;Var :J\;, Js:
; Str2: string ; Index: Byte )
513 عبارت يا متغیر رشته ای. ٩12 منغیر رشته ای و ole Index
دد از نوع os میباشد. روال 11561 رشته 9171 رادر رشته 512
خانه Index درج میکند و رشته حاصل خروجی روال خواهد بود.
صفحه 291:
Var
Str1 , str2: string ;
Begin
Str1: =' Pascal 7' ;
Str2: ='Turbo' ;
Insert (Str1, Str2,6) ;
End.
خروجی حاصل )3 Turbo pascal 7 Yu ub, خواهد بود.
صفحه 292:
هدف: محاسبه طول رشته
Function length (Str: string): ۰ شکل تابع:
; Integer
Str يكعبارتوشته لمويوده و خروجىتلبع يكعدد صحيح موياشد
اين تابع طول رشته ورودی را محاسبه و بعنوان خروجی بر میگرداند.
صفحه 293:
Var
St: string ;
n: integer ;
Begin
St: = 'Turbo Pascal 7' ;
n:=length(S4); {n=14}
Write (' The length of string
ist) a) 3
End.
صفحه 294:
هدف: برای جستجوی یک رشته داخل رشته دیگر
Function pos ( Str1: string ; 512: شکل تابع:
رز String ): Byte
1 يك عبارت يا متغير رشته ای و ٩112 نیز یک عبارت یا متفیر
رشته ای میباشد و خروجی تابع یک عدد صحیح می باشد. اين تابع محل
اولین وقوع رشته 1 در رشته ٩۲2 را بعنوان خروجی بر میگرداند.
صفحه 295:
Var
Str1 , Str2: string ;
i: integer ;
Begin
Str1: =' Book' ;
Str2: = ' Pascal Book' ;
i: = Pos (Str1,Str2) ; {i=
8}
Write ('i=',i) ;
JPA, ga oti lB yl poe feo SS as eg 0S
.در رشته دوم وجود نداشته باشد ) تابع مقدار صفر بر میگرداند
صفحه 296:
هدف: برای تبدیل عدد به یک رشته عددی بكار مى رود.
ال. 1: ( Str: string ر تقم؟ :تعاطا :1 )او وتال0 ۵8(
Procedure Str (F: Real: format, Str: string) : ;
درشکل ۰۱ 1 یک عبارت یا متغیرعددی بوده و ٩ یک متغیر رشتهای
مى باشد اين روال يك عدد صحيح با فرمت مشخص را به يك رشته عددى
درشكل ” . 7 يك عبارت يا متغير رشتهاى و Str يك متغير رشتهاى مى باشد
صفحه 297:
Var
Number, Str: String ;
Begin
Str (543:5, Str) ; {Str='
543' }
Str (12.25: 7:2 Str) ; { Str
=' 12.25'}
Str (127: 3: Str) ; { Str=
'127'}
Str (3.1239: 7:3, Str) ;
{ Str =' 3.124'}
End.
صفحه 298:
هدف: تبدیل یک رشته عددی به یک عدد
; Procedure Val (S: String روال: ۱: 66۲ص :۲ ۷۵۲ ز
; (Var Error: inte¢
dure Val (S: String ; Var N: Real ; Var Error: inte¢
5 یکعبارتیامتغیر يشته لی ۷( يكمتغير از نوع صحيح يالمعشايىو
1 نیز یکمتفیر از نوع صحيح مئباشد دين ولليكيشته عددى
را به يكعلد صحيح يالمعشارىتبديلمىكند و لمزرا توسطمتغير N
بسرمیگردلند دگر عملتسبدیلسطور صسحیح لنجام شود. مقلار متفیر
281101 برلبر صفر در غیر اینصور تم حل و جود لشکل لوا مشخص رمک ند
صفحه 299:
F: Real ;
St='475';
Val (St,N,E) ; {N=475,E
St=' 475' ;
Val (St, F,E) ; {F= ,E=3
St = '3.1716' ;
Val (St, F,E) ; { F = 3.1716
Begin
,E=0}
End.
صفحه 300:
موممئي EE EE EEE EE
**ارائه جند مثال در مورد رشتهها و کاراکترها
مثال : برنامهای بنویسید که یک جمله از ورودی دریافت کرده سپس در
صورتی که TS ads وجود داشته باشد انها را به 216 تبدیل نماید و در
نهایت رشته حاصل را در خروجی نمایش دهد.
توجه كنيد كه ممکن است بیش از یک بار کلمه 18 تکرار شده باشد
در اینصورت همه کلمات 15 را با 816 تبدیل کند.
صفحه 301:
Writeln (' Enter sentence
ReadIn (St) ;
Repeat
i: = Pos (‘is', St) ;
if 1< 0 Then
Begin
Delete ( St,
i,2);
Insert
(‘are', St,i) ;
end ;
1-141 يت د |)
صفحه 302:
Begin 1
Writeln ('Enter sentence') ;
Readin (St1) ; j:=1;
For i:=length(Stl) downto 1
do Begin
Sta [jl<e= StL (i] »
Inc (j) ;
End ;
Writeln ('The result') ;
Writeln ( St1 ) ; Writeln( St2 ) ;
صفحه 303:
EE << << ">
تمرینات
۴ با فرض اینکه 51 , 92 , 93 متغیر های رشته ای
هستند خروجی عبارتهای زیر را تعیین کنید.
a)S3 =copy(S1,1,6) ;
b)S3 = concat (S3, 52, $1) ;
e@)S3'= copy'( $2.4. 1.,posCS1,, S2)—1 ).¢
d)Delete (S2, pos(S1,S2),length(S1)) ;
صفحه 304:
S1: string ;
i: integer ;
91: = 'ABCDEF' ;
For i:=1 to length(S1) ;
Delete (S1,i,1) ;
Writeln (S1) ;
Var
Begin
-End
صفحه 305:
St: string ;
i: integer ;
ReadIn ( St) ;
For i:=1 to length(St) Do
1] ) 5۲ ]1 [ < < ۲ 0۲ ( 280 ) 5۲ ]1[ > 2 9 1
Delete (St,i,1) ;
Writeln (St) ;
صفحه 306:
sert (S1,S2,pos(S1,S2)) ;
$3: = copy (S2, pos (S1,S2), length (S1) ;
3: = copy (S2, pos (St, S2), length (S2) ;
plete (S1, pos (S2, S81), length (S2 );
ز 6 # 2: [ 0 ] ۱1
صفحه 307:
۳ 5 1 High
* تمرینات برنامهنویسی
*برنامهای بنویسید که یک پاراگراف را از ورودی دریافت کرده
( حداکثر ۱۰ خط ) سپس:
.الف) تعداد کلمات هر سطر را شمرده و انتهای سطر نمایش دهد
.ب) تعداد حروف صدا دار را شمرده جاب نمايد
.ج) تعداد خطوط برنامه را شمرده در خروجی چاپ کند
.د) تعداد جملات هر خط را محاسبه و در سطر های جداگانه نمایش دهد
صفحه 308:
*برنامهای بنویسید که یک عدد در مبنای مشخص را از ورودی دریافت
کرده سپس آن را به مبنای 102 که از ورودی خوانده می شود ببرد.
*برنامهای بنویسید که یک پاراگراف را از ورودی دریافت کرده
کلمات تکراری هر سطر را حذف نموده و پاراگراف حاصل را بهمراه
پاراگراف اولیه در خروجی با پیغام مناسب نمایش دهد.
صفحه 309:
*برنامهای بنویسید که دو عدد ۲۰ رقمی ( بصورت رشته باید خوانده شود )
را از ورودی دریافت کرده سپس مجموع و حاصل ضرب این دو عدد را
محاسبه و در خروجی با پیغام مناسب چاپ نماید.
*برنامهای بنویسید که یک رشته از ورودی دریافت کرده
سپس کلمات داخل آن را بصورت عمودی کاراکتر به کاراکتر نمایش دهد:
*یرنمای بنویسید که یک پاراگراف با حداکتر ۵ خط را از ورودی دریافت
نماید. سپس مجموع ارقام یا اعداد ( در صورت وجود ) هر خط را محاسبه
نموده در انتهای همان سطر نمایش دهد.
صفحه 310:
ges
برنامههاي فرعي
هدفهاي كلي
۷ شناخت اجزاء تشکیلدهنده توابع و روالها
* بررسی انواع پارامترها و متغیرها در برنامههای فرعی
* شناخت تفاوتهای روالها و توابع
* معرفی مزایای استفاده از زیر برنامهها
صفحه 311:
:دانشجو يس از مطالعه اين فصل بايد بتواند
"" برنامه خود را به جندين زيربرنامه تقسیمبندی نماید.
"" زيربرنامهها را با توجه به قوانین موجود. در ساختار برنامه جا دهد.
۴ باتوجه به مزایای استفاده از آنها را در برنامه خود بکار ببرد.
صفحه 312:
الم < << کچ
* روالها
روالها نوعی از برنامههای فرعی هستند. که به طور مستقل و جداگانه وظیفه
یا وظایف خاصی از برنامه اصلی را انجام میدهند. روال ها در صورت نیاز
اطلاعات خود را از طریق پارامترها دریافت و همچنین در صورت نیاز نتایج را
از طريق پارامترها به برنامه اصلی باز میگردانند. پارامترها در حقیقت خطوط
.ارتباطی بین برنامه اصلی و برنامههای فرعی هستند. پارامترها باعث می شوند
که توابع و روال ها روانتر عمل کنند. زیرا آنها به پرنامه های فرعی این قابلیت را
.می دهند که با هر فراخوانی دادههای مختلفی را مورد پردازش قرار دهند
صفحه 313:
Procedure Name (parameters list )
| | |
vious siaelS لیست پارامترها اسم روال
ar
{ List of locad variable }
Begin
1 { Procedure Body }
End af End of procedure }
صفحه 314:
اسم پرنامه اصلی Program
: تعاریف برنامه اصلی
Procedure ... ۳
Begin {main program }
فراخوانی روال ها
End. { End of program 1
صفحه 315:
(Formal parameters ) ¢5)50 sb xb.)
(Actual parameters ) (ily (bs LLY.
از پارامترهای صوری هنگام اعلان روال و از پارامترهای واقعی هنگام
رفخولت رو لها لستفادد مشود
صفحه 316:
پارامترهاي صوري در حالت كلي 2 نوعنده که با توجه به نوع روال و
تصمیم برنامه نویس مورد استفاده قرار مي گیرند:
” يارامترهاى مقدارى ( 122323126166375 71731116)
(Variable parameters ) «i يارامترهاى ”
صفحه 317:
پارامترهای مقداری. پارامترهایی هستند که مقدار متفیرهای فرستاده شده از
برنامه اصلی را دریافت می کنند و وظیفه آنها فقط عبور دادن مقدار به روال
میباشد. لذا تغییرات پارامترهای مقداری در روال به برنامه اصلی انتقال نمییابد
: پارلمترهایس قداریب صوردفیر تسعریفمیشوند
dure Name (varl: type ; var2:type,...
ع مقداری اسم روال کلمه ذخیره شده
صفحه 318:
am main
2 , ۷1 , ۷2 : ۲
ure test (A1,A2,B1,B2:integer); {formal para
—/ fi}
x1 ,x2,yl, یت ; { Actual parameters }
{End of program a
صفحه 319:
در مثال بالا این تناظر برقرار است:
پارامترهای واقع
Al
A2
B1
B2
متناظر است با
نا
پارامرهای وافعي برنامه اصلی انتحاب شوند. این به gle این تست که
این پارامترها ( پارامترهای صوری ) همان پارامترهای واقعی هستند
صفحه 320:
متغیرهای ۰.۰ , ۷۵۲1 ر ۷۵32 پارامترهای مقداری هستند. توجه کنید. که
این پارامترها صوری هستند و نوع و ترتيب آنها بايد با نوع و ترتيب
پارامترهای واقعی در تناظر یک به یک باشند.
صفحه 321:
ram main
2 , ۷1 , ۷2 : 1
lure test (A1,A2,B1, B2: integer ); {formal pai
Begin { main }
test (x1 ,x2,yl,y2) ; { Actual
paramete
End. { End of program }
—_—
صفحه 322:
همانطور که ملاحظه می کنید. روالی بنام 05 با ۶ پارامتر مقداری
در پرنامه استفاده شده است. متفیرهای 1 ر 22 , 31 , ۷2 از برنامه
اصلی به روال 651 ارسال شده و بترتیب مقادیر این متغیرها در
متغیرهای با همان نوع در ۸1 , ۸2 , 191 , 192 قرار می گيرند.
صفحه 323:
یک پارامتر مفیری. تفیرات یک پارمترواقمی را منوان حروجی به پرنامه
اصلی برمی گرداند. تفاوت این گونه پارامترها با پارامترهای مقداری در ارسال
تغييرات ايجاد شده در پارامترها میباشد. وقتی نیاز است. که نتایج روال به
برنامه اصلی برگردد. از پارامترهای متغیری استفاده میکنند
اعلان پارامترهای متغیری به صورت زیر میباشد:
Name ( var id1 : type ; var id2: type ,...
مت پارامترهاي متغيري اسم رواال کلم
تفیرهای 2 , 101 و ... پارامترهای متغیری میباشند که نتایج روال. توسط
انها به برنامه اصلی باز گردانده میشود.
صفحه 324:
را محاسبه و نتیجه را در برنامه اصلي چاپ نماید.
Num1, Num2: integer; Total,average:
Var
Real;
Procedure ComputeSumAve(Num1 , Num2:
integer ;
Var sum, ave:
Real);
Begin
Sum:=Num1+Num2; Ave:=sum/2;
End; {End of procedure}
Begin {Main}
WriteLn(' Enter Two
Numbers');ReadLn(Num1,Num2);
ComputeSumAve (Num1, Num2, total,
average); ۳۳۳
WriteLn(‘The Sum is= ', sum:8:2 ,
صفحه 325:
پارامتر واقعی متناظر است با يارامتر هاى صورى
Num1 Num1
Num2 Num2
Total sum
Average ave
0 , 111721 پارلمترهایمتدایوو 2۷76 , SUM پارلمترهایمتغیرء
باشند. که توسط آنها نتایج به برنامه اصلی برگردانده میشود.
صفحه 326:
در برنامههای فرعى دو نوع متغير علاوه از پارامترها مورد استفاده قرار
میگيرند. این متغیرها متفیرهای محلی یا متغیرهای سراسر هستند.متفیرهای
محلی. متغیرهایی هستند که در بلاک مربوط به خود قابل استفاده هستند. ولی
متغیرهای سراسری در تمام برنامههای فرعی قابل دسترس میباشند
متغیرهای محلی در داخل برنامههای فرعی در قسمت تعاریف معرفی میشوند
.و در خارج از روال قابل دسترسی نیستند
صفحه 327:
-edure CalcSumAve ( Num1 , Num2: Read );
Sum , Ave: Real ;
Sum:= Num1 + Num2 ;
Ave:= Sum /2;
WriteLn(' The Sum is =', sum:8:2 ) ;
WriteLn(' The average is =',ave:8:2);
;{End of procedure}
صفحه 328:
مر ری
x
Y.
صفحه 329:
>dure test(var b: integer } a: Integer );
D: integer; {local variable}
1
D:=12;a:=bt+d; b:=at+c;c:=ct+2;
1 {Main}
A= 1; b=2; 6:=3;
Test(a,b);
Writeln(‘a=',a,'b=',b,'’c=',c);
{End of program}
:خروجی پبرنامه بالا بصورت زير است
a =16 b=2 c=5
صفحه 330:
بکارگیری روالهای بدون پارامتر
بکارگیری روال همراه پارامترهای با خاصیت ورودی
بکارگیری روال همراه پارامترهای با خاصیت ورودی و خروجی
صفحه 331:
كاهى لازم است تا برنامه فرعی کاملاً مستقل (بینیاز از مقادیر برنامه اصلی) در
بخشهای مختلف یک برنامه اجرا شود. در این صورث نیاز به استفاده از پارامتر
بیمفهوم میباشد و از روالهای بدون پارامتر استفاده مى كنند
غالبا زمانیکه بخواهيم پیفامهای خاصی را در قسمتهای مختلف برنامه نمایش
دهیم. این پیفامها را در یک روال قرار داده و در صورت SLs روال
مربوطه را فراخوانی میکنیم.
صفحه 332:
Program Example ;
Procedure Head
Begin
WriteL((Name Family Age
No’);
۱۷۷ ا ا م م )ام از 0
End;
Begin{Main}
WriteLn(' open university ' ) ;
Head;
End.
صفحه 333:
همانطور که قبلاً اشاره کردیم» هدف از بکارگیری پارامترها انتقال مقادیر از
برنامه اصلی به روالها میباشد. اگر این انتقال یک طرفه باشد یعنی فقط از
برنامه اصلی به روال باشد. این نوع پارامترها فقط خاصیت ورودی خواهند
داشت. (قبلا در اين مورد توضیح داده شده است) در اين نوع روالها از
پارامترهای مقداری استفاده مى كنئد
صفحه 334:
(1 nple ;
NI: integer ;
cedure sq( M: integer) ;
egin
WriteLn (‘sqartis=',M*M );
nd;
n {Main}
Write(' Enter Number = ') ;
RealLn (N) ;
For I:=1 to N_ do
Sq (i) ;
_ {End of program}
صفحه 335:
۲ بكارگيري روال همراه پارامترهاي با خاصیت ورودي و خروجي
در این نوع روالها پارامترها دو خاصیت مهم دارند یکی انتقال دادهها از
برنامه اصلی به روال و دیگری انتقال یا ارجاع نتایج از روال به برنامهاصلی
میباشد. در اين نوع روالها از پارامترهای متفیری استفاده می کنند
صفحه 336:
Program Example ; سيت
Var
A, b: integer ;
Procedure change (var x, y:
integer) ;
var
temp:integer;
Begin
Temp:=x;
Sy;
Y:=temp;
End;
صفحه 337:
Begin { Main }
ReadLn( a,b);
Change(a,b);
WriteLn ('a=',a,'b=',b);
End.{End of program}
صفحه 338:
۰ ۳
** ارتباط روالها با یکدیگر
در پاسکال زیر برنمهها نهتنها از طریق برنامه اصلی بلکه از داخل یکدیگر
نیز ,فراخوانی میشوند
فراخوانی روالها از داخل یکدیگر تابع قوانین کلی زیر است:
۲ قلنون اول
قانون دوم
قانون سوم
صفحه 339:
از هر برنامه (اصلی یا فرعی) به برنامه فرعی در صورتی میتوان. دسترسی
داشت. که در بخش تعاریف Of برنامه (اصلی يا فرعی) قرار داشته باشد.
بطور مثال در شکل زیر پرنامه اصلی 11 میتواند. به كليه برنامههای فرعی
1,2 و... که در بخش تعاریف برنامه اصلی قرار دارند. مراجعه کند
صفحه 340:
صفحه 341:
nd;
egin {Main}
۳001:
Proc2;
nd.
صفحه 342:
والهای 07002 ,ر 101061 داخل برنامه اصلی 118310 تعریف شدهاند. لذ
راحتی میتوان در برنامه اصلی به آنها دسترسی پیدا کرد.
والها خود نیز داخل هم میتوانند قرار بگیرند. دقیقاً مثل روالهای معمولی
این تفاوت که در داخل روال باید تعریف شوند. به اینگونه روالها. اصطلاحاً
والهای متداخل یا تودرتو میگویند.
صفحه 343:
اگر روالها در بخش تعاریف یک برنامه به موازات یکدیگر تعریف شوند و
نه در داخل هم. در روالهای بعدی امکان رجوع به روالهای قبلی وجود
خواهد داشت. بعبارت دیگر به روالی میتوان دسترسی پیدا کرد که قبلاً تعريف
شده باشد.
صفحه 344:
برنامه اصلى
روالها
در شکل بالا چون 102 قبلاً معرفی
شده است میتوان آنرا داخل 3
فراخوانی کرد.
Main
21
22
23
P2
صفحه 345:
گر روالها در بخش تعاریف برنامهأی بصورت متداخل باشند. در اینصورت
ز روال درونی میتوان به روالهای بیرونی که قبلا تعریف شده.
راجعه کرد و همچنین از روال درونی به روالهای بیرونی که به موازات
کدیگر قرار گرفتهاند. نیز میتوان دسترسی پیدا کرد.
لور مثال در شکل زیر روال 1 میتواند به روالهای 2,03 دسترسی
ییدا کند. وهمچنین روال درونی 104 میتواند بهروالهای 103 , 102 مراجعه کند
صفحه 346:
Main
P3
22
Pl
صفحه 347:
EE << << ">
** اعلان روالها به روش 1015172101
همانطور كه قبلاً اشاره كرديم از روالى مىتوان در روال ديكر استفاده کرد.
كه قبلاً تعريف شده باشد. در توربوياسكال نقيصه فوق به كمك اعلان
01 قابل حل است. بدین صورت كه اكر روالى به هنكام تعريف با
اعلان 503583301 همراه باشد. بدون رعایت از پیش تعریف شدن میتواند.
در روالهای دیگر ظاهر شود.
صفحه 348:
Procedure Name ( parameters ) ;
; forward
| ۱
| ! ۱
کلمه ذخیره شده لیست پارامترها اسم
روال کلمه ذخیره شده
صفحه 349:
صفحه 350:
End;
همانطور که ملاحظه میکنید با اعلان روال 97063 ۳
بصورت 1201080230 بقیه روالها میتوانند به آن 3 1
دسر لکد 212003
End. {End of program}
صفحه 351:
EE EE EEE EE موممئي
(Functions) توابع *
نوع دیگری از برنامههای فرعی, توابع میباشند. توابع مانند روالها.
پیمانههای مستقلی هستند. با این تفاوت که روالها میتوانند. تعدادی
خروجی داشته باشند. در حالی که توابع فقط یک خروجی دارند. در روالها
معمولاً خروجیها توسط پارامتر به برنامه اصلی ارجاع داده میشود. ولی
در توایع اینکار به نحو دیگر انجام میگیرد.
صفحه 352:
Function Name ( List Of Parameters ) :
; Function Type
نوع تابع ليست پارامترها
wh pul كلمه ذخيره شده
صفحه 353:
۰ دکنه
—
تابع فقط میتواند. یک خروجی داشته باشد. نوع خروجی تابع. همان نوع تابع
محسوب مىشود. لذا با توجه به نوع خروجى تابع. نوع تابع تشخیص داده
میشود. ذکر اين نکته خالی از لطف نیست که نوع پارامترهای صوری توابع
معمولا مقداری هستند چرا که توابع نوعی برنامههای فرعی هستند که فقط یک
خروجی برمی گردانند. لذا استفاده از پارامترهای از نوع متغیری پسندیده
نمیباشد. (اشکال کامپایلری در توربوپاسکال ندارد ولی در پاسکال استاندارد
این کار اشکال کامپایلری دارد.)
مقدار خروجی توابع توسط اسم تابع برگردانده میشود. توابع مثل روالها بعد
.از قسمت تعاریف پرنامه اصلی ظاهر میشود
صفحه 354:
Name := Resualt Of
Function ;
End ;
صفحه 355:
تمام پارامترهای تابع باید از نوع مقداری باشند
نوع داده نتیجه تابع در انتهای عنوان تابع و بعد از لیست پارامترهای صوری
قرار میگیرد
در بدنه تابع. خروجی تابع با نسبت دادن مقدار به نام تابع مشخص میشود
صفحه 356:
N: Integer 7
on Fact ( M: Integer ): longint ;
P, 1: Integer ;
P=i1:
For i:=2 To M _ do
P= P'* Tx
Fact:= P ;
{ Main }
Write ('Enter Number='); Readln(N);
Writeln (' Factorial is =', Fact (N )); {Call Func
صفحه 357:
ناحیه داده هاي اصلي_ 11301 ناحیه داده هاي
پارامترهای صوری
M پارامترهای واقعی
N
ee
متفیرهای محلی
نتیجه تابع P
2 1
نتیجه تابع
2
صفحه 358:
+ دوایع بار تسی IRCCULSLUIL)
(Functions
در پاسکال یک تابع یا روال میتواند. خودش را فراخوانی نماید. پیمانهای که
خودش را فراخوانی میکند یک پیمانه بازگشتی نام دارد. اين نوع توابع در
۶ ی و واه وت اد وت ۰ ارت s
شرط خاص که غالباً به یک عدد ثابت ختم میشود. ادامه پیدا میکند. سپس
مقدار تابع از پایین به بالا محاسبه میشود و در نهایت نتیجه تابع حاصل
.می شود
صفحه 359:
را در محلی از حافظه بنام پشته (8126016) قرار میدهد. اگر بازگشت به تابع
بازكشتى مجدداً صورت گیرد. مقادیر فعلی متغیرها مجدداً بدنبال مقادیر قبلی
و اصطلاحاً در پشت مقادیر اولیه قرار میگيرند. هنگامی که شرط پایانی در
تابع بازگشتی رخ می دهد. در اولین بازگشت مقادیری را که هنگام مراجعه
به خود. در پشته نگهداری کرده مجدداً در دسترس قرار میدهد و بهمین
ترتیب در باز گشتهای بعدی این عمل تکرار میشود تا مقدار تابع محاسبه شود.
صفحه 360:
مقادیر متغیرها درآخرین بازگشت به تابع
مقادیر متغیرها در سومین بازگشت به تابع
مقادیر متغیرها در دومین بازگشت به تابع
مقادیر متغیرها در اولین بازگشت به تابع
صفحه 361:
مقادیر متغیرها درآخرین بازگشت به تابع
مقادیر متفیرها در سومین بازگشت به تاپع
مقادیر متفیرها در دومین بازگشت به تابع
مقادیر متغیرها در اولین بازگشت به تابع
صفحه 362:
۳016 ز
N : integer ;
on Fact ( N: integer ): Longint ;
If N=1 Then
Fact:= 1
Else
Fact:= N * Fact(N-1);
Writeln ('Enter Number' ) ;
Writeln (' Factorial is =', Fact (N ) ); {Call Fur
صفحه 363:
صفحه 364:
Function GCD ( N,M:integer ):
Integer ;
Begin
If (N<=M) and (M Mod N =
0) Then
GCD:=N
Else
GCD:= GCD(M,NmodM);
End ;
صفحه 365:
EEE EEE << << ">
۰ ۳۹ 2
** مقايسه توابع و روالها
توابع و روالها هر دو برنامههای فرعی هستند. که بطور مستقل وظایفی را بر
:عهده دارند. ولی در این میان از بعضی جنبهها متفاوت میباشند که عبارتند از
حوم فرلخولنیآنها با هم متفاولست روا ها از طریقعبارلتووا لفرلخولنده .1
یشوند. درصورتی که فراخوانی تابع توسط عبارات مقایسهأی و یا تخصیص
بجه به يك متغير صورت مى كيرد
كام معلانيكتلبع. نوع تلبع يانوع نتيجه حاصلاز تلبع بايد ذكر شود.
مورتى كه روالها نيازى به اين كار ندارند
ولبع فسقط یک خروجیبرمیگ ردلنند ولیروا فا میسولنند چندینخریجی3
گردانند. درضمن نتیجه توابع توسط اسم تابع فرستاده میشود ولی روالها
طریق پارامترها. نتایج را برمی گردانند
صفحه 366:
* طربقه ارسال آرایهها به توابع و روالها
آرایهها خود مجموعهی از دادهها میباشند. لذا برای ارسال آنها نمیتوانیم
از روش معمولی ارسال پارامترها استفاده کنیم. و بطور مستقیم نمیتوان آنها
را به برنامههای فرعی انتقال داد. برای ارسال آرایهها به عنوان پارامتر به
برنامههای فرعی از دستور 137106 استفاده میکنند. دستور 11/06 قبل از
تعاریف برنامه اصلی بکار میرود و توسط این دستور در واقع یک نوع
سادهسازی در تعاریف فراهم میشود. و با این سادهسازی میتوان دادههای
صفحه 367:
تعریف داده ساخت یافته = شناسه Type
برای مثال یک ارایه از نوع صحیح را تعریف میکنیم:
Type No = array [1...100] of intec ;
در اینصورت تعریف آرایه به. ۷0[ نسبت داده میشود. اگر بخواهیم متغیری
از نوع آرايه بالا تعريف کنیم. آنرا از نوع 3٩0 تعریف میکنیم:
ar
Number: No ;
صفحه 368:
m Example ;
a=array[1..100] of integer ;
B:a; N: Word ;
1 Search (b:a; N: Word ; x: integer ) : ۷
[, Index: Word ; Flag: Boolean; { local vari
Index:= 0 ;
Flag:= TRUE ;
—_—
صفحه 369:
Index:= I ;
Flag:= FALSE ;
End ;
Inc (1);
End ;
Search:= Index ;
End ;
LORE EOE OEE CETTE eee
1
—_—
صفحه 370:
Begin { Main }
Writeln (' Enter Number' ) ;
ReadIn ( N);
For I:=1 To N Do
ReadIn ( b[ I] );
Writeln (' Enter Number ' ) ;
ReadIn ( x );
If Search(b,N,x)=0 Then
Writeln (' Not
Found ') ;
Else
Writeln (Search(b,N,x) );
End. {End Of Program }
صفحه 371:
* تمرینات
" روال Down را در نظر بگیرید:
601111 Down ( N: Integer) ;
in
While N>0 do
Begin
Write (N: 3);
Dec (N);
End ;
7
ب) وقتی روال بصورت )5( down فراخوانی شود. چه چیزی چاپ میشود
ب) مقدار پارامتر واقعى 7 بعد از اجرای روال چیست؟
صفحه 372:
ion MyStery ( M,N: Integer): integer
If N= 1 Then
MyStery:= 1
Else
MyStery:= M* MyStery(M,N-1) ;
{ End Of Function }
ف) تابع بازكشتى بالا را به ازاء مقادیر 1۷]<5 , 4 ۱[ فراخوانی کنید.
ب) تابع بازگشتی بالا را به ازاء مقادیر 1۷1-53 ر 25 لا فراخوانی کنید.
صفحه 373:
:ی
© تمرینات برنامهنويسي
" برنامهای بنویسید که اطلاعات حداکثر ۱۰۰ دانشجو که عبارتند از:
vt Family Nanie
اسم 900 شماره
دانشجوئی
را از ورودی دریافت کرده سپس:
الف) توسط روالی بنام :501 اطلاعات را برحسب شماره دانشجوئی مرتب کند.
ب) توسط تابعی بنام 5628۳610 شماره دانشجوئی فردی را از ورودی دریافت
نماید. در صورتی که شخص موردنظر در لیست باشد. سایر اطلاعات آنرا
صفحه 374:
* آرایهآی از نوع صحیح با حداکثر ۱۰۰ عنصر را در نظر بگیرید.
برنامهأى بنويسيد كه ابتدا آرايه را از ورودى دريافت کرده سپس با استفاده از
يك تابع بازكشتى بيشترين مقدار آرايه را محاسبه نمايد.
" دو آرايه مرتب حداكثر١١٠ عنصرى كه شامل اسامى افراد مىباشد را درنظر
بكيريد.
برنامهاى بنويسيد كه نخست دو آرايه را از ورودى دريافت نموده سيس توسط
روالى بنام 6 اين دو آرايه در هم ادغام نموده و در آرايه سومى قرار دها
صفحه 375:
فصل 12
هدفهاي كلي
١
مفهوم مجموعه و دادههای شما شى در زبان ياسكا
J Ob} )
e
جموعه و داد شمارث
ههای شمارشی به عنوان متغیر
: Rostra
صفحه 376:
:دانشجو يس از مطالعه اين فصل بايد بتواند
5 مفهوم مجموعه و دادههای شمارشی را درک کند.
۴ بتواند در صورت لزوم از مجموعه و دادههای شمارشی استفاده کند.
صفحه 377:
تعداد محدودی از دادهها که از نظر نوع یکسان هستند. در غالب مجموعه و يا
.گونههای شمارشی نگهداری میشوند که مفهومی شبیه در ریاضیات دارند
برای استفاده در مواردی خاص نظیر روزهای هفته و یا نوع ماشينها و... كه
ترتیبی هستند و یا یک مجموعه از دادههای پشت سر هم میباشند. استفاده از
این ساختارها کار را بسیار راحت میکند. هر چند وجود آنها به عنوان
ساختارهای دادهای. الزامینیست. بهرحال به عنوان ابزارهایی از زبان پاسکال
هستند که در مواقعی. ضروری بنظر میرسند و مسئله را به صورتی قابلفهم و
.راحت حل مى كند
صفحه 378:
* مجموعهها (عاه6)
در زبان پاسکال مجموعه مفهومی شبیه به مفهوم مجموعه در ریاضیات جدید
دارد. متفیری است که شامل لیستی از اعداد صحیح. SINS بولین و یا از نوع
همارشفئ :و ياشد كه :دا راق داد هاض موه بجهدا رده ها می پاش ناو
این جهت بسیار شییه به یک آرایه در زیان پاسکال است که شامل دادهعانی از
یک نوع میباشد. ولی آرایه دارای عناصر محدودی نیست و در ضمن مانند
.آرایه تعریف نمیشود
صفحه 379:
برای تعریف یک مجموعه از کلمات کلیدی 0 6 بصورت زیر استفاده میکنیم:
Type
Name= Set of Type Of Set;
Type
Digit_type = 0..9;
Digit = Set of
Digit_type
صفحه 380:
1
ar
ch: set of char; 55
HO PP ot of boolean;
faBumreet of byte;
0..255 5
x: set of 100..200;
y: set of ‘a'..'z';
z: set of '0'..'9';
صفحه 381:
عضو مجموعه میباشد يا خیر. این عمل در زبان پاسکال با کلمه کلیدی
in
صورت میگیرد. اگر عضویت صحیح باشد جواب 11116 وگرنه
False
میباشد. همچنین دو مجموعه را میتوان با علامات شرطی ح < >
<- و >-مقایسه کرد که همگی دارای خروجی درست يا غلط میباشند.
ولیعلامات شرطی < و > در مورد مجموعهها کاربردی ندارد.
صفحه 382:
Begin oe
a:= [1..3,4]; Jee:
if 3 in a then write('3 is in set a‘)
جايميشود
else write(‘'3 is not in set a');
write(3 in a);
True
write(8 in a); False
write([1,2,3,4,] = a);
True
write([1,2,3,4] = [2,2,1,1,1,3,4,4]);
True ۱
۱۲116)]1,21[ < ]1,2,3[((
False
write([1,2] <= [1,2,3]);
صفحه 383:
در ریاضیات میتوانیم مجموعهها را با هم اجتماع اشتراک و تفاضل کنیم که
اين عملیات در پاسکال با عملگرهای +. * و - به ترتیب میباشد. اجتماع
دو مجموعه ترکیبی از همه عضوهای آنها است و اشتراک یعنی عضوهایی
که در هر دو مجموعه مشترک است و تفاضل یعنی اعضایی که در مجموعه
اول میباشد و در مجموعه دوم وجود ندارد.
صفحه 384:
d=[2,3]
e=[0,1]
et o
b: set of 0. 10;
c, d, e: set of byte;
-gin
a:=[0,1,2,3];
b:=[2,3,4,5];
c:= a+b;
0,1,2,3,4,5]=[0..5]
d:= a*b;
e:= a-b;
id.
صفحه 385:
۱. آرگومان ورودی روالها میتواند مجموعه باشد که قبلاً در تایپ تعریف شده
باشد. نه اينكه مستقیم در روال به عنوان آرگومان بياید. ولی خروجی یک تابع
نمیتواند از نوع مجموعه باشد.
۲ برای نوشتن یا خواندن مجموعهها باید عضو به عضو عملیات صورت
بگیرد و مستقیماً توابع Read ۰ روی آنها کار نمی کنند.
صفحه 386:
Program test ;
Var
num , temp : set of byte;
I, c: integer ;
Begin
Writln (‘Enter numbers:
Readln( 1) ;
Num :=[];
0 (0) 2
—_
صفحه 387:
while (i >-1) do
begin
c:=c+1;
temp :=[I];
num := num + temp ;
ReadIn( 1);
end;
for 1:= 0 to 255 do
if (i in num) then
write(i:5 ) ;
End.{ End Of Program }
صفحه 388:
>" << << آآآآآاسا"اآ۳
* دادههای شمارشی
(Enumeration)
دادههای شمارشی. یک مجموعه مرتب از اعداد است که در برنامه. هر عدد
دارای نام بخصوصی است. این نامها در داخل دو پرانتز باز و بسته قرار
میگیرند و بترتیب از صفر مقدار میگیرند مگر اینکه برنامهنویس به آنها
.مقدار مخصوصی بدهد
صفحه 389:
۷06
0
Jar
Cars_type = (Peykan, Pride, Pegout,
Cars: cars_type;
حال در پرنامه 0815 میتواند مقادیر داخل دادههای شمارشی را بگیرد:
cars:= Pride;
cars:= PK;
صفحه 390:
۱ 1۵79 ۵6 = (sat, sun, mon, tue, wed, thu,
fri );
Var
Day: Days_type;
Begin
Day:= Mon;
i:= ord (sat) + ord (day) + (succ(sat));
j:= ord ( pred (sun) + ord (pred (fri));
writeln(i:5, j:5);
End.
1-3 j=5
: خروجی
صفحه 391:
متغیر داده شمارشی شبیه مجموعهها حداکثر دارای ۲۵۹ عضو میتواند باشد که
از صفر تا ۲۵۵ شماره گذاری میشود و لذا یک بایت حافظه را اشغال میکند.
صفحه 392:
و به عنوان آرگومانهای روالها و یا خروجی توابع میتواند درنظر گرفته شود
ولی حتماً باید در 11106 تعريف شده باشد و مستقيماً نمى توأن بكار برد.
اين عمل مشابه مجموعهها و آرایهها نیز میباشند. لذا ابتدا در 13706 تعریف
میشود. سپس به عنوان ورودی و یا خروجی روالها استفاده میشود وگرنه
خطای کامپایلری پیش خواهد آمد. همچنین میتوان در آرایهها از دادهها
شمارشی استفاده کرد.
صفحه 393:
rogram test: را حساب کند.
ype
days_type =
1t,sun,mon,tue,wed,thu,fri ) ;
ar
day: days_type;
i: byte;
egin
Write('Enter your days number: ' );
ReadIn(i);
While (i>=0) and (i<=6) do begin
Case I Of
صفحه 394:
4: day:= wed;
5: day:= thu;
6:day:= fri;
end;
Case day Of
sat: writeln (‘your day is
sat');
sun: writeln (‘your day is
sun’);
end; 1 ۱
1۲62 019 )01(*
صفحه 395:
٠ تمرینات
A=[1,3,5,7] , , [8-12,4,6 و [1,2,3]-0) باشد عبارات زير ر
فى کنید.
الف- (00- 8) + لكر
ب A + (B*C)
ج- A+B+C
inA2 =
صفحه 396:
"برنامهای بنویسید تا مجموعه ای از کاراکترهای کوچک را گرفته و به یک
مجموعه از کاراکترهای حروف بزرگ متناظر با آن تبدیل کند.
به کمک دادههای شمارشی. برنامه ای بنویسید که نام دانشجویان يك كلاس را
در برگیرد و هر دانشجو نیز یک شماره داشته باشد. سپس با دریافت نام او
شماره او در نمایشگر چاپ شود.
صفحه 397:
فصل 13 ِ
وكورهها (00105ع18)
هدفهاي كلي
* مفهوم ركورد و اجزاى آن
* انواع ركوردها و استفاده از آن در برنامه
* معرفى مزاياى ركوردها در برنامه
صفحه 398:
:دانشجو يس از مطالعه اين فصل بايد بتواند
"" مواقع لزوم ركورد را تشخيص دهد.
8 از رکوردها در برنامهاش استفاده کند.
a برنامههای بزرگ و با دادههای زیاد بنویسد.
صفحه 399:
نوع داده ساخت یافتهای که در اینجا مطرح میشود. ر کورد نام دارد که حهت
نگهداری دادههای مختلف نظیر نام. نام خانوادگی. سن و آدرس برای یک
دانشجو بكار میرود. رکوردها برخلاف آرایهها که دارای عناصر از یک
جنس و نوع هستند. دارای عناصر از انواع مختلف میباشند. اطلاعات از
نوع مختلف را نمیتوان در آرایه نگهداری کرد چرا که دارای جنس مشابه
نیستند و لذا از ساختاری به نام رکورد استفاده میشود.
صفحه 400:
ب ب ب <ج ب ب << 1۳11[
** تعریف ركوردها
نوع داده ساختيافته اى كه از يك سرى داده ها يا اطلاعات مرتبط به هم
+تشکیل می شود
. هر کدام از اطلاعات را یک فیلد می نامند
بطور کلی تعریف نوع رکورد در زیر آمده است:
ype
Name = Record
Field1-list : type1;
Field2-list : type2;
Fieldn-list : typen;
End;
صفحه 401:
Type
Student = Record
Name: String [10];
Family: String [15];
Age: integer;
Address: String;
End;
در اين تعريف Student 3 ¢ 18600۲0 است. حال میتوان در
1 برنامه تعریف کرد:
Var
S: Student;
صفحه 402:
براي دسترسي به فيلدهاي رکورد ازعلامت *." استفاده ميشود. يعني بصورت زیر:
نام فیلد . نام متغیر رکورد
مثال: برنامهای بنویسید که رکوردی از نو اعداد ایجاد کرده و مقادیر
آنرا مقدارهی کند.
صفحه 403:
end;
Var
Num = Numbers;
begin
Num. a
Num. b:
Num. x
Num. y:
Num. z
Write (Num.a 1 Num.b + Num.x + Num.y
+ Num.z);
End.
صفحه 404:
Type
Student = record
Id: integer;
Name: string[10];
Family: string[15];
Sex: char;
Age: integer;
End;
Var
Stu: student;
صفحه 405:
Stu.sge: =18;
Case sex of
'M': write('Mr.');
'F': write('Mrs.');
end;
write(stu.name, ''
stu.family);
End.
صفحه 406:
برای بدست آوردن فضای اشغال شده توسط رکورد ابتدا باید فضای اشغال
شده توسط تمامیفیلدها را بدست آورده و سپس باهم جمع کنیم.
مثال زیر را درنظر بگیرید:
صفحه 407:
A, B: Real; = yer
C, D: String [10]; 3 ett
F: Array [1... 10] of Boolean; 3 Yee
G: list1; 3 ۷*۵
x: Rectype;
۱۰+۱۰+۱۱+۱۲-۳ بایت فضا اشغال میشود.
ir
صفحه 408:
EEE EEE
F399 Go 495, *
فیلدهای یک رکورد میتوانند از هر نوعی باشد. از جمله میتوانند از نوع
رکورد دیگری باشند. در اینجا نیز مشابه قبل دسترسی به همان صورت
میباشد فقط به تعذاد رکوردهای تودرتو؛ ۱ پیش میآید Type
به مثال زیرتوجه کنید:
Rec = recor
a, b:
nteger;
c: char;
x: Record
p:
integer;
q:
integer;
ا 5
صفحه 409:
0
Rec;
دراینجا یک رکورد تودرتو به نام 1*00 تعریف شده است که متغیر ۲ از آن
نوع تعريف شده است. سپس برای دسترسی به فیلدهای 6, 0 , 2 میتوان
به صورت زير عمل کرد:
ra
r.b
ولی برای دسترسی به فیلدهای ]6, 0 چون متعلق به رکورد > نیز هستند داریم:
9
1.
صفحه 410:
:ی
٠ آرايهاي از رکوردها
هنكامى كه ما تعدادى داده مشابه داريم ولى در هريك. دادههاى مختلفى وجود
دارد میتوانیم یک رکورد تعریف کرده. سيس آرايهاى از آن تعريف كنيم.
e
student = record
Name: string[10];
Id: integer;
Age: integer;
End;
Arr_stu: array[1..10] of student;
5: Arr_stu;
صفحه 411:
5 ارايه 5
از نوع آن تعریف شده است.
مشابه ساختار آرایه چیزی عوض نشده است و فقط هر عنصر آرایه یک
رکورد میباشد که دارای سه فیلد مطابق جدول فوق میباشد.
و ترس ی رب من
S[1].age
S[2].name
S[2].id
صفحه 412:
ب ب ب <ج ب ب << 1۳11[
ارسال ر کورد به زیربرنامهها
ید زا نیت ومع ور ار هت ال از ری پارامترهای
بتغیر و مقدار به زیربرنامه ارسال کرد. ولی نوع برگشتی fi نمىتوانة ا
ز نوع رکورد باشد. یعنی حتماً باید از نوع ساده نظیر 01 .1۳6061 و...
اشد و از انواع ترکیبی نظیر رکورد. آرایه. مجموعه و فایل نمیتواند باشد.
اگر بخواهيم رکوردی را بصورت پارامتر به زیربرنامه ارسال كنيم, ابتدا بايد
آنرا در 706 تعریف کرده و سپس ارسال شود وگرنه کامپایلر خطا صادر
میکند.
صفحه 413:
Type
Stu-rec = Record
Name: string [10];
ID: integer;
Age: record
Day: integer;
Month: integer;
Year: integer;
End;
End;
Stu_arr=array[1..no] of سک
و
صفحه 414:
Stu: stu_rec;
Procedure ReadStu(Var S: Stu_rec);
Var i: integer;
Begin
for i:= 1 to no do
ReadIn(S[i].name, S[i].id, S[i].age.day,
S[i].age.month, S[i].age.year);
End;
صفحه 415:
War 1 ۳
Begin
for i:= 1 to no do
Writeln(S[i].name,'', S[i].id,'', S[i].age.day,'
', S[i].age.month,'', S[i].age.year);
End;
Begin
ReadStu(Stu);
WriteStu(Stu);
End.
صفحه 416:
EE EEE ۳-۳ " "" "
تمرینات
"برای گونههای حیوانات یک پارک نظیر پرندگان وحشی رکوردی شامل
نام. دسته. محیط زندگی, سن بسازید. در نظر بگیرید که در پارک ۱۰۰
گونه از یک پرنده وحشی وجود دارد
(راهنمایی: آرایهای از رکورد با فیلدهای گفته شده بسازید).
* برنامهای بنویسید که برای نگهداری تاریخ به صورت روز. ماه و سال
براى ٠٠١ سال بكار رود. در واقع به صورت تقویم باشد و جملهای در مورد
آن تاریخ را نگهداری کنید؟ (راهنمایی: آریهای ۳۹۱ تابی از روز بهمراه
آرایهای از ۱۲ ماه و یک سال و یک رشته را به صورت یک رکورد در نظر
گرفته سپس برای ۱۰۰ سال بصورت یک آرایه صدتایی در نظر بگیرید.)
صفحه 417:
١ ْ 14 فصل
(Files) Gut
هدفهاي كلي
* مفهوم فايل و انواع آن
* موارد استفاده از فايلها
صفحه 418:
:دانشجو يس از مطالعه اين فصل بايد بتواند
#" در برنامهداش از فايلها استفاده كند..
"" براى برنامههاى با دادههاى زياد از فايل استفاده كند..
* با فایلهای دادهای و بایزی برنامهنویسی کند.
صفحه 419:
برای ذخیره دائمی دادهها از ساختاری به نام فایل ile) استفاده مى كنيم.
تاکنون همه عملیات لازم در حافظه اصلی انجام میگرفت که گذرا و فقط
به زمان اجرای برنامه و روشن بودن کامپیوتر بستگی داشت. ولی در فایلها
چنین نیست. بلکه دادهها در فایلهایی قرار دارند که حتی بعد از خاموش
کردن کامپیوتن بعدها قابل دسترسی است.
صفحه 420:
EEE EEE << << ">
(Text) io sb *
یک فایل متتی از تعداد کاراکتر تشکیل شده است که با یک اسم در روی دیسک
ذخیره شده است. چون فایل از نوع متنی است میتوانید دادههای داخل آنرا
مشاهده کنید.
ساختار دادهها در یک فایل متنی بدین صورت است که تعدادی خط وجود دارد
كه به علامت 801-17 ختم مىشوند و در انتهاى فايل نيز علامت "18001 قرار
دارد. طول خطوط نامشخص است و اندازه فايل ممكن است بسيار بزرك يا
كوجك و يا تهى باشد.
صفحه 421:
تعویف يك متغير فايلى ١١
نسبت دادن اسم فايل به متغیر فایلی ۲۰
6۷30 ایجاد فایل با دستور .۳
صفحه 422:
Name : Text;
نسبت دادن اسم فایل به متغیر فایلی
Assign(FileVar ,
‘NameFile’ )
© ایجاد فاپل با دستور
Rewrite( FileVar
)
صفحه 423:
۰ مجموع آنها را بنویسد.
:
4; Array [ 1.. 10] of integer;
Sum, i: integer;
gin
Sum: = 0;Writeln (' Enter 10 numbers:
For i: = 1 to 10 do begin
Read (A [i]);
Sum: = sum + Afi];
end;
Assign (f, 'out.dat');
37 تا کرت ی ی LEK.
صفحه 424:
Writeln (f, A[il);
Writeln (f, Sum);
Close (f);
End.
بعد از نوشته شدن اطلاعات در فایل . فایل باید بسته شود برای اینکار از
: روال زیر استفاده می شود
Close(FileName)
صفحه 425:
تعییف یک متفیر فایلی ۱۰
نسبت دادن اسم فایل به متفیر فایلی .۲
باز کردن فایل برای خواندن با ۳۰
1 سستور
صفحه 426:
ستور 13680 و 1362011۳ برای خواندن اطلاعات از فایل بکار می روند .
7 بعد از خولندندادههایمورد نسظر بسه سطر بسعد میرود. لینعمل
ای ۷۷۳366180 نیز چنین میباشد. ولی قبل از استفاده از اين دستورات بايد
ایل متنی برای خواندن یا نوشتن باز شود. دستور 36596 فایل متنی را برای
خواندن باز میکند و مکان نما را ابتدای فایل میبرد.
ستور 161۷1116 فایل متنی را برای نوشتن در آن باز کرده. و مکان نما را به
شدای آن می برد.
صفحه 427:
f: Text;
str1, str2: string; a, b, c, d, e: integer;
gin
Assign (f, ' Test. dat ');
Reset (f);
ReadlIn (f, str1);
Readln (f, a, b, c);
Readln (f, d, e, str2);
Write (str2, ':', a+ b+ c+ d+ e);
Close (f);
صفحه 428:
11 0 كبى از فايل درخروجى بسازده.
f1,f2: Text;
str1,str2 : string ; ch: char ;
agin
write(‘Enter Input file: ');
readIn(str1);
write(‘Enter output (copy) file:
readIn(str2);
assign(f1,strl);
reset(f1);
assign(f2,str2);
rewrite(f2);
صفحه 429:
در اين برنامه ابتدا دو فایل به نامهایشان نسبت داده میشوند و ترتیب برای
خواندن و نوشتن باز میشوند. سپس توسط 60 شرط خاتمه فایل ورودی
یعنی 81 بررسی میشوند و در یک حلقه تو در تو ۷۷10116 شرط خاتمه خطوط
نیز توسط 60139 بررسی شده و کاراکترها از فایل ورودی خوانده شده و در
فایل خروجی نوشته میشوند.
صفحه 430:
begin
while not eoln(f1 )
do
begin
read(f1,ch);
write(f2,ch);
end;
readIn(f1);
writeln(f2);
end;
Close(f1);
Close(£2);
End.
صفحه 431:
EE EE EEE EE موممئي
(Binary & Typed) ,to€53 9 فايلهاي دودوبي **
ن نوع فایلها در زبان پاسکال از تایبهای مختلف 3729, 1600۲0
تقل 122161©1, 1620 و ... تشكيل شده است كه نياز به يردازش متنوء
بيه مرتبسازى. جستجو. حذف وء.. دارند. اين فايلها يس از ايجاد توسط
رنامه. قابل رؤيت توسط ويراشكرها نيستند. بلكه به صورت كدهاى اسكى
ى باشند يعنى دودويى مىباشند. نحوه دسترسى به اطلاعات آنها نيز به
سورت تصادفى (18212010332) است.
صفحه 432:
تعویف يك متغير فايلى ١١
نسبت دادن اسم فايل به متغیر فایلی ۲۰
6۷30 ایجاد فایل با دستور .۳
صفحه 433:
Name: File Of FileType ;
نسبت دادن اسم فایل به متفیر فایلی
Assign(FileVar ,
‘NamefFile’ )
© ایجاد فاپل با دستور
Rewrite( FileVar
)
صفحه 434:
Const n=100;
Type
Student = Record
Name: string[10];
Family: String[15];
Age: integer;
ID: integer;
end;
Sarray = Array [1..n] of
student;
صفحه 435:
Var
دودویی از نوع صحيح ;Bf2: file of integer
دودویی از نوع رکورد دانشجو ;Bf3: file of student
فایل دودویی از نوع کاراکتر ;Bf1: file of char
2 Bf6: file of set of 'A'..'Z 6 Ass yom 5! (25252,
صفحه 436:
Bf: file of strin[10]; Str: string
[10];
i: integer;
Begin
Assign (Bf,'out.dat');
Rewrite (Bf);
For i:=1 ton do Begin
Readln (str);
Write (Bf,str);
End;
Close (Bf);
+ oo
صفحه 437:
در جدول صفحه بعد تمام روالهای کتابخانهای پاسکال جهت کار با فایلها
آورده شده است که به همراه توضیحات لازمه جهت کار با آنها میباشد.
همچنین برای هر تابع و رویه محل مورد استفاده آن در ستونی مشخص
شده است .
صفحه 438:
صفحه 439:
انتقال وحرکت مکاننمادر فابل
[| شماره رکورد از انتهاي فايل | Filefos
داد ردهاي فایل جاري:
| نت ae تعدا
صفحه 440:
>,
مثال های حل شده *
مثال : برنامهای بنویسید که تعداد خطوط یک فایل متنی را باست. آورف
Var
F: text ;
ch: char,
str: string[20];
count: integer;
Begin
Write (‘Enter the file name:
Readln(str);
Assign(f,str);
Reset(f);
صفحه 441:
count:=0;
While not 53 do
begin
While not eoln(f) do
Read(f,ch);
Readln(f);
count:=count+1;
end;
Write(‘the number of lines in file is:
count);
End.
صفحه 442:
Const
r— 0:
Type
Booktype = Record
name: string[20];
ID: integer;
end;
Var
Bf: file of Booktype;
LID: integer;
name: string[20];
Book: Book type;
صفحه 443:
Rewrite 5
For I:=1 to n do
begin
Write (‘Enter the name & ID of book:
Readin (name, ID);
Book.name:= name;
Book.ID:= ID;
Write (Bf, Book);
End;
Close (Bf);
End.
صفحه 444:
پگ « 5
Ww تمرینات
*برنامهای بنویسید که از یک فایل متنی از اعداد حقیقی که در سطرها و
ستونها مختلف قرار دارند. میانگین دادهها را بدست آورده و در مانیتور
چاپ کند.
*برنامهای بنويسيد كه در انتهای یک فایل متنی. همان فایل متنی را اضافه کند.
" برنامهاى بنويسيد که در یک فایل نوع دار از کاراکترهاء اطلاعات آماری
هر کاراکتر را بدست آورده. یعنی تعداد هر کاراکتر را بدست آورد.
مثلاً کاراکتر 8 به تعداد 40 تا و کاراکتر "13" به تعداد ۳۹ تا و...
صفحه 445:
هدفهاي كلي
res تعریف
یک الگوریتم aus a
الگوریتم ae :
rr ج |
1
صفحه 446:
:دانشجو پس از مطالعه این فصل باید بتواند
"" پرنامه خود را تحلیل زمانی نماید.
* مرتبه الگوریتم را بدست آورد.
* الگوریتمهای بازگشتی را تحلیل نماید.
صفحه 447:
تحلیل یک الگوریتم یعنی ارزیابی روشهای مختلف حل آن مسئله. بررسی و
محاسبه بهترین و بدترین حالتهاء بصورتی که با توجه به شرایط بهترین
حالت را بتوان انتخاب کرد. الگوریتم در واقع تعداد محدودی از دستورالعملها
می باشد که بترتیب اجرا میشوند و هدف خاصی را دنبال میکنند
صفحه 448:
** تعریف مرتبه یا پيچيدگي الگوریتم ( 0 بزرگ)
براي بدست آوردن بدترین حالت اجراي يك الگوریتم
با مرتیه پیچیدکن الگوزیتم از
0 بزرگ استفاده ميکنيم و بنا به تعریف عبارتست
از ((00(<0))0؟ و
no خوانیم ()] از مرتبه 620 ميباشد, اگر و تنها
Ac> 0, Vn > n0= f(x)<cg(x)
صفحه 449:
n>=3 <= cg(n)=In+2A(n)
لذا میتوان گفت. پیچیدگی زمانی (610] از مرتبه O(n) میباشد.
صفحه 450:
EEE EEE << << ">
* بدست آوردن مرتبه الکوریتمها
برای بدست آوردن مرتبه اجرای الگوریتمها باید به دقت بررسی شود و تعداد
تکرار آن الگوریتم بدست آورده شود. یعنی در واقع تعداد تکرارها بدست
آورده شود و سپس با هم جمع شده و مطابق مثالهای قبلی به پیچیدگی زمان
واقعی رسید. برای این منظور از الگوریتمهای ساده شروع کرده و به پیچیده
میرسیم.
صفحه 451:
x:= 0;
For I:=1 ton
do
:=x+1;
که در آن « تعداد ورودی میباشد. یعنی حلقه 601 بستگی به پارامتر 9 دارد.
همان طور که از تعریف حلقه 50۲ برمیآید تعداد 11-۱+۱ تکرار یعنی
1 تسکرار یجود دارد و لنا قطعه برنامه فوقاز مرتبه(6()10 مریاشد
صفحه 452:
Function fact ( n: integer
integer ;
var
f,i: integer;
begin
f:=1,
for I:=1 to n do
f:=f*i;
fact:=f;
end;
صفحه 453:
تابع فوق فاکتوریل عدد « را بر میگرداند. همانطور که میبینید تابع شامل
یک حلقه 701 ساده بوده که از یک تا 9 متغیر بوده و لذا بار تکرار میشود
۲ جمله ساده نیز وجود دارد که زمان های ثابتی دارند
ین مرتبه تابع بالا برابر است با
0)
صفحه 454:
۲ پیچیدگی زمانی توابع زیر را بدست آورید:
چپ
1. £1(n) =n+ 2n? +100
2. £2(n) =n? + n°" ++ 2
3. £3) =2" + 5" + logn!+n”
4. £4(n) =logn+ Jn +1
5. £5(n) =n? logn + n!°™ + (logn)!
صفحه 455:
Function test(n : integer):
teger ;
var
i,x: integer;
Begin
x:=0;
for i:=1 to n do
x:=x+1;
for i:=1 to n do
for j:=1 to n do
x:=x+1;
test:=x;
pad
صفحه 456:
sf