ایران سرفراز- نرم افزار وپروژهای دانشجویی


نرم افزار وپروژهای دانشجویی

جلسة دهم فایل - مهمترین توابع ورودی - خروجی فایل در زبان C

- <!-- /* Font Definitions */ @font-face {font-family:Mitra; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:0; mso-generic-font-family:roman; mso-font-format:other; mso-font-pitch:auto; mso-font-signature:3 0 0 0 1 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:""; margin:0cm; margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:"Times New Roman";} @page Section1 {size:612.0pt 792.0pt; margin:72.0pt 90.0pt 72.0pt 90.0pt; mso-header-margin:35.4pt; mso-footer-margin:35.4pt; mso-paper-source:0;} div.Section1 {page:Section1;} /* List Definitions */ @list l0 {mso-list-id:253367993; mso-list-type:hybrid; mso-list-template-ids:-353177782 -2089140046 1663448402 -265375828 69474828 -1704933770 672163314 1959010356 -271783844 -987454040;} @list l0:level1 {mso-level-number-format:bullet; mso-level-text:•; mso-level-tab-stop:36.0pt; mso-level-number-position:left; text-indent:-18.0pt; font-family:"Times New Roman";} @list l1 {mso-list-id:407963482; mso-list-type:hybrid; mso-list-template-ids:1955213044 -1335973612 113036942 -1206779708 -526861992 -405213620 1893005702 211703336 -1001336394 -521999652;} @list l1:level1 {mso-level-number-format:bullet; mso-level-text:•; mso-level-tab-stop:36.0pt; mso-level-number-position:left; text-indent:-18.0pt; font-family:"Times New Roman";} @list l2 {mso-list-id:849877501; mso-list-type:hybrid; mso-list-template-ids:2010565400 221260182 -488317344 -1143022698 -1566306402 1633605444 -28009836 -1194135280 -1347918170 1371198436;} @list l2:level1 {mso-level-number-format:bullet; mso-level-text:•; mso-level-tab-stop:36.0pt; mso-level-number-position:left; text-indent:-18.0pt; font-family:"Times New Roman";} @list l3 {mso-list-id:883637149; mso-list-type:hybrid; mso-list-template-ids:1608398726 1496615670 -1503497484 2110788904 -236784000 1054900068 -1789877230 -625155498 -1378218754 -708160750;} @list l3:level1 {mso-level-number-format:bullet; mso-level-text:•; mso-level-tab-stop:36.0pt; mso-level-number-position:left; text-indent:-18.0pt; font-family:"Times New Roman";} @list l4 {mso-list-id:1883667224; mso-list-type:hybrid; mso-list-template-ids:405338314 675176030 -920244522 618666404 106176294 1350233946 -652828870 -276013292 -590848340 1508169194;} @list l4:level1 {mso-level-number-format:bullet; mso-level-text:•; mso-level-tab-stop:36.0pt; mso-level-number-position:left; text-indent:-18.0pt; font-family:"Times New Roman";} @list l5 {mso-list-id:1885558120; mso-list-type:hybrid; mso-list-template-ids:-1897790828 1228420796 1024613504 699984886 -634861612 -2050983712 -903292884 -1288412964 1699271684 1589288392;} @list l5:level1 {mso-level-number-format:bullet; mso-level-text:–; mso-level-tab-stop:36.0pt; mso-level-number-position:left; text-indent:-18.0pt; font-family:"Times New Roman";} @list l5:level2 {mso-level-start-at:171; mso-level-number-format:bullet; mso-level-text:–; mso-level-tab-stop:72.0pt; mso-level-number-position:left; text-indent:-18.0pt; font-family:"Times New Roman";} @list l6 {mso-list-id:1943758993; mso-list-type:hybrid; mso-list-template-ids:-1711099482 -1310155868 1915361936 -1993546898 -1480526920 -1911678080 -2141934122 -1747942972 -476817312 -307466544;} @list l6:level1 {mso-level-number-format:bullet; mso-level-text:•; mso-level-tab-stop:36.0pt; mso-level-number-position:left; text-indent:-18.0pt; font-family:"Times New Roman";} @list l7 {mso-list-id:1948999482; mso-list-type:hybrid; mso-list-template-ids:-611035080 -1138328120 -348767604 1883289316 -1234146284 -613803822 -1411459742 -1828184932 -170864046 1246243130;} @list l7:level1 {mso-level-number-format:bullet; mso-level-text:•; mso-level-tab-stop:36.0pt; mso-level-number-position:left; text-indent:-18.0pt; font-family:"Times New Roman";} @list l8 {mso-list-id:2049986334; mso-list-type:hybrid; mso-list-template-ids:-588457192 -473664076 20613316 770991394 1372888908 -999635602 -1035804786 -385329932 -2076958790 2074541938;} @list l8:level1 {mso-level-number-format:bullet; mso-level-text:•; mso-level-tab-stop:36.0pt; mso-level-number-position:left; text-indent:-18.0pt; font-family:"Times New Roman";} @list l9 {mso-list-id:2070569238; mso-list-type:hybrid; mso-list-template-ids:-1193668860 1976567366 -116747262 -1530394134 -731374516 351858814 -612887326 1757556846 1230809254 1531762672;} @list l9:level1 {mso-level-number-format:bullet; mso-level-text:•; mso-level-tab-stop:36.0pt; mso-level-number-position:left; text-indent:-18.0pt; font-family:"Times New Roman";} @list l9:level2 {mso-level-start-at:171; mso-level-number-format:bullet; mso-level-text:–; mso-level-tab-stop:72.0pt; mso-level-number-position:left; text-indent:-18.0pt; font-family:"Times New Roman";} @list l10 {mso-list-id:2111269671; mso-list-type:hybrid; mso-list-template-ids:738229744 75259298 -1978349012 -1794573708 -906587654 -874982974 2102850376 -1580427096 -17153928 -2035792916;} @list l10:level1 {mso-level-number-format:bullet; mso-level-text:•; mso-level-tab-stop:36.0pt; mso-level-number-position:left; text-indent:-18.0pt; font-family:"Times New Roman";} ol {margin-bottom:0cm;} ul {margin-bottom:0cm;} -->

