صفحه 1:
صفحه 2:
١ فصل
كامبيوت ربا لآشنايي
هدفهاي كلي
شناخت كامبيوترهاى نسل قديم و امروزى
شناخت سختافزارهای لازم پرای کامپیوترهای شخصی
بررسی نرمافزارها و انواع آن
صفحه 3:
کامپیوترهای امروزی با بکارگیری ریزپردازنده به کامپیوترهای
نسل چهارم معروفند. البته نسلهای جدید دیگر کامپیوترها نیز
.به بازار ارائه میشود
در کامپیوترهای امروزی سرعت پردازش بسیار بالاء حجم
اجزاء سختافزاری بسیار کوچک. حجم حافظه بالا و غییه
.آنها را از نسل های دیگر متمایز میسازد
صفحه 4:
: اجزاء تشکیل دهنده کامپیوتر عبار تند از
* سخت افزار
3 نرم افزار
صفحه 5:
Out put
خروج
Inpu
42
ورود
صفحه 6:
کامپیوترهای امروزی معمولاً از قطعات زیر تشکیل میشوند:
دستگاههای ورودی
حافظههای جانبی
حافظههای اصلی
واحد پردازشگر مررکزی
دستگاههای خروجی
صفحه 7:
* نرم افزار
نرمافزار یکی از بخشهای اساسی کامپیوتر به شمار میآید. که در
واقع سختافزار را بکار میگیرد. بعبارت دیگر رابط بین کاربر و
سختافزار را نرمافزار مینامند. نرمافزار در حقیقت روح و جان یک
کامپیوتر است. که به سختافزار هویت میبخشد.
یک سری سیگنال الکتریکی است که توانایی ایجاد مفاهیم صفر و یک
منطقی را دارد. که اين یکها و صفر ها در کنار هم کدهایی را برای
سیستم کامپیوتری ایجاد میکنند.
صفحه 8:
* عامل on Ze OG: Operatay Gyotew) 68 نرمافزارهای سیستمی
میباشد. که مدیریت منابع سیستمی را بر عهده دارد. سیستمعامل همچنین ارتباط
بين كاربر و اجزاء سختآفزاری و نرمافزاری دیگر را برقرار میکند.
* میستم عامل کنترل و نظارت دارد بر عمل کرد کلیه اجزاء سیستم کامپیوتری.
صفحه 9:
صفحه 10:
" آ" آ EE
* زبانهاي برنامهنويسي
نرمافزارها توسط زبانهای برنامهنویسی نوشته میشوند. زبانهای
برنامهنویسی. يك سیستم ارتباطی هستند که توسط آنها میتوان
دستورات لازم را به ماشین انتقال داد.
هرزبان برنامهنویسی به مجموعهی از علایم» قواعد و
دستورالعملها گفته میشود که امکان ارتباط با کامپیوتر را جهت
بیان کاری یا حل مسئلهای فراهم میکند.
صفحه 11:
صفحه 12:
کامپایلر برنامه نوشته در يك زبان سطح با را بهبرنامه مقصد تبدیل
میکند
Source
program
صفحه 13:
eee
در زندگی روزمره انسان با مسائل مختلفی روبروست و برای هر
کدام
۳ از این مسائل (حل مشکلات) راه حلی و روشی را بر میگزیند.
مسائلی از قبیل راه رفتن, غذا خوردن. خوابیدن و غیره که بشر تقریً
هر روز انها را پیش روی خود دارد.
همه این مسائل نیاز به روشی برای حل کردن دارند مثلا راه
رفتن بايد
با ترتيب خاصى و مراحل معينى انجام شود. تا مسئله راه رفتن
برای ٍ
بشر حل شود. اصطلاحاً روش انجام کار يا حل مسئله را
الكوريتم آن
مسئله مینامند
صفحه 14:
...<< کچ
* تعریف الگوریتم
الگوریتم مجموعهای از دستورالعمل ها. برای حل مسئله میباشد که
شرایط زیر را بايد دارا باشد:
* دقيق باشد
* جزئیات کامل حل مسئله را داشته باشد.
*پایانپذیر باشد.
Bees
صفحه 15:
ب ب ب <ج ب ب << 1۳11[
* مراحل الگوریتم
برای حل یک مسئله باید الگوریتم آن مسئله را مشخص كنيم (يا بيابيم). که
اصطلاحاً طراحى الكوريتم براى أن مسئله نامیده میشود. در طراحی
الگوریتم معمولاً سه مرحله زیر را از هم جدا میکنند:
۱. شناخت مسئله
*_ خواندن دادهها(شناسایی ورودیها)
*_انجام محاسبات( پردازش)
*_ خروجیها(شناسایی خروجیها)
ot پیاده سازی
دم
صفحه 16:
٠ شروع
۵-۱, ۲ را بخوان.
۲-مجموع 2 , 0 را محاسبه و در 511110 قرار بده.
۳- 51110 را در خروجی چاپ کن
۴-پایان
صفحه 17:
خروجیها انجام محاسیات ورودیها
a
b
چاپ مجموع محاسبه مجموع
جاب ميانكين محاسبه میانگین
۰
far
۱- سه عدد از ورودی بخوان
"ل مجموع سه عدد را محاسبه و در ٩1110 قیار بده.
9-۳ را بر سه تقسیم کرده.در قرار بده.
۶ 51110 , 2۷6 را در خروجی چاپ کن.
ه يايان.
صفحه 18:
فلوچارت از شکلهای زیر تشکیل میشود.
*علامتهای شروع و پایان: که معمولا از یک بیضی استفاده میکنند:
*علامتهای ورودی و خروجی: که معمولا از متوازیالاضلاع استفاده میشود:
صفحه 19:
جایگزین یا
محاسبات
*علامت شرط: برای نمایش شرط از لوزی استفاده میشود.
*علامت اتصال: برای اتصال شکلهای مختلف بهم از فلشهای
جهتدار استفاده میکنند.
صفحه 20:
* فلوچارت مجموع سه عدد
9
Read(a,b,c)
Sum < atb+c
Ave < sum/3
3 Write(sum,ave) 2
End)
هته
صفحه 21:
که دو
درس ۱
محتویات دو عدد را با هم جابجا نماید.
برای حل این مسئله 2 , 0 را دو متفیر که در آنها دو عدد خوانده شد:
قرار میگیرند در نظر میگیریم. سپس با استفاده از یک متفیر کمکی
محتویات این دو عدد را جابجا میکنیم :
صفحه 22:
9 emp
صفحه 23:
صفحه 24:
* قمرین
۱- فلوچارتی رسم نمائید که طول و عرض مستطیل را از ورودی دریافت
die; Gabe igi only dew aye
۲- فلوچارتی رسم نمائید که شعاع دایرهای را از ورودی دریافت کرده.
محيط و مساحت انرا محاسبه و جاب نمايد.
فلوچارتی رسم كنيد كه سه عدد Third , second, first )!93
یافت کرده. محتویات آنها را جابجا نموده. حاصل را در خروجی
ne
صفحه 25:
:- فلوچارتی رسم نمائید که دو عدد از ورودی دریافت کرده. سپس
محتویات دو عدد را بدون استفاده از متغیر کمکی جابجا کند.
5 فلوچارتی رسم نمائید که عددی (درجه حرارت برحسب سانتیگراد)
رااز ورودى دريافت كرده سيس انرا به درجه فارنهايت تبديل كند.
صفحه 26:
Pascal gb;
# در این کتاب زبان پاسکال (۳۵56۵1) را برای آموزش و نوشتن
برنامهها انتخاب کردیم. اين زبان كه به افتخار بلز پاسکال دانشمند
فرانسوی قرن هفدهم میلادی. پاسکال نامگذاری شده است. در اواخر
سال ۱۹۱۰ و اوایل ۱۹۷۰ توسط پروفسور نیکلاس ویذت در انستیتو
فنی فدرال سوئیس مطرح گردید
صفحه 27:
هدفهاي
شناخت اجزای تشکیل دهنده یک برنامه
شناخت ساختار یک برنامه در زبان پاسکال
بررسی دستگاههای خروجی و دستورات لازم در زبان
پاسکال برای تولید خروجی
صفحه 28:
(Reserved Oords ) کلمات ذخیرهشده *
(deter) bau *
صفحه 29:
کلمات ذخبره شده. کلماتی هستند که مترجم زبان آنها را میشناسد و
معنای خاصی برای زبان دارند. مترجم زبان به محض مشاهده این کلمات
اعمال خاصی را انجام میدهد. هر زبان دارای تعداد مشخصی
کلمات ذخیره شده میباشد و این تعداد قابل افزایش توسط برنامهنویس
صفحه 30:
uses
var
xor
exports mod
file nil
for not
function object
goto of
if or
implementation packed
in procedure
inherited program
inline record
interface repeat
label set
library shl
صفحه 31:
* شناسه در پاسکال برای نامگذاری ثابتها. deel پروسیجروهاء توابع»
میدانهای یک رکورد برنامه و همچنین یونیت مورد استفاده قرار
مى كيرد.
صفحه 32:
هایلستاندارد: لینوع 8 ها از قبلدر بانب اسکللتعریفشدملند و در
برنامهه؛ معنایخاصیداوند .
ad > هایفیرلستاندارد: اینوع 8٩ ها بسوسیله کایبر بسطور مجزا تسعریف
میتسوند و لصطلاحا ببه نها حالص گفته میشود.
صفحه 33:
EE << << ">
* ساختار برنامه در زبان باسکال
:اجزاء اصلي یک برنامه به زبان پاسکال بصورت زیر ميباشد
عنوان برنامه
قسمت تعاریف برنامه
قسمت دستور العملها
صفحه 34:
Covsteat: Devtaraioa اعلان تابتها
Pepe Devlarctica اعلان انواع
Oevlrtiva Ourtuble اهريغتم اعلان
Oectaraioa Lubet اعلان برچسبها
صفحه 35:
بصورت زیر بیان کرد:
استفاده از کلمه ذخیره شده دحم و اسم برنامه ( که میتواند بكار
برده نشود )
ف تعاریف ادها
بلوک اصلی برنامه که با 625 شروع و به 0۳4 همراه نقطه ()
م مب
هر دستور در پاسکال به ( 7) ختم میشود.
صفحه 36:
block
شناسه
د
del
| Statem
سم
“CBegi
n
صفحه 37:
EE EEE " "
) خروجي ( دج *
مشهورترین دستگاههای خروجی عبارتنداز:
Monitor صفحه نمایش
Printer جا as
Terminale ترمینال
Plotter رسام
صفحه 38:
EEE << <<"
*مثال هاي حل شده
Program Print (output );
Begin
Writeln (' Pascal Language ' ) ;
Writeln (' Hello");
End.
صفحه 39:
:خروجي برنامه بالا بصورت زیر ميباشد
Pascal Language
Hello
صفحه 40:
.3
انواع عملگرها و دادهها در زبان باسکال
هدفهاي
كلي
معرفي انواع عملكرها در زبان پاسکال
شناخت انواع دادهها
بررسي اولویت عملگرها
معرفي دستورات جايگزيني در پاسکال
صفحه 41:
s% لد ها
عملگرها نمادهایی هستند که برای انجام اعمال حاصی مورد استفاده
قرار میگیرند.عملگرها برای انجام اعمال خاصی روی عملوندها
( 2 ) بکار میروند. با توجه به نوع عملكر ممكن
است یک يا دو عملوند وجود داشته باشد. عملگرها در زبان
پاسکال از تنوع زیادی برخوردارند.
صفحه 42:
صفحه 43:
عملگرهاي =
ردیف | عملگر نام Jl.
1 + 5 —
3 - |تفریق و منهاي يكاني | «,ر-*
3 > ضرب x*y
4 / تقسیم xly
Aunts 59 5 07
wood 6 باقیمانده تقسیم | له
صفحه 44:
صفحه 45:
Oct
OR
نام
مثال
»كبر wy ul
xy vr psx
Out (x)
صفحه 46:
صفحه 47:
صفحه 48:
EEE EEE << << ">
(data انواع دادهها ( عم *
(Simple data type) دادههای ساده <
دادههای ساختیافته ( ( 10282 513110111121
Types
(Pointer Data ۰۲۵۵5( دادههای اشارهگر
صفحه 49:
*نوع کاراکتری (06ا تقطت))
صحیح ( 1۳1]6067)
#عشاری (حقیقی)
*نوغ رشته ای (97۳6 (String
(Boolean type) ib نوع *
صفحه 50:
pte
Ghoriat
0 هت هت
Oord
اور
محدوده
از 0 تا 255
از 128- تا 127
از 32768- تا 32767
از ۵ تا 65535
از 2147483648- تا
2147483647
اندازه بر
1
1
2
2
4
صفحه 51:
|)
Grote
امه
محدوده
66۰-9
0 0
eS... 15
9۵ 9?
- 266 5.0
10
200
v #098 3.4
110 ...
ححه حل
تعداد ارقام
معني دار
13-1
10
صفحه 52:
انواع دادههای ساخت یافته عبارتند از:
آرایهها
رکوردها
مجموعهها
فایلها
صفحه 53:
ممکن است در نوشتن برنامه نوع دادههای بحث شده در بالا به دلایل
مختلف از جمله مشخص نبودن تعداد ورودیهای مسئله و غیره مشخص
نباشد لذا نیاز به متغیرهایی هست که بتوانند آدرس متغیرهای دیگر را در
خود نگه دايند لميزنوع دادمها دادمهایلشایمگر نام داند .
صفحه 54:
"*""" << << آ" آاآ" EE
* متغیرها (حطتدبه)
متغیر. محلی از حافظه است که دارای نوع و اسم میباشد. نوع متغیر همان
,نوع داده بوده و اسم متغیر از قواعد اسم گذاری شناسه تبعیت میکند
در پاسکال برای معرفی متغیرها بصورت زیر عمل میکنند:
(کلمه ذخیره 14-5( Var
نوع متغیر: اسم متفیر
صفحه 55:
EE 7 ي6جببَُُئصُ#ُش*ُ“سب_بئسش٠شس٠غظئنييّمج_م
(Coxstrcts) ist *
یک ثابت نام شناسهای است که در آغاز یک برنامه یک مقدار در آن جاگزین
میشود. درست مانند متغیرها. ثابتها را میتوان بعنوان خانههایی از حافظه در نظر
بكيريم که مقدار دادهها در آنها ذخیره میشود ولی مقدار ثابت مشخص میباشد,
,طوری که نمیتوان مقدار یک ثابت را در برنامه خود بوسیله یک دستور تغییر داد
te Sees pty po عریف ینکن cl
مقدار ثابت - اسم متغير Const
صفحه 56:
EEE EEE << <<"
سور یدز ی
برای قرار دادن یک مقدار یا مقدار یک متفیر داخل یک متغیر دیگر از دستور
.جایگزینی استفاده میکنند
شکل کلی یک دستور جایگزینی در پاسکال بصورت زیر است:
عبارت محاسباتی - : اسم شناسه
عبارت قیاسی یا
عبارت منطقی
صفحه 57:
EE << << ">
ae ot ۰ ۰
(Comment) 406 9) 4) Olowd gi (99 551
افزودن مطلب توضیحی در درون خود برنامه عملی پسندیده و مطلوب است
بدین ترتیب که بعد از مدتی امکان فراموشی کار با برنامه از بین میرود و در
.کل میتوان گفت که نوشتن توضیحات در برنامه خوانایی آن را بالا میبرد
در پاسکال توضیحات بین دو آکولاد محصور میشوند.
This is comment } {
{ This program written by A.
Pascal }
صفحه 58:
4 مثال
جابجا كردن مقدار دو متغير
17
صفحه 59:
Var
a,b, temp : integer
Begin
a:=15;b:=17;temp:=0;
temp: =a;
a:=b;
خروجي برنامه 0
برط - ط ارو دو 13 رطملا -حة
صفحه 60:
EE << << ">
* نكاتي چند در مورد برنامه نويسي
* استفاده از اسامی با مفهوم برای متفیيها
۶ استفاده از دستور احل) در صورتی که مقدار ثابت در
aol» وحود داشته باشد.
*_ سوال جوابی بودن برنامه (ورودیها و خروجیها باید
دارای پیغام مناسب باشند)
* _ نوشتن برنامه با فرمت مناسب (رعایت قرار گرفتن خطوط
مختلف برناقه زیر هخ و افاضله گذاشتن: آنهازازاول عنطر و
صفحه 61:
* تمرینات
«حاصل عبارتهاي زیر را بدست آورید
A)3*13 Mod3 div3 =?
BY7.3*5/3=?
C)(3+4<6) and (4+7<13)=?
D)33-8*3 div 3 mod (5div3) =?
E)NOT (((3-4 MOD3)<5) and((6 div 4)
<=3 ))
صفحه 62:
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=?
صفحه 63:
> << << کچ
* تمرینات بينامه نويسي
* _ برنامهای بنویسید که ابعاد مثلث byl) VY LY 5 syle SF
گرفته محیط و مساحت آن را محاسبه و با پیفام مناسب در
خروجی چاپ کند.
برنامهای بنویسید که دو متغیر صحیح با مقادیر ۳, ۱۵ را در
گرفته محتویات دو عدد را بدون استفاده از متغیر کمکی جابجا
نماید.
* _ برنامهای بنویسید که سه عدد بنام های , Dhird , Geoved
CPirst بترتیب با مقادیر ۱۷ , ۱۳,۱۵ را در نظر گرفته بطور
چرخشی مقادیر آنها را جابجا نموده در خروجی با پیغام مناسب
جات كن
صفحه 64:
فصل 4
ورودي و خروجي
صعرفیدستورل 25 Writeln
معرفی خروجی فرمتبندی شده
بررسی دستورات ورودی 1٩630 و ReadLn
صفحه 65:
EEE " " "
* خروجي با دستور 07)
این دستور برای نوشتن اطلاعات در خروجی بکار میرود. اطلاعات خروجی
میتوانند ثابتهای عددی. مقادیر متغیرها. عبارات و غیره باشند. شکل دستور در
:حالت کلی بصورت زیر است
و متغیر۲ و متغیر ۱ )۲۷116
و" عبارت ۲" و عبارت۱ )
OY seal Sealy: cand ) يا
صفحه 66:
Ch: char ;
R: Real ;
egin
A:= 10; B:=15 ;
Ch: ="T' ۶
R: = 12.25
Write ('A=',A,'
B=',B) ;
Write (‘ch =',ch,'R=',R) ;
Write (' sum of A and B=',A+B) ;
ind. { end of program }
ی برنامه فوق در خروجی خواهیم داشت
B= 15 ch = TR = 1.2250000000 e + 01 sum of A and
صفحه 67:
* خروجي با دستور 0۳/۰
این دستور همانند دستور ۷۷16 عمل میکند با این تفاوت که بعد از
اجرا. كنترل را به ابتداى سطر بعد منتقل میکند در نتیجه موجب چاپ
دادههای بعدی در اپتدای سطر بعد میشود.
صفحه 68:
Nriteln ; { new line }
Nriteln ('A=',A,' B=',B) ;
Nriteln('Ch=',ch,'R=',R);
Vriteln('Sum of A and B=',A+B) ;
.{ End of program }
:خروجی برنامه بصورت زیر میباشد
15 < ظ A=10
Ch=T R=1.225000000 e + 01
Sum of A and B= 25
صفحه 69:
۹
هه
خروجي فرمتبندي شده
اگر بخواهیم اطلاعات با فاصله های مشخص یا در مکان
مشخصى در صفحه نمايش قرار كيرند. بايد فرمت جاب
.را در دستورات بيان شده مشخص كنيم
صفحه 70:
:فرمت اعداد صحیح بصورت زیر مشخص میشود
( طول میدان: داده صحیح ) ۷۷۲11۵18 یا Write
صفحه 71:
در تعریف طول میدان براي متغيرها يا دادههابي از نوع صحيح به نکات زیر توجه کنید:
اگر طول میدان از طول ارقام عدد صحیح بیشتر تعریف شود. عدد در
منتهى اليه سمت راست ميدان نوشته میشود.
*_ اگر طول میدان از طول ارقام عدد صحيح كمتر تعريف شود. طول ميدان به
اندازه تعداد ارقام در نظر كرفته مى شود و طول ميدان تعريف شده بىاثر
خه اهد ب د.
صفحه 72:
X:= 3200 ;
As. = 12) 5
B= 217) :
Write (X:3,A:5 , B:5) ;
See دري
3200 12 217
صفحه 73:
برای نمایش اعداد اعشاری بصورت دلخواه. می توان با تعریف طول
.میدان و تعداد ارقام اعشاری, عدد مزبور را نمایش داد
در حالتک لیطولمیللنرا میتسولنبه صوونذیر تعریفکرد :
( تعداد ایقام بسعد از مميز: طولميدان متغير لعشایی) ۷۷۲16
ماع تالا يا
صفحه 74:
اگر طول میدان بزرگتر از تعداد ارقام عدد ذکر شود. عدد در منتهى اليه سمت راست
يدان جاب مى قود
اكر فقط طول ميدان ذكر شود. عدد به صورت نماد علمى در طول ميدان مشخص شده
eee
از آنجائی که برای نمایش اعداد در نماد علمی حداقل ۸ محل مورد نیاز است. لذا
هنگامی که تنها طول میدان ذکر شده باشد. اگر از ۸ رقم کمتر باشد. حداقل ۸ رقم
در نظر گرفته میشود
صفحه 75:
۲ هنگامی که طول میدان همراه با تعداد ارقام بعد از ممیز ذکر شود. اگر طول
میدان کوچکتر از مقدار عدد باشد. پاسکال تنها طول میدان را به اندازهای
که مورد نیاز است تصحیح کرده و آنرا پرابر اندازه واقعی که عدد در آن
قرار میگیرد. اصلاح میکند.
۷ اگر تعداد ارقام بعد از ممیز زیاد باشد و تعداد ارقام بعد از ممیز ذکر شده د
ر طول میدان کمتر از تعداد ارقام اعشاری عدد باشد. تعداد ارقام اعشار
مطابق درخواست برنامهنویس نشان داده خواهد شد و رقم آخر اعشار ان
نسبت به عدد بعدی گرد میشود.
صفحه 76:
برای نمایش رشتهها و کاراکترهای با طول میدان بصورت زیر عمل
مى كنيم. ۳
( طولمیدلن متغیر يا عبارتيشتملويا كار لكترى) ۷۷۷6
در توربو ياسكال. كليه موارد كفته شده در مورد اعداد صحيح براى
رشتهها نیز صادق است
صفحه 77:
>" << ااا
“ ورودي & Qeuda , Reud
از این دستور برای خواندن داده ها و اختصاص آنها به متغیرها
:استفاده میشود. در خواندن داده ها به دو موضوع بايد دقت شود
منبع دادمها یبعنیدستگام ورودیکه از آندادمها خولنده -1
مینسود
متغيرىكه دادمهاىخولنده شده در آنقرار میگیرد -2 .
صفحه 78:
اين دستور عمل خواندن دادهها و ذخیره آنها در متغیرها را انجام میدهد
و پس از اتمام عمل خواندن کنترل را برای خواندن و نوشتنهای بعدی
در همانخط نگه میعارد .
صفحه 79:
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 }
_
صفحه 80:
خروجی برنامه بالا به صورت زير میباشد:
Please Enter two numbers
15 17
First = 17 second = 15
صفحه 81:
>" آاس۳
'* تمرینات
خروجرقطعه بر نلمهوير را تسعييزكسنيد :
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) ;
صفحه 82:
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 ))>
صفحه 83:
** تمرينات برنامه نويسي
برنامهای بنویسید که دو عدد را از ورودی دریافت کرده و
محتویات آنها را بدون استفاده از متفیر کمکی جابجا نماید
برنامهای بنویسید که سه عدد صحیح , Third
Second , first را از ورودی با پیغام مناسب دریافت
کرده سپس محتویات این سه متغیر را بصورت چرخشی جابجا
نموده با پیغام مناسب در خروجی چاپ کند.
صفحه 84:
برنامهای برای یک حسابدار اداره جمع آوری مالیات بنویسید که صورت
.حسابهای مالیات را مخاسبه نماید
خورودی
شماره شناسایی مالیات دهنده
بهای ارزیابی شده
نرخ مالیات
eo
صورت حساب بافرمت مناسب شامل تمام دادههای ورودی و میزان بدهی
صفحه 85:
ساختارهاي شرطي و کنترلي
هدفهاي كلي
معرفىودستور شرطيع119 220 If
معرفی دستور 4896
پررسی دستورات تکرار for . while . repeat until
معرفی دستورات شرطی متداخل
بررسی چند تابع و روال استاندارد زبان پاسکال
صفحه 86:
EE EE EEE EE موممئي
دستورالعملهاي شرطي **
در حل بسیاری از مسائل یا تقریباً تمام مسائل نیاز به استفاده از شروط
مزع انیا های: التانسن مسبوپمی شود ضمانطو و که,ما خودمان :در
زندگی روزمره با اين شرطها سر کار داریم بطور مثال اگر هوا ابری
باشد ممکن است چنین سخن بگوییم:
اكرهوا بارانى باشد سيس جترى برمىدارم.
در غير اينصورت جتر برنمىدارم.
صفحه 87:
NO
عمل يا اعمال بعدى
صفحه 88:
مثال : فلوچارتی رسم تمائید که عددی را از ورودء
زوج بودن آن را تشخیص دهد. > C Begin
یافت کرده فرد یا
Read(a)
R < a mod 2
yes
Write(‘even’), ~~
No
Write(‘odd’) ۳ کت
صفحه 89:
صفحه 90:
- لوصح
Read(a,b,c) “
min <— مه
صفحه 91:
۱۳
۳
۷۱
۷۱
۷۱
>
1
۱۷
صفحه 92:
ب ب ب <ج ب ب << 1۳11[
* تمرین
۱- فلوچارتی رسم کنید که عددی را از ورودی دریافت کرده. قدر مطلق
عدد را در خروجی چاپ کند.
۲- فلوچارتی رسم نمائید که عددی از ورودی دریافت کرده مثبت. منفی
يا صفر بودن عدد را تشخیص داده. در خروجی با پیغام مناسب
عايج كتلاه
۳- فلوچارتی رسم نمائید که عددی را از ورودی دریافت کرده بخشپذیری
ald poop ly OT pO
۶- فلوچارتی رسم نمائید که ضرایب یک معادله درجه دوم را از ورودی
دریافت کرده ریشههای آن را محاسبه در خروجی چاپ کند.
صفحه 93:
>" << << آآآآآاسا"اآ۳
* دستورات شرطي
بطور کلی توسط اینگونه دستورات میتوان بر حسب شرایط مختلف.
تصمیمات متفاوتی را اتخاذ نمود و برحسب برقرار بودن یا نبودن شرایط
.دستورات متفاوتی را اجرا نمود
وزات شرظي دو حالت كلي به دو نوغ نقسیم میشوتن
دستور ]1
Case دستور
صفحه 94:
هرگاه در طول برنامه نیاز به استفاده از شرط یا شروط داشته باشیم. از دستور
If .ستفاده می کنیم
دستور 1 بطور کلی به سه شکل بر حسب نیاز ممکن است ظاهر شود:
ool. if
Else st, if
های متداخل 1
صفحه 95:
then
در اين نوع دستور شرطی اگر شرط خاصی تحقق يافته باشد. عمل یا اعمال
خاصی انجام میشود. در غیر اینصورت برنامه روال عادی خود را طی میکند.
در صورتی که شرط برقرار باشد ارزش منطقی 1116 به خود مى كيرد و
اگر شرط برقرار نباشد. ارزش منطقی 32156 به خود خواهد گرفت.
صفحه 96:
:دیاگرام دستور بالا بصورت زیر میباشد
a
دستور
هم رم
صفحه 97:
Number: integer ;
Begin
Write (‘Please enter Number:
“ee
Readlin ( Number ) ;
if Number >0 then
Write (' Number is positive ' )
End. خروجی برنامه بالا بصورت زیر است
Please enter Number: 12
Number is positive
صفحه 98:
در اين دستور ابتدا شرط «sw yp ميءشود: در
صورتي که شرط برقرار
بانقنده عمل یاناعمال خاضی. را اتجام. ميدهد و
در صورتي كه شرط برقرار نباشد عمل يا
اعمال بخصوص ديگري را انجام خواهد داد.
صفحه 99:
Sa دیاگرام
صفحه 100:
gin
Writeln (‘Please enter Number:') ;
Readln ( Number ) ;
if (Number mod 2) =0 Then
Write (' even ' )
else
Write ('odd') ;
d. { end of program }
Please enter Number:
17
odd
صفحه 101:
End
Else
Begin
ز دستور 1
ز دستور 2
صفحه 102:
هركاه در نوشتن برنامه نياز به انتخاب يك شرط از بين جند شرط داشته
باشیم. معمولاً از 1 متداخل استفاده مى كنند. در جنين مواقعى استفاده از 14
متداخل كارائى برنامه را بالا مىبرد زيرا بجاى كنترل تمام شروط فقط تا
زمانيكه شرط برقرار نشده. ]1 ها بررسی میشوند. بعد از برقرار شدن يكى
از شروط. کنترل برنامه به بعد از 115 منتقل مى شود و اين در بهبود كارائى
يك برنامه مى تواند بسيار موثر باشد.
صفحه 103:
)9 اطرشتیبع tea
۱ دستور
_عبیتشرطی۲ ۸ che
دستور۲
مه عبینشرطی] IP اد
دستور ۲
۳۹
۶ یطرشتیبع fen
P عبیتشرط[ few
دستور 1
دستور ۲
صفحه 104:
Grade
17 - 20
14-17
12-14
10 - 2
0 - 0
صفحه 105:
if Grade > = 17.0
Writeln ('Grade is A')
Else If Grade > = 14.0 Then
Writeln (' Grade is B')
Else If Grade > = 12.0 Then
Writeln ('Grade is C')
Else If Grade > = 10
Writeln (' Grade is D')
Else
Writeln (' Grade is F ‘¢
Writeln ('Press any Key ...' : 30
ReadIin :
ReadIn ۳ ‘Grade 172
Then
صفحه 106:
زبان پاسکال دستور 1856 را بصورت زیر در نظر میگیرد:
Of عبلیت Case
م دستور ۱ : مقدار ۱
,م دستور ۲ . : مقدار ۲
م دستور ۳ : مقدار۳
Otherwise
م دستور
End ; { End of case }
صفحه 107:
Write (' please enter two Numbers: ' )
Readin(a,b) ;
Write (' please Enter A operator: ' )
Readeln ( op) ;
Case op of
'+': Writeln ('Sum =',(a+b):6:
20
'.': Writeln (' Subtract =',(a-b):
9: 2( +
'*': Writeln (' Multiple =',(a*b):
6:2)
‘|: Writeln (' divide =', (a/b): 6:2)
cans Pe ری ی
صفحه 108:
دیاکرام دستور 256) بصورت زير ميباشد:
صفحه 109:
>" <<" ا آآاآ سا "اآ۳ط+اآ۳
* ساختارهاي كنتولي
.بسيارى از مواقع لازم است عمل يا اعمال به تعداد دفعات معين يا نامعين انجام شوند
در جنين مواقعى زبانهاى برنامهنويسى دستوراتى دارند که میتوان اين اعمال تکراری
را انجام داد. در حالت كلى ساختارهاى كنترلى شامل يك يا جند شرط و همجنين
متغير يا اصطلاحاً شمارندهاى براى يايان دادن به شرط مى باشند
صفحه 110:
** حلقهها
در حل بسیاری از مسائل با عملیاتی روبرو میشویم . که نیاز به تکرار
دارند و عمل تکرار آنها به تعداد مشخصی انجام میگیرد. فرض کنید.
بخواهيم ميانكين ۰ عدد را محاسبه کنیم در اینصورت منطقی بنظر
نمیرسد که ٠٠١ متغير مختلف را از ورودی دريافت كنيم سيس آنها
حت تن
صفحه 111:
*حلقه های با تکرار مشخص
*؟حلقه های با تکرار نا مشخص
صفحه 112:
در اين نوع حلقهها تعداد تکرار مشخص میباشد این حلقه از اجزاء ز؛
تشکیل میشود:
١ انديس حلقه
۲- مقدار اولیه براى انديس حلقه
۳- مقدار افزاینده برای اندیس حلقه (معمولا یک واحد در هر مرحله)
۶- مقدار نهایی (تعداد تکرا حلقه)
4 شرطى بياى كنتيل تعداد تکرار حلقه
صفحه 113:
صفحه 114:
صفحه 115:
صفحه 116:
1۵
۱۵
غروجى
صفحه 117:
مثال : فلوچارتی رسم کنید که « عدد از ورودی دریافت کرده.
بزركترين مقدار از بين 2 عدد را بيدا كرده در خروجى جاب نمايد.
انديس حلقه 1
بزركترين مقدار
Max
صفحه 118:
صفحه 119:
صفحه 120:
١ Read(n,x)
yes
i el
صفحه 121:
(در پاسکال به حلقه nile مشهورند.)
در این حلقهها با توجه به ورودی. تعداد تکرار مشخص میشود. و Abs
نمی توان تعداد تکرار حلقه را بدون ورودی معین کرد. این حلقه ها فقه
شام شرطی محد که نا زمانکه رفرار باشد له را يشود
صفحه 122:
No
محموعه دستورالعملها
و جاگزینها
صفحه 123:
مثال: فلوچارتی رسم کنید که عددی را از ورودی دریافت کرده
سپس تعداد ارقام of ;{ شمرده در خروجى جاب نمايد.
؟عدد خوانده شده N
* تعداد ارقام count
صفحه 124:
Be
count <— 0
count—
coyunt+T
صفحه 125:
در حالت کلی جملات سری بصورت:
عدد خوانده شده
جمله اول سری
جمله دوم سری
جمله سوم سری
2 كل
025 a
صفحه 126:
صفحه 127:
* تمرین
۱- فلوچارتی رسم نمائید كه عددی از ورودی دریافت کرده. کامل بودن
آنرا پررسی نماید. (عدد کامل. عددی است که مجموع مقسومعلیههای
آن با خودش برابر باشد.)
۲- فلوچارتی رسم کنید که ا را از ورودی دریافت کرده ا جمله سری
فیبوناچی را تولید نماید.
۳ فلوچارتی رسم نمائید که دو عدد ]1۷ , لا را از ورودی خوانده.
بزرگترین مقسومعلیه مشترک دو عدد را محاسبه و چاپ کند.
صفحه 128:
EE EEE EE لل
* حلقههاي تودر تو
الگوریتمهایی که تا حال بکار بردیم فقط شامل یک حلقه بودند.
در صورتی که در بسیاری از مسائل ممکن است نیاز به استفاده از چند
حلقه در داخل هم باشیم. در اين نوع حلقهها بايد دقت بیشتری به خر-
دهیم. تا مشکلی پیش نباید. اگر از حلقههای نوع اول بصورت تودرتو
استفاده کنیم در اینصورت برای هر حلقه شرط نهایی و اندیس اولیه
جداكانه بايد تعریف کنیم .
صفحه 129:
ر نهایی خود تکرار میشود. در کل اگر حلقه اولیه 18 بار تکرار شود و
4 داخلی 121 بار. در ایتصورت کل حلقه :
nxm
بار تکرار خواهد شد.
صفحه 130:
صفحه 131:
Coe 5 37
سرى زير را محاسبه نمايد:
N 3
S=1+24+3 4.0.44
* اندیس حلقه اول 1
* ورودی لا
* محاسبه فاکتوریل fact
* اندیس حلقه داخلی لل
* مجموع 511112
صفحه 132:
صفحه 133:
ee
تمرینات آخر فصل *
-١ فلوجارت تی رسم نمائید که آل عدد از ورودی دریافت کرده تعداد
اعداد اول و كامل را شمرده در خروجى جاب نمايد.
۲- فلوچارتی رسم نمائید که 2۶ , لا رااز ورودى خوانده مقدار سرء
زیر را محاسبه کند:
Ss برچ شاد + +1- 5
صفحه 134:
عدد را محاسبه و در خروجی چاپ کند.
6 فلوچارتی رسم کنید که تاریخ تولد شخصی را از ورودی خوانده
سن شخص را با تاريخ رون محاسبه نموده در خروجی چاپ کند.
۵- فلوچارتی رسم نمائید که (10<10) ۷], لا را از ورودی دریافت
کرده سری فیبوناچی بین ]1۷, لا[ را تولید کرده. در خروجی جاب كن
صفحه 135:
0 مقدار نهایی 10 مقدار اولیه - اندیس For
م دستور
بايد توجه داشته باشید که در حلقه تعداد تکرار کاملاً مشخص است و حلقه دقیفاً به
.تعداد تکرار مشخص اجرا میشود
صفحه 136:
دستور برای انجام عمل یا اعمالی مشخص به تعداد تکرار معین بکار برده میشود.
لقه for شامل یک اندیس (index) مقدار اولیه ) oi lai (initial value
( ۷۵1۷6 121221 ) و مقدار افزاينده مىباشد. اين حلقه با قرار دادن مقدار اولیه در
.يس حلقه شروع شده و بعد از هر تكرار يك واحد به انديس حلقه اضافه مىكند تا
نهایت به مقدار نهایی برسد. شکل کلی حلقه بصورت زير میباشد:
صفحه 137:
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 }
صفحه 138:
0 مقدار نهاي 001171180 مقدار اولیه - : لندیس ۴01
۶ دستون
ر این شکل از دستور 30 ابتدا مقدار اولیه در اندیس حلقه قرار داده می شود
و بعد از آن در هر تکرار حلقه یک واحد از اندیس حلقه کم می شود تا به
مقدار نهایی پرسد .
صفحه 139:
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 .
صفحه 140:
0 مقار نهایی 0 مقدار ایلیه - : لندیسا for
0 مقدار نهایی 0 مقدار اولیه - : انديس 2 ۶0۲
۶ دستور
صفحه 141:
in
For j:=1 to 3 do
Write (' pascal': 8) ;
Writeln ;
1
خووجی
Pascal Pascal Pascal J) a>» (i =
1)
Pascal Pascal 2856081 مرحله دهم ) 1 >
2)
Paceral Paceal Pacecal . si. .f 7)
صفحه 142:
feat {| fa (2h همع
صفحه 143:
در حالت كلى هدف از بكار بردن اين دستور انجام عملياتى مشخص
به تعداد دفعات نامعين است
مينحلقه به صووتؤير بكار بردهمى شود:
While عبارت منطتی Do
و دستور
صفحه 144:
Numbers ') ;
ReadIn (m,n) ;
While (m Mod n) > < 0 0
MOD n;
End ; { end of
while }
صفحه 145:
صفحه 146:
اين دستور نيز از نوع دستورات تکراری میباشد و به کمک آن میتوان یک يا چند
.دستور را به تعداد نامعین بار اجرا کرد
لیندستور مشلبه دستور ۱۷16
:است. با تفاوتهایی که در زیر عنوان میکنیم
در دستور (1 1300086 بسرعکسدستور ۱۷۲16
.شرط حلقه در انتهای حلقه بررسی میشود لذا حلقه حداقل یکبار اجرا میشود
_
صفحه 147:
۲ دستور 8606616 تا زمانی اجرا میشود که شرط خاصی تحقق
پیدا نکرده است در حالیکه دستور ۷۷10116 تا زمانی که شرط برقرار
al اجرابمیشود.
۳ دستور :606 نیاز به بلوک ندارد و همراه 10 ظاهر میشود.
صفحه 148:
until by sl bs ;
صفحه 149:
riteln (' please enter Numbers While is Not Negative ')
um: =0 ;
ve:= 0 3
epeat
Readln ( Number ) ;
Sum: = sum + Number ;
t=i+ 1 ۶
til number =0 ; { End of Repeat }
:=i-1
ve: = Sum /i ;
riteln ('Sum =', Sum, ' average = ': 12, ave: 7:2) ;
nd of program }
صفحه 150:
صفحه 151:
>" << ااا
** معرفي چند پروسیجر ( سدح )
پروسیجرها یا زیر روالها قسمتهای مستقلی از برنامه اصلی میباشند که به
تنهایی اعمال خاصی را انجام داده و وظایف مستقل و بخصوصی بر عهده
آنها گذاشته میشود. یک مزیت بزرگ پروسیجرها اینست که یکبار در برنامه
گنجانده شده ولی در محلهای مختلف ازآن استفاده به عمل میآید و از
.اصول برنامهنویسی ساخت یافتهاست
صفحه 152:
مدف: انتقال کنترل برنامه به خارج از بلوک فعلی
Procedure Exit ;
استفاده از این پروسیجر در هر بلوک از برنامه باعث میشود که کنترل
برنامه بلافاصله به خارج از آن بلوک انتقال Lb
صفحه 153:
هدف: خاتمه دادن به اجرای یک حلقه
Procedure Break ;
استفاده از پروسیجر فوق باعث میشود که اجرای یک حلقه خاتمه یافته و
کنترل برنامه به دستورالعمل بعدی انتقال پابد.
صفحه 154:
هدف: باز گشت به ابتدای حلقه
Procedure continue ;
وقتی اس پزوسحر, دزن tasty UES SS ge OW BA اول خلقلة:اتتقاك
مییابد و دستورات بعد از پروسیجر اجرا نمیشوند.
صفحه 155:
مثال : ی بنو یسید عد صحیح در 5
1 بينامها که یک مبنا
۰ ۱
از ورود 9
ی دریافت ۱
فت کرده. ۱
يا به یک
عدد در مبنا | ۱
cs
۲ ببرد.
صفحه 156:
Power: = 1 ;
N:=0;
Write (' enter A Number: ') ;
1۳801 ( Number ) ;
Repeat
R: = Number MOD 2 ;
Number: = Number DIV
2;
N: = N + Power* R ;
Power: = Power * 10 ;
Until Number < 2 ;
N: = N + Number * Power ;
Writeln ('Number In Base 2 = ' '
oN);
IM tS 7 ال م
صفحه 157:
Write (' please enter A زا a3
Readin (N) ;
Fis= 03 ۳2: 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: 5 82 ۶
F2: = F3 ;
End ; {end of for }
۱, { end of program }
صفحه 158:
7 1 116
یه ۳ wale
تمرینات Begin
۱- خروجی قطعه برنامههای زیر را تعیین کنید:
Sum: = Sum +i
۱
end ;
b)
is = 0.3
Sum: =°0';
While i<=20 do
Begin
i+ ;
صفحه 159:
be Di
Until (b div 3)=5 ;
d)
Count
Stop :
While Count < Stop Do
Begin
For K:=1 to Count
Do
Write (K:3) ;
Writeln ;
صفحه 160:
EE EE EEE EE موممئي
تمرینات برنامه نویسی **
۱- برنامهای بنویسید که با استفاده از حلقه ها خروجی زیر را تولید کند.
صفحه 161:
بسرنامهلوبنویسید که تسعدادیعدد از ورودیدویافتکرده مجموع -2
ايقام هر عدد را در خروجىجا نايد ( پایانداده ها بسه ۱- ختممی
شود)
بسرنامهلوبنویسيد که دو علد صحیح را از ورودیدویافکرده -3
a
.اعداد فیبوناچی بين اين دو عدد را جاب كند
برنامهلىيب:ويسيد كه يكلسكناس١٠٠٠ توملئنىرا به حلتهاى4
مختلفیعنیبه لسکناس۲۰۰ تسوملنی ۱۰۰ تسوملنی 0۰ تسوملنی ۲۰
تسوملنی ۱۰ توملنیو سکه های۵ توملنیو ۲ توملنیو یکتوملنیخرد
.نمايد
صفحه 162:
Arrayb 47
هدفهاي كلي
شناخت لزوم استفاده از ساختار داده اى به نام آرايه
شناخت انواع آرایهها و موارد استفاده از آنها
شناخت مفاهیم مرتبسازی و جستجو
شناخت الگوریتمهای مرتبسازی و جستجو
صفحه 163:
کاربرد آرایه ها در الگوریتم ها
هدفهاي كلي
شناخت آرایه ها و مفهوم آن
شناخت الگوریتم های لازم برای جستجو و مرتب سازی
مقایسه انواع روش های جستجو با هم
صفحه 164:
:دانشجو يس از مطالعه اين فصل بايد بتواند
"ذا از آرایه ها در حل مسئله استفاده کند .
8 لااستفاده از ارایه ها لستی رامرتب نماید .
- در صورت لزوم در لیستی جستجو انجام دهد .
صفحه 165:
فرض كنيد بخواهیم اطلاعات ۱۰۰ کارمند را از ورودی بخوانیم و
سبس آنها را مرتب كنيب در اینصورت باید ورودیها را در جایی از
حافظه ذخیره کنیم. در زبانهای برنامهنویسی معمولا از ارایه برای
ذخیره اطلاعات در حافظه استفاده میکنند. در آرایهها ما با توحه به
تعداد ورودیها؛ طول آن را مشخص میکنیم. سپس دادهها را خوانده د:
آن قرار میدهیم.
صفحه 166:
** تعريف آرايه
خانههاى يشت سر هم از حافظه. كه همنوع بوده و توسط يك اسم معرفى
میشوند. ارایه نام دارد. ۱ ۱
نحوه دسترسی به هر یک از اعضاء ارایه. از طریق اندیس ارایه امکانپذیر
است . برای تعریف آرایه ابتدا طول آرایه که در حقیقت تعداد خانههای آن
ES gt petals فعین قیکنيم. سیسس: وق خانهها بای مین شولد.
در فلوچارتها آرایهها را بصورت زير نمایش میدهیم:
Name[ 1 .. Length ]
طول آرایه اسم آرايه
صفحه 167:
صفحه 168:
oe
Nam _ [ index ]
انديس آرايه اسم آرایه
مثال: فلوجارتى رسم كنيد كه يك آرايه حداكثر ٠٠١ عنصرى را از
دريافت كرده. سيس آن را خروجى نمايش دهد.
صفحه 169:
صفحه 170:
a[1..20]
i
ali] <— > N mod <p (20)
تع
1+1
صفحه 171:
مثال : فلوجارتی رسم نمائید که عددی از ورودی دریافت کرده سپس
اعداد اول قبل از آن را تولید نموده . در یک آرایه قرار دهد.
[2]1..100
1 حه 1
A Read(N) 7
|
ٍ دض
‘alt |< 2
a[2] <— 1
صفحه 172:
صفحه 173:
* آرایه و انواع آن
خانههای پشت سرهم از حافظه که همنوع بوده و توسط یک اسم معرفی
میشوند. آرایه نام دارد. نحوه دسترسی به هر یک از اعضاء ارایه از
gales ات کال لایس انتات
برای تعریف آرایه ابتدا طول آرایه که درحقیقت تعداد خانههای آنرا مشخص
میکند. معین میگردد. سپس نوع خانههایی که دادهها در آن قرار خواهند
كرفت را تعيين مى كنند
صفحه 174:
آرایههای یک بعدی بصورت زیر تعریف میشوند:
Name : array [1.. Length] of
ْ | موب یه ره ۱
کلمه ذخیره شده اسم آرایه
صفحه 175:
Var
No: Array [1.. 50] of
integer ;
id: Array [1.. 20] of Byte ;
Name , Fam: Array [ 1.. 30] of
char ;
صفحه 176:
۱- با استفاده از دستورات ورودی
۲- مقداردهی در طول برنامه
طریقه دسترسی به عناصر آرایه بصورت زیر میباشد:
Name [ index ]
|
انديس آزرایه
۳
صفحه 177:
Writeln (' please enter TEN Numbers') ;
For i:=1 to 100 do
Readin (No[il]) ;
Max: = No[ 1] ; Index: = 1 ;
For i:=2 to 100 do
If No[i] > Max Then
Begin
Max: = No[i] ;
Index: =i ;
End ;
Writeln ('The Maximum is =', Max) ;
۱ Writeln ('And Index =', Index) ;
End of program }
صفحه 178:
integer ;
Begin
Writeln (' please enter 100 Numbers :
13
For i:=1 to 100 do Begin
Read (a[li]) ;
If(i Mod 10)=0 Then
Writeln ;
End ;
For i:=1 to 50 do
Begin
Temp: =a[101-i] ;
۱101 11: 1
ali]: =temp ;
End ;
صفحه 179:
برای نمایش ماتریس درحافظه معمولاً از آرایههایی بنام آرایههای دویعدی استفاده میکنند
رای درک بیشتر ابیز آرایةفا آنها را بضورت ماترنس دز انظر میگیرند
آرایههای دو بعدی بصورت زیر معرفی میشوند:
Name 1 array [1..row ,1.. column ] of
type ۳
لا ا . ] | | |
نوع عناصر آرایه کلمه ذخیره شده تعداد ستونها_
تعداد سطرها كلمه ذخيره شده اسم ارايه
صفحه 180:
jin
For i:=1 to 5 do
Begin
For j:=1 to 5 do
Read (ali,j]) ;
Writeln ;
End ;
Writeln ;
For i:=1 to 5 do Begin
For j:=1 to 5 do
Write (ali,j]:5) ;
Writeln ;
End ;
1.
صفحه 181:
میتوان آرایههایی با ابعاد بیشتر از دو نیز تعریف کرد. بطور کلی برای
: معرفی یک آ ايه چند بعد: توان بصورت زد د
ی .1 [ دب ۳3 1 Name: psu (iene
length2 ] ....
Of array [ 1..
lengthN ] of Type
ويا
Name: array [ 1.. length1, 1.. length2,.... 1..
lengthN ] of Type
صفحه 182:
5 تحادى حبنت در مورت wary!
” تعريف آرايه با محدوده منفى
اى مثال:
برای مثال A:array[-10..10] of Real ;
v تعریف آرایه از نوع منطقی ( 0016 )
برای مثال:
A:array[1..20] of Boolean ;
صفحه 183:
برای مثال
A: array [ Boolean ] of
;integer
۷آرایهای با محدوده کاراکتری:
برای مثال
۵1 0۶۴ 1[ ۲2 .۲۸۰۰ ] 27727 :۱
"آرایهای که برای اعضای آن محدودیت قائل شویم
براى مثال:
A: array[1.. 20] of 1.. 0
صفحه 184:
>" << ااا
* جستجو و مرتبسازي (Geack ud Gort)
یکی از مسائلی که در بحث طراحی الگوریتم بسیار مهم است. بحث مرتبسازی
و جستجو می باشد. منظور از جستجو اینست که یک مقداری را از یک لیست
جستجو کنیم و منظور از مرتب سازی اینست که یک لیست مرتب از داده ها را
ایجاد کنیم. حال تعدادی الگوریتم که برای مرتبسازی و جستجو بکار میروند
را بسررسیمرکنيم بخصوص زمانيكه ساختار داده ما يكآرليه باشد .
صفحه 185:
EEE EEE << << ">
* جستجو و مرتب سازي ( ۷« له (search
یکی از مسائلی که در بحث طراحی الگوریتم بسیار مهم است. بحث
مرتبسازی و جستجو میباشد. منظور از جستجو اینست که یک مقداری
را از یک لیست جستجو کنیم و منظور از مرتبسازی اینست که یک ليست
مرتب از دادهها را تولید کنیم.
برای جستجو و مرتبسازی الگوریتمهای مختلفی وجود دارد در زیر
الگوریتمهای اولیه. برای جستجو و مرتبسازی را بررسی میکنیم.
صفحه 186:
دو الگوریتم زیر غالبا برای جستجو بکار میروند:
صفحه 187:
۰ 1 1 > = مین
ات به تر تیب ن» دومن
‘od
با
بويت
J J تیور
3
مور و و
عبا
خطى
S.
۳ ]
د
شد
بيدا
حستجو ی
د >
عور
عنصر
Ayes
می دب
يسه
مقاب
به
آراب
عنصر
و .۰
میدهیم:
ou
نماد
آن را
۳
اند
صفحه 188:
Read(x)
صفحه 189:
در جستجوی دودوئی . لیست مورد جستجو, موتب میباشد. لذا برای
جستجو اعمال زیر انجام میشود:
۱- عنصر ۲ با عنصر وسط آرايه كه انديس آن برابر
middle (low+high)/2
مقایسه میشود.
صفحه 190:
ود زرط
مت بالای لیست قرار دارد. لذا آرایه با اندیس. جدید در نظر گرفته
بود و قسمت پایین لیست از فضای جستجو حذف میشود.
ر ک از عتصر وسط آرایه بزرگتر باشد قسمت بالای لیست حذف
ود و فضای جستجو قسمت پایین آرایه خواهد بود.
- اگر 5 برابر عنصر وسط باشد عمل جستجو خاتمه میپذیرد.
صفحه 191:
مرتبسازی بحث بعدی این فصل میباشد. برای مرتب کردن دادهها نیز
Hos - /
الگوریتمهای مختلفی وجود دارد. که هر کدام مزایا و معایب خاص خود
را دارد. بحث مفصل در این مورد را به فصلهای بعد واگذار میکنيم.
صفحه 192:
EE EE EEE EE موممئي
مه &
تمرین *
لوچارتی رسم نمائید که عددی از ورودی دریافت کرده. اعداد کامل
قبل از خود را تولید و در یک آرایه قرار دهد.
لوچارتی رسم نمائید که یک آرایه حداکثر ۱۰۰ عنصری از ورودی
ریافت کرده ita Dl al 0G ag alee را بااضق عردن علافت تباند.
لوچارتی رسم نمائید که یک عدد حداکثر ۲۰ رقمی را توسط آرایهای
ورودی دریافت نماید. سپس یک عدد تک رقمی را از ورودی خوانده
| عدد ۲۰ رقمی ضرب نموده, حاصل را در خروجی چاپ نماید.
صفحه 193:
در كل دو نوع عمل جستجو را در اين كتاب بررسی میکنیم :
<جستجوی خطی 5©23:012 11122623
جستجو دودویی Binary search
صفحه 194:
در جستجوی خطی عبارت مورد جستجو را نخست با اولین عضو آرایه مقایسه
میکنيم. اگر برابر بود عمل جستجو با موفقیت همراه بوده و عمل جستجو
خاتمه مییابد در غیر اینصورت روند را ادامه داده و عبارت مورد جستجو را
بترتیب با عضو دوم. سوم ... مقایسه میکنیم تا اینکه حالت تساوی حاصل شود
ol SI: حالت حاصل نشد» عباریت مورد جستجو در لیست قرار ندارد
صفحه 195:
ee
hile (i< =N) and (flag) Do
Begin
1-1+ 1 ۶
if A[i] =x Then
Begin
Index: =i ;
Flag: = false ;
End ;
End ;
flag Then
Writeln ('The Element is found ' )
56
Writeln ('The Element is not found') ;
صفحه 196:
درجستجوی دودوئی لیست اولیه بایدمرتب باشد. برای جستجو در چنین آرایهای
نخست انديس وسط آرايه را پیدا میکنیم و عنصر واقع در این اندیس را با
:عبارت مورد جستجو مقایسه میکنيم و حالات زیر ممکن است حاصل شود
Low) | ابتدای آرایه و 1101061 اندیس آخرین عناصرآرایه و
6 اندیس عنصر وسط میباشد.)
صفحه 197:
. ] middle ] < X Then
Low : = middle ر ایتصورت
و مقدار جدید 1010016 را که عبارتست از:
Middle : = ( low + middle ) / 2
صفحه 198:
1016 [ > Then
upper : = middle ر ایتضورت
و مقدار جدید 10010016 را که عبار تست از:
Middle : = ( low + middle ) / 2
صفحه 199:
idle ] =X Then
Write ('The Eiement is قو ایتضورت
found ' )
LOW < Upper Sly ls |) صووتىكه حالقائا فيا ب اتفاقبيفتد عم جستجو
مى باشد ادامه مىدهيم و در هر مرحله كه حالت سوم رخ دهد عمل جستجو خاتمه مى يابد.
صفحه 200:
برای مرتبسازی دادهها روشهای متفاوتی وجود دارد . تفاوت روشهای
مرتبسازی در زمان اجرای آنها می باشد. در حالت کلی با توجه به تعداد
ورودیها (داده ها) و نوع مسئله مرتبسازی می توان از انواع روشهای
.مرتبسازی استفاده نمود
حال بعضى از روش های مرتب سازی عمومی را بررسی میکنیم.
*؟ مرتبسازی حبابی ) (Bubble sort
*مرتبسازی انتخابی ( 50۲۲ 56166109)
صفحه 201:
سادهترین روش مرتبسازی روش مرتبسازی حبابی میباشد. یکی از خصوصیات بارز اين
نوع مرتبسازی این است که فهم آن ساده بوده و برنامهنویسی آن به سهولت انجام می كيرد
مرتبسازی حبابی نخست عنصر اول و دوم را با هم مقایسه میکند و در صورت GUS آنها
را جابجا میکند. سپس عنصر دوم و سوم را مقایسه میکند. این عمل را تا زمانیکه به انتهای
آرایه نرسیده تکرار میکند. در پایان مرحله اول بزرگترین عنصر در آخرین خانه آرایه قرار
عمل بالا را انجام میدهد. این روند را 1 - N مى كيرد. در مرحله دوم از خانه اول تا خانه
تا زمانيكه تمام عناصر آرایه مرتب نشدهاند ادامه میدهد و در نهایت یک لیست مرتب شده
.بصورت صعودى در خروجى توليد مى شود
صفحه 202:
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
صفحه 203:
در اين روش مرتبسازی نخست کوچکترین عنصر را در کل آرایه پیدا کرده
در خانه اول آرایه قرار میدهیم سپس عنصر کوچکتر بعدی را یافته در خانه
دوم قرار میدهیم اين روند را تا زمانیکه کل آرایه مرتب نشده ادامه مید.
مرتب میدهیم
صفحه 204:
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 }
صفحه 205:
EEE EEE
bal, جند منال در مورد +
مثال : برنامهاى بنويسيد كه يك عدد صحيح از ورودى دريافت کرده سپس
.اعداد اول قبل از آن را توليد و در آرايه قرار دهد
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;
—
صفحه 206:
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 }
صفحه 207:
Begin.
Writeln ('Enter Array') ;
for i:=1 to 3 do
for j:=1 to 3 do
Read(a[li,j]) ;
Writeln ; Writeln ('The result matrix
For i:=1 to 3 do Begin
For j:=1 to 3 do Begin
Write (a[i,j]:8:2) ;
Sum: = sum + a[i,j ];{ calculate sum
any row }
End ;
Writeln ( sum: 8:2 ) ; Sum:=0 ;
صفحه 208:
ray 307 of ۳
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]);
صفحه 209:
End
Else if L1[i] < L2[j] Then Begin
L3[k]:=L1[i] ;
;1 زرح(
End
Else Begin
]ناک ۶ ۶ ] ون 1 3
1» < 1+1 رز
۲۵ | ق ] اج(
i=l
زع نل +1:
end ;
k =k+1;
} ل ل سو
صفحه 210:
1 ز 1+ 16 ع
end
Else if j< =M Then
for p:=j to M do Begin
L3[k]:=L2[p];
k=k+1;
600,
Writeln ;
Writeln ('The result of merge is') ;
for i:=1 to k-1 do Begin
Write: (.L3) [1] 5).5
If (i mod 10)=0 Then
Writeln ;
End ; { end of merge }
id. { End of program }
صفحه 211:
Begin
Writeln ('Enter Number of sentence:') ;
Readin (N) ;
Writeln (‘Enter sentence') ;
for i:=1 to N do
Read (state [i]) ;
for i:=1 to N do
if state[i] =‘ ' Then
state[i]:='*' ;
Writeln_ ;
Writeln ('The output sentence') ;
for i:=1 to N do
Write (state[i]) ;
صفحه 212:
5
** تموينات
- كداميك از دستورات زير در مورد اعلان زير صحيح است:
a: array['A'..'Z'] of
char
- :[ 'ق ' ] د'
الف- 7 ۲
:۵۰1 ]و
ج- 1 - :1 ۸ ۲] 2
د 12 2 :1 ۲1] 2
ح- 12 1:2 ]2۵
صفحه 213:
uarw [-OO..d0] oP cha ٠
‘aarp [-OO.. 20 , 0.. 20 [ ۶اه ۲ ۴
a arw [@vvleur ] oP cha ۶
oP titer ٠ [' .1 ' ..' © ' , 00 ..0 ] بصصه زه
صفحه 214:
EEE EEE << <<"
تمرینات بینامهنویسی
* برنامهای بنویسید که که یک آرایه حداکثر ۵۰ عنصری را از
ورودی دریافت کرده و سپس عناصری از ارایه که اول هستند
را با صفر جایگزین کرده ارایه حاصل را در خروجی چاپ
كند.
برنامهای بنویسید كه عددى از ورودى دريافت كرده سپس آن را به
عامل هاى اول تجزيه نمايد و حاصل را بصورت زير در خروجى
:جاب نمايد
OAV) OAT) RAN Se Gly
صفحه 215:
برنامهای بنویسید که یک عدد از ورودی دریافت کرده سپس در صورت وجود صفرهای
آن را حذف نموده نتیجه را در خروجی چاپ نماید.
برنامه ای بنویسد که یک ماتریس ۵ * ۵ را از ورودی دریافت کرده سپس مجموع هر
سطر را انتهای همان سطر و مجموع هر ستون را در انتهای همان ستون چاپ نماید.
صفحه 216:
ماتریس هم پر حسب ستون و هم بر حسب سطر مرتب نموده به همراه ماتریس !
در یک سطر چاپ نماید.
برنامهای بنویسید که یک آرایه ۲۰۰ عنصری ازنوع صحیح که ۱۵۰ عنصرمرتب
درآن قرار میگیرد را از ورودی دریافت کرده سپس آرایه دومی با ۵0 عنصر را از
ورودی بخواند.
صفحه 217:
هدفهاي كلي
شناخت ساختار تابع و روال
شناخت توابع و روالهاى استاندارد براى نوعهاى صحيح
شناخت توابع و روالهای استاندارد برای نوعهای اعشاری و کارکتری
أشناخت توابع و روالهای استاندارد ریاضی
صفحه 218:
در کل هدف تابع اینست که متفیر یا متفیرهایی را بعنوان پارامتر از پرنامه
اصلی دریافت کرد. عمل خاصی را روی پارامترها انجام داده و نتیجه را به
برنامه اصلی بر گرداند
:شکل کلی فراخوانی توابع در برنامه اصلی بصورت زیر میباشد
ساختار تابع:
Function Name ( parameters )
Type
| نوع تابع باراهتزها |
اسم تابع کلمه ذخیره شده
صفحه 219:
EEE EEE ">
“ توابعي براي اعداد صحیح و اعشار ی
av
Abs et
دف: باز گرداندن قدر مطلق ( 2155010116 ) پارامتري که به آن ارسال ميشود:
Function Abs (x: Integer ): Integer ;
Function Abs (x: Real ): Real ;
اين تابع یک عبارت از نوع حقیقی يا صحیح را بعنوان آراگون دریافت کرده سپس
.قدر مطلق آن را محاسبه و حاصل را برگرداند
صفحه 220:
f: Real ;
I: Integer ;
egin
F: = Abs (- 191.15);
I: =Abs(-171) ;
Writeln ('f=', £:8:2, 'IT=', 1);
ind.
خروجیحاصل:
F= 191.15 I= 171
صفحه 221:
هدف: باز گرداندن سینوس یک عدد از نوع اعشاری
Function Sin ( X: Real ): Real تابع:
6 یک عبارت يا عدد از نوع اعشاری بوده و حاصل مقدار سیئوس 6 میباشد.
صفحه 222:
Var
X: Real ;
Begin
2 : < 510 ) 10( :
Write ('sin(10)=', x:8:2);
End.
صفحه 223:
هدف: باز گرداندن کسینوس یک عدد از نوع اعشاری.
تابع: Function cos ( X: Real ): Real
۷ یکعبارتبا عدد از نوع لعشاریبوده و حاصلمقدار کسینوس»1 میا:
صفحه 224:
ir
X: Real ;
gin
X:=cos(10) ;
Write ('cos(10)=', x:8:2) ;
id.
صفحه 225:
هدف: بازگرداندن آرک تانژانت یک عدد از نوع اعشاری
; Function ArcTan ( X: Real ): Real تابع:
6 یک عبارت یا عدد از نوع اعشاری بوده حاصل مقدار آرک تانژانت میباشد.
صفحه 226:
Var
X: Real ;
Begin
X:=ArcTan (10) ;
Write (' ArcTan (10) =', x:8:2);
End.
توجه: در صورتى كه در توابع مثلثاتى زاويه از نوع درجه ارائه شود
#مى توان با فرمول زير معادل راديان آن را محاسبه كرد
Real = Dey * 3.14159 / 180
صفحه 227:
هدف: عدد نپر ( 2.71828 -۰...) را به توان یک عدد میرساند.
; Function Exp ( X: Real ): Real شکل تابع:
عبایتیا متفیریاز نوع لعشاریبوده و حاصلتسلبع نیز یسکعند لعشاریمیی اشا
اين تابع مقدار عبه توان 16 را محاسبه میکند.
صفحه 228:
X:Real ;
i:integer ;
Begin
For i:=1 to 10 do
Begin
1۲ :- وه )1( :
Writeln ( x:8:2) +
End ;
End.
صفحه 229:
هدف: قسمت اعشاری یک عدد اعشاری را برمی گرداند.
3 Function frac ( X: Real ): Real شکل تابع:
5 عددئاز نوع لمعشايىو حاصلة لبع يكهدد لمعشاروكه قسسلعشايى
عدد 26 است می باشد و بعبارت ديكر اين تابع قسمت اعشارى عدد ورودى را
به عنوان خروجی باز میگرداند.
صفحه 230:
0
Y,X: Real ;
gin
X: = frac (24.769) ;
Y: = frac (- 12.75 ۱
Write ('x=', 8: 3,"y= "ee 23
0 ۰
X= 0.769 حلا - 5
صفحه 231:
هدف: قسمت صحیح یک عدد اعشاری را برمی گرداند.
شكل تابع : y Function Int ( X: Real ): Real
X یکعبارسیا متغیر از نوعلمعشايىو خروجى: لبع فيزيكعلد
اعشارى است اين تابع مقدار صحيح يك عدد اعشارى در خروجى
نشان میدهد.
صفحه 232:
y,x:Real ;
Begin
X:= Int (2.87) ; {2.0}
Y:=Int(-876); {-8.0}
End.
صفحه 233:
هدف: محاسبه لگاریتم یک عدد
اعشاري در مبناي ».
; Function Ln ( X: Real ): Real شکل تابع:
5 ی کعبایتیا متغیر ازنوع لعشاریوده وحاصلتلبع فیزیکعددلعشاریمی |
صفحه 234:
Var
X:Real ;
Begin
X:= Ln (2.87) ; { x = 3.73767}
Write (*x=",x:10:5) ;
End.
صفحه 235:
هدف: فرد بودن عدد صحیح را
بررسي مي کند.
7 Function odd ( X: logint ): Booleam 7 شكل تابع
* یکعبایاز نوع 100۵104 لستو تسلبع .فرد بسودنعبایستوا بسروسیمیکسند
اگر مقدار خروجی تابع 100 باشد 1 فرد است و اگر مقدار خروجی تابع 1۳:15
باق ات
صفحه 236:
صفحه 237:
هدف: غالباً برای پیدا كردن كد اسكى يك متغير كاراكترى بكار میرود.
; Function Ord (x: char ): Longint شکل تابع:
x ole از نوع كاركتري را بعنوان باراقتر درزيا فقت
و کد اسكي آن را برمي گرداند
اكررز ازوبوع اسكالن ياش نايع يختوان sai
ترتیب قرار گرفتن : را در مجموعه
اي که ابتدا به عنوان اسکالر اعلان شده, باز
حیکرداید.
صفحه 238:
کد اسکی " ۸۸" تا" 2 " را درخروجی چاپ میکند
كد اسكى ۰ ۸۸ " عدد 1۵ میباشد.
صفحه 239:
هدف: عدد پی را بر میگرداند.
7 Function pi: Real : شکل تابع
این تابع برای بازگرداندن عددی پی ( ۳۱8۱۵۹۲ ۰۰۰) مورد استفاده قرار میگیرد.
صفحه 240:
هدف: مقدار قبل مقدار پارامتر را
بر مي گرداند.
pn pred (x): < same type of parameter > ; ۲
پارامتر تابع می تواند از هر نوع باشد و با توجه به نوع پارامتر تابع نیاز از
هم نوع میباشد و خروجی تابع مقدار قبل از * میباشد.
صفحه 241:
Ch: = pred ('d') ; 1 0 < 6
i: = pred (15) ; {i=14}
flag : = pred ( True ) ; { flag = false }
i: = pred (- 30) ; {i=-31}
صفحه 242:
۲ تابع ۳۵0010
هدف: برای تولید عدد تصادفی
:شكل تابع
D Function Random: Real ;
2 Function Random (x: word ): word ;
اگر تابع :18۸0000 به شکل یک یعنی بدون آرگومان مورد
استفاده قرار گیرد یک عدد تساوی از نوع اعشاری بین صفر و یک
تولید می کند و اگر به شکل دو بکار رود باعث تولید یک عدد تصادفی
از نوع word که بزرگتر یا مساوی صفر و کوچکتر از < است خواهد شد.
صفحه 243:
Var
i: integer ;
Begin
For i:=1 to 10 do
Begin
Writeln (Random :8:7) ;
Writeln ( Random ) 20(:8) :
End ;
End.
۰ عدد تصادفی بین صفر و یک.
و ۱۰ عدد تصادفی بین ۰ و ۶۰ تولید نماید.
صفحه 244:
هدف: برای گرد كردن اعداد اعشارى بكار می رود.
تابع: Function Round (x: Real ): Longint
X ی کعبارتیامتفیر لعشاریسوده وخروجیتلبع یکعدد اننوع Longint
مى باشد كه نتيجه كرد كردن میباشد. اين تابع X را به نزدیکترین مقدار
مینک كر
صفحه 245:
er ee ee و
0 2 :) 1
13 1 9
هددع ein ee
{i=18 اللا
i: = Round (17.45) {i=18
صفحه 246:
هدف: بر ای محاسبه محذور یک عدد صحیح يا اعشاری بکار میرود.
شکل تابع:
Function sqr (x: Integer ): Integer ;
Function sqr (x: Real ): Real
7
* عبارتی یا متغییری از نوع صحیح یا اعشاری بوده و خروجی تابع فیزیک
یک عدد صحیح یا اعشاری می باشد این تابع مجذور 16 را بعنوان خروجی بر
میگرداند.
صفحه 247:
Var
i: integer ;
Begin
For i:=1 to 10 do
Writeln ('I* 2=' , sqr
)1(( ز
End.
صفحه 248:
هدف: برای محاسبه جذر یک عدد بکار میرود.
Function sqrt (x: 0
0 ; Real ): Rea
بر کت ee ee
ah ltl ys جنر # را بسعنولنخروجوبر میگ ردلند
صفحه 249:
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.
صفحه 250:
هدف: مقدار بعد از مقدار فعلی را برمی گرداند.
Function succ (x): same type of شکل تابع:
زر parameters
X یک عبارت از نوع صحیح, اولین و غیره بوده و خروجی تابع نیز از همان
نوع 3 مى باشد اين تابع مقدار بعد از ۱ را بعنوان خروجی بر میگرداند.
صفحه 251:
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 }
صفحه 252:
هدف: قسمت صحیح یک عدد اعشار را بر میگرداند.
Function Trunc (x: Real ): شکل تابع:
; Longint
x تکضارتیا متیر از نوغ شاوی ودد و خروجیتسلبع یکعدد از نوع
Longint میباشد. این تابع قسمت صحیح عدد اعشاری ۶ را بعنوان
خروجی بر میگرداند.
صفحه 253:
; {i=12}
; {i=12}
; {k=13}
25 ,'jH',j:5,'
x,i,j:Longint ;
Begin
i: = trunc (12.5 )
j: = trunc (12.4)
k: = trunc (13.5 )
Writeln ('IT=',i
k=',ks5);
End.
صفحه 254:
ee
توابع از نوع کاراکتری *
در این بخش توايعي رآ بررسي مي کنیم که خروجي
آنها ار نوع كاراكتري باشد
chr at ¥
هدف: معادل کاراکتری یک کد اسکی را بر میگرداند.
unction chr ( X: Byte ): char شکل تابع:
2 یکعبارتیا متغفیر از نوع بایتبسوده و خروجیتلبع یک ارکتر میساشد
این تابع کد اسکی را دریافت کرده و معادل کارکتری آن را بر میگرداند.
صفحه 255:
Var
i: Byte ;
Begin
For i:=65 to 91 do
Writeln (chr (I) ) 5
End.
: خروجی
برنمه بالا حروف ۸ تا 2 را در خروجی چاپ میکند.
صفحه 256:
هدف: براي تبدیل یک کاراکتر به حرف
بزرگتر بکار ميرود.
; Function Upcase ( ch: char ): char شکل تابع:
یک عبارت یا متغفیر از نوع کاراکتر بوده و خروجی تلبع فیزیک کاراکتری
باشد لین تلبع حرف کوچک رابه حرف بزرگ تبدیل کرده و بعنوان خروجی
حروف بزرك را بر مى كرداند.
صفحه 257:
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
صفحه 258:
EE EE EEE EE موممئي
روالهاي استانداره *
در بخش های قبل دیدید که در توابع پارامترها به تابع ارسال می شود و تابع نیز
مقداری را بعنوان خروجی برمیگرداند روالها نیز مشابه توابع عمل میکنند با
اين تفاوت که خروجی روالها از طریق پارامتر برمی گردانده میشود يا اعلان به
.سیستم عامل میباشد. بنابراین روالها بدون نوع هستند
:شکل کلی روالها بصورت زیر میباشد
; Procedure Nar
| ۱ |
پارامترهاي روال اسم روال كلمه ذء
صفحه 259:
هدف: یک يا چند واحد از پارامتر ارسالی کم می کند.
:شکل روال
Procedure Dec (Var X: longint ) ;
Procedure Dec ( Var X: longint , N: longint ) ;
6 یسکمتفیر از نوع 10:84 و بسصوومتغیریمویاشدلینروالل
يكولحداز يارلمتر ايسا ىكم موكسند
صفحه 260:
Var
N: integer
Begin
N:= 1201;
Dec(N); {N=1200}
Writeln (N) ;
Dec(N,200); { W= 1000}
Writeln (N)
End.
صفحه 261:
هدف: کنترل برنامه را به خارج از بلوک جاری منتقل می کند.
> Procedure Exit شکل روال:
این روال باعث می شود که کنترل برنامه از بلوک جاری خارج شود. اكر اين
روال در برنامه اصلی بکار رود باعث خروج از برنامه میشود. و اگر در یک
روال يا تابع بکار رود باعث خروج از روال یا تابع شده و کنترل برنامه به
ل م سل نید
صفحه 262:
Var 9
i,j:integer ;
Begin
i:-100;
j:=20 ;
Dec (i,j);
Write (i) ;
Exit ;
End.
: خروجی
بعد از اتمام عمليات 96 Exit باعث خروج از برنامه می شود.
صفحه 263:
هدف: خاتمه دادن به اجرای برنامه
> Procedure Halt شکل روال:
این روال باعث خاتمه اجرای برنامه شده و کنترل برنامه به سیستم عامل بر
كردة.
صفحه 264:
هدف: اضافه کردن یک يا چند واحد به یک متغیر
cedure Inc ( Var X: longint ) شکل تلیع:
مد Inc ( Var X: longint , N: longint ) ;
ite lds ally plush» Longint يكهبايتيا متغير از نوع X
سركت ail lily wee Lens x
صفحه 265:
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.
صفحه 266:
هدف: باعث تغیر نحوه تولید اعداد تصادفی می شود.
Procedure شکل روال:
; Randomize
وقتی در برنامه از تابع 18213010102 استفاده میکنیم اعداد تصادفی تولید
شده در اجراهای مختلف یکسان می باشد برای جلوگیری از این وضعیت قبل
از استفاده از تابع 1823000100 روال 130110101026 را بکار میبريم. تا
باعث تولید اعداد تصادفی متفاوت در اجراهای مختلف گردد.
صفحه 267:
Var
i: word ;
Begin
Randomize;
For i:=1 to 10 do
Writeln (Random (50) ) ;
End.
صفحه 268:
EE EE EEE EEE EE
حل چند مثال برنامهنويسي *
1 * 9 ) > < 10 ( مثال : برنامه ای بنویسید که یک ماتریس مربع
از مقادیر صحیح را از ورودی دریافت کرده آنگاه عناصری که مربع کامل
نیستند را صفر کرده و در نهایت ماتریس حاصل را در خروجی چاپ می کند.
۳
؟ تايوه 26667
a:array[1..10,1..10]of integer ;
gin
Write (' enter Number:') ;
For i:=1 to N do
For j:=1 to N do
Read: ((ai[ei jell) iy;
صفحه 269:
ali,j]sqr (Abs (ali,j1)))
Then
8 یرل زود
Writeln ('The oupput Mafrix') ;
For i:=1 to N do
Begin
For j:=1 to N do
Write (a [i,j 1:5) 3
Writeln ;
End ;
End. { End of program }
صفحه 270:
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 }
صفحه 271:
+ تمرینات
i,j: integer is Bok Mineo 5
۱.خروجی تمرینات زیر را تعیین کنید: 9 0
ز 20 < :[ 100 2< : 1
7 1001011
Dec (j,10) ;
Mead) 2
Writeln (1:25,j:5) ۶
y : integer ;
in
7 : =Round (18.31) MoD 5 ;
Writeln (y) ;
-_
صفحه 272:
Chi = "A" 3
Ch: = chr(ord(ch)+3) ;
Write (ch) ;
xX; = 12"
Suec (x) >
0: < BL
Pred (ch) ;
Write (x,ch) ;
صفحه 273:
:ی
* تمرینات برنامهنويسي
۱- برنامهای بنویسید که تعداد ۱۰۰۰ شماره حساب بانکی ۷ رقمی بطور
تصادفی بین ۵۱۱۹۶۳۲ و ۹۹۸۱۷۱۱ را تولید کرده و چاپ کند.
۲- برنامه ای بنویسید تا تعداد ۳۸ عدد تصادفی صحبح بین ۱۰ تا ۹٩ راتولب
کرده سپس آن را در خروجی به شکل مربع وسط صفحه نمایش چاپ کند.
۳- برنامهای بنویسید که یک عدد ۲۰ رقمی از ورودی دریافت کرده آن
را در یک عدد تک رقمی ضرب نموده و حاصل را در خروجی چاپ نمائید.
صفحه 274:
Ahan’
(String) عتغیرهایک اراکتری وشتهها
هدفهاي كلي
پررسی ساختار آرایه هایی از نوع کاراکتر
معرفى نوع دادة جدید به نام رشته
مقایسه آرایه ای از کاراکتر و رشته
شناخت توابع و روالهای استاندارد برای رشته ها
صفحه 275:
* متغيرهايي از نوع کاراکتر
متفیرهای کاراکتری ظرفیت پذیرش یک کاراکتر( شامل یک رقم. یک حرف از
.حروف و يا يك كاراكتر ديكر ) را دارامیباشند
مقدار دهیلینمتغیر ها به صووؤير مئهاشد :
یگ د بلع" :
اكر بخواهيم متغير هاى كاراكترى را از ورودى بخوانيم بايد دقت بيشترى
به .خرج دهيم براى اينكه فضاهاى خالى كاراكتر محسوب مى شوند
صفحه 276:
Writeln (' equal ' )
Else
Writeln (' Not equal') ;
خروجی حاصل از قطعه برنامه بالا بصورت زير است:
Not equal
صفحه 277:
تیقمها بسصویتزیر مقایسه میسوند -1
9 ع وين 1 مهد 35" هم 1 ۷ PQS
.رقمها از لحاظ كد اسكى يشت سر هم قرار كرفتهاند
مقايسه مىشوند -2
اک *
صفحه 278:
هاي رسهاي ( ۱2۲۲۱
تعریف: مجموعهای از کاراکتر را یک رشته نامیده و متغفیر از نوع آن را
.یک متغیر رشتهای مینامند
اين متغیر نیز مانند سایر متفیرها در قسمت تعاریف متفیرها ( ۵ ) معرفی
میشود. در تعریف یک متغیر رشتهای معمولاً طول آن را مشخص میکنند.
اگر طول تعیین نشود بطور قراردادی کامپایلر حداکثر طول را برای آن در نظر
مى كيرد. حداکثر طول رشته ۲۵۵ کاراکتر میباشد.
صفحه 279:
Name
sd
۳ 2
۱ طول رشته کلمه ذخیره شده
سم رشته
صفحه 280:
Var
S:string[10] ;
Begin
S:='pascal' ;
Write (s) ;
End.
صفحه 281:
; Read (s )
هنگام خواندن متغیرهای رشتهای اگر طول رشته ورودی از طول تعریف
شده بیشتر باشد فقط به اندازه طول تعریف شده خوانده می شود و اگر طول
رشته ورودی کمتر از طول تعریف شده باشد. رشته ورودی در منتهیالیه
سمت چپ متغیر رشتهای قرار گرفته و بقیه متغیر رشته ای بدون محتوا
ای ی ماد
صفحه 282:
7[ میتوان استفاده کرد:"
Write (s) ;
مثال : برنمهای بنویسید که شماره دانشجوئی. اسم و فامیل دانشجوثی را
.از ورودی دریافت کرده سپس در خروجی نمایش دهد
صفحه 283:
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
صفحه 284:
آرايهاي از رشته بصورت زیر تعریف ميشود:
iy [1..length] of string
نوع رشته اي طول آرايه
صفحه 285:
برای خواندن چنین آرایهای بصورت زیر عمل میکنیم:
r i:=1 to 50 do
ReadIn (Name [i]) ;
براى نمايش آرایه در خروجی بصورت:
For i:=1 to 50 do
Writeln ( Name [i] )
صفحه 286:
180 ] 10 [ :صصما زر 1, : 25316
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 }
صفحه 287:
.صورت وجود در خروجی نمایش دهد
Name , Family: array[1..50] of string[ 30] ;
id: array[1..50] of longint ;
Nam : string [ 30] ;
صفحه 288:
write ('Enter Name:') ;
ReadIn (Name ) ;
write ('Enter family:') ;
Readln ( family ) ;
write ('Enter student Number:') ;
ReadIin (Id) ;
end ;
writeln ;
write ('Enter Name:') ;
Readin (Nam) ; -_
صفحه 289:
if Name[i] = Nam then
flag : = false ;
end ;
If flag then
writeln ('Not found') ;
Else
Begin
writeln(' Id Name
family ')
write (Id, Name : 30, family : 30 ) ;
end ;
صفحه 290:
EEE EEE << << ">
* قوابع و روالهاي کتابخانهاي براي متغيرهاي رشتهاي
Concat at v
هدف: الحاق دو يا جند رشته به یکدیگر
Function concat (S1,S2,...,Sn): شكل تابع:
; string
ومع , 910 متغیرهایی از نوع رشته هستند و خروجی تابع نيز
یک متفیر رشتهای است این تابع دویا چندتابع را به هم پیوند داده و رشته
حاصل را پرمی گرداند.
صفحه 291:
str2: string ر او ر تاه
egin
Str1 :='Pascal' ;
Str2 :='Book' ;
Str3 : = Concat ( Str1, Str2) ;
write ( Str3 ) ;
nd.
با اجرای برنامه فوق. عبارت 0016 Pascal نشان داده خواهد شد.
صفحه 292:
ندف: استخراج یک زير رشته ( 511053110 ) از یک رشته
n copy (S:string ; Index:Integer; count: Integer): stri
يكهبايتيا متغير يشته لیک» میخولهيم از آنزیر پشته لیک» نقطه 5 _
میباشد جدا کنیم لنا زیر یشته legs Index o,b , Count
لمستموياشد 0۷11 حاصل یکیشته که طوللنبه لنلازد
صفحه 293:
Var
Strycstnil: string: 5
Begin
Str: =' Pascal Book' ;
Siriv= Capy( Str, 7,4) 74 Sri]
Book }
write (Str1) ;
End.
صفحه 294:
هدف: حذف یک زیر رشته از یک رشته
شکلروال: Procedure delete (Var str: string;
Index:integer;length: integer ) ;
5 يكمتفر يشتهلمى 111018 یکعبارتبامتغیر صحیح و 1.61101 نب
٠ عبارت یا متغیر صحیح میباشد. روال 6166( یک زیر رشته را از یک
ته حذف میکند این روال از محل 112062 بطول 1.6۳901 از رشته ٩1
ف میکند و رشته حاصل بعنوان خروجی روال برگردانده میشود.
صفحه 295:
Var
St: string ;
Begin
St: = 'Pascal.Book' ;
Delete (St,7,5) ۶
writeln (St) ;
End.
خروجی حاصل از برنامه فوق 389081 میباشد.
صفحه 296:
هدف: درج ( وارد کردن ) یک رشته در یک رشته دیگر
Procedure Insert ( Str1: string ;Var :J\;, Js:
; Str2: string ; Index: Byte )
513 عبارت يا متغیر رشته ای. ٩12 منغیر رشته ای و ole Index
دد از نوع ae میباشد. روال 11561 رشته 9171 رادر رشته 512
خانه Index درج میکند و رشته حاصل خروجی روال خواهد بود.
صفحه 297:
Var
Str1 , str2: string ;
Begin
Str1: =' Pascal 7' ;
Str2: ='Turbo' ;
Insert (Str1, Str2,6) ;
End.
خروجی حاصل از برنامه بالا 7 7225621 Turbo خواهد بود.
صفحه 298:
هدف: محاسبه طول رشته
Function length (Str: string): ۰ شکل تابع:
; Integer
Str يكعبارتوشته لمويوده و خروجىتلبع يكعدد صحيح موياشد
این تابع طول رشته ورودی را محاسبه و بعنوان خروجی بر میگرداند.
صفحه 299:
Var
St: string ;
n: integer ;
Begin
St: = 'Turbo Pascal 7' ;
n:=length(S4); {n=14}
Write (' The length of string
ist) a) 3
End.
صفحه 300:
هدف: برای جستجوی یک رشته داخل رشته دیگر
Function pos ( Str1: string ; Str2::. js:
رز String ): Byte
1 يك عبارت يا متغير رشته ای و ٩112 نیز یک عبارت یا متفیر
رشته ای میباشد و خروجی تابع یک عدد صحیح می باشد. این تابع محل
اولین وقوع رشته 1 در رشته ٩۲2 را بعنوان خروجی بر میگرداند.
صفحه 301:
Var
Str1 , Str2: string ;
i: integer ;
Begin
Str1: =' Book' ;
Str2: = ' Pascal Book' ;
i: = Pos (Str1,Str2) ; {i=
8}
Write ('i=',i) ;
نکته: توجه کنید که اگر عمل جستجو با موفقیت انجام نشود ( JPG, ga
.در رشته دوم وجود نداشته باشد ) تابع مقدار صفر بر میگرداند
صفحه 302:
هدف: برای تبدیل عدد به یک رشته عددی بكار مى رود.
ال. 1: ( Str: string ر تقم؟ :تعاطا :1 )او وتال0 ۵8(
Procedure Str (F: Real: format, Str: string) : ;
درشکل ۰۱ 1 یک عبارت یا متغیرعددی بوده و ٩ یک متغیر رشتهای
مى باشد اين روال يك عدد صحيح با فرمت مشخص را به یک رشته عددی
درشکل ۲ ۰ ۲ یک عبارت یا متفیر رشتهای و ٩ یک متغیر رشتهای میباشد
صفحه 303:
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.
صفحه 304:
هدف: تبدیل یک رشته عددی به یک عدد
; Procedure Val (S: String روال: ۱: 66۲ص :۲ ۷۵۲ ز
; (Var Error: inte¢
dure Val (S: String ; Var N: Real ; Var Error: inte¢
5 یکعبارتیامتغیر يشته لی ۷( یکمتغیر از نوع صسحیح یسالعشاریو
1 نيز يكمتغير از نوع صحيح مئباشد دين ولليكيشته عددى
را به يكعلد صحيح يالمعشارىتبديلمىكند و لمزرا توسطمتغير 0(
بسرمیگردلند دگر عملتسبدیلسطور صسحیح لنجام شود. مقلار متفیر
281101 برلبر صفر در غیر اینصور تم حل و جود لشکل لوا مشخص رمک ند
صفحه 305:
F: Real ;
Begin
St='475';
Val (St,N,E) ; {N=475,E
=0}
St=' 475' ;
Val (St, F,E) ; {F= ,E=3
St = '3.1716' ;
Val (St, F,E) ; {F = 3.1716
,E=0}
End.
صفحه 306:
موممئي EE EE EEE EE
**ارائه جند مثال در مورد رشتهها و کاراکترها
مثال : برنامهای بنویسید که یک جمله از ورودی دریافت کرده سپس در
صورتی که کلمه 15 وجود داشته باشد انها را به 216 تبدیل نماید و در
نهایت رشته حاصل را در خروجی نمایش دهد.
توجه كنيد كه ممکن است بیش از یک بار کلمه 18 تکرار شده باشد
در اینصورت همه کلمات 15 را با ۵16 تبدیل کند.
صفحه 307:
Writeln (' Enter sentence
ReadIn (St) ;
Repeat
i: = Pos (‘is', St) ;
if 1< 0 Then
Begin
Delete ( St,
i,2);
Insert
(‘are', St,i) ;
end ;
1-141 يت د |)
صفحه 308:
Begin
Writeln ('Enter sentence') ;
Readin (St1) ; j:=1;
For i:=length(Stl1) downto 1
do Begin
St2 0 j les Sth [ai], x
Inc (j) ;
End ;
Writeln ('The result') ;
Writeln ( St1 ) ; Writeln( St2 ) ;
صفحه 309:
* تمرینات
= با فرض اینکه GS, Gd , 69 متغیر های رشته ای هستند
خروجی عبارتهای زیر را تعیین کنید.
a)S3 = copy(S1,1,6) ;
b)S3 = concat (S3,52,S1) ;
c)S3 = copy ($2, 1, pos($1,S2)-1 );
d)Delete (S2, pos(S1,S2),length(S1)) ;
صفحه 310:
S1: string ;
i: integer ;
91: = 'ABCDEF' ;
For i:=1 to length(S1) ;
Delete (S1,i,1) ;
Writeln (S1) ;
Var
Begin
End
صفحه 311:
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) ;
صفحه 312:
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
صفحه 313:
:ی
تمرینات بینامهنویسی
*برنامهای بنویسید که یک پاراگراف را از ورودی دریافت کرده
( حداکثر ۱۰ خط ) سپس:
.الف) تعداد کلمات هر سطر را شمرده و انتهای سطر نمایش دهد
«ب) تعذاد خروف صدا دار را شمرده.چاپ نماید
.ج) تعداد خطوط برنامه را شمرده در خروجی چاپ کند
.د) تعداد جملات هر خط را محاسبه و در سطر های جداگانه نمایش دهد
صفحه 314:
*برنامهای بنویسید که یک عدد در مبنای مشخص را از ورودی دریاف
کرده سپس آن را به مبنای 110 که از ورودی خوانده می شود ببرد.
*برنامهای بنویسید که یک پاراگراف را از ورودی دریافت کرده
کلمات تکراری هر سطر را حذف نموده و پاراگراف حاصل را بهمراه
پاراگراف اولیه در خروجی با پیغام مناسب نمایش دهد.
صفحه 315:
*برنامهای بنویسید که دو عدد ۲۰ رقمی ( بصورت رشته باید خوانده شود )
را از ورودی دریافت کرده سپس مجموع و حاصل ضرب این دو عدد را
محاسبه و در خروجی با پیغام مناسب چاپ نماید.
*برنامهای بنویسید که یک رشته از ورودی دریافت کرده
سپس کلمات داخل آن را بصورت عمودی کاراکتر به کاراکتر نمایش دهد:
*برنامای پنویسید که یک پاراگراف با حداکثر ۵ خط را از ورودی دریافت
نماید. سپس مجموع ارقام یا اعداد ( در صورت وجود ) هر خط را محاسبه
نموده در انتهای همان سطر نمایش دهد.
صفحه 316:
برنامههاي فرعي
هدفهاي كلي
۷ شناخت اجزاء تشکیلدهنده توابع و روالها
* بررسی انواع پارامترها و متغیرها در برنامههای فرعی
* شناخت تفاوتهای روالها و توا
* معرفی مزایای استفاده از ز؛
صفحه 317:
الم << << کچ
* روالها
روالها نوعی از برنامههای فرعی هستند. که به طور مستقل و جداگانه وظیفه
یا وظایف خاصی از برنامه اصلی را انجام میدهند. روال ها در صورت نیاز
اطلاعات خود را از طریق پارامترها دریافت و همچنین در صورت نیاز نتایج ر
از طریق پارامترها به برنامه اصلی باز میگردانند. پارامترها در حقیقت خطوط
.ارتباطی بین برنامه اصلی و برنامههای فرعی هستند. پارامترها باعث می شوند
که توابع و روال ها روانتر عمل کنند. زیرا آنها به برنامه های فرعی این قابلیت
.می دهند که با هر فراخوانی. دادههای مختلفی را مورد قرار دهند
صفحه 318:
Procedure Name (parameters list )
| | |
ليست بارامترها اسم روال كلمه دخوروشد
{ List of locad variable }
Begin
{ Procedure Body }
End af End of procedure }
صفحه 319:
اسم پرنامه اصلی Program
: تعاریف برنامه اصلی
Procedure ... ۳
Begin {main program }
فراخوانی روال ها
End. { End of program ۳
صفحه 320:
(Formal parameters ) 52 Gb =\)b.'
(Actual parameters ) (ily cs x1,LY.
از پارامترهای صوری هنگام اعلان روال و از پارامترهای واقعی هنگام
eternity at
صفحه 321:
پارامترهاي صوري در حالت كلي 2 نوعند؛ که با توجه به نوع روال و
تصمیم برنامه نویس مورد استفاده قرار مي گیرند:
” يارامترهاى مقدارى ( 12232312666375 71731116)
(Variable parameters ) ¢ ni ch jb %
صفحه 322:
پارامترهای مقداری. پارامترهایی هستند که مقدار متغیرهای فرستاده شدء از
برنامه اصلی را دریافت می کنند و وظیفه انها فقط عبور دادن مقدار به روال
میباشد. لذا تغییرات پارامترهای مقداری در روال به برنامه اصلی انتقال نمى يابد
: پارلمترهایم قداریب صوردفذیر تعریفسیشوند
dure Name (varl: type ; var2:type,...
ع مقداری اسم روال کلمه ذخیره شده
صفحه 323:
am main
2 , ۷1 , ۷2 : ۲
ure test (A1,A2,B1,B2:integer); {formal para
—/ fi}
x1 ,x2,yl, یت ; { Actual parameters }
{End of program a
صفحه 324:
سین ی لذا اسامی پارامترهای 02201
پاراسرهای وافعی Ola lel Gly شوند: بن بد مان این یت که
.این پارامترها ( پارامترهای صوری ) همان پارامترهای واقعی هستند
در مثال بالا اين تناظر برقرار است:
پارامترهای واقي متناظر است با پارامترهای صوری
Al 1
X2 A2
Y1 B1
Y2 B2
صفحه 325:
متغیرهای ۰.۰ , ۷۵۲1 ر ۷۵32 پارامترهای مقداری هستند. توحه کنید. که
این پارامترها صوری هستند و نوع و ترتیب آنها باید با نوع و ترتیب
پارامترهای واقمی در تناظر یک به یک باشند.
صفحه 326:
ram =main
2 , ۷1 , ۷2 : 1
lure :2ظ , 81 , 42 , 1ك ) أ165 integer ); {formal pai
Begin { main }
test (x1 ,x2,yl,y2) ; { Actual
paramete
End. { End of program }
—_—
صفحه 327:
همانطور که ملاحظه می کنید. روالی بنام 05 با ۶ پارامتر مقداری
در پرنامه استفاده شده است. متفیرهای 1 ر 22 , 971 ر ۷2 از برنامه
اصلی به روال 651 ارسال شده و بترتیب مقادیر این متغیرها در
متغیرهای با همان نوع در ۸1 , ۸2 , 81 , 192 قرار می گيرند.
صفحه 328:
1
اصلی برمی گرداند. تفاوت این گونه پارامترها با پارامترهای مقداری در ارسال
تغییرات ایجاد شده در پارامترها میباشد. وقتی نیاز است. که نتایج روال به
برنامه اصلی برگردد. از پارامترهای متغیری استفاده میکنند
اعلان پارامترهای متغیری به صورت زیر میباشد:
ure Name (var id1 : type ; var id2 : type
|
ليست يارامترهاي متغيري اسم رواال
متغيرهاى 1012 , 1011 و ... يارامترهاى متغيرى مىباشند كه نتايج روال. توسط
e 7
آنها به برنامه اصلی با ز گردانده میشود.
صفحه 329:
را محاسبه و نتیجه را در برنامه اصلي چاپ نماید.
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 ,
صفحه 330:
پارامتر واقعی متناظر است با پارامترهای صوری
Num1 Num1
Num2 Num2
Total sum
Average ave
3 , 111101 پارلمترهایمقداییو 276 , 811110 پارلمترهایستغیر؛
باشند. که توسط آنها نتایج به برنامه اصلی بر گردانده میشود.
صفحه 331:
در برنامههای فرعی دو نوع متغير علاوه از پارامترها مورد استفاده قرار
مى كيرند. این متغیرها متغیرهای محلی یا متغیرهای سراسر هستند.متفیرهای
محلی. متغیرهایی هستند که در بلاک مربوط به خود قابل استفاده هستند. ولی
متغیرهای سراسری در تمام برنامههای فرعی قابل دسترس میباشند
متغیرهای محلی در داخل برنامههای فرعی در قسمت تعاریف معرفی میشوند
.و در خارج از روال قابل دسترسی نیستند
صفحه 332:
-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}
صفحه 333:
پارامترهای واقعی
x
Y.
صفحه 334:
>dure test(var b: integer } a: Integer );
D: integer; {local variable}
1
D:=12;a:=bt+d; b:=at+c;c:=ct+2;
1 {Main}
A= 1; b=2; 6:=3;
Test(a,b);
Writeln(‘a=',a,'b=',b,'’c=',c);
{End of program}
:خروجی برنامه بالا بصورت زير است
a =16 b=2 c=5
صفحه 335:
بکارگیری روالهای بدون پارامتر
بکارگیری روال همراه پارامترهای با خاصیت ورودی
بکارگیری روال همراه پارامترهای با خاصیت ورودی و خروجی
صفحه 336:
كاهى لازم است تا برنامه فرعی کاملاً مستقل (بینیاز از مقادیر برنامه اصلی) در
بخشهای مختلف یک برنامه اجرا شود. در این صورت نیاژ به استفاده از پارامتر
بیمفهوم میباشد و از روالهای بدون پارامتر استفاده مى كنند
غالبا زمانیکه بخواهيم پیفامهای خاصی را در قسمتهای مختلف برنامه نمایش
دهیم. این پیفامها را در یک روال قرار داده و در صورت نیاز روال
مربوطه را فراخوانی میکنیم.
صفحه 337:
Program Example ;
Procedure Head
Begin
WriteL((Name Family Age
No’);
۱۷۷ ا ا م م )ام از 0
End;
Begin{Main}
WriteLn(' open university ' ) ;
Head;
End.
صفحه 338:
همانطور که قبلاً اشاره کردیم. هدف از بکارگیری پارامترها انتقال مقادیر از
برنامه اصلی به روالها میباشد. گر این اثقال یک طرفه باشد یعنی فقط از
پا مان به وواك بده gal فوج رجازامعرما اققفل:خاصنيت:ورودى نوم
داشت. (قبلا در اين مورد توضیح داده شده است) در این نوع روالها از
پارامترهای مقداری استفاده میکنند
صفحه 339:
(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}
صفحه 340:
بكارگيري روال همراه پارامترهاي با خاصیت ورودي و خرا
در این نوع روالها پارامترها دو خاصیت مهم دارند یکی انتقال دادهها از
برنامه اصلی به روال و دیگری انتقال یا ارجاع نتایج از روال به برنامهاصلی
میباشد. در اين نوع روالها از پارامترهای متفیری استفاده می کنند
صفحه 341:
اصلی چاپ نماید.
Program Example ;
Var
A, b: integer ;
Procedure change (var x, y:
integer) ;
var
temp:integer;
Begin
Temp:=x;
X:=y;
Y:=temp;
End;
صفحه 342:
Begin { Main }
ReadLn( a,b);
Change(a,b);
WriteLn ('a=',a,'b=',b);
End.{End of program}
صفحه 343:
* ارتباط روالها با یکدیگر
در پاسکال زیر برنامهها نهتنها از طریق برنامه اصلی بلکه از داخل یکدیگر
نیز .فراخوانی میشوند
فراخوانی روالها از داخل یکدیگر تابع قوانین کلی زیر است:
۲ قانون اول
قانون دوم
قانون سوم
صفحه 344:
از هر برنامه (اصلی یا فرعی) به برنامه فرعی در صورتی میتوان. دسترسی
داشت. که در بخش تعاریف آن برنامه (اصلی يا فرعی) قرار داشته باشد.
بطور مثال در شکل زیر برنامه اصلی. 11 میتواند. به كليه برنامههاى فرعى
2 و... که در بخش تعاریف برنامه اصلی قرار دارند. مراجعه کند
صفحه 345:
صفحه 346:
nd;
egin {Main}
۳001:
Proc2;
nd.
صفحه 347:
روالهای 1۲0602 , 107001 داخل برنامه اصلی Main 3 شدهاند. ل
براحتی میتوان در برنامه اصلی به آنها دسترسی پیدا کرد.
روالها خود نیز داخل هم میتوانند قرار بگیرند. دقیقاًمثل روالهای معمولی
ا اين تفاوت كه در داخل روال بايد تعریف شوند. به اینگونه روالها؛ اصطلاحاً
روالهای متداخل یا تودرتو میگویند.
صفحه 348:
اگر روالها در بخش تعاریف یک برنامه به موازات یکدیگر تعریف شوند و
نه در داخل هم. در روالهای بعدی امکان رجوع به روالهای قبلی وجود
خواهد داشت. بعبارت دیگر به روالی میتوان دسترسی پیدا کرد که قبلاًتعریف
شده باشد.
صفحه 349:
برنامه اصلى
روالها
در شکل بالا چون 102 قبلاً معرفی
شده است میتوان آنرا داخل 03
فراخوانی کرد.
Main
21
22
23
P2
صفحه 350:
اگر روالها در بخش تعاریف برنامهأی بصورت متداخل باشند. در اینصورت
از روال درونی میتوان به روالهای بیرونی که قبلا تعریف شده.
مراجعه کرد و همچنین از روال درونی به روالهای بیرونی که به موازات
یکدیگر قرار گرفتهاند. نیز میتوان دسترسی بيدا كرد.
طور مثال در شکل زیر روال 1 میتواند به روالهای 2,3 دسترسی
پیدا کند. وهمچنین روال درونی 101 میتواند بهروالهای 103 , 102 مراجعه کن
صفحه 351:
Main
P3
22
Pl
صفحه 352:
EEE EEE << << ">
* اعلان روالها به روش Porward
همانطور که قبلاً اشاره کردیم از روالی میتوان در روال دیگر استفاده کرد.
که قبلاًتعریف شده باشد. در توربوپاسکال نقیصه فوق به کمک اعلان
forward قابل حل است. بدین صورت که اگر روالی به هنكام تعريف با
اعلان O54 tbh ol a» forward رعایت از پیش تعریف شدن میتواند.
در روالهای دیگر ظاهر شود.
صفحه 353:
Procedure Name ( parameters ) ;
; forward
| ۱
| ! ۱
کلمه ذخیره شده لیست پارامترها اسم
روال کلمه ذخیره شده
صفحه 354:
صفحه 355:
End;
همانطور كه ملاحظه مىكنيد با اعلان روال 721003 1
بصورت 5015017310 بقيه روالها مى توانند به آن
= لكا
End. {End of program}
صفحه 356:
EE << << ">
واع رصم ٠
نوع دیگری از برنامههای فرعی, توابع میباشند. توابع مانند روالها.
پیمانههای مستقلی هستند. با این تفاوت که روالها میتوانند. تعدادی
خروجی داشته باشند. در حالی که توابع فقط یک خروجی دارند. در روالها
معمولاً خروجیها توسط پارامتر به برنامه اصلی ارجاع داده میشود. ولی
در توابع اینکار به نحو دیگر انجام میگیرد.
صفحه 357:
Function Name ( List Of Parameters ) :
; Function Type
نوع wh لیست پارامترها
اسم تابع علمه ذخیره شده
صفحه 358:
ab فقط میتواند. یک خروجی داشته باشد. نوع خروجی تابع. همان نوع تابع
محسوب میشود. لذا با توجه به نوع خروجی تابع. نوع تابع تشخیص داده
میشود. ذکر این نکته خالی از لطف نیست که نوع پارامترهای صوری توایع
معمولاً مقداری هستند چرا که توابع نوعی برنامههای فرعی هستند که فقط یک
خروجی برمی گردانند. لذا استفاده از پارامترهای از نوع متفیری پسندیده
نمیباشد. (اشکال کامپایلری در توربوپاسکال ندارد ولی در پاسکال استاندارد
این کار اشکال کامپایلری دارد)
مقدار خروجی توابع توسط اسم تابع برگردانده میشود. توابع مثل روالها بعد
.از قسمت تعاریف پرنامه اصلی ظاهر میشود
صفحه 359:
Name := Resualt Of
Function ;
End ;
صفحه 360:
م پارامترهای تابع باید از نوع مقداری باشند
داده نتیجه تایع در انتهای عنوان تایع و بعد از لیست پارامترهای صوری
میگیرد
Ql at خروجی تابع با نسبت دادن مقدار به ام تابع مشخص میشود
صفحه 361:
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
صفحه 362:
ناحیه داده هاي اصلي_ 201" ناحيه داده هاي
پارامترهای صوری
M پارامترهای واقعی
N
ee
متفیرهای محلی
نتیجه تابع P
? I
نتیجه تابع
2
صفحه 363:
** توابع باز گشتي (Revwsiod Puwiow)
در ياسكال يك تابع یا روال میتواند. خودش را فراخوانی نماید. پیمانهای که
خودش را فراخوانی میکند یک پیمانه بازگشتی نام دارد. اين نوع توابع در
ی و واه وت اب اد و ای ارت ۶
شرط خاص که غالباً به یک عدد ثابت ختم میشود. ادامه پیدا میکند. سپس
مقدار تابع از پایین به بالا محاسبه میشود و در نهایت نتیجه تابع حاصل
.می شود
صفحه 364:
را در محلی از حافظه بنام پشته (586016) قرار میدهد. اگر بازگشت به تابع
بازكشتى مجدداً صورت گیرد. مقادیر فعلی متغیرها مجدداً بدنبال مقادیر قبلی
و اصطلاحاً در پشت مقادیر اولیه فرار میگيرند. هنگامی که شرط پایانی در
تابع بازگشتی رخ می دهد. در اولین بازگشت مقادیری را که هنگام مراجعه
به خود. در پشته نگهداری کرد مجدداً در دسترس قرار میدهد و بهمین
ترتیب در بازگشتهای بعدی اين عمل تکرار میشود تا مقدار تابع محاسبه شود
صفحه 365:
مقادیر متغیرها درآخرین بازگشت به تابع
مقادیر متغفیرها در سومین بازگشت به تابع
مقادیر متغیرها در دومین بازگشت به تابع
مقادیر متغیرها در اولین بازگشت به تابع
صفحه 366:
مقادیر متفیرها درآخرین با گشت به تابع
مقادیر متفیرها در سومین بازگشت به تاب
مقادیر متفیرها در دومین بازگشت به تابع
مقادیر متغیرها در اولین بازگشت به تابع
صفحه 367:
۳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
صفحه 368:
صفحه 369:
Function GCD ( N,M:integer ):
Integer ;
Begin
If (N<=M) and (M Mod N =
0) Then
GCD:=N
Else
GCD:= GCD(M,NmodM);
End ;
صفحه 370:
EEE EEE << << ">
۰ ۹ 2
** مقايسه توابع و روالها
توابع و روالها هر دو برنامههای فرعی هستند. که بطور مستقل وظايفى را بر
:عهده دارند. ولی در این میان از بعضی جنبهها متفاوت میباشند که عبارتند از
نحوه فرلخولنیآنها بسا هم متفاوتلست روا لها از طریق عبارلتو و لفرلخولنده .
میشوند. درصورتی که فراخوانی تابع توسط عبارات مقایسهآی و یا تخصیص
نتيجه به يك متغير صورت مى كيرد
هنكام لمعلا يكتابع. نوع تلبع يانوع نتيجه حاصلاز تسلبع باید ذکر شود
صورتى كه روالها نيازى به اين كار ندارند
tb fos arg RS RS ولیروالها میتسولنند چندینخروجی3
برگردانند. درضمن نتیجه توابع توسط اسم تابع فرستاده میشود ولی روالها
از طریق پارامترها؛ نتایج را برمی گردانند
صفحه 371:
:ی
* طریقه ارسال آرایهها به توابع و روالها
آرایهها خود مجموعهآی از دادهها میباشند. لذا برای ارسال آنها نمیتوانیم
از روش معمولی ارسال پارامترها استفاده کنیم. و بطور مستقیم نمیتوان آنها
را به برنامههای فرعی انتقال داد. برای ارسال آرایهها به عنوان پارامتر به
برنامههای فرعی از دستور 137136 استفاده میکنند. دستور 11/06 قبل از
تعاریف برنامه اصلی بکار میرود و توسط این دستور در واقع یک نوع
سادهسازی در تعاریف فراهم میشود. و با این سادهسازی میتوان دادههای
صفحه 372:
برای مثال یک ارایه از نوع صحیح را تعریف میکنیم:
; Type No = array [1...100] of intec
در اینصورت تعریف آرایه به. 1*0 نسبت داده میشود. اگر بخواهیم متغیری
از نوع آرایه بالا تعریف کنیم. آنرا از نوع 1*0 تعریف میکنیم:
ar
Number: No ;
صفحه 373:
ro
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 ;
—_—
صفحه 374:
Index:= I ;
Flag:= FALSE ;
End ;
Inc (1);
End ;
Search:= Index ;
End ;
LORE EOE OEE CETTE eee
1
—_—
صفحه 375:
Begin { Main }
Writeln (' Enter Number' ) ;
ReadIn ( N);
For I:=1 To N Do
ReadIn ( b[ I] );
Writeln (' Enter Number ' ) ;
ReadIn ( x );
If Search(b,N,x)=0 Then
Writeln (' Not
Found ') ;
Else
Writeln (Search(b,N,x) );
End. {End Of Program }
صفحه 376:
EE EE EEE EE موممئي
قمر ينات 46
bi 521, Down diy, * بگیرید:
-edure Down ( N: Integer) ;
in
While N>0 do
Begin
Write (N: 3);
Dec (N);
End ;
3
لف) وقتی روال بصورت (5) 0107112 فراخوانی شود. چه چیزی چاپ میشو:
ب) مقدار پارامتر واقعی ۷ بعد از اجرای روال چیست؟
صفحه 377:
ion MyStery ( M,N: Integer): integer
If N= 1 Then
MyStery:= 1
Else
MyStery:= M* MyStery(M,N-1) ;
{ End Of Function }
لف) تابع بازگشتی بالا را به ازاء مقادیر 1۷]<5 , 70-4 فراخوانى كنيد.
ب) تابع بازگشتی بالا را به ازاء مقادیر 1۷123 ر 23 فراخوانی کنید.
صفحه 378:
EE << << ">
تمرینات برنامهنويسي
" برنامهای بنویسید که اطلاعات حداکثر ۱۰۰ دانشجو که عبارتند از:
صل 7 فامیلی
اسم 90 شماره
دانشجوئی
را از ورودی دریافت کرده سپس:
الف) توسط روالی بنام 501 اطلاعات را برحسب شماره دانشجوئی مرتب کند
ب) توسط تابعی بنام 0 شماره دانشجوئی فردی را از ورودی دریافت
و ی ات آنرا
صفحه 379:
* آرایهآی از نوع صحیح با حداکثر ۱۰۰ عنصر را در نظر بگیرید.
برنامهأى بنويسيد که ابتدا آرایه را از ورودی دریافت 03,5 سپس با استفاده از
یک تابع بازگشتی پیشترین مقدار آرایه را محاسبه نماید.
* دو آرایه مرتب حداکثر ۱۰۰ عنصری که شامل اسامی افراد میباشد را درنظر
بگیرید.
برنامهای بنویسید که نخست دو آرایه را از ورودی دریافت نموده سپس توسط
روالی بنام 6 این دو آرایه در هم ادغام نموده و در آرایه سومی قرار ده
صفحه 380:
فصل16 1
هدفهاي كلي
59 مفهوم مجموعه و دادههاى شمارشى در زبان ياسكال
* مجموعه و دادههاى شمارشى به عنوان متغير
* استفاده از مجموعدها و داد
ای اشما رش اور ار ناما
صفحه 381:
تعداد محدودی از دادهها که از نظر نوع یکسان هستند. در غالب محموعه و با
.گونههای شمارشی نگهداری میشوند که مفهومی شبیه در ریاضیات دارند
برای استفاده در مواردی خاص نظیر روزهای هفته و یا نوع ماشینها و... که
ترتیبی هستند و یا یک مجموعه از دادههای پشت سر هم میباشند. استفاده از
این ساختارها کار را بسیار راحت میکند. هر چند وجود آنها به عنوان
ساختارهای دادهای؛ الزامیتیست؛:بهرحال به عنوان ابزارهایی از زبان پاسکال
هستند که در مواقعی. ضروری بنظر میرسند و مسئله را به صورتی قابلفهم و
.راحت حل مى كند
صفحه 382:
:ی
(Get) tne gore *
در زبان پاسکال مجموعه مفهومی شبیه به مفهوم مجموعه در ریاضیات جدید
دارد. متغیری است که شامل لیستی از اعداد صحیح. کاراکتر بولین و یا از نوع
شمارشی امیباشد که دارای تغداد عناصر محدود به حداکتر ۲۵۲تا میباشد. از
این جهت بسیار شبیه به یک آرایه در زبان پاسکال است که شامل دادههایی از
یک نوع میباشد. ولی آرایه دارای عناصر محدودی نیست و در ضمن مانند
.آرایه تعریف نمیشود
صفحه 383:
برای تعریف یک مجموعه از کلمات کلیدی ]0 56 بصورت زیر استفاده میکنیم:
Type
Name= Set of Type Of Set;
Type
Digit_type = 0..9;
Digit = Set of
Digit_type
صفحه 384:
1
ar
ch: set of char; —
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';
صفحه 385:
عضو مجموعه میباشد يا خیر. این عمل در زبان پاسکال با کلمه کلیدی
in
صورت مى كيرد. اگر عضویت صحیح باشد جواب 1۳116 وگرنه
False
میباشد. همچنین دو مجموعه را میتوان با علامات شرطی حت >
<- و >- مقایسه کرد که همگی دارای خروجی درست يا غلط میباشند.
ولیعلامات شرطی < و > در مورد مجموعهها کاربردی ندارد.
صفحه 386:
Begin oe
a:= [1..3,4]; Jee:
if 3 in a then write('3 is in set a‘)
جايميشود
else write(‘'3 is not in set a');
write(3 in a);
True
write(8 in a); False
write([1,2,3,4,] = a);
True
write([1,2,3,4] = [2,2,1,1,1,3,4,4]);
True ۱
۱۲116)]1,21[ < ]1,2,3[((
False
write([1,2] <= [1,2,3]);
صفحه 387:
در ریاضیات میتوانیم مجموعهها را با هم اجتماع اشتراک و تفاضل کنیم که
اين عملیات در پاسکال با عملگرهای + :: و - به ترتیب میباشد. اجتماع
دو مجموعه ترکیبی از همه عضوهای آنها است و اشتراک یعنی عضوهایی
که در هر دو مجموعه مشترک است و تفاضل یعنی اعضایی که در مجموعه
اول میباشد و در مجموعه دوم وجود ندارد.
صفحه 388:
a: set of byte;
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.
صفحه 389:
۱. آرگومان ورودی روالها میتواند مجموعه باشد که قبلاً در تایپ تعریف شده
باشد. نه اينکه مستقیم در روال به عنوان آرگومان بيايد. ولى خروجی یک تابع
نمی تواند از نوع مجموعه باشد.
a برای نوشتن یا خواندن مجموعهها باید عضو به عضو عملیات صورت
بگیرد و مستقیماً توابع 13680 .۷۷16 روی آنها کار نمیکنند.
صفحه 390:
Program test ;
Var
num , temp : set of byte;
I, c: integer ;
Begin
Writln (‘Enter numbers:
Readln( 1) ;
Num :=[];
0 << OF
ست.
صفحه 391:
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 }
صفحه 392:
* دادههای شمارشی ()
دادههای شمارشی. یک مجموعه مرتب از اعداد است که در برنامه. هر عدد
دارای نام بخصوصی است. این نامها در داخل دو پرانتز باز و بسته قرار
میگیرند و بترتیب از صفر مقدار میگیرند مگر اينکه برنامهنويس به آنها
.مقدار مخصوصی بدهد
صفحه 393:
Type
Cars_type = (Peykan, Pride, Pegout,
4
Jar
Cars: cars_type;
حال در برنامه 0815 میتواند مقادیر داخل دادههای شمارشی را بگیرد:
cars:= Pride;
cars:= PK;
صفحه 394:
۱ 1۵79 ۵6 = (sat, sun, mon, tue, wed, thu,
fri );
Var
Day: Days_type;
Begin
Day:= Mon;
i:= ord (sat) + ord (day) + (succ(sat));
j:= ord ( pred (sun) + ord (pred (fri));
writeln(i:5, j:5);
End.
1-3 j=5
: خروجی
صفحه 395:
متغیر داده شمارشی شبیه مجموعهها حداکثر دارای ۲۵۹ عضو میتواند باشد که
از صفر تا ۲۵۵ شماره گذاری میشود و لذا یک بایت حافظه را اشغال میکند.
صفحه 396:
و به عنوان آرگومانهای روالها و یا خروجی توابع میتواند درنظر گرفته شود
ولی حتماً باید در 1106 تعریف شده باشد و مستقیماً نمیتوان بكار برد.
اين عمل مشابه مجموعهها و آرایهها نیز میباشند. لذا ابتدا در 13706 تعریف
میشود. سپس به عنوان ورودی و يا خروجی روالها استفاده میشود وگرنه
خطای کامپایلری پیش خواهد آمد. همچنین میتوان در آرایهها از دادهها
شمارشی استفاده کرد.
صفحه 397:
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
صفحه 398:
4: day:= wed;
5: day:= thu;
6:day:= fri;
end;
Case day Of
sat: writeln (‘your day is
sat');
sun: writeln (‘your day is
sun’);
end; 1 ۱
1۲62 019 )01(*
صفحه 399:
:ی
* تمرینات
2b C=[1,2,3] , B=[2,4,6] , A=[1,3,5,7] ; عبارات زير.
ابی کنید.
الف- (0- ظ5) + ۸
ب A + (B*C)
ج- A+B+C
inA2 -8
صفحه 400:
"برنامهای بنویسید تا مجموعه ای از کاراکترهای کوچک را گرفته و به يك
مجموعه از کاراکترهای حروف بزرگ متناظر با آن تبدیل کند.
* به کمک دادههای شمارشی. برنامه ای ب یسید که نام دانشجویان یک کلاس را
در برگیرد و هر دانشجو نیز یک شماره داشته باشد. سپس با دریافت نام او
شماره او در نمایشگر چاپ شود.
صفحه 401:
فصل11 ِ
وكورهها (00105ع18)
هدفهاي كلي
* مفهوم ركورد و اجزاى آن
* انواع ركوردها و استفاده از آن در برنامه
* معرفى مزاياى ركوردها در برنامه
صفحه 402:
نوع داده ساخت یافتهای که در اینجا مطرح میشود. رکورد نام دارد که حهت
نگهداری دادههای مختلف نظیر نام نام خانوادگی. سن و آدرس برای یک
دانشجو بکار میرود. رکوردها برخلاف آرایهها که دارای عناصر از یک
جنس و نوع هستند. دارای عناصر از انواع مختلف میباشند. اطلاعات از
نوع مختلف را نمیتوان در آرایه نگهداری کرد چرا که دارای جنس مشابه
تست و لذ۱ از ساختاری به نام رکورد استفاده میشود.
صفحه 403:
.<< << کچ
۰ تعریت ز Wop
نوع داده ساختیافته ای که از یک سری داده ها یا اطلاعات مرتبط به هم
کل مق aoe
. هر کدام از اطلاعات را یک فیلد می نامند
بطور کلی تعریف نوع رکورد در زیر آمده است:
ype
Name = Record
Field1-list : type1;
Field2-list : type2;
Fieldn-list : typen;
End;
صفحه 404:
Type
Student = Record
Name: String [10];
Family: String [15];
Age: integer;
Address: String;
End;
در اين تعريف 5111060 از نوع 18600۲0 است. حال میتوان در
1 برنامه تعریف کرد:
Var
S: Student;
صفحه 405:
براي دسترسي به فيلدهاي رکورد ازعلامت *." استفاده ميشود. يعني بصورت زیر:
نام فیلد . نام متغير ركورد
مثال: برنامهاى بنويسيد كه ركوردى از نوع اعداد ايجاد كرده و مقادير
آنرا مقدارهى كند.
صفحه 406:
end;
Var
Num = Numbers;
begin
Num. a
Num. b:
Num. x
Num. y:
Num. z
Write (Num.a 1 Num.b + Num.x + Num.y
+ Num.z);
End.
صفحه 407:
Type
Student = record
Id: integer;
Name: string[10];
Family: string[15];
Sex: char;
Age: integer;
End;
Var
Stu: student;
صفحه 408:
Stu.sge: =18;
Case sex of
'M': write('Mr.');
'F': write('Mrs.');
end;
write(stu.name, ''
stu.family);
End.
صفحه 409:
بزالق:یدست آوردط فتبای افغال,شده فرسط رکورد ایا باید فقنای اشغال
شده توسط تمامیفیلدها را بدست آورده و سپس باهم جمع کنیم.
مثال زیر را درنظر بگیرید:
صفحه 410:
۱۰
A, B: Real; = 5
GCG, Di String [10]; > et)
F: Array [1... 10] of Boolean;
G: list1; 3 ۷۵
id;
۱9
x: Rectype;
۱۰+۱۰+۱۱+۱۲-۳ بایت فضا اشغال میشود.
صفحه 411:
EE << << ">
> و مورههای تودریو
فیلدهای یک رکورد میتوانند از هر نوعی باشد. از جمله میتوانند از نوع
رکورد دیگری باشند. در اینجا نیز مشابه قبل دسترسی به همان صو
میباشد فقط به تعداد رکوردهای تودرتو '.' بيش مىآيد
به مثال زیرتوجه کنید:
رت
Type
Rec = recor
a, b:
nteger;
c: char;
x: Record
p:
integer;
ge
nteger;
Ts
صفحه 412:
0
Rec;
دراینجا یک رکورد تودرتو به نام 1806 تعریف شده است که متفیر ۲ از آن
نوع تعريف شده است. سپس برای دسترسی به فیلدهای 6, 0 , 28 میتوان
به صورت زير عمل کرد:
ra
r.b
ولی برای دسترسی به فیلدهای 61, 0 چون متعلق به رکورد > نیز هستند داریم:
r.x.p
r.x.q
صفحه 413:
>" << ااا
> ؛رايهاي ار ر دورده
هنگامی که ما تعدادی داده مشابه داریم ولی در هریک. دادههای مختلفی وجود
دارد میتوانیم یک رکورد تعریف کرده. سپس آرایهای از آن تعریف کنیم.
e
student = record
Name: string[10];
Id: integer;
Age: integer;
End;
Arr_stu: array[1..10] of student;
5: Arr_stu;
صفحه 414:
3 نوع تعریف شده است.
مشابه ساختار آرایه. چیزی عوض نشده است و فقط هر عنصر آرایه. یک
رکورد میباشد که دارای سه فیلد مطابق جدول فوق میباشد.
برای دست به آرایه فوق داریم: S[1].name
براى دسترسي يه ازايه قوق داريم S[1].id
S[1].age
S[2].name
S[2].id
صفحه 415:
ارسال ر کورد به زیربرنامهها
Se ی ور ی
متغير و مقدار به زيربرنامه ارسال كرد. ولى نوع بركشتى 3 نمیتواند
از نوع رکورد باشد یعنی حتماً باید !5 integer. Char 1s est. ¢.s 9..
باشد و از انواع ترکیبی نظیر رکورد. eu مجموعه و فایل نمیتواند باشد.
اگر بخواهیم رکوردی را بصورت پارامتر به زیربرنامه ارسال کنیم. ابتدا بايد
آنرا در 13706 تعریف کرده و سپس ارسال شود وگرنه کامپایلر خطا صادر
مي كقلد
صفحه 416:
Const no = 30;
Type
Stu-rec = Record
Name: string [10];
ID: integer;
Age: record
Day: integer;
Month: integer;
Year: integer;
End;
End;
Stu_arr=array[1..no] of سک
دوه وبا
صفحه 417:
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;
صفحه 418:
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.
صفحه 419:
>" << ااا
* تمرینات
"برای گونههای حیوانات یک پارک نظیر پرندگان وحشی رکوردی شامل
نام دسته. محیط زندگی, سن بسازید. در نظر بگیرید که در پارک ۱۰۰
گونه از یک پرنده وحشی وجود دارد
(راهنمایی: آرایهای از رکورد با فیلدهای گفته شده بسازید).
* برنامهای بنویسید که برای نگهداری تاریخ به صورت روز ماه و سال
پرای ۱۰۰ سال بکار رود. در واقع به صورت تقویم باشد و جملهای در مورد
آن تاريخ را نكهدارى كنيد؟ (راهنمابى: آراینای. ۳۱۹ قانی از روز تهمراه
آرایهای از ۱۲ ماه و یک سال و یک رشته را به صورت یک رکورد در نظر
211111(
صفحه 420:
فصر12
فليلها (111©5)
هدفهاي كلي
* مفهوم فایل و انواع آن
؟ موارد استفاده از فایلها
صفحه 421:
برای ذخیره دائمی دادهها از ساختاری به نام فايل (©1511) استفاده مى كنيم.
تاكنون همه عمليات لازم در حافظه اصلى انجام مى كرفت كه كذرا و فقط
به زمان اجراى برنامه و روشن بودن كامبيوتر بستگی داشت. ولی در فایلها
چنین نیست. بلکه دادهها در فایلهایی قرار دارند که حتی بعد از خاموش
کردن کامپیوت بعدها قابل دسترسی است.
صفحه 422:
۰ تايهي مسي (۱۵
ک فایل متنی از تعداد کاراکتر تشکیل شده است که با یک اسم در روی دیسک
ذخیره شده است. چون فایل از نوع متنی است میتوانید دادههای داخل آنرا
مشاهده کنید.
ساختار دادهها در یک فایل متنی بدین صورت است که تعدادی خط وجود دارد
كه به علامت 1901.18 ختم مىشوند و در انتهای فایل نیز علامت 176017 قرار
دارد. طول خطوط نامشخص است و اندازه فایل ممکن است بسیار بزرگ یا
کوچک و يا تهی باشد.
صفحه 423:
تعييف يك متغير فایلی ۱۰
نسبت دادن اسم فايل به متغير فایلی ۲۰
6۷30 ایجاد فایل با دستور .۳
صفحه 424:
Name : Text;
نسبت دادن اسم فايل به متغير فايلى
Assign(FileVar ,
‘NameFile’ )
© ایجاد فاپل با دستور
Rewrite( FileVar
)
صفحه 425:
7 مجموع آنها را بنويسد.
f: Text;
A: Array [ 1.. 10] of integer;
Sum, i: integer;
egin
Sum: = 0;Writeln (' Enter 10 numbers:
For i: = 1 to 10 do begin
Read (A [i]);
Sum: = sum + A[i];
end;
Assign (f, 'out.dat');
ام و مر ۵ب
صفحه 426:
Writeln (f, A[il);
Writeln (f, Sum);
Close (f);
End.
بعد از نوشته شدن اطلاعات در فایل . فايل بايد بسته شود پرای اینکار از
: روال زیر استفاده می شود
Close(FileName)
صفحه 427:
تعییف یک متفیر فایلی ۱۰
نسبت دادن اسم فایل به متغير فايلى .7
باز کردن فایل برای خواندن با ۳۰
۲1 سستور
صفحه 428:
دستور 13620 و 13620112 برای خواندن اطلاعات از فایل بکار می روند .
7 بعد از خولندندادههایمورد نسظر بسه سطر بسعد میرود. لینعمل
برای ۷۷۲116110 نیز چنین میباشد. ولى قبل از استفاده از اين دستورات بايد
فايل متنى براى خواندن يا نوشتن باز شود. دستور 1056 فایل متنی را برای
خواندن باز مى كند و مكان نما را ابتداى فايل مى برد.
دستور 1618/1186 فایل متنی را برای نوشتن در آن باز کرده؛ و مکان نما را به
ابتدای آن میبرد.
صفحه 429:
f: Text;
str1, str2: string; a, b, c, d, e: integer;
gin
Assign (f, ' Test. dat ');
Reset (f);
ReadlIn (f, str1);
Readln (f, a, b, c);
Readln (f, d, e, str2);
Write (str2, ':', a+ b+ c+ d+ e);
Close (f);
صفحه 430:
yar کرده و یک کپی از فایل درخروجی بسازد.
f1,f2: Text;
str1,str2 : string ; ch: char ;
begin
write('Enter Input file: ');
readIn(str1);
write('Enter output (copy) file:
readIn(str2);
assign(f1,strl);
reset(f1);
assign(f2,str2);
rewrite(f2);
صفحه 431:
در این برنامه ابتدا دو فایل به نامهایشان نسبت داده میشوند و ترتیب برای
خواندن و نوشتن باز میشوند. سپس توسط 60 شرط خاتمه فایل ورودی
یعنی 81 بررسی میشوند و در یک حلقه تو در تو ۷۷10116 شرط خاتمه خطوط
نیز توسط 60139 بررسی شده و کاراکترها از فایل ورودی خوانده شده و در
فایل خروجی نوشته میشوند.
صفحه 432:
begin
while not eoln(f1 )
do
begin
read(f1,ch);
write(f2,ch);
end;
readIn(f1);
writeln(f2);
end;
Close(f1);
Close(£2);
End.
صفحه 433:
EE << << ">
ی فايلهاي دودويي و نوعدار(۲۷۷۵ & س)
ن نوع فایلها در زبان پاسکال از تایپهای مختلف record ,array
,integer ,chal ۲6۵0 و ... تشکیل شده است که نیاز به پردازش متنوع
بیه مرتبسازی. جستجو. حذف و... دارند. اين فایلها پس از ایجاد توسط
نامه قابل رژیت توسط ویراشگرها نیستند. بلکه به صورت کدهای اسکی
یباشند یعنی دودویی میباشند. نحوه دسترسی به اطلاعات آنها نیز به
cw! (Random) مورت تصادفی
صفحه 434:
تعييف يك متغير فایلی ۱۰
نسبت دادن اسم فايل به متغير فایلی ۲۰
6۷30 ایجاد فایل با دستور .۳
صفحه 435:
Name: File Of FileType ;
ذسبت دادن اسم فایل به متفیر فایلی
Assign(FileVar ,
‘NamefFile’ )
© ایجاد فاپل با دستور
Rewrite( FileVar
)
صفحه 436:
Const n=100;
Type
Student = Record
Name: string[10];
Family: String[15];
Age: integer;
ID: integer;
end;
Sarray = Array [1..n] of
student;
صفحه 437:
Var
;Bf2: file of integer دودویی از نوع صحیح
, دودویی از نوع رکورد دانشجو
فایل دودویی از نوع کاراکتر
, دودویی از مجموعه/ تا ۸۰۰۳2۰ 0۶ 561 0۲ 816 :۳۶6
;Bf3: file of student
;Bf1: file of char
7
صفحه 438:
Bf: file of strin[10]; Str: string
[10];
i: integer;
Begin
Assign (Bf,'out.dat');
Rewrite (Bf);
For i:=1 ton do Begin
Readln (str);
Write (Bf,str);
End;
Close (Bf);
+ oo
صفحه 439:
در جدول صفحه بعد تمام روالهای کتابخانهای پاسکال جهت کار با فایلها
آورده شده است که به همراه توضیحات لازمه جهت کار با آنها میباشد.
همچنین برای هر تابع و رویه محل مورد استفاده آن در ستونی مشخص
شده است .
صفحه 440:
صفحه 441:
صفحه 442:
EEE EEE << << ">
ني
مثال هاى حل شده *
مثال : برنامهای بنویسید که تعداد خطوط یک فایل متنی را بدست آورد.
Var
F: text ;
ch: char,
str: string[20];
count: integer;
Begin
Write (‘Enter the file name:
03
Readln(str);
Assign(f,str);
Reset(f);
صفحه 443:
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.
صفحه 444:
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;
صفحه 445:
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.
صفحه 446:
>" << ااا
* تمرینات
*برنامهای بنویسید که از یک فایل متنی از اعداد حقیقی که در سطرها و
ستونها مختلف قرار دارند» ghia دادهها را پدست آورده و در مانیتور
يجاب كله
"برنامهاى بنويسيد كه در انتهاى يك فايل متنى. همان فايل متنى را اضافه كند.
* برنامهای بنویسید كه در يك فايل نوع دار از كاراكترها. اطلاعات آمارى
هر کاراکتر را پدست آورده. یعنی تعداد هر کاراکتر را بدست آورد.
مثلاً کاراکتر به تعداد 40 تا و کاراکتر "3" به تعداد ۳۹ تا و...
صفحه 447:
هدفهاي كلي
هو و تعریف الگریم
eee : ابى يك الكوريتم
ie * راب +
= دكت الكوريتم
rr ج |
1
صفحه 448:
تحلیل یک الگوریتم یعنی ارزیابی روشهای مختلف حل آن مسئله بررسی و
محاسبه بهترین و بدترین حالتها بصورتی که با توجه به شرایط بهترین
حالت را بتوان انتخاب کرد. الگوریتم در واقع تعداد محدودی از دستورالعملها
می باشند که بترتیب احرا میشواند. و هدف.خاصی را دنبال م ی کنند
صفحه 449:
” * تعریف مرتبه يا بيجيدكي الكوريتم (0 بزرک)
براي بدست آوردن بدترین حالت اجراي يك الگوریتم
با مرتبه بيجيدكي الكوريتم از
0 بزرگ استفاده م يكنيم و بنا به تعريف عبارتست
از ((0)90)5<-00)؟ و
ميخوانيم ()] از مرتبه ()0 ميباشد, اگر و تنها
Ac> 0, Vn > n0= f(x)<cg(x)
صفحه 450:
حولي ترش
n>=3 <= cg(n)=In+2A(n)
لذا مىتوان كفت. بيجيدكى زمانى (1)13 از 455 O(n) میباشد.
صفحه 451:
EE << << ">
© دست 'وردن مرتيه تحور يدمهيا
براى بدست آوردن مرتبه اجراى الكوريتمها بايد به دقت بررسى شود و تعداد
تكرار آن الكوريتم بدست آورده شود. يعنى در واقع تعداد تكرارها بدست
آورده شود و سيس با هم جمع شده و مطابق مثالهاى قبلى به پیچیدگی زمان
واقعى رسيد. براى اين منظور از الكوريتمهاى ساده شروع كرده و به بيجيده
مى رسيم.
صفحه 452:
x:= 0;
For I:=1 ton
do
:=x+1;
ه در آن تعداد ورودی میباشد. یعنی حلقه ۴0 بستگی به پارامتر دارد.
همان طور که از تعریف حلقه 80۳ برمیآید تعداد 11-۱+۱ تکرار یعنی
1 تسکرار وجود دارد و لنا قطعه برنامه فوقاز مرتبه(6()10 مریاشد
صفحه 453:
Function fact ( n: ger
integer ;
var
f,i: integer;
begin
f:=1,
for I:=1 to n do
f:=f*i;
fact:=f;
end;
صفحه 454:
تابع فوق فاکتوریل عدد « را بر میگرداند. همانطور که میبینید تابع شامل
یک حلقه 01 ساده بوده که از یک تا 9 متغیر بوده و لذا بار تکرار میشود
۲ جمله ساده نیز وجود دارد که زمان های ابتی دارند
ین مرتبه تابع بالا برابر است با
0)
صفحه 455:
EE EE EEE EE موممئي
تمر بنات “
” بيجيدكى زمانى توابع زیر را بدست آورید:
ود
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)!
صفحه 456:
Function test(n : integer):
teger ;
var
i,x: integer;
Begin
x:=0;
for i:=1 to n do
x:=x+1;
for i:=1 to n do
for j:=1 to n do
x:=x+1;
test:=x;
pad