برنامه نویسی پیشرفته جریان ها (streams)

44
ه ت ف ر ش ی پ ی س ی و ن امه رن ب ها ان رن ج( STREAMS )

Upload: darin

Post on 19-Mar-2016

107 views

Category:

Documents


7 download

DESCRIPTION

برنامه نویسی پیشرفته جریان ها (streams). رئوس مطالب. کلاس های جریانی خطاهای جریانی ورودی خروجی دیسک با جریان ها مکان نمای فایل خطایابی در ورودی/خروجی فایل ورودی/خروجی فایل در توابع عضو سربارگذاری عملگرهای درج و استخراج استفاده از حافظه به عنوان شی جریان. کلاس های جریانی. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: برنامه نویسی پیشرفته جریان ها (streams)

برنامه نویسی پیشرفته(STREAMS)جریان ها

Page 2: برنامه نویسی پیشرفته جریان ها (streams)

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

2

Page 3: برنامه نویسی پیشرفته جریان ها (streams)

کالس های جریانیجریان: دنباله ای از داده ها بین دو نقطه

ورودی/خروجی و برنامهفایل و برنامه

فایل ها نوعی جریان اند درC کار با فایلها با توابع خاصی انجام می شد در ،C++

خاصی انجام میشود.اشیاءبا استفاده از دانستن سلسله مراتب کالس های جریان مهم است

چون توابع به ارث برده میشوند.

3

Page 4: برنامه نویسی پیشرفته جریان ها (streams)

سلسله مراتب کالسهای جریان

4

Page 5: برنامه نویسی پیشرفته جریان ها (streams)

IOSکالس توابع عضو و داده های عضو این کالس توسط تمامی

کالس های جریانی به ارث برده میشود کالسios جد تمامی کالسهای جریانی است و حاوی

به آنها نیاز ++Cویژگیهای اصلی که در کار با جریانهای داریم. سه تا از مهمترین ویژگیها:

عالمتهای فورمت بندی بیتهای وضعیت خطا .وضع عملیات روی فایلهاست

5

Page 6: برنامه نویسی پیشرفته جریان ها (streams)

IOSعالمتهای فورمت بندی این عالمتها مانند کلیدهای دو وضعیتی بصورت خاموش و

روشن عمل می کنند. چند روش مختلف برای مقداردهی به این عالمات وجود

دارد. از آنجائیکه این عالمات عضو کالسios هستند برای دسترسی

استفاده می شود.::به آنها از مقدار دهی به عالمات فورمت دهی

توسط توابع عضو کالسios یعنی setf و unsetf فعال و غیر فعال میشوند.

.با استفاده از دستکاری کننده ها به آنها مقدار داد

6

Page 7: برنامه نویسی پیشرفته جریان ها (streams)

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

7

Page 8: برنامه نویسی پیشرفته جریان ها (streams)

دستکاری کننده ها ًدستکاری کنند ها : دستورات فورمت بندی که مستقیما

به جریان اضافه میشوند. را بعد از خود عناصری از جریان هستند که قالب جریان در

عوض میکنند. نمونه متداول آنهاendl تمامی عالمات فورمت بندی را میتوان از طریق دستکاری

کننده ها هم فعال یا غیر فعال کرد.

8

Page 9: برنامه نویسی پیشرفته جریان ها (streams)