دهم   جلسة         

mohsen_mahyar@yahoo.com

mo-mah.perssianblog.ir

 

فایل

برای انتقال خروجی برنامه‌ها به حافظة پایدار

بدلیل

ماندگاری آنها

ایجاد ارتباط بین برنامه‌ها (فایل بعنوان ورودی)

انواع فایلها

 

متن ( Text )

باینری ( Binary )

 

ساختار اطلاعات در فایل متن

رشته‌ای از کاراکترها

برای مثال عدد 253 بصورت سه کاراکتر 2، 5 و 3 ذخیره شده و سه بایت را اشغال می‌کند.

 

 

 

 ختم می‌شود (CR/LF) هر سطر به کاراکترهای پایان سطر ختم.

پایان فایل را کاراکتری با کد اسکی 26 مشخص می‌کند.

 

 

 

 

مثال

 

Adgvvh12<CR/LF>1255346asd6633<CR/LF><\26>

 

 

ساختار اطلاعات در فایل باینری

داده‌ها به همان شکل موجود در حافظه ذخیره می‌شوند.

 

برای مثال عدد 253 چون یک عدد صحیح است در 2 بایت ذخیره می‌شود.

 

 

پایان سطر در فایل باینری مفهومی ندارد.

 

پایان فایل از طول آن مشخص می‌شود

(دیگر کاراکتر 26 پایان دهنده نیست)

 

 

مثال

 

♣:↓☻↨•¶9◘âèÿ‡A€Ө£¥:↓☻↨ âèÿ‡A€Ө£¥

 

داده‌هایی با نمایش قابل فهم نیستند

امکانات منطقی لازم دراستفاده از فایلها

 

         تعریف متغیر از نوع فایل

         تعیین محل و عنوان فیزیکی فایل

         باز کردن فایل

         خواندن داده از فایل ورودی

 

         نوشتن داده در فایل خروجی

         اضافه کردن داده به انتهای فایل

         آزمون انتهای فایل درهنگام خواندن

         آزمون انتهای سطر درهنگام خواندن (فقط فایل متن)

         قرار دادن <CR/LF> در انتهاى سطر (فقط فایل متن)

         بستن فایل

 

باز کردن فایل

FILE  * fopen(char *filename, char *mode)

 

خروجی تابع به یک متغیر اشاره‌گرفایل نسبت داده می‌شود.

filename : مسیر و نام فایل روی دیسک

mode : مشخص کنندة چگونگی باز شدن فایل

 

 

mode ترکیبی از کارکترهای:

r فایل ورودی

w فایل خروجی

a اضافه کردن داده به انتهای فایل

t فایل متن

b فایل باینری

+ فایل ورودی و خروجی

 

 

مثال

rt : فایل متن به عنوان ورودی

at : فایل متن برای اضافه کردن داده به انتهای فایل

