صفحه 1:
مبانی کامپیوتر ‎eo‏ ‏جعفر تنها - مهدی یوسف خانی : ارائه دهنده

صفحه 2:
اهداف کلی این درس :دانشجو پس از مطالعه این درس باید بتواند الگوریتمی برای حل مسئله ارائه دهد اصول و مبانی اولیه نرم افزار و سخت افزار را بشناسد اهداف و مفا هیم زبان های برنامه نویسی را بداند مفاهیم اولیه برنامه نویسی ساخت يافته را بداند و اصول لازم را در مرحله اجراء بکار پپرد دستورات زبان پاسکال را دز برنامه ها بگار بیرد از توابع و روال های استاندارد زبان پاسکال در صورت لوزم ا ستفاده ‎Stee cae‏

صفحه 3:
*از توابع ۰ روال ها برای جدا کردن قطعات برنامه استفاده کند *فایل ها را به عنوان محلی برای ذخیره داده ها در برنامه استفاده کند *با استفاده از قابلیت های زبان پاسکال برنامه ای را برای یک

صفحه 4:
* جایگاه این درس در رشته مهندسی کامپیوتر این درس اولین درس دانشگاهی رشته می باشد و نقطه شروعی برای ورود به دنیای جالب برنامه نویسی و علم و فن کامپیوتر هست . بنابراین یاد گیری .اصول اولیه برنامه نویسی در اين درس از جایگاه ویژه ای برخوردار است اين درس پایه و اساس برنامه نویسی که جزء اصول این رشته می باشد را به . فركيران ياد مى دهد بنابراین یادگیری دقیق اين درس به همراه ارائه پروژه های عملی که لازمه اين . درس می باشد جزء اهم مسائل می باشد خی مج مش هه

صفحه 5:
: توصيه مى شود اين درس در بيست جلسه بصورت ذیل ارائه شود بخش اول :( در ينج جلسه ) اهداف درس و فصل اول و دوم كتاب درسى : بخش دوم اجلسه ششم فصل سوم كتاب درسى : جلسه هفتم فصل جهارم كتاب درسى و

صفحه 6:
فصل ششمکتاب درسی : جلسه دهم و یازدهم فصل هفتم کتاب درسی : جلسه دوازدهم فصل هشتم کتاب درسی :حلسه سیزدهم فصل نهم كتاب درسی

صفحه 7:
فصل دهم کتاب درسی : جلسه پانزدهم و شانزدهم فصل يازدهم كتاب درسی : جلسه هفدهم فصل دوازدهم کتاب درسی : جلسه هیجدهم فصل سیزدهم کتاب درسی : جلسه نوزدهم فصل جهاردهم کتاب درسی

صفحه 8:
: جلسه بیستم فصل پانزدهم کتاب درسی و 5 فلا فرش ارائه پروژه نهائی در

صفحه 9:
فصل ۱ لكيييتمها ‎Algorithm‏ هدفهاي كلي كل مسئله و ارائه الگوریتم شناخت اجزاء لازم برای حل ه ‎ale‏ بررسی صحت الگوریتم

صفحه 10:
:دانشجو پس از مطالعه این فصل بايد بتواند الگوریتمی را برای حل مسئله ارائه دهد. الگوریتم های مختلف برای یک مسئله را مقایسه کند. شرط ها و حلقه ها را در الگوریتم بکار ببرد . 10

صفحه 11:
در زندگی روزمره. انسان با مسائل مختلفی روبروست و برای هر کدام از این مسائل (حل مشکلات) راه حلی و روشی را بر می‌گزیند. مسائلی از قبیل راه رفتن. غذا خوردن. خوابیدن و غیره که بشر ‎Uy A‏ هر روز آنها را پیش روی خود دارد. همه این مسائل نیاز به روشی برای حل کردن دارند مثلا راه رفتن باید با ترتیب خاصی و مراحل معینی انجام شود. تا مسئله راه رفتن بیای بشر حل شود. اصطلاحا روش انجام کار یا حل مسئله را الكوريتم ان مسئله می‌نامند 11

صفحه 12:
** تعریف الگوریتم الگوریتم مجموعه‌ای از دستورالعمل ها. برای حل مسئله می‌باشد که شرایط زیر را بايد دارا باشد: * دفيق باشد * جزئیات کامل حل مسئله را داشته باشد. *ایاپذیر باشد. —

صفحه 13:
* مراحل الگوریتم برای حل یک مست آن مسئله باید الگوریتم آن مسئله را مشب : 98 حا طراحی الگوریتم براى أن مسئله و سا سس ۱ ‎١ -‏ يده مى شود. د ریتم معمولا سه مرحله زیر را از هم جدا می‌کنند: اق *خواندن داده‌ها ۴انجام محاسبات *خروجی‌ها

صفحه 14:
0 شروع ‎,2-١‏ را بخوان. ‏۲-مجموع 2 , 0 را محاسبه و در 91110 قرار بده. ۳- 91110 را در خروجی چاپ کن ‏۴-پایان

صفحه 15:
شروع ‎١‏ سه عدد از ورودى بخوان ‏۲- مجموع ‎dw‏ عدد را محاسبه و در 5111311 قرار بده. ۳- 91110 را بر سه تقسیم کرده.در 2۷6 قرار بده. *- 51117 , 2۷6 را در خروجی ‎oe‏ کن. ‎15 ‏و بان

صفحه 16:
فلوچارت از شکل‌های زیر تشکیل می‌شود. *علامت‌های شروع و پایان: که معمولا از یک بیضی استفاده می‌کنند: *علامتهای ورودی و خروجی: که معمولا از متوازی‌الاضلاع استفاده می‌شود:

صفحه 17:
جایگزین یا محاسبات *علامت شرط: برای نمایش شرط از لوزی استفاده می‌شود. *علامت اتصال: برای اتصال شکل‌های مختلف بهم از فلش‌های جهت‌دار استفاده می‌کنند. 17

صفحه 18:
* فلوچارت مجموع سه عدد 9 Read(a,b,c) Sum < atb+c Ave < sum/3 3 Write(sum,ave) 2 End) ‏هته‎

صفحه 19:
(2 ee ee eee راى حل اين مسئله 2 , 0 را دو متغیر که در آنها دو عدد خوانده شده. فرار می‌گیرند در نظر می‌گیریم. سپس با استفاده از یک متفیر کمکی محتويات اين دو عدد را جابجا مى كنيم : 19

صفحه 20:
emp a 20

صفحه 21:

صفحه 22:
> << کچ ‎eo‏ تمرین ۱- فلوچارتی رسم نمائید که طول و عرض مستطیل را از ورودی دریافت وه معط و ناس آنز| معانته و ‎ile‏ 9 ۲- فلوچارتی رسم نمائید که شعاع دایره‌ای را از ورودی دریافت کرده. محيط و مساحت انرا محاسبه و جاب نماید. فلوجارتى رسم كنيد كه سه عدد :2151 ,56601201 , 111130 را از و بافت كرده. محتويات انها را جابجا نموده. حاصل را در خروجى ع كيد

صفحه 23:
6- فلوجارتی رسم نمائید که دو عدد از ورودی دریافت کرده. سپس دو باك ذو هدق را كدوج انتسهادو راو مجير كمكح تانينا كد ۵- فلوچارتی رسم نمائید که عددی (درجه حرارت برحسب سانتیگراد) را از ورودی دریافت کرده سپس آنرا به درجه فارنهایت تبدیل کند.

صفحه 24:
:ی > دستورالعمل‌هاي شرطي در حل بسیاری از مسائل یا ت تقریباً تمام مسائل نیاز به استفاده از شروط جزء نیازهای اساسی محسوب می‌شود. همانطور که ما خودمان در زندگی روزمره با این شرط‌ها سرکار داریم. بطور مثال اگر هوا ابری باشد ممکن است چنین سخن بكوييم: اگر هوا بارانی باشد سپس چتری برمی‌دارم. در غیر اینصورت چتر برنمی‌دارم.

صفحه 25:
NO ‏عمل يا اعمال بعدى‎

صفحه 26:
مثال : فلوچارتی رسم نمائید که عددی را از ورودی زوج بودن آن را تشخیص دهد. ‎in)‏

صفحه 27:

صفحه 28:

صفحه 29:
UP WN 17 خروج 11 29

صفحه 30:
:ی * تمرین ۱- فلوچارتی رسم کنید که عددی را از ورودی دریافت کرده. قدر مطلق عدد را در خروجی چاپ ‎AS‏ ۲- فلوچارتی رسم نمائید که عددی از ورودی دریافت کرده مثبت. منفی یا صفر بودن عدد را تشخیص داده, در خروجی با پیغام مناسب چا کته و فلوچارتی رسم نمائید که عددی را از ورودی دریافت کرده. بخشپذیری آن بر ۳ و ۵ وا بزرسن تماید. فلوچارتی رسم نمائید که ضرایب یک معادله درجه دوم را از ورودی دریافت کرده ریشه‌های آن را محاسبه در خروجی چاپ کند. ‎au‏

صفحه 31:
‌ ** حلقه‌ها در حل بسیاری از مسائل با عملیاتی روبرو می‌شویم . که نیاز به تکرار دارند و عمل تکرار آنها به تعداد مشخصی انجام می‌گیرد. فرض ‎AES‏ ‏بخواهیم ميانكين ۰ عدد را محاسبه کنیم. در اینصورت منطقی بنظر نمی‌رسد که ۰ متغیر مختلف را از ورودی دریافت کنیم سپس آنها ر حت ع 31

صفحه 32:
*حلقه های با تکرار مشخص *؟حلقه های با تکرار نا مشخص

صفحه 33:
در اين نوع حلقه‌ها تعداد تکرار مشخص می‌باشد این حلقه از اجزاء زیر تشکیل می‌شود: ۱- اندیس حلقه ۲- مقدار اولیه برای انديس حلقه ۳- مقدار افزاینده براى انديس حلقه (معمولا یک واحد در هر مرحله) 4- مقدار نهایی (تعداد تکرا حلقه) ۵- شرطی برای کنترل تعداد تکرار حلقه 33

صفحه 34:

صفحه 35:
35

صفحه 36:

صفحه 37:
37 م يم اه م يمام ه قوم مم مد 15

صفحه 38:
مثال : فلوجارتى رسم كنيد كه 2 عدد از ورودی دریافت کرده. بزرگترین مقدار از بین 2 عدد را بيدا كيده در خروجى جاب نمايد. انديس حلقه ‎i‏ بزرگترین مقدار ‎Max‏ 38

صفحه 39:

صفحه 40:
ورودی دریافت کرده سپس 5 به و ‎DS deober yn‏

صفحه 41:
write(pow) yes pow <— pow*x (=) ‏حلقه‎ | =a

صفحه 42:
۱ ۲ (در پاسکال به حلقه ‎nile‏ مشهورند.) ر این حلقه‌ها با توجه به ورودی. تعداد تکرار مشخص می‌شود. و دقيقاً نمی توان تعداد تکرار حلقه را بدون ورودی معین کرد. اين حلقه ها فقط شامل شرطی هستند که تا زمانیکه برفرار باشد حلقه اجرا می‌شود. 42 Iran Engineering

صفحه 43:
No محموعه دستورالعملها و جاگزینها 43

صفحه 44:
مثال: فلوچارتی رسم کنید که عددی را از ورودی دریافت کرده سپس تعداد ارقام آن را شمرده در خروجی چاپ نماید. ؟عدد خوانده شده ‎N‏ ؟ تعداد ارقام ‎count‏ 44

صفحه 45:
Begin count g 0 if N>0 then yes N <—Ndiv10 count < count+1 5

صفحه 46:
در حالت ‎IS‏ جملات سری بصورت: عدد خوانده شده جمله اول سری جمله دوم سری جمله سوم سری ل كل من 46

صفحه 47:

صفحه 48:
3-0 * تمرين ‎-١‏ فلوجارتى رسم نمائيد كه عددى از ورودى دريافت كرده. كامل بودن آنرا بررسى نماید. (عدد کامل. عددی است که مجموع مقسومعليههاى آن با خودش برابر باشد.) ‏۲- فلوچارتی رسم کنید که ا را از ورودی دریافت کرده. ا جمله سری فیبوناچی را تولید نماید. ‏۳ فلوچارتی رسم نمائید که دو عدد ]1۷ , لا را از ورودی خوانده. بزرگترین مقسوم‌علیه مشترک دو عدد را محاسبه و چاپ کند. ‎48

صفحه 49:
EE EE EEE EE ‏موممئي‎ ‏حلقه‌هاي تودر تو‎ * الكوريتمهايى كه تا حال بكار برديم. فقط شامل یک حلقه بودند. در صورتى كه در بسيارى از مسائل ممكن است نياز به استفاده از جند حلقه در داخل هم باشیم. در این نوع حلقه‌ها باید دقت بیشتری به خرج دهیم. تا مشکلی پیش ناید. اگر از حلقه‌های نوع اول بصورت تودرتو استفاده کنیم در اینصورت برای هر حلقه شرط نهایی و اندیس اولیه جداگانه باید تعریف کنیم . 49

صفحه 50:
مقدار نهایی خود تکرار می‌شود. در کل اگر حلقه اولیه 12 بار تکرار شود و حلقه داخلی 322 بار. در ایتصورت کل حلقه : nxm بار تکرار خواهد شد. 50

صفحه 51:

صفحه 52:
= سرى 59 محاسبه نماید: ‎x‏ للىيى... + ۳ وت * اندیس حلقه اول 1 * وریدی لا * محاسبه فاکتوریل ‎fact‏ * انديس حلقه داخلى ل * مجموع ‎Sum‏

صفحه 53:
1-1 53

صفحه 54:
* تمرینات آخر فصل ۱- فلوچارتی رسم نمائید که آل عدد از ورودی دریافت کرده تعداد اعداد اول و کامل را شمرده در خروجی چاپ نماید. - فلوچارتی رسم نمائید که 26 , 1۷ را از ورودی خوانده مقدار سری یر را محاسبه کند: ‎Ss‏ برچ شاد + +1- 5 54

صفحه 55:
J ‏م۳‎ عدد را محاسبه و در خروجى جاب کند. 6 فلوجارتى رسم كنيد كه تاريخ تولد شخصى را از ورودى خوانده. سن شخص را با تاريخ روزء محاسبه نموده در خروجى جاب كند. 4- فلوجارتى رسم نمائيد که (10<10) ۷], لا را از ورودى دريافت كرده سرى فيبوناجى بين 10/4, ۷[ را توليد كرده. در خروجى جاب كنا 55

صفحه 56:
Ve ‏کاربرد آرايه ها در الكو‎ ‏كوريتم ها‎ هدفهاي كلي اخت آرايه ها 5 سد اخت ا ‎ee‏ جستجو لگوریت ۱ تفت ریتم های لاز ‎oe‏ ی لازم برای 35 = ‎il‏ و ۱ و مر جستجو يا ا ‎a‏ زى

صفحه 57:
:دانشجو يس از مطالعه اين فصل بايد بتواند "ذا از آرایه ها در حل مسئله استفاده کند . ذا | با استفاده از آرایه ها لیستی را مرتب نماید . در صورت لزوم در لیستی جستجو انجام دهد . 57

صفحه 58:
فرض کنید بخواهیم اطلاعات ۱۰۰ کارمند را از ورودی بخوانیم و سپس آنها را مرتب کنیم. در اینصورت باید ورودیها در جایی از حافظه ذخیره کنیم. در زبانهای برنامه‌نویسی معمولا از آرایه برای ذخیره اطلاعات در حافظه استفاده می‌کنند. در آرایه‌ها ما با توحه به تعداد ورودیها. طول آن را مشخص می‌کنیم. سپس داده‌ها را خوانده در آن قرار مى دهيم 58

صفحه 59:
موممئي ‎EE EE EEE EE‏ پم ده ۰ ‎wis pi **‏ آرایه خانه‌های پشت سر هم از حافظه که همنوع بوده و توسط یک اسم معرفی می‌شوند. آرایه نام دارد. نحوه دسترسی به هر یک از اعضاء آرایه. از طریق اندیس آرایه امکانپذیر است . برای تعریف آرایه ابتدا طول آرایه که در حقیقت تعداد خانه‌های آن را نگتهن هی کلد,.قعین می‌کنيم: سیسن توع تعانها باید معین شوك در فلوچارت‌ها آرایه‌ها را بصورت زير نمایش می‌دهیم: ‎Name[ 1 .. Length [‏ طول آرایه اسم آرايه 59

صفحه 60:
زير مى باشد: a{1..100] Read(ali]) 10

صفحه 61:
Nam [ inde انديس آرايه اسم آرايه مثال: فلوجارتى رسم كنيد كه يى آرايه حداكثر ‎٠٠١‏ عنصری را از ورودی دريافت كرده. سيس آن را خروجى نمايش دهد. 61

صفحه 62:
yes write(afil) 1 1 ‏للع‎ Read(alil) i <— i+l ‏جع‎ 62

صفحه 63:
a[1..20] i<1 ali] <— Nmod2 ‏و و‎ No 1 1 ‏1ه‎ 3 N <— Ndiv2

صفحه 64:
مثال : فلوچارتی رسم نمائید كه عددی از ورودی دریافت کرده سپس اعداد اول قبل از آن را تولید نموده . در یک آرایه قرار دهد. [2]1..100 1 حه 1 A Read(N) 7 | ke ‘alt |< 2 a[2] <— 1 64

صفحه 65:

صفحه 66:
EEE EEE (search and SOrt ) jlo Udy ‏جستجو و‎ * یکی از مسائلی که در بحث طراحی الگوریتم بسیار مهم است. بحث مرتب‌سازی و جستجو می‌باشد. منظور از جستجو اینست که یک مقداری را از یک لیست جستجو کنیم و منظور از مرتب‌سازی اینست که يك ليست مرتب از داده‌ها را تولید کنیم. برای جستجو و مرتب‌سازی الگوریتم‌های مختلفی وجود دارد در زیر الگوریتم‌های اولیه. برای جستجو و مرتب‌سازی را بررسی می‌کنیم. 66

صفحه 67:
دو الگوریتم زير غالبا برای جستجو بکار می‌روند:

صفحه 68:
در جستجوی خطی عبارت مورد جستجو را به ترتیب با اولین. دومين ‎WN pe suey‏ مقایسه می‌کنیم اگر عنصر مورد جستجو پیدا شد ‏انديس آن را نمايش مى دهيم.

صفحه 69:
(index) ite! writ ۳

صفحه 70:
در جستجوی دودوئی . لیست مورد جستجوء مرتب می‌باشد. لذا برای جستجو اعمال زیر انجام می‌شود: ۱- عنصر ۲ با عنصر وسط آرايه كه انديس آن برابر middle (low+high)/2 مقایسه می‌شود.

صفحه 71:
tol 9 1 9 559 3 0 د ۱ ليست قرار دارد. لذا آرايه يا انديسء جد يد در نظ ر كرفته می‌شود و قسمت پایین لیست از فضای جستجو حذف می‌شود. ‎eames‏ ای ‏۳-اگر 2 از عنصر وسط آرایه بزرگتر باشد قسمت بالای لیست حذف می‌شود و فضای جستجو. قسمت پایین آرایه خواهد بود. ‏۶- اگر 2 برابر عنصر وسط باشد عمل جستجو خاتمه می‌پذیرد.

صفحه 72:
مرتب‌سازی بحث بعدی این فصل می‌باشد. برای مرتب کردن داده‌ها نیز / - الگوریتم‌های مختلفی وجود دارد. که هر کدام مزایا و معایب خاص خود را دارد. بحث مقصل در این مورد را به فصل‌های بعد واگذار می‌کنيم.

صفحه 73:
EEE EEE ‏تمرین‎ * *فلوچارتی رسم نمائید که عددی از ورودی دریافت کرده. اعداد کامل قبل از خود را تولید و در یک آرایه قرار دهد. *فلوچارتی رسم نمائید که یک آرایه حداکثر ۱۰۰ عنصری از ورودی دریافت کرده عناصری از آن که اول هستند را با صفر کردن حذف نماید. *فلوچارتی رسم نمائید که یک عدد حداکثر ۲۰ رقمی را توسط آرایه‌ای از ورودی دریافت نماید. سپس یک عدد تک رقمی را از ورودی خوانده در عدد ۲۰ رقمی ضرب نموده. حاصل را در خروجی چاپ نماید. 73

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

صفحه 75:
:دانشجو پس از مطالعه این فصل بايد بتواند کامپیوترهای نسل جدید را با کامپیوترهای نسل قدیم مقایسه کند. سخت‌افزارهای لازم برای کامپیوترهای شخصی را بشناسد. انواع حافظه مزایا و معایب آنها را شناخته و با هم مقایسه نماید. سیستم عامل و انواع آن را مقایسه نماید. نرم‌افزار و زبانهای برنامه‌نویسی را تعریف کند. 75

صفحه 76:
‎EE << << ">‏ * کامپیوترهای قدیمی ‎aoe (Super Computer) 55 5 pS oy!‏ منظوره دیجیتال الکترونیک. تحت عنوان ۳/67 در سال ۱۹۶۲ میلادی در دانشگاه پنسیلوانیا ساخته شد. اين کامپیوتر با سرمایه ارتش آمریکا طراحی شد. وزن این کامپیوتر ۳۰ تن و ابعاد آن ۳۰۵۰ فوت بود. این کامپیوتر برای محاسبه جدول پرتابه‌ها؛ پیش‌گویی وضع آب و هوا و محاسبات انرژی اتمی بکار می‌رفت. ‏سح ‎76

صفحه 77:
در کامپیوترهای اولیه از لامپهای خلاء بعنوان عنصر الکترونیکی پایه استفاده می‌کردند. در این ماشین‌ها ۱۹۰۰۰ لامپ خلاء استفاده شده بود و برای انرژی مصرفی لامپ‌ها و همچنین دستگاههای تهویه و خنک کننده ماشین حدود 130 160 انرژی الکتریکی مصرف می‌شد. این ماشین‌ها دارای حجم زیادی بودند و سطحی را معادل ‎٩۰۱۵‏ ‏مترمیبع اشغال می‌کردند. این کامپیوترها به کامپیوترهای نسل اول معروف شدند. 77

صفحه 78:
کامپیوترهای امروزی با بکارگیری ریزپردازنده به کامپیوترهای نسل چهارم معروفند. البته نسل‌های جدید دیگر کامپیوترها نیز «به بازار ارائه می‌شود در کامپیوترهای امروزی سرعت پردازش بسیار ‎Wb‏ اجزاء سخت‌افزاری بسیار کوچک. حجم حافظه بالا و غییه .آنها را از نسل های دیگر متمایز می‌سازد 78

صفحه 79:
: اجزاء تشکیل دهنده کامپیوتر عبار تند از * سخت افزار 3 نرم افزار

صفحه 80:
Input 2307 پرداز )2272 80

صفحه 81:
کامپیوترهای امروزی معمولاً از قطعات زیر تشکیل می‌شوند: دستگاههای ورودی ‎pe cutie‏ حافظه‌های اصلی واحد پردازشگر مرکزی دستگاههای خروجی

صفحه 82:
* فرم افزار نرم‌افزار یکی از بخش‌های اساسی کامپیوتو به شمار می‌آید. که در واقع سخت‌افزار را بکار می‌گیرد. بعبارت دیگر رابط بین کاربر و سخت‌افزار را نرم‌افزار می‌نامند. نرم‌افزار در حقیقت روح و جان یک کامپیوتر است. که به سخت‌افزار هویت می‌بخشد. 82

صفحه 83:
* سیستم | ‎(OS: Operating System)‏ مشهور ترین نوع نرم‌افزارهای سیستمی می‌باشد. که مدیریت منابع سیستمی را پر عهده دارد. سیستم‌عامل. همجنين ارتباط بين کاربر و اجزاء سخت‌افزاری و نرم‌افزاری دیگر را برقرار می‌کند.

صفحه 84:
84

صفحه 85:
** زبانهاي برنامه‌نويسي * نرم‌افزارها توسط زبانهای برنامه‌نویسی نوشته می‌شوند. زبانهای برنامه‌نویسی یک سیستم ارتباطی هستند که توسط آنها می‌توان دستورات لازم را به ماشین انتقال داد. * هیزبان برنامه‌نویسی به مجموعه‌ی از علایم» قواعد و دستورالعمل‌ها گفته می‌شود که امکان ارتباط با کامپیوتر را جهت بيان كارى يا حل مسئله‌ای فراهم می‌کند. 85

صفحه 86:
* زبانهای سطح ‎Ve‏ ‏* زبانهای سطح پایین * زبانهای سطح میانی 86

صفحه 87:
كامبايلر برنامه نوشته در يك زبان سطح بالا را به برنامه مقصد تبديل رسو Source program

صفحه 88:
Pascal gb; # در این کتاب زبان پاسکال ‎os 5 Sie! cle (Pascal)‏ برنامه‌ها انتخاب کردیم. اين زبان که به افتخار بلز پاسکال دانشمند فرانسوی قرن هفدهم میلادی. پاسکال نامگذاری شده است. در اواخر سال ۱۹۱۰ و اوایل ۱۹۷۰ توسط پروفسور نیکلاس ویژت در انستیتو فنی فدرال سوئیس مطرح گردید 88

صفحه 89:
هدفهاي كلي شناخت اجزاى تشكيل دهنده يك برنامه شناخت ساختار يك برنامه در زبان ياسكال بررسى دستكاههاى خروجى و دستورات لازم در زبان ياسكال براى توليد خروجى

صفحه 90:
:دانشجو يس از مطالعه اين فصل بايد بتواند اجزاء لازم براى نوشتن برنامه در زبان ياسكال را بداند. ‎a‏ يك شناسه صحيح در زبان ياسكال را تعريف كند. ساختار یک برنامه در زبان پاسکال و اعلانهای مربوط به برنامه را تعریف نماید. یک برنامه ساده به زیان پاسکال که فقط خاصیت خروجی دارد؛ بنویسد. 90

صفحه 91:
* کلمات ذخیره‌شده ( ۷۷۵۲5 11656150 ) (identifier ( ‏شناسه‌ها‎ * 91

صفحه 92:
(Words کلمات ذخیره شده, کلماتی هستند که مترجم زبان آنها را می‌شناسد و معنای خاصی برای زبان دارند. مترجم زبان به محض مشاهده این کلمات اعمال خاصی را انجام می‌دهد. هر زبان دارای تعداد مشخصی کلمات ذخبره شده می‌باشد و این تعداد قابل افزایش توسط برنامه‌نویس 92

صفحه 93:
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 div do 93 downto

صفحه 94:
* شناسه در ياسكال براى نامكذارى ثابتها. تایپها؛ يروسيجروهاء توابع» میدانهای یک رکورد. برنامه و همچنین یوئیت مورد استفاده قرار مى كيرد. و

صفحه 95:
۳ ‎id‏ ستاندار از علستاندارد: لیر = اس 10 هااز قباد يبا ‎isi t‏ بردر يبان > هم ‎i‏ نياسكللتعريفشد. ملند > 10 ها كاربر وغيرلستانفاره ‎ss‏ ‏ا ‎userdefine‏ هم كفته 2 مونسود.

صفحه 96:
‎EE << << ">‏ * ساختار برنامه در زبان پاسکال :اجزاء اصلي یک برنامه به زبان پاسکال بصورت زیر مي‌باشد ‏عنوان برنامه قسمت تعاریف برنامه قسمت دستور العملها

صفحه 97:
Constant Declaration wb ‏اعلان‎ ‎Type Declaration ‏اعلان انواع‎ Declaration Variable ‏اعلان متغیی‌ها‎ Declaration Label ‏اعلان برچسبها‎

صفحه 98:
بصورت زیر بیان کرد: استفاده از کلمه ذخیره شده ۳100713100 و اسم برنامه ( که می‌تواند بكار برده نشود ) قسمت تعاریف شناسه‌ها بلوک اصلی برنامه که با 36010 ¢5,5 5 4 ‎End‏ همراه نقطه (.) ختم می‌شود. هر دستور در پاسکال به ( ۶) ختم می‌شود.

صفحه 99:
block شناسه del | Statement

صفحه 100:
:ی ‎Output ) -,> *‏ ( مشهورترین دستگاههای خروجی عبارتنداز: ‎Monitor‏ صفحه نمایش ‎Printer‏ چاپگر ‎Terminale‏ تزمينال ‎Plotter‏ رسام

صفحه 101:
> << کچ *مثال هاي حل شده Program Print ( output ) ; Begin Writeln (' Pascal Language ۱۱8 Writeln (' Hello' ): End. (fro

صفحه 102:
:خروجي برنامه بالا بصورت زیر مي‌باشد Pascal Language Hello

صفحه 103:
فصل 5 نواع عملگرها و داده‌ها در زبان باسكال هدفهاي كلي معرفي انواع عملكرها در زبان پاسکال شناخت انواع داده‌ها بررسي اولویت عملگرها معرفي دستورات جايگزيني در پاسکال 103

صفحه 104:
:دانشجو پس از مطالعه این فصل باید بتواند "ا انواع عملگرها در زبان پاسکال را بکار ببرد انواع داددها براى يك برنامه را تعريف كند. كار ريت ملك ادر بى عارك ا اتتشيص ‎BS‏ ‏#لايى برنامه:ساده با عمليات معمولى را ابتويسد: 104

صفحه 105:
‎si‏ لک ها ‏عملگرها نمادهایی هستند که برای انجام اعمال خاصی مورد استفاده ‏قرار می‌گیرند.عملگرها برای انجام اعمال خاصى روی عملوندها ‏( 02618205 ) بكار مىروند. با توجه به نوع عملگر ممکن است يك يا دو عملوند وجود داشته باشد. عملكرها در زبان ياسكال از تنوع زيادى برخوردارند. ‎105

صفحه 106:

صفحه 107:
div mod LEK منال ‎x+y‏ x-y,-x 7 5207 a div b amod b

صفحه 108:
نام بزرگتر بزرگتر مساوی کوچکتر کوچکتر مساوی مساوی بودن نامساوی مثال ‎x>y‏ ‎xy,‏ ‎x<y‏ ‏۲ 2<> ۶ ‎xy‏ ‎x<>y‏

صفحه 109:
OR Not مثال ‎and‏ <2 ‎y<x‏ ‎x>y or‏ > Not (x)

صفحه 110:
110

صفحه 111:
بالاترین تقدم ( Not 11

صفحه 112:
>" << آ" « ا * انواع داده‌ها ( 965 012182 ) ‎(Simple data type) ol. cesls <‏ Structural 122182 ( ( ‏دادههاى ساختيانفته‎ Types (Pointer Data Types) ‏دادههاى اشارمكر‎

صفحه 113:
Char type) «Sis ¢s° *صحیح ( 1۳1606۲ ) #عشاری (حقیقی) ‎String type) las, ¢5°‏ *نوع ‎Boolean type) da‏

صفحه 114:
نوع Byte Shortint Integer Word Longint محدوده از 0 تا 255 از 128- تا 127 از 32768- تا 32767 از ۵ تا 65535 از 2147483648- تا 2147483647 اندازه بر BININ IR] e

صفحه 115:
نوع Real Single Double Extend ed محدوده 2.2۸ 6 < 39 ... 1.7 6 8 6-45... 5 3.4 6 7 e-324 ... 5.0 1.7 e 308 e -4932 3.4 0006 4932 ‏م‎ 1 3 تعداد ارقام معني دار 13-1 16-15 30-19 10 115

صفحه 116:
انواع داده‌های ساخت‌یافته عبارتند از: ارایه‌ها رکوردها مجموعه‌ها فایلها 116

صفحه 117:
ممکن است در نوشتن برنامه نوع داده‌های بحث شده در بالا به دلایل مختلف از جمله مشخص نبودن تعداد ورودیهای مسئله و غیره مشخص تباشد لذا نیاز به متغیرهایی هست که بتوانند آدرس متغیرهای دیگر را در خود نكه دایند لیرنوع دادمها دادمهایلشارءگر نام دايند . 117

صفحه 118:
> << کچ ** متغیرها (۷۵01656) متغیره «بجان السافظة :اميت كهداراى ‎aig‏ السم موباك نوع متغير همان نوع داده بوده و اسم متغیر از قواعد اسم گذاری شناسه تبعیت می‌کند در پاسکال برای معرفی متغیرها بصورت زیر عمل می‌کنند: (کلمه ذخیره 14-5( ‎Var‏ 5 نوع متغير: اسم متغیر 118

صفحه 119:
>" << آآآآاحسأ"اآ۳ ‎(Constants) kat *‏ یک ثابت نام شناسه‌ای است که در آغاز یک برنامه یک مقدار در آن جاگزین می‌شود. درست مانند متغیرها. ثابت‌ها را می‌توان بعنوان خانه‌هایی از حافظه در نظر بكيريم که مقدار داده‌ها در آنها ذخیره می‌شود ولی مقدار ثابت مشخص می‌باشد, طوری که نمی‌توان مقدار یک ثابت را در برنامه خود بوسیله یک دستور تغییر داد te Sees pty po ‏عریف ینکن‎ cl مقدار ثابت < اسم متفیر ‎Const‏ 119

صفحه 120:
:ی * دستور جايگزيني ‎Gly‏ قرار دادن یک مقدار یا مقدار یک متفیر داخل یک متغیر دیگ از دستور .جایگزینی استفاده می‌کنند شکل کلی یک دستور جایگزینی در پاسکال بصورت زیر است: عبارت محاسباتی - : اسم شناسه عبارت قیاسی يا ‏عبارت منطقی ‎120

صفحه 121:
>" < << آ" " ۰۲۳+«+«۰ءا+اآ۰۳طحء+آ۳ * افرودن توصیحات به بر نامه ‎(Comment)‏ افزودن مطلب توضیحی در درون خود برنامه عملی پسندیده و مطلوب است بدین ترتیب که بعد از مدتی امکان فراموشی کار با برنامه از بین می‌رود و در .کل می‌توان گفت که نوشتن توضیحات در برنامه خوانایی آن را بالا می‌برد در پاسکال توضیحات بین دو آکولاد محصور می‌شوند. ‎This is comment }‏ { { This program written by A. Pascal } 121

صفحه 122:
4 مثال جابجا كردن مقدار دو متغير 17 122

صفحه 123:
Var a,b, temp : integer Begin a:=15;b:=17;temp:=0; temp: =a; a:=b; ‏خروجي برنامه‎ 0 a5 Write a=',a,' b=",b);

صفحه 124:
‎EE << << ">‏ * نكاتي چند در مورد برنامه نويسي ‏استفاده از اسامی با مفهوم برای متغیرها ‏* استفاده از دستور 0115 در صورتی که مقدار ثابت در برنامه وجود داشته باشد. ‏سوال جوابی بودن برنامه (ورودی‌ها و خروجی‌ها بايد دارای پیغام مناسب باشند) ‏نوشتن برنامه با فیمت مناسب (رعایت قرار گرفتن خطوط مختلف برنامه زیر هم و فاصله گذاشتن آنها از ‎124

صفحه 125:
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) ‏ات کت‎

صفحه 126:
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=? 126

صفحه 127:
EE EE EEE EE ‏موممئي‎ ‏تمرینات برنامه نويسي‎ * © برنامه‌ای بنریسید که ابماد مخللت که عبارتند از ۳: ۱۲ راادر نظر گرفته محیط و مساحت آن را محاسبه و با پیغام مناسب در خروجی چاپ کند. برنامه‌ای بنویسید که دو متغیر صحیح با مقادیر ۳, ۱۵ زا دوز گرفته محتویات دو عدد را بدون استفاده از متغیر کمکی جابجا نماید. * _ برنامه‌ای بنوبسید که سه عدد بنام های , 1121۳0 ‎Second, First‏ بترتیب با مقادیر ۱۷, ۱۳,۱۵ را در نظر گرفته بطور چرخشی مقادیر آنها را جابجا نموده در خروجی ‏با پیغاممناسب چاپ کند. مس يمع

صفحه 128:
فصل 6 ورودي و خروجي معرفیدستورلتخروجی ۰۲۷۷۲۲۵1۳ معرفی خروجی فرمت‌بندی شده بررسی دستورات ورودی ‎1٩630‏ و ‎ReadLn‏

صفحه 129:
:دانشجو يس از مطالعه ابن فصل بايد بتواند "اعبارات مورد نظر را در حروجی نمایش دهد. ##عبارات خروجی را با فرمت مناسب چاپ کند. #امتغییهای مورد نیاز برنامه را از ورودی دریافت نماید. #ابرنامه‌های ساده به زبان پاسکال بنویسد.

صفحه 130:
> << کچ * خروجي با دستور ۲۷۲6 اين دستور برای نوشتن اطلاعات در خروجی بکار می‌رود. اطلاعات خروجی می‌توانند ثابتهای عددی. مقادیر متغیرها. عبارات و غیره باشند. شکل دستور در :حالت کلی بصورت زیر است (....... و متغیر ۲ و متغیر ۱ )۲۷۲16 يا ‎sind‏ ی عیارت: ۷و عبارت۱ 0 .. و ابت ۲ وابت ‎CV‏

صفحه 131:
Ch: char ; R: Real ; egin ‎Bi= 15 ¢‏ ¢ 10 شش ‎Gis ="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‏ ‎once‏ ‎oor ‎

صفحه 132:
* خروجي با دستور ۲۷۲/617 اين دستور همانند دستور ۷۷۲16 عمل مىكند با اين تفاوت كه بعد از اجرا. كنترل را به ابتداى سطر بعد منتقل مى كند در نتيجه موجب چاپ داده‌های بعدى در ابتداى سطر بعد مى شود. 132

صفحه 133:
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 Sumisef A and B= 25

صفحه 134:
۹ هه خروجي فرمت‌بندي شده اگر بخواهیم اطلاعات با فاصله های مشخص یا در مکان مشخصی در صفحه نمایش قرار گيرند. باید فرمت جاپ .را در دستورات بیان شده مشخص کنیم 134

صفحه 135:
:فرمت اعداد صحیح بصورت زير مشخص می‌شود ( طول میدان: داده صحیح ) ۷۷۲11۵18 یا ‎Write‏ 135

صفحه 136:
در تعریف طول میدان براي متغیرها با داده‌هايي از نوع صحیح به نکات زیر توجه کنید: اگر طول میدان از طول ارقام عدد صحیح بیشتر تعریف شود عدد در منتهی‌الیه سمت راست میدان نوشته می‌شود. * از عون مق ول تا سیخ كتدترا تعريف شوق طول مدا اندازه تعداد ارقام در نظر كرفته مى شود و طول ميدان تعريف شده بی‌اثر خه اهد ب د.

صفحه 137:
X:= 3200 ; As. = 12) 5 B= 217) : Write (X:3,A:5 , B:5) ; See ‏دري‎ 3200 12 217

صفحه 138:
برای نمایش اعداد اعشاری بصورت دلخواه می توان با تعریف طول .میدان و تعداد ارقام اعشاری, عدد مزبور را نمایش داد در حالتک لی‌طولمیللنرا می‌تسولنبه صوونذیر تعریفکرد : ( تعلداد ایقام بسعد از صمیز: طول‌میدلن ‎Write (cick pi‏ ۷۲۵۴ با و3 1

صفحه 139:
اگر طول میدان بزرگتر از تعداد ارقام عدد ذکر شود. عدد در منتهی الیه سمت راست مان اپ مى كوه اگر فقط طول میدان ذکر شود. عدد به صورت نماد علمی در طول میدان مشخص شده بای ود از آنجائی که برای نمایش اعداد در نماد علمی حداقل ۸ محل مورد نیاز است. لذا هنگامی که تنها طول میدان ذکر شده باشد. اگر از ۸ رقم کمتر باشد. حداقل ۸رقم در نظر گرفته می‌شود 139

صفحه 140:
۷ هنگامی که طول میدان همراه با تعداد ارقام بعد از ممیز ذکر شود. اگر طول میدان کوچکتر از مقدار عدد باشد. پاسکال تنها طول میدان را به اندازه‌ای كه مورد نیاز است تصحیح کرده و آنرا برابر اندازه واقعی که عدد در آن قرار می‌گیرد. اصلاح می‌کند. اگر تعداد ارقام بعد از ممیز زیاد باشد و تعداد ارقام بعد از ممیز ذکر شده د ر طول میدان کمتر از تعداد ارقام اعشاری عدد باشد. تعداد ارقام اعشار مطابق درخواست برنامه‌نویس نشان داده خواهد شد و رقم آخر اعشار آن نسبت به عدد بعدی گرد می‌شود. 140

صفحه 141:
برای نمایش رشته‌ها و کاراکترهای با طول ميدان بصورت زیر عمل می‌کنيم. ( طول‌میدلث متغیر یسا عباتوشتهلییا کاراکتری) ‎Write‏ در توربو پاسکال. کلیه موارد گفته شده در مورد اعداد صحیح برای برشته‌ها یز صادق است 141

صفحه 142:
* ورودي با 13620 , 16۵012 از این دستور برای خواندن داده ها و اختصاص آنها به متغیرها :استفاده می‌شود. در خواندن داده ها به دو موضوع بايد دقت شود منبع دادمها یبعنی‌دستگام ورودی‌که از آن‌دادمها خولنده -1 مین‌سود متغيرىكه دادمهاىخولنده شده در آنقرار میگیرد -2 . 142

صفحه 143:
۶( ..... و متغیر ۲ و متغیر 1۳60 ( اين دستور عمل خواندن داده‌ها و ذخیره آنها در متغیرها را انجام می‌دهد و پس از اتمام عمل خواندن کنترل را برای خواندن و نوشتن‌های بعدی در همان‌خط نگه میع‌ارد ‏ . 143

صفحه 144:
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 } ها

صفحه 145:
خروجی برنامه بالا به صورت زیر می‌باشد: Please Enter two numbers 15 17 First = 17 second = 15 145

صفحه 146:
>" آاس۳ تمرینات خروجرقطعه بر نلمهوير را تسعييزكسنيد : 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) ;

صفحه 147:
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 ))>

صفحه 148:
* تمرینات برنامه نويسي برنامه‌ای بنویسید که دو عدد را از ورودی دریافت کرده و محتویات آنها را بدون استفاده از متفیر کمکی جابجا نماید برنامه‌ای بنویسید که سه عدد صحیح , ‎Third‏ او ر 560000 را از 0 با پیغام مناسب دریافت کرده سپس محتویات این سه متغیر را بصورت چرخشی جابجا نموده با پیغام مناسب در خروجی چاپ کند.

صفحه 149:
برنامه‌ای برای یک حسابدار اداره جمع آوری مالیات بنویسید که صورت .حسابهای مالیات را محاسبه نماید "ورودی شماره شناسایی مالیات دهنده بهای ارزیابی شده نرخ مالیات اخروچین صورت حساب بافرمت مناسب شامل تمام داده‌های ورودی و میزان بدهی

صفحه 150:
Thee ‏ساختارهاي شرطي و کنترلي‎ هدفهاي كلي معرفىدستور شرطي©119 20ة ‎If‏ ‏معرفى دستور ‎CASE‏ پررسی دستورات تکرار ‎for. while . repeat‏ استورات شرطی متدا < بررسی چند تابع و روال استاندارد زبان پاسکال 150

صفحه 151:
:دانشجو يس از مطالعه ابن فصل بايد بتواند برنامههايى را بنويسد كه در آنها نياز به استفاده از شرط وجود دارد. 8 تفاوتهای بین دستورات مختلف با ك1 و 14 -©19© را تشخيص دهد. كا برنامههايى كه نياز به تكرار تعدادى عمليات داشته باشئد را بنویسد. در صورت نیاز بتواند در برنامههاء از روالها و توابع استاندارد زبان استفاده نمايد ‎ac ie‏ Iranian Engineering Cem Sat

صفحه 152:
EEE EEE 2 ‏دستورات شرطى‎ “of ‏بطور کلی توسط اینگونه دستورات می‌توان بر حسب شرایط مختلف.‎ تصمیمات متفاوتی را اتخاذ نمود و برحسب برقرار بودن یا نبودن شرایط .دستورات متفاوتی را اجرا نمود ت شرطي در حالت كلي به دو نوع تقسيم مي شوند: دستور ]1 دستور 256

صفحه 153:
هرگاه در طول برنامه نیاز به استفاده از شرط یا شروط داشته باشیم. از دستور 1 .ستفاده می کنیم دستور 11 بطور کلی به سه شکل بر حسب نیاز ممکن است ظاهر شود: cooly if Else sto. if ‏های متداخل‎ 153

صفحه 154:
then در اين نوع دستور شرطی اگر شرط خاصی تحقق يافته باشد. عمل يا اعمال خاصی انجام می‌شود. در غیر اینصورت برنامه روال عادی خود را طی می کند. در صورتی که شرط برقرار باشد ارزش منطقی 11116 به خود می‌گیرد و اگر شرط برقرار نباشد. ارزش منطقی 32156 به خود خواهد گرفت. 154

صفحه 155:
:دیاگرام دستور بالا بصورت زیر می‌باشد ۵00۱5 155

صفحه 156:
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 156

صفحه 157:
* در این دستور ابتدا شرط بررسي مي‌شود, در صورتي که شرط برقرار ‎mush‏ عمل يا اعمال خاصي را انجام مي‌دهد و در صورتي که شرط برقرار نباشد. عمل یا اعمال بخصوص ديگري را اتجام خواهد داد.

صفحه 158:
۱ ‏دستور‎ ‎else رز دستور ۲ دیاگرام دستور بصورت: د 158

صفحه 159:
gin Writeln (‘Please enter Number:') ; ReadIn ( Number ) ; if (Number mod 2) =0 Then Write (' even ' ) else Write ('odd') ; id. { end of program } ‏خروجی برنامه بالا بصورت زیر است:‎ Please enter Number: 17 odd 159

صفحه 160:
End Else Begin 1 ‏ز دستور‎ 2 ‏ز دستور‎ 160

صفحه 161:
هركاه در نوشتن برنامه نياز به انتخاب يك شرط از بين چند شرط داشته باشیم. معمولاً از 1 متداخل استفاده مى كنند. در جنين مواقعى استفاده از 14 متداخل كارائى برنامه را بالا مىبرد زيرا بجاى كنترل تمام شروط فقط تا زمانيكه شرط برقرار نشده. ]1 ها بررسی می‌شوند. بعد از برقرار شدن يكى از شروط. كنترل برنامه به بعد از ۶ منتقل می‌شود و اين در بهبود كارائى يك برنامه مى تواند بسيار موثر باشد. 161

صفحه 162:
if )2 ‏عبلیتشرطیا‎ then دستور ۱ 60 عبيتشرطىئ؟ 14 واه دستور۲ 08۲ عبلیتشرطی ‎else If‏ دستور ۳ ‎else‏ 1] ‏عبیتشرطیا‎ then if ‏عبیتشرطی]‎ then دستور | else زدستور ۲ To:

صفحه 163:
Grade 17-20 14-17 12-14 10 - 2 0 - 0 163

صفحه 164:
Readin ( Grade ) if Grade > = 17.0 Then 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 ) 5 164 ReadIin :

صفحه 165:
زبان پاسکال دستور 856 را بصورت زیر در نظر می‌گیرد: ‎Case oc Of‏ و دستور١‏ 0 : مقدار ۱ ,م دستور ۲ . : مقدار ۲ م دستور ۳ : مقدار ۳ Otherwise 165 ‏دستور‎ > End ; { End of case }

صفحه 166:
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 )/6: 2) 166 ade oon ora nar a acne ENN

صفحه 167:
دیاگرام دستور ۵56 بصورت زير مي‌باشد:

صفحه 168:
‎EE << << ">‏ * ساختارهاي كنترلي ‏«بسيارى از مواقع لازم است عمل یا اعمال به تعداد دفعات معین یا نامعین انجام شوند ‏در چنین مواقعی زبانهای برنامه‌نویسی دستوراتی دارند که می‌توان اين اعمال تکراری ‏را انجام داد. در حالت کلی ساختارهای کنترلی شامل یک یا چند شرط و همچنین ‏متغیر یا اصطلاحاً شمارنده‌ای برای پایان دادن به شرط می‌باشند ‎168

صفحه 169:
0 مقدار نهایی 10 مقدار اولیه - اندیس ‎For‏ ۶ دستور بايد توجه داشته باشید که در حلقه تعداد تکرار کاملاً مشخص است و حلقه دقیفاً به .تعداد تکرار مشخص اجرا می‌شود 169

صفحه 170:
دستور برای انجام عمل یا اعمالی مشخص به تعداد تکرار معین بکار برده می‌شود. نه ‎bl: for‏ یک اندیس ( 10065 ) مقدار اولیه ( ۷16 1011 ) مقدار نهایی ( ۷۵16 1۳881 ) و مقدار افزاینده می‌باشد. اين حلقه با قرار دادن مقدار اولیه در س حلقه شروع شده و بعد از هر تکرار یک واحد به اندیس حلقه اضافه می‌کند تا نهایت به مقدار نهایی برسد. شکل کلی حلقه بصورت زیر می‌باشد: 170

صفحه 171:
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 } 17

صفحه 172:
0 مقدار نهاي 001171180 مقدار اولیه - : لندیس ۴01 ۶ دستون بر این شکل از دستور 303 ابتدا مقدار اوليه در انديس حلقه قرار داده می شود و بعد از آن در هر تکرار حلقه یک واحد از اندیس حلقه کم می شود تا به مقدار نهایی برسد . 172

صفحه 173:
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. eee heen

صفحه 174:
0 مقار نهایی 0 مقدار ایلیه - : لندیسا ‎for‏ ‏0 مقدار نهایی 0 مقدار اولیه - : اندیس 2 ۲0۲ Joe ‏ع‎

صفحه 175:
in For j:=1 to 3 do Write (' pascal': 8) ; Writeln ; 1 خروجی Pascal Pascal Pascal J) a>» (i = 1) Pascal Pascal 2856081 ‏مرحله دهم‎ ) 1 > 27 ۳ ‏دم‎ Paceal Pacecal . si. .f 7)

صفحه 176:
مقدار نهايي مقدار اولیه سرهم 176

صفحه 177:
در حالت كلى هدف از بكار بردن این دستور انجام عملیاتی مشخص به تعداد دفعات نامعین است مينحلقه به صووتؤير بكار بردهمى شود: 0 عبارت منطقى ‎While‏ Desay 177

صفحه 178:
Numbers ') ; ReadIn (m,n) ; While (m Mod n) > < 0 0 MOD n; End ; { end of

صفحه 179:
179

صفحه 180:
اين دستور نيز از نوع دستورات تکراری می‌باشد و به کمک آن می‌توان یک یا چند .دستور را به تعداد نامعین بار اجرا کرد لیردستور مشلبه دستور ۲16 :است. با تفاوتهایی که در زیر عنوان می‌کنیم در دستور (1 1361068 بسرعکس‌دستور ‎While‏ ‏.شرط حلقه در انتهای حلقه بررسی می‌شود لذا حلقه حداقل یکبار اجرا می‌شود 1۳

صفحه 181:
۲) دستور 38606616 تا زمانی اجرا می‌شود که شرط خاصی تحقق پیدا نکرده است در حالیکه دستور ۷۷0116 تا زمانی که شرط برقرار ‎al‏ اجرامی‌شود. ‏۳ دستور :606۵ نیاز به بلوک ندارد و همراه 10 ظاهر می‌شود. ‎181

صفحه 182:
; شرط یا شروط ‎until‏ 182

صفحه 183:
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 ofsprogram }

صفحه 184:

صفحه 185:
** معرفي چند پروسیجر ( ۳۵6606 پروسیجرها یا زیر روال‌ها قسمت‌های مستقلی از برنامه اصلی می‌باشند که به تنهایی اعمال خاصی را انجام داده و وظایف مستقل و بخصوصی بر عهده آنها گذاشته می‌شود. یک مزیت بزرگ پروسیجرها اینست که یکبار در برنامه گنجانده شده ولی در محلهای مختلف ازآن استفاده به عمل می‌آید و از .اصول برنامه‌نویسی ساخت یافته‌است

صفحه 186:
هدف: انتقال کنترل برنامه به خارج از بلوک فعلی ‎Procedure Exit ;‏ استفاده از این پروسیجر در هر بلوک از برنامه باعث می‌شود که کنترل برنامه بلافاصله به خارج از آن بلوک انتقال ‎Lb‏ 186

صفحه 187:
هدف: خاتمه دادن به اجرای یک حلقه Procedure Break ; استفاده از پروسیجر فوق باعث می‌شود. که اجرای. یک خلقه: خائمه یافته و کنترل برنامه به دستورالعمل بعدی انتقال پابد. 187

صفحه 188:
هدف: باز گشت به ابتدای حلقه Procedure continue ; وقتی انم پزوسبحر, دزن ‎taal USS apd ge GW UA‏ اول خلقلة:اتتقاك می‌یابد و دستورات بعد از پروسیجر اجرا نمی‌شوند.

صفحه 189:
غال : ‎iso iS aS‏ 5 را 0 ۱ کب از ورود ۳ 2 ی دريافت 1 عد فت کرده. ۱ 0 بح در مبذ ‎jae‏ 00 ‎sé‏ ‏یک مینای ۲ ببرد.

صفحه 190:
Power: = 1 ; N:=0; Write (' enter A Number: ') ; 1۳801 ( Number ) ; Repeat R: = Number MOD 2 ; Number: = Number DIV N: = N + Power* R ; Power: = Power * 10 ; Until Number < 2 ; N: = N + Number * Power ; Writeln ('Number In Base 2= ' ‏ر‎ ۱۲ ۳ ی ی وت ی ات اس ای ق قص م

صفحه 191:
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 ; Eng, ; { end of for } |, { end of program }

صفحه 192:
۳ 1 116 ‎“ah: 3‏ ۰ تمرینات ‎Begin‏ ‏۱- خروجی قطعه برنامه‌های زیر را تعیین کنید: ‎Sum: = Sum +i‏ ۱ end ; b) is = 0.3 Sum: =°0'; While i<=20 do Begin ‏عدت‎ ;

صفحه 193:
be Di Until (b div 3)=5 ; d) Count Stop : While Count < Stop Do Begin For K:=1 to Count Do Write (K:3) ; 193 Writeln ;

صفحه 194:
‎EE << << ">‏ ** تمرينات برنامه نویسی ‏۱- برنامه‌ای بنویسید که با استفاده از حلقه ها خروجی زير را تولید کند. ‎194

صفحه 195:
بسرنامهلوبنویسید که تسعدادی‌عدد از ورودی‌دویافتکرده مجموع -2 ايقام هر علد را در خروجىجا نايد ( پابانداده ها بسه ۱- ختم‌می شود) بسرنامهلوب‌نویسيد که دو علد صحیح را از ورودی‌دویافکرده -3 تن .اعداد فيبوناجى بين اين دو عدد را جاب كند برنامهلىيب:ويسيد كه يكلسكناس١٠٠٠‏ توملئنىرا به حلتهاى4 مخت نيعت يه لسکناس۲۰۰ تسوملنی ۱۰۰ تسوملنی 0۰ تسوملنی ۲۰ تسوملنی ۱۰ توملنیو سکه های۵ توملنیو ۲ توملنیو یکتوملنی‌خرد ‎Abo.‏ 195

صفحه 196:
8 ‏فصل‎ ‎Arrayb 47 هدفهاي كلي شناخت لزوم استفاده از ساختار داده ای به نام آرایه شناخت انواع آرایه‌ها و موارد استفاده از آنها ا ا ل شناخت الگوریتمهای مرتب‌سازی و جستجو

صفحه 197:
:دانشجو پس از مطالعه این فصل بايد بتواند * آرایه‌ها یک بعدی را در برنامه‌های خود بکار ببرد. 8 ماتریسها را پیاده‌سازی نماید. عمل جستجو در آرایه انجام دهد. #ایک لیست را توسط روشهای مرتب سازی حبابی انتخابی و غیره مرتب کند. 197

صفحه 198:
* آرایه و انواع آن خانه‌های پشت سرهم از حافظه که همنوع بوده و توسط یک اسم معرفی می‌شوند. آرایه نام دارد. نحوه دسترسی به هر یک از اعضاء ارایه از تطر يق "انيسن ريه امكالوفة بر انتتی براى تعريف آرايه ابتدا طول آرايه كه درحقيقت تعداد خانههاى آنرا مشخص می‌کند. معين مى كردد. سيس نوع خانههايى كه دادهها در آن قرار خواهند كرفت را تعيين مى كنند 198

صفحه 199:
آرایه‌های یک بعدی بصورت زیر تعریف می‌شوند: Name ۳ array [1.. Length] of | ‏ولاه هه یرنه‎ | ۱ ‏كلمه ذخيره شده اسم آرايه‎

صفحه 200:
Var No: Array [1..50] of integer ; id: Array [1.. 20] of Byte ; Name , Fam: Array [ 1.. 30] of char ; 200

صفحه 201:
۱- با استفاده از دستورات ورودی ۲- مقداردهی در طول برنامه طریقه دسترسی به عناصر آرایه بصورت زير می‌باشد: Name [ index ] ای با اندیس آرایه ‏ اسلم ار 201

صفحه 202:
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[il] ; Index: =i ; End ; Writeln ('The Maximum is =', Max) ; Writeln ('And Index =', Index) ; endl 0 program }

صفحه 203:
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]; — a[i]:=temp ; End ;

صفحه 204:
برای نمایش ماتریس درحافظه معمولاً از آرایه‌هایی بنام آرایه‌های دویعدی استفاده می‌کنند رای فرزکا بیشتر ابیز آرایة‌ها آنها را بضورت ماتربس دزانظر می‌گیرند آرایه‌های دو بعدی بصورت زیر معرفی می‌شوند: ‎Name 1 array [1..row ,1.. column ] of‏ ‎type‏ 3 لا ا . ] | | | نوع عناصر آرایه کلمه ذخیره شده تعداد ستونها_ تعداد سطرها كلمه ذخيره شده اسم ارايه 204

صفحه 205:
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 ; Bonds; 1.

صفحه 206:
می‌توان آرایه‌هایی با ابعاد بیشتر از دو نیز تعریف کرد. بطور کلی برای : معرفى يك آرايه جند بعد توان بصورت زد د ی .1 [ مج 3 1 ‎Name: psu (iene‏ ‎length2 ] ....‏ Of array [ 1.. lengthN ] of Type ‏ويا‎ Name: array [ 1.. length1, 1.. length2,.... 1.. lengthN ] of Type 206

صفحه 207:
‎EEE EEE << << ">‏ ‎Ry‏ نکاتی جند در مورد آرایه‌ها ‏” تعریف آرایه با محدوده منفی ‏برای مثال: ‎A:array[-10..10] of Real 1‏ ; 7 تعريف آرايه از نوع منطقى ) ‎(Boolean‏ ‏براى مثال: ‎A:array[1..20] of Boolean‏ ;

صفحه 208:
ای مثال ‎A: array [ Boolean ] of ee‏ ‎;integer‏ ۲آرایه‌ای با محدوده کاراکتری: بزاع شال ۵1 05 1[ ۲2 .۲۸۰۰ ] 27727 :۱ "آرایه‌ای که برای اعضای آن محدودیت قائل شویم براى مثال: ‎A: array[1.. 20] of 1.. 0‏ 208

صفحه 209:
© جستجو و مرب‌سازي ( 2310 5621012 ‎(Sort‏ یکی از مسائلی که در بحث طراحی الگوریتم بسیار مهم است. بحث مرتب‌سازی و جستجو می باشد. منظور از جستجو اینست که یک مقداری را از یک لیست جستجو کنیم و منظور از مرتب سازی اینست که یک لیست مرتب از داده ها را ایجاد کنیم. حال تعدادی الگوریتم که برای مرتب‌سازی و جستجو بکار می‌روند را بسررسی‌مر‌کنيم بخصوص زمانيكه ساختار داده ما يكآرليه باشد . 209

صفحه 210:
در كل دو نوع عمل جستجو را در اين كتاب بررسی می‌کنیم : Linear search (+ oye >” Binary search ‏جستجو دودویی‎ 210

صفحه 211:
در جستجوی خطی عبارت مورد جستجو را نخست با اولین عضو آرایه مقایسه می‌کنيم. اگر برابر بود عمل جستجو با موفقیت همراه بوده و عمل جستجو خاتمه می‌یابد در غیر اینصورت روند را ادامه داده و عبارت مورد جستجو را بترتیب با عضو دوم سوم ... مقایسه می‌کنیم تا اینکه حالت تساوی حاصل شود .و اگر این حالت حاصل نشد. عباریت مورد جستجو در لیست قرار ندارد 211

صفحه 212:
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 Waiteln ('The Element is not found') ;

صفحه 213:
درجستجوی دودوئی لیست اولیه بایدمرتب باشد. برای جستجو در چنین آرایه‌ای نخست انديس وسط آرايه را يبدا مى كنيم و عنصر واقع در اين انديس را با :عبارت مورد جستجو مقايسه مى كنيم و حالات زير ممكن است حاصل شود (0۲,] اندیس ابتدای آرایه و 13006 اندیس آخرین عناصرآرایه و 6 اندیس عنصر وسط می‌باشد.)

صفحه 214:
. ] ۸10016 [ < X Then Low : = middle ‏بر ایتصورت‎ و مقدار جدید 10010016 را که عبارتست از: Middle : = ( low + middle ) / 2 214

صفحه 215:
1016 [ > Then upper : = middle ‏در اينصورت‎ و مقدار جدید 1010016 را که عبارتست از: Middle : = ( low + middle ) / 2 215

صفحه 216:
idle ] =X Then Write ('The Eiement is ‏قر ابنضووة‎ found ' ) OW > ۱۷۵۳6۲ ‏فيا ب لتفاقبیفند عملجستجو را تا زملنیکه‎ ELL AS ope | می باشد ادامه می‌دهیم و در هر مرحله که حالت سوم رخ دهد عمل جستجو خاتمه می‌يابد. 216

صفحه 217:
برای مرتب‌سازی داده‌ها روشهای متفاوتی وجود دارد . تفاوت روشهای مرتب‌سازی در زمان اجرای آنها می باشد. در حالت کلی با توجه به تعداد ورودیها (داده ها) و نوع مسئله مرتب‌سازی می توان از انواع روش‌های .مرتب‌سازی استفاده نمود حال بعضی از روش های مرتب سازی عمومی را بررسی می‌کنیم. *؟ مرتب‌سازی حبابی ) ‎(Bubble sort‏ *مرتب‌سازی انتخابی ( 50۲۲ 5616611012 )

صفحه 218:
ساده‌ترین روش مرتب‌سازی روش مرتب‌سازی حبابی می‌باشد. یکی از خصوصیات بارز این نوع مرتب‌سازی این است که فهم آن ساده بوده و برنامه‌نویسی آن به سهولت انجام می كيرد مرتب‌سازی حبابی نخست عنصر اول و دوم را با هم مقایسه می‌کند و در صورت ‎GUS‏ آنها را جابجا می‌کند. سپس عنصر دوم و سوم را مقایسه می‌کند. این عمل را تا زمانیکه به انتهای آرایه نرسیده تکرار می‌کند. در پایان مرحله اول بزرگترین عنصر در آخرین خانه آرایه قرار عمل بالا را انجام می‌دهد. اين روند را 1 - ‎N‏ می‌گیرد. در مرحله دوم از خانه اول تا خانه تا زمانیکه تمام عناصر آرایه مرتب نشده‌اند ادامه می‌دهد و در نهایت یک لیست مرتب شده بصورت صعودی در خروجی تولید می‌شود

صفحه 219:
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

صفحه 220:
در این روش مرتب‌سازی نخست کوچکترین عنصر را در کل آرایه پیدا کرده در خانه اول آرایه قرار می‌دهيم سپس عنصر کوچکتر بعدی را یافته در خانه دوم قرار می‌دهیم اين روند را تا زمانیکه کل آرایه مرتب نشده ادامه می‌د. مرتب می‌دهیم

صفحه 221:
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 } 221

صفحه 222:
‎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 ; k:=2; ‎=m,

صفحه 223:
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 }

صفحه 224:
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 } 56 End Writeln ( sum: 8:2 ) ; Sum:=0 ;

صفحه 225:
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]);

صفحه 226:
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 ; 226 16: < 16 1 ۶ End : { end of while ۲

صفحه 227:
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 ; oa End ; { end of merge } id. { End of program }

صفحه 228:
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') ; 58 for 1: 21 to N do Write (state[i]) ;

صفحه 229:
- کدامیک از دستورات زیر در مورد اعلان زیر صحیح است: ‎a: array['A'..'Z'] of‏ ‎char‏ ‏الف- 72 ۲ 2 :1 ۲۸] ۵ ب- ۸ 2 :1 ۲] ۰2 ج- 2-1 :1 ' ]1ه د- 12 2 :1 ۲1 ] 2 ح- 12 2 :1 1۳1۰ 2 229

صفحه 230:
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

صفحه 231:
تمرینات برنامه‌نویسی * برنامه‌ای بنویسید که که یک آرایه حداکثر ۵۰ عنصری را از ورودی دریافت کرده و سپس عناصری از ارایه که او هستند را با صفر جایگزین کرده ارایه حاصل را در خروجی چاپ کند. برنامه‌ای بنویسید که عددی از ورودی دریافت کرده سپس آن را به عامل های اول تجزیه نماید و حاصل را بصورت زیر در خروجی ذجاب: لمانب برای مثال: ۳-۲۱ ۱ ۷ ۱) 231

صفحه 232:
برنامهاى ب که یک عدد از ورودی دریافت کرده سپس در صورت وجود صفرهای آن را حذف نموده. نتيجه را در خروجى جاب نمايد. * برنامه ای بنویسد که یک ماتریس ۵ * ۵ رااز ورودى دريافت كرده سبس مجموع هر سطر را انتهای همان سطر و مجموع هر ستون را در انتهای همان ستون چاپ نماید. 232

صفحه 233:
ماتریس هم پر حسب ستون و هم بر حسب سطر مرتب نموده به همراه ماتریس اول در يك سر عاك ابية * برنامهاى بنويسيد كه يك آرايه ‎٠٠١‏ عنصرى ازنوع صحيح كه ‎16١‏ عنصرمرتب درآن قرار مىكيرد را از ورودی دریافت کرده سپس آرایه دومی با ۵۰ عنصر را از ورودی بخواند

صفحه 234:
فصل 9 0 هاي کتابخانه ای توابع و روال هدفهاي كلي شناخت ساختار تابع و روال شناخت توابع و روالهای استاندارد برای نوعهای صحیح شناخت توابع و روالهای استاندارد برای نوعهای اعشاری و کارکتری اشناخت توابع و روالهای استاندارد ریاضی 234

صفحه 235:
:دانشجو يس از مطالعه اين فصل بايد بتواند ا توابع و روالهای استاندارد را در صورت نياز در برنامه استفاده كند. ا ساختار توابع و خروجيهاى آنها را تشخيص داده و در برنامه خود از آنها استفاده كند. "1 ساختار روالها و خروجيهاى آنها را تشخيص داده و نتايج حاصل از آنها را مورد استفاده قرار دهد. #توابع ریاضی را براى محاسبه عبارت رياضى در برنامه بكار يبره. 235

صفحه 236:
EEE EEE << << "> ‏ساختار تابع‎ 4 در كل هدف تابع اينست كه متغير يا متغيرهايى را بعنوان يارامتر از برنامه اصلى دريافت كرد. عمل خاصى را روى بارامترها انجام داده و نتيجه را به برنامه اصلی برگرداند :شکل کلی فراخوانی توابع در برنامه اصلی بصورت زیر می‌باشد ساختار تابع: 1 ‎Function Name ( parameters )‏ ‎Type‏ ‏| | | | نوع تابع پارامترها اسم تابع کلمه ذخیره شده 236

صفحه 237:
موممئي ‎EE EE EEE EE‏ توابعي براي اعداد صحیح و اعشاري 4 Abs et دف: باز گرداندن قدر مطلق ( 8۳5010116 ) پارامتري که به آن ارسال مي‌شود: Function Abs (x: Integer ): Integer ; ‎Function Abs ( x: Real ): Real ;‏ اين تابع يك عبارت از نوع حقیقی یا صحیح را بعنوان آراگون دریافت کرده سپس .قدر مطلق آن را محاسبه و حاصل را برگرداند ‎237

صفحه 238:
Real ; Integer ; : = Abs (- 191.15 ) ; خروجی‌حاصل: ‎F= 191.15 I= 171‏

صفحه 239:
هدف: باز گرداندن سینوس یک عدد از نوع اعشاری Function Sin ( X: Real ): Real ‏تابع:‎ 6 یک عبارت یا عدد از نوع اعشاری بوده و حاصل مقدار سینوس ا می‌باشد.

صفحه 240:
Var X: Real ; Begin 2 : < 510 ) 10( : Write ('sin(10)=', x:8:2); End. 240

صفحه 241:
هدف: باز گرداندن کسینوس یک عدد از نوع اعشاری. تابع: ‎Function cos ( X: Real ): Real‏ ی کعبارتبا عدد از نوع لعشاریبوده و حاصلمقدار کسینوس ‎ilies‏

صفحه 242:
۴ X: Real ; gin X:=cos(10) ; Write ('cos(10)=', x:8:2) ; d.

صفحه 243:
هدف: بازگرداندن آرک تانژانت یک عدد از نوع اعشاری ; Function ArcTan ( X: Real ): Real ‏تابع:‎ 6 یک عبارت يا عدد از نوع اعشاری بوده حاصل مقدار آرک تانژانت ‎X‏ می‌باشد.

صفحه 244:
Var X: Real ; Begin X:=ArcTan (10) ; Write (' ArcTan (10) =', x:8:2); End. توجه: در صورتى كه در توابع مثلثاتى زاويه از نوع درجه ارائه شود :مى توان با فرمول زير معادل راديان آن را محاسبه كرد Real = Dey * 3.14159 / 180

صفحه 245:
هدف: عدد نپر ( 2.71828 < 6 ...) رابه توان یک عدد می‌رساند. شکل تابع: :) ‎Function Exp ( X: Real‏ ‎Real‏ ; ‎X‏ عبایستیا متغیریاز نوع لعشاریوده و حاصلتلبع نیز یکعدد لعشاری‌سیاشد اين تابع مقدار عبه توان ۴ را محاسبه می‌کند.

صفحه 246:
X: Real ; i: integer ; Begin For i:=1 to 10 do Begin X:=exp (i) ; Writeln ) ۶: 8:2 ( ۶ End ; End. 246

صفحه 247:
هدف: قسمت اعشاری یک عدد اعشاری را برمی‌گرداند. Function frac ( X: Real ): Real ‏ی تابع:‎ عددعاز نوع لعشاییو حاصلتسلبع یکعدد لعنایی‌که قسمتلعشایی عدد 26 است می باشد و بعبارت دیگر این تابع قسمت اعشاری عدد ورودی را به عنوان خروجی باز می‌گرداند. 247

صفحه 248:
r Y,X: Real ; gin X: = frac (24.769) ; Y: = frac (- 12.75) ; Write ('x=', 8: 3,"y= "ee 23 0 ۰ X= 0.769 ‏حلا‎ - 5 248

صفحه 249:
هدف: قسمت صحیح یک عدد اعشاری را برمی گرداند. ‘unction Int ( X: Real ): Real ‏تابع:‎ ا يكعبارتيا متغير از نوعلمعشايىو خروجىتابع فيزيكعلد اعشارى است اين تابع مقدار صحيح يك عدد اعشارى در خروجى نشان می‌دهد. 249

صفحه 250:
X: = Int (2.87) ; {2.0} Y:=Int(-8.76) ; {-

صفحه 251:
هدف: محاسبه لگاریتم یک عدد اعشاري در مبناي ». ; Function Ln ( X: Real ): Real igh ‏شکل‎ 6 ی کعبایتی| متغیر ازنوع لعشاریوده وحاصلتلیع فسیز یک ادلءاییم ی شا

صفحه 252:
r X: Real ; »gin X:=Ln (2.87) ; {x = 3.73767 } Write (°x=',x:10:5) ; id. 252

صفحه 253:
هدف: فرد بودن عدد صحیح را بررسي مي کند. unction odd ( X: logint ): Booleam ‏کل تابع:‎ یکعبایساز نوع 10120110 لستو تسلبع .فرد بسودنعباینتوا بسروسیمیک: اگر مقدار خروجی تابع 1۳016 باشد 16 فرد است و اگر مقدار خروجی تابع ‎alse‏ ‏باشد ک ردنست. 253

صفحه 254:

صفحه 255:
هدف: غالباً براى يبدا كردن كد اسكى يك متغير كاراكترى بكار می‌رود. شکل تابع: :) ‎Function Ord (x: char‏ ارت ۲ از نوع كاركتري را بعنوان بارامتر دریافت وكد اسكي أن را برمي كرداند. اكر : از نوع اسكالر باشد تابع بعنوان خروجي ترتیب قرار گرفتن : رادر مجموعه اي که ابتدا به عنوان اسکالر اعلان شده, باز مي‌گرداند.

صفحه 256:
Var ch: char ; Begin For ch:='A' to '‘'Z' do Write (ord (ch):5) ; کد اسکی " ۸" تا" 2 ' را درخروجی چاپ می‌کند كد اسکی ۲ ۸ ۰ عدد 1۵ می‌باشد. End . 256

صفحه 257:
هدف: عدد پی را بر می‌گرداند. Function pi: Real ‏کل تابع:‎ اين تابع برای بازگرداندن عددی پی ( ۳۱۶۱۵۹۲ ۰۰۰) مورد استفاده قرار می‌گیرد. 257

صفحه 258:
هدف: مقدار قبل مقدار پارامتر را بر مي گرداند. pn pred (x): < same type of parameter > ; ۲ پارامتر تابع می تواند از هر نوع باشد و با توجه به نوع پارامتر تابع نیاز از هم نوع می‌باشد و خروجی تابع مقدار قبل از * می‌باشد. 258

صفحه 259:
{ flag = {i=- Ch: = pred ('d') ; c'} i: = pred (15) ; 14 } flag: = pred ( True ) ; false } i: = pred (- 30) ; 31 }

صفحه 260:
۲ تابع 1۳۵۱000 هدف: برای تولید عدد تصادفی :شکل تابع ‎Function Random: Real ;‏ )1 ‎2)Function Random (x: word ):‏ ‎word ;‏ اگر تابع 13210010180 به شکل یک یعنی بدون آرگومان مورد استفاده قرار گیرد یک عدد تساوی از نوع اعشاری بین صفر و یک تولید می کند و اكر به شكل دو بكار رود باعث تولید یک عدد تصادفی از نوع ۷۷0۵1 که بزرگتر یا مساوی صفر و کوچکتر از * است خواهد شد. ‎260 ‎

صفحه 261:
Var i: integer ; Begin For i:=1 to 10 do Begin Writeln (Random : B27) ; Writeln (Random )20(:8) ; End ; End. ۰ عدد تصادفى بين صفر و یک. و ۱۰ عدد تصادفی بین ۰ و ۶۰ تولید نماید.

صفحه 262:
هدف: برای گرد کردن اعداد اعشاری بکار می رود. تابع: ‎Function Round (x: Real ): Longint‏ ( یکعبارتیامتفیر لعشاری‌سوده وخروجی‌تلبع ‎Longint ¢ 5!) sess‏ ی‌باشد که نتیجه گرد کردن26 می‌باشد. اين تابع 6 را به نزدیکترین مقدار حیح گرد می‌کند.

صفحه 263:
‎er ee ee‏ و 0 2 :) 1 13 1 9 هددع ‎ein ee‏ ‎{i=18‏ اللا ‎ ‎i: =Round (17.45 ) {i=18

صفحه 264:
هدف: برای محاسبه محذور یک عدد صحیح یا اعشاری بکار می‌رود. شکل تابع: Function sqr (x: Integer ): Integer ; Function sqr (x: Real ): Real 7 * عبارتی یا متغییری از نوع صحیح یا اعشاری بوده و خروجی تابع فیزیک یک عدد صحیح یا اعشاری می باشد این تابع مجذور 16 را بعنوان خروجی بر می‌گرداند. 264

صفحه 265:
Var i: integer ; Begin For i:=1 to 10 do Writeln ('I* 2=' , sqr )1(( ‏ز‎ End.

صفحه 266:
Function sqrt (x: 0 0 ; Real ): Rea بر کت ‎ee ee‏ ‎ah ltl ys‏ جنر # را بسعنولن‌خروجوبر میگ ردلند

صفحه 267:
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. 267

صفحه 268:
هدف: مقدار بعد از مقدار فعلی را برمی گرداند. Function succ (x): same type of ‏شکل تابع:‎ ‏زر‎ parameters ‎X‏ یک عبارت از نوع صحیح. اولین و غیره بوده و خروجی تابع نیز از همان نوع 3 مى باشد اين تابع مقدار بعد از ۱ را بعنوان خروجی بر می‌گرداند. ‎268

صفحه 269:
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 } 269

صفحه 270:
هدف: قسمت صحیح یک عدد اعشار را بر می‌گرداند. Function Trunc (x: Real ): ‏شکل تابع:‎ ; Longint ‎x‏ یکضارتنا متعیر از نوع شاوی ودد و خروجی‌تسلبع یکعدد از نوع ‎Longint‏ می‌باشد. این تابع قسمت صحیح عدد اعشاری ۶ را بعنوان خروجی بر می‌گرداند.

صفحه 271:
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.

صفحه 272:
ee ‏توابع از نوع کاراکتری‎ * در این بخش توايعي رآ بررسي مي کنیم که خروجي آنها ار نوع كاراكتري باشد ‎chr at ¥‏ هدف: معادل کاراکتری یک کد اسکی را بر می‌گرداند. Function chr ( X: Byte ): char ‏کل تابع:‎ يكعبارتيا متغير از نوع باتبوده و خروجىتالبع يككاركتر موياشد ن تابع کد اسکی را دریافت کرده و معادل کارکتری آن را بر می‌گرداند.

صفحه 273:
Var , i: Byte ; Begin For i:=65 to 91 do Writeln (chr(1)) ; End. ‏خروجی‎ : برنامه بالا حروف ۸ تا 2 را در خروجی ‎le‏ می‌کند.

صفحه 274:
هدف: براي تبديل يك كاراكتر به حرف بزرگتر بکار مي‌رود. Function Upcase (ch: char ): ‏شکل تابع:‎ ; Char یک عبارت یا متفیر از نوع کاراکتر بوده و خروجی تلبع فیزیک کاراکتری باشد این تلبع حرف کوچک رابه حرف بزرگ تبدیل کرده و بعنوان خروجی حروف بزرك را بر مى كرداند. 274

صفحه 275:
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

صفحه 276:
EE EE EEE EE ‏موممئي‎ ‏روال‌هاي استانداره‎ * در بخش های قبل دیدید که در توابع پارامترها به تابع ارسال می شود و تابع نیز مقداری را بعنوان خروجی برمی‌گرداند روالها نیز مشابه توابع عمل می‌کنند با اين تفاوت که خروجی روالها از طریق پارامتر برمی گردانده می‌شود يا اعلان به .سیستم عامل می‌باشد. بنابراین روالها بدون نوع هستند :شکل کلی روال‌ها بصورت زیر می‌باشد ; Procedure Name , | | | پارامترهاي روال اسم روال علمه 276

صفحه 277:
هدف: یک یا چند واحد از پارامتر ارسالی کم می کند. :شکل روال ‎Procedure Dec (Var X: longint ) ;‏ ‎Procedure Dec ( Var X: longint , N: longint ) ;‏ ۴ يكمتغير از نوع ]10100130 و بسصورمتفیریسویساشدلین روللکولحد از پسارلمتر ایسالکسم موکسند 277

صفحه 278:
Var 5 N : integer Begin N:=1201; Dec (N) ; {N= 1200 } Writeln (N) ; Dec (N, 200) ; {W= 1000 } Writeln (N) ; End.

صفحه 279:
هدف: کنترل برنامه را به خارج از بلوک جاری منتقل می کند. Procedure ‏شکل روال:‎ > Exit این روال باعث می شود که کنترل برنامه از بلوک جاری خارج شود. اگر این روال در برنامه اصلی بکار رود باعث خروج از برنامه می‌شود. و اگر در یک روال يا تابع بکار رود باعث خروج از روال یا تابع شده و کنترل برنامه به برنامه اصلی منتقل می‌شود. 279

صفحه 280:
Var 8 i,j: integer ; Begin i: = 100; j:=20 ; Dec (i,j) ; Write (i) ; Exit ; End. : خروجی بعد از اتمام عملیات ‎Exit ot‏ باعث خروج از برنامه می شودیر

صفحه 281:
هدف: خاتمه دادن به اجرای برنامه Procedure ‏شکل روال:‎ ; Halt اين روال باعث خاتمه اجرای برنامه شده و کنترل برنامه به سیستم عامل بر كردة. 281

صفحه 282:
هدف: اضافه کردن یک يا چند واحد به یک متغیر شکل تلیع: ) ‎cedure Inc ( Var X: longint‏ ‎Inc ( Var X: longint , N: longint ) ;‏ مد ‏ا يكهبايتيا متغير از نوع 108001126 مىباشد دين ولليه مقنار متغير * يكيا جند واحد مضافه ميكند

صفحه 283:
Var N,i,j: integer ; Begin {i=101} inc(j,N); {j= 210} Writeln (i=',i,'j=',j) ۰ End.

صفحه 284:
هدف: باعث تغیر نحوه تولید اعداد تصادفی می شود. Procedure ‏شکل روال:‎ ; Randomize وقتی در برنامه از تابع 18213010102 استفاده می‌کنیم اعداد تصادفی تولید شده در اجراهای مختلف یکسان می باشد برای جلوگیری از این وضعیت قبل از استفاده از تابع 182000100 روال 180110101026 را بکار می‌بريم. تا باعث تولید اعداد تصادفی متفاوت در اجراهای مختلف گردد. 284

صفحه 285:
Var i: word ; Begin Randomize; For i:=1 to 10 do Writeln (Random (50) ) ; End.

صفحه 286:
EE E EE EEE ‏حل جند مثال برنامه‌نويسي‎ ** 1 : 9 )1 > < 10 ( ‏مثال : برنامه اى بنويسيد كه يك ماتريس مربع‎ ‏از مقادیر صحیح را از ورودی دریافت کرده آنگاه عناصری که مربع کامل‎ ‏نیستند را صفر کرده و در نهایت ماتریس حاصل را در خروجی چاپ می کند.‎ ۳ 1 1 ‏زر‎ : ۲ 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 (ali, jd); onl”

صفحه 287:
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 e{ End of program }

صفحه 288:
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 }

صفحه 289:
+ تمرینات ‎i,j: integer = § 5 :‏ ۱.خروجی تمرینات زیر را تعیین کنید: ‎a integ‏ ز 20 < :[ 100 2< : 1 7 1001011 ‎Dec (j,10) ;‏ ‎Me Cis) 3‏ Writeln (1:25,j:5) ۶ y: integer ; 3 : =Round (18.31) MoD 5 ; Wig OF)

صفحه 290:
Chi = "A" 3 Ch: = chr(ord(ch)+3) ; Write (ch) ; Xe S112" s Suce Cx) 0: < BL Pred (ch) ; Write (x,ch) ; 290

صفحه 291:
:ی * تمرینات برنامه‌نويسي ۱- برنامه‌ای بنویسید که تعداد ۱۰۰۰ شماره حساب بانکی ۷ رقمی بطور تصادفی بین ۵۱۱۹۶۳۲ و ۹۹۸۱۷۱۱ را تولید کرده و چاپ ‎AS‏ ۲- برنامه ای بنویسید تا تعداد ۳۸ عدد تصادفی صحیح بین ۱۰ تا ‎۹٩‏ راتولید کرده سپس آن را در خروجی به شکل مربع وسط صفحه نمایش چاپ کند. ۳- برنامه‌ای بنویسید که یک عدد ۲۰ رقمی از ورودی دریافت کرده آن زار نگدعده: تک برقبی طرب: موجه و حامل رارجر خروعی جات تباتیت 291

صفحه 292:
فصل 10 عتفیرها‌ک ایلکتروو وشته‌ها ‎(String)‏ هدفهاي كلي بررسی ساختار آرایه هایی از نوع کاراکتر معرفی نوع داد جدید به نام رشته مقایسه آرایه ای از کاراکتر و رشته شناخت توابع و روالهای استاندارد برای رشته ها

صفحه 293:
:دانشجو يس از مطالعه اين فصل بايد بتواند ja رایه‌ای از کاراکترها را در پرنامه پکار ببرد. 8 آرایه‌ای از کاراکترها را با رشته مقایسه کند. "لا اسمی افراد و غیره را با استفاده از آرایه‌ای از رشته مرتب نماید. #توابع و روالهای استاندارد مربوط به رشته‌ها را در برنامه خود بكار ببرد. 293

صفحه 294:
* متغيرهايي از نوع کاراکتر متغیرهای کاراکتری ظرفیت پذیرش یک کاراکتر ( شامل یک رقم. یک حرف از .حروف و يا يك كاراكتر ديكر ) را دارا مىباشئد مقدار دهیلینمتفیر ها بسه صوردویر مویاشد : s Meh: = "A ‏اگر بخواهیم متغیر های کاراکتری را از ورودی بخوانیم باید دقت بیشتری‎ ‏به ,خرج دهیم برای اينکه فضاهای خالی کاراکتر محسوب می شوند‎ 294

صفحه 295:
Writeln (' equal ' ) Else Writeln (' Not equal') ; خروجی حاصل از قطعه برنامه بالا بصورت زیر است: ‎Not equal‏ 295

صفحه 296:
تیقم‌ها بسصویتزیر مقایسه میسوند -1 9 ع وين 1 مهد 35" هم 1 ۷ ‎PQS‏ ‏.رقمها از لحاظ كد اسكى يشت سر هم قرار كرفتهاند مقايسه مىشوند -2 296

صفحه 297:
EEE EEE << << "> ) 51 ( ‏متغيرهاي رشته‌اي‎ تعریف: مجموعه‌ای از کاراکتر را یک رشته نامیده و متغیر از نوع آن را .یک متغیر رشته‌ای می‌نامند این متغیر نیز مانند ساير متغیرها در قسمت تعاریف متغیرها ( ۷۵ ) معرفی می‌شود. در تعریف یک متغیر رشته‌ای معمولاً طول آن را مشخص می‌کنند. اگر طول تعیین نشود بطور قراردادی کامپایلر حداکثر طول را برای آن در نظر مى كيرد. حداکثر طول رشته ۲۵۵ کاراکتر می‌باشد. 297

صفحه 298:
طول رشته کلمه ذ< عیرهاشده | اسم رشته 298

صفحه 299:
Var S:string[10] ; Begin S:='pascal' ; Write (s) ; ‘End .

صفحه 300:
; Read (s ) هنگام خواندن متغیرهای رشته‌ای اگر طول رشته ورودی از طول تعریف شده بیشتر باشد فقط به اندازه طول تعریف شده خوانده می شود و اگر طول رشته ورودی کمتر از طول تعریف شده باشد. رشته ورودی در منتهی‌الیه سمت چپ متغیر رشته‌ای قرار گرفته و بقیه متغیر رشته ای بدون محتوا تاق مق هائك 300

صفحه 301:
7[ می‌توان استفاده کرد:" ‎Write (s)‏ ; مثال : برنمه‌ای بنویسید که شماره دانشجوئی. اسم و فامیل دانشجوثی را .از ورودی دریافت کرده سپس در خروجی نمایش دهد

صفحه 302:
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 بو (۱

صفحه 303:
آرايه‌اي از رشته بصورت زیر تعریف مي‌شود: iy [1..length] of string نوع رشته اي طول آرايه 303

صفحه 304:
برای خواندن چنین آرایه‌ای بصورت زیر عمل می‌کنیم: r i:=1 to 50 do ReadIn (Name [i]) ; ‎ly‏ نمایش آرایه در خروجی بصورت: ‎For i:=1 to 50 do Writeln ( Name [i] )

صفحه 305:
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 }

صفحه 306:
00 58 آسمي از ور و۳ اطلاعات اسم خوانده شده را در .صورت وجود در خروجى نمايش دهد Name , Family: array[1..50] of string[ 30] ; id: array[1..50] of longint ; Nam : string [ 30] ; 306

صفحه 307:
write ('Enter Name:') ; ReadIn (Name ) ; write ('Enter family:') ; Readln ( family ) ; write ('Enter student Number:') ; ReadIin (Id) ; end ; writeln ; write ('Enter Name:') ; 3ReadIn (Nam) ; -_

صفحه 308:
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 ) ; 400

صفحه 309:
موممئي ‎EE EE EEE EE‏ * توايع و روالهاي کتابخانه‌اي براي متغيرهاي رشته‌اي Concat at v مدف: الحاق دو يا چند رشته به یکدیگر Function concat (S1,S2,...,Sn): :عبات ‏شکل‎ ‎; string ‎٩2 , 1‏ , ... , 88 متفیرهایی از نوع رشته هستند و خروجی تابع نیز یک متغیر رشته‌ای است این تابع دویا چندتابع را به هم پیوند داده. و رشته حاصل را برمی گرداند. ‎309

صفحه 310:
١ 5503 , 501 ‏ر‎ str2: string egin Str1 : ='Pascal' ; 572 : < ۲ 0016۲ Str3 : = Concat ( Str1 , Str2) ; write ( Str3 ) ; nd. با اجرای برنامه فوق. عبارت 0016 ‎Pascal‏ نشان داده خواهد شد. 310

صفحه 311:
ندف: استخراج یک زیر رشته ( 511053110 ) از یک رشته n copy (S:string ; Index:Integer; count: Integer): stri يكهبايتيا متغير پشته لی‌ک» می‌خولهيم از آن‌زیر پشته لی‌ک» نقطه 5 _ می‌ب‌اشد جدا کنیم لنا زیر یشته ‎legs Index ob , Count‏ لمستموياشد 0۷11 حاصل یکیشته که طوللنبه لنلازد 311

صفحه 312:
Var Strycstnil: string: 5 Begin Str: =' Pascal Book' ; Siriv= Capy( Str, 7,4) 74 Sri] Book } write (Str1) ; End.

صفحه 313:
هدف: حذف یک زیر رشته از یک رشته شکل‌روال: ‎Procedure delete (Var str: string;‏ ‎Index:integer;length: integer )‏ ; 5 یبکمتفر رشته لی 1110102 یکعبارتیامتغیر صحیح و 1.61101 نب ‎٠‏ عبارت يا متغیر صحیح می‌باشد. روال 126166 یک زیر رشته را از یک ته حذف می‌کند این روال از محل ‎Index‏ بطول 1.6۳01 از رشته ‎٩]‏ ‏ف می‌کند و رشته حاصل بعنوان خروجی روال برگردانده می‌شود. 313

صفحه 314:
Var St: string ; Begin St: = 'Pascal.Book' ; Delete (St,7,5) ۶ writeln (St) ; End. خروجی حاصل از برنامه فوق 389081 می‌باشد.

صفحه 315:
هدف: درج ( وارد کردن ) یک رشته در یک رشته دیگر Procedure Insert ( Str1: string ;Var :J\;, Js: ; Str2: string ; Index: Byte ) ‎Str’‏ عبارت يا متغیر رشته ای. ‎٩12‏ منغیر رشته ای و 11206 عبارتی دد از نوع ‎os‏ می‌باشد. روال 11561 رشته 9171 رادر رشته ‎Str2‏ ‏خانه ‎Index‏ درج می‌کند و رشته حاصل خروجی روال خواهد بود. ‎315

صفحه 316:
Var Str1 , str2: string ; Begin Str1: =' Pascal 7' ; Str2: ='Turbo' ; Insert (Str1, Str2,6) ; End. خروجی حاصل )3 ‎Turbo pascal 7 Yu ub,‏ خواهد بود. 316

صفحه 317:
هدف: محاسبه طول رشته Function length (Str: string): ۰ ‏شکل تابع:‎ ; Integer ‎Str‏ يكعبارتوشته لمويوده و خروجىتلبع يكعدد صحيح موياشد اين تابع طول رشته ورودی را محاسبه و بعنوان خروجی بر می‌گرداند.

صفحه 318:
Var St: string ; n: integer ; Begin St: = 'Turbo Pascal 7' ; n:=length(S4); {n=14} Write (' The length of string ist) a) 3 End.

صفحه 319:
هدف: برای جستجوی یک رشته داخل رشته دیگر Function pos ( Str1: string ; 512: ‏شکل تابع:‎ ‏رز‎ String ): Byte 1 یک عبارت يا متفیر رشته ای و ‎٩112‏ نیز یک عبارت یا متفیر رشته ای می‌باشد و خروجی تابع یک عدد صحیح می باشد. این تابع محل اولین وقوع رشته ‎٩111‏ در رشته ‎٩۲2‏ را بعنوان خروجی بر می‌گرداند. 319

صفحه 320:
Var Str1 , Str2: string ; i: integer ; Begin Str1: =' Book' ; Str2: = ' Pascal Book' ; i: = Pos (Str1,Str2) ; {i= 8} ‎Write ('i=',i) ;‏ نکته: توجه کنید که اگر عمل جستجو با موفقیت انجام نشود ( ‎JPG, gas‏ ‏.در رشت نداشته باشد ) تابع مقدار صم اند دز وستهة دوم ‎ic cate a8‏ ر صفر بر مى كردا ‎ae‏

صفحه 321:
هدف: برای تبدیل عدد به یک رشته عددی بكار مى رود. ال. 1: ( ‎Str: string‏ ر تقم؟ :تعاطا :1 )او وتال0 ۵8( ‎Procedure Str (F: Real: format, Str: string) :‏ ; درشکل ۰۱ 1 یک عبارت یا متغیرعددی بوده و ‎٩‏ یک متغیر رشته‌ای می‌باشد این روال یک عدد صحیح با فرمت مشخص را به یک رشته عددی درشکل ۲ ۰ 17 یک عبارت یا متفیر رشته‌ای و ‎٩۲‏ یک متغیر رشته‌ای می‌باشد 321

صفحه 322:
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. 322

صفحه 323:
هدف: تبدیل یک رشته عددی به یک عدد ; Procedure Val (S: String ‏روال: ۱: 66۲ص :۲ ۷۵۲ ز‎ ; (Var Error: inte¢ dure Val (S: String ; Var N: Real ; Var Error: inte¢ 5 یکعبارتیامتغیر يشته لی ۷( يكمتغير از نوع صحيح يالمعشايىو 1 نیز یکمتفیر از نوع صحيح مئباشد دين ولليكيشته عددى را ببه یکعدد صحیح یسا(عشاریتبدیلمی‌کند و لذرا توسطمتغير 1( بسرمی‌گردلند دگر عملتسبدیلسطور صسحیح لنجام شود. مقلار متفیر 281101 برلبر صفر در غیر اینصور تم حل و جود لشکل لوا مشخص رمک ند 323

صفحه 324:
F: Real ; ‏عد غ56‎ ' 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 , ۲ ۱ End.

صفحه 325:
EEE EEE ‏**ارائه جند مثال در مورد رشته‌ها و کاراکترها‎ مثال : برنامه‌ای بنویسید که یک جمله از ورودی دریافت کرده سپس در صورتی که ‎IS als‏ وجود داشته باشد آنها را به 216 تبدیل نماید و در نهایت رشته حاصل را در خروجی نمایش دهد. توجه كنيد كه ممکن است بیش از یک بار کلمه 18 تکرار شده باشد در اینصورت همه کلمات 5] را با 816 تبدیل کند. 325

صفحه 326:
Writeln (' Enter sentence ReadIn (St) ; Repeat i: = Pos (‘is', St) ; if 1< 0 Then Begin Delete ( St, i,2); Insert (‘are', St,i) ; 326 end ; 1-141 ‏يت د‎ |)

صفحه 327:
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 ) ;

صفحه 328:
‎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)) ;

صفحه 329:
S1: string ; i: integer ; 91: = 'ABCDEF' ; For i:=1 to length(S1) ; Delete (S1,i,1) ; Writeln (S1) ; Var Begin -End

صفحه 330:
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) ;

صفحه 331:
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 331

صفحه 332:
۳ 5 1 High * تمرینات برنامه‌نویسی *برنامه‌ای بنویسید که یک پاراگراف را از ورودی دریافت کرده ( حداکثر ۱۰ خط ) سپس: .الف) تعداد کلمات هر سطر را شمرده و انتهای سطر نمایش دهد .ب) تعداد حروف صدا دار را شمرده جاب نمايد .ج) تعداد خطوط برنامه را شمرده در خروجی چاپ کند .د) تعداد جملات هر خط را محاسبه و در سطر های جداگانه نمایش دهد 332

صفحه 333:
*برنامه‌ای بنویسید که یک عدد در مبنای مشخص را از ورودی دریافت کرده سپس آن را به مبنای 102 که از ورودی خوانده می شود ببرد. *برنامه‌ای بنویسید که یک پاراگراف را از ورودی دریافت کرده کلمات تکراری هر سطر را حذف نموده و پاراگراف حاصل را بهمراه پاراگراف اولیه در خروجی با پیغام مناسب نمایش دهد.

صفحه 334:
*برنامه‌ای بنویسید که دو عدد ۲۰ رقمی ( بصورت رشته باید خوانده شود ) را از ورودی دریافت کرده سپس مجموع و حاصل ضرب این دو عدد را محاسبه و در خروجی با پیغام مناسب چاپ نماید. *برنامه‌ای بنویسید که یک رشته از ورودی دریافت کرده سپس کلمات داخل آن را بصورت عمودی کاراکتر به کاراکتر نمایش دهد: *یرنم‌ای بنویسید. که یک پاراگراف با حداکتر ۵ خط را از ورودی دریافت نماید. سپس مجموع ارقام یا اعداد ( در صورت وجود ) هر خط را محاسبه نموده در انتهای همان سطر نمایش دهد. ee

صفحه 335:
ges ‏برنامه‌هاي فرعي‎ هدفهاي كلي _- شناخت اجزاء تشکیل دهنده ‎es‏ و روالها * بررسى انواع پارامترها و متغیرها در برنامه‌های فرعی * شناخت تفاوتهای روالها و توابع * معرفی مزایای استفاده از زیر برنامه‌ها ی

صفحه 336:
:دانشجو يس از مطالعه اين فصل بايد بتواند "" برنامه خود را به جندين زيربرنامه تقسیم‌بندی نماید. "" زيربرنامهها را با توجه به قوانين موجود. در ساختار برنامه جا دهد. ۴ باتوجه به مزایای استفاده از آنها را در برنامه خود بکار ببرد. 336

صفحه 337:
الم < << کچ * روال‌ها روال‌ها نوعی از برنامه‌های فرعی هستند. که به طور مستقل و جداگانه وظیفه یا وظایف خاصی از برنامه اصلی را انجام می‌دهند. روال ها در صورت نیاز اطلاعات خود را از طریق پارامترها دریافت و همچنین در صورت نیاز نتایج را از طریق پارامترها به برنامه اصلی باز می‌گردانند. پارامترها در حقیقت خطوط بالؤقباظق تق یرک مامتان ی تماقا اقرضی اهتنا نقزها ناقتهامی. فنزان كه توابع و روال ها روانتر عمل کنند. زیرا آنها به برنامه های فرعی این قابلیت را 337 هند .مى دهند كه با هر فراخوانی. داده‌های مختلفی را مورد پردازش قرار ۱

صفحه 338:
Procedure Name (parameters list ) | | | vious siaelS ‏لیست پارامترها اسم روال‎ ar { List of locad variable } Begin 1 { Procedure Body } End af End of procedure }

صفحه 339:
5 اسم برنامه اصلی ‎Program‏ : تعاریف برنامه اصلی ‎Procedure‏ ... ۳ Begin {main program } فراخوانی روال ها End. { End of program ۳

صفحه 340:
(Formal parameters ) ¢5)50 sb xb.) (Actual parameters ) (ily (bs LLY. از پارامترهای صوری هنگام اعلان روال و از پارامترهای واقعی هنگام رفخولت رو لها لستفادد مشود 340

صفحه 341:
پارامترهاي صوري در حالت كلي 2 نوعند؛ که با توجه به نوع روال و تصمیم برنامه نویس مورد استفاده قرار مي گیرند: ” يارامترهاى مقدارى ( 122323126166375 71731116) (Variable parameters ) «i ‏يارامترهاى‎ ”

صفحه 342:
پارامترهای مقداری. پارامترهایی هستند که مقدار متفیرهای فرستاده شده از برنامه اصلی را دریافت می کنند و وظیفه آنها فقط عبور دادن مقدار به روال می‌باشد. لذا تغییرات پارامترهای مقداری در روال به برنامه اصلی انتقال نمی‌یابد : ‏پارلمترهایس قداریب صوردفیر تسعریفمی‌شوند‎ dure Name (varl: type ; var2:type,... ع مقداری اسم روال کلمه ذخیره شده 342

صفحه 343:
ram = main 2,yl1, y2: integer ure test (A1,A2,B1,B2:integer);{formal para 9 :1 ‏اا 1 ضع‎ ; { Actual parameters } End of program ‏سح و‎ 343

صفحه 344:
در مثال بالا این تناظر برقرار است: پارامترهای واقع ‎Al‏ ‎A2‏ ‎B1‏ ‎B2‏ متناظر است با نا پارامرهای وافعي برنامه اصلی انتحاب شوند. این به ‎gle‏ این تست که این پارامترها ( پارامترهای صوری ) همان پارامترهای واقعی هستند

صفحه 345:
متغیرهای ۰.۰ , ۷۵۲1 ر ۷۵32 پارامترهای مقداری هستند. توحه کنید. که این پارامترها صوری هستند و نوع و ترتیب آنها بايد با نوع و ترتیب پارامترهای واقعی در تناظر یک به یک باشند. 345

صفحه 346:
ram main 2, yl, y2: integer lure test (A1,A2,B1, B2: integer ); {formal pai Begin { main } test (x1 ,x2,yl,y2) ; { Actual ‏سوت‎ parameters End. { End of program } —_

صفحه 347:
همانطور که ملاحظه می کنید. روالی بنام 65 با ء پارامتر مقداری در پرنامه استفاده شده است. متفیرهای 1 ر 22 , 971 ر ۷2 از برنامه اصلی به روال 651 ارسال شده و بترتیب مقادیر این متغیرها در متغیرهای با همان نوع در ۸1 , ۸2 , 191 , 192 قرار می گيرند. 347

صفحه 348:
یک پارامتر متفیری. تفیرات یک پارمترواقمی را منوان حروجی به پرنامه اصلی برمی گرداند. تفاوت این گونه پارامترها با پارامترهای مقداری در ارسال تغييرات ايجاد شده در پارامترها می‌باشد. وقتی نیاز است. که نتایج روال به برنامه اصلی برگردد. از پارامترهای متغیری استفاده می‌کنند اعلان پارامترهای متغیری به صورت زیر می‌باشد: ‎Name ( var id1 : type ; var id2: type ,...‏ مت پارامترهاي متغيري اسم رواال as تغيرهاى 1612 , 101 و ... يارامترهاى متغيرى مى باشند که نتایج روال. توسط 348 انها به برنامه اصلى بازكردانده مى شود.

صفحه 349:
را محاسبه و نتیجه را در برنامه اصلي چاپ نماید. ‎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 ,

صفحه 350:
پارامتر واقعی متناظر است با يارامتر هاى صورى Num1 Num1 Num2 Num2 Total sum Average ave 0 , 111721 پارلمترهایمتدایوو 2۷76 , ‎SUM‏ پارلمترهایمتغیرء باشند. که توسط آنها نتایج به برنامه اصلی برگردانده می‌شود. 350

صفحه 351:
در برنامه‌های فرعى دو نوع متغير علاوه از پارامترها مورد استفاده قرار می‌گيرند. اين متغیرها متفیرهای محلی یا متغیرهای سراسر هستند.متفیرهای محلی. متغیرهایی هستند که در بلاک مربوط به خود قابل استفاده هستند. ولی متغیرهای سراسری در تمام برنامه‌های فرعی قابل دسترس می‌باشند متغیرهای محلی در داخل برنامه‌های فرعی در قسمت تعاریف معرفی می‌شوند .و در خارج از روال قابل دسترسی نیستند 351

صفحه 352:
-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}

صفحه 353:
مر ری ‎x‏ Y. 353

صفحه 354:
>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} :خروجی پبرنامه بالا بصورت زير است ‎b=2 c=5‏ 16 وج

صفحه 355:
بکارگیری روال‌های بدون پارامتر بکارگیری روال همراه پارامترهای با خاصیت ورودی بکارگیری روال همراه پارامترهای با خاصیت ورودی و خروجی 355

صفحه 356:
كاهى لازم است تا برنامه فرعی کاملاً مستقل (بی‌نیاز از مقادیر برنامه اصلی) در بخش‌های مختلف یک برنامه اجرا شود. در اين صورت نیاز به استفاده از پارامتر بی‌مفهوم می‌باشد و از روالهای بدون پارامتر استفاده مى كنند غالبا زمانیکه بخواهيم پیفام‌های خاصی را در قسمتهای مختلف برنامه نمایش دهیم. این پیغام‌ها را در یک روال قرار داده و در صورت نیاز روال مربوطه را فراخوانی می‌کنیم.

صفحه 357:
Program Example ; Procedure Head Begin WriteL((Name Family Age No’); ۱۷۷ ‏ا ا م م )ام از‎ 0 End; Begin{Main} WriteLn(' open university ' ) ; Head; End.

صفحه 358:
همانطور که قبلاً اشاره کردیم» هدف از بکارگیری پارامترها انتقال مقادیر از برنامه اصلی به روال‌ها می‌باشد. اگر این انتقال یک طرفه باشد یعنی فقط از برنامه اصلی به روال باشد. این نوع پارامترها فقط خاصیت ورودی خواهند داشت. (قبلا در اين مورد توضیح داده شده است) در اين نوع روالها از پارامترهای مقداری استفاده مى كنئد 358

صفحه 359:
(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}

صفحه 360:
ي روال همراهپارامترهاي با خاصیت ورودي و خروجي در این نوع روال‌ها پارامترها دو خاصیت مهم دارند یکی انتقال داده‌ها از برنامه اصلی به روال و دیگری انتقال یا ارجاع نتایج از روال به برنامه‌اصلی می‌باشد. در اين نوع روال‌ها از پارامترهای متفیری استفاده می کنند 360

صفحه 361:
Program Example ; ‏سيت‎ ‎Var A, b: integer ; Procedure change (var x, y: integer) ; var temp:integer; Begin Temp:=x; Sy; Y:=temp;

صفحه 362:
Begin { Main } ReadLn(a,b); Change(a,b); WriteLn ('a=',a,'b=',b); End.{End of program}

صفحه 363:
۰ ۳ ** ارتباط روال‌ها با یکدیگر در پاسکال زیر برنمه‌ها نهتنها از طریق برنامه اصلی بلکه از داخل یکدیگر نیز ,فراخوانی می‌شوند فراخوانی روال‌ها از داخل یکدیگر تابع قوانین کلی زیر است: ۲ قلنون اول قانون دوم قانون سوم

صفحه 364:
از هر برنامه (اصلی یا فرعی) به برنامه فرعی در صورتی می‌توان. دسترسی داشت. که در بخش تعاریف ‎Of‏ برنامه (اصلی يا فرعی) قرار داشته باشد. بطور مثال در شکل زیر پرنامه اصلی 11 می‌تواند. به كليه برنامه‌های فرعی 1,2 و... که در بخش تعاریف برنامه اصلی قرار دارند. مراجعه کند

صفحه 365:

صفحه 366:
nd; egin {Main} ۳001: ‏رصم و‎

صفحه 367:
والهاى 23062 , 101061 داخل برنامه اصلی 118310 تعریف شده‌اند. لذ راحتی می‌توان در برنامه اصلی به آنها دسترسی پیدا کرد. وال‌ها خود نیز داخل هم می‌توانند قرار بگیرند. دقیقاً مثل روال‌های معمولی این تفاوت که در داخل روال باید تعریف شوند. به اینگونه روالها. اصطلاحاً وال‌های متداخل یا تودرتو می‌گویند. 367

صفحه 368:
اگر روال‌ها در بخش تعاریف یک برنامه به موازات یکدیگر تعریف شوند و نه در داخل هم. در روال‌های بعدی امکان رجوع به روال‌های قبلی وجود خواهد داشت. بعبارت دیگر به روالی می‌توان دسترسی پیدا کرد که قبلاً تعريف شده باشد. 368

صفحه 369:
برنامه اصلى روال‌ها در شکل بالا چون 102 قبلاً معرفی شده است می‌توان آنرا داخل 3 فراخوانی کرد. Main 21 22 23 P2

صفحه 370:
گر روال‌ها در بخش تعاریف برنامه‌أی بصورت متداخل باشند. در اینصورت ز روال درونی می‌توان به روال‌های بیرونی که قبلا تعریف شده. راجعه کرد و همچنین از روال درونی به روال‌های بیرونی که به موازات کدیگر قرار گرفته‌اند. نیز می‌توان دسترسی پیدا کرد. لور مثال در شکل زیر روال 1 می‌تواند به روال‌های 2,03 دسترسی ییدا کند. وهمچنین روال درونی 124 می‌تواند به‌روال‌های 103 , 102 مراجعه کند 370

صفحه 371:
۳3 22 Pl

صفحه 372:
‎EE << << ">‏ ** اعلان روالها به روش 1015172101 همانطور كه قبلاً اشاره كرديم از روالى مىتوان در روال ديكر استفاده کرد. كه قبلاً تعريف شده باشد. در توربوياسكال نقيصه فوق به كمك اعلان 01 قابل حل است. بدین صورت كه اكر روالى به هنكام تعريف با ‎forward ore!‏ همراه باشد. بدون رعایت از پیش تعریف شدن می‌تواند. ‏در روالهای دیگر ظاهر شود. ‎372

صفحه 373:
Procedure Name ( parameters ) ; ; forward | ۱ | ! ۱ کلمه ذخیره شده لیست پارامترها اسم روال کلمه ذخیره شده

صفحه 374:

صفحه 375:
End; همانطور که ملاحظه می‌کنید با اعلان روال 97063 ۳ بصورت 1201080230 بقیه روالها می‌توانند به آن 3 1 دسر لکد 212003 End. {End of program}

صفحه 376:
EE EE EEE EE ‏موممئي‎ ‎(Functions) ‏توابع‎ * نوع دیگری از برنامه‌های فرعی, توابع می‌باشند. توایع مانند روال‌ها: پیمانه‌های مستقلی هستند. با اين تفاوت که روال‌ها می‌توانند. تعدادی خروجی داشته باشند. در حالی که توابع فقط یک خروجی دارند. در روال‌ها معمولاً خروجی‌ها توسط پارامتر به برنامه اصلی ارجاع داده می‌شود. ولی در توابع اینکار به نحو دیگر انجام می‌گيرد. 376

صفحه 377:
Function Name ( List Of Parameters ) : ; Function Type نوع تابع ليست پارامترها ‎wh pul‏ كلمه ذخيره شده

صفحه 378:
۰ دکنه — تابع فقط می‌تواند. یک خروجی داشته باشد. نوع خروجی تابع. همان نوع تابع محسوب مىشود. لذا با توجه به نوع خروجى تابع. نوع تابع تشخیص داده می‌شود. ذکر اين نکته خالی از لطف نیست که نوع پارامترهای صوری توابع معمولاً مقداری هستند چرا که توابع نوعی برنامه‌های فرعی هستند که فقط یک خروجی برمی گردانند. لذا استفاده از پارامترهای از نوع متغیری پسندیده نمی‌باشد. (اشکال کامپایلری در توربو پاسکال ندارد ولی در پاسکال استاندارد این کار اشکال کامپایلری دارد.) مقدار خروجی توابع توسط اسم تابع برگردانده می‌شود. توابع مثل روالها بعد .از قسمت تعاریف پرنامه اصلی ظاهر می‌شود 378

صفحه 379:
Name := Resualt Of Function ; End ; 379

صفحه 380:
تمام پارامترهای تابع باید از نوع مقداری باشند نوع داده نتیجه تابع در انتهای عنوان تابع و بعد از لیست پارامترهای صوری قرار می‌گیرد در بدنه تابع. خروجی تابع با نسبت دادن مقدار به نام تابع مشخص می‌شود 380

صفحه 381:
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

صفحه 382:
ناحیه داده هاي اصلي_ ‏ 201" ناحيه داده هاي پارامترهای صوری ‎M‏ پارامترهای واقعی ‎N ‎ee ‏متفیرهای محلی‎ ‏نتیجه تابع‎ P 2 I ‏نتیجه تابع‎ 2 382 ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎

صفحه 383:
+ دوایع بار تسی ‎IRCCULSLUIL)‏ ‎(Functions‏ در پاسکال یک تابع یا روال می‌تواند. خودش را فراخوانی نماید. پیمانه‌ای که خودش را فراخوانی می‌کند یک پیمانه بازگشتی نام دارد. اين نوع توابع در ۶ ‏ی و واه وت اد وت ۰ ارت‎ s شرط خاص که غالباً به یک عدد ثابت ختم می‌شود. ادامه پیدا می‌کند. سپس مقدار تابع از پایین به بالا محاسبه می‌شود و در نهایت نتیجه تابع حاصل .می شود 383

صفحه 384:
را در محلی از حافظه بنام پشته (8126016) قرار می‌دهد. اگر بازگشت به تابع بازكشتى مجدداً صورت گیرد. مقادیر فعلی متغیرها مجدداً بدنبال مقادیر قبلی و اصطلاحاً در پشت مقادیر اولیه قرار می‌گیرند. هنگامی که شرط پایانی در تابع بازگشتی رخ می دهد. در اولین بازگشت مقادیری را که هنگام مراجعه به خود. در پشته نگهداری کرده مجدداً در دسترس قرار می‌دهد و بهمین ترتیب در بازگشت‌های بعدی این عمل تکرار می‌شود تا مقدار تابع محارییه شود.

صفحه 385:
شرط پایانی | مقادیر متفیرها درآخرین بازگشت به تابع مقادیر متغیرها در سومین بازگشت به تابع مقادیر متغیرها در دومین بازگشت به تابع مقادیر متغیرها در اولین بازگشت به تابع 38

صفحه 386:
مقادیر متفیرها در سومین بازكشت به تابع مقادیر متفیرها در دومین بازگشت به تابع مقادير متغيرها در اولين بازكشت به تابع 386

صفحه 387:
۳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

صفحه 388:
388

صفحه 389:
Function GCD ( N,M:integer ): Integer ; Begin If (N<=M) and (M Mod N = 0) Then GCD:=N Else GCD:= GCD(M,NmodM); End ; 389

صفحه 390:
EEE EEE << << "> ۰ ۳۹ 2 ** مقايسه توابع و روالها توابع و روال‌ها هر دو برنامه‌های فرعی هستند. که بطور مستقل وظایفی را بر :عهده دارند. ولی در اين میان از بعضی جنبه‌ها متفاوت می‌باشند که عبارتند از حوم فرلخولنی‌آنها با هم متفاوتلست روا ها از طریقعبارلتو وا لفرلخولنده .1 ی‌شوند. درصورتی که فراخوانی تابع توسط عبارات مقایسه‌أی و یا تخصیص بجه به يك متغير صورت مى كيرد كام معلانيكتلبع. نوع تلبع يانوع نتيجه حاصلاز تلبع بايد ذكر شود. مورتى كه روالها نيازى به اين كار ندارند ولبع فسقط یک خروجوبرمیگ ردلنند ولیروا فا میسولنند چندین‌خریجی3 گردانند. درضمن نتیجه توابع توسط اسم تابع فرستاده می‌شود ولی ‎alan‏ ‎pois‏ پارامترها. نتایج را تیک دانتن

صفحه 391:
* طربقه ارسال آرایه‌ها به توابع و روال‌ها آرایه‌ها خود مجموعه‌ی از داده‌ها می‌باشند. لذا برای ارسال آنها نمی‌توانیم از روش معمولی ارسال پارامترها استفاده کنیم. و بطور مستقیم نمی‌توان آنها را به برنامه‌های فرعی انتقال داد. برای ارسال آرایه‌ها به عنوان پارامتر به برنامه‌های فرعی از دستور 137106 استفاده می‌کنند. دستور 11/06 قبل از تعاریف برنامه اصلی بکار می‌رود و توسط این دستور در واقع یک نوع ساده‌سازی در تعاریف فراهم می‌شود. و با این ساده‌سازی می‌توان داده‌های 391

صفحه 392:
تعریف داده ساخت یافته = شناسه ‎Type‏ ‏برای مثال یک ارایه از نوع صحیح را تعریف می‌کنیم: ‎Type No = array [1...100] of intec‏ ; در اینصورت تعريف آرایه به © نسبت داده می‌شود. اگر بخواهیم متغیری از نوع آرایه بالا تعریف کنیم. آنرا از نوع 1*0 تعریف می‌کنیم: ‎ar‏ ‎Number: No ;‏ 392

صفحه 393:
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 ; حص

صفحه 394:
Index:= I ; Flag:= FALSE ; End ; Inc (1); End ; Search:= Index ; End ; LORE EOE OEE CETTE eee 1 <a

صفحه 395:
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) ); Ends{ End Of Program }

صفحه 396:
* تمرینات " روال ‎Down‏ را در نظر بگیرید: 601111 Down ( N: Integer) ; in While N>0 do Begin Write (N: 3); Dec (N); End ; 7 ب) وقتی روال بصورت )5( ‎down‏ فراخوانی شود. چه چیزی چاپ می‌شود ب) مقدار پارامتر واقعى 7 بعد از اجرای روال چیست؟ 396

صفحه 397:
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 ر 5< لا فراخوانی كنيل

صفحه 398:
:ی © تمرینات برنامه‌نويسي " برنامه‌ای بنویسید که اطلاعات حداکثر ۱۰۰ دانشجو که عبارتند از: ‎vt Family Nanie‏ اسم 900 شماره دانشجوئی را از ورودی دریافت کرده سپس: الف) توسط روالی بنام :501 اطلاعات را برحسب شماره دانشجوئی مرتب کند. ب) توسط تابعی بنام 5628۳610 شماره دانشجوئی فردی را از ورودی دریافت نماید. در صورتی که شخص موردنظر در لیست باشد. سایر اطلاعات انا

صفحه 399:
* آرایه‌آی از نوع صحیح با حداکثر ۱۰۰ عنصر را در نظر بگیرید. برنامهأى بنويسيد كه ابتدا آرايه را از ورودى دريافت کرده سپس با استفاده از يك تابع بازكشتى بيشترين مقدار آرايه را محاسبه نمايد. ۴ دو آرایه مرتب حداکثر ۱۰۰ عنصری که شامل اسامی افراد می‌باشد را درنظر بگیرید. برنامه‌ای بنویسید که نخست دو آرایه را از ورودی دریافت نموده سپس توسط روالى بنام 6 اين دو آرايه در هم ادغام نموده و در آرایه سومی قرار دها 399

صفحه 400:
فصل 12 هدفهاي كلي , مفهوم مجموعه و داده‌های شما شی در زبان پاسکا ‎J Ob} )‏ e ‏جموعه و داد شمارث‎ ‏ههای شمارشی به عنوان متغیر‎ : Rostra

صفحه 401:
:دانشجو يس از مطالعه اين فصل بايد بتواند 5 مفهوم مجموعه و داده‌های شمارشی را درک کند. ۴ بتواند در صورت لزوم از مجموعه و داده‌های شمارشی استفاده کند.

صفحه 402:
تعداد محدودی از داده‌ها که از نظر نوع یکسان هستند. در غالب مجموعه و يا .گونه‌های شمارشی نگهداری می‌شوند که مفهومی شبیه در ریاضیات دارند برای استفاده در مواردی خاص نظیر روزهای هفته و یا نوع ماشينها و... كه ترتیبی هستند و یا یک مجموعه از داده‌های پشت سر هم می‌باشند. استفاده از این ساختارها کار را بسیار راحت می‌کند. هر چند وجود آنها به عنوان ساختارهای داده‌ای. الزامی‌نیست. بهرحال به عنوان ابزارهایی از زبان پاسکال هستند که در مواقعی. ضروری بنظر می‌رسند و مسئله را به صورتی قابل‌فهم و .راحت حل مى كند ۳ تس

صفحه 403:
* مجموعه‌ها (عاه6) در زبان پاسکال مجموعه مفهومی شبیه به مفهوم مجموعه در ریاضیات جدید دارد. متفیری است که شامل لیستی از اعداد صحیح. ‎SINS‏ بولین و یا از نوع همارشفئ :و ياشد كه :دا راق داد هاض موه بجهدا رده ها می پاش ناو این جهت بسیار شییه به یک ‎ail‏ در زبان پاسکال است که شامل داده‌عانی از یک نوع می‌باشد. ولی آرایه دارای عناصر محدودی نیست و در ضمن مانند .آرایه تعریف نمی‌شود 403

صفحه 404:
برای تعریف يك مجموعه از کلمات کلیدی 0 56 بصورت زیر استفاده می‌کنیم: Type Name= Set of Type Of Set; Type Digit_type = 0..9; Digit = Set of Digit_type 404

صفحه 405:
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'; 405

صفحه 406:
عضو مجموعه می‌باشد يا خیر. این عمل در زبان پاسکال با کلمه کلیدی ‎in‏ صورت می‌گیرد. اگر عضویت صحیح باشد جواب 11116 وگرنه ‎False‏ می‌باشد. همچنین دو مجموعه را می‌توان با علامات شرطی = < > <- و >-مقایسه کرد که همگی دارای خروجی درست يا غلط می‌باشند. ولی‌علامات شرطی < و > در مورد مجموعه‌ها کاربردی ندارد. مور

صفحه 407:
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 “407 write([1,2] <= [1,2,3]);

صفحه 408:
در ریاضیات می‌توانیم مجموعه‌ها را با هم اجتماع اشتراک و تفاضل کنیم که این عملیات در پاسکال با عملگرهای + # و -به ترتیب می‌باشد. اجتماع دو مجموعه ترکیبی از همه عضوهای آنها است و اشتراک یعنی عضوهایی که در هر دو مجموعه مشترک است و تفاضل یعنی اعضایی که در مجموعه اول می‌باشد و در مجموعه دوم وجود ندارد. 408

صفحه 409:
eto 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; d=[2,3] e:= a-b; e=[0,1] id.

صفحه 410:
۱. آرگومان ورودی روالها می‌تواند مجموعه باشد که قبلاً در تایپ تعریف شده باشد. نه اينكه مستقيم در روال به عنوان آرگومان بياید. ولی خروجی یک تابع نمی‌تواند از نوع مجموعه باشد. ۲ برای نوشتن يا خواندن مجموعه‌ها باید عضو به عضو عملیات صورت بگیرد و مستقیماً توابع ‎Read‏ ۰ روی آنها کار نمی کنند. 410

صفحه 411:
Program test ; Var num , temp : set of byte; I, c: integer ; Begin Writln (‘Enter numbers: Readln( 1) ; Num :=[]; 0 (0) 2 ==

صفحه 412:
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 } 412

صفحه 413:
>" << << آآآآآاسا"اآ۳ * داده‌های شمارشی ‎(Enumeration)‏ ‏داده‌های شمارشی. یک مجموعه مرتب از اعداد است که در برنامه. هر عدد دارای نام بخصوصی است. این نامها در داخل دو پرانتز باز و بسته قرار می‌گیرند و بترتیب از صفر مقدار می‌گیرند مگر اینکه برنامه‌نویس به آنها .مقدار مخصوصی بدهد 413

صفحه 414:
۷06 0 Jar Cars_type = (Peykan, Pride, Pegout, Cars: cars_type; حال در پرنامه 0815 می‌تواند مقادیر داخل داده‌های شمارشی را بگیرد: ‎cars:= Pride;‏ cars:= PK; 414

صفحه 415:
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. i=3 j=5 415 : خروجی

صفحه 416:
متغیر داده شمارشی شبیه مجموعه‌ها حداکثر دارای ۲۵۹ عضو می‌تواند باشد که از صفر تا ۲۵۵ شماره گذاری می‌شود و لذا یک بایت حافظه را اشغال می‌کند. 416

صفحه 417:
و به عنوان آرگومانهای روالها و یا خروجی توابع می‌تواند درنظر گرفته شود ولى حتماً بايد در 1106 تعریف شده باشد و مستقیماً نمی‌توان بکار برد. اين عمل مشابه مجموعه‌ها و آرایه‌ها نیز می‌باشند. لذا ابتدا در 13706 تعریف می‌شود. سپس به عنوان ورودی و یا خروجی روالها استفاده می‌شود وگرنه خطای کامپایلری پیش خواهد آمد. همچنین می‌توان در آرایه‌ها از داده‌ها شمارشى استفاده كرد. 417

صفحه 418:
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

صفحه 419:
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; ‘Readin(i):

صفحه 420:
‎٠‏ تمرینات ‎A=[1,3,5,7] ,‏ , [8-12,4,6 و [1,2,3]-0) باشد عبارات زير ر فى کنید. ‏الف- (00- 8) + لكر ب ‎A + (B*C)‏ ج- ‎A+B+C‏ ‎inA2 -8

صفحه 421:
"برنامه‌ای بنویسید تا مجموعه ای از کاراکترهای کوچک را گرفته و به یک مجموعه از کاراکترهای حروف بزرگ متناظر با آن تبدیل کند. به کمک داده‌های شمارشی. برنامه ای بنویسید که نام دانشجویان يك كلاس را در برگیرد و هر دانشجو نیز یک شماره داشته باشد. سپس با دریافت نام او شماره او در نمایشگر چاپ شود. 421

صفحه 422:
فصل 13 ِ وكورهها (00105ع18) هدفهاي كلي * مفهوم ركورد و اجزاى آن * انواع ركوردها و استفاده از آن در برنامه * معرفى مزاياى ركوردها در برنامه

صفحه 423:
:دانشجو پس از مطالعه این فصل باید بتواند * مواقع لزوم رکورد را تشخیص دهد. 8 از رکوردها در برنامه‌اش استفاده کند. ‎MF‏ پرنامه‌های بزرگ و با داده‌های زیاد بنویسد.

صفحه 424:
نوع داده ساخت یافته‌ای که در اینجا مطرح می‌شود. ر کورد نام دارد که حهت نگهداری داده‌های مختلف نظیر نام نام خانوادگی. سن و آدرس برای یک دانشجو بكار می‌رود. رکوردها برخلاف آرایه‌ها که دارای عناصر از یک جنس و نوع هستند. دارای عناصر از انواع مختلف می‌باشند. اطلاعات از نوع مختلف را نمی‌توان در آرایه نگهداری کرد چرا که دارای جنس مشابه نیستند و لذا از ساختاری به نام رکورد استفاده می‌شود. م ع تس

صفحه 425:
ب ب ب <ج ب ب << 1۳11[ ** تعریف ركوردها نوع داده ساختيافته اى كه از يك سرى داده ها يا اطلاعات مرتبط به هم تخل مق شوه هر کدام از اطلاعات را یک فیلد می نامند بطور کلی تعریف نوع رکورد در زیر آمده است: ‎ype‏ ‎Name = Record‏ ‎Field1-list : type1;‏ ‎Field2-list : type2;‏ Fieldn-list : typen; End;

صفحه 426:
Type Student = Record Name: String [10]; Family: String [15]; Age: integer; Address: String; End; در اين تعريف ‎Student‏ 3 ¢ 18600۲0 است. حال می‌توان در 1 برنامه تعریف کرد: ‎Var‏ ‎ae S: Student;‏

صفحه 427:
براي دسترسي به فيلدهاي رکورد ازعلامت *." استفاده مي‌شود. يعني بصورت زیر: نام فیلد . نام متغیر رکورد مثال: برنامه‌ای بنویسید که رکوردی از نوع اعداد ایجاد کرده و مقادیر آنرا مقدارهی کند. 427

صفحه 428:
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); Evid.

صفحه 429:
Type Student = record Id: integer; Name: string[10]; Family: string[15]; Sex: char; Age: integer; End; Var Stu: student; 429

صفحه 430:
Stu.sge: =18; Case sex of 'M': write('Mr.'); 'F': write('Mrs.'); end; write(stu.name, '' stu.family); End.

صفحه 431:
برای بدست آوردن فضای اشغال شده توسط رکورد ابتدا باید فضای اشغال شده توسط تمامی‌فیلدها را بدست آورده و سپس باهم جمع کنیم. مثال زیر را درنظر بگیرید: 431

صفحه 432:
A, B: Real; = yer C, D: String [10]; 3 ett F: Array [1... 10] of Boolean; 3 Yee G: list1; 3 ۷*۵ x: Rectype; ۱۰+۱۰+۱۱+۱۲-۳ بایت فضا اشغال می‌شود. ir

صفحه 433:
EEE EEE F399 Go 495, * فیلدهای یک رکورد می‌توانند از هر نوعی باشد. از جمله می‌توانند از نوع رکورد دیگری باشند. در اینجا نیز مشابه قبل دسترسی به همان صورت می‌باشد فقط به تعذاد رکوردهای تودرتو؛ ۱ پیش می‌آید ‎Type‏ ‏به مثال زیرتوجه کنید: Rec = recor a, b: nteger; c: char; x: Record p: integer; q: integer; ا 5

صفحه 434:
0 Rec; ‏دراینجا یک رکورد تودرتو به نام 1*00 تعریف شده است که متغیر ۲ از آن‎ ‏نوع تعریف شده است. سپس برای دسترسی به فیلدهای 6, 0 , 2 می‌توان‎ به صورت زير عمل کرد: ‎ra‏ ‎r.b‏ ‏ولی برای دسترسی به فیلدهای ]6, 0 چون متعلق به رکورد > نیز هستند داریم: 9 ‎r.x.q‏ 434

صفحه 435:
:ی ‎٠‏ آرايه‌اي از رکوردها هنكامى كه ما تعدادى داده مشابه داريم ولى در هريك. دادههاى مختلفى وجود دارد می‌توانیم یک رکورد تعریف کرده. سيس آرايهاى از آن تعريف كنيم. ‎e‏ ‎student = record‏ ‎Name: string[10];‏ ‎Id: integer;‏ ‎Age: integer;‏ ‎End;‏ ‎Arr_stu: array[1..10] of student;‏ 5: Ang stu;

صفحه 436:
از نوع آن تعریف شده است. ۱ مشابه ساختار ارایه جیزی عوض نشده است و فقط هر عنصر ارایه. یک رکورد می‌باشد که دارای سه فیلد مطابق جدول فوق می‌باشد. برای دسترسی به آرایه فوق داریم: ‎cnt‏ ‎S[1].age‏ S[2].name S[2].id 436

صفحه 437:
ب ب ب <ج ب ب << 1۳11[ ارسال ر کورد به زیربرنامه‌ها ید زا نیت ومع ور ‎Sg a‏ پارامترهای نتغیر و مقدار به زیربرنامه ارسال کرد. ولی نوع برگشتی ‎fi‏ نمىتوانة ا ز نوع رکورد باشد. یعنی حتماً باید از نوع ساده نظیر ‎..g integer. Char‏ اشد و از انواع ترکیبی نظیر رکورد. ‎eu‏ مجموعه و فایل نمی‌تواند باشد. اگر بخواهيم رکوردی را بصورت پارامتر به زیربرنامه ارسال كنيم, ابتدا بايد آنرا در 706 تعریف کرده و سپس ارسال شود وگرنه کامپایلر خطا صادر می‌کند. 437

صفحه 438:
Type Stu-rec = Record Name: string [10]; ID: integer; Age: record Day: integer; Month: integer; Year: integer; End; End; Stu serr=array[1..no] of ‏سک‎ و

صفحه 439:
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;

صفحه 440:
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. 440

صفحه 441:
>" << ااا تمرینات "برای گونه‌های حیوانات یک پارک نظیر پرندگان وحشی رکوردی شامل نام. دسته. محیط زندگی. سن بسازید. در نظر بگیرید که در پارک ۱۰۰ گونه از یک پرنده وحشی وجود دارد (راهنمایی: آرایه‌ای از رکورد با فیلدهای گفته شده بسازید). * برنامه‌ای بنویسید که برای نگهداری تاریخ به صورت روز. ماه و سال براى ‎٠٠١‏ سال بكار رود. در واقع به صورت تقویم باشد و جمله‌ای در مورد آن تاريخ را نكهدارى كنيد؟ (راهنمايى: آرايهاى 17 تابى از روز بهمراه آرایه‌ای از ۱۲ ماه و یک سال و یک رشته را به صورت يك ركورد در نظر گرفته سپس برای ۱۰۰ سال بصورت یک آرایه صدتایی در نظر بگیرید.) 441

صفحه 442:
١ ْ 14 ‏فصل‎ ‎(Files) Gut ‏هدفهاي كلي‎ * مفهوم فايل و انواع آن * موارد استفاده از فايلها

صفحه 443:
:دانشجو يس از مطالعه اين فصل بايد بتواند #" در برنامهداش از فايلها استفاده كند.. "" براى برنامههاى با دادههاى زياد از فايل استفاده كند.. * با فایلهای داده‌ای و بایزی برنامه‌نویسی کند. ‎at a‏ رت

صفحه 444:
برای ذخیره دائمی داده‌ها از ساختاری به نام فایل ‎ile)‏ استفاده مى كنيم. تاکنون همه عملیات لازم در حافظه اصلی انجام می‌گرفت که گذرا و فقط به زمان اجرای برنامه و روشن بودن کامپیوتر بستگی داشت. ولی در فایلها چنین نیست. بلکه داده‌ها در فایلهایی قرار دارند که حتی بعد از خاموش کردن کامپیوتن بعدها قابل دسترسی است.

صفحه 445:
EEE EEE << << "> (Text) io sb * یک فایل متتی از تعداد کاراکتر تشکیل شده است که با یک اسم در روی دیسک ذخیره شده است. چون فایل از نوع متنی است می‌توانید داده‌های داخل آنرا مشاهده کنید. ساختار داده‌ها در یک فایل متنی بدین صورت است که تعدادی خط وجود دارد كه به علامت 801-17 ختم مىشوند و در انتهاى فايل نيز علامت "18001 قرار دارد. طول خطوط نامشخص است و اندازه فايل ممكن است بسيار بزرك يا كوجك و يا تهى باشد.

صفحه 446:
نعويف يك متغير فايلى ‎١١‏ ‏نسبت دادن اسم فایل به متفیر فایلی ۷ 6۷30 ایجاد فایل با دستور .۳

صفحه 447:
Name : Text; نسبت دادن اسم فایل به متفیر فایلی Assign(FileVar , ‘NamefFile’ } ‏ایجاد فاپل با دستور‎ © Rewrite( FileVar 447 )

صفحه 448:
۰ ‏مجموع آنها را بنویسد.‎ : 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.

صفحه 449:
Writeln (f, A[il); Writeln (f, Sum); Close (f); End. بعد از نوشته شدن اطلاعات در فایل . فایل باید بسته شود برای اینکار از : روال زیر استفاده می شود Close(FileName)

صفحه 450:
تعییف یک متفیر فایلی ۱۰ نسبت دادن اسم فایل به متغیر فایلی ۲۰ باز کردن فایل برای خواندن پا .۳ 1 دستور

صفحه 451:
ستور 13680 و 1362011۳ برای خواندن اطلاعات از فایل بکار می روند . 7 بعد از خولندن‌دادههای‌مورد نسظر بسه سطر بسعد میرود. لین‌عمل ای 1038010 نیز چنین می‌باشد. ولی قبل از استفاده از اين دستورات بايد ایل متنی برای خواندن یا نوشتن باز شود. دستور 36596 فایل متنی را برای خواندن باز می‌کند و مکان نما را ابتدای فایل می‌برد. ستور 1*6۲0۲1:6 فایل متنی را برای نوشتن در آن باز كرده. و مکان نما را به 451 اتداى أن ميرف

صفحه 452:
f: Text; str1, str2: string; a, b, c, d, e: integer; gin Assign (f, ' Test. dat '); Reset (f); ReadIn (f, str1); Readln (f, a, b, c); Readln (f, d, e, str2); Write (str2, ':', a+ b+ c+ d+ e); Close (f); 452

صفحه 453:
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) 0 rewrite(f2);

صفحه 454:
در این برنامه ابتدا دو فایل به نامهایشان نسبت داده می‌شوند و ترتیب برای خواندن و نوشتن باز می‌شوند. سپس توسط 60 شرط خاتمه فایل ورودی یعنی 81 بررسی می‌شوند و در یک حلقه تو در تو ۷۷10116 شرط خاتمه خطوط نیز توسط 60139 بررسی شده و کاراکترها از فایل ورودی خوانده شده و در فایل خروجی نوشته می‌شوند. 454

صفحه 455:
begin while not eoln(f1 ) do begin read(f1,ch); write(f2,ch); end; readIn(f1); writeln(f2); end; Close(f1); Slose(f2); End.

صفحه 456:
EE EE EEE EE ‏موممئي‎ ‎(Binary & Typed) ,to€53 9 ‏فايلهاي دودوبي‎ ** ن نوع فایل‌ها در زبان پاسکال از تایبهای مختلف 3729, 1600۲0 نل 122161©1, 620 و ... تشكيل شده است كه نياز به يردازش متنوء بیه مرتب‌سازی. جستجو. حذف ‎nung‏ دارند. این فایلها پس از ایجاد توسط رنامه. قابل رؤيت توسط ویراشگرها نیستند. بلکه به صورت کدهای اسکی می‌باشند یعنی دودویی می‌باشند. نحوه دسترسی به اطلاعات آنها نیز به cw! (Random) ‏سورت تصادفى‎ 456

صفحه 457:
نعويف يك متغير فايلى ‎١١‏ ‏نسبت دادن اسم فایل به متفیر فایلی ۷ 6۷30 ایجاد فایل با دستور .۳

صفحه 458:
Name: File Of FileType ; نسبت دادن اسم فایل به متفیر فایلی Assign(FileVar , 'N File’ ‏ایجاد فاپل با دستور ات‎ © Rewrite( FileVar 458 )

صفحه 459:
Const n=100; Type Student = Record Name: string[10]; Family: String[15]; Age: integer; ID: integer; end; Sarray = Array [1..n] of student; 459

صفحه 460:
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,

صفحه 461:
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; 4siClose (Bf); + oo

صفحه 462:
در جدول صفحه بعد تمام روالهای کتابخانه‌ای پاسکال جهت کار با فایلها آورده شده است که به همراه توضیحات لازمه جهت کار با آنها می‌باشد. همچنین برای هر تابع و رویه محل مورد استفاده آن در ستونی مشخص شده است . 462

صفحه 463:

صفحه 464:
x ۱ شماره رکورد 7 انتهاي فایل تعداد ‎ee‏ جاري را | حذف يك رکورد از انتهاي فایل وگ 17

صفحه 465:
>, ‏مثال های حل شده‎ * ‏مثال : برنامه‌ای بنویسید که تعداد خطوط یک فایل متنی را باست. آورف‎ Var F: text ; ch: char, str: string[20]; count: integer; Begin Write (‘Enter the file name: Readln(str); Assign(f,str); Reset(f);

صفحه 466:
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. 466

صفحه 467:
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;‏ بون

صفحه 468:
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.

صفحه 469:
پگ « 5 ‎Ww‏ تمرینات *برنامه‌ای بنویسید که از یک فایل متنی از اعداد حقیقی که در سطرها و ستونها مختلف قرار دارند. میانگین داده‌ها را بدست آورده و در مانیتور چاپ کند. *برنامه‌ای بنويسيد كه در انتهای یک فایل متنی. همان فایل متنی را اضافه کند. " برنامهاى بنويسيد که در یک فایل نوع دار از کاراکترهاء اطلاعات آماری هر کاراکتر را بدست آورده. یعنی تعداد هر کاراکتر را بدست آورد. مثلاً کاراکتر 8 به تعداد 40 تا و کاراکتر "13" به تعداد ۳۹ تا و...

صفحه 470:
* مفهوم و تعریف الگوریتم ° مفهوم کارایی یک الگوریتم * مرتبه یک الگوریتم ee ~ ۱

صفحه 471:
:دانشجو پس از مطالعه این فصل باید بتواند "" پرنامه خود را تحلیل زمانی نماید. * مرتبه الگوریتم را بدست آورد. * الگوریتمهای بازگشتی را تحلیل نماید.

صفحه 472:
تحلیل یک الگوریتم یعنی ارزیابی روشهای مختلف حل آن مسئله. بررسی و محاسبه بهترین و بدترین حالتهاء بصورتی که با توجه به شرایط بهترین حالت را بتوان انتخاب کرد. الگوریتم در واقع تعداد محدودی از دستورالعملها می باشد که بترتیب اجرا می‌شوند و هدف خاصی را دنبال می‌کنند

صفحه 473:
** تعریف مرتبه یا پيچيدگي الگوریتم ( 0 بزرگ) براي بدست آوردن بدترین حالت اجراي يك الگوریتم یا مرتبه پيچيدگي الگوریتم از 0 بزرگ استفاده مي‌کنيم و بنا به تعریف عبارتست از ((00(<0))0؟ و ‎no‏ خوانیم ()] از مرتبه 620 مي‌باشد, اگر و تنها ‎Ac> 0, Vn > n0= f(x)<cg(x) ‎—

صفحه 474:
n>=3 <= cg(n)=In+2A(n) لذا می‌توان گفت. پیچیدگی زمانی (610] از مرتبه ‎O(n)‏ می‌باشد.

صفحه 475:
‎EEE EEE << << ">‏ * بدست آوردن مرتبه الکوریتمها برای بدست آوردن مرتبه اجرای الگوریتمها باید به دقت بررسی شود و تعداد تکرار آن الگوریتم بدست آورده شود. یعنی در واقع تعداد تکرارها بدست آورده شود و سپس با هم جمع شده و مطابق مثالهای قبلی به پیچیدگی زمان واقعی رسید. برای این منظور از الگوریتمهای ساده شروع کرده و به پیچیده ‏می‌رسیم.

صفحه 476:
x:= 0; For I:=1 ton do :=x+1; که در آن « تعداد ورودی می‌باشد. یعنی حلقه 601 بستگی به پارامتر 9 دارد. همان طور که از تعریف حلقه 50۲ برمی‌آید تعداد 11-۱+۱ تکرار یعنی 1 تسکرار یجود دارد و لنا قطعه برنامه فوقاز مرتبه(6()10 مریاشد تسس ‘Croup

صفحه 477:
Function fact ( n: integer integer ; var f,i: integer; begin f:=1, for I:=1 to n do f:=f*i; fact:=f; end; سس ‘Croup ‏مس‎ ee

صفحه 478:
تابع فوق فاکتوریل عدد « را بر می‌گرداند. همانطور که می‌بینید تابع شامل یک حلقه 701 ساده بوده که از یک تا 9 متغیر بوده و لذا ‏ بار تکرار می‌شود ۲ جمله ساده نیز وجود دارد که زمان های ثابتی دارند براین مرتبه تابع بالا برابر است با 0)

صفحه 479:
۲ پیچیدگی زمانی توابع زیر را بدست آورید: 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)! 479

صفحه 480:
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; 4est: =x; Cra

مبانی کامپیوتر مولفین : جعفر تنها – مهدی یوسف خانی :ارائه دهنده جعفر تنها 1 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group اهداف كلي این درس :دانشجو پس از مطالعه اين درس بايد بتواند الگوریتمی برای حل مسئله ارائه دهد اصول و مبانی اولیه نرم افزار و سخت افزار را بشناسد اهداف و مفا هیم زبان های برنامه نویسی را بداند مفاهیم اولیه برنامه نویسی ساخت یافته را بداند و اصول الزم را در مرحله اجراء بکار ببرد دستورات زبان پاسکال را در برنامه ها بکار ببرد استفاده از توابع و روال های استاندارد زبان پاسکال در صورت لوزم 2 نماید • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group •از توابع ،روال ها برای جدا کردن قطعات برنامه استفاده کند •فایل ها را به عنوان محلی برای ذخیره داده ها در برنامه استفاده کند •با استفاده از قابلیت های زبان پاسکال برنامه ای را برای یک سیستم بنویسد. 3 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group جایگاه این درس در رشته مهندسی کامپیوتر این درس اولین درس دانشگاهی رشته می باشد و نقطه شروعی برای ورود به دنیای جالب برنامه نویسی و علم و فن کامپیوتر هست .بنابراین یاد گیری .اصول اولیه برنامه نویسی در این درس از جایگاه ویژه ای برخوردار است این درس پایه و اساس برنامه نویسی که جزء اصول این رشته می باشد را به .فرگیران یاد می دهد بنابراین یادگیری دقیق این درس به همراه ارائه پروژه های عملی که الزمه این .درس می باشد جزء اهم مسائل می باشد 4 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group طرح درس :توصیه می شود این درس در بیست جلسه بصورت ذیل ارائه شود بخش اول (:در پنج جلسه ) اهداف درس و فصل اول و دوم کتاب درسی :بخش دوم :جلسه ششم :جلسه هفتم فصل سوم کتاب درسی فصل چهارم کتاب درسی 5 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group :جلسه هشتم :جلسه نهم فصل پنجم کتاب درسی فصل ششمکتاب درسی :جلسه دهم و یازدهم فصل هفتم کتاب درسی :جلسه دوازدهم :جلسه سیزدهم فصل هشتم کتاب درسی فصل نهم کتاب درسی 6 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group :جلسه چهاردهم فصل دهم کتاب درسی :جلسه پانزدهم و شانزدهم فصل یازدهم کتاب درسی :جلسه هفدهم فصل دوازدهم کتاب درسی :جلسه هیجدهم فصل سیزدهم کتاب درسی :جلسه نوزدهم فصل چهاردهم کتاب درسی 7 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group :جلسه بیستم فصل پانزدهم کتاب درسی و ارائه پروژه نهائی درس 8 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group فصل 1 الگوریتم ها Algorithm هدفهاي كلي شناخت حل مسئله و ارائه الگوریتم شناخت اجزاء الزم برای حل مسئله بررسی صحت الگوریتم 9 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group هدفهاي رفتاري :دانشجو پس از مطالعه اين فصل بايد بتواند ‏ الگوریتمی را برای حل مسئله ارائه دهد. ‏ الگوریتم های مختلف برای یک مسئله را مقایسه کند. ‏ شرط ها و حلقه ها را در الگوریتم بکار ببرد . 10 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group مقدمه در زندگي روزمره ،انسان با مسائل مختلفي روبروست و براي هر كدام از اين مسائل (حل مشكالت) راه حلي و روشي را بر مي‌گزيند. مسائلی از قبيل راه رفتن ،غذا خوردن ،خوابيدن و غيره كه بشر تقريبًا هر روز آنها را پيش روي خود دارد. همه اين مسائل نياز به روشي براي حل كردن دارند مثال راه رفتن بايد با ترتيب خاصي و مراحل معيني انجام شود .تا مسئله راه رفتن براي بشر حل شود .اصطالحًا روش انجام كار يا حل مسئله را الگوريتم آن مسئله مي‌نامند 11 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group تعريف الگوريتم الگوريتم مجموعه‌اي از دستورالعمل ها ،براي حل مسئله مي‌باشد كه شرايط زير را بايد دارا باشد: • دقيق باشد • جزئيات كامل حل مسئله را داشته باشد. پايانپذير باشد. • ‌ 12 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group مراحل الگوريتم براي حل يك مسئله بايد الگوريتم آن مسئله را مشخص كنيم (يا بيابيم) .كه اصطالحًا طراحي الگوريتم براي آن مسئله ناميده مي‌شود .در طراحي الگوريتم معموًال سه مرحله زير را از هم جدا مي‌كنند: •خواندن داده‌ها •انجام محاسبات •خروجي‌ها 13 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group مثال :الگوريتمي بنويسيد كه دو عدد از ورودي دريافت كرده مجموع دو عدد را محاسبه و چاپ نمايد. خروجي‌ها مجموع دو عدد انجام محاسبات جمع دو عدد وروديها ‏a , b 0ـ شروع 1ـ b ,aرا بخوان. 2ـ مجموع b , aرا محاسبه و در sumقرار بده. 3ـ sumرا در خروجي چاپ كن 4ـ پايان 14 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group مثال :الگوريتمي بنويسيد كه سه عدد از ورودي دريافت كرده مجموع و ميانگين .سه عدد را محاسبه و چاپ كند ‏c چاپ مجموع چاپ ميانگين خروجيها ‌ محاسبه مجموع محاسبه ميانگين انجام محاسبات ‏a ‏b وروديها 0ـ شروع 1ـ سه عدد از ورودي بخوان 2ـ مجموع سه عدد را محاسبه و در sumقرار بده. 3ـ sumرا بر سه تقسيم كرده،در aveقرار بده. 4ـ ave , sumرا در خروجي چاپ كن. 5ـ پايان. 15 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group معموال درك يك الگوريتم با شكل راحتر از نوشتن آن بصورت متن ميدهند. ميباشد .لذا الگوريتم را با فلوچارت( ) flowchartنمايش ‌ ‌ ميشود. شكلهاي زير تشكيل ‌ ‌ فلوچارت از ‏ ميكنند: عالمتهاي شروع و پايان :كه معموال از يك بيضي استفاده ‌ ‌ ‏End ‏Begin ميشود: متوازياالضالع استفاده ‌ ‌ ‏عالمتهاي ورودي و خروجي :كه معموال از چاپ کردن write خواندن یا ‏Read 16 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group عالمتهاي محاسباتي و جايگزيني :براي نمايش دستورات جايگزيني و محاسباتي از مستطيل استفاده مي‌كنند: جایگزین یا محاسبات •عالمت شرط :براي نمايش شرط از لوزي استفاده مي‌شود. •عالمت اتصال :براي اتصال شكل‌هاي مختلف بهم از فلش‌هاي جهت‌دار استفاده مي‌كنند. 17 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group • فلوچارت مجموع سه عدد Begin Read(a,b,c) Sum a+b+c Ave sum/3 Write(sum,ave) End 18 • گروه آموزشی مهندسی ایران Iranian Engineering Group مثال :فلوچارتی رسم نمائيد كه دو عدد از ورودي دريافت كرده سپس محتويات دو عدد را با هم جابجا ‌نمايد. راي حل اين مسئله b , aرا دو متغير كه در آنها دو عدد خوانده شده، قرار مي‌گيرند در نظر مي‌گيريم .سپس با استفاده از يك متغير كمكي محتويات اين دو عدد را جابجا مي‌كنيم : 19 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group a temp 12 b a b 15 12 15 temp 12 temp 20 a b a b 15 15 15 12 • گروه آموزشی مهندسی ایران Iranian Engineering Group 12 12 temp temp فلوچارت مسئله باال بصورت زير خواهد بود: Begin Read(a,b) temp a a b b temp Write(a,b) 21 • گروه آموزشی مهندسی ایران Iranian Engineering Group End تمرين 1ـ فلوچارتي رسم نمائيد كه طول و عرض مستطيل را از ورودي دريافت كرده محيط و مساحت آنرا محاسبه و چاپ كند. 2ـ فلوچارتي رسم نمائيد كه شعاع دايره‌اي را از ورودي دريافت كرده، محيط و مساحت آنرا محاسبه و چاپ نمايد. فلوچارتي رسم كنيد كه سه عدد Third , second, firstرا از ور يافت كرده ،محتويات آنها را جابجا نموده ،حاصل را در خروجي پ كند. 22 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group 4ـ فلوچارتي رسم نمائيد كه دو عدد از ورودي دريافت كرده ،سپس محتويات دو عدد را بدون استفاده از متغير كمكي جابجا كند. 5ـ فلوچارتي رسم نمائيد كه عددي (درجه حرارت برحسب سانتيگراد) را از ورودي دريافت كرده سپس آنرا به درجه فارنهايت تبديل كند. 23 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group  دستورالعملهاي شرطي ‌ در حل بسياري از مسائل يا تقريبًا تمام مسائل نياز به استفاده از شروط جزء ،نيازهاي اساسي محسوب مي‌شود .همانطور كه ما خودمان در زندگي روزمره با اين شرط‌ها سركار داريم .بطور مثال اگر هوا ابري باشد ممكن است چنين سخن بگوييم: • اگر هوا باراني باشد سپس چتري برمي‌دارم. در غير اينصورت چتر برنمي‌دارم. 24 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group در حالت كلي شرط را بصورت زير نمايش مي‌دهند: ‏yes عمل يا اعمال شرط یا شروط If ‏then ‏NO عمل يا اعمال بعدي 25 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group مثال :فلوچارتي رسم نمائيد كه عددي را از ورودي دريافت كرده ،فرد يا زوج بودن آن را تشخيص دهد. ‏Begin )Read(a ‏R ‏a mod 2 ‏yes )’Write(‘even ‏if R=0 then ‏No )’Write(‘odd ‏End 26 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group مثال :فلوچارتي رسم كنيد كه دو عدد از ورودي دريافت كرده بزرگترين عدد را پيدا كرده در خروجي چاپ نمايد. ‏Begin )Read(a,b ‏a ‏b ‏max ‏yes ‏max ‏if b>max ‏No )Write(max ‏End 27 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group Begin مثال :فلوچارتي رسم نمائيد كه سه عدد از ورودي دريافت كرده ،كوچكترين عدد را يافته در خروجي چاپ نمايد: )Read(a,b,c ‏a ‏b ‏max ‏yes ‏min ‏if b<min then ‏No ‏c ‏min ‏yes ‏if c<min then ‏No )Write(min ‏End 28 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group نمونه اجراي فلوچارت باال بصورت زير مي‌باشد: ‏c ‏Min 12 1 2 12 3 11 4 11 5 11 11 ‏a ‏b 17 خروج 11 29 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group تمرين -1فلوچارتي رسم كنيد که عددي را از ورودي دريافت كرده ،قدر مطلق عدد را در خروجي چاپ كند. -2فلوچارتي رسم نمائيد كه عددي از ورودي دريافت كرده مثبت ،منفي يا صفر بودن عدد را تشخيص داده ،در خروجي با پيغام مناسب چاپ كند. -3فلوچارتي رسم نمائيد كه عددي را از ورودي دريافت كرده ،بخشپذيري آن بر 3و 5را بررسي نمايد. 4ـ فلوچارتي رسم نمائيد كه ضرايب يك معادله درجه دوم را از ورودي ريشههاي آن را محاسبه در خروجي چاپ كند. ‌ دريافت كرده، 30 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group حلقه‌ها در حل بسياري از مسائل با عملياتي روبرو مي‌شويم ،كه نياز به تكرار دارند و عمل تكرار آنها به تعداد مشخصي انجام مي‌گيرد .فرض كنيد، بخواهيم ميانگين 100عدد را محاسبه كنيم ،در اينصورت منطقي بنظر نميرسد كه 100متغير مختلف را از ورودي دريافت كنيم سپس آنها را ‌ جمع كنيم. 31 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group • انواع حلقه ها • حلقه های با تکرار مشخص • حلقه های با تکرار نا مشخص 32 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group • حلقه های با تکرار مشخص در اين نوع حلقه‌ها تعداد تكرار مشخص مي‌باشد اين حلقه از اجزاء زير تشكيل مي‌شود: 1ـ انديس حلقه 2ـ مقدار اوليه براي انديس حلقه -3مقدار افزاينده براي انديس حلقه (معموال يك واحد در هر مرحله) 4ـ مقدار نهايي (تعداد تكرا حلقه) 5ـ شرطي براي كنترل تعداد تكرار حلقه 33 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group اين حلقه‌ها را غالبًا با فلوچارت بصورت زير نمايش مي‌دهند: 1 اتمام كار حلقه ‏No ‏i ‏if i<=n ‏yes مجموعه دستورات حلقه ‏i+1 ‏i 34 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group مثال :فلوچارتي رسم نمائيد كه عدد nرا از ورودي دريافت كرده، مجموع اعداد از يك تا nرا محاسبه كند. ‏n ‏i مقدار نهايي انديس حلقه 35 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group Begi n Read(n) I sum 1 0 if I<=n End sum 36 Write(sum) yes حلقه • گروه آموزشی مهندسی ایران Iranian Engineering Group No I sum+I I+1 نمونه اجراي فلوچارت باال بصورت زير است: ‏I ‏sum 1 2 3 4 5 6 7 5 ‏N 1 0 2 3 4 5 6 خروجي 15 1 3 6 10 15 37 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group مثال :فلوچارتي رسم كنيد كه nعدد از ورودي دريافت كرده، بزرگترين مقدار از بين nعدد را پيدا كرده در خروجي چاپ نمايد. انديس حلقه مقدار نهايي ‏i ‏n بزرگترين مقدار ‏Max 38 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group Begin Read(n) I max 2 a No if i<=n then write(max) yes End Read(a) حلقه yes if a > max No 39 • گروه آموزشی مهندسی ایران Iranian Engineering Group i i+1 max a مثال :فلوچارتي رسم نمائيد كه ، n , xدو عدد صحيح مثبت را از ورودي دريافت كرده سپس xبه توان nرا محاسبه كند. • انديس حلقه • مقدار نهايي • عدد به توان pown ‏i ‏n 40 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group Begin Read(n,x) i pow 1 1 if i<=n then No write(pow) yes حلقه 41 •گروه آموزشی مهندسی ایران Iranian Engineering Group pow i pow*x i+1 End  حلقههايي كه تعداد تكرار آنها مشخص نيست ‌ (در پاسكال به حلقه whileمشهورند). در اين حلقه‌ها با توجه به ورودي ،تعداد تكرار مشخص مي‌شود .و دقيقًا نميتوان تعداد تكرار حلقه را بدون ورودي معين كرد .اين حلقه ها فقط ‌ شامل شرطي هستند كه تا زمانيكه برقرار باشد حلقه اجرا مي‌شود. 42 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group ميشوند: حلقهها بصورت زير نمايش داده ‌ ‌ در حالت كلي اين نوع ‏No شرط يا شروط If ‏yes محموعه دستورالعملها و جاگزينها 43 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group مثال :فلوچارتي رسم كنيد كه عددي را از ورودي دريافت كرده سپس تعداد ارقام آن را شمرده در خروجي چاپ نمايد. • عدد خوانده شده • تعداد ارقام ‏N ‏count 44 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group Begi n count 0 Read(N) if N>0 then No write(count) yes N N div 10 حلقه count 45 • گروه آموزشی مهندسی ایران Iranian Engineering Group count+1 End مثال :فلوچارتي رسم نمائيد كه عددي از ورودي دريافت كرده ،سري فيبوناچي قبل از آنرا توليد نمايد. در حالت كلي جمالت سري بصورت: عدد خوانده شده جمله اول سري ‏fk=fk-1+fk-2 ‏N ‏f1 جمله دوم سري ‏f2 جمله سوم سري ‏f3 46 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group Begin F1 0 f2 1 Read(N) f3 f1+f2 if f3>N then yes write(f3) حلقه 47 • گروه آموزشی مهندسی ایران Iranian Engineering Group f1 f2 f3 f2 f3 f1+f2 No End تمرين -1فلوچارتي رسم نمائيد كه عددي از ورودي دريافت كرده ،كامل بودن عليههاي آنرا بررسي نمايد( .عدد كامل ،عددي است كه مجموع مقسوم‌ ‌ آن با خودش برابر باشد). -2فلوچارتي رسم كنيد كه Nرا از ورودي دريافت كرده N ،جمله سري فيبوناچي را توليد نماید. 3ـ فلوچارتي رسم نمائيد كه دو عدد N , Mرا از ورودي خوانده، بزرگترين مقسوم‌عليه مشترك دو عدد را محاسبه و چاپ كند. 48 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group حلقه‌هاي تودرتو الگوريتم‌هايي كه تا حال بكار برديم ،فقط شامل يك حلقه بودند. در صورتي كه در بسياري از مسائل ممكن است نياز به استفاده از چند حلقه در داخل هم باشيم .در اين نوع حلقه‌ها بايد دقت بيشتري به خرج دهيم ،تا مشكلي پيش نيايد .اگر از حلقه‌هاي نوع اول بصورت تودرتو استفاده كنيم در اينصورت براي هر حلقه شرط نهايي و انديس اوليه جداگانه بايد تعريف كنيم . 49 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group حلقههاي تودرتو به ازاي يكبار تكرار حلقه اوليه ،حلقه داخلي به اندازه در ‌ ميشود .در كل اگر حلقه اوليه nبار تكرار شود و مقدار نهايي خود تكرار ‌ حلقه داخلي mبار ،در اينصورت كل حلقه : ‏nm بار تكرار خواهد شد. 50 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group فلوچارت حلقه‌هاي تودرتو را مي‌توان بصورت زير نشان داد: 1 ‏i . . . ‏A اتمام كار حلقه هاي تو در تو ‏No ‏if i<=n then ‏yes 1 مجموعه دستورات و جايگزيني ها ‏No ‏j ‏if j<=m then ‏yes ‏i ‏i+1 ‏A حلقه مجموعه دستورات و جايگزيني ها ‏j+1 ‏j 51 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group مثال :فلوچارتي رسم نمائيد كه Nرا از ورودي دريافت كرده ،مجموع سري زير را محاسبه نمايد: ‏N !N ‏ .... 3 !3 • انديس حلقه اول I • ورودي N • محاسبه فاكتوريل fact ‏j • انديس حلقه داخلي • مجموع Sum ‏S 1  2 !2 ‌ 52 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group i 2 sum 1 Read(N) A No if i<=N Write(sum) yes End fact j 1 2 if j<=i No sum sum+i/fact yes fact 53 •گروه آموزشی مهندسی ایران Iranian Engineering Group j fact*j j+1 i i+1 A تمرينات آخر فصل -1فلوچارتي رسم نمائيد كه Nعدد از ورودي دريافت كرده تعداد اعداد اول و كامل را شمرده در خروجي چاپ نمايد. -2فلوچارتي رسم نمائيد كه N , Xرا از ورودي خوانده مقدار سري زير را محاسبه كند: ‏xn !N ‏ .... ‏x4 !4 ‏ ‏x2 !2 ‏S 1 54 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group -3فلوچارتي رسم نمائيد كه عددی را از ورودي دريافت كرده مقلوب عدد را محاسبه و در خروجي چاپ كند. 4ـ فلوچارتي رسم كنيد كه تاريخ تولد شخصي را از ورودي خوانده، سن شخص را با تاريخ روز ،محاسبه نموده در خروجي چاپ كند. -5فلوچارتي رسم نمائيد كه ( N ,M )m>nرا از ورودي دريافت كرده سري فيبوناچي بين N ,Mرا توليد كرده ،در خروجي چاپ كند 55 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group فصل 2 كاربرد آرايه ها در الگوريتم ها هدفهاي كلي شناخت آرایه ها و مفهوم آن شناخت الگوریتم های الزم برای جستجو و مرتب سازی مقایسه انواع روش های جستجو با هم 56 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group هدفهاي رفتاري :دانشجو پس از مطالعه اين فصل بايد بتواند ‏ از آرایه ها در حل مسئله استفاده کند . ‏ با استفاده از آرایه ها لیستی را مرتب نماید . ‏ در صورت لزوم در لیستی جستجو انجام دهد . 57 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group مقدمه فرض كنيد بخواهيم اطالعات 100كارمند را از ورودي بخوانيم و سپس آنها را مرتب كنيم ،در اينصورت بايد وروديها را در جايي از حافظه ذخيره كنيم .در زبانهاي برنامه‌نويسي معموال از آرايه براي ذخيره اطالعات در حافظه استفاده مي‌كنند .در آرايه‌ها ما با توجه به تعداد وروديها ،طول آن را مشخص مي‌كنيم .سپس داده‌ها را خوانده در آن قرار مي‌دهيم. 58 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group تعريف آرايه خانههاي پشت سر هم از حافظه ،كه همنوع بوده و توسط يك اسم معرفي ‌ ميشوند ،آرايه نام دارد. ‌ نحوه دسترسي به هر يك از اعضاء آرايه ،از طريق انديس آرايه امكانپذير است .براي تعريف آرايه ابتدا طول آرايه كه در حقيقت تعداد خانه‌هاي آن را مشخص مي‌كند ،معين مي‌كنيم .سپس نوع خانه‌ها بايد معين شوند. در فلوچارت‌ها آرايه‌ها را بصورت زير نمايش مي‌دهيم: ] Name[ 1 .. Length طول آرايه اسم آرايه 59 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group براي خواندن يك آرايه از ورودي از حلقه‌ها استفاده مي‌كنيم .فلوچارت خواندن آرايه از ورودي بصورت زير مي‌باشد: ]a[1..100 1 ‏No ‏i ‏if i<=100 ‏yes )]Read(a[i ‏i+1 ‏i 60 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group با توجه به فلوچارت باال براي دسترسي به عنصر iام آرايه در حالت كلي بصورت : [ inde ‏Nam انديس آرايه اسم آرايه ميكنند. عمل ‌ مثال :فلوچارتي رسم كنيد كه يك آرايه حداكثر 100عنصري را از ورودي دريافت كرده ،سپس آن را خروجي نمايش دهد. 61 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group Begin a[1..100] i 1 Read(N) if i<=N No i 1 yes if i<=N Read(a[i]) yes i i+1 write(a[i]) i 62 • گروه آموزشی مهندسی ایران Iranian Engineering Group i+1 No End مثال :فلوچارتي رسم كنيد كه عددي را از ورودي دريافت كرده آن را به مبناي 2ببرد. ‏i ‏i-1 ‏No ]a[1..20 ‏i 1 )Read(N ‏if N>0 ‏yes ‏End ‏No ‏N mod 2 ‏i+1 ‏if i >0 ]a[i ‏i ‏yes )]write(a[i ‏i-1 ‏N div 2 ‏N ‏i 63 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group مثال :فلوچارتي رسم نمائيد كه عددي از ورودي دريافت كرده سپس اعداد اول قبل از آن را توليد نموده ،در يك آرايه قرار دهد. ]a[1..100 ‏i 1 )Read(N 3 2 1 ‏k ]a[1 ]a[2 64 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group A if i<=N No i yes j k 2 0 if j<=i div 2 write(a[i]) No if k=0 yes No i i+1 yes if I mod j = 0 No 65 • گروه آموزشی مهندسی ایران Iranian Engineering Group End yes i j No if i<k 1 j+1 k 1 A i+1 yes a[k] k i k+1 جستجو و مرتب سازي ( ) search and sort يكي از مسائلي كه در بحث طراحي الگوريتم بسيار مهم است ،بحث مرتب‌سازي و جستجو مي‌باشد .منظور از جستجو اينست كه يك مقداري را از يك ليست جستجو كنيم و منظور از مرتب‌سازي اينست كه يك ليست مرتب از داده‌ها را توليد كنيم. براي جستجو و مرتب‌سازي الگوريتم‌هاي مختلفي وجود دارد در زير الگوريتم‌های اوليه ،براي جستجو و مرتب‌سازي را بررسي مي‌كنيم. 66 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group الگوریتم های جستجو ( )search دو الگوريتم زير غالبًا براي جستجو بكار مي‌روند: •جستجوي خطي linear search •جستجوي دودوئی binary search 67 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group • جستجوي خطي linear search در جستجوي خطي عبارت مورد جستجو را به ترتيب با اولين ،دومين و … عنصرآرايه مقايسه مي‌كنيم اگر عنصر مورد جستجو پيدا شد اندیس آن را نمايش مي‌دهيم. 68 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group list[1..100] i 1 index 0 falg 0 :فلوچارت جستجوي خطي بصورت زير است i Read(x) 1 No if (i<=N) and (flag=0) write(index) End yes if list[i]=x 69 • گروه آموزشی مهندسی ایران Iranian Engineering Group i i+1 yes index flag i 1 • جستجوي دودوئی binary search در جستجوي دودوئی ،ليست مورد جستجو ،مرتب مي‌باشد .لذا براي جستجو اعمال زير انجام مي‌شود: -1عنصر Xبا عنصر وسط آرايه كه انديس آن برابر (low+high)/2 ‏middle مقايسه مي‌شود. 70 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group 2ـ اگر xاز عنصر وسط كوچكتر باشد ،عنصر مورد نظر احتماًالدر قسمت باالی ليست قرار دارد .لذا آرايه با انديس ،جديد در نظر گرفته مي‌شود و قسمت پايين ليست از فضاي جستجو حذف مي‌شود. 3ـ اگر xاز عنصر وسط آرايه بزرگتر باشد قسمت باالي ليست حذف ميشود و فضاي جستجو ،قسمت پايين آرايه خواهد بود. ‌ -4اگر xبرابر عنصر وسط باشد عمل جستجو خاتمه مي‌پذيرد. 71 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group مرتب سازي () sort مرتب‌سازي بحث بعدي اين فصل مي‌باشد .براي مرتب كردن داده‌ها نيز الگوريتمهاي مختلفي وجود دارد ،كه هر كدام مزايا و معايب خاص خود ‌ فصلهاي بعد واگذار مي‌كنيم. ‌ را دارد .بحث مفصل در اين مورد را به 72 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group تمرين •فلوچارتي رسم نمائيد كه عددي از ورودي دريافت كرده ،اعداد كامل قبل از خود را توليد و در يك آرايه قرار دهد. •فلوچارتي رسم نمائيد كه يك آرايه حداكثر 100عنصري از ورودي دريافت كرده ،عناصري از آن كه اول هستند را با صفر كردن حذف نمايد. •فلوچارتي رسم نمائيد كه يك عدد حداكثر 20رقمي را توسط آرايه‌اي از ورودي دريافت نمايد .سپس يك عدد تک رقمي را از ورودي خوانده در عدد 20رقمي ضرب نموده ،حاصل را در خروجي چاپ نمايد. 73 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group فصل 3 كامپيوترباآشنايي هدفهاي كلي شناخت كامپيوترهاي نسل قديم و امروزي سختافزارهاي الزم براي كامپيوترهاي شخصي ‌ شناخت نرمافزارها و انواع آن بررسي ‌ 74 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group هدفهاي رفتاري :دانشجو پس از مطالعه اين فصل بايد بتواند ‏ كامپيوترهاي نسل جديد را با كامپيوترهاي نسل قديم مقايسه كند. ‏ سختافزارهاي الزم براي كامپيوترهاي شخصي را بشناسد. ‌ ‏ انواع حافظه ،مزايا و معايب آنها را شناخته و با هم مقايسه نمايد. ‏ سيستم عامل و انواع آن را مقايسه نمايد. ‏ برنامهنويسي را تعريف كند. ‌ نرمافزار و زبانهاي ‌ 75 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group كامپيوترهاي قديمي اولين كامپيوتر بزرگ ( )Super Computerهمه منظوره ديجيتال الكترونيك ،تحت عنوان ENIACدر سال 1946ميالدي در دانشگاه پنسيلوانيا ساخته شد .اين كامپيوتر با سرمايه ارتش آمريكا طراحي شد .وزن اين كامپيوتر 30تن و ابعاد آن 30×50فوت بود. اين كامپيوتر براي محاسبه جدول پرتابه‌ها ،پيش‌گويي وضع آب و هوا و محاسبات انرژي اتمي بكار مي‌رفت. 76 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group در كامپيوترهاي اوليه از المپهاي خالء بعنوان عنصر الكترونيكي پايه استفاده مي‌كردند .در اين ماشين‌ها 19000المپ خالء استفاده شده بود و براي انرژي مصرفي المپ‌ها و همچنين دستگاههاي تهويه و خنك‌كننده ماشين حدود kw 130انرژي الكتريكي مصرف مي‌شد. اين ماشين‌ها داراي حجم زيادي بودند و سطحي را معادل 9015 مترمربع اشغال مي‌كردند .اين كامپيوترها به كامپيوترهاي نسل اول معروف شدند. 77 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group كامپيوترهاي امروزي كامپيوترهاي امروزي با بكارگيري ريزپردازنده به كامپيوترهاي نسل چهارم معروفند .البته نسل‌هاي جديد ديگر كامپيوترها نيز .به بازار ارائه مي‌شود در كامپيوترهاي امروزي سرعت‌ پردازش‌ بسيار باال ،حجم‌ اجزاء سخت‌افزاري بسيار كوچك ،حجم حافظه باال و غيره .آنها را از نسل هاي ديگر متمايز مي‌سازد 78 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group :اجزاء تشکيل دهنده کامپيوتر عبارتند از سخت افزار نرم افزار 79 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group سخت افزار ‏Out put ‏process خروج ي پرداز ش ‏Input ورود ي 80 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group كامپيوترهاي امروزي معموًال از قطعات زير تشكيل مي‌شوند: • • • • • دستگاههاي ورودي حافظه‌هاي جانبي حافظه‌هاي اصلي واحد پردازشگر مركزي دستگاههاي خروجي 81 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group نرم افزار نرم‌افزار يكي از بخش‌هاي اساسي كامپيوتر به شمار مي‌آيد ،كه در واقع سخت‌افزار را بكار مي‌گيرد .بعبارت ديگر رابط بين كاربر و سخت‌افزار را نرم‌افزار مي‌نامند .نرم‌افزار در حقيقت روح و جان يك كامپيوتر است ،كه به سخت‌افزار هويت مي‌بخشد. 82 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group نرم افزار سيستم عامل • سيستم عامل ( )OS: Operating Systemمشهورترين نوع نرم‌افزارهاي سيستمي مي‌باشد .كه مديريت منابع سيستمي را بر عهده دارد .سيستم‌عامل ،همچنين ارتباط بين كاربر و اجزاء سخت‌افزاري و نرم‌افزاري ديگر را برقرار مي‌كند. 83 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group 84 • گروه آموزشی مهندسی ایران Iranian Engineering Group زبانهاي برنامه‌نويسي • نرم‌افزارها توسط زبانهاي برنامه‌نويسي نوشته مي‌شوند .زبانهاي برنامه‌نويسي ،يك سيستم ارتباطي هستند كه توسط آنها مي‌توان دستورات الزم را به ماشين انتقال داد. • هرزبان برنامه‌نويسي به مجموعه‌أي از عاليم ،قواعد و دستورالعمل‌ها گفته مي‌شود كه امكان ارتباط با كامپيوتر را جهت بيان كاري يا حل مسئله‌اي فراهم مي‌كند. 85 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group در حالت كلي زبانهاي برنامه‌نويسي را به سه دسته زير تقسيم‌بندي :مي‌كنند • زبانهاي سطح باال • زبانهاي سطح پايين • زبانهاي سطح مياني 86 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group كامپايلر برنامه نوشته در يك زبان سطح باال را به برنامه مقصد تبديل .مي‌كند ‏Object ‏program ‏Compil ‏er ‏Source ‏program 87 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group زبان Pascal در اين كتاب زبان پاسكال ( )Pascalرا براي آموزش و نوشتن برنامه‌ها انتخاب كرديم .اين زبان كه به افتخار بلز پاسكال دانشمند فرانسوي قرن هفدهم ميالدي ،پاسكال نامگذاري شده است ،در اواخر سال 1960و اوايل 1970توسط پروفسور نيكالس ويژت در انستيتو فني فدرال سوئيس مطرح گرديد 88 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group فصل 4 ساختار برنامه در زبان پاسکال هدفهاي كلي شناخت اجزاي تشكيل دهنده يك برنامه شناخت ساختار يك برنامه در زبان پاسكال بررسي دستگاههاي خروجي و دستورات الزم در زبان پاسكال براي توليد خروجي 89 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group هدفهاي رفتاري :دانشجو پس از مطالعه اين فصل بايد بتواند اجزاء الزم براي نوشتن برنامه در زبان پاسكال را بداند. ‏ يك شناسه صحيح در زبان پاسكال را تعريف كند. ساختار يك برنامه در زبان پاسكال و اعالنهاي مربوط به برنامه را تعريف نمايد. ‏ يك برنامه ساده به زبان پاسكال كه فقط خاصيت خروجي دارد ،بنويسد. 90 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group اجزاي تشکيل‌دهنده يک برنامه • کلمات ذخيره‌شده ( ) Reserved Words • شناسه‌ها ( ) identifier 91 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group کلمات ذخيره‌شده ( Reserved ) Words کلمات ذخيره شده ،کلماتي هستند که مترجم زبان آنها را مي‌شناسد و معناي خاصي براي زبان دارند .مترجم زبان به محض مشاهده اين کلمات اعمال خاصي را انجام مي‌دهد .هر زبان داراي تعداد مشخصي کلمات ذخيره شده مي‌باشد و اين تعداد قابل افزايش توسط برنامه‌نويس نيست. 92 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group ليست کلمات ذخيره شده در پاسکال عبارتند از: and shr exports mod asm file nil string array for not then begin function object to case goto of type concat if or unit constructor implementation packed until destructor in procedure uses div inherited program var do 93 inline record with downto interface repeat while • گروه آموزشی مهندسی ایران Iranian Engineering Group شناسه‌ها ( ) identifier • شناسه در پاسکال براي نامگذاري ثابتها ،تايپها ،پروسيجروها ،توابع، ميدانهاي يک رکورد ،برنامه و همچنين يونيت مورد استفاده قرار مي‌گيرد. 94 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group :در حالت کلي دو نوع شناسه وجود دارد id هاي استاندارد :اين نوع idها از قبل در زبان پاسکال تعريف برنامهها ،معناي خاصي دارند . ‌ شدهاند و در ‌ id هاي غيراستاندارد :اين نوع idها بوسيله کاربر بطور مجزا تعريف مي‌شوند و اصطالحًا به آنها userdefinedگفته مي‌شود. 95 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group ساختار برنامه در زبان پاسکال :اجزاء اصلي يک برنامه به زبان پاسکال بصورت زير مي‌باشد عنوان برنامه قسمت تعاريف برنامه قسمت دستور العملها 96 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group قسمت تعاريف برنامه Constant Declaration اعالن ثابتها Type Declaration اعالن انواع Declaration Variable اعالن متغيرها Declaration Label اعالن برچسبها 97 • گروه آموزشی مهندسی ایران Iranian Engineering Group • • • • درحالت کلي مي‌توان شکل يک برنامه در زبان پاسکال را بصورت زير بيان کرد: • • • • استفاده از کلمه ذخيره شده Programو اسم برنامه ( که مي‌تواند بکار برده نشود ) قسمت تعاريف شناسه‌ها بلوک اصلي برنامه که با Beginشروع و به Endهمراه نقطه ( ) .ختم مي‌شود. هر دستور در پاسکال به ( ; ) ختم مي‌شود. 98 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group :نمودارهاي يک برنامه و بلوک بترتيب به صور ت زير مي‌باشد 0 ‏block ; ( شناسه ) شناسه ‏Program , .End ‏Statement ‏Begin ; 99 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group خروجي ( ) Output مشهورترين دستگاههاي خروجي عبارتنداز: ‏Monitor ‏Printer ‏Terminale ‏Plotter صفحه نمايش چاپگر ترمينال رسام 100 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group مثال هاي حل شده Program Print ( output ) ; Begin Writeln ( ' Pascal Language '); Writeln ( ' Hello ' ); End. 101 • گروه آموزشی مهندسی ایران Iranian Engineering Group :خروجي برنامه باال بصورت زير مي‌باشد ‏Pascal Language ‏Hello 102 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group فصل 5 انواع عملگرها و داده‌ها در زبان پاسکال هدفهاي كلي معرفي انواع عملگرها در زبان پاسكال شناخت انواع داده‌ها بررسي اولويت عملگرها معرفي دستورات جايگزيني در پاسكال 103 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group هدفهاي رفتاري :دانشجو پس از مطالعه اين فصل بايد بتواند انواع عملگرها در زبان پاسكال را بكار ببرد انواع داده‌ها براي يك برنامه را تعريف كند. اولويت عملگرها در يك عبارت را تشخيص دهد. يك برنامه ساده با عمليات معمولي را بنويسد. 104 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group عملگرها عملگرها نمادهايي هستند که براي انجام اعمال خاصي مورد استفاده قرار مي‌ گيرند.عملگرها براي انجام اعمال خاصي روي عملوندها ( ) Operandsبکار مي‌روند .با توجه به نوع عملگر ممکن است يک يا دو عملوند وجود داشته باشد .عملگرها در زبان پاسکال از تنوع زيادي برخوردارند. 105 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group در پاسکال چهار دسته عملگر وجود دارند : محاسباتي رابطه اي منطقي بيتي 106 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group عملگرهاي محاسباتي رديف عملگر 1 + 3 - 3 4 5 6 * / ‏div ‏mod نام مثال جمع تفريق و منهاي يکاني ضرب تقسيم تقسيم باقيمانده تقسيم ‏x+y ‏x – y , -x ‏x*y ‏x/y ‏a div b ‏a mod b 107 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group عملگرهاي رابطه اي عملگر نام =< بزرگتر مساوي => کوچکتر مساوي <> نامساوي < > = بزرگتر کوچکتر مساوي بودن مثال ‏x>y ‏x >=y ‏x<y ‏x <= y ‏x=y ‏x <> y 108 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group عملگرهاي منطقي عملگر نام ‏And و ‏OR يا ‏Not نقيض مثال ‏a>y and ‏y<x ‏x>y or ‏y<x ) Not ( x 109 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group عملگرهاي بيتي عملگر ‏AND ‏OR ‏XOR ‏NOT ‏Shl ‏Shr نوع عمل و يا يا انحصاري نقيض انتقال به سمت چپ انتقال به سمت راست 110 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group تقدم عملگرها ) ( باالترين تقدم Not div / mod - + Shl > shr => =< >< = And XOR 111 • گروه آموزشی مهندسی ایران Iranian Engineering Group * OR < ) data types ( انواع داده‌ها )Simple data type( دادههاي ساده ‌  Structural Data ( ( دادههاي ساخت‌يافته ‌  Types )Pointer Data Types( داده‌هاي اشاره‌گر 112 • گروه آموزشی مهندسی ایران Iranian Engineering Group )Simple data type( داده‌هاي ساده )Char type( نوع کاراکتري ) integer ( صحيح )اعشاري (حقيقي )String type( نوع رشته اي )Boolean type( نوع منطقي 113 • گروه آموزشی مهندسی ایران Iranian Engineering Group صحيح ( ) integer نوع محدوده ‏Byte ‏Shortint ‏Integer ‏Word از 0تا 255 از -128تا 127 از -32768تا 32767 از 0تا 65535 از -2147483648تا 2147483647 ‏Longint اندازه بر حسب بايت 1 1 2 2 4 114 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group اعشاري (حقيقي) نوع محدوده … 2.2 e – 39 ‏Real 1.7 e 38 تعداد ارقام معني دار 13-11 اندازه برحسب بايت 6 ‏e -45 … 1.5 ‏Single 3.4 e 37 8-7 ‏e -324 … 5.0 ‏Double 1.7 e 308 16-15 8 ‏e -4932 … 3.4 Extend 1.1 e 4932 ‏ed 30-19 10 ‏Comp ‏e 18 … 9.2- 30-19 4 115 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group 8  ساختيافته ( ( Structural Data Types ‌ دادههاي ‌ انواع داده‌هاي ساخت‌يافته عبارتند از: آرايه‌ها رکوردها مجموعه‌ها فايلها 116 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group داده‌هاي اشاره‌گر ()Pointer Data Types ممکن است در نوشتن برنامه ،نوع داده‌هاي بحث شده در باال به داليل مختلف از جمله مشخص نبودن تعداد وروديهاي مسئله و غيره مشخص نباشد لذا نياز به متغيرهايي هست که بتوانند آدرس متغيرهاي ديگر را در خود نگه دارند ،اين نوع داده‌ها ،داده‌هاي اشاره‌گر نام دارند . 117 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group متغيرها ()Variables ميباشد .نوع متغير همان متغير ،محلي از حافظه است که داراي نوع و اسم ‌ ميکند .نوع داده بوده و اسم متغير از قواعد اسم‌گذاري شناسه تبعيت ‌ ميکنند: در پاسکال براي معرفي متغيرها بصورت زير عمل ‌ ; )کلمه ذخيره شده( Var نوع متغير :اسم متغير 118 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group ثابتها ()Constants شناسهاي است که در آغاز يک برنامه ،يک مقدار در آن جاگزين ‌ يک ثابت نام خانههايي از حافظه در نظر ثابتها را مي‌توان بعنوان ‌ ميشود .درست مانند متغيرها‌ . ‌ يباشد، ميشود ولي مقدار ثابت مشخص م ‌ بگيريم که مقدار داده‌ها در آنها ذخيره ‌ نميتوان مقدار يک ثابت را در برنامه خود بوسيله يک دستور تغيير داد .طوري که ‌ ميکنيم : براي تعريف يک ثابت بصورت زيرعمل ‌ مقدار ثابت = اسم متغير Const 119 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group دستور جايگزيني براي قرار دادن يک مقدار يا مقدار يک متغير داخل يک متغير ديگر ،از دستور ميکنند .جايگزيني استفاده ‌ شکل کلي يک دستور جايگزيني در پاسکال بصورت زير است: عبارت محاسباتي = :اسم شناسه عبارت قياسي عبارت منطقي يا 120 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group افزودن توضيحات به برنامه ()Comment افزودن مطلب توضيحي در درون خود برنامه عملي پسنديده و مطلوب است ميرود و در بدين ترتيب که بعد از مدتي امکان فراموشي کار با برنامه از بين ‌ ميبرد يتوان گفت که نوشتن توضيحات در برنامه خوانايي آن را باال ‌ .کل م ‌ ميشوند. در پاسکال توضيحات بين دو آکوالد محصور ‌ } { This is comment { This program written by A. } Pascal 121 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group مثال جابجا کردن مقدار دو متغير ‏b ‏a 17 15 ‏b 17 ‏a 15 ‏temp 15 ‏b 17 ‏a 17 ‏temp 15 ‏b 15 ‏a 17 122 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group Program Example4 ; Var a , b , temp : integer Begin a : = 15 ; b : = 17 ; temp : = 0 ; temp : = a ; a:=b; خروجي برنامه: b : = temp ; a = 17 b = 15 Writeln ('a=',a,' b=',b); 123 • گروه آموزشی مهندسی ایران Iranian Engineering Group نکاتي چند در مورد برنامه‌نويسي • • • • استفاده از اسامي با مفهوم براي متغير‌ها استفاده از دستور Constدر صورتي که مقدار ثابت در برنامه وجود داشته باشد. سوال جوابي بودن برنامه (ورودي‌ها و خروجي‌ها بايد داراي پيغام مناسب باشند) نوشتن برنامه با فرمت مناسب (رعايت قرار گرفتن خطوط مختلف برنامه زير هم و فاصله گذاشتن آنها از اول سطر و غيره) 124 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group تمرينات حاصل عبارتهاي زير را بدست آوريد: A) 3 * 13 Mod 3 div 3 = ? B) 7.3 * 5 / 3 = ? C) ( 3 + 4 < 6 ) and ( 4 + 7 < 13 ) = ? D)33 – 8 * 3 div 3 mod ( 5 div 3 ) = ? E) NOT ((( 3 – 4 MOD 3 ) < 5 ) and (( 6 div 4 ) <125> 3 )) • گروه آموزشی مهندسی ایران Iranian Engineering Group : حاصل عبارت‌هاي منطقي را به ازاء مقادير زير مشخص کنيد A: = true ; B: = false ; C: = true ; A) ( A AND B ) OR ( A AND C ) = ? B) ( A OR NOT B ) and ( Not A OR C ) = ? C) A OR B AND C = ? D) NOT ( A OR B ) AND C = ? 126 • گروه آموزشی مهندسی ایران Iranian Engineering Group تمرينات برنامه‌نويسي • • • برنامهاي بنويسيد که ابعاد مثلث که عبارتند از 1.3 , 3را در نظر ‌ گرفته محيط و مساحت آن را محاسبه و با پيغام مناسب در خروجي چاپ کند. برنامهاي بنويسيد که دو متغير صحيح با مقادير 15 , 3را در نظر ‌ گرفته محتويات دو عدد را بدون استفاده از متغير کمکي جابجا نمايد. برنامهاي بنويسيد که سه عدد بنام هاي Third , ‌ Second , Firstبترتيب با مقادير 13 , 15 , 17را در نظر گرفته بطور چرخشي مقادير آنها را جابجا نموده در خروجي با پيغام مناسب چاپ کند. 127 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group فصل 6 ورودي و خروجي هدفهاي كلي معرفي دستورات خروجي Writeln فرمتبندي شده ‌ معرفي خروجي بررسي دستورات ورودي Readو ReadLn 128 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group هدفهاي رفتاري :دانشجو پس از مطالعه اين فصل بايد بتواند ‏عبارات مورد نظر را در خروجي نمايش دهد. ‏عبارات خروجي را با فرمت مناسب چاپ كند. متغيرهاي مورد نياز برنامه را از ورودي دريافت نمايد. برنامههاي ساده به زبان پاسكال بنويسد. ‌  129 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group خروجي با دستور Write ميرود .اطالعات خروجي اين دستور براي نوشتن اطالعات در خروجي بکار ‌ ميتوانند ثابتهاي عددي ،مقادير متغيرها ،عبارات و غيره باشند .شکل دستور در ‌ :حالت کلي بصورت زير است ( .......و متغير 2و متغيرwrite) 1 ( .......و' عبارت '2و'عبارت)' 1 يا يا ( .......و ثابت 2وثابت ) 1 130 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group Var A , B: integer ; Ch: char ; R: Real ; مثال Begin 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 ) ; End. { end of program } اي برنامه فوق در خروجي خواهيم داشت B = 15 ch = TR = 1.2250000000 e + 01 sum of A and B 131 • گروه آموزشی مهندسی ایران Iranian Engineering Group خروجي با دستور Writeln ميکند با اين تفاوت که بعد از اين دستور همانند دستور Writeعمل ‌ ميکند در نتيجه موجب چاپ اجرا ،کنترل را به ابتداي سطر بعد منتقل ‌ ميشود. دادههاي بعدي در ابتداي سطر بعد ‌ ‌ 132 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group A , B: integer ; Ch: char ; R: Real ; in A: = 10 ; B: = 15 ; Ch: = ' T ' ; R: = 12.25 ; Writeln ; { new line } Writeln ( ' A = ' , A , ' B = ' , B ) ; Writeln ( ' Ch = ' , ch , ' R = ' , R ) ; Writeln ( ' Sum of A and B = ' , A + B ) ; d. { End of program } مثال ميباشد ‌ خروجي برنامه بصورت زير: A = 10 B = 15 Ch = T R = 1.225000000 e + 01 Sum133of A and B = 25 • گروه آموزشی مهندسی ایران Iranian Engineering Group فرمتبندي شده ‌ خروجي اگر بخواهيم اطالعات با فاصله هاي مشخص يا در مکان مشخصي در صفحه نمايش قرار گيرند ،بايد فرمت چاپ .را در دستورات بيان شده مشخص کنيم 134 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group طريقه تعيين فرمت چاپ براي اعداد صحيح ميشود :فرمت اعداد صحيح بصورت زير مشخص ‌ ( طول ميدان :داده صحيح ) Writeln يا ‏Write 135 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group دادههايي از نوع صحيح به نکات زير توجه کنيد: ‌ در تعريف طول ميدان براي متغيرها يا • • اگر طول ميدان از طول ارقام عدد صحيح بيشتر تعريف شود ،عدد در ميشود. منتهياليه سمت راست ميدان نوشته ‌ ‌ اگر طول ميدان از طول ارقام عدد صحيح کمتر تعريف شود ،طول ميدان به بياثر ميشود و طول ميدان تعريف شده ‌ اندازه تعداد ارقام در نظر گرفته ‌ خواهد بود. 136 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group مثال X:= 3200 ; A: = 12 ; B: = 217 ; Write ( X:3 , A:5 , B:5 ) ; : خروجي 3200 137 • گروه آموزشی مهندسی ایران Iranian Engineering Group 12 217 طول ميدان اعداد اعشاري براي نمايش اعداد اعشاري بصورت دلخواه ،مي توان با تعريف طول .ميدان و تعداد ارقام اعشاري ،عدد مزبور را نمايش داد يتوان به صورت زير تعريف کرد : در حالت کلي طول ميدان را م ‌ ) تعداد ارقام بعد از مميز :طول ميدان :متغير اعشاري ( Write Writelnيا 138 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group در تعريف فرمت براي اعداد اعشاري به نکات زير بايد توجه کرد: اگر طول ميدان بزرگتر از تعداد ارقام عدد ذکر شود ،عدد در منتهي اليه سمت راست ميشود .ميدان چاپ ‌ اگر فقط طول ميدان ذکر شود ،عدد به صورت نماد علمي در طول ميدان مشخص شده .چاپ می شود از آنجائي که براي نمايش اعداد در نماد علمي حداقل 8محل مورد نياز است ،لذا هنگامي که تنها طول ميدان ذکر شده باشد ،اگر از 8رقم کمتر باشد ،حداقل 8رقم .در نظر گرفته مي‌شود 139 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group هنگامي که طول ميدان همراه با تعداد ارقام بعد از مميز ذکر شود ،اگر طول اندازهاي ‌ ميدان کوچکتر از مقدار عدد باشد ،پاسکال تنها طول ميدان را به که مورد نياز است تصحيح کرده و آنرا برابر اندازه واقعي که عدد در آن ميکند. ميگيرد ،اصالح ‌ قرار ‌ اگر تعداد ارقام بعد از مميز زياد باشد و تعداد ارقام بعد از مميز ذکر شده د ر طول ميدان کمتر از تعداد ارقام اعشاري عدد باشد ،تعداد ارقام اعشار مطابق درخواست برنامه‌نويس نشان داده خواهد شد و رقم آخر اعشار آن ميشود. نسبت به عدد بعدي گرد ‌ 140 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group طول ميدان کاراکترها و رشته‌ها براي نمايش رشته‌ها و کاراکترهاي با طول ميدان بصورت زير عمل ميکنيم. ‌ ) طول ميدان :متغير يا عبارت رشته‌اي يا کاراکتري ( Write در توربو پاسکال ،کليه موارد گفته شده در مورد اعداد صحيح براي رشتهها نيز صادق است ‌ . 141 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group ورودي با Readln , Read از اين دستور براي خواندن داده ها و اختصاص آنها به متغيرها ميشود .در خواندن داده ها به دو موضوع بايد دقت شود :استفاده ‌ دادهها خوانده 1- دادهها يعني دستگاه ورودي که از آن ‌ منبع ‌ ميشود ‌ . ميگيرد . 2- دادههاي خوانده شده در آن قرار ‌ متغيري که ‌ 142 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group شکل کلي دستور ورودي Readبصورت زير مي‌باشد: ;( .....و متغير 2و متغير ( 1Read دادهها و ذخيره آنها در متغيرها را انجام اين دستور عمل خواندن ‌ ميدهد ‌ نوشتنهاي بعدي ‌ و پس از اتمام عمل خواندن کنترل را براي خواندن و ميدارد . در همان خط نگه ‌ 143 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group مثال جابجا کردن محتويات دو عدد ram Example_1 ( input , output ) ; first , second , temp: integer ; n Writeln ; Writeln ( 'Please Enter two numbers ' ) ; Readln ( first , second ) ; Temp: = first ; First: = second ; Second: = temp ; Write ( ' first = ' , first , ' second = ': 10 , second ) { end of program } 144 • گروه آموزشی مهندسی ایران Iranian Engineering Group :خروجي برنامه باال به صورت زير مي‌باشد Please Enter two numbers 15 17 First = 17 second = 15 145 • گروه آموزشی مهندسی ایران Iranian Engineering Group تمرينات : خروجي قطعه برنامه زير را تعيين کنيد Value1: = 27.3 ; Value2: = -8.5 ; Writeln ( ' Value1 is ' , Value1 ) ; Writeln ( ' Value2 is ' , Value2 ) ; Sum: = Value1 + Value2 ; Writeln ( ' Sum of Two Values = ' , Sum: 6: 2 ) ; 146 • گروه آموزشی مهندسی ایران Iranian Engineering Group اگر متغير Xاز نوع realو مقدار آن 12.235و متغير 3از نوع صحيح و مقدار آن 100باشد خروجي دستورات زير را تعيين کنيد؟ ; ) X is ': 10 , X: 6: 2 , ' I is ': 4 , I: 5 ; ) I is ': 10 , I: 1 ; ) X is ': 10 , X: 2: 1 ; ) X is ': 15 , X: 7: 1 ; ) I is ': 10 , ' X is ': 10 , X: 7: 3 ' ' ' ' ' ( ( ( ( ( ‏Writeln ‏Writeln ‏Writeln ‏Writeln ‏Writeln 147 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group تمرينات برنامه نويسي برنامهاي بنويسيد که دو عدد را از ورودي دريافت کرده و ‌ .محتويات آنها را بدون استفاده از متغير کمکي جابجا نمايد برنامهاي بنويسيد که سه عدد صحيح Third , ‌ Second , firstرا از ورودي با پيغام مناسب دريافت کرده سپس محتويات اين سه متغير را بصورت چرخشي جابجا نموده با پيغام مناسب در خروجي چاپ کند. 148 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group برنامه‌اي براي يک حسابدار اداره جمع آوري ماليات بنويسيد که صورت .حسابهاي ماليات را محاسبه نمايد :ورودي شماره شناسايي ماليات دهنده بهاي ارزيابي شده نرخ ماليات :خروجي صورت حساب بافرمت مناسب شامل تمام داده‌هاي ورودي و ميزان بدهي 149 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group فصل 7 ساختارهاي شرطي و كنترلي هدفهاي كلي معرفي دستور شرطيIf and Else معرفي دستور case بررسي دستورات تكرار for ، while ، repeat ‏untilدستورات شرطي متداخل معرفي بررسي چند تابع و روال استاندارد زبان پاسکال 150 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group رفتاري هدفهاي÷ :دانشجو پس از مطالعه اين فصل بايد بتواند ‏ برنامههايي را بنويسد كه در آنها نياز به استفاده از شرط وجود دارد. ‌ تفاوتهاي بين دستورات مختلف با ifو else- ifرا تشخيص دهد. ‏ برنامههايي كه نياز به تكرار تعدادي عمليات داشته باشند را بنويسد. ‌ در صورت نياز بتواند در برنامه‌ها ،از روالها و توابع استاندارد زبان استفاده نمايد 151 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group دستورات شرطي ميتوان بر حسب شرايط مختلف، بطور کلي توسط اينگونه دستورات ‌ تصميمات متفاوتي را اتخاذ نمود و برحسب برقرار بودن يا نبودن شرايط .دستورات متفاوتي را اجرا نمود ميشوند: ‌ ات شرطي در حالت کلي به دو نوع تقسيم دستور if دستور Case 152 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group • دستور if هرگاه در طول برنامه نياز به استفاده از شرط يا شروط داشته باشيم ،از دستور ميکنيم . Ifستفاده ‌ دستور ifبطور کلي به سه شکل بر حسب نياز ممکن است ظاهر شود: ifساده ifهمراه Else ifهاي متداخل 153 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group • – If ‏then در اين نوع دستور شرطي اگر شرط خاصي تحقق يافته باشد ،عمل يا اعمال ميکند، ميشود .در غير اينصورت برنامه روال عادي خود را طي ‌ خاصي انجام ‌ ميگيرد و در صورتي که شرط برقرار باشد ارزش منطقي Tureبه خود ‌ اگر شرط برقرار نباشد ،ارزش منطقي Falseبه خود خواهد گرفت. 154 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group • ( If – thenادامه ) ميباشد: شکل کلي دستور ifبصورت زير ‌ شرط يا شروط ; دستور ميباشد :دياگرام دستور باال بصورت زير ‌ شناسه ; دستور ‏Then شرط ياشروط ‏if 155 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group ‏f Program Example ; Var Number: integer ; Begin Write ( 'Please enter Number: ' ) ; Readln ( Number ) ; if Number > 0 then Write ( ' Number is positive ' ) ; End . • مثال :خروجي برنامه باال بصورت زير است Please enter Number: 12 Number is positive 156 • گروه آموزشی مهندسی ایران Iranian Engineering Group • دستور ifهمراه else • در اين دستور ابتدا شرط بررسي مي‌شود ،در صورتي که شرط برقرار باشد ،عمل يا اعمال خاصي را انجام مي‌دهد و در صورتي که شرط برقرار نباشد ،عمل يا اعمال بخصوص ديگري را انجام خواهد داد .اينگونه دستورات در واقع حالت توسعه يافته دستورات if مي‌باشند. 157 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group شکل کلي اين دستور بصورت زير است: thenعبارت يا عبارات منطقي if ; دستور1 ‏else ; دستور2 دياگرام دستور بصورت: ‏then عبارت يا عبارات منطقي ;دستور ‏else ‏if دستور 158 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group ogram Example ; ar Number: integer ; egin Writeln ( 'Please enter Number: ' ) ; Readln ( Number ) ; if ( Number mod 2 ) = 0 Then Write ( ' even ' ) else Write ( ' odd ' ) ; nd. { end of program } Please enter Number: 17 odd 159 • گروه آموزشی مهندسی ایران Iranian Engineering Group • مثال :خروجي برنامه باال بصورت زير است صورت ديگر دستور ‏Thenعبارت منطقي If ‏Begin ; دستور 1 ; دستور 2 . . . ‏End ‏Else ‏Begin ; دستور 1 ; دستور 2 . 160 . • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group • Ifهاي متداخل هرگاه در نوشتن برنامه نياز به انتخاب يک شرط از بين چند شرط داشته ميکنند .در چنين مواقعي استفاده از If باشيم ،معموًال از Ifمتداخل استفاده ‌ ميبرد زيرا بجاي کنترل تمام شروط فقط تا متداخل کارائي برنامه را باال ‌ ميشوند .بعد از برقرار شدن يکي زمانيکه شرط برقرار نشده If ،ها بررسي ‌ ميشود و اين در بهبود کارائي از شروط ،کنترل برنامه به بعد از Ifمنتقل ‌ ميتواند بسيار موثر باشد. يک برنامه ‌ 161 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group در حالت کلي Ifمتداخل به صورت هاي زير ممکن است ،در برنامه ظاهر شود. ‏then عبارت شرطي1 ‏if ( 2 دستور 1 ‏then ‏then عبارت شرطي 1 ‏if عبارت شرطيif 2 thenعبارت شرطي else if 2 دستور 1 دستور2 ‏else thenعبارت شرطيelse If 3 ;دستور2 دستور 3 ‏else . . . 162 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group مثال :برنامه‌اي بنويسيد که نمره دانشجوئي را از ورودي دريافت کرده ،با توجه به :مقدار نمره يکي از خروجي هاي زير را نمايش دهد خروجي ‏A ‏B ‏C ‏D ‏F ‏Grade 17 – 20 14 - 17 12 – 14 10 – 12 0 – 10 163 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group Grade : Real ; Begin Write ( ' please enter a Real Number : ' ) ; Readln ( Grade ) ; if Grade > = 17.0 Then 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 ) ; 164 Readln ; • گروه آموزشی مهندسی ایران Iranian Engineering Group دستور ‏Case زبان پاسکال دستور Caseرا بصورت زير در نظر مي‌گيرد: عبارت ‏Of ; دستور 1 . : ‏Case مقدار 1 ; دستور 2 : مقدار 2 ; دستور 3 : مقدار3 } End ; { End of case . . ‏Otherwise ; دستور 165 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group Var برنامه‌اي بنويسيد که دو عدد به همراه يک عملگر را از;ورودي: مثال a , b: Real op: char ; . کار يک ماشين حساب ساده را شبيه‌سازي نمايد،دريافت کرده Begin Write ( ' please enter two Numbers: ' ) ; Readln ( a , b ) ; Write ( ' please Enter A operator: ' ) Readeln ( op ) ; Case op of ' + ': Writeln ( ' Sum = ' , ( a + b ): 6: 2) ; ' - ': Writeln ( ' Subtract = ' , ( a - b ): 6: 2 ) ; ' * ': Writeln ( ' Multiple = ' , ( a * b ): 6: 2 ) ' / ': Writeln ( ' divide = ' , ( a / b ): 6: 2 ) 166 ; • گروه آموزشی مهندسی ایران Iranian Engineering Group دياگرام دستور Caseبصورت زير مي‌باشد: ‏End دستورات ثابت : ‏of عبارت ‏Case , ; 167 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group ساختارهاي کنترلي .بسياري از مواقع الزم است عمل يا اعمال به تعداد دفعات معين يا نامعين انجام شوند در چنين مواقعي زبانهاي برنامه‌نويسي دستوراتي دارند که مي‌توان اين اعمال تکراري را انجام داد .در حالت کلي ساختارهاي کنترلي شامل يک يا چند شرط و همچنين متغير يا اصطالحًا شمارنده‌اي براي پايان دادن به شرط مي‌باشند 168 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group شکل کلي حلقه بصورت زير مي‌باشد: Doمقدار نهايي Toمقدار اوليه = :انديس For ; دستور بايد توجه داشته باشيد که در حلقه تعداد تکرار کامًال مشخص است و حلقه دقيقًا به .تعداد تکرار مشخص اجرا مي‌شود 169 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group حلقه for دستور براي انجام عمل يا اعمالي مشخص به تعداد تکرار معين بکار برده مي‌شود. قه forشامل يک انديس ( ) indexمقدار اوليه ( ) initial valueمقدار نهايي ( ) final valueو مقدار افزاينده مي‌باشد .اين حلقه با قرار دادن مقدار اوليه در يس حلقه شروع شده و بعد از هر تکرار يک واحد به انديس حلقه اضافه مي‌کند تا نهايت به مقدار نهايي برسد .شکل کلي حلقه بصورت زير مي‌باشد: 170 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group عدد از ورودي100 برنامه‌اي بنويسيد که: مثال . عدد را محاسبه و چاپ نمايد100 مجموع،دريافت کرده Var i , number , Sum: integer ; Begin Writeln ( ' please enter 100 Numbers: ') ; For I: = 1 to 100 do Begin Readln ( number ) ; Sum:= Sum + number ; End ; Writeln ( ' Sum = ' , Sum ) ; End. { end of program } 171 • گروه آموزشی مهندسی ایران Iranian Engineering Group دستور forرا بصورت زير هم مي‌توان بکار برد. doمقدار نهايي downtoمقدار اوليه = :انديس for ; دستور در اين شکل از دستور Forابتدا مقدار اوليه در انديس حلقه قرار داده مي شود و بعد از آن در هر تکرار حلقه يک واحد از انديس حلقه کم مي شود تا به مقدار نهايي برسد . 172 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group Var برنامه‌اي بنويسيد که عدد صحيحي را از ورودي: مثال دريافت کرده و فاکتوريل آن را محاسبه نمايد. i , n , Fact : integer ; Begin Fact : = 1 ; Write ( ' please enter A Number ' ) ; Readln ( n ) ; For I : = n downto 1 Fact : = Fact * i ; Writeln ( ' Fact = ' , Fact ) ; End . 173 • گروه آموزشی مهندسی ایران Iranian Engineering Group do Forهاي متداخل doمقدار نهايي toمقدار اوليه = :انديسfor 1 doمقدار نهايي toمقدار اوليه = :انديس for 2 ; دستور 174 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group i: = 1 to 3 do مثال: gin For j: = 1 to 3 do Write ( ' pascal ': 8 ) ; Writeln ; d ; Pascal 1) Pascal 2175) • گروه آموزشی مهندسی ایران Iranian Engineering Group خروجي Pascal Pascal ( مرحله اولi = Pascal Pascal ( مرحله دومi = دياگرام دستور for مقدار نهايي ‏To مقدار اوليه =: انديس ‏For ‏Downto دستور ‏d ‏o 176 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group حلقه While در حالت کلي هدف از بکار بردن اين دستور انجام عملياتي مشخص به تعداد دفعات نامعين است اين حلقه به صورت زير بکار برده مي شود : ‏Do عبارت منطقي While ; دستور 177 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group Var m , n , r: integer ; Begin بزرگترين مقسوم عليه دو عدد: مثال Writeln ( ' Please Enter Two Numbers ' ) ; Readln ( m, n ) ; While ( m Mod n ) < > 0 Do Begin 178 • گروه آموزشی مهندسی ایران Iranian Engineering Group r: = m MOD n ; m: = n ; n: = r ; End ; { end of while } دياگرام دستور Whileبصورت زير مي باشد: دستور ‏do عبارت شرطي ‏While و در صورتي که دستور مرکب باشد دياگرام بصورت زیر است : ‏End دستور ‏Begin ; 179 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group دستور ‏Repeat اين دستور نيز از نوع دستورات تکراري مي‌باشد و به کمک آن مي‌توان يک يا چند .دستور را به تعداد نامعين بار اجرا کرد اين دستور مشابه دستور while :است ،با تفاوتهايي که در زير عنوان مي‌کنيم در دستور ) Repeat 1برعکس دستور While .شرط حلقه در انتهاي حلقه بررسي مي‌شود لذا حلقه حداقل يکبار اجرا مي‌شود 180 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group )2دستور Repeateتا زماني اجرا مي‌شود که شرط خاصي تحقق پيدا نکرده است در حاليکه دستور Whileتا زماني که شرط برقرار باشد ،اجرا مي‌شود. )3دستور Repeatنياز به بلوک ندارد و همراه Untilظاهر مي‌شود. 181 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group شکل کلي اين دستور بصورت زير مي‌باشد: ‏Repeat ; دستور1 ; دستور2 . . ; شرط يا شروط ‏until 182 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group برنام ‌ه مجموع و ميانگين تعدادي عدد صحيح مثبت , Sum , Number : integer ; ve: Real ; Writeln ( ' please enter Numbers While is Not Negative ' ) Sum: = 0 ; Ave: = 0 ; Repeat Readln ( Number ) ; Sum: = sum + Number ; i: = i + 1 ; Until number = 0 ; { End of Repeat } i: = i - 1 ve: = Sum / i ; Writeln ( ' Sum = ' , Sum , ' average = ': 12 , ave: 7: 2 ) ; end of 183 program } • گروه آموزشی مهندسی ایران Iranian Engineering Group دياگرام دستور Repeatبصورت زير مي‌باشد: شرط يا شروط ‏Until دستور ‏Repeat ; 184 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group معرفي چند پروسيجر ( Procedure ) ميباشند که به قسمتهاي مستقلي از برنامه اصلي ‌ ‌ روالها ‌ پروسيجرها يا زير تنهايي اعمال خاصي را انجام داده و وظايف مستقل و بخصوصي بر عهده ميشود .يک مزيت بزرگ پروسيجرها اينست که يکبار در برنامه آنها گذاشته ‌ ميآيد و از گنجانده شده ولي در محلهاي مختلف ازآن استفاده به عمل ‌ .اصول برنامه‌نويسي ساخت يافته‌است 185 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group پروسيجر Exit هدف :انتقال کنترل برنامه به خارج از بلوک فعلي ; Exit ‏Procedure استفاده از اين پروسيجر در هر بلوک از برنامه باعث مي‌شود که کنترل برنامه بالفاصله به خارج از آن بلوک انتقال يابد. 186 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group پروسيجر Break هدف :خاتمه دادن به اجراي يک حلقه ; Procedure Break ميشود که اجراي يک حلقه خاتمه يافته و استفاده از پروسيجر فوق باعث ‌ کنترل برنامه به دستورالعمل بعدي انتقال يابد. 187 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group پروسيجر continue هدف :بازگشت به ابتداي حلقه ; Procedure continue وقتي اين پروسيجر در حلقه ظاهر مي‌شود کنترل برنامه بــه اول حلقــه انتقــال مي‌يابد و دستورات بعد از پروسيجر اجرا نمي‌شوند. 188 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group ارائه چند مثال از کاربرد حلقه ها و شرط‌ها مثال :برنامه‌اي بنويسيد که يک عدد صحيح در مبناي ده را از ورودي دريافت کرده ،به يک عدد در مبناي 2ببرد. 189 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group Var Number , N , Power , R: integer ; Begin Power: = 1 ; N: = 0 ; Write ( ' enter A Number: ' ) ; Readln ( 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 = ' , N )190; • گروه آموزشی مهندسی ایران Iranian Engineering Group عدد را از وروديn برنامهاي بنويسيد که ‌ : مثال جمله سري زير که به سريn ،دريافت کرده F1 , F2 , F3 , N: integer ; .فيبوناچي معروف است را چاپ نمايد gin Write ( ' please enter A Number: ' ) ; Readln ( N ) ; F1: = 0 ; F2: = 1 ; Write ( F1: 5 , F2: 5 ) ; For i: = 3 to N do Begin F3: = F1 + F2; If ( i mod 10 ) = 0 Then Writeln ; Write ( F3: 5 ) ; F1: = F2 ; F2: = F3 ; End ; { end of for } 191 d. { end of program } • گروه آموزشی مهندسی ایران Iranian Engineering Group Sum : = 0 ; While i < = 120 do Begin تمرينات : خروجي قطعه برنامه‌هاي زير را تعيين کنيد-1 Sum : = Sum + i ; i:=i+1 ; end ; b) i:=0 ; Sum : = 0 ; While i < = 20 do Begin 192 i:=i+1 ; • گروه آموزشی مهندسی ایران Iranian Engineering Group b:=5 ; Repeat Writeln ( b , ( b div 5 ) : 3 ) ; b:=b–1 ; Until ( b div 3 ) = 5 ; d) Count : = 0 ; Stop : = 4 ; While Count < Stop Do Begin For K : = 1 to Count Do Write ( K : 3 ) ; Writeln ; 193 • گروه آموزشی مهندسی ایران Iranian Engineering Group تمرينات برنامه نویسی برنامهاي بنويسيد که با استفاده از حلقه ها خروجي زير را توليد کند. ‌ -1 1 1 1 2 2 3 1 3 2 2 2 4 1 1 1 2 3 4 3 3 4 5 1 2 1 194 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group برنامهاي بنويسيد که تعدادي عدد از ورودي دريافت کرده مجموع ارقام 2- ‌ هر عدد را در خروجي چاپ نمايد ( .پايان داده ها به -1ختم مي شود ) برنامهاي بنويسيد که دو عدد صحيح را از ورودي دريافت کرده سپس 3- ‌ : .اعداد فيبوناچي بين اين دو عدد را چاپ کند برنامهاي بنويسيد که يک اسکناس 1000توماني را به حالتهاي مختلف 4- ‌ يعني به اسکناس 200توماني 100 ،توماني 50 ،توماني 20 ،توماني10 ، .توماني و سکه هاي 5توماني و 2توماني و يک توماني خرد نمايد 195 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group فصل 8 آرایه هاArray هدفهاي كلي ‌ شناخت لزوم استفاده از ساختار داده اي به نام آرايه شناخت انواع آرايه‌ها و موارد استفاده از آنها شناخت مفاهيم مرتب‌سازي و جستجو شناخت الگوريتمهاي مرتب‌سازي و جستجو 196 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group رفتاري هدفهاي÷ :دانشجو پس از مطالعه اين فصل بايد بتواند آرايهها يك بعدي را در برنامه‌هاي خود بكار ببرد. ‌  پيادهسازي نمايد. ماتريسها را ‌ عمل جستجو در آرايه انجام دهد. ‏يك ليست را توسط روشهاي مرتب سازي حبابی ،انتخابي و غيره مرتب كند. 197 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group آرايه و انواع آن خانههاي پشت سرهم از حافظه که همنوع بوده و توسط يک اسم معرفي ‌ ميشوند ،آرايه نام دارد .نحوه دسترسي به هر يک از اعضاء آرايه از ‌ امکانپذير است ‌ .طريق انديس آرايه براي تعريف آرايه ابتدا طول آرايه که درحقيقت تعداد خانه‌هاي آنرا مشخص دادهها در آن قرار خواهند ميگردد .سپس نوع خانه‌هايي که ‌ ميکند ،معين ‌ ‌ گرفت را تعيين مي کنند 198 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group  آرايههاي يک بعدي ‌ ميشوند: آرايههاي يک بعدي بصورت زير تعريف ‌ ‌ ‏of ] [ 1 . . Length ‏array : ‏Name ; طول آرايه نوع آرايه کلمه ذخيره شده اسم آرايه کلمه ذخيره شده 199 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group : برای مثال Var No: Array [ 1.. 50 ] of integer ; id: Array [ 1.. 20 ] of Byte ; Name , Fam: Array [ 1.. 30 ] of char ; 200 • گروه آموزشی مهندسی ایران Iranian Engineering Group امکانپذير است ‌ آرايهها مثل متغيرها به دو صورت ‌ :مقداردهي -1با استفاده از دستورات ورودي -2مقداردهي در طول برنامه ميباشد: طريقه دسترسي به عناصر آرايه بصورت زير ‌ ] [ index ‏Name انديس آرايه اسم آرايه 201 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group بيشترين، عدد صحيح از ورودي دريافت کرده100 برنامه‌اي بنويسيد که: مثال مقدار و محل وقوع آن را در خروجي چاپ نمايد. o: array [ 1.. 100 ] of integer ;Max , i , index: integer ; Writeln ( ' please enter TEN Numbers ' ) ; For i: = 1 to 100 do Readln ( No [ i ] ) ; 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 ) ; 202 { End of program } • گروه آموزشی مهندسی ایران Iranian Engineering Group Var عنصري را از ورودي دريافت کرده100 برنامه‌اي بنويسيد که يک آرايه:مثال .عناصر آرايه را معکوس نمايد i , temp : integer ; a : array [1 .. 100 ] of integer ; Begin 203 Writeln ( ' please enter 100 Numbers : ' ) ; For i : = 1 to 100 do Begin Read ( a [ i ] ) ; If ( i Mod 10 ) = 0 Then Writeln ; End ; For i : = 1 to 50 do Begin Temp : = a [ 101 – i ] ; a [ 101 – i ] : = a [ i ] ; a [ i ] : = temp ; End ; • گروه آموزشی مهندسی ایران Iranian Engineering Group آرايه‌هاي دو بعدي براي نمايش ماتريس درحافظه معموًال از آرايه‌هايي بنام آرايه‌هاي دوبعدي استفاده مي‌کنند .براي درک بيشتر اين آرايه‌ها آنها را بصورت ماتريس در نظر مي‌گيرند ‏of ميشوند: آرايههاي دو بعدي بصورت زير معرفي ‌ ‌ ] [ 1 .. row , 1 .. column ‏array ‏type : ; ‏Name نوع عناصر آرايه کلمه ذخيره شده تعداد ستونها اسم آرايه کلمه ذخيره شده تعداد سطرها 204 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group سپس، را از ورودي دريافت کرده5*5 برنامهاي بنويسيد که يک ماتريس ‌ : مثال r آنرا در خروجي چاپ نمايد. a : array [ 1 .. 5 , 1 .. 5 ] of integer ; i , j : integer ; gin For i : = 1 to 5 do Begin For j : = 1 to 5 do Read ( a [ i , j ] ) ; Writeln ; End ; Writeln ; For i : = 1 to 5 do Begin For j : = 1 to 5 do Write ( a [ i , j ] : 5 ) ; Writeln ; End 205 ; d. • گروه آموزشی مهندسی ایران Iranian Engineering Group آرايههاي چند بعدي ‌ ميتوان آرايه‌هايي با ابعاد بيشتر از دو نيز تعريف کرد .بطور کلي براي ‌ :معرفي يک آرايه چند بعدي مي توان بصورت زيرعمل کرد ‏array [ 1.. ‏Name : array [ 1.. length1 ] of ‏length2 ] …. ‏Of array [ 1.. ‏lengthN ] of Type و يا ‏Name: array [ 1.. length1 , 1.. length2 , …. 1.. ‏lengthN ] of Type 206 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group آرايهها ‌ نکاتي چند در مورد تعريف آرايه با محدوده منفي براي مثال: ; A: array [ -10.. 10 ] of Real تعريف آرايه از نوع منطقي ( ) Boolean براي مثال: ; A: array [1.. 20 ] of Boolean 207 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group آرايههاي با محدوده منطقي: ‌  براي مثال ‏A: array [ Boolean ] of ;integer آرايهاي با محدوده کاراکتري: ‌  براي مثال ‏A: array [ 'A'.. 'Z' ] of Real آرايهاي که براي اعضاي آن محدوديت قائل شويم ‌  براي مثال: ‏A: array [ 1.. 20 ] of 1.. 30 208 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group جستجو و مرتب‌سازي ( Search and ) Sort مرتبسازي ‌ يکي از مسائلي که در بحث طراحي الگوريتم بسيار مهم است ،بحث و جستجو مي باشد .منظور از جستجو اينست که يک مقداري را از يک ليست جستجو کنيم و منظور از مرتب سازي اينست که يک ليست مرتب از داده ها را ميروند مرتبسازي و جستجو بکار ‌ ‌ ايجاد کنيم .حال تعدادی الگوريتم که براي ميکنيم بخصوص زمانيکه ساختار داده ما يک آرايه باشد . را بررسي ‌ 209 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group جستجو در آرايه ميکنيم : در کل دو نوع عمل جستجو را در اين کتاب بررسي ‌ ‏جستجوي خطي Linear search ‏جستجو دودويي Binary search 210 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group جستجوي خطي Linear search در جستجوي خطي عبارت مورد جستجو را نخست با اولين عضو آرايه مقايسه ميکنيم ،اگر برابر بود عمل جستجو با موفقيت همراه بوده و عمل جستجو ‌ مييابد در غير اينصورت روند را ادامه داده و عبارت مورد جستجو را خاتمه ‌ ميکنيم تا اينکه حالت تساوي حاصل شود بترتيب با عضو دوم ،سوم ...مقايسه ‌ .و اگر اين حالت حاصل نشد ،عباريت مورد جستجو در ليست قرار ندارد 211 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group :قطعه برنامه زير را مي توان در حالت کلي براي جستجوي خطي بکار برد ag: = True ; =0 ; hile ( i < = N ) and ( flag ) Do Begin i: = i + 1 ; if A [ i ] = x Then Begin Index: = i ; Flag: = false ; End ; End ; flag Then Writeln ( ' The Element is found ' ) se Writeln ( ' The Element is not found ' ) ; 212 • گروه آموزشی مهندسی ایران Iranian Engineering Group جستجو دودويي Binary search درجستجوي دودوئي ليست اوليه بايدمرتب باشد .براي جستجو در چنين آرايه‌اي ميکنيم و عنصر واقع در اين انديس را با نخست انديس وسط آرايه را پيدا ‌ ميکنيم و حاالت زير ممکن است حاصل شود :عبارت مورد جستجو مقايسه ‌ ( Lowانديس ابتداي آرايه ‌و upperانديس آخرين عناصرآرايه و ميباشد). middleانديس عنصر وسط ‌ 213 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group حالت اول: A [ middle ] < X Then Low : = middle در اينصورت : را که عبارتست ازmiddle و مقدار جديد Middle : = ( low + middle ) / 2 214 • گروه آموزشی مهندسی ایران Iranian Engineering Group حالت دوم: ddle ] <X Then upper : = middle در اينصورت : را که عبارتست ازmiddle و مقدار جديد Middle : = ( low + middle ) / 2 215 • گروه آموزشی مهندسی ایران Iranian Engineering Group :حالت سوم ‏ddle ] =X Then در اينصورت ) ' found ‏Write ( ' The Eiement is ر صورتي که حالت‌هاي الف يا ب اتفاق بيفتد ،عمل جستجو را تا زمانيکه Low < upper مييابد. مي باشد ادامه مي‌دهيم و در هر مرحله که حالت سوم رخ دهد عمل جستجو خاتمه ‌ 216 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group  مرتبسازي ‌ مرتبسازي داده‌ها روشهاي متفاوتي وجود دارد .تفاوت روشهاي ‌ براي مرتبسازي در زمان اجراي آنها مي باشد .در حالت کلي با توجه به تعداد ‌ روشهاي ‌ مرتبسازي مي توان از انواع ‌ وروديها (داده ها) و نوع مسئله مرتبسازي استفاده نمود ‌ . ميکنيم. حال بعضي از روش هاي مرتب سازي عمومي را بررسي ‌ ‏ مرتبسازي حبابي ( ) Bubble sort ‌ ‏ مرتبسازي انتخابي ( ) Selection sort ‌ 217 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group  مرتبسازي حبابي ( ) Bubble sort ‌ سادهترين روش مرتب‌سازي روش مرتب‌سازي حبابي مي‌باشد .يکي از خصوصيات بارز اين ‌ .نوع مرتب‌سازي اين است که فهم آن ساده بوده و برنامه‌نويسي آن به سهولت انجام مي گيرد ميکند و در صورت نياز ،آنها مرتبسازي حبابي نخست عنصر اول و دوم را با هم مقايسه ‌ ‌ را جابجا مي‌کند ،سپس عنصر دوم و سوم را مقايسه مي‌کند .اين عمل را تا زمانيکه به انتهاي آرايه نرسيده تکرار مي‌کند ،در پايان مرحله اول بزرگترين عنصر در آخرين خانه آرايه قرار ميگيرد .در مرحله دوم از خانه اول تا خانه ميدهد .اين روند را ‌ N – 1 عمل باال را انجام ‌ ميدهد و در نهايت يک ليست مرتب شده تا زمانيکه تمام عناصر آرايه مرتب نشده‌اند ادامه ‌ .بصورت صعودي در خروجي توليد مي‌شود 218 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group i: = 1 For If to n do j: = 1 to n - 1 do x [ j ] > x [ j + 1 ] Then Begin Temp: = x [ j ] ; X [ j ]: = x [ j + 1 ] ; X [ j + 1 ]: = temp ; End ; :ميشود ‌ تعداد مقايسه‌ها در اين روش بصورت زير محاسبه n–1 + n–2 + … + N(N-1)/ = 1 2 219 • گروه آموزشی مهندسی ایران Iranian Engineering Group مرتب‌سازي انتخابي ( ) Selection sort مرتبسازي نخست کوچکترين عنصر را در کل آرايه پيدا کرده ‌ در اين روش ميدهيم سپس عنصر کوچکتر بعدي را يافته در خانه در خانه اول آرايه قرار ‌ ميدهيم ميدهيم اين روند را تا زمانيکه کل آرايه مرتب نشده ادامه ‌ دوم قرار ‌ 220 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group :ميباشد ‌ ميتوان نوشت بصورت زير ‌ مرتبسازي انتخابي ‌ قطعه برنامه‌اي که براي i: = 1 to n do in Min: = x [ i ] ; Index: = i ; For j: = i +1 to n do If x [ j ] < Min Then Begin Min: = x [ j ] ; Index: = j ; End ; { find The smallest Element } X [ index ]: = x [ i ] ; X [ i ]: = Min ; { swap Minimum With other Eleme ; { end of selection sort } 221 • گروه آموزشی مهندسی ایران Iranian Engineering Group چند مثال در مورد آرايه‌ها مثال :برنامه‌اي بنويسيد که يک عدد صحيح از ورودي دريافت کرده سپس .اعداد اول قبل از آن را توليد و در آرايه قرار دهد ; a : array [ 1 .. 50 ] of integer ; i , j , N : integer ; k : Byte ; flag : Boolean ‏in ; ) ' Write ( ' Enter A Number : ; Readln ( N ) ; a [1] : = 2 ; a [2] : = 3 ; flag : = True ; k:=2 222 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group For i : = 4 to N do Begin For j : = 2 to ( i div 2 ) do If ( i mod j ) = 0 Then Flag : = false ; If flag Then Begin K:=k+1 ; A[k]:=i ; End ; Flag : = Ture ; End ; { end of for } Writeln ( ' The prime Numbers before N ' ) For j : = 1 to K do Writeln ( a [ i ] : 5 ) ; End . { End of program } 223 • گروه آموزشی مهندسی ایران Iranian Engineering Group Var را از ورودي دريافت کرده و مجموع هر سطر3*3 برنامه‌اي بنويسيد که يک ماتريس: مثال a: arrayنمايد [ 1.. , 1.. 3ماتريس]در of Real ; sum: ; i را. ,j چاپ3 خروجي همراه خود سطر بهReal انتهاي همان byte ; Begin Writeln ( ' Enter Array ' ) ; for i: = 1 to 3 do for j: = 1 to 3 do Read ( a [ i , 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 } 224 • گروه آموزشی مهندسی ایران Iranian Engineering Group End ; Writeln ( sum: 8: 2 ) ; Sum : = 0 ; آرايه، برنامه‌اي بنويسيد که از ادغام دو آرايه مرتب: مثال . ايجاد کند بطوريکه آرايه سوم مرتب باشدL3 سومي بنام Var L1 , L2: array [ 1.. 30 ] of integer ; L3: array [ 1.. 60 ] of integer ; M , N , i , j , k: Byte ; Begin Write ( ' Enter Dimention of arrays: ' ) ; Readln ( N , M ) ; 225 • گروه آموزشی مهندسی ایران Iranian Engineering Group 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 ] ) ; i: = 1 ; j: = 1 ; k: = 1 ; while ( i < = N ) and ( j < = M ) Do Begin If L1 [ i ] > L2 [ j ] Then Begin L3 [ k ]: = L2 [ j ] ; J: = j + 1 ; End Else if L1 [ i ] < L2 [j ] Then Begin L3 [ k ]: = L1 [ i ] ; i: = i + 1 ; End Else Begin L3 [ k ]: = L1 [ i ] ; k: = k + 1 ; L3 [ k ]: = L2 [ j ] ; i: = i + 1 ; j: = j + 1 ; end ; 226 k: = k + 1 ; End ; { end of while } • گروه آموزشی مهندسی ایران Iranian Engineering Group if i < = N Then for p: = i to n do Begin L3 [ k ]: = L1 [ p ] ; k: = k + 1 ; end Else if j < = M Then for p: = j to M do Begin L3 [ k ]: = L2 [ p ] ; k: = k + 1 ; end ; Writeln ; Writeln ( ' The result of merge is ' ) ; for i: = 1 to k - 1 do Begin Write ( L3 [ i ] : 5 ) ; If ( i mod 10 ) = 0 Then Writeln ; End ; { end of merge } 227 nd. { End of program } • گروه آموزشی مهندسی ایران Iranian Engineering Group کاراکتري را از ورودي دريافت80 برنامه ای بنويسيد که يک جمله حداکثر: مثال کرده وسپس کاراکترهاي فضاي خالي را با کاراکترستاره جايگزين کند. Var state: array [ 1.. 80 ] of char ; i , N : integer ; Begin Writeln ( ' Enter Number of sentence: ' ) ; Readln ( N ) ; 228 • گروه آموزشی مهندسی ایران Iranian Engineering Group 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 ] ) ; تمرينات -کداميک از دستورات زير در مورد اعالن زير صحيح است: ‏a: array [ ' A '.. ' Z ' ] of ‏char الف'a [ ' A' ]: = ' Z - ب' a [ ' a ' ]: = 'A - جa [ ' A' ]: = 1 - دa [ ' I ' ]: = 12 - حa [ ' i ' ]: = 12 - 229 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group . تعداد بايتهايي که هر کدام از اعالنهاي زير اشغال مي کنند را محاسبه نمائيدa: array [ -20.. 10 ] of char ' a: array [ -20.. -20 , 0.. -20 ] of ' A '.. ' Z a: array [ Booleam ] of char a: array [ 1.. 10 , ' A '.. ' Z ' ] of integer 230 • گروه آموزشی مهندسی ایران Iranian Engineering Group • • • • تمرينات برنامه‌نويسی • برنامه‌اي بنويسيد که که يک آرايه حداکثر 50عنصري را از ورودي دريافت کرده و سپس عناصري از آرايه که اول هستند را با صفر جايگزين کرده آرايه حاصل را در خروجي چاپ کند. برنامه‌اي بنويسيد که عددي از ورودي دريافت کرده سپس آن را به عامل هاي اول تجزيه نمايد و حاصل را بصورت زير در خروجي :چاپ نمايد براي مثال) 1 ^ 7 ( * ) 1 ^ 3 ( = 21 : 231 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group • برنامه‌اي بنويسيد که يک عدد از ورودي دريافت کرده سپس در صورت وجود صفرهاي آن را حذف نموده ،نتيجه را در خروجي چاپ نمايد. • برنامه اي بنويسد که يک ماتريس 5 * 5را از ورودي دريافت کرده سپس مجموع هر سطر را انتهاي همان سطر و مجموع هر ستون را در انتهاي همان ستون چاپ نمايد. 232 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group • برنامهاي بنويسيد که يک ماتريس حداکثر 10 * 10را از ورودي دريافت کرده ‌ ماتريس هم بر حسب ستون و هم بر حسب سطر مرتب نموده به همراه ماتريس اولي در يک سطر چاپ نمايد. •برنامه‌اي بنويسيد که يک آرايه 200عنصري ازنوع صحيح که 150عنصرمرتب درآن قرار مي‌گيرد را از ورودي دريافت کرده سپس آرايه دومي با 50عنصر را از ورودي بخواند. 233 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group فصل 9 ‌هاي كتابخانه ای‌ توابع و روال هدفهاي كلي شناخت ساختار تابع و روال شناخت توابع و روالهاي استاندارد براي نوعهاي صحيح شناخت توابع و روالهاي استاندارد براي نوعهاي اعشاري و كاركتري شناخت توابع و روالهاي استاندارد رياضي 234 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group رفتاري هدفهاي÷ :دانشجو پس از مطالعه اين فصل بايد بتواند توابع و روالهاي استاندارد را در صورت نياز در برنامه استفاده كند. ساختار توابع و خروجيهاي آنها را تشخيص داده و در برنامه خود از آنها استفاده كند. ساختار روالها و خروجيهاي آنها را تشخيص داده و نتايج حاصل از آنها را مورد استفاده قرار دهد. ‏توابع رياضي را براي محاسبه عبارت رياضي در برنامه بكار ببرد. 235 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group ساختار تابع در کل هدف تابع اينست که متغير يا متغيرهايي را بعنوان پارامتر از برنامه اصلي دريافت کرد .عمل خاصي را روي پارامترها انجام داده و نتيجه را به .برنامه اصلي برگرداند ميباشد :شکل کلي فراخواني توابع در برنامه اصلي بصورت زير ‌ ساختار تابع: ) ( parameters ‏Name نوع تابع اسم تابع ‏Function : Type پارامترها کلمه ذخيره شده 236 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group توابعي براي اعداد صحيح و اعشاري تابع Abs هدف :باز گرداندن قدر مطلق ( ) absoluteپارامتري که به آن ارسال مي‌شود: ; Function Abs ( x: Integer ): Integer ; Function Abs ( x: Real ): Real اين تابع يک عبارت از نوع حقيقي يا صحيح را بعنوان آراگون دريافت کرده سپس .قدر مطلق آن را محاسبه و حاصل را برگرداند 237 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group : مثال Real ; Integer ; : = Abs ( - 191.15 ) ; : = Abs ( - 171 ) ; Writeln ( ' f = ' , f : 8 : 2 , ' I = ' , I ) ; F = 191.15 238 • گروه آموزشی مهندسی ایران Iranian Engineering Group I = 171 : خروجي حاصل تابع Sin هدف :باز گرداندن سينوس يک عدد از نوع اعشاري ل تابع: ‏Sin ( X: Real ): Real ‏Function ميباشد. Xيک عبارت يا عدد از نوع اعشاري بوده و حاصل مقدار سينوس ‌ X 239 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group : مثال Var X : Real ; Begin X : = sin ( 10 ) ; Write ( ' sin ( 10 ) = ' , x :8 : 2 ) ; End. 240 • گروه آموزشی مهندسی ایران Iranian Engineering Group تابع Cos هدف :باز گرداندن کسينوس يک عدد از نوع اعشاري. ل تابع: ‏cos ( X: Real ): Real ‏Function ميباشد Xيک عبارت با عدد از نوع اعشاري بوده و حاصل مقدار کسينوس ‌ X 241 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group : مثال r X : Real ; gin X : = cos ( 10 ) ; Write ( ' cos ( 10 ) = ' , x : 8 : 2 ) ; d. 242 • گروه آموزشی مهندسی ایران Iranian Engineering Group تابع ArcTan هدف :بازگرداندن آرک تانژانت يک عدد از نوع اعشاري ل تابع: ‏ArcTan ( X: Real ): Real ; Function ميباشد. Xيک عبارت يا عدد از نوع اعشاري بوده حاصل مقدار آرک تانژانت ‌ X 243 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group Var ; X : Real ‏Begin ; ) X : = ArcTan ( 10 ; ) Write ( ' ArcTan ( 10 ) = ' , x : 8 : 2 ‏End . توجه :در صورتي که در توابع مثلثاتي زاویه از نوع درجه ارائه شود ميتوان با فرمول زير معادل راديان آن را محاسبه کرد ‌ : ‏Real = Dey * 3.14159 / 180 244 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group تابع Exp هدف :عدد نپر ( ) … e = 2.71828را به توان يک عدد مي‌رساند. شکل تابع: ; Real ‏Exp ( X: Real ): ‏Function Xعبارت يا متغيري از نوع اعشاري بوده و حاصل تابع نيز يک عدد اعشاري مي‌باشد اين تابع مقدار eبه توان Xرا محاسبه مي‌کند. 245 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group Var X : Real ; i : integer ; Begin For i:=1 to 10 do Begin X : = exp ( i ) ; Writeln ( x : 8 : 2 ) ; End ; End . 246 • گروه آموزشی مهندسی ایران Iranian Engineering Group : مثال تابع frac برميگرداند. ‌ هدف :قسمت اعشاري يک عدد اعشاري را ل تابع: ‏frac ( X: Real ): Real ‏Function Xعددي از نوع اعشاري و حاصل تابع يک عدد اعشاري که قسمت اعشاري عدد Xاست مي باشد و بعبارت ديگر اين تابع قسمت اعشاري عدد ورودي را ميگرداند. به عنوان خروجي باز ‌ 247 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group : مثال r Y , X : Real ; gin X : = frac ( 24.769 ) ; Y : = frac ( - 12.75 ) ; Write ( ' x = ' , 8 : 3 , ' y = ' , 8 : 2 nd . X= 248 • گروه آموزشی مهندسی ایران Iranian Engineering Group 0.769 Y= ) ; - 0.75 : روجي تابع Int هدف :قسمت صحيح يک عدد اعشاري را برمي‌گرداند. ل تابع: ‏Int ( X: Real ): Real ‏Function Xيک عبارت يا متغير از نوع اعشاري و خروجي تابع فيزيک عدد اعشاري است اين تابع مقدار صحيح يک عدد اعشاري در خروجي نشان مي‌دهد. 249 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group : مثال Var y , x : Real ; Begin X : = Int ( 2.87 ) ; Y : = Int ( - 8.76 ) ; 8.0 } End . 250 • گروه آموزشی مهندسی ایران Iranian Engineering Group { 2.0 } {- تابع Ln هدف :محاسبه لگاريتم يک عدد اعشاري در مبناي .e شکل تابع: ‏Ln ( X: Real ): Real ; Function ميباشد. Xيک عبارت يا متغير ازنوع اعشاري بوده وحاصل تابع فيزيک عدداعشاري ‌ 251 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group : مثال ar X : Real ; egin X : = Ln ( 2.87 ) ; { x = 3.73767 } Write ( ' x = ' , x : 10 : 5 ) ; nd . 252 • گروه آموزشی مهندسی ایران Iranian Engineering Group تابع Odd هدف :فرد بودن عدد صحيح را بررسي مي کند. کل تابع: ‏odd ( X: logint ): Booleam ‏unction Xيک عبارت از نوع longintاست و تابع ،فرد بودن عبارت را بررسي مي کند اگر مقدار خروجي تابع Trueباشد Xفرد است و اگر مقدار خروجي تابع alse باشد Xفرد نيست. 253 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group : مثال i : integer ; n For i:=1 to 100 do If odd ( i ) Then Writeln ( ' i = ' , j : 3 ) ; 254 • گروه آموزشی مهندسی ایران Iranian Engineering Group تابع Ord ميرود. هدف :غالبًا براي پيدا کردن کد اسکي يک متغير کاراکتري بکار ‌ شکل تابع: ; Longint عبارت xاز نوع کارکتري را بعنوان پارامتر دريافت و کد اسکي آن را برمي گرداند. اگر xاز نوع اسکالر باشد تابع بعنوان خروجي ترتيب قرار گرفتن xرا در مجموعه اي که ابتدا به عنوان اسکالر اعالن شده ،باز ميگرداند. ‌ ‏Ord ( x: char ): ‏Function 255 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group مثال : ‏Var ‏do ''Z ‏to ; ch : char ‏Begin ‏For ' ch : = ' A ; ) Write ( ord ( ch ) : 5 ‏End . :خروجی ميکند کد اسکي' ' Aتا' ' Zرا درخروجي چاپ ‌ ميباشد. کد اسکي ' ' Aعدد ‌ 65 256 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group تابع pi هدف :عدد پي را بر مي‌گرداند. کل تابع: ‏pi: Real ‏Function اين تابع براي بازگرداندن عددي پي ( ) … 3.141592مورد استفاده قرار مي‌گيرد. 257 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group تابع Pred هدف :مقدار قبل مقدار پارامتر را بر مي گرداند. ع ; > pred ( x ): < same type of parameter ‏ion پارامتر تابع مي تواند از هر نوع باشد و با توجه به نوع پارامتر تابع نياز از ميباشد. ميباشد و خروجي تابع مقدار قبل از ‌ x هم نوع ‌ 258 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group Ch: = pred ( ' d ' ) ; c'} { ch = ' i: = pred ( 15 ) ; 14 } {i= flag: = pred ( True ) ; false } { flag = i: = pred ( - 30 ) ; 31 } {i=- 259 • گروه آموزشی مهندسی ایران Iranian Engineering Group : مثال تابع Random هدف :براي توليد عدد تصادفي :شکل تابع ; 1) Function Random: Real 2) Function Random ( x: word ): ; word اگر تابع Randomبه شکل يک يعني بدون آرگومان مورد استفاده قرار گيرد يک عدد تساوي از نوع اعشاري بين صفر و يک توليد مي کند و اگر به شکل دو بکار رود باعث توليد يک عدد تصادفي از نوع wordکه بزرگتر يا مساوي صفر و کوچکتر از xاست خواهد شد. 260 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group Var i : integer ; Begin For i:=1 to 10 do Begin Writeln ( Random : 8:7) ; Writeln ( Random ) 20 ( : 8 ) ; End ; End . ، عدد تصادفي بين صفر و يک10 . توليد نمايد40 و0 عدد تصادفي بين10 و 261 • گروه آموزشی مهندسی ایران Iranian Engineering Group : مثال خروجی: تابع Round هدف :براي گرد کردن اعداد اعشاري بکار مي رود. تابع: ‏Round ( x: Real ): Longint ‏Function Xيک عبارت يامتغير اعشاري بوده وخروجي تابع يک عدد ازنوع Longint ميباشد .اين تابع Xرا به نزديکترين مقدار ميباشد که نتيجه گرد کردن‌ X ‌ ميکند. صحيح گرد ‌ 262 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group i : = Round ( 57.4 ) } { i = 57 i : = Round ( 59.5 ) } { i = 60 i : = Round ( 12.7 ) } { i = 13 i : = Round ( 12.25 ) } { i = 12 i : = Round ( 17.75 ) } { i = 18 i : =263Round ( 17.45 ) { i = 18 • گروه آموزشی مهندسی ایران Iranian Engineering Group : مثال تابع sqr ميرود. هدف :براي محاسبه مجذور يک عدد صحيح يا اعشاري بکار ‌ شکل تابع: ; Function sqr ( x: Integer ): Integer ‏Function sqr ( x: Real ): Real ; Xعبارتي يا متغييري از نوع صحيح يا اعشاري بوده و خروجي تابع فيزيک يک عدد صحيح يا اعشاري مي باشد اين تابع مجذور Xرا بعنوان خروجي بر ميگرداند. ‌ 264 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group : مثال Var i : integer ; Begin For i:=1 to 10 do Writeln ( ' I ^ 2 = ' , sqr (I)) ; End . 265 • گروه آموزشی مهندسی ایران Iranian Engineering Group تابع sqrt هدف :براي محاسبه جذر يک عدد بکار ميرود. شکل تابع: ; Real ): Real ‏Function sqrt ( x: Xيک عبارت از نوع اعشاري بوده و خروجي تابع فيزيک عدد اعشاري ميگرداند. ميباشد اين تابع جذر Xرا بعنوان خروجي بر ‌ ‌ 266 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group Var : مثال Y , X : Real ; Begin Y : = sqrt ( 64 ) ; Z : = sqrt ( 0.16 ) ; {y=8} { z = 0.4 } Write ( ' x = ' , x : 8 : 2 , ' y = ' , y :8:2) ; End . 267 • گروه آموزشی مهندسی ایران Iranian Engineering Group تابع succ هدف :مقدار بعد از مقدار فعلي را برمي گرداند. شکل تابعFunction succ ( x ): same type of : ; parameters Xيک عبارت از نوع صحيح ،اولين و غيره بوده و خروجي تابع نيز از همان ميگرداند. نوع Xمي باشد اين تابع مقدار بعد از Xرا بعنوان خروجي بر ‌ 268 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group : مثال ch : = suce ( ' a ' ) { ch = ' b ' } ch : = suce ( ' A ' ) { ch = ' B ' } i : = suce ( 15 ) { i = 16 } flag : = suce ( false ) { flag = True } flag : = suce ( True ) { } تعريف نشده 269 • گروه آموزشی مهندسی ایران Iranian Engineering Group تابع Trunc ميگرداند. هدف :قسمت صحيح يک عدد اعشار را بر ‌ شکل تابع: ; Longint ‏Function Trunc ( x: Real ): Xيک عبارت يا متغير از نوع اعشاري بوده و خروجي تابع يک عدد از نوع ميباشد .اين تابع قسمت صحيح عدد اعشاري Xرا بعنوان ‌ Longint ميگرداند. خروجي بر ‌ 270 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group : مثال Var x , i , j : Longint ; Begin i : = trunc ( 12.5 ) ; { i = 12 } j : = trunc ( 12.4 ) ; { i = 12 } k : = trunc ( 13.5 ) ; { k = 13 } Writeln ( ' I = ' , i : 5 , ' j = ' , j : 5 , ' k=',k:5) ; End . 271 • گروه آموزشی مهندسی ایران Iranian Engineering Group توابع از نوع کاراکتري در اين بخش توابعي را بررسي مي کنيم که خروجي آنها از نوع کاراکتري باشد. تابع chr ميگرداند. هدف :معادل کاراکتري يک کد اسکي را بر ‌ کل تابع: ‏chr ( X: Byte ): char ‏Function ميباشد. Xيک عبارت يا متغير از نوع بايت بوده و خروجي تابع يک کارکتر ‌ ميگرداند. اين تابع کد اسکي را دريافت کرده و معادل کارکتري آن را بر ‌ 272 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group مثال : ‏Var ; i : Byte ‏do 91 ‏to ‏i : = 65 ‏Begin ‏For ; ) ) Writeln ( chr ( I :خروجی ‏End . ميکند. برنامه باال حروف Aتا Zرا در خروجي چاپ ‌ 273 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group تابع Upcase هدف :براي تبديل يک کاراکتر به حرف ميرود. ‌ بزرگتر بکار شکل تابع: ; char ‏Upcase ( ch: char ): ‏Function chيک عبارت يا متغير از نوع کاراکتر بوده و خروجي تابع فيزيک کاراکتري باشد اين تابع حرف کوچک را به حرف بزرگ تبديل کرده و بعنـــوان خروجي ميگرداند. حروف بزرگ را بر ‌ 274 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group array [ 1.. 80 ] of char ; Byte ; : مثال ( ' enter Numbers: ' ) ; ln ( N ) ; i: = 1 to N do Read ( Sen [ i ] ) ; eln ; i: = 1 to N do If ( sen [ i ] > = ' a ' ) and ( sen [ i ] < = ' z ' ) Then ; sen [ i ]: = Upcase ( sen [ i ] ) ; eln ( ' Out pot of program ' ) ; i: = 1 to N do Writeln ( sen [ i ] ) ; of program } 275 • گروه آموزشی مهندسی ایران Iranian Engineering Group روال‌هاي استاندارد در بخش هاي قبل ديديد که در توابع پارامترها به تابع ارسال مي شود و تابع نيز ميکنند با برميگرداند روالها نيز مشابه توابع عمل ‌ ‌ مقداري را بعنوان خروجي ميشود يا اعالن به برميگردانده ‌ ‌ اين تفاوت که خروجي روالها از طريق پارامتر ميباشد .بنابراين روالها بدون نوع هستند .سيستم عامل ‌ ميباشد روالها بصورت زير ‌ ‌ :شکل کلي ‏Name ; Procedure پارامترهاي روال اسم روال کلمه 276 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group روال Dec هدف :يک يا چند واحد از پارامتر ارسالي کم مي کند. :شکل روال ; ) Procedure Dec ( Var X: longint ; ) Procedure Dec ( Var X: longint , N: longint Xيک متغير از نوع longintو بصورت متغيري مي‌باشد اين روال يک واحد از پارامتر ارسالي کم مي‌کند. 277 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group : مثال Var N : integer Begin N : = 1201 ; Dec ( N ) ; { N = 1200 } Writeln ( N ) ; Dec ( N , 200 ) ; {W= 1000 } Writeln ( N ) ; End . 278 • گروه آموزشی مهندسی ایران Iranian Engineering Group روال Exit هدف :کنترل برنامه را به خارج از بلوک جاري منتقل مي کند. شکل روال: ; Exit ‏Procedure اين روال باعث مي شود که کنترل برنامه از بلوک جاري خارج شود .اگر اين روال در برنامه اصلي بکار رود باعث خروج از برنامه مي‌شود .و اگر در يک روال يا تابع بکار رود باعث خروج از روال يا تابع شده و کنترل برنامه به برنامه اصلي منتقل مي‌شود. 279 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group مثال : ‏Var :خروجی ; i , j : integer ‏Begin ; i : = 100 ; j : = 20 ; ) Dec ( i , j ; ) Write ( i ; Exit ‏End . بعد از اتمام عمليات تابع Exitباعث خروج از برنامه مي شود. •گروه 280 آموزشی مهندسی ایران ‏Iranian Engineering ‏Group روال Halt هدف :خاتمه دادن به اجراي برنامه شکل روال: ; Halt ‏Procedure اين روال باعث خاتمه اجراي برنامه شده و کنترل برنامه به سيستم عامل بر مي‌گردد. 281 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group روال Inc هدف :اضافه کردن يک يا چند واحد به يک متغير شکل تابع: ) ocedure Inc ( Var X: longint ; ) edure Inc ( Var X: longint , N: longint Xيک عبارت يا متغير از نوع Longintمي باشد اين روال به مقدار متغير xيک يا چند واحد اضافه مي‌کند. 282 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group : مثال Var N , i , j : integer ; Begin i : = 100 ; j : = 200 ; N : = 10 ; inc ( i ) ; { i = 101 } inc ( j , N ) ; { j = 210 } Writeln (' i = ' , i , ' j = ' , j ) ; End . 283 • گروه آموزشی مهندسی ایران Iranian Engineering Group روال Randomize هدف :باعث تغير نحوه توليد اعداد تصادفي مي شود. شکل روال: ; Randomize ‏Procedure ميکنيم اعداد تصادفي توليد وقتي در برنامه از تابع Randomاستفاده ‌ شده در اجراهاي مختلف يکسان مي باشد براي جلوگيري از اين وضعيت قبل ميبريم .تا از استفاده از تابع Randomروال Rondomizeرا بکار ‌ باعث توليد اعداد تصادفي متفاوت در اجراهاي مختلف گردد. 284 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group : مثال Var i : word ; Begin Randomize; For i:=1 to 10 do Writeln ( Random ( 50 ) ) ; End . 285 • گروه آموزشی مهندسی ایران Iranian Engineering Group برنامهنويسي ‌ حل چند مثال مثال :برنامه اي بنويسيد که يک ماتريس مربع ( n * n ) n < = 10 از مقادير صحيح را از ورودي دريافت کرده آنگاه عناصري که مربع کامل نيستند را صفر کرده و در نهايت ماتريس حاصل را در خروجي چاپ مي کند. ‏ar ‏n , i , j : integer ; a : array [ 1 .. 10 , 1 .. 10 ] of integer ‏egin ; ) ' Write ( ' enter Number : ‏For i : = 1 to N do ‏For j : = 1 to N do ; ) ] Read ( a [ i , j 286 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group For i : = 1 to N do For j : = 1 to N do If a [ i , j ] sqr ( Trunc (sqrt (Abs ( a[ i , j ] ))) Then a[i,j]:=0 ; Writeln ( ' The oupput Mafrix ' ) ; For i : = 1 to N do Begin For j : = 1 to N do Write ( a [ i , j ] : 5 ) ; Writeln ; End ; End .287{ End of program } • گروه آموزشی مهندسی ایران Iranian Engineering Group برنامهاي بنويسيد که يک جمله از ورودي دريافت کرده سپس حروف ‌ : مثال .بزرگ جمله را به حروف کوچک تبديل نمائيد sen : array [ 1 .. 80 ] of char ; Ch : char ; i : word ; Write ( ' enter sentence ' ) ; Repeat Read ( sen [ i ] ) ; Inc ( i ) ; 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 ] ) ; 288 End of program } • گروه آموزشی مهندسی ایران Iranian Engineering Group تمرينات r i , j : integer gin i : = 100 ; j : = 20 ; inc ( i ) ; Dec ( j , 10 ) ; inc ( i , j ) ; Writeln ( i : 5 , j : 5 ) ; d. :خروجي تمرينات زير را تعيين کنيد.1 y : integer ; gin y : =Round ( 18.31 ) MoD 5 ; Writeln 289 ( y ) ; d. • گروه آموزشی مهندسی ایران Iranian Engineering Group :خروجي دستورات زير را محاسبه نمائيد2. Ch: = ' A ' ; Ch: = chr ( ord ( ch ) + 3 ) ; Write ( ch ) ; X: = 12 ; Succ ( x ) ; Ch: = ' B ' ; Pred ( ch ) ; Write ( x , ch ) ; 290 • گروه آموزشی مهندسی ایران Iranian Engineering Group برنامهنويسي ‌ تمرينات -1برنامه‌اي بنويسيد که تعداد 1000شماره حساب بانکي 7رقمي بطور تصادفي بين 5119432و 9981711را توليد کرده و چاپ کند. -2برنامه اي بنويسيد تا تعداد 38عدد تصادفي صحيح بين 10تا 99راتوليد کرده ،سپس آن را در خروجي به شکل مربع وسط صفحه نمايش چاپ کند. -3برنامه‌اي بنويسيد که يک عدد 20رقمي از ورودي دريافت کرده آن را در يک عدد تک رقمي ضرب نموده و حاصل را در خروجي چاپ نمائيد. 291 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group فصل 10 متغيرهاي كاراكتري و رشته‌ها )(String هدفهاي كلي ‌ بررسي ساختار آرايه هايي از نوع كاراكتر معرفي نوع دادة جديد به نام رشته ‌ مقايسه آرايه اي از كاراكتر و رشته ‌ شناخت توابع و روالهاي استاندارد براي رشته ها 292 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group رفتاري هدفهاي÷ :دانشجو پس از مطالعه اين فصل بايد بتواند ‏ آرايهاي از كاراكترها را در برنامه بكار ببرد. ‌ ‏ آرايهاي از كاراكترها را با رشته مقايسه كند. ‌ اسمي افراد و غيره را با استفاده از آرايه‌اي از رشته مرتب نمايد. ‏توابع و روالهاي استاندارد مربوط به رشته‌ها را در برنامه خود بكار ببرد. 293 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group متغيرهايي از نوع کاراکتر متغيرهاي کاراکتري ظرفيت پذيرش يک کاراکتر ( شامل يک رقم ،يک حرف از ميباشند .حروف و يا يک کاراکتر ديگر ) را دارا ‌ ميباشد : مقدار دهي اين متغير ها به صورت زير ‌ ; ' ch: = ' A اگر بخواهيم متغير هاي کاراکتري را از ورودي بخوانيم بايد دقت بيشتري به .خرج دهيم براي اينکه فضاهاي خالي کاراکتر محسوب مي شوند 294 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group .مثال :خروجي قطعه برنامه زير را تعيين کنيد ; ' Ch: = ' A ; ' C: = ' a ‏If ch = c Then ) ' Writeln ( ' equal ‏Else ; ) ' Writeln ( ' Not equal خروجي حاصل از قطعه برنامه باال بصورت زير است: ‏equal ‏Not 295 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group ميتوان کاراکترها را از لحاظ اردينال (مرتبه) بصورت زير درکل ‌ دستهبندي کرد ‌ : ميشوند 1- :رقم ها بصورت زير مقايسه ‌ ''0' < '1' < '2' < '3' < … < '9 گرفتهاند ‌ رقمها از لحاظ کد اسکي پشت سر هم قرار ‌ . ر مقايسه مي شوند 2- ' < … < 'Z'< … <'a' < 'b' < … < 'z 296 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group رشتهاي ( ) String ‌ متغيرهاي مجموعهاي از کاراکتر را يک رشته ناميده و متغير از نوع آن را ‌ تعريف: مينامند .يک متغير رشته‌اي ‌ اين متغير نيز مانند ساير متغيرها در قسمت تعاريف متغيرها ( ) Varمعرفي ميکنند. ميشود .در تعريف يک متغير رشته‌اي معموًال طول آن را مشخص ‌ ‌ اگر طول تعيين نشود بطور قراردادي کامپايلر حداکثر طول را براي آن در نظر ميباشد. ميگيرد .حداکثر طول رشته 255کاراکتر ‌ ‌ 297 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group نحوه تعريف متغير رشته اي بصورت زير مي‌باشد: ‏Name طول رشته کلمه ذخيره شده اسم رشته 298 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group ميتوان مقداردهي کرد: رشتهاي را بصورت زير ‌ ‌ متغيرهاي ‏Var ; ] S : string [ 10 . . . ‏Begin . . ; ' S : = ' pascal ; ) Write ( s . . 299 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group ‏End . رشتهاي ازدستور Readيا Readlnبصورت متغيرهاي ‌ ‌ براي خواندن استفاده کرد: ‌ توان زيرمي ‌ ‌ ) ; Read ( s رشتهاي اگر طول رشته ورودي از طول تعريف ‌ هنگام خواندن متغيرهاي شده بيشتر باشد فقط به اندازه طول تعريف شده خوانده مي شود و اگر طول منتهياليه ‌ رشته ورودي کمتر از طول تعريف شده باشد ،رشته ورودي در سمت چپ متغير رشته‌اي قرار گرفته و بقيه متغير رشته اي بدون محتوا ،باقي مي ماند 300 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group براي چاپ يک متغير رشته‌اي نيز ازدستور Writeيا ميتوان استفاده کرد: ‌ Writeln ) ; Write ( s مثال :برنامه‌اي بنويسيد که شماره دانشجوئي ،اسم و فاميل دانشجوئي را .از ورودي دريافت کرده سپس در خروجي نمايش دهد 301 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group Var Name , family: string [ 40 ] ; Id: longint Begin writeln ( ' Enter student number ') ; Readln ( Id ) ; writeln ( ' Enter Name ' ) ; Readln ( Name ) ; writeln ( ' Enter family ' ) ; Readln ( family ) ; writeln ( ' Id Name ' ) ;302 • گروه آموزشی مهندسی ایران Iranian Engineering Group writeln ( Id: 7 , Name , Family ميشود: آرايهاي از رشته بصورت زير تعريف ‌ ‌ ‏string نوع رشته اي ‏of ] [ 1 .. length ‏ay طول آرايه 303 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group ميکنيم: آرايهاي بصورت زير عمل ‌ ‌ براي خواندن چنين ‏i:=1 ‏to 50 ‏do ; ) ] Readln ( Name [ i ‏or براي نمايش آرايه در خروجي بصورت: ‏For ‏i: = 1 ‏to 50 ‏do ) ] Writeln ( Name [ i 304 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group نفر از ورودي دريافت کرده و آنها را برحسب10 برنامهاي بنويسيد که اسم ‌ : مثال حروف الفبا مرتب نمايد. Name : Array [ 1 .. 10 ] of string [ 10 ] ; tring [ 10 ] ; temp : i , j : Byte; writeln ( ' Enter Ten Names ' ) ; or i : = 1 to 10 do Readln ( Name [ i ] ) ; or 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 } riteln ( ' The sorted list ' ) ; r i:=1 to 10 do writeln ( Name [ i ] ) ; 305 nd of program } • گروه آموزشی مهندسی ایران Iranian Engineering Group مثال :برنامه‌اي بنويسيد که اسم ،فاميلي و شماره دانشجوئي حداکثر 50دانشجو را از ورودي دريافت نمايد. سپس با خواندن اسمي از ورودي ،ساير اطالعات اسم خوانده شده را در .صورت وجود در خروجي نمايش دهد ; ] Name , Family : array [ 1 .. 50 ] of string [ 30 ; id : array [ 1 .. 50 ] of longint ; ] Nam : string [ 30 306 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group write ( ' Enter Number : ' ) ; Readln ( N ) ; for i : = 1 to N Do Begin write ( ' Enter Name : ' ) ; Readln ( Name ) ; write ( ' Enter family : ' ) ; Readln ( family ) ; write ( ' Enter student Number : ' ) ; Readln ( Id ) ; end ; writeln ; write ( ' Enter Name : ' ) ; 307 Readln ( Nam ) ; • گروه آموزشی مهندسی ایران Iranian Engineering Group while ( i < = n ) and flag Do Begin inc ( i ) ; 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 ) ; 308 end ; • گروه آموزشی مهندسی ایران Iranian Engineering Group توابع و روالهاي کتابخانه‌اي براي متغيرهاي رشته‌اي تابع Concat هدف :الحاق دو يا چند رشته به يکديگر شکل تابع: ; string ‏Function concat ( S1 , S2 , … , Sn ): Sn , … , S2 , S1متغيرهايي از نوع رشته هستند و خروجي تابع نيز يک متغير رشته‌اي است اين تابع دويا چندتابع را به هم پيوند داده ،و رشته برميگرداند. ‌ حاصل را 309 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group Var Str3 , str1 , str2 : string : مثال Begin Str1 : = ' Pascal ' ; Str2 : = ' Book ' ; Str3 : = Concat ( Str1 , Str2 ) ; write ( Str3 ) ; End. . نشان داده خواهد شدPascal Book عبارت،با اجراي برنامه فوق 310 • گروه آموزشی مهندسی ایران Iranian Engineering Group تابع Copy هدف :استخراج يک زير رشته ( ) substringاز يک رشته ‏n copy (S:string ; Index:Integer; count: Integer): strin يک عبارت يا متغير رشته اي که مي خواهيم از آن زير رشته اي که نقطه S مي باشد جدا کنيم .لذا زير رشته Countو طول آن Indexشروع آن ميباشد Countحاصل ،يک رشته که طول آن به اندازه .است‌ ، 311 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group : مثال Var Str , str1: string ; Begin Str: = ' Pascal Book ' ; Str1: = Copy ( Str , 7 , 4 ) ; { Str1 = Book } write ( Str1 ) ; End. 312 • گروه آموزشی مهندسی ایران Iranian Engineering Group روال Delete هدف :حذف يک زير رشته از يک رشته شکلروال: ‌ ;Procedure delete (Var str: string ) ; Index:integer;length: integer Sيک متغر رشته اي Index ،يک عبارت يا متغير صحيح و Lengthنيز ميباشد .روال Deleteيک زير رشته را از يک ک عبارت يا متغير صحيح ‌ ميکند اين روال از محل Indexبطول Lengthاز رشته Str شته حذف ‌ ميشود. ميکند و رشته حاصل بعنوان خروجي روال برگردانده ‌ ف ‌ 313 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group : مثال Var St : string ; Begin St: = 'Pascal.Book' ; Delete ( St , 7 , 5 ) ; writeln ( St ) ; End. .ميباشد ‌ Pascal خروجي حاصل از برنامه فوق 314 • گروه آموزشی مهندسی ایران Iranian Engineering Group روال Insert هدف :درج ( وارد کردن ) يک رشته در يک رشته ديگر شکل روالProcedure Insert ( Str1: string ;Var : ) ; Str2: string ; Index: Byte Str1عبارت يا متغير رشته اي Str2 ،متغير رشته اي و Indexعبارتي ميباشد .روال ، Insertرشته Str1رادر رشته Str2 دد از نوع صحيح ‌ ميکند و رشته حاصل خروجي روال خواهد بود. ز خانه Indexدرج ‌ 315 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group : مثال Var Str1 , str2: string ; Begin Str1: = ' Pascal 7' ; Str2: = ' Turbo' ; Insert ( Str1 , Str2 , 6 ) ; End. . خواهد بودTurbo pascal 7 خروجي حاصل از برنامه باال 316 • گروه آموزشی مهندسی ایران Iranian Engineering Group تابع Length هدف :محاسبه طول رشته شکل تابع: ; Integer ‏Function length ( Str: string ): ميباشد. Strيک عبارت رشته اي بوده و خروجي تابع يک عدد صحيح ‌ ميگرداند. اين تابع طول رشته ورودي را محاسبه و بعنوان خروجي بر ‌ 317 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group : مثال Var St: string ; n: integer ; Begin St: = 'Turbo Pascal 7' ; n: = length ( S4 ) ; { n = 14 } Write ( ' The length of string is: ' , n ) ; End. 318 • گروه آموزشی مهندسی ایران Iranian Engineering Group تابع Pos هدف :براي جستجوي يک رشته داخل رشته ديگر شکل تابعFunction pos ( Str1: string ; Str2: : ; string ): Byte Str1يک عبارت يا متغير رشته اي و Str2نيز يک عبارت يا متغير ميباشد و خروجي تابع يک عدد صحيح مي باشد .اين تابع محل رشته اي ‌ ميگرداند. اولين وقوع رشته Str1در رشته Str2را بعنوان خروجي بر ‌ 319 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group مثال : ‏Var ; Str1 , Str2: string ; i: integer ‏Begin ; ' Str1: = ' Book ; ' Str2: = ' Pascal Book = i: = Pos ( Str1 , Str2 ) ; { i }8 ; ) Write ( ' i = ' , i ‏End.اول نکته :توجه کنيد که اگر عمل جستجو با موفقيت انجام نشود ( يعني رشته ميگرداند .در رشته دوم وجود نداشته باشد ) تابع مقدار صفر بر ‌ 320 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group روال Str هدف :براي تبديل عدد به يک رشته عددي بکار مي رود. والocedure Str( I: integer: format , Str: string ) :1 : ; Procedure Str ( F: Real: format , Str: string ) :2 درشکل I ،1يک عبارت يا متغيرعددي بوده و Strيک متغير رشته‌اي ميباشد اين روال يک عدد صحيح با فرمت مشخص را به يک رشته عددي ‌ تبديل مي کند. ميباشد. درشکل F ، 2يک عبارت يا متغير رشته‌اي و Strيک متغير رشته‌اي ‌ 321 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group 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. 322 • گروه آموزشی مهندسی ایران Iranian Engineering Group روال Val هدف :تبديل يک رشته عددي به يک عدد روال; Procedure Val ( S: String ; Var N: integer :1 : ; ) Var Error: integ ‏edure Val ( S: String ; Var N: Real ; Var Error: integ Sيک عبارت يا متغير رشته اي N ،يک متغير از نوع صحيح يا اعشاري و Errorنيز يک متغير از نوع صحيح مي باشد .اين روال يک رشته عددي را به يک عدد صحيح يا اعشاري تبديل مي کند و آن را توسط متغير N برميگرداند .اگر عمل تبديل بطور صحيح انجام شود ،مقدار متغير Error ‌ ميکند. برابر صفر در غير اينصورت محل وجود اشکال را مشخص ‌ 323 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group Var St: string ; E , N: integer F: Real ; ; : مثال Begin St = ' 475 ' ; Val ( St , N , E ) ; { N = 475 , E St = ' 475' ; Val ( St , F , E ) ; {F= St = '3.1716' ; Val ( St , F , E ) ; { F = 3.1716 =0} ,E=3 } ,E=0} 324 End. • گروه آموزشی مهندسی ایران Iranian Engineering Group ارائه چند مثال در مورد رشته‌ها و کاراکترها مثال :برنامه‌اي بنويسيد که يک جمله از ورودي دريافت کرده سپس در صورتي که کلمه ISوجود داشته باشد آنها را به areتبديل نمايد و در نهايت رشته حاصل را در خروجي نمايش دهد. توجه کنيد که ممکن است بيش از يک بار کلمه ISتکرار شده باشد در اينصورت همه کلمات ISرا با areتبديل کند. 325 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group Var St : string ; Begin Writeln ( ' Enter sentence ') ; Readln ( St ) ; Repeat i : = Pos ( 'is' , St ) ; if i>0 Then Begin Delete ( St , i,2) ; Insert ( 'are' , St , i ) ; 326 end ; • گروه آموزشی مهندسی ایران Iranian Engineering Group Var ، برنامه‌اي بنويسيد که يک رشته از ورودي دريافت کرده: مثال St1 , St2 : string ; دو سطرiدر, رشته سپس معکوس رشته را بدست آورده ;بهمراه خود j : integer .جداگانه چاپ نمايد Begin Writeln ( ' Enter sentence ' ) ; Readln ( St1 ) ; j : = 1 ; For i : = length ( St1 ) downto do Begin St2 [ j ] : = St1 [ i ] ; Inc ( j ) ; End ; Writeln ( ' The result ' ) ; Writeln ( St1 ) ; Writeln ( St2 ) ; 327 • گروه آموزشی مهندسی ایران Iranian Engineering Group 1 تمرينات • با فرض اينکه S3 , S2 , S1متغير هاي رشته اي هستند خروجي عبارتهاي زير را تعيين کنيد. ; ) a)S3 = copy ( S1 , 1 , 6 ; ) b)S3 = concat ( S3 , S2 , S1 ; ) c)S3 = copy ( S2 , 1 , pos( S1 , S2 ) – 1 ; ) ) d)Delete ( S2 , pos( S1 , S2 ) , length ( S1 328 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group :•خروجي قطعه برنامه زير را تعيين کنيد Var S1: string ; i: integer ; Begin S1: = 'ABCDEF' ; For i: = 1 to length ( S1 ) ; Delete ( S1 , i , 1 ) ; Writeln ( S1 ) ; .End 329 • گروه آموزشی مهندسی ایران Iranian Engineering Group :•خروجي قطعه برنامه زير را تعيين کنيد St: string ; i: integer ; Readln ( St ) ; For i: = 1 to length ( St ) Do If ( St [ i ] > = ' 0 ' ) and ( St [ i ] < = ' 9 ' ) t Delete ( St , i , 1 ) ; Writeln ( St ) ; 330 • گروه آموزشی مهندسی ایران Iranian Engineering Group S2 = ' Book ' , S1 = ' • با فرض اينکه ' هستند خروجي عبارت زير را تعيينpascal Book .کنيد nsert ( S1 , S2 , pos ( S1 , S2 ) ) ; 3 : = copy ( S2 , pos ( S1 , S2 ) , length ( S1 ) ; 3 : = copy ( S2 , pos ( St , S2 ) , length ( S2 ) ; elete ( S1 , pos ( S2 , S1 ) , length ( S2 ); S1 [ 0 ] := # 6 ; 331 • گروه آموزشی مهندسی ایران Iranian Engineering Group تمرينات برنامه‌نويسی •برنامه‌اي بنويسيد که يک پاراگراف را از ورودي دريافت کرده ( حداکثر 10خط ) سپس: .الف) تعداد کلمات هر سطر را شمرده و انتهاي سطر نمايش دهد .ب) تعداد حروف صدا دار را شمرده چاپ نمايد .ج) تعداد خطوط برنامه را شمرده در خروجي چاپ کند .د) تعداد جمالت هر خط را محاسبه و در سطر هاي جداگانه نمايش دهد 332 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group •برنامه‌اي بنويسيد که يک عدد در مبناي مشخص را از ورودي دريافت کرده سپس آن را به مبناي mکه از ورودي خوانده مي شود ببرد. •برنامه‌اي بنويسيد که يک پاراگراف را از ورودي دريافت کرده کلمات تکراري هر سطر را حذف نموده و پاراگراف حاصل را بهمراه پاراگراف اوليه در خروجي با پيغام مناسب نمايش دهد. 333 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group • برنامهاي بنويسيد که دو عدد 20رقمي ( بصورت رشته بايد خوانده شود ) ‌ را از ورودي دريافت کرده سپس مجموع و حاصل ضرب اين دو عدد را محاسبه و در خروجي با پيغام مناسب چاپ نمايد. • برنامهاي بنويسيد که يک رشته از ورودي دريافت کرده ‌ سپس کلمات داخل آن را بصورت عمودي کاراکتر به کاراکتر نمايش دهد: • برنامهاي بنويسيد که يک پاراگراف با حداکثر 5خط را از ورودي دريافت ‌ نمايد .سپس مجموع ارقام يا اعداد ( در صورت وجود ) هر خط را محاسبه نموده در انتهاي همان سطر نمايش دهد. 334 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group فصل 11 برنامههاي فرعي ‌ هدفهاي كلي ‏ ‌ ‏ ‏ شناخت اجزاء تشكيل‌دهنده توابع و روالها بررسي انواع پارامترها و متغيرها در برنامه‌هاي فرعي شناخت تفاوتهاي روالها و توابع معرفي مزاياي استفاده از زير برنامه‌ها 335 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group رفتاري هدفهاي÷ :دانشجو پس از مطالعه اين فصل بايد بتواند برنامه خود را به چندين زيربرنامه تقسيم‌بندي نمايد. زيربرنامه‌ها را با توجه به قوانين موجود ،در ساختار برنامه جا دهد. باتوجه به مزاياي استفاده از آنها را در برنامه خود بكار ببرد. 336 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group  روالها ‌ روالها نوعي از برنامه‌هاي فرعي هستند ،که به طور مستقل و جداگانه وظيفه ‌ ميدهند .روال ها در صورت نياز يا وظايف خاصي از برنامه اصلي را انجام ‌ اطالعات خود را از طريق پارامترها دريافت و همچنين در صورت نياز نتايج را ميگردانند .پارامترها در حقيقت خطوط از طريق پارامترها به برنامه اصلي باز ‌ ،ارتباطي بين برنامه اصلي و برنامه‌هاي فرعي هستند .پارامترها باعث مي شوند که توابع و روال ها روانتر عمل کنند ،زيرا آنها به برنامه هاي فرعي اين قابليت را 337 دادههاي مختلفي را مورد پردازش قرار دهند .مي دهند که با هر فراخواني‌ ، • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group :شکل کلي روال‌ها بصورت زير مي باشد Procedure Name ( parameters list ) کلمه ذخيره ش اسم روال ليست پارامترها Var { List of locad variable } Begin . . { Procedure Body } . . 338 End ; { End of procedure } • گروه آموزشی مهندسی ایران Iranian Engineering Group در حالت کلي روال ها در برنامه اصلي بصورت زير ظاهر مي‌شوند: ; اسم برنامه اصلي Program ; تعاريف برنامه اصلي ..... Procedure ; ‏Begin } { main program . . . فراخواني روال ها . . 339 } End. { End of program • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group پارامترها با توجه به محل وقوع آنها به دو دسته تقسيم مي شوند: .1پارامترهاي صوري ( ) Formal parameters 2.پارامترهاي واقعي ( ) Actual parameters از پارامترهاي صوري هنگام اعالن روال و از پارامترهاي واقعي هنگام ميشود . فراخواني روال ها استفاده ‌ 340 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group پارامترهاي صوري در حالت کلي 2نوعند ،که با توجه به نوع روال و تصميم برنامه نويس مورد استفاده قرار مي گيرند: پارامترهاي مقداري ( ) Value parameters پارامترهاي متغيري ( ) Variable parameters 341 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group پارامترهاي مقداري ( ) Value parameters پارامترهاي مقداري ،پارامترهايي هستند که مقدار متغيرهاي فرستاده شده از برنامه اصلي را دريافت مي کنند و وظيفه آنها فقط عبور دادن مقدار به روال نمييابد ميباشد .لذا تغیيرات پارامترهاي مقداري در روال به برنامه اصلي انتقال ‌ ‌ پارامترهاي مقداري بصورت زير تعريف مي شوند : ‏Name ( var1 : type ; var2 : type , . . . وع مقداري اسم روال ‏edure کلمه ذخيره شده 342 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group : به برنامه زير توجه کنيد: مثال ram main x2 , y1 , y2 : integer ure test (A1,A2,B1,B2:integer);{formal param { main } x1 , x2 , y1 , y2 ) ; { Actual parameters } End of program } 343 • گروه آموزشی مهندسی ایران Iranian Engineering Group نکته :پارامترهايي که در روال بکار برده مي شود ،هيچ ارتباطي به پارامترهاي ارسالي از برنامه اصلي ندارند و فقط مقادير اين متغيرها از برنامه اصلي ارسال مي شود .لذا اسامي پارامترهاي صوري ممکن است هم اسم با پارامترهاي واقعي برنامه اصلي انتخاب شوند ،اين به معناي اين نيست که .اين پارامترها ( پارامترهاي صوري ) همان پارامترهاي واقعي هستند در مثال باال اين تناظر برقرار است: پارامترهاي واقعي ‏A1 ‏A2 ‏B1 ‏B2 متناظر است با پارامترهاي صوري ‏X1 ‏X2 ‏Y1 ‏Y2 344 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group متغيرهاي … Var2 , Var1 ,پارامترهاي مقداري هستند .توجه کنيد ،که اين پارامترها صوري هستند و نوع و ترتيب آنها بايد با نوع و ترتيب پارامترهاي واقعي در تناظر يک به يک باشند. 345 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group : به برنامه زير توجه کنيد: مثال ram main x2 , y1 , y2 : integer dure test ( A1 , A2 , B1 , B2: integer ); {formal par ...... Begin { main } .... test ( x1 , x2 , y1 , y2 ) ; { Actual ...... parameters } End. { End of program } 346 • گروه آموزشی مهندسی ایران Iranian Engineering Group همانطور که مالحظه مي کنيد ،روالي بنام testبا 4پارامتر مقداري در برنامه استفاده شده است .متغيرهاي y2 , y1 , x2 , x1از برنامه اصلي به روال testارسال شده و بترتيب مقادير اين متغيرها در متغيرهاي با همان نوع در B2 , B1 , A2 , A1قرار مي گيرند. 347 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group پارامترهاي متغيري ( ) Variable parameters يك پارامتر متغيري ،تغييرات يك پارامتر واقعي را بعنوان خروجي به برنامه برميگرداند .تفاوت اين گونه پارامترها با پارامترهاي مقداري در ارسال ‌ اصلي ميباشد .وقتي نياز است ،كه نتايج روال به تغييرات ايجاد شده در پارامترها ‌ ميكنند .برنامه اصلي برگردد ،از پارامترهاي متغيري استفاده ‌ ميباشد: اعالن پارامترهاي متغيري به صورت زير ‌ … Name ( var id1 : type ; var id2 : type , ست پارامترهاي متغيري اسم رواال كلمه ميباشند كه نتايج روال ،توسط تغيرهاي id1 , id2و … پارامترهاي متغيري ‌ ميشود. آنها به برنامه اصلي بازگردانده ‌ 348 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group و ميانگين دو عددExample; بنويسيد كه مجموعComputeSumAve روالي بنام: مثال Program .را محاسبه و نتيجه را در برنامه اصلي چاپ نمايد Var Num1, Num2: integer; Total,average: 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); 349 WriteLn('The Sum is= ', sum:8:2 , • گروه آموزشی مهندسی ایران Iranian Engineering Group پارامترهاي واقعي و صوري عبارتند از: پارامتر واقعي ‏Num1 ‏Num2 ‏sum ‏ave متناظر است با پارامترهاي صوري ‏Num1 ‏Num2 ‏Total ‏Average Num1 , Numپارامترهاي مقداري و sum , aveپارامترهاي متغيري ميشود. يباشند ،كه توسط آنها نتايج به برنامه اصلي برگردانده ‌ ‌ 350 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group متغيرهاي محلي و سراسري ( )Local and Global Variable در برنامه‌هاي فرعي دو نوع متغير عالوه از پارامترها مورد استفاده قرار ميگيرند .اين متغيرها متغيرهاي محلي يا متغيرهاي سراسر هستند.متغيرهاي ‌ محلي ،متغيرهايي هستند كه در بالك مربوط به خود قابل استفاده هستند .ولي ميباشند .متغيرهاي سراسري در تمام برنامه‌هاي فرعي قابل دسترس ‌ ميشوند متغيرهاي محلي در داخل برنامه‌هاي فرعي در قسمت تعاريف معرفي ‌ .و در خارج از روال قابل دسترسي نيستند 351 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group . روالي براي محاسبه مجموع و ميانگين دو عدد بنويسيد: مثال cedure CalcSumAve ( Num1 , Num2: Read ); Sum , Ave: Real ; in Sum:= Num1 + Num2 ; Ave:= Sum / 2 ; WriteLn(' The Sum is =' , sum:8:2 ) ; WriteLn(' The average is =',ave:8:2); ;{End of procedure} 352 • گروه آموزشی مهندسی ایران Iranian Engineering Group ميباشند .براي فراخواني روال در مثال باال sum , Aveمتغيرهاي محلي ‌ ) ;CalcSumAve(x.yكه درآن x.yدو متغير ازنوع Real ميباشند .به شكل زيرتوجه‌كنيد: ‌ پارامترهاي صوري پارامترهاي واقعي ‏X ‏Num1 ‏Num2 ‏Y متغيرهاي محلي ‏Sum ‏Ave 353 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group . خروجي برنامه زير را تعيين كنيد: مثال ram edure Example6; A , b , c: integer ; {Global Variables} test(var b: integer ; a: integer ); D: integer ; {local variable} n D:= 12 ; a:= b + d ; b:= a + c ; c:= c+ 2 ; n {Main} A:=1; b:=2; c:=3; Test(a,b); WriteLn( ' a = ' , a ,' b = ' , b , ' c = ' , c ) ; {End of program} خروجي برنامه باال بصورت زير است: a354=16 b=2 c=5 • گروه آموزشی مهندسی ایران Iranian Engineering Group روال‌ها معموًال به سه شكل ظاهر مي‌شوند: بكارگيري روال‌هاي بدون پارامتر بكارگيري روال همراه پارامترهاي با خاصيت ورودي بكارگيري روال همراه پارامترهاي با خاصيت ورودي و خروجي 355 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group روالهاي بدون پارامتر ‌ بكارگيري (بينياز از مقادير برنامه اصلي) در گاهي الزم است تا برنامه فرعي كامًال مستقل ‌ بخشهاي مختلف يك برنامه اجرا شود .در اين صورت نياز به استفاده از پارامتر ‌ ميكنند ميباشد و از روالهاي بدون پارامتر استفاده ‌ بيمفهوم ‌ ‌ . پيغامهاي خاصي را در قسمتهاي مختلف برنامه نمايش ‌ غالبًا زمانيكه بخواهيم پيغامها را در يك روال قرار داده و در صورت نياز ،روال ‌ دهيم ،اين ميكنيم. مربوطه را فراخواني ‌ 356 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group .ميشود ‌ بدون دريافت پارامتري فراخوانيHead روال: مثال Program Procedure Begin Example ; Head ; WriteL('Name Family Age No'); WriteLe('……………………………...'); End; Begin{Main} WriteLn( ' open university ' ) ; Head; End. 357 • گروه آموزشی مهندسی ایران Iranian Engineering Group بكارگيري روال همراه پارامترهاي با خاصيت ورودي همانطور كه قبًال اشاره كرديم ،هدف از بكارگيري پارامترها انتقال مقادير از ميباشد .اگر اين انتقال يك طرفه باشد يعني فقط از برنامه اصلي به روال‌ها ‌ برنامه اصلي به روال باشد ،اين نوع پارامترها فقط خاصيت ورودي خواهند داشت( .قبال در اين مورد توضيح داده شده است) در اين نوع روال‌ها از ميكنند .پارامترهاي مقداري استفاده ‌ 358 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group . را درخروجي چاپ نمايدN تا1 روالي بنويسيد كه توسط آن مربعات اعداد: مثال gram Example ; N , I: integer ; cedure sq ( M: integer ) ; Begin WriteLn (' sqart is = ' , M * M ) ; End; in {Main} Write(' Enter Number = ') ; RealLn ( N ) ; For I:= 1 to N do Sq (i) ; 359 . {End of program} • گروه آموزشی مهندسی ایران Iranian Engineering Group بكارگيري روال همراه پارامترهاي با خاصيت ورودي و خروجي دادهها از در اين نوع روال‌ها پارامترها دو خاصيت مهم دارند يكي انتقال ‌ برنامه اصلي به روال و ديگري انتقال يا ارجاع نتايج از روال به برنامه‌اصلي ميكنند ميباشد .در اين نوع روال‌ها از پارامترهاي متغيري استفاده ‌ ‌ . 360 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group مثال :روالي بنام changeبنويسيد كه توسط آن دوعدد بعنوان پارامتر دريافت كرده ،مقادير اين دو متغير را جابجا نموده و نتيجه را در برنامه اصلي چاپ نمايد. ; Program Example ‏Var ; A , b: integer ‏Procedure change (var x , y: ; )integer ‏var ;temp:integer ‏Begin ;Temp:=x ;X:=y ;Y:=temp 361 ;End • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group Begin { Main } ReadLn( a , b ) ; Change( a , b ); WriteLn (' a= ' , a , ' b= ' , b ) ; End.{End of program} 362 • گروه آموزشی مهندسی ایران Iranian Engineering Group ارتباط روال‌ها با يكديگر در پاسكال زير برنامه‌ها نه تنها از طريق برنامه اصلي بلكه از داخل يكديگر ميشوند نيز .فراخواني ‌ روالها از داخل يكديگر تابع قوانين كلي زير است: ‌ فراخواني قانون اول قانون دوم قانون سوم 363 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group قانون اول ميتوان ،دسترسي از هر برنامه (اصلي يا فرعي) به برنامه فرعي در صورتي ‌ داشت ،كه در بخش تعاريف آن برنامه (اصلي يا فرعي) قرار داشته باشد. برنامههاي فرعي ‌ ميتواند ،به كليه بطور مثال در شكل زير برنامه اصلي ‌ M p1,p2و… كه در بخش تعاريف برنامه اصلي قرار دارند ،مراجعه كند 364 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group Main برنامه اصلي ‏Proc1 ‏Proc2 برنامه هاي فرعي . . . . ‏ProcN 365 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group rogram Main; ar …….. rocedure proc1; ar …….. Begin ……… End; rocedure proc2; Var ……… Begin …… nd; Begin {Main} Proc1; Proc2; 366 End. • گروه آموزشی مهندسی ایران Iranian Engineering Group : به برنامه زير توجه كنيد: مثال شدهاند .لذ روالهاي proc1 , proc2داخل برنامه اصلي Mainتعريف ‌ ‌ ميتوان در برنامه اصلي به آنها دسترسي پيدا كرد. براحتي ‌ روالهاي معمولي ‌ ميتوانند قرار بگيرند .دقيقًا مثل روالها خود نيز داخل هم ‌ ‌ ا اين تفاوت كه در داخل روال بايد تعريف شوند .به اينگونه روالها ،اصطالحًا ميگويند. روالهاي متداخل يا تودرتو ‌ ‌ 367 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group قانون دوم روالها در بخش تعاريف يك برنامه به موازات يكديگر تعريف شوند و ‌ اگر روالهاي بعدي امكان رجوع به روال‌هاي قبلي وجود ‌ نه در داخل هم ،در ميتوان دسترسي پيدا كرد كه قبًال تعريف خواهد داشت .بعبارت ديگر به روالي ‌ شده باشد. 368 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group ميتوان بطور مثال اگر p1,p2,p3سه روال باشند دراينصورت ‌ بصورت زيرعمل كرد: برنامه اصلي ‏Main ‏P1 روال ها در شكل باال چون p2قبًال معرفي ميتوان آنرا داخل p3 شده است ‌ فراخواني كرد. ‏P2 ‏P3 ‏P2 369 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group قانون سوم برنامهأي بصورت متداخل باشند ،در اينصورت ‌ روالها در بخش تعاريف ‌ اگر شده، ميتوان به روال‌هاي بيروني كه قبًال تعريف ‌ از روال دروني ‌ مراجعه كرد و همچنين از روال دروني به روال‌هاي بيروني كه به موازات ميتوان دسترسي پيدا كرد. يكديگر قرار گرفته‌اند ،نيز ‌ روالهاي p2,p3دسترسي ‌ ميتواند به طور مثال در شكل زير روال ‌ p1 روالهاي p2 , p3مراجعه كند ميتواند به‌ ‌ پيدا كند .وهمچنين روال دروني ‌ p4 370 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group برنامه اصلي ‏Main ‏P3 روال ها ‏P2 ‏P1 371 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group اعالن روال‌ها به روش forward ميتوان در روال ديگر استفاده كرد، همانطور كه قبًال اشاره كرديم از روالي ‌ كه قبًال تعريف شده باشد .در توربوپاسكال نقيصه فوق به كمك اعالن forwardقابل حل است .بدين صورت كه اگر روالي به هنگام تعريف با ميتواند، اعالن forwardهمراه باشد ،بدون رعايت از پيش تعريف شدن ‌ در روالهاي ديگر ظاهر شود. 372 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group ميباشد: شكل اعالن به روش forwardبصورت زير ‌ ; ) Name ( parameters كلمه ذخيره شده ‏Procedure ; forward اسم ليست پارامترها كلمه ذخيره شده روال 373 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group ogram forward_Main ; r ……… ocedure proc3 ; forward ; ocedure proc1; r …….. gin ……… d; ocedure proc2; r ……… gin ……… proc3; …… d; 374 • گروه آموزشی مهندسی ایران Iranian Engineering Group : مثال Procedure proc3; var …….. Begin ……. End; Begin {Main program} ……… proc1; proc3 ميكنيد با اعالن روال ‌ همانطور كه مالحظه proc2; ميتوانند به آن ‌ بقيه روالها،forward بصورت proc3; .دسترسي پيدا كنند ……… End. {End of program} 375 • گروه آموزشی مهندسی ایران Iranian Engineering Group توابع ()Functions روالها، ‌ ميباشند .توابع مانند نوع ديگري از برنامه‌هاي فرعي ،توابع ‌ ميتوانند ،تعدادي روالها ‌ ‌ پيمانههاي مستقلي هستند .با اين تفاوت كه ‌ خروجي داشته باشند ،در حالي که توابع فقط يك خروجي دارند .در روال‌ها معموًال ميشود .ولي خروجيها توسط پارامتر به برنامه‌ اصلي ارجاع داده ‌ ‌ ميگيرد. در توابع اينكار به نحو ديگر انجام ‌ 376 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group ميباشد: شكل كلي اعالن يك تابع بصورت زير ‌ ‏Function Name ( List Of Parameters ) : ; Function Type نوع تابع اسم تابع ليست پارامترها کلمه ذخيره شده 377 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group :نکته ميتواند ،يك خروجي داشته باشد .نوع خروجي تابع ،همان نوع تابع تابع فقط ‌ ميشود .لذا با توجه به نوع خروجي تابع ،نوع تابع تشخيص داده محسوب ‌ ميشود .ذكر اين نكته خالي از لطف نيست كه ،نوع پارامترهاي صوري توابع ‌ برنامههاي فرعي هستند كه فقط يك ‌ معموًال مقداري هستند چرا كه توابع نوعي برميگردانند .لذا استفاده از پارامترهاي از نوع متغيري پسنديده ‌ خروجي نميباشد( .اشكال كامپايلري در توربوپاسكال ندارد ولي در پاسكال استاندارد ‌ اين كار اشكال كامپايلري دارد). ميشود .توابع مثل روالها بعد مقدار خروجي توابع توسط اسم تابع برگردانده ‌ ميشود .از قسمت تعاريف برنامه اصلي ظاهر ‌ 378 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group :ميباشد ‌ شكل كلي توابع بصورت زير Name ( Parameters ) : Function Type ; Var ……….. Begin …………….. …………….. …………….. Name := Resualt Of Function ; End ; 379 • گروه آموزشی مهندسی ایران Iranian Engineering Group ميرسد: توجه به نكات زير در بكارگيري توابع ضروري بنظر ‌ .تمام پارامترهاي تابع بايد از نوع مقداري باشند نوع داده نتيجه تابع در انتهاي عنوان تابع و بعد از ليست پارامترهاي صوري ميگيرد .قرار ‌ ميشود .در بدنه تابع ،خروجي تابع با نسبت دادن مقدار به نام تابع مشخص ‌ 380 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group am on برنامهأي بنويسيد كه يك عدد از ورودي دريافت كرده سپس ‌ : مثال فاكتوريل عدد را محاسبه،fact توسط تابعي بنام .در برنامه اصلي چاپ نمايد Example ; N: Integer ; Fact ( M : Integer ) : longint ; P , I : Integer ; P:= 1 ; For i:= 2 To P:= P * I ; Fact:= P ; M do { Main } Write ( ' Enter Number = ' ) ; Readln ( N ) ; Writeln (' Factorial is = ' , Fact ( N ) ) ; {Call Funct 381 • گروه آموزشی مهندسی ایران Iranian Engineering Group ناحيه داده‌ها بعد از فراخواني بشكل زير مي‌باشد: ناحيه داده هاي اصلي پارامترهاي صوري ‏M متغيرهاي محلي ‏P ‏I Factناحيه داده هاي پارامترهاي واقعي ‏N نتيجه تابع ? نتيجه تابع ? 382 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group توابع بازگشتي (Recursion )Functions پيمانهاي كه ‌ ميتواند ،خودش را فراخواني نمايد. در پاسكال يك تابع يا روال ‌ ميكند يك پيمانه بازگشتي نام دارد .اين نوع توابع در خودش را فراخواني ‌ ميكنند .اين فراخواني تا برقراري يك بدنه خود ،خودشان را فراخواني ‌ ميكند .سپس ميشود ،ادامه پيدا ‌ شرط خاص كه غالبًا به يك عدد ثابت ختم ‌ ميشود و در نهايت نتيجه تابع حاصل مقدار تابع از پايين به باال محاسبه ‌ ميشود ‌ . 383 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group ميكند ،مقادير فعلي متغيرهاي خود هنگامي كه تابع بازگشتي به خود مراجعه ‌ ميدهد ،اگر بازگشت به تابع را در محلي از حافظه بنام پشته ( )stackقرار ‌ بازگشتي مجددًا صورت گيرد ،مقادير فعلي متغيرها مجددًا بدنبال مقادير قبلي ميگيرند .هنگامي كه شرط پاياني در و اصطالحًا در پشت مقادير اوليه قرار ‌ تابع بازگشتي رخ مي دهد ،در اولين بازگشت مقاديري را كه هنگام مراجعه ميدهد و بهمين به خود ،در پشته نگهداري كرده ،مجددًا در دسترس قرار ‌ محاسبه شود. ميشود تا مقدار تابع بازگشتهاي بعدي اين عمل تكرار ‌ ‌ ترتيب در 384 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group ميدهد. شكل زير نحوه قرار گفتن مراجعه‌هاي يك تابع بازگشتي به پشته را نمايش ‌ شرط پاياني مقادير متغيرها درآخرين بازگشت به تابع . . . . . مقادير متغيرها در سومين بازگشت به تابع مقادير متغيرها در دومين بازگشت به تابع مقادير متغيرها در اولين بازگشت به تابع 385 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group ترتيب دسترسي به مقادير هنگام بازگشت از تابع بازگشتي از باال به پايين مي‌باشد و ميتوان آنرا بصورت زير نمايش داد: ‌ مقادير متغيرها درآخرين بازگشت به تابع . . . . . مقادير متغيرها در سومين بازگشت به تابع مقادير متغيرها در دومين بازگشت به تابع مقادير متغيرها در اولين بازگشت به تابع 386 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group برنامه‌أي بنويسيد كه با استفاده از توابع بازگشتي فاكتوريل عدد صحيح: مثال . را محاسبه نمايدN am Example ; N : integer ; ion 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 Fun 387 • گروه آموزشی مهندسی ایران Iranian Engineering Group ميباشد: در برنامه باال ترتيب قرار گرفتن مقادير در پشته بصورت زير ‌ ‏N=1 ‏Fact := 1 ) 2 * Fact ( 1 ) 3 * Fact ( 2 ) 4 * Fact ( 3 ‏N=5 ) Fact ( 4 * 5 388 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group تابعي براي محاسبه بزرگترين مقسوم عليه مشترك دو عدد صحيح: مثال . بنويسيدN , M Function GCD ( N , M: integer ) : Integer ; Begin If ( N <= M ) and ( M Mod N = 0 ) Then GCD:= N Else GCD:= GCD ( M ,N mod M ) ; End ; 389 • گروه آموزشی مهندسی ایران Iranian Engineering Group روالها ‌ مقايسه توابع و روالها هر دو برنامه‌هاي فرعي هستند ،كه بطور مستقل وظايفي را بر ‌ توابع و ميباشند كه عبارتند از :عهده دارند .ولي در اين ميان از بعضي جنبه‌ها متفاوت ‌ روالها از طريق عبارات روال فراخوانده ‌ نحوه فراخواني آنها با هم متفاوت است. ميشوند ،درصورتي كه فراخواني تابع توسط عبارات مقايسه‌أي و يا تخصيص ‌ ميگيرد .نتيجه به يك متغير صورت ‌ هنگام اعالن يك تابع ،نوع تابع يا نوع نتيجه حاصل از تابع بايد ذكر شود ،در 2. روالها نيازي به اين كار ندارند ‌ .صورتي كه ميتوانند ،چندين خروجي 3. روالها ‌ ‌ برميگردانند ،ولي ‌ توابع فقط يك خروجي 390ها روال ‌ ميشود ولي برگردانند .درضمن نتيجه توابع توسط اسم تابع فرستاده ‌ برميگردانند ‌ .از طريق پارامترها ،نتايج را • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group آرايهها به توابع و روال‌ها ‌ طريقه ارسال نميتوانيم ميباشند ،لذا براي ارسال آنها ‌ دادهها ‌ مجموعهأي از ‌ ‌ آرايهها خود ‌ نميتوان آنها از روش معمولي ارسال پارامترها استفاده كنيم .و بطور مستقيم ‌ را به برنامه‌هاي فرعي انتقال داد .براي ارسال آرايه‌ها به عنوان پارامتر به ميكنند .دستور Typeقبل از برنامههاي فرعي از دستور Typeاستفاده ‌ ‌ ميرود و توسط اين دستور در واقع يك نوع تعاريف برنامه اصلي بكار ‌ دادههاي ميتوان ‌ سادهسازي ‌ ‌ ميشود .و با اين سادهسازي در تعاريف فراهم ‌ ‌ ساخت يافته را به برنامه‌هاي فرعي منتقل كرد. 391 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group فرم كلي دستور Typeدر بخش تعاريف بصورت زير است: تعريف داده ساخت يافته = شناسه ‏Type ميكنيم: براي مثال يك ارايه از نوع صحيح را تعريف ‌ ‏integ ‏array [1…100] of = No ; Type ميشود .اگر بخواهيم متغيري در اينصورت تعريف آرايه به No ،نسبت داده ‌ ميكنيم: از نوع آرايه باال تعريف كنيم ،آنرا از نوع Noتعريف ‌ ‏ar ; Number: No 392 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group ثال :برنامه‌اي بنويسيد كه يك آرايه حداكثر 100عنصري را از ورودي دريافت كرده ،سپس عدد را از ورودي خوانده ،توسط تابعي بنام Search محل وقوع عدد در آرايه را نمايش دهد. ; integer ‏of ; Example ]a = array [1.. 100 ; B: a ; N : Word ‏Search (b:a; N: Word ; x: integer ) : Wo ‏m ‏on ‏I , Index: Word ; Flag: Boolean ; { local vari ; Index:= 0 ; Flag:= TRUE 393 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group While ( I <= N ) And ( flag ) do Begin If b[ I ] = x Then Begin Index:= I ; Flag:= FALSE ; End ; Inc ( I ) ; End ; Search:= Index ; End ; {********************************************* } 394 • گروه آموزشی مهندسی ایران Iranian Engineering Group Begin { Main } Writeln ( ' Enter Number ' ) ; Readln ( N ) ; For I:= 1 To N Do Readln ( b[ I ] ) ; Writeln ( ' Enter Number ' ) ; Readln ( x ) ; If Search ( b , N , x ) = 0 Then Writeln ( ' Not Found ' ) ; Else Writeln ( Search( b , N , x ) ) ; 395{ End End. Of Program } • گروه آموزشی مهندسی ایران Iranian Engineering Group تمرينات • روال Downرا در نظر بگيريد: ‏cedure ; ) Down ( N: Integer ‏in ‏While N > 0 do ‏Begin ; ) Write ( N: 3 ; ) Dec ( N ; End ; ميشود ف) وقتي روال بصورت ) down (5فراخواني شود ،چه چيزي چاپ ‌ ب) مقدار پارامتر واقعي Nبعد از اجراي روال چيست؟ 396 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group • تابع بازگشتي زير را در نظر بگيريد: ‏ion ‏MyStery ( M , N: Integer ) : integer ‏If ‏N = 1 Then ‏MyStery:= 1 ‏Else ; ) MyStery:= M * MyStery ( M , N – 1 } { End Of Function ف) تابع بازگشتي باال را به ازاء مقادير N=4 , M=5فراخواني كنيد. ب) تابع بازگشتي باال را به ازاء مقادير N=5 , M=3فراخواني كنيد. 397 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group تمرينات برنامه‌نويسي ‏ برنامهاي بنويسيد كه اطالعات حداكثر 100دانشجو كه عبارتند از: ‌ ‏Name Familyفاميلي اسم دانشجوئي را از ورودي دريافت كرده سپس: الف) توسط روالي بنام sortاطالعات را برحسب شماره دانشجوئي مرتب كند. St_Noشماره ب) توسط تابعي بنام searchشماره دانشجوئي فردي را از ورودي دريافت نمايد ،در صورتي كه شخص موردنظر در ليست باشد ،ساير اطالعات آنرا 398 نمايش دهد. • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group  آرايهأي از نوع صحيح با حداكثر 100عنصر را در نظر بگيريد. ‌ برنامهأي بنويسيد كه ابتدا آرايه را از ورودي دريافت كرده سپس با استفاده از ‌ يك تابع بازگشتي بيشترين مقدار آرايه را محاسبه نمايد. ميباشد را درنظر عنصري كه شامل اسامي افراد ‌ ‌ دو آرايه مرتب حداكثر100 بگيريد. برنامهاي بنويسيد كه نخست دو آرايه را از ورودي دريافت نموده سپس توسط ‌ روالي بنام mergeاين دو آرايه در هم ادغام نموده و در آرايه سومي قرار دهد 399 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group فصل 12 مجموعهها و داده‌هاي شمارشي ‌ هدفهاي كلي مفهوم مجموعه و داده‌هاي شمارشي در زبان پاسكال ‌ مجموعه و داده‌هاي شمارشي به عنوان متغير برنامه استفاده از مجموعه‌ها و داده‌هاي شمارشي در 400 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group رفتاري هدفهاي÷ :دانشجو پس از مطالعه اين فصل بايد بتواند مفهوم مجموعه و داده‌هاي شمارشي را درك كند. بتواند در صورت لزوم از مجموعه و داده‌هاي شمارشي استفاده كند. 401 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group مقدمه دادهها كه از نظر نوع يكسان هستند ،در غالب مجموعه و يا تعداد محدودي از ‌ ميشوند كه مفهومي ‌شبيه در رياضيات دارند گونههاي شمارشي نگهداري ‌ ‌ . براي استفاده در مواردي خاص نظير روزهاي هفته و يا نوع ماشينها و ...كه ميباشند ،استفاده از دادههاي پشت سر هم ‌ ترتيبي هستند و يا يك مجموعه از ‌ ميكند .هر چند وجود آنها به عنوان اين ساختارها كار را بسيار راحت ‌ الزامينيست .بهرحال به عنوان ابزارهايي از زبان پاسكال ‌ دادهاي، ساختارهاي ‌ ‌ قابلفهم و ميرسند و مسئله را به صورتي ‌ هستند كه در مواقعي ،ضروري بنظر ‌ ميكند .راحت حل ‌ 402 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group  مجموعهها ()Sets ‌ در زبان پاسكال مجموعه ،مفهومي ‌شبيه به مفهوم مجموعه در رياضيات جديد دارد .متغيري است كه شامل ليستي از اعداد صحيح ،كاراكتر ،بولين و يا از نوع ميباشد .از ميباشد كه داراي تعداد عناصر محدود به حداكثر 256تا ‌ شمارشي ‌ دادههايي از اين جهت بسيار شبيه به يك آرايه در زبان پاسكال است كه شامل ‌ ميباشد ،ولي آرايه داراي عناصر محدودي نيست و در ضمن مانند يك نوع ‌ نميشود .آرايه تعريف ‌ 403 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group تعريف مجموعه‌ ميكنيم: براي تعريف يك مجموعه از كلمات كليدي set ofبصورت زیر استفاده ‌ ‏Type ;Name= Set of Type Of Set :مثال ‏Type ;Digit_type = 0..9 ‏Digit = Set of ‏Digit_type 404 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group مثال: V ar ch: set of char; #0..#255 bool: set of boolean; num: set of byte; false..true 0..255 x: set of 100..200; y: set of 'a'..'z'; z: set of '0'..'9'; 405 • گروه آموزشی مهندسی ایران Iranian Engineering Group مجموعهها ‌ عمليات روي در رياضيات عمل عضويت وجود دارد كه به اين معني است كه متغيري ميباشد يا خير .اين عمل در زبان پاسكال با كلمه كليدي عضو مجموعه ‌ ‏in ميگيرد .اگر عضويت صحيح باشد جواب Trueوگرنه صورت ‌ ‌ ‏False ميتوان با عالمات شرطي =،>< ، ميباشد .همچنين دو مجموعه را ‌ ‌ ميباشند. <= و >= مقايسه كرد كه همگي داراي خروجي درست يا غلط ‌ وليعالمات شرطي < و > در مورد مجموعه‌ها كاربردي ندارد. ‌ 406 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group a: set of byte; مثال: Begin a:= [1..3,4]; 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 write([1,2] = [1,2,3]); False 407 write([1,2] <= [1,2,3]); • گروه آموزشی مهندسی ایران Iranian Engineering Group مجموعهها ‌ عملگرها روي ميتوانيم مجموعه‌ها را با هم اجتماع ،اشتراك و تفاضل كنيم كه در رياضيات ‌ ميباشد .اجتماع اين عمليات در پاسكال با عملگرهاي * ،+و -به ترتيب ‌ دو مجموعه تركيبي از همه عضوهاي آنها است و اشتراك يعني عضوهايي كه در هر دو مجموعه مشترك است و تفاضل يعني اعضايي كه در مجموعه ميباشد و در مجموعه دوم وجود ندارد. اول ‌ 408 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group مثال: ar a: set of byte; b: set of 0..10; c, d, e: set of byte; egin 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; nd. 409 • گروه آموزشی مهندسی ایران Iranian Engineering Group d=[2,3] e=[0,1] :در استفاده از مجموعه ها به نکات زیر توجه کنید ميتواند مجموعه باشد كه قبًال در تايپ تعريف شده .1آرگومان ورودي روالها ‌ باشد ،نه اينكه مستقيم در روال به عنوان آرگومان بيايد .ولي خروجي يك تابع نميتواند از نوع مجموعه باشد. ‌ .2براي نوشتن يا خواندن مجموعه‌ها بايد عضو به عضو عمليات صورت نميكنند. بگيرد و مستقيمًا توابع Write، Readروي آنها كار ‌ 410 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group مثال :برنامه‌اي بنويسيد كه تعداد محدودي عدد مختوم به -1را از ورودي بخواند و در يك مجموعه از اعداد صحيح قرار بدهد .سپس اعضاي اين مجموعه را با توجه به مجموعه ساخته شده در خروجي چاپ كند: ; Program test ‏Var ;num , temp : set of byte ; I , c : integer ‏Begin ‏Writln ('Enter numbers: ;) ; ) Readln( I ; ] [ =Num : ; c := 0 411 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group while ( i > -1) do begin c := c + 1 ; temp := [ I ] ; num := num + temp ; Readln( I ) ; end; for I := 0 to 255 do if ( i in num ) then write( i:5 ) ; End.{ End Of Program } 412 • گروه آموزشی مهندسی ایران Iranian Engineering Group  دادههاي شمارشي ‌ ()Enumeration دادههاي شمارشي ،يك مجموعه مرتب از اعداد است كه در برنامه ،هر عدد ‌ داراي نام بخصوصي است .اين نامها در داخل دو پرانتز باز و بسته قرار ميگيرند مگر اينكه برنامه‌نويس به آنها ميگيرند و بترتيب از صفر مقدار ‌ ‌ .مقدار مخصوصي بدهد 413 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group : به مثال زير توجه كنيد Type Cars_type = (Peykan, Pride, Pegout, K); Var Cars: cars_type; :دادههاي شمارشي را بگيرد ‌ ميتواند مقادير داخل ‌ cars حال در برنامه cars:= Pride; cars:= PK; 414 • گروه آموزشی مهندسی ایران Iranian Engineering Group : به مثال زير توجه كنيد Type Days_type = ( 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. خروجی: i=3 j=5 415 • گروه آموزشی مهندسی ایران Iranian Engineering Group :نکته ميتواند باشد كه متغير داده شمارشي شبيه مجموعه‌ها حداكثر داراي 256عضو ‌ ميكند. ميشود و لذا يك بايت حافظه را اشغال ‌ شمارهگذاري ‌ ‌ از صفر تا 255 416 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group عمليات روي داده‌هاي شمارشي ميتوانند در typeبرنامه تعريف شود دادههاي شمارشي همانند هر نوع تايپي ‌ ‌ ميتواند درنظر گرفته شود و به عنوان آرگومانهاي روالها و يا خروجي توابع ‌ نميتوان بكار برد. ولي حتمًا بايد در typeتعريف شده باشد و مستقيمًا ‌ ميباشند ،لذا ابتدا در typeتعريف آرايهها نيز ‌ ‌ اين عمل مشابه مجموعه‌ها و ميشود وگرنه ميشود ،سپس به عنوان ورودي و يا خروجي روالها استفاده ‌ ‌ دادهها ميتوان در آرايه‌ها از ‌ خطاي كامپايلري پيش خواهد آمد .همچنين ‌ شمارشي استفاده كرد. 417 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group مثال :مشابه مجموعه‌ها نمي‌توان داده‌هاي شمارشي را مستقيمًا Read يا Writeكرد .برنامه‌اي بنويسيد كه اعداد صفر تا شش را به مراتب دريافت كرده و به كمك داده‌هاي شمارشي روزهاي متناظر با آنها را از شنبه تا جمعه را حساب كند. ‏Program test: ‏Type = days_type ; ) at,sun,mon,tue,wed,thu,fri ‏Var ;day: days_type ;i: byte ‏Begin ;) ' Write('Enter your days number: ;)Readln(i ‏While (i>=0) and (i<=6) do begin 418 ‏Case ‏I ‏Of • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group 0: day:= sat; 1: day:= sun; 2: day:= mon; 3: day:= tue; 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; 419 Readln(i); • گروه آموزشی مهندسی ایران Iranian Engineering Group تمرينات ر ] A=[1,3,5,7و ] B=[2,4,6و ] C=[1,2,3باشد عبارات زير ر ابی کنيد. الفA + (B –C) - )A + (B*C ب- ج- د– ‏A+B+C ‏in A 2 420 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group  برنامهاي بنويسيد تا مجموعه اي از كاراكترهاي كوچك را گرفته و به يك ‌ مجموعه از كاراكترهاي حروف بزرگ متناظر با آن تبديل كند. دادههاي شمارشي ،برنامه اي بنويسيد كه نام دانشجويان يك كالس را به كمك ‌ در برگيرد و هر دانشجو نيز يك شماره داشته باشد .سپس با دريافت نام او شماره او در نمايشگر چاپ شود. 421 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group فصل 13 ركوردها )(Records هدفهاي كلي مفهوم ركورد و اجزاي آن انواع ركوردها و استفاده از آن در برنامه معرفي مزاياي ركوردها در برنامه •گروه 422 آموزشی مهندسی ایران ‏Iranian Engineering ‏Group رفتاري هدفهاي÷ :دانشجو پس از مطالعه اين فصل بايد بتواند مواقع لزوم ركورد را تشخيص دهد. از ركوردها در برنامه‌اش استفاده كند. برنامه‌هاي بزرگ و با داده‌هاي زياد بنويسد. 423 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group مقدمه ميشود ،ركورد نام دارد كه جهت يافتهاي كه در اينجا مطرح ‌ ساخت ‌ ‌ نوع داده دادههاي مختلف نظير نام ،نام خانوادگي ،سن و آدرس براي يك نگهداري ‌ ميرود .ركوردها برخالف آرايه‌ها كه داراي عناصر از يك دانشجو بكار ‌ ميباشند .اطالعات از جنس و نوع هستند ،داراي عناصر از انواع مختلف ‌ نميتوان در آرايه نگهداري كرد چرا كه داراي جنس مشابه نوع مختلف را ‌ ميشود. نيستند و لذا از ساختاري به نام ركورد استفاده ‌ 424 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group تعريف ركوردها ساختيافته ای که از یک سری داده ها یا اطالعات مرتبط به هم ‌ نوع داده .تشکیل می شود ‌ .هر کدام از اطالعات را یک فیلد می نامند بطور كلي تعريف نوع ركورد در زير آمده است: ‏ype ‏Name = Record ;Field1-list : type1 ;Field2-list : type2 .. .. ;Fieldn-list : typen 425 ;End • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group : استفاده مي‌شود كه مطابق زيرمي‌باشدRecord از كلمه كليدي،راي ساختن ركورد Type Student = Record Name: String [10]; Family: String [15]; Age: integer; Address: String; End; ميتوان در ‌ حال. استRecord از نوعStudent در اين تعريف : برنامه تعريف كردvar Var S: Student; 426 • گروه آموزشی مهندسی ایران Iranian Engineering Group دسترسي به فيلدهاي ركورد براي دسترسي به فيلدهاي ركورد ازعالمت ' '.استفاده مي‌شود .يعني بصورت‌زير: نام فيلد .نام متغير ركورد مثال :برنامه‌اي بنويسيد كه ركوردي از نوع ‌اعداد ايجاد كرده و مقادير ي كند. آنرا مقداره ‌ 427 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group Type Numbers = record a, b, c = integer; x, y, z = Real; end; Var Num = Numbers; begin Num. a: = 2; Num. b: = 3; Num. x: = 2.5; Num. y: = 3.5; Num. z: = 10; Write (Num.a + Num.b + Num.x + Num.y + Num.z); 428 End. • گروه آموزشی مهندسی ایران Iranian Engineering Group برنامهاي بنويسيد كه ركورد يك دانشجو را داشته باشد و با توجه ‌ مثال : به جنس او كلمه آقا و يا خانم را به همراه نام و نام خانوادگي‌اش را چاپ كند. ‏Type ‏Student = record ;Id: integer ;]Name: string[10 ;]Family: string[15 ;Sex: char ;Age: integer ;End ‏Var ;Stu: student 429 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group Begin Stu.id:= 80132; Stu.name:='Ali'; Stu.family:='Ahmadi'; Stu.sex:='M'; Stu.sge:=18; Case sex of 'M': write('Mr.'); 'F': write('Mrs.'); end; write(stu.name, ' ' , stu.family); End. 430 • گروه آموزشی مهندسی ایران Iranian Engineering Group بدست آوردن حجم يك ركورد براي بدست آوردن فضاي اشغال شده توسط ركورد ابتدا بايد فضاي اشغال تماميفيلدها را بدست آورده و سپس باهم جمع كنيم. ‌ شده توسط مثال زير را درنظر بگيريد: 431 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group ype nd; ar List1 = Array [1… 5] of integer; List2 = Array [1… 5] of char; Rectype = Record A, B: Real;  6*2 C, D: String [10];  10+1 F: Array [1… 10] of Boolean;  G: list1;  2*5 1*10 x: Rectype; .ميشود ‌ بايت فضا اشغال10+10+11+12=43 432 • گروه آموزشی مهندسی ایران Iranian Engineering Group ركوردهاي تودرتو ميتوانند از نوع ميتوانند از هر نوعي باشد ،از جمله ‌ فيلدهاي يك ركورد ‌ ركورد ديگري باشند .در اينجا نيز مشابه قبل دسترسي به همان صورت ‏Type ميآيد. ميباشد فقط به تعداد ركوردهاي تودرتو '.' ،پيش ‌ ‌ ‏Rec = record به مثال زيرتوجه‌ كنيد: ‏a, b: ;integer ;c: char ‏x: Record ‏p: ;integer ‏q: 433 ;integer • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group Var ‏r: ;Rec دراينجا يك ركورد تودرتو به نام Recتعريف شده ‌است كه متغير rاز آن ميتوان نوع ‌تعريف شده است .سپس براي دسترسي به فيلدهاي ‌ a , b ,c به صورت زير عمل كرد: ‏r.a ‏r.b ولي براي دسترسي به فيلدهاي p ,qچون متعلق به ركورد xنيز هستند داريم: ‏r.x.p ‏r.x.q 434 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group  آرايهاي از ركوردها ‌ دادههاي مختلفي وجود هنگاميكه ما تعدادي داده مشابه داريم ولي در هريك‌ ، ‌ آرايهاي از آن تعريف كنيم. ‌ ميتوانيم يك ركورد تعريف كرده ،سپس دارد ‌ ‏pe ‏Student = record ;]Name: string[10 ;Id: integer ;Age: integer ;End ;Arr_stu: array[1..10] of student ;S: Arr_stu 435 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group در باال ابتدا يك ركورد دانشجو تعريف شده است ،سپس به تعداد 10نفر دانشجو تحت آرايه Arr_stuشكل گرفته است و سرانجام متغيري به نام S از نوع آن تعريف شده است. مشابه ساختار آرايه ،چيزي عوض نشده است و فقط هر عنصر آرايه ،يک ميباشد. ميباشد كه داراي سه فيلد مطابق جدول فوق ‌ ركورد ‌ براي دسترسي به آرایه فوق داريم: ‏S[1].name ‏S[1].id ‏S[1].age ‏S[2].name ‏S[2].id .. .. .. 436 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group ارسال ركورد به زيربرنامه‌ها ميتوان مشابه انواع تعاريف ساده ديگر به صورت پارامترهاي ركوردها را ‌ نميتواند متغير و مقدار به زيربرنامه ارسال كرد .ولي نوع برگشتي توابع ‌ از نوع ركورد باشد ،يعني حتمًا بايد از نوع ساده نظير integer، charو... نميتواند باشد. باشد و از انواع تركيبي نظير ركورد ،آرايه ،مجموعه و فايل ‌ اگر بخواهيم ركوردي را بصورت پارامتر به زيربرنامه ارسال كنيم ،ابتدا بايد آنرا در typeتعريف كرده و سپس ارسال شود وگرنه كامپايلر خطا صادر ميكند. ‌ 437 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group دانشجو ايجاد30 را برايstu ميخواهيم برنامه‌اي بنويسيم كه ركورد ‌ : مثال . به كمك زيربرنامه مقداردهي شده و چاپ شوند،كرده Program test; Const no = 30; Type Stu-rec = Record Name: string [10]; ID: integer; Age: record Day: integer; Month: integer; Year: integer; End; End; 438 Stu_arr=array[1..no] of • گروه آموزشی مهندسی ایران Iranian Engineering Group Var Stu: stu_rec; Procedure ReadStu(Var S: Stu_rec); Var i: integer; Begin for i:= 1 to no do Readln(S[i].name, S[i].id, S[i].age.day, S[i].age.month, S[i].age.year); End; 439 • گروه آموزشی مهندسی ایران Iranian Engineering Group Procedure WriteStu(S: Stu_rec); Var i: integer; 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. 440 • گروه آموزشی مهندسی ایران Iranian Engineering Group تمرينات گونههاي حيوانات يك پارك نظير پرندگان وحشي ركوردي شامل ‏براي ‌ نام ،دسته ،محيط زندگي ،سن بسازيد .در نظر بگيريد كه در پارك 100 گونه از يك پرنده وحشي وجود دارد (راهنمايي :آرايه‌اي از ركورد با فيلدهاي گفته شده بسازيد). ‏ برنامهاي بنويسيد كه براي نگهداري تاريخ به صورت روز ،ماه و سال ‌ براي 100سال بكار رود .در واقع به صورت تقويم باشد و جمله‌اي در مورد آن تاريخ را نگهداري كنيد؟ (راهنمايي :آرايه‌اي 366تايي از روز بهمراه آرايهاي از 12ماه و يك سال و يك رشته را به صورت يك ركورد در نظر ‌ گرفته سپس براي 100سال بصورت يك آرايه صدتايي در نظر بگيريد). 441 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group فصل 14 فــايـلها )(Files هدفهاي كلي مفهوم فايل و انواع آن موارد استفاده از فايلها 442 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group رفتاري هدفهاي÷ :دانشجو پس از مطالعه اين فصل بايد بتواند در برنامه‌اش از فايلها استفاده كند.. براي برنامه‌هاي با داده‌هاي زياد از فايل استفاده كند.. با فايلهای داده‌اي و بايزي برنامه‌نويسي كند. 443 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group مقدمه ميكنيم. دادهها از ساختاري به نام فايل ( )Fileاستفاده ‌ براي ذخيره دائمي ‌ ميگرفت كه گذرا و فقط تاكنون همه عمليات الزم در حافظه اصلي انجام ‌ به زمان اجراي برنامه و روشن بودن كامپيوتر بستگي داشت .ولي در فايلها دادهها در فايلهايي قرار دارند كه حتي بعد از خاموش چنين نيست ،بلكه ‌ كردن كامپيوتر ،بعدها قابل دسترسي است. 444 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group فايلهاي متني ()Text يك فايل متني از تعداد كاراكتر تشكيل شده است كه با يك اسم در روي ديسك دادههاي داخل آنرا ميتوانيد ‌ ذخيره شده است .چون فايل از نوع متني است ‌ مشاهده كنيد. دادهها در يك فايل متني بدين صورت است كه تعدادي خط وجود دارد ساختار ‌ ميشوند و در انتهاي فايل نيز عالمت EOFقرار كه به عالمت EOLNختم ‌ دارد .طول خطوط نامشخص است و اندازه فايل ممكن است بسيار بزرگ يا كوچك و يا تهي باشد. 445 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group طريقه ایجاد يك فايل متني تعریف یک متغیر فایلی 1. نسبت دادن اسم فایل به متغیر فایلی 2. Rewriteایجاد فایل با دستور 3. 446 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group تعریف یک متغیر فایلی ;Name : Text نسبت دادن اسم فایل به متغیر فایلی Rewriteایجاد فایل با دستور ‏Assign(FileVar , ) ’‘NameFile ‏Rewrite( FileVar ) 447 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group مثال :برنامه‌اي بنويسيد كه از ورودي 10عدد دريافت كند و آنها را به ترتيب هر كدام دريك خط ازيك فايل خروجي بريزد و در انتها تعداد و مجموع آنها را بنويسد. ‏r ;f: Text ;A: 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 + A[i ;end 448 ‏Assign ;)'(f, 'out.dat • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group do ‏For ‏i: = 1 ‏to 10 ;)]Writeln (f, A[i ;)Writeln (f, Sum ;)Close (f ‏End. بعد از نوشته شدن اطالعات در فایل ،فایل باید بسته شود برای اینکار از :روال زیر استفاده می شود )Close(FileName 449 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group طريقه خواندن اطالعات از يك فايل متني تعریف یک متغیر فایلی 1. نسبت دادن اسم فایل به متغیر فایلی 2. باز کردن فایل برای خواندن با 3. ‏Resetدستور 450 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group باز کردن فایل برای خواندن با دستور ) Reset ( FileName دستور Readو Readlnبرای خواندن اطالعات از فایل بکار می روند . ميرود .اين عمل دادههاي مورد نظر به سطر بعد ‌ Readlnبعد از خواندن ‌ ميباشد .ولي قبل از استفاده از اين دستورات بايد براي Writelnنيز چنين ‌ فايل متني براي خواندن يا نوشتن باز شود .دستور Resetفايل متني را براي ميبرد. ميكند و مكان نما را ابتداي فايل ‌ خواندن باز ‌ دستور Rewriteفايل متني را براي نوشتن در آن باز كرده ،و مكان نما را به ميبرد. ابتداي آن ‌ 451 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group ميخواهيم اعداد داخل فايل ‌ 'test.dat' حال بافرض موجود بودن فایل متني : را كه پنج تا هستند را از فایل خوانده باهم جمع كنیم rogram usefile ; ar f: Text; str1, str2: string; a, b, c, d, e: integer; egin Assign (f, ' Test. dat '); Reset (f); Readln (f, str1); Readln (f, a, b, c); Readln (f, d, e, str2); Write (str2, ': ' , a + b + c + d + e ); Close (f); 452 nd. • گروه آموزشی مهندسی ایران Iranian Engineering Group برنامه‌اي بنويسيد كه يك فايل متني شامل چند جمله را از ورودي دريافت: مثال .كرده و يك كپي از فايل درخروجي بسازد ar f1,f2: Text; str1,str2 : string ; ch : char ; egin write('Enter Input file: '); readln(str1); write('Enter output (copy) file: readln(str2); assign(f1,strl); reset(f1); assign(f2,str2); 453 rewrite(f2); • گروه آموزشی مهندسی ایران Iranian Engineering Group در اين برنامه ابتدا دو فايل به نامهايشان نسبت داده مي‌شوند و ترتيب براي ميشوند .سپس توسط eofشرط خاتمه فايل ورودي خواندن و نوشتن باز ‌ يعني f1بررسي مي‌شوند و در يك حلقه تو در تو whileشرط خاتمه خطوط نيز توسط eolnبررسي شده و كاراكتر‌ها از فايل ورودي خوانده شده و در ميشوند. فايل خروجي نوشته ‌ 454 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group while not eof ( f1 ) do begin while not eoln( f1 ) do begin read(f1,ch); write(f2,ch); end; readln(f1); writeln(f2); end; Close(f1); Close(f2); 455 • گروه آموزشی مهندسی ایران Iranian Engineering Group فايلهاي دودويي و نوع‌دار() Binary & Typed ن نوع فايل‌ها در زبان پاسكال از تايپهاي مختلف record ,array read ,integer ,charو … تشكيل شده است كه نياز به پردازش متنوع مرتبسازي ،جستجو ،حذف و… دارند .اين فايلها پس از ايجاد توسط ‌ شبيه كدهاي اسكي رنامه ،قابل رؤيت توسط ويراشگرها نيستند ،بلكه به صورت ‌ ميباشند .نحوه دسترسي به اطالعات آنها نيز به ميباشند يعني دودويي ‌ ‌ صورت تصادفي ( )Randomاست. 456 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group طريقه ایجاد يك فايل نوع دار تعریف یک متغیر فایلی 1. نسبت دادن اسم فایل به متغیر فایلی 2. Rewriteایجاد فایل با دستور 3. 457 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group تعریف یک متغیر فایلی Name : File Of FileType ; نسبت دادن اسم فایل به متغیر فایلی Assign(FileVar , ‘NameFile’ ) 458 ایجاد فایل با دستورRewrite Rewrite( FileVar ) • گروه آموزشی مهندسی ایران Iranian Engineering Group :نحوه تعريف يك فايل دودويي نوع‌دار از انواع مختلف در زير آورده‌شده‌است Const n=100; Type Student = Record Name: string[10]; Family: String[15]; Age: integer; ID: integer; end; Sarray = Array [1..n] of student; 459 • گروه آموزشی مهندسی ایران Iranian Engineering Group :مثال ل دودويي از نوع صحيح ل دودويي از نوع ركورد دانشجو فايل دودويي از نوع كاراكتر ‏Var ;Bf2: file of integer ;Bf3: file of student ;Bf1: file of char ل دودويي از مجموعه Aتا Bf6: file of set of 'A'..'Z ;'Z 460 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group تايي) از ورودي خوانده10 برنامهاي بنويسيد كه تعداد رشته (حداكثر ‌ : مثال .و در يك فايل دودويي بنويسيد Const n= 10; Var Bf: file of strin[10]; Str: string [10]; i: integer; Begin Assign (Bf,'out.dat'); Rewrite (Bf); For i:=1 to n do Begin Readln (str); Write (Bf,str); End; 461Close (Bf); • گروه آموزشی مهندسی ایران Iranian Engineering Group در جدول صفحه بعد تمام روالهاي كتابخانه‌اي پاسكال جهت كار با فايلها ميباشد. آورده شده است كه به همراه توضيحات الزمه جهت كار با آنها ‌ همچنين براي هر تابع و رويه محل مورد استفاده آن در ستونی مشخص شده است . 462 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group عمليات مربوطه نام دستور رديف فايلها فايلها ي ي متن نوع ي دار + + نام فايل را به متغير فايل نسبت مي‌دهد. ‏Assign 1 + + فايل مربوطه را براي خواندن باز مي‌كند. ‏Reset 2 + + فايل مربوطه را براي نوشتن باز مي‌كند. ‏Rewrite 3 + + خواندن از فايل ‏Read 4 × + خواندن از فايل متني ‏Readln 5 + + نوشتن در فايل ‏Write 6 × + نوشتن در فايل متني ‏Writeln 7 × + مشخص نمودن انتهاي خط ‏Eoln 8 + + مشخص نمودن انتهاي فايل ‏Eof 9 بازنمودن فايل متني جهت اضافه •گروه 463 آموزشی مهندسی ایران ‏Iranian Engineering ‏Group + + + بستن فايل ‏Close 11 + + × انتقال وحركت مكان‌نمادر فايل دودويي ‏Seek 12 × × + مشخص نمودن رسيدن به انتهاي خط فايل متني ‏Seekoln 13 × × + مشخص نمودن رسيدن به انتهاي فايل متني ‏Seekeof 14 + + × شماره ركورد از انتهاي فايل ‏Filefos 15 + + × تعداد ركوردهاي فايل جاري را برمي‌گرداند ‏Filesize 16 + + × حذف يك ركورد از انتهاي فايل 17 Truncate + + + براي حذف فايلها بكار مي‌رود. ‏Erase 18 + + + براي تغيير نام فايلها بكارمي‌رود. ‏Rename 19 × × + محتويات بازفايل متني را به ديسكت انتقال مي‌دهد. ‏Flush 20 × × + اندازه بافر براي فايلهاي متني را 464 ‏SetTextb • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group 21 مثال های حل شده . برنامه‌اي بنويسيد كه تعداد خطوط يك فايل متني را بدست آورد: مثال Var F: text ; ch : char ; str: string[20]; count: integer; Begin Write ('Enter the file name: ); Readln(str); Assign(f,str); 465 Reset(f); • گروه آموزشی مهندسی ایران Iranian Engineering Group count:=0; While not eof(f) 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. 466 • گروه آموزشی مهندسی ایران Iranian Engineering Group كتاب را در يك10 تعداد،كتابها در نظر گرفته ‌ ركوردي از: مثال .فايل نوع دار ذخيره كنيد Const n = 10; Type Booktype = Record name: string[20]; ID: integer; end; Var Bf: file of Booktype; I , ID : integer; name: string[20]; Book: Book type; 467 • گروه آموزشی مهندسی ایران Iranian Engineering Group Begin Assign (Bf,'book.dat'); Rewrite (Bf); For I := 1 to n do begin Write ('Enter the name & ID of book: '); Readln (name, ID); Book.name:= name; Book.ID:= ID; Write (Bf, Book); End; Close (Bf); 468 End. • گروه آموزشی مهندسی ایران Iranian Engineering Group تمرينات ‏ برنامهاي بنويسيد كه از يك فايل متني از اعداد حقيقي كه در سطرها و ‌ دادهها را بدست آورده و در مانيتور ستونها مختلف قرار دارند ،ميانگين ‌ چاپ كند. ‏ برنامهاي بنويسيد كه در انتهاي يك فايل متني ،همان فايل متني را اضافه كند. ‌ ‏ برنامهاي بنويسيد كه در يك فايل نوع دار از كاراكترها ،اطالعات آماري ‌ هر كاراكتر را بدست آورده ،يعني تعداد هر كاراكتر را بدست آورد. مثًال كاراكتر ' 'Aبه تعداد 45تا و كاراكتر ' 'Bبه تعداد 36تا و… 469 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group فصل 15 تحليل الگوريتمها هدفهاي كلي مفهوم و تعريف الگوريتم مفهوم كارايي يك الگوريتم مرتبه يك الگوريتم 470 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group رفتاري هدفهاي÷ :دانشجو پس از مطالعه اين فصل بايد بتواند برنامه خود را تحليل زماني نمايد. مرتبه الگوريتم را بدست آورد. الگوريتمهاي بازگشتي را تحليل نمايد. 471 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group مقدمه تحليل يك الگوريتم يعني ارزيابي روشهاي مختلف حل آن مسئله ،بررسي و محاسبه بهترين و بدترين حالتها ،بصورتي كه با توجه به شرايط بهترين حالت را بتوان انتخاب كرد .الگوريتم در واقع تعداد محدودي از دستورالعملها ميكنند ميشوند و هدف خاصي را دنبال ‌ می باشد كه بترتيب اجرا ‌ 472 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group تعريف مرتبه يا پيچيدگي الگوريتم ( Oبزرگ) براي بدست آوردن بدترين حالت اجراي يك الگوريتم يا مرتبه پيچيدگي الگوريتم از Oبزرگ استفاده مي‌كنيم و بنا به تعريف عبارتست از )) f(n)=O(g(nو مي‌خوانيم ) f(xاز مرتبه ) g(xمي‌باشد ،اگر و تنها )c  0,n  n0  f (x)  c.g(x 473 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group ميتوان با در ر نظرگرفتن g(n)=nو c =3رابطه زیر مثال ‌ n 2=f(n)+1 : حاصل می شود : )n>=3 <= cg(n)=1n+2f(n ميباشد. ميتوان گفت ،پيچيدگي زماني ) f(nاز مرتبه )‌ O(n لذا ‌ 474 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group بدست آوردن مرتبه الگوريتمها براي بدست آوردن مرتبه اجراي الگوريتمها بايد به دقت بررسي شود و تعداد تكرار آن الگوريتم بدست آورده شود .يعني در واقع تعداد تكرارها بدست آورده شود و سپس با هم جمع شده و مطابق مثالهاي قبلي به پيچيدگي زمان واقعي رسيد .براي اين منظور از الگوريتمهاي ساده شروع كرده و به پيچيده ميرسيم. ‌ 475 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group حلقههاي ساده به شكل زير باشد: ‌ فرض كنيد الگوريتمي داراي ;x:= 0 ‏For I :=1 to n ‏do ;x:=x+1 ميباشد .يعني حلقه forبستگي به پارامتر nدارد. كه در آن nتعداد ورودي ‌ برميآيد تعداد n-1+1تكرار يعني ‌ همان طور كه از تعريف حلقه for ميباشد. ‌ nتكرار وجود دارد و لذا قطعه برنامه فوق از مرتبه)O(n 476 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group : مرتبه تابع زير را بدست آوريد: مثال Function fact ( n : integer ) : integer ; var f,i: integer; begin f:=1; for I := 1 to n do f:=f*i; fact:=f; end; 477 • گروه آموزشی مهندسی ایران Iranian Engineering Group تابع فوق فاكتوريل عدد nرا بر مي‌گرداند .همانطور كه مي‌بينيد تابع شامل يك حلقه forساده بوده كه از يك تا nمتغير بوده و لذا nبار تكرار مي‌شود. 2جمله ساده نيز وجود دارد که زمان های ثابتی دارند. بنابراین مرتبه تابع باال برابر است با : )O(n 478 • گروه آموزشی مهندسی ایران ‏Iranian Engineering ‏Group تمرينات : پيچيدگي زماني توابع زير را بدست آوريد 1. f1(n) n  2n2  100 2. f 2(n) n3  nlogn  n  2 3. f 3(n) 2n  5n  logn!nn 4. f 4(n) logn  n 1 5. f 5(n)  n2 logn  nlogn  (logn)! 479 • گروه آموزشی مهندسی ایران Iranian Engineering Group : پيچيدگي زماني تابع زير را بدست آوريد 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; 480 test:=x; • گروه آموزشی مهندسی ایران Iranian Engineering Group

62,000 تومان