دستکاری کنند ها )ادامه(:دستکاری کننده ها به دو صورت متفاوت ظاهر میشوند

دستکاری کننده های بدون آرگومانی کننده هایی که یک آرگومان میگیرندZدستکار

cout << hex << var; Note that manipulators affect only the data that follows them

in the stream, not the data that precedes them.9

Page 10: برنامه نویسی پیشرفته جریان ها (streams)

دستکاری کنند های تک آرگومانی بایستی سرفایلiomanip.به برنامه اضافه شود

10

Page 11: برنامه نویسی پیشرفته جریان ها (streams)

IOSتوابع عضو کالس از این توابع عضو میتوان برای تنظیم عالمتهای فورمت

دهنده و کارهای دیگر استفاده کرد.

11

Page 12: برنامه نویسی پیشرفته جریان ها (streams)

ISTREAM کالس جریانی که عملیات مخصوص ورودی یا خواندن داده

ها را انجام میدهد در و برخی صفحه کلید دارد هم درورودی از توابع عضوی

از فایل هم کاربرد دارد.ورودی

12

Page 13: برنامه نویسی پیشرفته جریان ها (streams)

OSTREAMostream کالس جریانی که با عملیات خروجی سروکار :

دارد. ی توابع عضویZجی روZو صفحه نمایش دارد هم در خرو

روی فایل هم کاربرد دارد.در خروجی برخی

13

Page 14: برنامه نویسی پیشرفته جریان ها (streams)

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

14

Page 15: برنامه نویسی پیشرفته جریان ها (streams)

اشیاء جریان از پیش تعریف شده

15

Page 16: برنامه نویسی پیشرفته جریان ها (streams)

خطاها در جریان ها در هنگام ورودی/ خروجی از جریان ممکن است

خطاهایی رخ دهد. منتظرint.هستیم کاربر حرف وارد کند

بیت های کنترلی خاصی وجود دارد که وضعیت خطا رانشان میدهد

وضعیت این بیت ها را میتوان با استفاده از توابع عضوبررسی کرد یا تغییر داد.

: توابع عضو مهمeof)( ،نشاندهنده پایان جریان good)( برای پاک کردن )(clearنشاندهنده عدم خطا در جریان و

بیت خطا هستند.16

Page 17: برنامه نویسی پیشرفته جریان ها (streams)

بررسی خطا در جریان ورودی مثال: ورودی از کاربر با استفاده ازcin.دریافت میشود

17

Page 18: برنامه نویسی پیشرفته جریان ها (streams)

ورودی/خروجی از فایلبا استفاده از اشیاء سه کالس ifstream، ofstream و

fstream ،انجام میشود. به ترتیب برای خواندن از فایل نوشتن در فایل و انجام هر دو کار.

انواع فایلمتنی / باینری

مراحل انجام کار با فایل تعریف یک شی از نوع کالس جریانی مناسب و مشخص

کردن فایل مرتبط روی حافطه جانبیخواندن/نوشتن از طریق جریان بستن جریان

نقش مخرب18

Page 19: برنامه نویسی پیشرفته جریان ها (streams)

برای فایل های متنیI/Oورودی و خZروجی ل ذکرZیر فایZت نام و مسZی اسZازنده کافZدر س

شود. برای خواندن از کالسifstream برای نوشتن از

ofstream .استفاده میشود عملگرهای از میتوان نوشتن و خواندن برای

استفاده کرد. << و >>مخرب، فایل را می بندد

19

Page 20: برنامه نویسی پیشرفته جریان ها (streams)

رشته هایی با فاصله خالی میانی-)فایلهای متنی(

روش قبل برای رشته هایchar* که حاوی فاصله های خالی میانی هستند کار نمی کند.

برای کار با این رشته ها الزم است کاراکتر محدود کنندهخاصی را پس از هر رشته بنویسید و با استفاده از

getline)(.بجای عملگر ورودی آنها را بخوانید

20

Page 21: برنامه نویسی پیشرفته جریان ها (streams)

فایلهای متنیدر هر خط فایل ورودی تعدادی عدد صحیح وجود دارد.

برنامه مجموع اعداد هر سطر را نشان میدهد.

21

2739

Page 22: برنامه نویسی پیشرفته جریان ها (streams)

فایلهای باینری ل، باینری بودن فایلZیر فایZازنده عالوه بر نام و مسZدر س

در پارامتر دوم اعالم شود کالس از خواندن از ifstreamبرای نوشتن برای ofstream

استفاده میشود. عZن میتوان از توابZبرای خواندن و نوشتwrite و read استفاده

کرد.

Dataآدرس عنصری که قرار است خوانده/نوشته شود SIZEاندازه عنصر به بایت

22

Page 23: برنامه نویسی پیشرفته جریان ها (streams)

فایل های باینری- مثالنوشتن آرایه در فایل و خواندن آن

23

Page 24: برنامه نویسی پیشرفته جریان ها (streams)

نوشتن و خواندن یک شی با فایلهای بZاینری-مثال

.نوشتن شی در فایل و خواندن آنلزوم سازگاری موقع خواندن و نوشتن

24

Page 25: برنامه نویسی پیشرفته جریان ها (streams)

فایلهای باینری-مثال نکته: اشیاء با عضو داده ای اشاره گر را نمیتوان

مستقیماً در فایل نوشت.چرا؟

25

Page 26: برنامه نویسی پیشرفته جریان ها (streams)

FSTREAM اشیاءfstream هم میتوانند بعنوان ورودی و هم بعنوان

خروجی استفاده شوند. با تابع عضوopen تباط فایل را باز نموده و وضعیتZمیتوان ار

آن را تعریف نمود فایل میتواند چند و ضعیت داشته باشد که با همOR منطقی

میشوند.

26

Page 27: برنامه نویسی پیشرفته جریان ها (streams)

مکان نمای فایZل مکان نمای فایل : محل فعلی خواندن و نوشتن از فایل

را مشخص میکند.دو مکان نما داریم : برای خواندن و برای نوشتن

مشخص را فایZل ابتدای از بایZت تعداد نمZا مکان مقدار میکند.

ر آنZا و تغییZع عضوی برای اطالع از مقدار مکان نمZتوابوجود دارد

tellp, getp, tellg, getg

27

Page 28: برنامه نویسی پیشرفته جریان ها (streams)

مکان نمای فایل-مثال

28

Page 29: برنامه نویسی پیشرفته جریان ها (streams)

خطا در فایل روش برخورد و تشخیص خطاها درistream و ostream

در اینجا هم کاربرد دارد )کالس پدر(

29

Page 30: برنامه نویسی پیشرفته جریان ها (streams)

خطا در فایل

30

Page 31: برنامه نویسی پیشرفته جریان ها (streams)

خواندن/نوشتن یZک شی در توابع عضو برای خواندن و نوشتن در فایل باید ازthisاستفاده کرد

31

Page 32: برنامه نویسی پیشرفته جریان ها (streams)

خوانZدن/نوشتن همه اشیاء یک کالس در توابع عضو

میخواهیم بتوانیم کلیه اشیاء کالس را با یک فراخوانیload و saveکنیم

حداقل، نیاز به اعضایstaticداریم عضو های داده ایstatic تعداد اشیاء ساخته شده و آرایه ای :

از اشاره گر ها به آنها توابع داده ایstatic تابعی برای :save و تابعی برای load

32

Page 33: برنامه نویسی پیشرفته جریان ها (streams)

مثال دفترچه تلفن

33

Page 34: برنامه نویسی پیشرفته جریان ها (streams)

ذخیره چند نوع شی در یک فایل ء را هم ذخیرهZد شیZء، کZر شیZل از هZن، قبZع نوشتZموق

معلوم ذخیره شده نوع شی خواندن موقZع تZا میکنیZم باشد

34

Page 35: برنامه نویسی پیشرفته جریان ها (streams)

ذخیره چند نوع شی در یک فایل حتی میتوان اشیاء یک سلسله مراتب توارثی را هم با

استفاده از چند ریختی ذخیره و بازیابی نمود. موقع خواندن محتویات فایل با خواندن قسمت کد نوع

، نوع شی بعد از آن را typeidشی و استفاده از عملگر متوجه میشویم.

35

کالس پایه

Page 36: برنامه نویسی پیشرفته جریان ها (streams)

ذخیره اشیاء پایه و مشتق در یک فایل- ادامهکالس های مشتق

36

Page 37: برنامه نویسی پیشرفته جریان ها (streams)

ذخیره اشیاء پایه و مشتق در یک فایل-ادامه تعریف توابعstaticدر کالس پایه

37

Page 38: برنامه نویسی پیشرفته جریان ها (streams)

ذخیره اشیاء پایه و مشتق در یک فایل-ادامه توابعstaticخواندن و نوشتن در کالس پایه

38

Page 39: برنامه نویسی پیشرفته جریان ها (streams)

ذخیره اشیاء پایه و مشتق در یک فایل-ادامهmainبرنامه

39

Page 40: برنامه نویسی پیشرفته جریان ها (streams)

عملگرها باید بصورت تابعfriend سربارگذاری شوند چون عملگر در سمت چپ آنها قرار میگیرد.

خروجی عملگر ها بایدistream& یا ostream& .باشد قالب کلی برای <<

نوع ارجاع باشند.بایدبایدپارامترها و خروجی ها،

و << <<سربارگذاری عملگرهای

40

قالب کلی برای >>

Page 41: برنامه نویسی پیشرفته جریان ها (streams)

و << <<سربارگذاری عملگرهای برای کار باcin و cout

41

Page 42: برنامه نویسی پیشرفته جریان ها (streams)

و << <<سربارگذاری عملگرهای سربارگذاری برای کار باifstream و ofstream

سربارگذاریistream برای ifstreamهم کار میکند سربارگذاریostream برای ofstreamهم کار میکند

بخاطر چندریختی

42

Page 43: برنامه نویسی پیشرفته جریان ها (streams)

استفاده از حافظه به عنوان شی جریاناز یک آرایه کاراکتری میتوان بعنوان جریان استفاده کرد

کالس Zمعموالً ازstrstream برای قالب بندی خروجی و ذخیره در یک رشته استفاده میشود.

strstream فرزند iostream.است قالب کلی

43

Page 44: برنامه نویسی پیشرفته جریان ها (streams)

44