صفحه 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
دانشگاه پيام نور -گروه کامپيوتر
اصول کامپیوتر۲
ر(شته علوم ر(ايانه
براساس کتاب اصول کامپیوتر ۲
تاليف دکتر داود کریم زادگان مقدم
تهیه کننده :مهدی یوسفخانی
تابستان ٨۵
فصل اول
مفاهیم اولیه
الگوریتم:
الگوریتم مجموعه محدود و پایانپذیر از
.دستورالعملها است
شرایط الگوریتم:
ورودی
خروجی
قطعیت
محدودیت
کارایی
-۱ورودی:
یک الگوریتم می تواند هیچ یا چندین کمیت
ورودی داشته باشد که از محیط خارج تامین
می شود.
-۲خروجی:
الگوریتم بایستی حداقل یک کمیت بعنوان
خروجی ایجاد کند.
-۳قطعیت:
هر دستورالعمل باید واضح و بدون ابهام باشد.
-۴محدودیت:
اگر ما دستورالعملهای یک الگوریتم را دنبال کنیم
برای تمام حاالت باید پس از طی مراحل محدودی
الگوریتم خاتمه یابد.
-۵کارایی:
تنها قطعیت کافی نیست بلکه هر دستورالعمل نیز باید
انجام پذیر باشد.
پایان پذیری تفاوت میان یک برنامه و یک الگوریتم
است.
پیچیدگی فضای الزم
میزان حافظه یا پیچیدگی فضای یک برنامه
مقدار حافظه مورد نیاز برای اجرای کامل
.یک برنامه است
:فضای مورد نیاز یک برنامه
نیازمندیهای فضای ثابت
نیازمندیهای فضای متغیر
نیازمندیهای فضای ثابت:
این مطلب به فضای مورد نیازی که به تعداد و اندازه
ورودی و خروجی بستگی ندارد اشاره دارد.
نیازمندیهای فضای متغیر:
این مورد شامل فضای مورد نیاز متغیرهای ساخت
یافته استکه اندازه آن بستگی به نمونه ای از مساله
ای که حل می شود دارد.
:پیچیدگی زمانی
میزان یا پیچیدگی زمانی یک برنامه مقدار زمانی است
.که کامپیوتر برای اجرای کامل برنامه الزم دارد
:چرخه زندگی یک سیستم
نیازمندیها
تحلیل
طراحی
کدنویسی
بازبینی
جنبه های مهم بازبینی:
اثبات درستی
آزمایش درستی
اشکال زدایی
بعضی از الگوهای توسعه نرم افزاری:
روش آبشاری
برنامه نویسی اکتشافی
-۱روش آبشاری:
این روش فرایند نرم افزار را متشکل از چند مرحله
می داند .پس از تعریف هر مرحله توسعه نرم افزار
به سمت مرحله بعدی پیش می رود.
-۲برنامه نویسی اکتشافی:
در این روش در حداقل زمان ممکن سیستمی ایجاد می
شود و سپس اصالحات الزم در آن بوجود می آید تا
به درستی عمل کند.
طراحی شی گرا:
طراحی شی گرا بر مبنای پنهان سازی اطالعات و
نهادها است که دارای یک حالت اختصاصی و
اعمالی بر روی آن حالت است.
ویژگیهای طراحی شی گرا:
-۱ناحیه مشترک داده ها حذف می شود.
-۲اشیا نهادهای مستقلی هستند که قابل تغییر می باشند.
-۳اشیا ممکن است توزیع شده باشند و بصورت
موازی یا ترتیبی اجرا شوند.
طراحی تابعی:
روشی برای طراحی نرم افزار است که در آن طراحی
به مجموعه ای از واحدهای متاثر به هم تجزیه می
شود که هر کدام وظیفه خاصی دارند.
استراتژی طراحی تابعی بر تجزیه سیستم به مجموعه
ای از توابع متاثر به هم تکیه دارد که حالت
متمرکز سیستم بین توابع مشترک است.
*
حافظه مشترک
F1
F1
F1
F1
F1
دید تابعی به طراحی
فصل دوم
زبان برنامه نویسی
اصول کامپیوتر
C
ویژگیهای زبان :c
در دسترس است.
ساخت یافته سطح باال و انعطاف پذیر است.
پیمانه ای است.
اصول کامپیوتر
انواع کاراکتر در:c
حروف بزرگ و کوچک
ارقام دهدهی
جای خالی
کاراکترهای مخصوص
کاراکترهای فرمت دادن
اصول کامپیوتر
حروف:زبان cبرخالف( پاسکال بین حر(وف بزرگ و کوچک فرق
می گذارد.
ارقام دهدهی:شامل ۰تا ٩
اصول کامپیوتر
کاراکترهای مخصوص:&,.;:^%$#@!+-=/
][}{><)(?*\
اصول کامپیوتر
کاراکترهای فرمت دادن:
کاراکتر Horizontal Tabیا کاراکتر Vertical Tabیا \v -کاراکتر خط جدید یا \n
اصول کامپیوتر
\t
کاراکتر برگشت به عقب یا کاراکتر تغذیه فرم یا \f کاراکتر ابتدای سطر یا \r -کاراکتر تهی یا \o
اصول کامپیوتر
\b
:شناسه
یک شناسه Cدنباله ای از حروف ارقام یا عالمت زیر
خط که با هر ترتیبی میتوانند قرار گیرند اما اولین
کاراکتر باید یک حرف باشد.
اصول کامپیوتر
متغیر:
متغیرها در زبان cشناسه هایی هستند که در میان یک
بخش از برنامه برای نسبت دادن نوع تعیین شده ای
از اطالعات مورد استفاده قرار می گیرند.
اصول کامپیوتر
بعضی از شناسه های زبان cکلمات رزرو شده هستند
یعنی مفهوم آن از قبل در زبان تعریف شده و نمی
توانند بعنوان شناسه تعریف شوند.
اصول کامپیوتر
:متداولترین کلمات کلیدی
main
int
do
double
float
char
else
goto
for
while defaul signed return register enum
t
static continue short
case
break
void
long
if
switc
h
auto
struct
typede exter
f
n
اصول کامپیوتر
const
sizeo
f
unsigne union
d
:ساختار برنامه
تابع اصلی
شروع تابع اصلی
تعریف متغیرها
دستورات برنامه
پایان تابع اصلی
) (Main
{
;variables declaration
;program statements
}
اصول کامپیوتر
دستورالعملهای اجرایی:
در هر برنامه دستورالعملهای اجرایی باید بعد از
تعریف متغیرها درج شوند .دستوری قابلیت اجرا
دارد که در پایان آن (;) نوشته شود.
اصول کامپیوتر
را۳ و عرض۵ برنامه ای که مساحت مستطیلی به طول
:محاسبه و چاپ کند
#include<stdio.h>
Main()
{
int length , width , S ;
length = 5;
width = 3;
S = length*width;
printf (“area = %d”, S);
}
اصول کامپیوتر
عبارت:
مجموعه ای معنی دار از داده ها است که با استفاده از
نشانه ها یا عملگرهای محاسباتی ،قیاسی و منطقی با
یکدیگر ترکیب شده اند.
اصول کامپیوتر
:انواع عبارت
عبارت محاسباتی
عبارت قیاسی
عبارت منطقی
اصول کامپیوتر
دستور:
دستور حکمی است که سبب می شود کامپیوتر عملی
انجام دهد و به دو گروه تقسیم می شود:
دستورهای ساده
دستورهای ساخت یافته
اصول کامپیوتر
دستورهای ساده:
دستور انتساب
خواندن و نوشتن
فراخوانی یک تابع
انتقال کنترل به نقطه ای از برنامه
اصول کامپیوتر
دستورهای ساخت یافته:
دستور مرکب
{
;)scanf(“%d%d”,&a,&b
;s=a*b
;)p=2*(a+b
)printf(“%d%d”,s,p
}
اصول کامپیوتر
دستور حلقه تکرار
دستور شرطی
)for(i=0;i<10;i++
;sum=sum+i
)if(a>b
;c=a+b
else
;c=a-b
اصول کامپیوتر
عملگرها:
نشانه هایی هستند که در عبارتها بکار می روند و به
کمک آنها می توان اعمالی را روی داده ها انجام داد
و عبارتند از:
عملگرهای محاسباتی
عملگرهای انتساب
اصول کامپیوتر
عملگرهای رابطه ای
عملگرهای منطقی
عملگرهای حافظه
عملگرهای یکانی
عملگر شرطی
عملگر کاما
اصول کامپیوتر
عملگرهای محاسباتی:
نام عملگر
جمع
تفریق
منهای یکانی
جمع یکانی
ضرب
تقسیم
باقیمانده تقسیم
یک واحد افزایش
یک واحد کاهش
نشانه
+
+
*
/
%
++
-اصول کامپیوتر
فرم
a+b
a-b
-a
+a
a*b
a/b
a%b
a++,++a
a--,--a
قواعد اولويت عملگرها و پرانتزها
w=x*y+w
تقدم عملگرهاي محاسباتي:
()
-- ++
(يکاني) -
* % /
- +
اصول کامپیوتر
عملگرهای محاسباتی انتساب:
عملگر
نام عملگر
دستورانتساب
معادل
=+
انتساب جمع
;a+=b
=-
انتساب تفریق
;a-=b
a=a=b
;
;a=a-b
=*
انتساب ضرب
;a*=b
;a=a*b
=/
انتساب تقسیم
;a/=b
;a=a/b
=%
انتساب
باقیمانده تقسیم
;a%=b
a=a
;%b
اصول کامپیوتر
عملگر(های رابطه ای:
نام عملگر
نشانه
فرم
بزرگتر از
>
a>b
کوچکتر از
<
a<b
مساوی یا بزرگتراز
=>
a>=b
مساوی یا کوچکتر از
<=
a<=b
مساوی
==
a==b
مخالف
=!
a!=b
اصول کامپیوتر
فصل سوم
انواع داده ها
اصول کامپیوتر
:انواع داده
نوع صحیح
نوع اعشاری
نوع کاراکتر
• مقادیر ثابت
• مقادیر متغیر
اصول کامپیوتر
انواع دادههاي اصلي
int
float
double
char
void
!!? boolean
اصول کامپیوتر
int
اعداد صحيح با دامنه محدود
برای کامپيوترهای شخصی دو بايت
-32767
+2762
اصول کامپیوتر
float
اعداد حقيقی با دامنة %محدود
نمايش معمولی
نمايش علمی
12.3E- 4 = 12.00003
اصول کامپیوتر
double
اعداد حقيقي با دقتي بيشتر از float
اصول کامپیوتر
Char
کاراکترها نمادها يا حروف
‘’a
‘’A
‘’+
‘~ ’
بسته به محل استفاده عدد يا کاراکتر است.
اصول کامپیوتر
void
دادة تهي
داراي کاربردهاي مختلف
مثال :توابع فاقد خروجي
اصول کامپیوتر
انواع دادهاي ديگر
با ترکيب کلمات زير با برخي از انواع دادههاي اصلي:
?ت
?ت ب??دو?نع?الم )
( signed ، unsignedب??ا ع?الم ،
long ، short
مانند:
unsigned int
long int
unsinged long int
اصول کامپیوتر
متغيرها
قوانين نامگذاري متغيرها:
حروف ‘ ’aتا ‘ ’z’ ، ‘Aتا ‘ ، ’Zارقام و ‘_’
اولين کاراکتر رقم نباشد.
کلمات کليدي نميتوانند نام متغير باشند.
اصول کامپیوتر
اسامي مجاز:
متغيرها
count
c124
avg_grade
اسامي غيرمجاز:
1test
bin#tree
for
اصول کامپیوتر
تعريف متغير
; نام متغير
نوع داده
int x
float m, n
char ch1, ch2, ch3
long int count
اصول کامپیوتر
;
;
;
;
مقدار دهي اوليه به متغيرها
; int x = 5, y
; char ch1 = ‘a’, ch2 = ‘A’, ch
اصول کامپیوتر
ثابتها
تعريف ثابت:
مقدار ثابت
نام ثابتdefine#
يا
مقدار = نام ثابت
نوع داده const
اصول کامپیوتر
define M
define P
مثال
100#
3.14#
; const int
n = 100
; ’const char c = ‘a
اصول کامپیوتر
دستورات متداول پیش پردازنده:
دستور include#
دستور define#
اصول کامپیوتر
define M
define P
100#
3.14#
; const int
n = 100
; ’const char c = ‘a
اصول کامپیوتر
مثال
فصل چهارم
توابع ورودی و
خروجی
اصول کامپیوتر
:توابع متداول ورودی و خروجی
scanf, printf
getchar, putchar
gets, puts
اصول کامپیوتر
تابع خروجي printf
printf (“ 2
, ”1ع?بار?ت
) ع?بار?ت
عبارت : 2اطالعاتي که بايد به خروجي منتقل شوند.
(اختياري اس?ت)
اصول کامپیوتر
printf (“ 2
, ”1ع?بار?ت
) ع?بار?ت
عبارت 1ميتواند شامل:
اطالعاتي که بايد عينا در خروجي چاپ شوند
کاراکترهاي تعيين کنندة فرمت خروجي
کاراکترهاي کنترلي
اصول کامپیوتر
کاراکترهاي تعيين کنندة فرمت خروجي
• مشخص کنندة نوع اطالعات ذکر شده در عبارت 2
• با عالمت ?%شروع ميشوند .مانند:
( c%براي کاراکتر)
( d%براي عدد صحيح)
( f%براي عدد اعشاري)
اصول کامپیوتر
کاراکترهاي کنترلي
تعيين شکل اطالعات خروجي
با عالمت \? شروع ميشوند .مانند:
\ nانتقال به سطر جديد
\ fانتقال به صفحة جديد
اصول کامپیوتر
مثال
printf (“this is a test.”);
خروجي
this is a test.
اصول کامپیوتر
; int i =10
مثال
; ’char ch = ‘a
;printf (“%d , %c” , i , ch)
خروجي
a , 10
اصول کامپیوتر
تابع ورودي scanf
scanf (“ 2
, ”1ع?بار?ت
) ع?بار?ت
عبارت : 2آدرس متغيرهايي که بايد خوانده شوند
عبارت : 1نوع متغيرها و نحوة خوانده شدن آنها
اصول کامپیوتر
عبارت 1شامل:
.1
کاراکترهاي فرمت .مشخصکنندة نوع اطالعات.
مانند:
( c%کاراکتر)
( d%عدد صحيح)
اصول کامپیوتر
.2
کاراکتر فضاي خالي
.3
کاراکترهاي ديگر
تاثير :در نظر نگرفتن (رد کردن) فضاي خالي در
اطالعات ورودي
تاثير :خواندن و صرفنظر کردن از کاراکتر فوق
اصول کامپیوتر
مثال
int i , j ;
char ch ;
scanf (“%d %d %c” , &i , &j ,
&ch) ;
اصول کامپیوتر
فصل پنجم
ساختارهای کنترلی
و شرطی
اصول کامپیوتر
:دستورات و ساختارهای کنترلی
این دستورات این امکان را فراهم می کنند که یک
قطعه از برنامه چندین بار تا موقعی که شرط
ویژه ای برقرار است اجرا گردد.
اصول کامپیوتر
:دستور ساختار حلقه تکرار
for
while
do-while
دستور شرطی:
• if
• switch
اصول کامپیوتر
:دستورات کنترلی
goto
continue
break
exit
اصول کامپیوتر
دستور کنترلی while
این دستور برای انجام عملیات تکراری بکار می رود.
با استفاده از آن یک حلقه تا موقعی که شرط معینی
برقرار باشد اجرا می گردد.
اصول کامپیوتر
نموداردستور( while
*
دستورهای قبلی
مجموعه دستورهای
داخل حلقه while
true
While
condition
false
دستورهای بعدی
اصول کامپیوتر
مثال :برنامه ای که اعداد صحیح صفر تا ۱۰را روی خطوط متوالی
چاپ می کند:
>#include<stdio.h
)(main
{
;int number=0
)while(number<=10
;)printf(%d\n”,number++
}
اصول کامپیوتر
int sum = 0 , i = 0 ;
while ( i != -1 )
{
sum = sum + i ;
scanf (“%d” , &i) ;
}
اصول کامپیوتر
:مثال
دستور کنترلی :do while
در دستور whileآزمایش شرط برای ادامه حلقه در
آغاز هر تکرار حلقه انجام می شود اما با این دستور
این آزمایش در پایان حلقه انجام می شود.
اصول کامپیوتر
نمودار دستور do while
*
دستورهای قبلی
do
مجموعه دستورهای
حلقه do-while
true
while
condition
false
دستورهای بعدی
اصول کامپیوتر
مثال( :برنامه ای که اعداد صحیح صفر تا ۱۰را روی خطوط
متوالی چاپ می کند:
>#include<stdio.h
)(main
{
;int number=0
do
;)printf(“%d\n”,number++
;)while(number<=10
}
اصول کامپیوتر
:مثال
do {
sum = sum + n ;
scanf (“%d” , &n) ;
} while (n != -1)
اصول کامپیوتر
دستور کنترلی :for
این دستور شبیه دستور whileبوده و دارای فرم کلی
زیر است:
)for(expression1; expression2; expression3
;statement
اصول کامپیوتر
*
دستورجایگذاری
expression3
نمودار( دستور for
expression1
دستورات داخل
حلقه
true
عبارت منطقی
یا شرطی
expression2
false
دستورات بعد از
حلقهfor
اصول کامپیوتر
را روی خطوط۱۰ برنامه ای که اعدادصحیح صفر تا:مثال
:متوالی چاپ کند
#include<stdio.h>
main()
{
int number;
for ( number=0; number<=10; +
+number)
printf (“%d\n”, number);
}
اصول کامپیوتر
:مثال
for ( i = 0 , sum = 0 ; i < 20 ; i
++ , j -- )
{
sum = sum + i + j ;
printf (“%d” , sum) ;
}
اصول کامپیوتر
for ( i = 10 , j = 0 ;
:مثال
(i > 0) && (j <=20) ;
i -- , j ++)
printf (“%d , “ , i +
j) ;
اصول کامپیوتر
تبديل حلقة whileبه ( forروش ديگر)
ب??دنة ; whileش?رط ح?لقة for ( ; while
; ) ح?لقة
اصول کامپیوتر
دستورهای شرطی ifو :if else
این دستورها موجب می شوند تا در صورت
وجود شرایطی یک مجموعه از دستورها
ودر صورت عدم وجود آن مجموعه دیگری
از دستورها اجرا شوند.
اصول کامپیوتر
نمودار دستور if
دستورهای قبلی
*
اجرای دستور یا
مجموعه دستورها
true
false
دستورهای بعدی
اصول کامپیوتر
نمودار( دستور if else
دستورهای قبلی
*
مجموعه
دستورهای۱
false
true
دستورهای بعدی
اصول کامپیوتر
مجموعه
دستورهای۲
مثال :برنامه ای که متنی را خوانده تعداد محلهای خالی
ارقام ،حروف ،پایان خط و جمع سایر نشانه های
موجود در آن متن را شمرده چاپ کند:
>#include<stdio.h
)(main
{
int c, blank_cnt, digit_cnt,
;letter_cnt, n1_cnt, other_cnt
اصول کامپیوتر
blank_cnt=digit_cnt=letter_cnt=n1_
cnt=other_cnt=0;
while((c=getchar())!=EOF)
if (c==´´)
++blank_cnt;
elfe if(´0´<=c&&c<=´9´)
++digit_cnt;
elfe if(´a´<=c&&c<=´z´|| ´A
´<=c&&c<=´Z´)
++letter_cnt;
اصول کامپیوتر
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);
}
اصول کامپیوتر
:مثال
if (ch == ‘+’)
r=x+y;
else if (ch == ‘-’)
r=x-y;
else if (ch == ‘*’)
r=x*y;
اصول کامپیوتر
دستور شرطی :switch
این ساختار یا دستور موجب می گردد که گروه
مشخصی از دستورها بین چندین گروه از
دستورها انتخاب گردد.
اصول کامپیوتر
نمودار دستور switch
switch
*
)(expression
break
مجموعه
دستورهای ۱
case1
?
break
مجموعه
دستورهای ۲
case2
?
break
مجموعه
دستورهایm
case m
?
مجموعه دستورهای
پیش فرض
اصول کامپیوتر
دستور بعدی
مثال :برنامه زیر متغیر کاراکتری colorرا از صفحه
کلید دریافت کرده و رنگی که با آن حرف آغاز می
شود را در خروجی چاپ می کند:
>#include<stdio.h
) ( main
{
; char color
; ) (color = getchar
اصول کامپیوتر
switch (color)
{
case ´Y´: printf (“Yellow”);
break ;
case ´B´: printf (“Black”);
break ;
case ´W´: printf (“White”);
break ;
اصول کامپیوتر
case ´R´: printf (“Red”);
break ;
case ´G´: printf (“Green”);
break ;
default : printf(“error”);
}
}
اصول کامپیوتر
:مثال
char ch;
switch (ch) {
case ‘+’ :
r=x+y;
break ;
اصول کامپیوتر
case ‘-’ :
r=x-y;
break ;
case ‘*’ :
r=x*y;
break ;
اصول کامپیوتر
case ‘/’ :
r=x/y;
break ;
default :
r=0;
printf (“Invalid
operator.”) ;
}
اصول کامپیوتر
دستور :break
این دستور مسیر معمولی و ثابت کنترل ر(ا تغییر داده و یا
قطع می کند .این دستور برای خارج شدن از یک دستور
switchو یا پایان دادن حلقه ها استفاده می شود.
اصول کامپیوتر
break نمودار( دستور
جمله قبلی
while
condition
*
F
T
if
condition
T
break
next
statement
بقیه دستورهای
while حلقه
اصول کامپیوتر
دستور :continue
این دستور به منظور یک عبور جانبی از کنار سایر
مراحل جاری یک حلقه بکار برده می شود در واقع
باقیمانده تکرار جاری یک حلقه نادیده گرفته شده و
بالفاصله تکرار بعدی حلقه آغاز می شود.
اصول کامپیوتر
continue (نمودار دستور
جمله قبلی
while
condition
*
F
T
continue
T
if
condition
F
بقیه دستورهای
while حلقه
اصول کامپیوتر
next
statement
مثال :برنامه زیر nعدد از ورودی خوانده و مجموع اعداد
مثبت را محاسبه می کند:
>#include<stdio.h
) ( main
{
; int n,i,x,sum= 0
;)”?printf(“how many numbers
;)scanf(“%d”,&n
اصول کامپیوتر
for (i=1 ; i<n ; ++ i)
{
scanf(“%%d”,&x);
if(x<=0)
continue ;
sum +=x ;
}
printf(“\n sum = %d\n”,sum);
}
اصول کامپیوتر
دستور :goto
این دستور ترتیب طبیعی برنامه را تغییر داده و کنترل
را به قسمت دیگری از برنامه منتقل می کند و در
واقع یک انتقال کنترل بدون شرط است.
اصول کامپیوتر
مثال :برنامه زیر عددی صحیح را از ورودی خوانده در
صورتی که زوج باشد پیغام مناسب نمایش می دهد در غیر(
این صورت از برنامه خارج می شود:
>#include<stdio.h
) ( main
{
; int n
; )scanf(“%d”,&n
اصول کامپیوتر
if(n%2 == 0)
goto even ;
else
goto odd;
even : printf(“even number.\
n”) ;
exit(1) ;
odd : exit (0);
}
اصول کامپیوتر
دستور :exit
این دستور یک تابع است و اجرای برنامه را بطور
کامل قطع کرده و موجب خاتمه پذیرفتن کل برنامه
می گردد.
اصول کامپیوتر
کاربرد متداول آن زمانی است که یک شرط خاص
برای اجرای برنامه برقرار نباشد و اجرای برنامه
قطع شود.
{
....
if x<2
;)exit (0
}
اصول کامپیوتر
نکات:
بخش defaultاختياري است.
مقادير موجود در caseها نبايد مساوي باشند.
اصول کامپیوتر
در switchفقط تساوي را ميتوان چک کرد.
در صورت عدم استفاده از breakدستورات
caseبعدي و تا آخر اجرا خواهد شد.
اصول کامپیوتر
فصل ششم
برنامه سازی
پیمانه ای
اصول کامپیوتر
در زبان cزیربرنامه تابع نامیده میشود .تابع یک قطعه
برنامه کامل است که کار معینی را انجام میدهد و
موجب جلوگیری از برنامه نویسی تکراری در بین
برنامه ها میشود.
اصول کامپیوتر
توابع به دو گروه دسته بندی میشوند:
-۱توابع کتابخانه ای :توابعی که از پیش تعریف شده
اند.
-۲توابع فرعی :توابعی که توسط برنامه نویس تعریف
میشوند.
اصول کامپیوتر
مزایای طراحی به صورت پیمانه ای:
ساده شدن کنترل و خطا یابی امکان انجام تغییرات در برنامه و اصالح آن امکان استفاده مجدد از تابع امکان همکاری برنامه نویسان متعدد در نوشتن یکبرنامه
اصول کامپیوتر
هر تابع شامل عناصر زیر است:
-
عنوان تابع :نام و نوع و آرگومانهای تابع
بدنه تابع:
اعالن متغیرهای محلی :متغیری کهمخصوص خود تابع باشد.
سایر دستورهای تابع :شامل متن تابعو دستورهای اجرایی.
اصول کامپیوتر
عناصر یک تابع:
(اسامی پارامترها) <نام تابع> <نوع تابع>
تعریف پارامترها
}
بدنه تابع
{
اصول کامپیوتر
دستور:return
برای خروج از تابع استفاده میشود .اگر نیاز باشد تابع
مقداری را برگرداند دستور returnدارای
آرگومان خواهد بود در غیر اینصورت نقش آن فقط
خروج از تابع خواهد بود.
اصول کامپیوتر
مثال :تابع زیر ماکزیمم دو عدد صحیح را بدست آورده
در خروجی چاپ می کند:
)Maximum(int x , int y
; { int z
; z = (x>=y)?x:y
; )printf(“%d” ,z
return:
}
اصول کامپیوتر
فراخوانی تابع:
در زبان cفراخوانی یک تابع با نوشتن نام تابع و
پارامترهای آن به صورت یک تک دستور و یا در
یک دستور جایگذاری انجام می شود.
اصول کامپیوتر
:n محاسبه فاکتوریل عدد صحیح
#include<stdio.h>
Main()
{
int n;
scanf(“%d”,&n);
printf(“n=%d fact(n)=%d”, n,
fact(n) );
}
اصول کامپیوتر
int fact(int n)
{
int f = 1 , i ;
for(I =2 ; i<=n;++i)
f=f * i;
return(f);
}
اصول کامپیوتر
توابع به دو صورت از نظر نحوه انتقال آرگومانها
فراخوانی میشوند:
-۱فراخوانی با مقدار یا فراخوانی توسط ارزش
-۲فراخوانی توسط آدرس یا فراخوانی توسط ارجاع
اصول کامپیوتر
فراخوانی با مقدار:در این روش خود متغیرها به تابع فراخوانده شده انتقال
نمی یابند بلکه مقدار آن انتقال می یابد و هر تغییری
که توسط تابع فرعی روی آن مقدار انجام شود در
تابع فراخواننده آن منعکس نمیشود.
اصول کامپیوتر
:مثال
#include<stdio.h>
Main()
{
int n;
long int factorial;
printf(“n=“);
scanf(“%d”,&n);
factorial=fact(n);
printf(“\n fact(n)=%d”,factorial);
}
اصول کامپیوتر
int fact (int n)
{
long int f=1;
while(n>1)
f*=n--;
return(f);
}
اصول کامپیوتر
فراخوانی توسط ارجاع:در این روش آدرس آرگومان به درون تابع فراخوانده
شده کپی میشود و انجام هرگونه تغییرات بر آنها بر
آرگومانهای متناظر آن در تابع فراخواننده نیز همان اثر
را خواهد داشت.
اصول کامپیوتر
:انتقال آرایه به تابع
سه روش برای تعریف پارامتری که اشاره گر آرایه را
دریافت می کند وجود دارد:
-
روش اول :پارامتر مورد نظر به صورت آرایه
تعریف می گردد.
اصول کامپیوتر
#include<stdio.h>
void display(int num[10]);
main()
{
int a[10] , i;
for(i=0 ; i<10 ; ++i)
a[i]=i;
display(a);
}
void noor(num)
{ int i;
for (i=0 ; i<10 ; ++i)
printf (“\n%d”, num[i]);
}
اصول کامپیوتر
-
روش دوم :آنرا بصورت آرایه ای معرفی می کنیم که اندازه
آن مشخص نشده باشد.
)void noor (num
;][int num
{
)for (i=0 ; i<10 ; ++i
;)]printf(“\n%d” , num[i
}
اصول کامپیوتر
-
روش سوم :آنرا بعنوان یک اشاره گر intتعریف
کنیم.
)void noor (num
;int *num
{
; int i
)for (i=0 ; i<10 ; ++i
;)]printf(“%d” , num[i
}
اصول کامپیوتر
تابع بازگ(شتی:
بازگشتی بودن فرآیندی است که در آن یک تابع بطور
مکرر خودش را فراخوانی می کند تا آنکه به شرط
خاصی برسد.
اصول کامپیوتر
یک تابع را بازگشتی نامند اگر بصورت مستقیم یاغیرمستقیم تابع خود را فراخوانی کند.
مثال :تابع زیر مجموع اعداد طبیعی 1تا nرا محاسبه می کند
)int sum(int n
{
)if(n<=1
;)return(n
else
;))return (n+sum(n-1
}
اصول کامپیوتر
استفاده از چند تابع:
در زبان cمی توان در هر برنامه به هر تعداد که نیاز
باشد تابع تعریف کرد و هر تابع می تواند تابع
دیگری را فراخوانی کند.
f1
f3
f2
اصول کامپیوتر
قلمرو متغیرها:
متغیرها برحسب اینکه در چه قسمتی از برنامه شناخته
شده اند به دو دسته تقسیم میشوند:
-۱متغیرهای محلی
-۲متغیرهای عمومی
اصول کامپیوتر
متغیرهای محلی یا خصوصی:
-
-
اینگونه متغیرها فقط درون همان تابع شناخته شده
اند.
فقط در موقعی که اجرای برنامه وارد بلوک آنها
میشود وجود دارند و بعد از آن از بین می روند.
اصول کامپیوتر
)(func1
{
int x;
scanf(“%d”,&x);
if(x<=1)
{
char str[20];
printf(“Enter City: “);
gets(str);
puts(str);
}
}
اصول کامپیوتر
متغیرهای عمومی یا سراسری:
-
-
در تمام طول برنامه شناخته شده اند و می توانند
بوسیله هر قسمت از برنامه بکار روند.
در تمامی وقت اجرای برنامه مقادیر خود را حفظ
می کنند.
اصول کامپیوتر
کالسهای حافظه:
سطح ذخیره سازی اطالعات و یا کالس حافظه قلمرو
متغیر و نیز زمان حیات آنرا در یک برنامه مشخص
می کند.
اصول کامپیوتر
در زبان cچهار کالس حافظه وجود دارد:
-
اتوماتیک ()automatic
-
استاتیک ()static
-
ثبات ()register
-
خارجی ()external
اصول کامپیوتر
کالس حافظه اتوماتیک:
این متغیرها همیشه در درون یک تابع توصیف می
شوند و نسبت به آن تابع متغیر محلی هستند .بنابراین
متغیرهایی که در توابع گوناگون از این نوع حافظه
تعریف می شوند از یکدیگر مستقل خواهند بود حتی
اگر اسامی یکسان داشته باشند.
اصول کامپیوتر
متغیرهای اتوماتیک با خروج از تابع مقادیر خود را از
دست می دهند پس باید هنگام ورود مجدد به برنامه
دوباره مقدار دهی شوند.
اصول کامپیوتر
کالس حافظه خارجی:
اگر متغیرهایی را در واحد اصلی تعریف کنیم و
بخواهیم از آنها در واحد فرعی استفاده کنیم باید آنها
را در این واحدها با کلمه کلیدی externمعرفی
کنیم.
اصول کامپیوتر
File1
int x , y;
char ch;
main( )
{ ....
….
}
func1( )
{
x =123;
}
File2
extern int x ,y;
extern char ch;
func2( )
{
x= y /10 ;
}
func3( )
{
y =10 ;
}
اصول کامپیوتر
چون متغیرهای خارجی بصورت عمومی تعریف
میشوند قلمرو آنها از محل تعریفشان تا انتهای برنامه
می باشد و در بقیه برنامه و همه توابع بعد از آن
شناخته شده اند.
اصول کامپیوتر
کالس حافظه استاتیک:
در یک برنامه تک فایل هر کدام از متغیرهای استاتیک
در همان فایلی که مربوط به آن هستند تعریف می
گردد.
اصول کامپیوتر
متغیرهای استاتیک نسبت به تابع خود محلی هستند اما
برخالف متغیرهای اتوماتیک در تمام طول برنامه
مقدار قبلی خود را حفظ می کنند.
اصول کامپیوتر
;float a,b,c
) ( main
{
; static float a
; void dummy(void)
}
; void site (void)
{
; satatic int a
; int b
}
اصول کامپیوتر
می توان متغیرهای اتوماتیک و ایستا را همنام با
متغیرهای خارجی تعریف کرد در این موارد هرگونه
تغییر روی این متغیرها هیچ نقشی در مورد
متغیرهای عمومی همنام با آنها نخواهد داشت.
اصول کامپیوتر
هنگام توصیف متغیرهای محلی استاتیک می توان آنها
را مقداردهی اولیه کرد اما این مقدار باید بشکل
ثابتها بیان گردد نه عبارات.
اصول کامپیوتر
کالس حافظه ثبات:
این نوع کالس حافظه فقط در مورد متغیرهایی از نوع
intو charقابل اعمال است.
استفاده از این کالس حافظه سرعت هرنوع عملیات
روی این متغیرها را افزایش می دهد.
اصول کامپیوتر
int noor( m,n )
; int m
; register int n
{
; register int k
; k =1
for (; n>0 ; n--)
;k=k+m
; return k
}
اصول کامپیوتر
ماکرو:
یک ماکرو شناسه ای است که معادل با یک عبارت
یک دستور و یا گروهی از دستورات تعریف شده
باشد.
در صورتی که ماکرو شامل گروهی از دستورات باشد
مشابه تابع عمل می کند.
اصول کامپیوتر
>include<stdio.h#
define area length*width#
) (main
{
; int length , width
; scanf(“%d%d” , length,width)
; printf(“area = %d” , area)
}
اصول کامپیوتر
-
تعریف ماکروها در ابتدای برنامه و پیش از تعریف
اولین تابع است.
-
حوزه تعریف ماکرو از محل تعریف شدن تا انتهای
آن فایل است.
-
ماکرویی که در یک فایل تعریف شده در فایل
دیگری قابل شناسایی نیست.
اصول کامپیوتر
یک ماکرو برخالف یک تابع:
سرعت اجرای برنامه را افزایش و در عوض اندازه -
برنامه اجرایی را بزرگ می کنند- .
شناسه یک ماکرو آدرس پذیر نیست- .
یک ماکرو نمی تواند بصورت بازگشتی خود را -
.فراخوانی کند
اصول کامپیوتر
فصل هفتم
آرایه
اصول کامپیوتر
آرایه:
مجموعه عناصری است دارای ویژگیها و صفاتیکسان هستند.
یک فضای پیوسته ازحافظه اصلی کامپیوتر که میتواند چندین مقدار را در خود جای دهد.
اصول کامپیوتر
تعریف آرایه:
در زبان cآرایه ها بصورت متغیرهای معمولی
تعریف می شوند با این تفاوت که نام آرایه باید با
یک مشخصه اندازه همراه باشد:
;]type array-name[array-size
اصول کامپیوتر
-
-
آرایه ها از نظر نوع اختصاص حافظه فقط نمی
توانند به صورت registerتعریف شوند.
برای آرایه هایی که بیرون از تابع تعریف می شوند
سطح ذخیره سازی خارجی بعنوان پیش فرض در
نظر گرفته می شود.
اصول کامپیوتر
-
آرایه ها از نوع کالس اتوماتیک برخالف متغیرهای
اتوماتیک نمی توانند هنگام تعریف آنها مقدار اولیه
بپذیرند.
-
هرگاه نام آرایه بعنوان آرگومان یک تابع ظاهر شود
بعنوان آدرس اولین عنصر آرایه تعبیر می گردد.
اصول کامپیوتر
رشته ها:
در زبان cرشته ها بعنوان آرایه ای از کاراکترها
تعریف میشوند بطوریکه هر کاراکتر رشته درون
یک عنصر از آرایه ذخیره می گردد.
اصول کامپیوتر
-
یک ثابت رشته ای آرایه ای را معرفی می کند که
اندیس پایین آن صفر و اندیس باالی آن تعداد
کاراکترهایی است که در رشته وجود دارد.
-
هر رشته به کاراکتر nullکه پایان رشته را نشان
می دهد خاتمه می یابد.
اصول کامپیوتر
مثال :برنامه زیر ۱۵رشته را می خواند و آنها را در سطرهای متوالی
چاپ می کند:
># include<stdio.h
) ( main
{
; ]char name[12
اصول کامپیوتر
int i ;
for (i=1 , i < = 15 ; ++i)
{
scanf(“%s”, name);
printf(“\n%s” , name) ;
}
}
اصول کامپیوتر
مرتب سازی:
چنانچه مجموعه ای از داده ها یا اطالعات بر اساس
یک ویژگی یا نظم خاص سازمان دهی شوند این
عمل را مرتب سازی گویند.
این عمل به منظور سرعت بخشیدن به عمل جستجو
می باشد.
اصول کامپیوتر
جستجو:
-
-
هرگاه داخل مجموعه ای از عناصر دنبال عنصر
خاصی بگردیم این عمل را جستجو نامند.
جستجو در زمبنه هایی چون بانکهای اطالعاتی
کاربرد زیادی دارد.
اصول کامپیوتر
برخی روشهای مرتب سازی و جستجو:
-
مرتب سازی حبابی
مرتب سازی انتخابی
جستجو به روش خطی -جستجو به روش دودویی
اصول کامپیوتر
مرتب سازی حبابی:
این روش از نظر منطق ساده ترین و از نظر کارایی پایین
ترین روش مرتب سازی اطالعات است.
)void BubbleSort (int A[ ] , int n
{
;int i , j , temp
)for (i=1 ; i<n ; ++i
)for (j=0 ; j<n-I ; ++j
اصول کامپیوتر
If (A[j] > A[j+1])
{
temp = A[j];
A[j] = a[j+1];
A[j+1] = temp;
}
}
اصول کامپیوتر
مرتب سازی انتخابی:
بر(تری این ر(وش نسبت به روش حبابی آن است که تعداد
تعویض عناصر( کمتر( شده و سرعت بیشتر می شود.
)void SelectionSort (int a[ ] , int n
{
; int i , max , temp
)for (i=1 ; i<n ; + + i
{
اصول کامپیوتر
; 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
} } }
اصول کامپیوتر
جستجو به روش خطی:
این روش ساده ترین راه برای جستجو در یک آرایه یا
جدول نامرتب است .برای اینکار عنصر مورد
جستجو را بطور متوالی با عناصر جدول مقایسه می
کنیم.
اصول کامپیوتر
: جستجو می کندA عنصریn را در آرایهx تابع زیر عنصر:مثال
int LinearSearch (int A[ ] , int n ,
int x)
{
; int i
for (i = 0 ; i<n ; + + i)
if (x = = A[i] )
; return (i+1)
; return (0)
}
اصول کامپیوتر
جستجو به روش دودویی:
این روش در صورتی امکان پذیر است که عناصر
جدول مورد نظر مرتب شده باشند در این صورت از
روش خطی سریعتر می باشد.
اصول کامپیوتر
مثال :تابع زیر در یک آرایه مرتب شده nعنصری عنصر xرا جستجو
می کند:
int BinarySearch (int A[ ] , int n ,
)int x
{
; int middle , L , H
;L=0
; H = n-1
)while ( L <= H
{
; middle = (L+H)/2
اصول کامپیوتر
if (x = = A[middle] )
return (middle +1) ;
if ( x >A[middle] )
L= middle =1 ;
else
H = middle -1 ;
}
return(0)
}
اصول کامپیوتر
توابع کتابخانه ای رشته ها:
نام تابع
عمل تابع
رشته s2را روی رشته s1کپی می کندstrcpy(s1,s2 .
)
رشته s2را به دنبال رشته s1ملحق می )strcat(s1,s2
کند.
طول رشته sر(ا بر(می گرداند.
رشته s1را با رشته s2مقایسه می کند.
اصول کامپیوتر
)strlen(s
strcmp(s1,s
)2
مثال :برنامه ای که دو رشته را از ورودی خوانده و
آن دو را با هم مقایسه می کند:
>include<string.h #
>include<stdio.h #
) ( main
{
]; char s1[80] , s2[80] , s3[80
); gets (s1
); gets (s2
اصول کامپیوتر
printf (“\n Lengths : %d%d\
n” ,strlen (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) ;
}
اصول کامپیوتر
فصل هشتم
اشاره گر
اصول کامپیوتر
-
-
اشاره گر متغیری است که آدرس متغیر دیگری را
در خود نگه می دارد یعنی به آدرس متغیر دیگری
اشاره می کند.
اشاره گر روش غیرمستقیم دسترسی به داده ها است.
اصول کامپیوتر
موارد استفاده از اشاره گرها:
-
انتقال آدرس متغیرها به تابع فرعی
برگرداندن چندین مقدار از تابع فرعی
دستیابی به عناصر( آر(ایه ها
تشکیل ساختارهای پیچیده
تخصیص حافظه به صور(ت پویا
اصول کامپیوتر
در بحث اشاره گرها عملگر * به دو مفهوم بکار می
رود:
در معرفی متغیرها به عنوان عملگر اشاره گر برای دستیابی به مقدار متغیری که آدرس آن در یکمتغیر اشاره گر قرار دارد.
اصول کامپیوتر
مقداردهی اولیه اشاره گرها:
به هر نوع متغیر از نوع اشاره گر می توان هنگام
اعالن آن مقدار اولیه نسبت داد در اینصورت مقدار
اولیه مورد نظر باید یک آدرس یا nullباشد.
اصول کامپیوتر
نحوة تعريف متغير اشارهگر
نام متغير اشارهگر *?
نوع دادهاي که به آن اشاره ميکند
;*p
اصول کامپیوتر
int
; * pc
char
; * fp
float
عملگرهاي اشارهگر
& :آدرس عملوند خود را مشخص ميکند.
عملوند آن نام يک متغير است.
&i
* :محتواي عملوند خود را مشخص ميکند.
عملوند آن نام يک متغير اشارهگر است.
اصول کامپیوتر
*p
مثال
; int i = 100
; int * pi
pi
i
100
200
2
اصول کامپیوتر
; pi = & i
i
pi
100
20
02
200
2
i
45
0
200
2
pi
20
02
اصول کامپیوتر
; * pi = 450
اشاره گر تهی:
زبان cمفهوم اشاره گر nullرا پشتیبانی می کند وآن اشاره گری است که به هیچ مقدار معتبر اشاره
نمی کند.
هر اشاره گری که مقدار صحیح صفر به آن نسبتداده شده باشد.
اصول کامپیوتر
int * p1 , * p2 , i ;
p1 = p2 ;
p1 = p1 + 2 ;
p1 = p1 + i * 2 ;
p1 == p2
p2 <= p1
اصول کامپیوتر
مثال
مثال :در برنامه زیر حلقه whileتا موقعی که pیک
اشاره گر NULLنباشد عمل تکرار را ادامه می
دهد:
; char *p
….
….
)while (p
{
….
….
}
اصول کامپیوتر
عملیات روی اشاره گرها:
-
عمل انتساب
عمل محاسباتی
مقایسه
-
انتساب :به یک اشاره گر می توان آدرس یک متغیر
یا مقدار صفر نسبت داد.
-
اصول کامپیوتر
void swap (int a , int b)
{
int temp ;
temp = a ;
a=b;
b = temp ;
}
اصول کامپیوتر
روش غلط
روش صحيح
void swap (int *a , int *b)
{
int temp ;
temp = *a ;
*a = *b ;
*b = temp ;
}
اصول کامپیوتر
void main ()
{
int x = 10 , y = 20 ;
swap ( &x , &y ) ;
}
printf (“x = %d , y = %d” , x , y) ;
:خروجي
x = 20 , y = 10
اصول کامپیوتر
-
محاسباتی :می توان یک مقدار صحیح را به اشاره
گر اضافه کرد.
>include<stdio.h#
) ( main
{
; int *px , *py
;}static int A[6] = {1,2,3,4,5,6
اصول کامپیوتر
px = &A[0] ;
py = &A[5] ;
printf(“px=%x py=%x” , px ,
py) ;
printf(“\n py – px =%x” , py –
px) ;
}
اصول کامپیوتر
-
مقایسه :اشاره گرهایی را که به داده های از یک
نوع اشاره دارند می توان با هم مقایسه کرد.
px < py
Px >= py
Px = = py
Px != py
Px = = null
اصول کامپیوتر
:و یا
if (px<py)
printf (“px points to lower
memory than py”);
else
printf (“px points to upper
memory than py”);
اصول کامپیوتر
اشارهگر و آرايه
نام آرايه اشارهگر به اولين عنصر آن است.
; ]int A [5
A+2
A
A[0 A[1] A[2 A[3 A[4
]
]
]
]
اصول کامپیوتر
بنابراين ]A [2
معادل* ()A + 2
; A [2] = 100
; * (A + 2) = 100
اصول کامپیوتر
رشته و اشارهگر
رشته نيز يک آرايه است
و بنابراين
نام رشته اشارهگر به اولين عنصر آن است.
; )scanf (“%s” , s
اصول کامپیوتر
آرايه و رشته بعنوان پارامتر تابع
{ )void f (int *a ; char *s
...
; a [2] = 100
; )”strcpy (s , “Ali
}
اصول کامپیوتر
void main () {
int b [10] ;
char str [20] ;
...
f (b , str) ;
}
اصول کامپیوتر
تابع تخصيص حافظة پويا
ا?ندازة ح?اف?ظة م?ورد ن??ياز( void * malloc
)ب??ه ب??اي?ت
; int *p
p = (int *) malloc ( sizeof
; ) )(int
اصول کامپیوتر
تعريف يک آرايه بصورت پويا
; int *A
* )A = (int *) malloc ( sizeof (int
; ) 100
با دستورات فوق آرايهاي با ظرفيت 100عنصر با نام
Aو? بصورت پويا ايجاد ميشود.
اصول کامپیوتر
تابع آزادسازي حافظة پويا
ا?شار?ه?گ??ريک??ه ق?بالب??ه آ?نح?اف?ظها?خ?تصاصداد?ه?( free
)ش?ده?
; int *A
* )A = (int *) malloc ( sizeof (int
; ) 100
کار با حافظة پويا// ...
); free (A
اصول کامپیوتر
روش غلط
int n ;
float A [n] ;
...
scanf (“%d” , &n) ;
اصول کامپیوتر
روش صحيح
int n ;
float *A ;
...
scanf (“%d” , &n) ;
A = (float *) malloc (sizeof (float) *
n) ;
// ... Aکار با آراية
; free (A)
اصول کامپیوتر
فصل نهم
نوع داده کاربر
اصول کامپیوتر
نوع داده هایی که کاربر با توجه به نیاز خود ایجاد می
کند عبارتند از:
ساختار Typedef اجتماع -شمارشی
اصول کامپیوتر
ساختار:
یک ساختار مجموعه ای از متغیرها است که تحت یک
نام به آنها مراجعه می شود و هر عنصر از آن از
نوع داده متفاوت می باشد
اصول کامپیوتر
struct structure_name
{
type variable1_name;
….
….
type variablem_name;
};
اصول کامپیوتر
:نمونه ای از تعریف ساختار همراه با نمای ظاهری
account
struct account{
int acct-no ;
char acct-type;
char name[80];
float balance ;
}
structure
acct-no
acct-type
name(80)
balance
اصول کامپیوتر
-
به اعضا یک ساختار نمی توان کالس حافظهاختصاص داد.
هنگام تعریف یک ساختار نمی توان به اعضای آن
مقدار اولیه نسبت داد.
اصول کامپیوتر
قطعه بر(نامه زیر نحوه اختصاص مقادیر اولیه به اعضای یک
متغیر ساختار را نشان می دهد:
{ struct data
; int month
; int day
; int year
;}
{ struct account
; int acc-no
اصول کامپیوتر
char acc-type ;
char name[80] ;
float balance ;
struct data lastpayment ;
};
Static struct account customer =
{12746 ,’R’ , “payman noor” , 2986.50 ,
5 , 24 , 75} ;
اصول کامپیوتر
پردازش یک ساختار:
-
-
اعضای یک ساختار معموال مستقل از هم پردازش
می شوند
به هر عضو ساختار با استفاده از عملگر ``.رجوع
می شود.
Variable.member
اصول کامپیوتر
داده تعریف شده توسط کاربر:
در زبان cکاربران می توانند نام جدیدی برای نوع
داده تعریف کنند این کار به کمک کلمه کلیدی
typedefانجام می شود.
;Typedef type name
اصول کامپیوتر
اجتماع:
-
Unionمتغیریا(ستک(((ه( ا(مکانذخیره( ک(((ردنا(نوا(ع مختلفداده( در
مکانمشترک(یاز ح(افظه( را ف(((را(هم( میک(((ند.
{ union tag
;member 1
;member 2
…
…
;member m
;}
اصول کامپیوتر
نوع شمارشی:
یکی از انواع داده اسکالر است و اعضا آن ثابتهایی هستند که
بعنوان شناسه نوشته می شوند.
};enum tag {member1,…,memberm
اصول کامپیوتر
فصل دهم
پشته و صف
اصول کامپیوتر
پشته:
پشته لیست مرتب شده ای است که هم جایگذاری و هم
حذف از یک سمت آن که topنامیده می شود
صورت می گیرد.
اصول کامپیوتر
حذف و جایگذاری عناصر در یک پشته
*
+top
+top
B
A
C
B
A
+top
اصول کامپیوتر
B
A
+top
A
از آنجا که آخرین عنصر وارده به پشته اولین عنصر
حذف شده از آن می باشد پشته را بعنوان یک لیست
LIFOشناسند.
اصول کامپیوتر
برخالف آرایه پشته در طول اجرای برنامه بطور پویا
افزایش می یابد و محدودیتی نیز در تعداد عناصر
پشته وجود ندارد.
اصول کامپیوتر
پشته در زبان cبصورت ساختمانی با دو عضو
تعریف می شود یکی آرایه ای از عناصر پشته
دیگری متغیری که نشان دهنده موقعیت باالی پشته
در آرایه است.
اصول کامپیوتر
صف:
صف یک لیست مرتب شده است که تمام جایگذاریها
در آن از یک سمت و تمام حذفهای آن از سمت دیگر
انجام می گیرد.
اصول کامپیوتر
از آنجا که اولین عنصر وارده به یک صف اولین
عنصری است که خارج می شود صف بعنوان لیست
FIFOدر نظر گرفته می شود.
اصول کامپیوتر
برای نمایش یک صف عالوه بر یک آرایه یک بعدی
به دو متغیر frontو rearجهت نشان دادن ابتدا
و انتهای عناصر صف نیاز داریم.
اصول کامپیوتر
نمایش صف
front
*
C
B
A
صف با سه عنصر
rear
front
C
B
rear
D
حذف عنصر از صف
front
C
اضافه کردن عنصر به صف
B
rear
اصول کامپیوتر
ص(ف اولویت:
صف اولویت ساختمان داده ای است که در آن ترتیب
طبیعی عناصر نتایج اعمال ابتدایی آن را تعیین می
کند و بر دو نوع است:
صعودی نزولیاصول کامپیوتر
-
ص(ف اولویت ص(عودی:
صفی است که درج عناصر در آن به هر صورتی
ممکن است اما در موقع حذف کوچکترین عنصر
حذف خواهد شد.
اصول کامپیوتر
-
صف اولویت نزولی:
همنند صف اولویت صعودی است با این تفاوت که
عمل حذف موجب حذف بزرگترین عنصر صف می
شود.
اصول کامپیوتر
صف حلقوی:
اگر آرایه را حلقوی فرض کنیم اندیس ابتدا همیشه به
یک موقعیت عقب تر از اولین عنصر موجود در
صف و اندیس انتها به انتهای فعلی صف اشاره می
کند.
اصول کامپیوتر
صف های حلقوی تهی و غیر تهی
][3
*
][3
][2
][1
][4
][5
][0
][2
][1
][4
][5
][0
front=0
front=0
rear=3
rear=0
اصول کامپیوتر
فصل یازدهم
ساختار درختی
اصول کامپیوتر
درخت:
بطور کلی درخت مجموعه محدودی از یک یا چند گره
با شرایط زیر است:
-۱دارای گره خاصی به نام ریشه است.
-۲بقیه گره ها به nمجموعه مجزا که هریک
زیردرخت ریشه نام دارند تقسیم شده اند.
اصول کامپیوتر
نمونه ای از یک درخت
Level 1
A
B
E
*
C
F
G
Level 2
D
H
I
Level 3
Level 4
J
اصول کامپیوتر
-
به عنصر حاوی اطالعات گره گفته می شود.
-
تعداد زیردرختهای یک گره درجه آن گره نامیده می
شود.
-
گره هایی که درجه صفر دارند برگ نامیده می
شوند.
اصول کامپیوتر
-
درجه یک درخت حداکثر درجه گره های آن درخت
است.
-
فرزندان یک گره گره های همزاد نام دارند.
-
ارتفاع درخت به بیشترین سطح گره های آن درخت
گفته می شود.
اصول کامپیوتر
درخت دودویی:
اگر هر گره در یک درخت دارای دو انشعاب باشد به
آن درخت درخت دودویی گفته می شود.
یک درخت دودویی یا تهی است یا حاوی مجموعه ای
محدود از گره ها.
اصول کامپیوتر
تفاوت بین یک درخت دودویی و یک درخت عادی:
-
در هیچ درخت عادی صفر گره وجود ندارد.
-
در یک درخت دودویی ترتیب فرزندان دارای اهمیت
است.
اصول کامپیوتر
خواص درختان دودویی:
-۱حداکثر تعداد گره ها در سطح iام یک درخت
دودویی i-1^2است.
-۲حداکثر تعداد گره ها در یک درخت دودویی به
عمق kبرابر k^2است.
اصول کامپیوتر
-۳برای هر درخت دودویی غیر تهی اگر n0تعداد
گره های پایانی و n2تعداد گره های درجه ۲باشد
داریم:
n0=n2+1
اصول کامپیوتر
پیمایش درخت دودویی:
پیمایش درخت یا دستیابی به هر گره درخت فقط برای
یکبار بر سه نوع است:
Inorder PreorderPostorder -
اصول کامپیوتر
:Inorder
حرکت به سمت پایین به طرف چپ تا اخرین گره سپس گره
بازیابی شده و به سمت راست حرکت را ادامه می دهیم.
}void inorder (treepointer ptr
{
)if (ptr
{
اصول کامپیوتر
inorder (ptr->leftchild);
printf (“%d”, ptr->data);
inorder (ptr->rightchild);
}
}
اصول کامپیوتر
:Preorder
ابتدا گره و بعد انشعابات چپ را بازیابی کرده تا رسیدن به
گره تهی ادامه می دهیم سپس به نزدیکترین گره والدی که
دارای یک فر(زند راست باشد مر(اجعه و همین کار( ر(ا ادامه
می دهیم.
اصول کامپیوتر
void preorder (treepointer ptr)
{
if (ptr)
{
printf (“%d”, ptr->data);
preorder (ptr->leftchild);
preorder (ptr->rightchild);
}
}
اصول کامپیوتر
:Postorder
این پیمایش دو فرزند یک گر(ه ر(ا قبل از( بازیابی آن گره
مالقات می کند یعنی فرزندان یک گر(ه قبل از( خود آن گره
بازیابی می گر(دد.
)void postorder (treepointer ptr
{
)if (ptr
{
اصول کامپیوتر
postorder (ptr->leftchild);
postorder (ptr->rightchild);
printf”%d”, ptr->data);
}
}
اصول کامپیوتر
درختان دودویی مساوی:
درختان دودویی را در صورتی مساوی نامیم که
ساختاری نظیر هم داشته و اطالعات موجود در گره
های نظیرشان با هم برابر باشند.
اصول کامپیوتر
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))
}
اصول کامپیوتر
درختان جستجوی دودویی:
یک درخت جستجو یک درخت دودویی است که ممکن
است تهی باشد اگر درخت تهی نباشد دارای این
خصوصیات است:
-۱هر عنصر دارای یک کلید منحصر به فرد است.
اصول کامپیوتر
-۲کلیدهای واقع در زیردرخت غیرتهی چپ باید کمتر
از مقدار کلید واقع در ریشه زیردرخت راست باشد.
-۳زیردرختان چپ و راست نیز خود درختان
جستجوی دودویی می باشند.
اصول کامپیوتر
جستجوی یک درخت دودویی:
treepointer search (treepointer root , int
key)
{
if (!root)
return NULL ;
if (key = = root->data)
اصول کامپیوتر
return root ;
if (key < root->data)
return search (root->leftchild , key) ;
return search (root-> rightchild , key);
}
اصول کامپیوتر
درج عنصر در درخت جستجوی دودویی:
برای درج عنصر باید درخت را جستجو نمود اگر
جستجو ناموفق باشد می توان عنصر را در محلی که
جستجو خاتمه پیدا کرده درج کرد.
اصول کامپیوتر
در(ج عنصر(ی به داخل در(خت دودویی
30
*
5
40
80
30
35
40
2
80
2
جایگذاری ٨۰
جایگذاری ۳۵
اصول کامپیوتر
5
-
درخت انتخابی:
یک درخت دودویی است که هر گره آن کوچکتر از دو
فرزند خود می باشد.
جنگل:اگر ریشه یک درخت را حذف کنیم آنگاه دارای یک
جنگل خواهیم بود.
اصول کامپیوتر
فصل دوازدهم
فایل
اصول کامپیوتر
-
هر فایل شامل مجموعه ای از داده های مرتبط به هم
است.
-
داده های مربوط به هر یک از اجزای فایل یک
رکورد نام دارد.
-
هر رکورد مجموعه ای از چند فیلد است.
اصول کامپیوتر
*
Record 1
Fild 1
Fild 2
Fild 3
Record 2
Fild 1
Fild 2
Fild 3
Record 3
Fild 1
Fild 2
Fild 3
فایل حاوی چند رکورد و فیلد
اصول کامپیوتر
داده ها ممکن است به چهار روش در فایل ذخیره و
بازیابی شوند:
-۱داده ها کاراکتر به کاراکتر در فایل نوشته شده و
سپس کاراکتر به کاراکتر از فایل خوانده شوند.
اصول کامپیوتر
-۲داده ها به صورت رشته ای از کاراکترها در فایل
نوشته و به همان صورت رشته ای از کاراکترها نیز
مورد دستیابی قرار گیرند.
اصول کامپیوتر
-۳داده ها در حین نوشتن بر روی فایل با فرمت
خاصی نوشته و با همان فرمت نیز خوانده شوند.
-۴داده ها به شکل رکورد بر روی فایل نوشته و
بصورت رکورد نیز خوانده شوند.
اصول کامپیوتر
انواع فایل:
داده ها در فایل به دو صورت ذخیره می شوند:
-
text
binary
اصول کامپیوتر
تفاوت این دو در سه مورد است:
تعیین انتهای فایل تعیین انتهای خط -نحوه ذخیره شدن اعداد بر روی دیسک
اصول کامپیوتر
در فایل textاعداد بصورت رشته ای از کاراکترها
ذخیره می شوند ولی در فایل باینری اعداد به همان
صورتی که در حافظه قرار می گیرند روی دیسک
ذخیره می شوند.
اصول کامپیوتر
دو روش از نظر نحوه ذخیره و بازیابی داده ها در فایل
وجود دارد:
سازمان فایل ترتیبی -سازمان فایل تصادفی
اصول کامپیوتر
در سازمان فایل ترتیبی رکوردها به همان ترتیبیکه از ورودی خوانده می شوند در فایل ذخیره و به
همان ترتیب هم مورد دسترسی قرار می گیرند.
اصول کامپیوتر
در سازمان فایل تصادفی به هر رکرد یک شمارهاختصاص می یابد بنابر این می توان به رکورد
دلخواه دسترسی پیدا کرد بدون اینکه رکوردهای قبل
آن خوانده شوند.
اصول کامپیوتر
بازکردن و بستن فایل:
هر قبل از اینکه مورد استفاده قرار گیرد باید باز گردد.
مواردی که در حین باز کردن فایل مشخص می
شوند عبارتند از:
اصول کامپیوتر
نام فایل نوع فایل ازنظر ذخیره اطالعات -نوع فایل ازنظر ورودی-خروجی
اصول کامپیوتر
انواع فایل:
فایل خروجی:فایلی که طوری باز شود که فقط عمل نوشتن اطالعات
بر روی آن مجاز است.
اصول کامپیوتر
فایل ورودی:فایلی که طوری باز شود که فقط عمل خواندن
اطالعات از آن امکان پذیر باشد.
فایل ورودی و خروجی:فایلی که طوری باز شود که عمل خواندن و نوشتن
اطالعات بر آن مجاز باشد.
اصول کامپیوتر
تابع fopenبرای باز کردن فایل مورد استفاده قرار
گرفته و دارای الگوی زیر است:
)FILE *fopen (char *filename, *mode
اصول کامپیوتر
مقادیر معتبر modeدر تابع )(fopen
mode
مفهوم
)r (rt
فایلی از نوع textرا بعنوان ورودی باز می کند.
)w (wt
فایلی از نوع textرا بعنوان خروجی باز می کند.
)a (at
فایل را طوری باز می کند که بتوان اطالعاتی را به انتهای آن اضافه نمود.
rb
فایلی از نوع باینری را بعنوان ورودی باز می کند.
wb
فایلی از نوع باینری را بعنوان خروجی باز می کند.
ab
فایل موجود از نوع باینری را طوری باز می کند که بتوان اطالعاتی را به انتهای
آن ا(ضافه نمود.
اصول کامپیوتر
توابع putcو :getc
برای نوشتن و خواندن یک کاراکتر در فایلی که قبال
باز شده است استفاده می شوند.
)int putc (int ch , FILE*fp
)int getc (FILE*fp
اصول کامپیوتر
توابع putwو :getw
این دو تابع مشابه getcو putcهستند ولی برای
خواندن و نوشتن مقادیر صحیح از یک فایل به فایل
دیگر بکار می روند.
;)putw(50 , fp
اصول کامپیوتر
توابع fputsو :fgets
برای نوشتن رشته ها در فایل از تابع fputsو برای
خواندن رشته ها از فایل از تابع fgetsاستفاده می
گردد.
)int fputs (const char *str , FILE *fp
)char *fgets (char *str , int length , FILE *fp
اصول کامپیوتر
فایلهای ورودی و خروجی:
می توان یک فایل را به عنوان وسیله ورودی و
خروجی مورد استفاده قرار داد برای این منظور در
تابع fopenبجای :mode
- r+tی((ا +rب(((را(یب(((از ک(((ردنف(((ایلtext
اصول کامپیوتر
- w+tی((ا +wب(((را(یا(یجاد ی((کف(((ایلtext
- a+tی((ا +aب(((را(یا(یجاد ی((کف(((ایل textو ی((ا ب(((از
ک(((ردنف(((ایل textموجود
- r+bب(((را(یب(((از ک(((ردنف(((ایلب(((اینریموجود
اصول کامپیوتر
تابع :remove
برای حذف فایلهای غیر ضروری می توان از این تابع
استفاده کرد:
)int remove (char *filename
اصول کامپیوتر
:fscanf وfprintf توابع
هرگاه الزم باشد داده ها با فرمت خاصی در فایل نوشته
:یا از آن خوانده شوند بکار می روند
int fprintf (FILE *fp , “*control_string,…”, char
arg,…)
int fscanf (FILE *fp , “*control_string,…”, char
arg,…)
اصول کامپیوتر
:fread وfwrite توابع
برای ورودی خروجی رکورد و سایر ورودی خروجی
:ها استفاده می شود
int fread (void *buffer, int num_byte, int
count,FILE*fp)
int fwrite (void *buffer, int num_byte, int
count,FILE*fp)
اصول کامپیوتر
struct student stud ;
fread ( &stud ,
sizeof (struct
student) ,
1 , fp ) ;
اصول کامپیوتر
مثال
مثال
; ]int a [20
fread (a , sizeof (int) , 20 ,
; ) fp
دريافت 20عدد از فايل و قرار دادن آن در آرايه
اصول کامپیوتر
:نکته
fprintf (FILE *fp , “ 2
, ”1ع?بار?ت
) ع?بار?ت
fscanf (FILE *fp , “ 2
, ”1ع?بار?ت
) ع?بار?ت
دقيقا همانند printfو scanf
با تفاوت
ذکر اشارهگر فايل در ابتداي آنها
اصول کامپیوتر
FILE *fp1 , *fp2 ;
مثال
fp1 = fopen (“c:\test.txt” , “rt”) ;
fp2 = fopen (“c:\ali.dat” , “wb”) ;
...
fscanf (fp1 , “%d %f %s” , &i , &f ,
str) ;
fprintf (fp2 , “%f, %s” , f , str) ;
اصول کامپیوتر
تابع :fseek
برای خاندن و نوشتن داده ها بصورت تصادفی بکار
می رود:
int fseek( FILE *fp,long int num_bytes,int
);origin
اصول کامپیوتر
دستگاه های ورودی و خروجی استاندارد:
اشاره گر
فایل
stdin
نام دستگاه (فایل)
دستگاه ورودی استاندارد (صفحه کلید)
stdoutدستگاه خروجی استاندارد (صفحه نمایش)
stderr
دستگاه استاندارد جهت ثبت پیامهای خطا (صفحه نمایش)
stdprnدستگاه استاندارد چاپ (چاپگر موازی)
stdauxپورت سری
اصول کامپیوتر
فصل سیزدهم
توابع کتابخانه ای
اصول کامپیوتر
نام تابع
الگو
کاربرد
)void clrscr (void
( clrscrپاک کردن صفحه نمایش
)
)(atoi
)int atoi (const char *s
تبدیل نوع رشته به نوع
integer
)(atof
تبدیل نوع رشته به نوع
ممیز شناور
double atof (const char
)*s
)(atol
تبدیل نوع رشته به نوع
long atol (const char
)*s
long
اصول کامپیوتر
نام تابع
کاربرد
الگو
(sqrt
)
محاسبه جذر عدد
مثبت
محاسبه توانهای یک
مبنا
محاسبه قدر مطلق
اعداد صحیح
محاسبه قدر مطلق
اعداد اعشاری
)double sqrt (double x
(pow
)
)(abs
(fabs
)
double pow (double
)x,double y
)int abs (int x
)double fabs(double x
اصول کامپیوتر
نام تابع
کاربرد
cabsمحاسبه قدرمطلق
)(
اعداد موهومی
)( sin
الگو
double cabs (struct complex
)num
محاسبه سینوس
زاویه
)double sin(double arg
)( cosمحاسبه کسینوس
زاویه
)double cos(double arg
)( tanمحاسبه تانژانت
زاویه
)double tan(double arg
اصول کامپیوتر
نام تابع
نام
تابع
کاربرد
کاربرد
الگو
الگو
)( asin
)(
asin
آرک سینوس
محاسبه آرک
محاسبه
سینوس
یک عدد
یک
عدد
double asin(double
)asin(double arg
)arg
double
)(acos
آرک کسینوس
محاسبه آرک
)( acosمحاسبه
کسینوس
یک عدد
یک
عدد
double acos(double
)acos(double arg
)arg
double
)( atan
)(
تانژژانت
آرک تان
محاسبه آرک
atanمحاسبه
انت
یک عدد
یک
عدد
double atan(double
)atan(double arg
)arg
double
انت نتیجه
تانژژانت
آرک تان
محاسبه آرک
atan2محاسبه
atan2
نتیجه
بر دوم
اول بر
آرگومان اول
تقسیم آرگومان
تقسیم
)(
دوم
)(
اصول کامپیوتر
double atan2(double
atan2(double
double
)y,double x
)x
y,double
نام تابع
کاربرد
الگو
sinh
)(
محاسبه سینوس هیپربولیک
زاویه
double sinh(double
)arg
cosh
)(
محاسبه کسینوس هیپربولیک
عدد
double cosh(double
)arg
tanh
)(
محاسبه تانژانت هیپربولیک
زاویه
double tanh(double
)arg
)( ceil
کوچکترین عدد صحیح
بزرگتر یا مساوی با یک عدد
اصول کامپیوتر
)double ceil(double x
الگو
کاربرد
نام تابع
double log (double x)
لگاریتم طبیعی
یک عدد مثبت
log ()
double log10 (double x)
۱۰ لگاریتم مبنایlog10
()
اعداد مثبت
double exp (double arg)
محاسبه توانی ازexp ()
e
double Idexp (double num,int
exp)
num*2^ex Idexp
()
p
اصول کامپیوتر
نام تابع
کاربرد
الگو
)( floor
بزرگترین مقدار
صحیح کوچکتر یا
مساوی یک عدد
محاسبه باقیمانده
تقسیم
)double floor (double x
modf
)(
عددی را به دو
قسمت صحیح و
اعشاری تقسیم
می کند
محاسبه وتر
fmod
)(
bypot
)(
double fmod (double x,
)double y
)double modf (double x,int*y
double hypot (double x,
)double y
اصول کامپیوتر
نام تابع
کاربرد
الگو
)( poly
ارزیابی
چندجمله ای
double poly (double x,int
)][n,double C
تبدیل به
tolower
حرف کوچک
)(
انگلیسی
تبدیل به
touppe
حرف بزرگ
)(r
انگلیسی
)(isulpha
تشخیص
حرف بودن
کاراکتر
)int tolower (int ch
)int toupper (int ch
)int isalpha (int ch
اصول کامپیوتر
نام تابع
کاربرد
الگو
isdigit
)(
آیا کاراکتر رقم است
)int isdigit (int ch
islower
)(
آیا کاراکتر حرف کوچک
است
)int islower (int ch
ispunct
)(
آیا کاراکتر یکی از
کاراکترهای ویرایشی است
)int ispunct (int ch
isupper
)(
آیا کاراکتر حرف بزرگ
است
)int isupper (int ch
اصول کامپیوتر
الگو
کاربرد
نام تابع
رشته را با کاراکترstrset ()
پر میکند
strset (str , ’x’);
char *strnset(char*str,char ch, signed
count)
کاراکتری را به
تعداد دفعات
مشخص در رشته
کپی میکند
strnset
()
void *memchr(const void*buffer,int ch,
unsigned count)
کاراکتری را در
آرایه جستجو میکند
memchr
()
void *memcpy( void*to,const
void*from, unsigned count)
اصول کامپیوتر
قسمتی از آرایه راmemcpy
()
در آرایه دیگر کپی
میکند
نام تابع
کاربرد
memsetکاراکتری را در
)(
چند عنصر آرایه
کپی میکند
الگو
void *memset( void*buf,int ch, unsigned
)count
strcspn
)(
رشته ای را در
رشته دیگر
جستجو میکند
)int strcspn (const *str1 const *str2
strerror
)(
ارسال پیام خطا
)char *strerror (char *str
)( strlwr
حروف بزرگ(
یک رشته را
کوچک میکند
)char *strlwr (char *str
اصول کامپیوتر
الگو
char * strncat (char *str1,
const char *str2 , unsigned
count)
int strncmp (const *str ,
const char *str , unsigned
count
char *strncpy (char *str1 ,
const char *str2 , unsigned
count)
char *strrchr (const char
*str , int ch)
کاربرد
نام تابع
الحاق قسمتی از رشته را به
انتهای رشته دیگر
)( strncat
مقایسه تعداد مشخصی از
کاراکترهای دو رشته
strncmp
)(
کپی تعداد مشخصی از
کاراکترهای رشته در رشته
دیگر
جستجوی کاراکتری در یک
رشته
)( strncpy
اصول کامپیوتر
)( strrchr
نام تابع
کاربرد
الگو
)( strspn
جستجوی رشته ای در رشته
دیگر و برگشت طول آن
unsigned strspn (const
char *str1 , const char
)*str2
)( strrev
معکوس کردن کاراکترهای یک
رشته
)char *strrev (char *str
struper
)(
کلیه حروف کوچک را بزرگ
میکند
)char *struper (char *str
اصول کامپیوتر
الگو
کاربرد
void free (void *)
آزادسازی حافظه
اخذشده از سیستم
void *calloc (unsigned unm ,
unsigned size)
اخذ حافظه از سیستم
calloc
()
void *malloc (unsigned size)
اخذ حافظه از سیستم
malloc
()
*realloc (void *ptr , unsigned
size)
تغییر میزان حافظه
اختصاص یافته
realloc
()
اصول کامپیوتر
نام تابع
free ()
نام تابع
الگو
کاربرد
clreol
اطالعات خط جاري از محل فعلي
)(
مکاننما تا انتهاي خط جاري از چپ
به راست پاک میشود
)(deline
يک خط حذف می شود
)(void clreol
)(void delline
( inslineيک خط خالي زير خطي که مکان
)
نما روي آن قرار دارد ايجاد میشود
)(void insline
( gotoxyدر محيط متن میتوان مکاننما را در
)
محل ديگری از پنجره فعال قرار داد
void gotoxy(int x ,
)int y
اصول کامپیوتر
کاربرد
الگو
نام تابع
)(moveto
مکاننما را به محلی با مختصات
xو yانتقال( میدهد
void far moveto(int x , int
)y
و )(getx
)(gety
مختصات جاری مکاننما را
روی صفحه گرافيکی
برمیگردانند
)int far getx(void
)int far gety(void
و )(wherex
)(wherey
مختصات جاری مکاننما را
نسبت به پنجره موجود
برمیگرداند
)int wherex(void
)int wherey(void
کپی کردن متن از صفحه نمايش
به بافر
int gettext(int left , int
top , int right , int bottom ,
)void *buffer
)(gettext
اصول کامپیوتر
الگو
کاربرد
نام تابع
int puttext(int left , int top ,
int right , int bottom , void
*buffer)
کپي کردن متن از بافر به
صفحه نمايش
puttext()
int pettext(int left , int top ,
int right , int bottom , int
newleft , newtop)
movetex
t()
void window(int left , int top
, int right , int bottom)
کپي کردن متن از قسمت
صفحه تصوير به قسمت
ديگر
پنجره متن با ابعاد مشخص
شده را فعال میکند
void textcolor(int color)
رنگ متن را مشخص میکند
اصول کامپیوتر
window()
textcolor
()
الگو
کاربرد
نام تابع
void textbackground(int
color)
تعيين رنگ زمينه متن
textbackgrou
nd()
void textmode(int mode)
تغيير حالت صفحه
تصوير
textmode()
void far initgraph(int far
*driver , int far *mode ,
char far *path)
قدهنده حالت
تعيين تطبي
گرافيکی
initgraph()
void far setbkcolor(int
color)
تعيين رنگ زمينه در
حالت گرافيک
setbkcolor()
اصول کامپیوتر
نام تابع
کاربرد
الگو
)(setpalette
تغيير جعبه رنگ
void far setpalette(int
)index , int color
)(closegraph
پايان دادن به حالت تصويری
گرافيکی
)(void far closegraph
restorecrmod
)(e
برنامه را خاتمه و تطبيقدهنده
گرافيکی را به حالت اول
برمیگرداند
)(void far restorecrmode
)(putpixel
رنگ مشخص شده را به محل
تعيين شده با xو yمی نويسد
void far putpixel(int x , int
)y , int color
اصول کامپیوتر
الگو
کاربرد
void far line(int startx , int
starty , int endx , int endy)
خطی از نقطهای به نقطه
ديگر رسم میکند
void far lineto(int x , int y)
نام تابع
line()
خطی از مکان جاری به نقطهlineto(
)
ديگر رسم میکند
void circle(int x , int y , int
radius)
دايرهای با مرکز و شعاع
مشخص رسم میکند
circle(
)
void far ellipse(int x , int y , int
start , int end , int xradius , int
yradius)
وy وx بيضیای به مرکز
وxradius دو شعاع
با رنگ جاریyradius
رسم میکند
ellips(
)
اصول کامپیوتر
الگو
کاربرد
void far drawpoly(int
numpoints , int far *points)
نام تابع
با استفاده از رنگ جاریdrawpoly
()
چندضلعی رسم میکند
void floodfill(int x , int y , int
bordercolor)
برای پر کردن شکلی
بسته با رنگ مشخص
floodfill()
void far setfillstyle(int pattern
, int color)
شيوه پر کردن شکل را
تغيير میدهد
setfillstyl
e()
void far outtext(char *str)
برای نمايش متن در حالتouttext()
گرافيکی
اصول کامپیوتر
نام تابع
کاربرد
الگو
(outtextxy
)
برای نشان دادن متن در حالت
گرافيکی در محل خاصی با
مختصات xو y
برای انتخاب نوع فونت ،اندازه
فونت و نوع نگارش افقی و
عمودی
برای کپی کردن يک ناحيه از
پنجره گرافيک با مختصات
مشخص به بافر
void far outtext(int x ,
)int y , char *str
settextstyl
)(e
(getimage
)
اصول کامپیوتر
void far settextstyle(int
font , int direction , int
)charsize
void far getimage(int
left , int top, int right ,
int bottom , void far
)*buf
الگو
کاربرد
نام تابع
void far getimage(int left , برای نمايش دادن محتوای يکputimage
int top, void far *buf , int
()
بافر از دادههای گرافيکی
op)
void far getimage(int left , اندازه بافر برحسب بايت برایimagesiz
int top, int right , int
e()
ناحيه داده شده
bottom)
void far arc(int x , int y ,
int star, int end , int
radius)
تاstart رسم کمانی از
را در امتداد دايرهend
x فرضی با مختصات مرکز
radius و نيز شعاعy و
اصول کامپیوتر
arc()
نام تابع
)(bar
کاربرد
الگو
ميلهای مستطيل شکل رسم و با
رنگ و الگوی جاری پر میکند
void far bar(int left , int
top , int right , int
)bottom
)( bar3dميلهای مستطيل شکل و سه بعدی به
عمق با اندازه depthپيکسل
رسم و با رنگ و الگوی جاری پر
میکند.
getcolor
رنگ جاری برای رسم را
)(
برمیگرداند
اصول کامپیوتر
void far bar3d(int left ,
int top , int right , int
bottom , int depth , int
)topflag
)int far getcolor(void
پايان
اصول کامپیوتر