wb : فایل باینری به عنوان خروجی

r+b : فایل باینری به عنوان ورودی و خروجی

 

 

 

مثال

FILE  *fp ;

fp = fopen (“c:\test.txt” , “wt”) ;

if (fp == NULL)

                        printf (“can not open file.”) ;

همیشه باید برای اطمینان، باز شدن موفقیت آمیز فایل را تست کرد.

 

بستن فایل

در انتهای کار با فایل آن را می‌بندیم.

fclose (FILE *fp) ;

مثال:

fclose (fp) ;

 

جلسة یازدهم

 

mohsen_mahyar@yahoo.com

mo-mah.perssianblog.ir

 

 

مهمترین توابع ورودی - خروجی فایل

fscanf

fprintf

fread

Fwrite

 

 

fprintf (FILE  *fp , “  عبارت 1” , عبارت 2 )

fscanf (FILE  *fp , “  عبارت 1” , عبارت 2 )

دقیقا همانند 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) ;

 

 

 

fread و fwrite

بیشتر برای ورودی - خروجی رکورد استفاده می‌شود

ولی

در همة موارد می‌تواند بکار رود

و

سرعت بالایی نیز دارد.

 

fread (void *buffer, int num_byte ,

                           int count, FILE *fp)

buffer : محلی از حافظه که داده‌های خوانده شده باید در آن قرار گیرند.

num_byte : طول داده‌ای که باید خوانده شود.

count : تعداد عناصری (به طول num_byte) که باید از فایل خوانده شوند.

fp : اشاره‌گر به فایلی که باید از آن خوانده شود. مثال

struct  student  stud ;

fread ( &stud ,

                              sizeof (struct  student) ,

                                    1 , fp ) ;

 

 

 

 

مثال

int  a [20] ;

fread (a , sizeof (int) , 20 , fp ) ;

 

دریافت 20 عدد از فایل و قرار دادن آن در آرایه

 

 

 

fwrite (void *buffer, int num_byte ,

                            int count, FILE *fp)

 

پارامترهای این دستور دقیقا مانند fread است

با این تفاوت که

buffer محلی از حافظه است که داده‌هایی که باید در فایل نوشته شوند در آن قرار می‌گیرند.

 

 

 

 

 

تشخیص پایان فایل

int  feof (FILE *fp)

مثال:

