صفحه 1:
دانشكاه ييام نور- كروه كامييوتر
اصول کامپیوتر ۲
رشته علوم رایانه
تهيه كننده: مهدى يوسفخانى
تابستان ۸۵
صفحه 2:
فصیل راوال
صفحه 3:
اک 7۳
الگوریتم مجموعه محدود و پایانپذیر از
ار
صفحه 4:
صفحه 5:
كه
يك الكوريتم مى تواند هيج يا جندين كميت
ورودى داشته باشد كه از محيط خارج تامين
مى شود.
صفحه 6:
۲- خروجی:
الگوریتم بایستی حداقل یک کمیت بعنوان
ال ا
۳- قطعیت:
هر دستور العمل باید واضح و بدون ایهام باشد.
صفحه 7:
(۳
اگر ما دستور العملهای یک الگوریتم را دنبال کنیم
براى تمام حالات بايد يس از طى مراحل محدودى
لا ۱
صفحه 8:
4- كارايى:
تنها قطعيت كافى نيست بلكه هر دستورالعمل نيز بايد
انجام يدير باشد.
پایان پذیری تفاوت میان یک برنامه و یک الگوریتم
است.
صفحه 9:
PoP فضای (Awan
۳
EW gees GAPE (MIDE مزال
BATES ATE RD eye Oe Ean ker
,یک برنامه است
صفحه 10:
:فضاى مورد نياز يك برنامه
* نیازمندیهای فضای ثابت
* نيازمنديهاى فضاى متغير
صفحه 11:
نيازمنديهاى فضاى ثابت:
اين مطلب به فضاى مورد نيازى كه به تعداد و اندازه
ورودى و خروجى بستكى ندارد اشارة دارد.
صفحه 12:
نيازمنديهاى فضاى متغير:
این مورد شامل فضای مورد نیاز متغیر های ساخت
یافته استکه اندازه آن بستگی به نمونه ای از مساله
ای که حل می شود دارد.
صفحه 13:
۱7
میزان یا بیچیدگی زمانی یک برنامه مقدار زمانی است
.كه كامييوتر براى اجراى كامل برنامه لازم دارد
صفحه 14:
صفحه 15:
جنبه های مهم باز بینی:
۳
3 آزمايش درستی
ور ۳
صفحه 16:
بعضى از الككوهاى توسعه نرم افزارى:
* روش آبشاری
بر نامه پویسی اکتتافی
صفحه 17:
۱- روش آبشاری:
اين روش فرايند نرم افزار را متشكل از جند مرحله
مى داند. يس از تعريف هر مرحله توسعه نرم افزار
ا ا لد
صفحه 18:
؟ - برنامه نويسى اكتشافى:
در اين روش در حداقل زمان ممكن سيستمى ايجاد مى
شود و سپس اصلاحات لازم در آن بوجود می آید تا
به درستی عمل کند.
صفحه 19:
طراحی شی گرا:
طراحئ شى كرا بر مبناى ينهان ستازى اطلاحَات و
نهادها است که 5
اعمالى بر رزوى آن حالت است.
صفحه 20:
AD Te Tee Ieee SP
۱- ناحیه مشترک داده ها حذف می شود.
۲- اشیا نهادهای مستقلی هستند که قابل تغییر.می باشند.
ren ee prc ia een en ey 1
موازى يا ترتيبى اجرا شوند.
صفحه 21:
طراحى تابعى:
روشى براى طراحى نرم.افزار است كه در. آن طراحى
ا ل ee Or
شود كه هر كدام وظيفه خاصى ذارند.
صفحه 22:
eee eC DES Teenie NewS)
متمرکز سیستم بین توابع مشترک است.
صفحه 23:
دید تابعی به طراحی
صفحه 24:
فصل دوم
زبان برنامه 5
صفحه 25:
ويزكيهاى زبان ©:
" در دسترس است.
* ساخت يافته سطح بالا و انعطاف يذير اسّت.
پیمانه 0
اصول کامپیوتر
صفحه 26:
انواع کار اکتر دی
* حروف بزرگ و کوچک
* ارقام دهدهى
* جاى خالى
RONG Be
" كاراكترهاى فرمت دادن
اصول کامپیوتر
صفحه 27:
0م
زبان © برخلاف ياسكال بين حروف بزرك و كوجك فرق
Ke
- ارقام دهدهی:
شامل ۰ تا ٩
صفحه 28:
wee ا
۸
VA) = tele
صفحه 29:
كاراكترهاى فرمت دادن:
- کاراکتر 730 ا
- کاراکتر ۲20 ا۷۳ب۱ ۷۱
- کاراکتر خط جدید یا ۱
اصول کامپیوتر
صفحه 30:
۱
- كاراكتر تغذيه فرم يا 8
لو
- کاراکتر تهی یا 0۱
اصول کامپیوتر
صفحه 31:
۳
يك شناسه ) دنباله اى از حروف ارقام يا ,علامت زير
خط كه با هر ترتيبى ميتوانند قرار كيرند اما اولين
كاراكتر بايد يك حرف باشد.
اصول کامپیوتر
صفحه 32:
oe
toe
متغيرها در زبان © شناسه هايى هستند كه در ميان يك
ا Tet eye. nV ECs
از اطلاعات مورد استفاده قرار مى كيرند.
صفحه 33:
بعضی از شناسه های ژبان ] کلمات رزرو شده هستند
يعنى مفهوم أن از قبل در زبان تعريف شده و نمى
توانند بعنوان شنناسه تعریف شوند,
صفحه 34:
متداولترين كلمات كليدى:
int fl 1 goto
double 0 ۳ signed re rgistar
continue 3 auto
long i voi و union
i
اصول کامپیوتر
صفحه 35:
:ساختار برنامه
ae
Main( ) > تبع اصلی (
{ een)
variables declaration; @«- (قعریف
program statements; eee
اصول کامپیوتر
صفحه 36:
دستورالعملهاى اجرايى:
در هر برنامه دستور العملهای اجرایی باید بعد از
تعريف متغيرها درج شوند. دستورى قابليت اجرا
دارد كه در يايان آن (:) نوشته شود.
اصول کامپیوتر
صفحه 37:
برنامه اى كه مساحت مستطيلى به طول د و عرض ” را
محاسبه و جاب كند:
#include<stdio.h>
Main()
{
int length , width, S ;
رد طاغومهءا
width = 3;
S = length*width;
printf (“area = %d”, S);
1
اصول کامپیوتر
صفحه 38:
عبارت:
مجموعه اى معنى دار از داده ها است كه با استفاده از
نشانه هايا عملكرهاى محاسباتى» قياسى و منطقى با
nS) ۱
صفحه 39:
* عبارت محاسباتی
كت
* عبارت منطقى
اصول کامپیوتر
صفحه 40:
ied
دستور حكمى است كه سبب مى شود كامييوتر عملى
انجام دهد و به دو گروه تقسیم می شود:
و
* دستور های ساخت يافته
صفحه 41:
9
دستور انتساب
* خواندن و نوشتن
۰ فراخوانی یک تابع
انتقال كنترل به نقطه اى از بر
اصول کامپیوتر
صفحه 42:
دستورهاى ساخت يافته:
* دستور مرکب
{
scanf(“%d%d” ,&a,&b);
s=a*b;
p=2*(atb);
printf(“%d%d",s,p)
۷
اصول کامپیوتر
صفحه 43:
دستور حلقه تكرار
for(i=0;i<10;i++)
5۱۲۲۱5۱۷۲٩
* دستور شرطی
if(a>b)
60
y=)
c=a-b;
اصول کامپیوتر
صفحه 44:
۳99
نشانه هايى هستند كه در عبارتها بكار مى روند وابّه
كمك أنها مى توان اعمالى را روى داده:ها انجام داد
و عبارتند از:
Greens 2 محاسباتی
و عملگر های انتساب
صفحه 45:
* عملكرهاى رابطه اى
* عملكر هاى منطقى
و
۰ عملگرهای یکانی
۱
اصول کامپیوتر
صفحه 46:
صفحه 47:
در نت
w=x*ty+w
تقدم عملگرهای محاسباتى:
1 1
سا
2
% | *
4+
اضول كامبيوتر
صفحه 48:
عملگر های محاسباتی انتساب:
اصول کامپیوتر
صفحه 49:
عملكرهاى رابطه اى:
اصول کامپیوتر
صفحه 50:
فصل سوم
انواع داده ها
صفحه 51:
:انوا داده
« انو مهيح
* نوع اعشاری
* نوع کاراکتر
٠» مقادير ثابت
* مقادير متغير
اصول کامپیوتر
صفحه 52:
م
ahd
float
double
Coit 1g
void
!!? boolean
اصول کامپیوتر
صفحه 53:
1۳
اعداد صحیح با دامنه محدود
برای کامپیوترهای شخصی دو بايت
محفففه
نشفات
اصول کامپیوتر
صفحه 54:
float
اعداد و با دامن محدود
نمایش معمولی
نمايش علمى
3 - 4 -8 12.3
صفحه 55:
double
الم بیشتر از 11061
اصول کامپیوتر
صفحه 56:
ولتلراف
SPICY ل
11
إلى
NG
res
ad
بسته به محل استفاده عدد با كاراكتر است.
صفحه 57:
0
داراى كاربردهاى مختلف
مثال: توابع فاقد خروجي
اصول کامپیوتر
صفحه 58:
انواع دادهاي دیکر
5 تركيب كلمات زبر 8 برخي از انواع داددهاي اصلي:
0 59601 (با عاهت 520250
long . short
زا
unsigned int
long int
unsinged long int
اصول کامپیوتر
صفحه 59:
قوانين نامگذاري متغیرها: 7
ل ا ل 0
اولين كاراكتر رقم نباشد.
اصول کامپیوتر
صفحه 60:
اسامي مجاز:
count
4
avg_grade
000
ltest
bin#tree
Lila
صفحه 61:
0
0 eer ci
۳۱۸۱ 4
; float m, n
; char 601, 6۱2, 3
; long int count
0
صفحه 62:
را
;intx=5,y
; char ch1 = ‘a’, ch2 = ‘A’, ch
صفحه 63:
تعریف ثابت:
مقدار ثابت نام ثابت 7# 0611126
8
مقدار -نام ثابت نوع داده CONSE
اصول کامپیوتر
صفحه 64:
1۳3
define M 100#
define P 3.14#
3; const int n= 100
3; const char c=
|
9
صفحه 65:
دستورات متداول ييش يردازنده:
6
define# 554
اصول کامپیوتر
صفحه 66:
مثال
define M 100#
define P cee
3; const int n= 100
3; const char c=
صفحه 67:
فصل جهارم
توابع ورودى و
خروجى
صفحه 68:
ی ۱
*scanf, printf
*getchar, putchar
"gets, puts
صفحه 69:
ela peer pearl
( عبليدة1 ” , عبلید2 “) 1111م
= نتقل شوند.
1
بر 22 2 LS)
(اختياري است)
اصول کامپیوتر
صفحه 70:
printf (“ 2
عبلید؛ , "Toc )
17 ' عبارت 1 ميتواند شامل:
6 See eh el oe
" كاراكترهاي تعيين كنندة فر
ا ا
اصول کامپیوتر
صفحه 71:
SE See Te MEAS
: مشخص كنندة نوع اطلاعات ذكر *
با علامت مگ شروع ميشوند. مانند: *
9
0
(براي عدد اعشاري) ۵
اصول کامپیوتر
صفحه 72:
كاراكترهاي كنترلي
ا 0
"با علامت ل شروع مىشوند. مانند:
۱ انتقال به سطر جدید
2 an Al
اصول کامپیوتر
صفحه 73:
مثال
printf (“this is a test.”);
خروجي
this is a test.
صفحه 74:
۳
; inti =10
; ‘char ch = ‘a
;printf (“Yd , %c” , i, ch)
a,10
اصول کامپیوتر
صفحه 75:
تابع ورودى 5621115
scanf (“ 2c, "dc )
عبارت 2 : آدرس متغيرهابي كه بايد خوانده شوند
عبارت 1 : نوع متغیرها و نحوة خوانده شدن آنها
اصول کامپیوتر
صفحه 76:
عبارت 1 شامل:
1. کاراكترهاي فرمت. مشخصکنندة نوع اطلاعات.
مانند:
C% )351,15(
A% (عدد صحیح)
اصول کامپیوتر
صفحه 77:
اك
7 (رد کردن) فضاي خالي در
اطلاعات ورودي
3. كاراكترهاى ديكر
تاثیر: خواندن 9 صرفنظر کردن د کاراکتر فوق
اصول کامپیوتر
صفحه 78:
مغال
inti,j;
char ch;
scanf (“%d %d %c’, &i, &,
&ch) ;
صفحه 79:
ساختارهاى كنترلى
و شرطی
صفحه 80:
te ررك عازن هام که ای
اين دستورات. اين امكان را فراهم مى كنند كه يىك
قطعه از برنامه جندين بار تا موقعى كة شرط
Oe Seen eee
اصول کامپیوتر
صفحه 81:
gd ساختار حلقه تکرار
for *
* while
* do-while
اصول کامپیوتر
صفحه 82:
دستورات كنترلى:
"goto
* continue
* break
* exit
صفحه 83:
لك ىن وا
اين دستور براى انجام عمليات تكرارى بكار مى رود.
با استفاده.ان أن يك حلقه قا موقعى اكه شرّط معيكن
برقرار باشد اجرا می گردد.
اصول کامپیوتر
صفحه 84:
۱/۵2
اصول کامپیوتر
صفحه 85:
مثال: برنامه اى كه اعذاد صحيح صفر تا ١٠.را رؤى خطوط متوالى
چاپ می کند:
#include<stdio.h>
main()
{
int number=0;
while(number<=10)
printf(%d\n”,number++);
۷
اصول کامپیوتر
صفحه 86:
۳
1 - 0 :
۷/۲۱۱6 )1 !- -1 (
1
TU ee oe
scanf (“%d’ , &i) ;
اصول کامپیوتر
صفحه 87:
دستور کنترلی 00۷۷۱۱۱۱2
eres را
آغاز هر تكرار حلقه انجام مى شود اما با اين دستور
اين آزمايش در يايان حلقه انجام مى شود.
اصول کامپیوتر
صفحه 88:
نمودار دستور ع ۱99۱/۱/۵
|
1
1
صفحه 89:
ا tee eee ۱
متوالی چاپ می کند:
#include<stdio.h>
main()
{
int number=0;
۰
printf(“%d\n”,number++);
while(number<=10);
}
اصول کامپیوتر
صفحه 90:
مثال:
do {
sum = sum+n;
scanf (“%d” , &n) ;
while (n != -1) }
صفحه 91:
در سرب 1۳۶
اين دستور شبيه دستور ع!1(]/الا.بوده و داراى فرم كلى
زير است:
for(expression1; expression2; expression3)
2660و
صفحه 92:
نمودار. دستور 101
صفحه 93:
Bey EBB ا ا ا eee Ole)
متوالی چاپ کند:
#include<stdio.h>
main()
{
int number;
for (number=0; number<=10; +
+number)
printf (“%d\n”, number);
}
صفحه 94:
مثال:
for (i=0O,sum=0;i < 20;i
کر رس
{
sum =sum+i+j;
printf (“%d’ , sum) ;
صفحه 95:
: Jo
for (i=10,j=0;
(i > 0) && (j <=20) ;
i--,j ++)
printf (“%d ,“,i+
j);
صفحه 96:
۱9 را (= yee ears eres
for (; while au-b,% ; whileas_
رت
صفحه 97:
دستورهاى شرطى ]1 و هواء 16:
اين دستورها موجب مى شوند تا در صورت
وجود شرایطی یک مجموعه از دستور ها
ودر صورت عدم وجود آن مجموعه دیگری
از دستورها اجرا شوند.
صفحه 98:
نمودار دستور ]|
صفحه 99:
نمودار دستور 656 17
اك
دستورهای بعدی
صفحه 100:
مثال: برنامه اى كه متنى را خوانده تعداد محلهاى خالى
2 يايان خط و جمع ساير 7 cela)
موجود در آن متن را شمرده چاپ کند:
#include<stdio.h>
main()
1
int c, blank_cnt, digit_cnt,
letter_cnt, n1_cnt, other_cnt;
اصول کامپیوتر
صفحه 101:
blank_cnt=digit_cnt=letter_cnt=n1_
cnt=other_cnt=0;
while((c=getchar())!=EOF)
if (c=="’)
+ +
21-۱06۱ 9’)
++digit_cnt;
elfe if('a’<=c&&c<=z'|| “A
“<=c&&c<= Z’)
++letter_cnt;
اصول کامپیوتر
صفحه 102:
else if(c==‘\n’)
++n1_cnt;
else
++other_cnt;
printf(“\n%12s%12s%12s%12s%12s
%12s”,” blanks” ,” digits”,” letters”, li
nes” ,”others”,” totals”);
printf(“\n\n%12d%12d%12d%12d%12d
%12d
\n\n, blank_cnt, digit_cnt,
letter_cnt, n1_cnt,
other cnt, blank_cnt+ digit_cnt+
letter_cnt+ n1_cnt+ other_cnt);
1
اصول کامپیوتر
صفحه 103:
۳
if (ch == ‘+’)
r=xt+y;
else if (ch == ‘-’
r=x-y;
else if (ch == ‘*’)
۲ < * ۷ ۶
اصول کامپیوتر
صفحه 104:
۳ eee
EES ere ey eli ar
مشخصى از دستورها بين جندين كروه از
دستورها انتخاب كردد.
اصول کامپیوتر
صفحه 105:
لحك ۳
13
Ire
ees ee »كنات
صفحه 106:
مثال: برنامه زير متغير كاراكترى 0101© را از صفحه
كليد دريافت كرده و رنكى كه با آن حرف آغاز مى
شود را در خروجی چاپ می کند:
#include<stdio.h>
main ( )
{
char color ;
color = getchar( ) ;
اصول کامپیوتر
صفحه 107:
switch (color)
{
case :ل printf (“Yellow”);
break ;
case “B’: printf (“Black”);
0
case “‘W’: printf (“White”);
break ;
اصول کامپیوتر
صفحه 108:
printf (“Red”); ت۱9
10) @=t- ae
case “G’: printf (“Green”);
break ;
default : printf(“error’);
1
I
اصول کامپیوتر
صفحه 109:
مثال:
char ch;
switch (ch) {
case ‘+’:
۲ < ۷ + ۷ ز
break ;
صفحه 110:
case ‘-’;:
r=aX-y;
break ;
case ‘**’:
r=x*y;
break ;
صفحه 111:
case ‘/’:
r=x/y;
break ;
default :
ما
printf (“Invalid
operator.”) ;
7
اصول کامپیوتر
صفحه 112:
908 See)
اين دستور مسير معمولى و ثابت كنترل را تغيير داده و يا
قطع مى كند. اين دستور براى خارج شدن از يك دستور
1ع]1/لا5 و يا يايان دادن حلقه ها استفاده مى شود.
اصول کامپیوتر
صفحه 113:
002 4 0 sere
سس
صفحه 114:
:continue دستور
اين دستور به منظور يى عبور جانبى از كنار ساير
مراحل جارى يك حلقه بكار برده مى شود در واقع
باقیمانده تکرار جارى يك حلقه ناديده كرفته شده و
بلافاصله تكرار بعدى حلقه آغاز مى شود.
اصول کامپیوتر
صفحه 115:
continue ~) si jas
صفحه 116:
مثال: برنامه زير 17 عدد از ورودى خوانده و مجموع اعداد
مثبت را محاسبه مى كند:
#include<stdio.h>
main ( )
1
int n,i,x,sum= 0 ;
printf(“how many numbers?”);
scanf(“%d” ,&n);
صفحه 117:
for (i=1 ; i<n; ++ i)
1
scanf(“%%d”,&x);
if(x<=0)
continue ;
sum +=x;
۷
printf(“\n sum = %d\n”,sum);
i
اصول کامپیوتر
صفحه 118:
دستور 010 0:
اين دستور ترتيب طبيعى برنامه را تغيير داده و كنترل
را به قسمت دیگری از برنامه منتقل می کند و در
eee cy ا ۲
اصول کامپیوتر
صفحه 119:
مثال: برنامه زير عددى صحيح را از ورودى خوانده در
صورتى كه زوج باشد ييغام مناسب نمايش مى دهد در غير
اين صورت از برنامه خارج مى شود:
#include<stdio.h>
main ()
{
int n;
scanf(“%d”,&n) ;
صفحه 120:
if(n%2 == 0)
goto even ;
else
goto odd;
even: printf(“even number.\
des
exit(1) ;
odd : exit (0);
اصول کامپیوتر
صفحه 121:
دستور ][(6:
اين دستور يك تابع است و اجراى برنامه را بطور
كامل قطع كرده و موجب خاتمه يذيرفتن كل برنامه
رت
اصول کامپیوتر
صفحه 122:
کار ور لا زرد( کر
براى اجراى برنامه برقرار نباشد و اجراى برنامه
5
1۳ <>2
exit (0);
اصول کامپیوتر
صفحه 123:
نکات:
ات رت
ا ey eee) رای
اصول کامپیوتر
صفحه 124:
وا
* در صورت عدم استفاده از 0۲6 دستورات
6 بعدی و تا آخر احرا خواهد شد.
اصول کامپیوتر
صفحه 125:
صفحه 126:
در زبان© زيربرنامه تابع ناميده ميشود. تابع يك قطعه
برنامه کامل استٌ که کار معینی را انجام میذهد و
موجب جلوكيرى از برنامه نويسى تكرارى در بين
0
صفحه 127:
۷۳ ero:
1 COPE EC ere cee
اند.
۲-توابع فرعی: توایعی که توسط بر نامه نوی تعریف
aS
صفحه 128:
مزاياى طراحى به صورت ييمانه اى:
- ساده شدن كنترل و خطا يابى
-. امكان انجام تغييرات در برنامه و اصلاح ان
- امكان استفاده مجدذد از تابع
- امكان همكارى برنامه نويسان متعدد در نوشتن يكف
برنامه
صفحه 129:
هر تابع شامل عناصر زیر است:
< عنوان تابع: نام و نوع و آرگومانهای تابع
- بدنه تابع:
اعلان متغيرهاى محلى: متغيرى كه
مخصوص خود تابع باشد.
ع ل ف كت
nis) 0
صفحه 130:
كك بارامترها) <نام تابع> <نوع تابع>
تعزیف پار امتر ها
1
i
اصول کامپیوتر
صفحه 131:
رو ۱22۵۱
در ۱
مقدارى را و
اركومان خواهد بود در غير اينصورت نقش آن فقط
خروج از تابع خواهد بود.
صفحه 132:
ی(
در خروجی چاپ می کند:
Maximum(int x , int y)
int z; {
Z = (x>=y)?x:y ;
printi(“%d” ,z) ;
:۳۰
}
اصول کامپیوتر
صفحه 133:
فراخوانی تابع:
ا ل Peete Re
پارامتر های آن به صورت یک تک دستور و یا در
۱
اصول کامپیوتر
صفحه 134:
:۲( محاسبه فاکتوریل عدد صحیح
#include<stdio.h>
Main()
{
و قزر
scanf(“%d”,&n);
printf(“n=%d fact(n)=%d”, n,
۳۹۳
}
اصول کامپیوتر
صفحه 135:
int fact(int n)
{
حور تررل
10) a (ee a aD)
[7
return(f);
اصول کامپیوتر
صفحه 136:
توابع بهودو صورت از نظر نحوه انتقال آركومانها
ثراترائى ye
۱- فراخوانی با مقدار با فراخوانی توسط ارزش
پا لا ره
اصول کامپیوتر
صفحه 137:
- فراخوانی با مقدار:
در اين روش خود متغیر ها به تابع فراخوانده شده انتقال
نمى يابند بلكه مقدار آن انتقال مى يابد و هر تغييرى
که توسط تابع فرعی روی آن مقدار انجام شود در
ار ۱
اصول کامپیوتر
صفحه 138:
idle
#include<stdio.h>
Main()
1 3
و 10و[
long int factorial;
printf(“n=");
scanf(“%d”,&n);
factorial=fact(n);
printf(“\n fact(n)=%d” factorial);
اصول کامپیوتر
صفحه 139:
int fact (int n)
{
long int f=1;
while(n>1)
PS
return(f);
1
اصول کامپیوتر
صفحه 140:
-فراخوانی توسط ارجاع:
در اين روش آدرس آركومان به درون تابع فراخوانده
شده کپی میشود و انجام هرگونه تغییرات بر آنها بر
آركومانهاى متناظر آن در تابع فراخواننده نيز همان اثر
را خواهد داشت.
اصول کامپیوتر
صفحه 141:
: انتقال آرایه به تابع
سه روش براى تعريف يارامترى كه اشاره كر آراية را
Ber a ewe recep
- روش اول: يارامتر مورد نظر به صورت آرايه
تعریف می گردد.
صفحه 142:
#include<stdio.h>
void display(int num[10]);
main()
{
int a[10], i;
for(i=0 ; i<10 ; ++i)
EGE
display(a);
ay
void noor(num)
{ inti;
for (i=0 ; i<10; ++i)
printf (“\n%d”, num[i]);
7
اضول کمپیرتر
صفحه 143:
- روش دوم: آنرا بصورت آرايه اى معرفى مى كنيم كه اندازه
o wg] 02 0
void noor (num)
int num{];
1
for (i=0 ; i<10 ; ++i)
printf(“\n%d” , numl[i]);
اصول کامپیوتر
صفحه 144:
8 روش سوم: آنرا بعنوان يك اشاره كر 1 تعريف
void noor (num)
int *num;
1
11 ۰
for (i=0 ; i<10; ++i)
printf(“%d” , numlil);
5
اصول کامپوتر
صفحه 145:
تابع بازگشتی:
بازكشتى بودن فرآيندى اسنت.كه در آن.يك :تابع بطور
ESOL SEE geo uel OES
اصول کامپیوتر
صفحه 146:
لل e 1
غيرمستقيم تابع خود را فراخوانى كند.
مثال: تابع زير مجموع اعداد طبيعى 1) تام را محاسبه مى كند
int sum(int n)
{
if(n<=1)
return(n);
ye)
return (n+sum(n-1));
اصول کامپیوتر
صفحه 147:
استفاده از چند تابع:
در زبان © مى توان در هر برنامه به هر تعداد كه نياز
باشد تابع تعريف كرد و هر تابع می تواند تابع
دیگری را فراخوانی کند.
اصول کامپیوتر
صفحه 148:
قلمرو متغيرها:
شده اند به دو دسته تقسيم ميشوند:
-١ متغير هاى محلی
لسن مس
صفحه 149:
- اینگونه متغیرها فقط درون همان تابع شناخته شده
اند.
- فقط در موقعى كه اجراى برنامه ارد بلوك آنها
ميشود وجود دارند و بعد از آن,از بين مى روند.
اصول کامپیوتر
صفحه 150:
ities |
{
int x;
scanf(“%d”, &x);
if(x<=1)
{
char str[20];
printf(“Enter City: “);
gets(str);
puts(str);
1
1
اصول کامپیوتر
صفحه 151:
NED ل eee)
= در تمام طول برنامه شناخته شده اند و مى توانند
بوسيله هر قسمت از برنامه بكار روند.
3 در تمامى وقت اجراى برنامه مقادير خود را حفظ
اصول کامپیوتر
صفحه 152:
کلاسهای حافظه:
سطح دخیره سازی اطلاعات و يا کلاس حافظه قلمرو
متغیر و نیز زمان حیات آنرا در یک برنامه مشخص
می کند.
اصول کامپیوتر
صفحه 153:
i درد
در زبان © جهار كلاس حافظه وجو
500 6 ا
(Girlie eel
(register) Gls -
- خارجی (6<6۲0۵۱)
اصول کامپیوتر
صفحه 154:
كلاين حافظه إتوماتيكك:
ا ها همیشه در درون یک تابع توصیف می
Nyy ey إل ل ل ل ا رل
متغيرهايى كه در توابع كوناكون از اين نوع حافظه
تعریف می شوند از یکدیگر مستقل خواهند بود حتی
mes ۳
اصول کامپیوتر
صفحه 155:
ce Bee eee تابع مقادير خود را از
دست می دهند پس باید هنگام ورود مجدد به برنامه
دوباره مقدار دهی شوند.
صفحه 156:
اگر متغیرهایی را در واحد اصلی تعریف کنیم و
بخواهيم از آنها در واحد فرعى استفاده كنيم بايد آنها
رادر اين واحدها با كلمه كليدى 11ع]/ا© معرفى
کنیم:
اصول کامپیوتر
صفحه 157:
File2 ات
extern int x ,y; لو[
1ك 60۱2۲ 6۲6۲۲ char ch;
main( ) func2( )
Ah ee {
we < ۷
i 0
funcl1( ) func3()
f 1
x =123; y =10;
1] 1]
اصول کامپیوتر
صفحه 158:
OL ed لد ور
میشوند قلمرو آنها از محل تعریفشان تا انتهای برنامه
می باشد و در بقیه برنامه و همه توابع بعد از آن
شناخته شده اند.
صفحه 159:
كلاسن حافظه استاتئك:
ا ا 1
wee ee” ا ل را
گردد.
اصول کامپیوتر
صفحه 160:
متغير هاى استاتيك نسبت به تابع خود محلى هستند اما
برخلاف متغيرهاى اتوماتيك در,تمام طول برنامه
مقدار قبلى خود را حفظ مى كنند.
صفحه 161:
‘float a,b,c
() main
: static float a
; void dummy(void)
1
; void site (void)
}
; satatic int a
-int b
i ee
صفحه 162:
Reve Bee tHe WO) e ie الك
متغیر های خارجی تعریف کرد در ابن موارد هرگونه
Sis Ses Ohl) os
eee) ا peared OS Se Cee
صفحه 163:
هنكام توصيف متغيرهاى محلى استاتيك مئ توان آنها
را مقداردهى اوليه كرد اما اين مقدار بايد بشكلك
ثابتها بيان كردد نه عبارات.
صفحه 164:
کلاس حافظه تبات:
اين نوع كلاس حافظه فقط در مورد متغیر هایی از نوع
:۷ 6112۲ قابل اعمال است,
استفاده از این کلاس حافظه سرعت هرنوع عملیات
روی این متغیر ها را افزایش می دهد.
اصول کامپیوتر
صفحه 165:
int noor( m,n )
ار
; register int n
/
; register int k
;k=1
for (; n>0 ; n--)
;k=k+m
;return k
{
0
صفحه 166:
ماکرو:
۱ ۱ Cocina eee eb yee
یک دستور و یا گروهی از دستورات تعریف شده
باشد.
در صورتى كه ماكرو شامل كروهى از دستورات باشد
مشابه تابع عمل مى كند.
اصول کامپیوتر
صفحه 167:
<include<stdio.h#
define area _ length*width#
()main
/
;int length , width
; scanf(“%d%d” , length, width)
; printf(“area = %d” , area)
1
اصول کامپیوتر
صفحه 168:
تعريف ماكروها در ابتداى برنامه و بيش از تعريف
ene تابع م
- حوزه تعریف ماکرو از محل تعریف شدن تا انتهای
۳
۰ ماکرویی که در یک فایل تعریف شده در فايل
دیگری قابل شناسایی نیست.
صفحه 169:
یک ماکرو برخلاف یک تابع:
سرعت اجراى برنامه را افزايش و در عوض اندازه. -
برنامه اجرایی را بزرگ می کنند. -
شناسه یک ماکرو آدرس پذیر نیست. -
یک ماکرو نمی تواند بصورت بازگشتی خود را -
فراخوانی کند
صفحه 170:
صفحه 171:
ركه
- مجموعه عناصرى است داراى ويزكيها و صفات
یکسان هستند.
- يك فضاى بيوسته ازحافظه اصلى كامييوتر كه مى
تواند جندين مقدار را در خود جاى دهد.
صفحه 172:
تعریف آرایه:
در زبان © آرايه ها بصورت متغيرهاى معمولى
تعريف مى شوند با اين تفاوت كه نام آرايه بايد با
eR ly ار م
242۳ رای ات وود ام ارات ۸۰/2 ۱5
اصول کامپیوتر
صفحه 173:
- آرايه ها از نظر نوع اختصاص حافظه فقط نمى
توانند به صورت ۲۵01516۳ تعریف شوند.
" برای آرایه هایی که بیرون از تابع تعریف می شوند
سطح ذخيره سازى خارجى بعنوان ييش فرض در
نظر گرفته می شود.
اصول کامپیوتر
صفحه 174:
US ( :
اتوماتيك نمى توانند هنگام تعریف آنها مقدار اوليه
بيذيرند.
- هركاه نام آرايه بعنوان آركومان يك تابع ظاهر شود
بعنوان ادرس اولين عنصر ارايه تعبير مى كردد.
صفحه 175:
رشته ها:
در زبان © رشته ها بعنوان آرايه اى از كاراكترها
ل ی
ل ا Sere
صفحه 176:
0 يك ثابت رشته اى آرايه اى را معرفى مى كند كه
انديس يايين آن صفر و انديس بالاى أن تعداد
كاراكترهايى است كه در رشته وجود دارد.
- هر رشته به كاراكتر |الا(] كه يايان رشته را نشان
ا كم
صفحه 177:
eC SIS) eee ewe SOC Sire eee)
چاپ می کند:
# include<stdio.h>
main ( )
{
char name[12] ;
اصول کامپیوتر
صفحه 178:
int i;
for (i=1,i<=15; ++i)
1
scanf(“%s”, name);
printf(“\n%s” , name) ;
}
صفحه 179:
مرتب سازى:
0 ل Cis HP peer PEE
يك ويزكّى يا نظم خاص سازمان دهى شوند اين
عمل را مرتب سازی گویند.
اين عمل به منظور سرعت بخشیدن به عمل جستجو
می باشد.
صفحه 180:
جسلجو.:
- هرگاه داخل مجموعه ای از عناصر دنبال عنصر
خاصى بكرديم اين عمل را جستجو نامند.
- جستجو در زمبنه هايى جون بانكهاى اطلاعاتى
کر را درز
صفحه 181:
برخى روشهاى مرتب سازى و جستجو:
- مرتب سازی حبابی
- مرتب سازی انتخابی
- جستجو به روش خطى
- جستجو به روش دودويى
اصول کامپیوتر
صفحه 182:
مرتب سازى حبابى:
اين روش:از نظر منطق ساده ترين و از نظر كارايى يايين
ترين روش مرتب سازى اطلاعات است.
void BubbleSort (int Al ] , int n)
{
inti, j, temp;
for (i=1 ; i<n ; ++i)
for (j=0 ; j<n-l ; ++))
اصول کامپیوتر
صفحه 183:
lf (ALj] > Aj+1))
1
temp = Aj];
Aj] = alj+1];
Alj+1] = temp;
}
5
اصول کامپیوتر
صفحه 184:
مرتب سازى انتخابى:
بريترى اين ربوش نسبت به روش حبابى آن است كه تعداد
تعويض.عناصر كمتر شده و سرعت بيشتر مى شود.
void SelectionSort (int a[ ], int n)
i
; int i, max, temp
for (i=l; i<n; + + i)
/
اصول کامپیوتر
صفحه 185:
;max = 0
for (j=1 ; j<= n-i+1; + + j)
if(A[j] > A[max] )
;max =j
if(max !=n-i)
; temp = A[max]
; A[max] = A[n-i]
; A[n-i] = temp
Ge
صفحه 186:
جستجو به روش خطی:
اين روش ساده ترين راه براى جستجو در يك آرايه يا
جدول نامرتب است. براى اينكار عنصر مورد
جستجو را بطور متوالى با عناصر جدول مقايسه مى
as
صفحه 187:
NP ey Wee ae SD aoe ae Be Oey
int LinearSearch (int A[ ], int n,
int x)
/
101 |
for (i = 0; i<n; + + i)
if (x = = Afi] )
; return (i+1)
‘return (0)
{
اصول کامپیوتر
صفحه 188:
جستجو به روش دودويى:
اين روش در صورتى امكان يذير است كه عناصر
جدول مورد نظر مرتب شدّه باشند در اين'صورت از
روش خطى سريعتر مى باشد.
صفحه 189:
0050 ا 2 RNa ere kee Is Dy okie)
مى كند:
int BinarySearch (int A[ ], int n,
int x)
{
int middle, L,H;
L=0;
H=n-1;
while ( L <= H)
{
middle = (L+H)/2 ;
اصول کامپیوتر
صفحه 190:
if (x = = A[middle] )
return (middle +1) ;
if (x >A[middle] )
L= middle =1 ;
else
H = middle -1;
7
return(0)
اصول کامپیوتر
صفحه 191:
کتابخانه ای رشته ها:
2 ۳2
صفحه 192:
مثال: برنامه اى كه دو رشته را از ورودى خوانده و
ان دو را با هم مقايسه مى كند:
<include<string.h #
<include<stdio.h #
ملقم ()
/
;char s1[80] , s2[80] , s3[80]
; gets (s1)
; gets (s2)
اصول کامپیوتر
صفحه 193:
printf (“\n Lengths : %d%d\
n” ,strien (s1) , strlen (s2)) ;
if (‘strcmp (s1 , s2))
printf (“\n The strings are
equal\n”) ;
strcpy (s1 , s3)
staract (s1, s2) ;
printf (“\n%s” , s3) ;
printf (“\n%s” , s1) ;
اصول کامپیوتر
صفحه 194:
۳۹
صفحه 195:
Dee Stee eo ten eee Se
۱ ا
رح
- اشاره گر روش غیرمستقيم دسترسی به داده ها است.
صفحه 196:
موارد استفاده از اشاره 110
۱ eee
برگرداندن چندین مقدار از تابع فرعی -
1 pe Ce
- تشکیل ساختارهای پیجیده
SSH
- تخصيص حافظه به صوريت يويا
اصول کامپیوتر
صفحه 197:
در بحث اشاره گرها عملگر ۶ به دو مفهوم بکار می
Ay
< در معرفی متغیرها به عنوان عملگر اشاره گر
- براى دستيابى به مقدار متغيرى كه ادرس ان در يك
متغير اشاره كّر قرار دارد.
صفحه 198:
‘laf Be) مقداردهى اوليه
به هر نوع متغير از نوع اشاره كر مى توان هنكام
اعلان آن مقدار اوليه نسبت داد در اينصوّرت مقدار
اوليه مورد نظر بايد يك آدرس يا |الام باشد.
اصول کامپیوتر
صفحه 199:
ة تعربف متغير اشارهكر
نحوة تعر يف متغير
3 1
امتعيز ن اشاره می کند
اشارهكر * نوع دادهاي كه به ان ١ ره مي
نام متغير So Lisl
pend
int *p;
char *pc;
float *fp;
اضول کمپیرتر
صفحه 200:
عملكرهاى اشارهكر
: شح كند.
5 اا ie ary ae re
se Weer CRN [Cty Ses |
07 50
ریز ETE
7 HO Cae CA é
: لس
اصول کامپیوتر
صفحه 201:
مثال
int i= 100;
int * pi;
صفحه 202:
pi=&i;
صفحه 203:
ار« BS تهی:
- زبان © مفهوم اشاره كر |1ل(ا را پشتیبانی می کند و
آن اشاره گری است که به هیچ مقدار معتبر اشاره
- هر اشاره گری که مقدار صحیح صفر به آن نسبت
داده شده باشد.
صفحه 204:
int *
pl,*p2,i;
01 2 7
: 2 + 1م < 1
: 2 *1+ 1م 1م
pl == p2
1 -> 2م
اصول کامپیوتر
صفحه 205:
مثال: در برنامه زیر حلقه ع۷/۱۱[1 تا موقعی که 0 یک
اشاره كر | الال نباشد عمل تكرار را eee)
دهد:
char *p ;
7 (p)
{
اصول کامپیوتر
صفحه 206:
ل ۷۱
عمل انتساب
0
0
- انتساب: به يك اشاره گر می توان آدرس یک متغیر
يا مقدار صفر نسبت داد.
صفحه 207:
روش غلط
swap (int سیم
int temp ;
temp =a;
=p; ۱
b = temp;
bi
اصول کامپیوتر
صفحه 208:
روش صحیح
void swap (int *a, int *b)
int temp ;
temp = *ta;
*q = *b;
*b = temp;
}
اصول کامپیوتر
صفحه 209:
void main ()
int x =10,y = 20;
swap ( &«, &y );
printf (“x = %d , y = %d”, x,y);
}
x=20,y=10
اصول کامپیوتر
صفحه 210:
- محاسباتى: مى توان يك مقدار صحيح را .به اشاره
كر اضّافه كرد.
<include<stdio.h#
main ()
{
: لام* , »ام* او
static int A[6] = {1,2,3,4,5,6};
اصول کامپیوتر
صفحه 211:
px = G&A[0] ;
51 دارم
۱999۱9۷ py=%x” , px,
(لام
printf(“\n py - px =%x” , py -
0۳
۳
صفحه 212:
- مقایسه: اشاره گرهایی را که به داده های از یک
Ole Tew) tars ار
px < py
Px >= py
دم
Px != py
االاط < < ۴
اصول کامپیوتر
صفحه 213:
if (px<py)
printf (“px points to lower
memory than py”);
حدات
printf (“px points to upper
memory than py”);
اصول کامپیوتر
صفحه 214:
اشارهكر و آرايه
نام آرايه آشاره گر به اولین عنتصر آن است.
int A [5];
@+e
st
00 00 6 ve ole
۱ | [ 1
اصول کامپیوتر
صفحه 215:
بنابراین A[2]
ا 00
۸ ]2[ < 100 :
* (A + 2) = 100;
صفحه 216:
۳
oer ce) ا 0
رشته نیز ب
و بنابراین
reser ia) pee ages er
نام رشته اشارهگر به اولب
scanf (“%s” , s) ;
اصول کامپیوتر
صفحه 217:
آرایه و رشته بعنوان پارامتر تابع
void f (int *a; char *s) {
a [2] = 100;
strcpy (s , “Ali”) ;
}
اصول کامپیوتر
صفحه 218:
void main () {
int b [10];
char str [20];
f (b , str) ;
7
صفحه 219:
تابع تخصیص حافظه پویا
لندازة حافظة مورد نیاز ) ۲۱۵۱۱۵ * ۷۵۲۵0
(بهبليت
int *p;
p = (int *) malloc ( sizeof
9
اصول کامپیوتر
صفحه 220:
۱
int *A;
A = (int *) malloc ( sizeof (int) *
100 );
با دستورات فوق آرابهای با ظرفیت 100 عنصر با نام
هر 0
اصول کامپیوتر
صفحه 221:
000 تابع آزادسازى
و تور EVEL qui ums) bur) Ome penew br
Pater) |
int *A;
A = (int *) malloc ( sizeof (int) *
100 );
۱/0 و
; free (A)
اصول کامپیوتر
صفحه 222:
روش غلط
int n;
float A [n];
scanf (“%d’ , &n) ;
صفحه 223:
روش صحیح
int n;
float *A;
scanf (“%d’ , &n) ;
A = (float *) malloc (sizeof (float) *
n);
00
; free (A)
اصول کامپیوتر
صفحه 224:
فصل نهم
نوع داده كاربر
صفحه 225:
نوع داده هايى كه كاربر با توجه به نياز خود ايجاد مى
كند عبارتند از:
pene
۱۳/292
- اجتماع
aged?
اصول کامپیوتر
صفحه 226:
(۳
نوع داده متفاوت می باشد
صفحه 227:
struct structure_name
1
176 ۷۵۲1۵0161 67
type variablem_name;
۳
صفحه 228:
نمونه اى از تعريف ساختار همراه با نماى ظاهرى:
struct account{
int acct-no ;
char acct-tyf
char name[8
float balance
۷
اصول کامپیوتر
صفحه 229:
ید | عستا یک شاختار ,نمی نوان کلاسم حافظه
اختصاص داد.
- هنكام تعريف يك ساختار نمى توان به اعضاى آن
مقدار اوليه نسبت داد.
صفحه 230:
قطعه برنامه زیر نحوه اختصاص مقادیر اولیه به اعضای یک
متغير ساختار را نشان مى دهد:
struct data {
int month ;
int day ;
int year ;
1
struct account {
int acc-no ;
اصول کامپیوتر
صفحه 231:
char acc-type ;
char name[80] ;
float balance ;
struct data lastpayment ;
ips
Static struct account customer =
{12746 ,’R’ , “payman noor” , 2986.50 ,
2
صفحه 232:
eps. شك ساختار:
- اعضاى يك ساختار معمولا مستقل از هم يردازش
مر
- به هر عضو ساختار با استفاده از عملكر ”.'رجوع
مى شود.
Variable.member
اصول کامپیوتر
صفحه 233:
داده تعریف شده توسط کاربر :
در زبان کاربران می توانند نام جدیدی برای نوع
داده تعریف کنند این کار به کمک کلمه کلیدی
eh ره
;Typedef type name
اصول کامپیوتر
صفحه 234:
اجتماع:
ا اا ال ا ل 20
ا eS
union tag {
member 1;
member 2;
member m;
1
صفحه 235:
نوع شمارشى:
يكى از انواع داده استكالر است و.اعضا آن تابتهايى هستند كه
بعنوان شناسه نوشته می شوند.
10617101ع70,..., 1ع 29 ۲۲۱ 61۱:
صفحه 236:
فصل دهم
39
پشته و صف
صفحه 237:
ا ا oe ۷
حذف از يك سمت أن كه (]0] ناميده نى شود
صورت مى كيرد.
صفحه 238:
*
Rar te ل كك ا
مم | ©
نك ك4 + 4
@ @ © + ©
اصول کامپیوتر
صفحه 239:
از آنجا كه آخرين عنصر وارده به يشته اولين عنصر
حذف شده از آن مى باشد يشته را بعنوان يك ليست
0 شناسند.
صفحه 240:
برخلاف آرایه پشته در طول اجرای برنامه بطور پویا
افز ايش می بابد و محدودیتی نیز در تعداد عناصر
پشته ar) ا
صفحه 241:
يشته در زبان © بصورت ساختمانى با دو عضو
تعريف مى شود يكى ارايه اى از عناصر پشته
ديكرى متغيرى كه نشان دهنده موقعيت بالاى يشته
در آرايه است.
صفحه 242:
1 ا ا ا ال ayer on)
در آن از يك سمت و تمام حذفهاى آن از:سمت ديكر
انجام مى كيرد.
صفحه 243:
از آنجا كه اولين عنصر وارده به يك صف اولين
عنصرى است كه خارج مى شود صف بعنوان ليست
0بر نظر گرفته می شود.
صفحه 244:
ESRC STUD RC SISTED ne OTe STS TCNTP B®
به دو متغیر ۲۳0۲ و ۲6۵۲ جهت نشان دادن ابتدا
و انتهاى عناصر صف نياز داريم.
صفحه 245:
سبط
۶
1۳ صف با سه عنصر
00
SS
9 حذف عنصر از صف
مس
as
20 ©
اصول کامپیوتر
صفحه 246:
صف اولويت ساختمان داده اى است كه در آن ترتيب
طبيعى عناصر نتايج اعمال ابتدایی آن را تعیین می
كند و بر دو نوع است:
<- صعودی
۳
صفحه 247:
5 صف اولويت صعودى:
صفی است که درج عناصر در آن به هر صورتی
ممكن است اما در موقع حذف كوحكترين عنصر
۳۰۰۱ Re
اصول کامپیوتر
صفحه 248:
- صف اولويت نزولى:
همنند صف اولويت صعودى است با اين.تفاوت كه
عمل حذف موجب حذف بزركترين عنصزرٌ صف مى
سود.
صفحه 249:
صف حلقوى:
0 et Porro VP Pee Ie
يك موقعيت عقب تر از اولين عنصر موَجود در
صف و انديس انتها به انتهاى فعلى صف اشاره مى
“pas
صفحه 250:
1
9
2
صف هاى حلقوى تهى و غير تهى
9 9
11 0
Lars aD)
سس
91
1
109)
۳-00
اور
صفحه 251:
فصل یاز دهم
ساختار 5 کر
صفحه 252:
درخت:
بطور کلی درخت مجموعه محدودی از یک یا چند گره
با شرايط زير است:
-١ داراى كره خاصى به نام ريشه است.
eerie ا 0050 20
زيردرخت ريشه نام دارند تقسيم شده اند.
صفحه 253:
نمونه اى از يك درخت
evens
oe ed
ا هه
ove ke
اصول کامپیوتر
صفحه 254:
- به عنضر حاوى اطلاعات كره كفته مى شود.
ال و ۱
شود.
3 هايى كه درجه صفر دارند برك ناميده مى
شوند.
صفحه 255:
ا ل ا ا REELS EF
است.
فرزندان یک گره گره های همزاد نام دارند.
- ارتفاع درخت به بيشترين سطح كره هاى آن درخت
كفته مى شود.
صفحه 256:
درخت دودويى.
اكر هر كره در يك درخت داراى دو انشعاب باشد ابه
آن درخت درخت دودویی گفته می شود
یک درخت دودویی یا تهی است یا حاوی مجموعه ای
محدود از گره ها.
صفحه 257:
تفاوت بین یک درخت دودویی و یک درخت عادی:
EB 7 020 3ك
- در يك درخت دودويى ترتيب فرزندان داواى اهميت
است.
صفحه 258:
خواص درختان دودويى:
REG) ا ا ا ا ل ا
دودویی eater a a aS)
"- حداكتر تعداد كره ها در يك درخت دودويى به
عمق »| برابر 2722| است.
صفحه 259:
؟- براى هر درخت دودويى غير تهى اكّر 0 تعداد
کر Neen ele ا
tala
nO=n2+1
اصول کامپیوتر
صفحه 260:
weer ا ا
پیمایش درخت پا دستیابی به هر گره درخت فقظ برای
یکبار بر سه نوع است:
Inorder -
Preorder -
Postorder -
اصول کامپیوتر
صفحه 261:
:Inorder
حرکت به سمت پایین به طرف چپ تا اخرین گره سپس گره
بازیابی شده و به سمت راست حرکت را ادامه می دهیم.
void inorder (treepointer ptr}
1
if (ptr)
1
صفحه 262:
inorder (ptr->leftchild);
printf (“%d”, ptr->data);
inorder (ptr->rightchild);
}
اصول کامپیوتر
صفحه 263:
:Preorder
ابتدا كره و بعد انشعابات جب را بازيابى كرده تا رسيدن به
گره تهی ادامه می دهیم سپس به نزدیکترین گره والدی که
دارای یک فرزند راست باشد مراجعه و همین کار را ادامه
0
اصول کامپیوتر
صفحه 264:
void preorder (treepointer ptr)
1
if (ptr)
1
printf (“%d”, ptr->data);
preorder (ptr->leftchild);
preorder (ptr->rightchild);
i
}
اصول کامپیوتر
صفحه 265:
:Postorder
ابن بيمايش دو فرزند يك كرره را قبل از بنازيابى آن.كره
ملاقات می کند یعتی فرزندان یک گره قبل از. خود آن كره
بازيابى مى كريدد.
void postorder (treepointer ptr)
1
if (ptr)
{
صفحه 266:
postorder (ptr->leftchild);
postorder (ptr->rightchild);
printf’ %d”, ptr->data);
1
اصول کامپیوتر
صفحه 267:
درختان دودویی مساوی:
درختان دودويى را در صورتى مساوى ناميم كه
000 هم داشته و اطلاعات موجود در كره
های نظیرشان با هم برابر باشند.
اصول کامپیوتر
صفحه 268:
int equal (treepointer frist , treepointer second)
{
return ((!frist && !second) | | (frist &&
second &&
(frist->data = = second->data)&&
equal (frist->leftchild , second-
>leftchild) &&
equal (frist->rightchild , second-
>rightchild))
a
صفحه 269:
درختان جستجوى دودويى:
یک درخت جستجو یک درخت دودویی است که ممکن
ا 1 اكر درحّت تهئ نباشد داراى اين
Dyce رت
-١ هر عنصر دارای يك كليد منحصر به فرد است.
صفحه 270:
؟- كليدهاى واقع در زيردرخت غيرتهى جب بايد كمتر
از مقدار كليد واقع در ريشه زيردرخت راست باشد.
۳- زیردرختان چپ و راست نیز خود درختان
جستجوی دودویی می باشند.
صفحه 271:
:جستجوی یک درخت دودویی
treepointer search (treepointer root , int
key),
{
if (!root)
return NULL ;
if (key = = root->data)
صفحه 272:
return root;
if (key < root->data)
return search (root->leftchild , key) ;
return search (root-> rightchild , key);
اصول کامپیوتر
صفحه 273:
درج عنصر در درخت جستجوی دودویی:
براى درج عنصر بايد درخت را جستجو نمود اكّر
جستجو ناموفق باشد می توان عنصر را در محلی که
جستجو خاتمه بيدا كرده درج كرد.
صفحه 274:
درج عنصرى به داخل دريخت دودويى
ا
00 جایگذاری ۸۰
صفحه 275:
- درخت انتخابى:
يك درخت دودويى نک دو
فرزند خود مى باشد.
- جنكل:
اكر ريشه يى درخت را حذف كنيم آنكاه داراى يك
جنكل خواهيم بود.
صفحه 276:
فصل دواز دهم
فایل
صفحه 277:
- هر فايل شامل مجموعه اى از داده هاى مرتبط به هم
است .
- داده های مربوط به هر یک از اجزای فایل یک
ركورد نام دارد.
- هر ركورد مجموعه اى از جند فيلد است.
صفحه 278:
0 00006
د
(۹
۳
عور
اصول
صفحه 279:
داده ها ممكن است به جهار روش در فايل ذخيره و
بازیابی شوند:
١ - داده ها كاراكتر به كاراكتر در فايل نوشته شده و
سپس کاراکتر به کاراکتر از فایل خوانده شوند.
صفحه 280:
۱2 ۱ nn ل ERY TK Kien
نوشته و به همان صورت رشته اى از كاراكترها نيز
مورد دستيابى قرار كيرند.
صفحه 281:
۳- داده ها در حین نوشتن بر روی فایل با فرمت
لط ا ل اه
- داده ها به شكل ركورد بر روى فايل نوشته و
بصورت ركورد نيز خوانده شوند.
صفحه 282:
انواع فایل:
داده ها در فايل به دو صورت ذخيره مى شوند:
text -
binary -
اصول کامپیوتر
صفحه 283:
تفاوت این دو در سه مورد است:
- تعیین انتهای فایل
- تعیین انتهای خط
- نحوه ذخیره شدن اعداد بر روی دیسک
صفحه 284:
در فايل, ]لاع اعداد بصورت ررشتة اى از كا راكترها
ذخيره می شوند ولی در فایل باینری اعداد به همان
صورتى كه در حافظه قرار مى كيرند روى ديسك
ذخيره مى شوند.
صفحه 285:
دو روش از نظر نحوه ذخيره و بازيابى داده ها در فایل
وجود دارد:
- سازمان فایل ترتیبی
- سازمان فایل تصادفی
صفحه 286:
- در سازمان فایل ترتیبی رکوردها به همان ترتیبی
ا ل ال ا Vere
Teer) ا ۷
صفحه 287:
- در سازمان فايل تصادفى به هر ركرد يك شماره
اختصاص مى يابد بنابر اين مى.توان به ركورد
دلخواه دسترسى بيدا كرد بدون اينكه ركوردهاى قبل
0
صفحه 288:
بازكردن و بستن فايل:
معن EES NT Mn ena
مواردى كه در حين باز كردن فايل مشخص مى
شوند عبارتند از:
اصول کامپیوتر
صفحه 289:
ue ذخيره اطلاعات
fot A Kate ی
- نوع فایل ازنظر ورودی-خروجی
اصول کامپیوتر
صفحه 290:
انواع فایل:
0ك
نوشتن اطلاعات
كه طو ى باز شود كه فقط عمل نوشتن
Erik 1 2 آن مجاز است.
اصول کامپیوتر
صفحه 291:
- فایل ورودی:
فايلى كه طورى باز شود كه فقط عمل خواندن
nest] ل ۳
را
فايلى كه طورى باز شود كه عمل خواندن و نوشتن
Cet 5
صفحه 292:
0 7
گرفته و داراى الگوی زير است:
FILE *fopen (char *filename, *mode)
اصول کامپیوتر
صفحه 293:
ادیر معتبر ۱۵06 در تابع ۲00۵61()
pups inode
از نوح غيرعغ را بعنوان ورودى باز مى كند.
صفحه 294:
:getc 5 putc ais
برای نوشتن و خواندن یک کاراکتر در فایلی که قبلا
پر ده Oe و ده
int pute (int ch , FILE*fp)
int getc (FILE*fp)
اصول کامپیوتر
صفحه 295:
:getw + putw als
اين دو تابع مشابه عغ]©0 و ع]نام هستند ولى براى
0000 ل ال Tee ES
دیگر بکار می روند.
putw(50 , fp);
اصول کامپوتر
صفحه 296:
‘fgets sfputs als
برای نوشتن رشته ها در فایل از تابع کتابام] و برای
خواندن رشته ها از فایل از تابع ۲9615 استفاده می
كردد.
int fputs (const char *str , FILE *fp)
char *fgets (char *str , int length , FILE *fp)
اصول کامپیوتر
صفحه 297:
فايلهاى ورودى و خروجى:
می توان یک فایل را به عنوان وسیله ورودی و
خروجى مورد استفاده قرار داد براى اين منظور در
تابع ۲0060 بجای ع1100]:
+ -یام+ برلعب از کردنفایل(ع]
صفحه 298:
+۷۷ - ۲ ۷۷+ بر لولیجاد کف یلا6
خ +3 - يا ق+ بر اءليجاد يكفايل اه و ياباز
(tone as 0-07
0 + - براءياز كردنفايلباينرىوموجود
اصول کامپیوتر
صفحه 299:
تابع 6 ۲6۲۲0۷:
برای حذف فایلهای غیر ضروری می توان از این تابع
استفاده كزد:
int remove (char *filename)
صفحه 300:
-fscanfs fprintf els
هرگاه لازم باشد داده ها با فرمت خاصی در فایل نوشته
يا از أن خوانده شوند بكار مى روند:
int fprintf (FILE *fp , “*control_string,...”, char
arg,...)
int fscanf (FILE *fp , “*control_string,...”, char
arg,...)
صفحه 301:
توابع ۲۷۷۲6 و ۲۲6۵0:
برای ورودی خروجی رکورد و ساير ورودی خروجی
ها استفاده مئ شود:
int fread (void *buffer, int num_byte, int
count, FILE*fp)
int fwrite (void *buffer, int num_byte, int
count, FILE*fp)
صفحه 302:
ice
struct student stud ;
fread ( &stud ,
sizeof (struct
student) ,
1,fp);
صفحه 303:
مثال
int a [20] ;
fread (a , sizeof (int) , 20,
fp);
دریافت 20 عدد از فابل و قرار دادن آن در آرابه
صفحه 304:
#نکته
fprintf (FILE *fp,“ 2..<, "bic )
fscanf (FILE *fp,“ 24<, "Li (
دقيقا همانند 0111111 و 562114
ذكر اشارهكر فايل در ابتداى آنها
اصول کامپیوتر
صفحه 305:
مثال
FILE *fp1, *fp2;
fp1 = fopen (“c:\test.txt’” , “rt”) ;
fp2 = fopen (“c:\ali.dat’ , “wb”) ;
fscanf (fp1 , “%d %f %s”, &i, &f,
لوقت
fprintf (fp2 , “%f, %s’, f , str) ;
اصول کامپیوتر
صفحه 306:
تابع »۲566:
براى خاندن و نوشتن داده ها بصسورت تصادفى بكاز
م
int fseek( FILE *fp,long int num_bytes,int
jorigin)
صفحه 307:
دستگاه های ورودی و خروجی استاندارد:
اشاره در تا سسکا زد
ارد کر تام دستتاد (ys)
کارا 1
stelj رک
tein دستگاد ورودی
stdout
ما استاندارد چا
پزرت سر و
صفحه 308:
فصل سيزدهم
توابع كتابخانه اى
صفحه 309:
تبدیل نرح رشتا
integer
سیز شناور
تبدیل نرح به توح
long
الگو
void clrser (voicl)
int ato] (const char *5)
clouble atof (const char
#5)
long atol (const char
صفحه 310:
A
double sqrt (double x)
double poy (double
4,douple y)
int abs (int رم
double faps(double x)
صفحه 311:
کار برد
محاسبه قد رمطلق double cabs (struct corno.
nurn)
احذاذ موهومى
double sin(double
double cos(double arg)
double tan(cdouble arg) باه $314 انت rein )(
صفحه 312:
جرب الكو
coup
in(clouple
آرك سينوس arg)
يق عدد
es hy) ماس
یک عدد
() ددعت محاسبد آرک تانوانت double atan(cdouole arg)
يق عدد
ارك تائزانت نتيجه cloud. an2(douole
y double
ات
)0 تتسیم آرگومان ارل بز دوم )4
صفحه 313:
اشر
sinn(coup
arg)
double ¢
nn(douple
arg)
ail(clouble x)
صفحه 314:
۳
double log (clouble x)
double loglO (double x)
double a9 (double arg)
double Idexp (double nurn,int رع < زیر
exp) 0
صفحه 315:
floor ()
مويق
0
وررر
0)
نواه
Q
التر
double floor (clouble x)
clouble frnod (clouple x,
double y)
double rnodf (double ~,int*y)
double hypot (clouble x,
double y)
صفحه 316:
الكو
double ooly (double «int
n,clouble Cf])
int tolower (int chi)
int toulooer (int ch)
isalona (int ch)
صفحه 317:
1)
int isounce (int ch)
int isugoer (int ch)
صفحه 318:
es)
(she);
str,char ch, signed
count)
void #mernichr(const 6 i 1 11-1 ملع
unsigned court) =a 9
void *rernicoy( void Inet py
rorn, Unsigned court) 5 0 ۱
صفحه 319:
۳
اواج رده اهزور )ناد
court)
ar *strlwyr (char *str)
صفحه 320:
A
strneat ك)
2, unsign
const *str ,
, unsigned
1۲2 , unsign
صفحه 321:
لتر
unsign
۳
char *strray (char
char *strupar (
اصول کامپیوتر
صفحه 322:
۳
old frae (void *)
calloc (unsigned urisn ,
yoid *rnalloe (unsign
Hoe (void *ptr , unisig.
1
صفحه 323:
Fay
void clreol()
void delline()
void inslina()
پتوان متاننما رادر . void gotoxzy(int x,
« فسال ترار داد int y)
صفحه 324:
int far gaty(void)
(void)
صفحه 325:
30
() رو لءررژرر
رنگ ستن را مشخص میکند
ال
nt top
int puttext(int laf ,
۱۲۲۱ , ۷9۵
int right , int bottorn
int pett
int right , int
void window(int |
pint right, int
oid taxtcolor(int color)
صفحه 326:
التر
void taxtbackground(int
color)
void textrnode(int riod
void far initgraph(int far
*driver , int far *rnode
char far *path)
void far satokcolor(int
color)
صفحه 327:
ار
void far satpalatta(int
inde, int color)
void far putoizellint %, int رنگ مشخصر شده را به مل
y , int color)
صفحه 328:
J کاربرد
void far line(int startx , int شطی از نقطهای به نقطه
starty , int endx, int endy) ديكر رسع مىكند
yoid far lineto(int %, int y)
void circlalint «, int y, int
yoid far ellis
rt, int end
yraclius)
Siu yradius
ریم میک
صفحه 329:
A
void far drawpoly(1
nurnpoints , int fi
void floodfill(int x, int y , int
bordercolor)
Fillstyle(
, int color)
4t(char *str)
صفحه 330:
tion, int
he,
, voicl far
صفحه 331:
۳1
۳ 1 سحتو 1 3 1309 ga /
برای نمایش دادن محتراى يف void far gatimagat(int left,
int top, void far *ouf, int
ar, intend, int
radius)
صفحه 332:
التر
void far bar(int le int
top, int right, int
barsdfint
p , int rig
2 pint dept
صفحه 333:
oak