if ( feof (fp) ) {

              printf (“End of File”) ;

              fclose (fp) ;

{

 

 

 

 

بازگشت به ابتدای فایل

rewind (FILE  *fp)

مثال:

rewind (fp) ;

 

 

 

دسترسی تصادفی به فایل

fseek (FILE *fp, long num_byte, int origin)

 

این تابع Cursor فایل را به تعداد num_byte بایت از محل origin تغییر مکان می‌دهد.

 

origin :

         SEEK_SET : ابتدای فایل

         SEEK_CUR : موقعیت فعلی فایل

         SEEK_END : انتهای فایل

 

مثال

fseek (fp , 10 , SEEK_SET)

Cursor فایل را از اول فایل 10 بایت جلو می‌برد.

fseek (fp , -20 , SEEK_END)

Cursor فایل را از انتهای فایل 20 بایت عقب می‌برد.

 

 

اصول اساسی شی‌گرایی

         تجرید (Abstraction)

         کپسوله‌سازی (Encapsulation)

         ارث‌بری (Inheritance)

 

تجرید

استخراج مدلی از مسئله با در نظر گرفتن مهمترین نکات و حذف جزئیات زائد

 

کپسوله‌سازی

مخفی کردن جزئیات پیاده‌سازی از کاربران

 

کپسوله‌سازی (ادامه)

کاربران فقط به واسط استفاده وابسته هستند و نه به جزئیات پیاده‌سازی

 

ارث‌بری

نظم بخشیدن به تجریدهای بدست آمده در ساختاری شبیه به درخت جهت قابلیت استفاده مجدد

 

مفاهیم پایه شئ‌گرایی

         شئ (Object)

         کلاس (Class)

         صفت (Property)

         متد (Method)

 

 

mohsen_mahyar@yahoo.com

mo-mah.perssianblog.ir

 

Object

موجودیت فیزیکی و یا مفهومی است مانند:

 

 

Object (ادامه)

مجموعه‌ای از داده‌ها +  اعمال بر روی آن داده‌ها

مشخصا یک شئ دارای:

         حالت

         رفتار

         هویت

 

 

Object (ادامه)

حالت: وضعیتی که هر لحظه شئ در  آن قرار دارد و با مقدار صفات آن در آن لحظه مشخص می‌شود.

رفتار: روشی که شئ به تعامل با دیگر اشیا می‌پردازد که در واقع همان واسط ارتباطی شئ است.

هویت: همان چیزی است که دو شئ را از یکدیگر متمایز می‌سازد حتی اگر دارای حالت و رفتار یکسان باشند.

 

 

مثالهایی از شئ

اشیا معمولا با مستطیل نمایش داده می‌شوند:

 

 

 

 

 

 

                                                                                                                        

 

 

 

 

 

نمایش اشیاء

با یک مستطیل و اسمی که زیر آن خط کشیده شده نمایش داده می‌شود.

 

 

 

 

mohsen_mahyar@yahoo.com

mo-mah.perssianblog.ir

 

 

 

کلاس

مجموعه‌ای از اشیا دارای ویژگی و رفتار یکسان را کلاس می‌نامند.

مانند کلاس:

        انسان

        دانشجو

        ماشین

        ...

 

 

کلاس (ادامه)

         شی نمونه‌ای (instance) از یک کلاس است.

         کلاس تجریدی است:

        با تاکید بر ویژگیهای مرتبط

        نادیده گرفتن ویژگیهای نامرتبط

mohsen_mahyar@yahoo.com

mo-mah.perssianblog.ir

 

کلاس نمونه

 

         ویژگیها                        Class                                           

    Course

      رفتارها

Add a student

Delete a student

Get course roster

Determine if it is full

             

Name

Location

Days offered                       

Credit hours

Start time

End time

 

 

mohsen_mahyar@yahoo.com

mo-mah.perssianblog.ir

 

 

 

نمایش کلاسها

         کلاس با یک مستطیل به صورت زیر نمایش داده می‌شود.

 

Lecturer

نام

ذخیره کردن

 

 

 

 

mohsen_mahyar@yahoo.com

mo-mah.perssianblog.ir

 

 

 

 

نحوه تعریف کلاس (شکل ساده)

 

 

class <class_name>           // class header (prototype)

{

public:

    <function_prototypes>

protected:

    <function_prototypes>

private:

    <function_prototypes>

    <data_attributes>

};

 

 

 

مثال

Class point

{

            private float x, y;

            public void draw();

}

 

mohsen_mahyar@yahoo.com

mo-mah.perssianblog.ir

 

 

نحوه تعریف کلاس (شکل ساده)

         کلمات public, private, protected تعیین کنندة نحوه دسترسی استفاده‌کنندگان از کلاس به ویژگیها و رفتار (متدها) کلاس می‌باشد.

         public به معنی دسترسی برای عموم می‌باشد.

         private به معنی دسترسی فقط برای اعضای کلاس می‌باشد.

         protected به معنی دسترسی برای اعضای کلاس و ارث‌برندگان کلاس می‌باشد.

 

 

نحوه تعریف کلاس (ارث‌بری)

class <class_name> : <superclass_name>

{

public:

    <function_prototypes>

protected:

    <function_prototypes>

private:

    <function_prototypes>

    <data_attributes>

};

سازنده کلاس

در ‍‍‍‍C++ متدی از کلاس که همنام آن کلاس است سازنده کلاس است.

به این معنی که موقع ایجاد شئ از آن کلاس ابتدا متد مذکور اجرا می‌شود.

 

 

mohsen_mahyar@yahoo.com

mo-mah.perssianblog.ir

 

 

مثال

Class point

{

            private float x, y;

            public void point(float,float);

            public void draw();

}

 

مخرب کلاس

در ‍‍‍‍C++ متدی از کلاس که همنام آن کلاس و با یک علامت ~ قبل از آن است مخرب کلاس است.

به این معنی که موقع از بین رفتن شئ آن کلاس در انتها متد مذکور اجرا می‌شود.

 

 

مثال

Class point

{

            private float x, y;

            public void ~point();  

            public void draw();

}

 

 

نحوة ایجاد شئ

 

با استفاده از اپراتور new

 

Class point {…} ورودی در ‍‍‍‍C++

>>  اپراتور ورودی

 

مثال:

cin >> var1, var2, var3;

 

point p = new point(0,10) ;

 

 

ورودی در ‍‍‍‍C++

<<  اپراتور خروجی

 

مثال:

cout << “Text :” << var2 ;

 

 

پایان

mohsen_mahyar@yahoo.com

mo-mah.perssianblog.ir

 

   + MOHSEN GHASEMI - ۱٠:۳۱ ‎ق.ظ ; ۱۳۸٩/٦/٦