صفحه 1:
صفحه 2:
صفحه 3:
جلسه هشتم
3 اساندار ۵
«وننتههای کاراکتری و ثایلها در 07۳۳ 9
صفحه 4:
آچه دراین پلسه می فینید
مرورى بر ۳
! رشتههاى كاراكترى در 0
0
0
ورودى /خروجى رشتههاى كاراكترى
چند تابع عضو 2و 2
" توابع کاراکتری () استاندارد
آرايهاى از رشتهها
'' توابع استاندارد رشتههاى كاراكترى )2
صفحه 5:
أرشتههاى كاراكترى در 00++ استاندارد
آنگاهی دقيق تر به تبادل داددها
۳
20 کف : اشتابي بأ 0 اولية بهكار كيرى آنهاء.
rom >دتحد در ++0) استاندارد
Fg ec
صفحه 6:
ee) به سبى 7و 7++و
ل ا ا 0 ل
ا ا 0
بازیابی اطلاعات.
صفحه 7:
هدفهای رفتاری: انتظار میرود پس از پایان این جلسه بتوانید:
IY Brel bl CMT Crary 0 2
- توابع معرفى شده عضو 25 و 3< را شناخته و وظيفة هر يى را
شرح دهید.
Bree Peet PES ا CHET
- مفهوم «ورودى قالببندى شده؛ و دورودى قالببندى نشده را
Cae Pree OE ToC OMEY DP RCT me E 00000
- نوع :2۷ را شناخته و رشتههایی از این نوع ایجاد کنید و با
استفاده از توابع خاص.ء اين رشتهها را دس تكارى نماييد.
- اطلاعات كاراكترى و رشتهاى رادر يك فايل متنى نوشته يااز
0
صفحه 8:
:مقدمه
دادههايى كه در رايانهها يردازش مىشوند هميشه
نيستند. معمولا لازم است كه اطلاعات
كاراكترى مثل نام افراد. - نشانىها - متون -
'توضيحات - كلمات و ... نيز يردازش كردندء
جستجو شوند. مقایسه شوند. به یکدیگر الصاق
شوند یا از هم تفکیک گردند.
ل
كاراكترى رااز ورودى دريافت كنيم و با آنها را به
شکل دلخواه به -, : ., بفرستیم. . در همين راستا
توابعى معرفى مى كنيم كه انجام اين کارها را آسان
500
صفحه 9:
مروری بر اشاره گرها:
يك اشارهكر متغيرى است كه حاوى يك آدرس از
حافظه میباشد. نوع این متغیر از نوع مقداری است
كه در آن آدرس ذخيره شده. با استفاده از عملكر
ارجاع 6۷ میتوان آدرس یک شی را پیدا کرد.
همجنين با استفاده از عملكر مقداريابى 6: مى توانيم
مقداری که در بک ادر قرار دارد را مشخص
م
0
ا
صفحه 10:
رشتههاى كاراكترى در 0
در زبان 40+ يى درشتة: كاراكترى» آرابهاى از
کاراکترهاست که این آرایه دارای ویژگی مهم زیر است:
-١ يك بخش اضافى در انتهاى آرايه وجود دارد كه مقدار
كن كاراكثر 40007 بعك ١ انشت يش تعداد كل
Bec IpCy ا ا ل owe
٠١ - رشتة كاراكترى را مىتوان با ليترال رشتهاى به طور
۳ كرد مثل:
bor هی 2 [ا سوت
۱ 7 Cun vrce Cy
UL UU eee 1 ۲ 9 ۰ ۰( ۷ انا ۷۲
و ۰۱ ۱ وت و او و اوه
صفحه 11:
|
نه مثل:
در اين صورت. همة كاراكترهاى درون رشتة كاراكترى یکی
ne pee ae ا ا SP
برخورد شود.
۴ - یک ننه کاراکتری را میتوان مثل یک متغیر معمولی از
ورودی دریافت کرد مثل:
صفحه 12:
۵ - توابع تعریف شده در سرفایل <۳۳۷:0۸> را
میتوانیم برای دستکاری رشتههای کاراکتری به
كار بكيريم. اين توابع عبارتند از:
تابع طول رشته Vea
مد ساسا
صفحه 13:
0 6 LCM FY Sec DCMT EL Coe)
1 ا epee SPC Ate
QOrat cater
Gees = "ECw |
Por (iat i = O; i < SG; i++)
cat} << Hel >> ۱ >> y=" << Fall << ۳
1
صفحه 14:
رشتة كاراكترى < داراى ينج عضو است كه
ID CMe Se ۱
خروجی این مطلب را تایید مینماید.
و کازاکتر ۲۱۲ به . فرستاده
میشود. هیچ چیز چاپ نمیشود. حتی
جای خالی هم چاپ نمیشود.
ea res od ad ed ۱۳
دهد كه ميان دو علامت اپستروف هیچ
جيزى جاب نشده.
ههه 1516
OO oOs4 3
صفحه 15:
ورودى/خروجى رشتدهاى كاراكترى:
ل ا ل رشتههای کاراکتری
رادريافت كرده يا نمايش داد.
CCW 2 ETE)
در بخشهای بعدی به آن خواهیم پرداخت.
روش ديكر. استفاده از توابع كمكي است كه آن را
در ادامه شرح مىدهيم.
صفحه 16:
معال ۸.۲ روش ساده دربافت و بمایش رسههای كار اكترق”:
در برنامة زير يك رشتة كاراكترى به طول 1 كاراكتر اعلان شده و
کلماتی که از ورودی خوانده میشود 1۳ رشته قرار می گیرد:
|
0
| _
و
ا
i
صفحه 17:
cL ead ی مت
ی ۱۳
شامل توابع زير است:
رحس صت
Diu.
70 همه این توابع شامل پی پیشوند 7:7 هستند زیرا آنها طضوی از
میباشند. به ۲۷ شیء فرآیند خروجی می
eevee, ESO care or moth Un aN ees
تب |
فراخوانى ا باعث eit یه
درون 1 خوانده شود و مابقى كاراكترهاى وأزد شده تناديده
كرفته مى شوند.
صفحه 18:
ط ات یت ام ار
:این برنامه ورودی را خط به خط به خروجی میفرستد
152
{ cher iselOW)
7
۱۱
0
ل
i
صفحه 19:
را
مهن
| [0 2]عصماء عصادر
صل
ال هت رت سرت وا
هال" >> وصجاء >> "إنا" >> انوج (عصواك*) خازار
oe cd | دك
۱
صفحه 20:
لا كل
این برنامه تعداد حرف "< در جریان ورودی را شمارش
Re US scares ete)
میخواند» حلقه ادامه میباید: oe
Ree ale
ed 0 كرك Pe
لديو لا = = WP (ck
ba 1
۱
صفحه 21:
ل
S, ل ل ورودی را به حرف بزرگ تبدیل
كرده و آن را مجددا در خروجى جاب مى كند:
فا
char ck, pre = \O }
رت یت ی
liao ( || ۶۲۱ < عم ۶
زرا مت مب مس
مس تست
۳
0
صفحه 22:
درل سس مر امسر در
Pape ICON BSE orc ie Ony even Sine ee eB
:مى كند
Reker dn ered
Been (Sey
۱۳ یر نا eee ens
1
(edd
۳
a nol
while (cta.cet(ch))
P (ch >= 'O! 88 ch <= 'O') 3
Peet ee eoy be }
زه << وم
صفحه 23:
تابع 00
اين نسخه از تابع 14 () معادل آن است كه در مثال قبلى بودة
0
ae رت
sh
while (ch = vic.perh())
iP (ch >= 'O' && ck <= 'O')
Bo
Rand
0
ا
cc) م
> از
صفحه 24:
1
ا ل 00 الل ا لل ا كك
از توابعى است كه براى دس تكارى كاراكترها استفاده
7 تعریف شده به شرح زير است:
3 ات
int isalnum(int c);
9 mie renga eNed OB Pee koe?
را برمیکرداند
int isalpha(int c);
OF LC Ne eee SB te Tes 1s Boe
برمیگرداند
صفحه 25:
(eu
int iscntrl(int c);
کر » کاراکتر کنترلی باشد مقدار غیرصفر و در غیر گن.
صفر را برمى كرداند
int isdigit(int c);
اكر © كاراكتر عددى باشد. مقدار غيرصفر و در غير آن.
صفر را برمى كرداند
int isgraph(int c);
0
|
نام تابع
)015 1
Oisdigit
Oisgraph
صفحه 26:
(ese
int ispunct(int c);
اگر 6 کاراکتر چلپی به غیر از حروف و اعداد و فضای خللی باشد. مقدار غیرصفر
SS TOS seed cine Rel oleae
10 isspace(int os
ی ی لش نت ی مت ها نس SINE ام
(۱ ae الل we لمر ل
lar an en eS aad nee a
int isupper(int c);
اگر 6 حرف بزرگ باشد. مقدار غیرصفر برمی گرداند وگرنه صفر را برمی گرداند
int isxdigit(int c);
اكر © يكى از ده كاراكتر عددى يا يكى از دوازده حرف عدد شائزدهدهى شامل
را و ا ا و رد
و '2' و '5' باشد. مقدار غيرصفر برمى كرداند وكرنه مقدار صفر را برمى كرداند
int tolower(int c);
Drea ee seed arian eee cere gene ata ae ead
برمی گرداند
int toupper(int c);
اگر 6 حرف کوچک باشد. کاراکتر بزرگ معادل آن را برمی گردلند وگرنه خود 6 را
برمى كرد اند
نام تابع
Qispunct
Qisspace
Qisupper
Qisxdigit
Qtolower
Qtoupper
صفحه 27:
توجه کنید که همه توابع فوق یک پارامتر از نوم ۲۱
دریافت می کنند و یک مقدار را برمیگردانند. علت
Se kor eel 1
در عمل وقتى توابع فوق را به كار مىبرند. يى مقدار
ا ا ل ل الم
صفحه 28:
آرابهای از رشتهها
به خاطر دارید که گفتیم يكد آراية دوبعدی در حقیقت
آرایای یک بعدی است که هر کدام از اعضای ن یک آراية
sega ا AC Cee CM SSE
اعلان شده باشد:
wher unve[S][CO]
ا هد تس مس مت سب
Creare 1 1
تارادا aa كن له اين مغو SSSI ay A
ا OS) eae
Sees ا ee 1 0
تصور كنيم.
صفحه 29:
از طويق
te تع ا ل ل EC rere err
pees foal n م ل ا ل 2 0
يك بعدى با آن رفتار مى شود.
ين
صفحه 30:
آرابهای از رشتههای کاراکتری
CUE SO Ue eee I es es S
ذخیره کرده و سپس مقادیر آن آرایه را چاپ میکند:
مت 6۱
م۳
AN RC Rca es Rn ee acy
phe (cic. getioe(care[pott++t+], SD))
حت ول جار
cea ل ا له
ا اك 0 0
ext << ل اه
1
صفحه 31:
یک آراية رشتهای پویا
اين برنامه نشان مىدهد كه جكونه مى توان از كاراكتر
ا ا SN) 1 ا لل
Pep Oper oer) ik ek We Cone b\ Cn eee eee Hy een eCy
ل لل ee Oo Mee ۱
Pe wre eE etree tte ا 1
سپس نامهای ذخيره شده در آراية 7 جاب مى شوند:
صفحه 32:
صفحه 33:
مقداردهى يك آراية رشتهای
Te لا
سا
۱( ساسا مسا با( ,ان مخ ) omere[J= یز
و ۲ << Spout
Por (int i = O; i < D; i++)
“oot << "\I" <<; <<", ۱ << xeve(i] << اله
je > >
f
1
صفحه 34:
00 5 الله مه
توابع استاندارد رشتههای کاراکتری:
CMa cae ALC pom به أن «كتابخانة رشتههاى
كاراكترى» هم مى كويند. شامل خانوادة توابعى است
که برای دستکاری رشتههای 0 م
مثال بعدى سادهترين آنها يعنى تابع طول رشته را
112225011 (يعنى تعداد كاراكترهاى لن رشتة)
را برمی گرداند.
صفحه 35:
Osiries تابع
Rowe Oe er URC eS ney Sk A ere ee ei ee
CCR CxO SP MT Seo SCRE Remy Oe eC ge)
ERE Pa ROB Cee] Te PCI BCL OC) Lape LC IN
<iuchide <pstricrept
6 من
[آه ده ز = 00008 1
joo >> sided >> و >> 5 355 Se المج >> ا
۳ ل ا
har buPPer [OO]
oot << "Cater stray") ia >> buPPer
انار >> ۲ ۰ ("<< buPPer >> "( - ">> 2 المج >> (لوعطيط)
صفحه 36:
ا م مسر 2
برنامة زير. مكان يابى يك كاراكتر يا زيررشتة خاص را در رشتة كاراكترى < نشان مىدهد:
يي BG
مها
_ ا ل ایب
۱
el oe) سما
Fi A Se
(ت &_ روز
pois to s[" << p-» <<"].\a ) م 5 سار 3
ett eee ea
ota
ددم >> "إدص صصمم (كاض"ا ,5) | ">> نمم
۳] <<
م تمر
مب pir ae ۱0 of" << p—»
>>
MQW) wa<<" (gs, \"b") rete
OT
صفحه 37:
2()eropy قايع
2121211111 07
Stoke <pereont
<tock de <potrterg
مس ب()
۶ 2 ۵۵0066 ۱
< ]6و ز
3" ved << "BePore prvpy(e(l,e2): ho
Dt << "Wedd = [" << ol << "J, fergis = "<< vrtea(odl)
ز <<
Dt << "WO < ] >> (©ع)مطم >> ۲ < مط ,[" >> 6و
jood >>
jorcpr(ed 2)
م( »)ب ۹0۳ ک> له ز
pou << "Wold < ] >> (4م)سلوی >> ۲ 2 یط ,(" >> 4و
jewd >>
(©ع)مطم >> " - طيصا ,[" >> هم >> "] د هيا" >> يوم
jowd >>
صفحه 38:
تب مرو مورا
برنامةً زیر بررسی میکند که فراخوانی ی
كدص ()
oll] ۶ ۲۵۵0۵8 نز
71" - []هه جاه" ز
:© 6ه دار سه ونع 9" >> فحت" ز
)اه >> ۲ < لبط ب[" ک> و >> ] < ۳" >> لس
<< از
( )سوه <<" = mat << "\wO = [" << 5O << "], lenis
<< از
( ,یمور
ما( مهو jot << "@Per
)ای >> ۲ 2 رما ,[" >> 0و >> ] < ۲۳ >> له
a ۱ << از
سوه >> 2۲ سا ,)"<< sO >> ۳] > هي" >> يوم
<< از
{
صفحه 39:
تابع الصاق رشته ؛مسب()
۱ Ld tao aed Re de ete Te Oe Bekele
Cs
|
6د سا 2 ۷
ت۱۳
a ea ee eo ل
لمور <<
Se a ee ae) | 1050 3 هت
Pee eee eee ne
۱ ا ۱ م۱
ل
( مس ا ] < ۵ >> لس
<< اور
i
صفحه 40:
شه مم
Ree 1
رشتههای کاراکتری که تاکنون تشریح شد. در زبان استفاده میشوند
و البته بخش
Ree Dt Tenet se ee Reece? 1
سریع دادهها
هستند. اما این سرعت پردازش هزینهای هم دارد: خطر خطاهای زمان
Abel
Sp Cape Ie Yr Caney. reer snes pee oe tga 0 0
عنوان پایان رشته
ee Cy ا CMT hey ۱
در اين رشتههاء طول رشته نيز درون رشته ذخيره مىشود و لذا فقط به
كاراكتر با)00)
برای مشخص نمودن انتهای رشته اکتفا نمیشود.
صفحه 41:
ROC) OR ne)
۱ ا BN YS Pe eT
را در فالب مجموعهای از کاراکترها تایسپ میکنیم.
1 ا ل ete ea
برنامه بفرستیم» این نتایج در قالب محموعهای از
کاراکتر ها نملیش داده میشوند. لازم است که لین
کاراکترها بسه نحوی برای برناصه تفسیر شوند. مثلا
وقتی قصد داریمیک عدد صحیح را وارد کنيم» جند
كاراكتر عددى تايب مى كنيم
صفحه 42:
حالا ساز و کاری لازم است که از لین کاراکترها
ea ی
همجنين وقنى قصد داييميك عدد اعشارى رلبه
خروجی بفرستیم بلیدبا استفاده از راهکاری»
كن عدد اعشارىببه كاراكترهليى تبديل شودتا
يت ل ليت
صفحه 43:
۱
ee Ie en reared pre
کاراکترها را بسه دادههایسی از یسک نوع بنیادی تبدیل
۱3 cae LOSS ie By ee ie
۱ Tee eee ee) oad
زیر کلاسهایی تقسیم میشود:
صفحه 44:
شممء 1-2 جريلفنى است كه داذدههاى مورد
eS کاراکترهای وارد شده ااا
دادههاى ee رلبه كارا ۳ هاى - ۱
اا 1
— و > wih است که دادههای را
نیاز را از دادههای POS PCa Aa ot cure etary
مى كند. Ped ASNT a) جريلنى را
دادههاى حاصل را درون يك فايل ذخيره
مى نمايد. اين جريانها و طريقة استفاده از آنها
را در ادامه 7
صفحه 45:
استفاده از عملگر بیرون کشی برای کنترل کردن یک حلقه :
سم
زد
while (via >> a)
الوح كك اي >> " دي" rca i
t
صفحه 46:
ne nee CET BY
bE <--1-0- تولبع مختلفى براى ورودى ذدارد.
لین تولبع برای واره کردن کاراکترها و رشتههای کاراکتری
جه کار میرونه که کاراکترهای فضای سفید را نادیده
ذمى كير ند.
T10) ا الل ل ان
Cee pee Fey eae ar ope ۳
است.
صفحه 47:
فریافت کاراکترها با استفاده از تایع .ستوز).
صفحه 48:
وارد گردن یک رشتة کاراکتری به وسیلة تابع +۵«(
De ROSIE ae bea Teele) ea) oe Eee ae Shane)
EOC Se ee ter ee)
amt 0 56د اما م سم
۱ ۳0 ۱ عمجت
ti OMen aay pre ل
Oss sects
coal _ لل
=D در
whte(cr.cpikce(cromprfat+], LOM) && o<OVLE)
iw
Por (rot RQ; tse; e+)
soa << ‘Vi << rtd <<". " << ont] << ed
صفحه 49:
BS) ee Ore me ey mira)
در (۲:+ استاندارد نوع دادهای خاصی به نام :7:77 وجود دارد که مشخصات این نوع
Bp ects ioe ee dee pore Le Re eee aaa 1p)
Cee ee aS OMe ee Te Nt eee Ee Ce Re)
میتوانند اعلان و مقداردهی شوند:
0 as ae
سنوی 1٩ نمی ۵و ||
eas SRS a
ae cans Ns ca Os eg
|| 55 2و6 ۲ج
صفحه 50:
استفاده از نوع 2010
کد زیر یک مجموعه کاراکتر را از ورودی میگیرد و سپس بعد از هر کاراکتر
یک علامت ویرکول و" اضافه مینماید.
مثلا اگر عبارت ۳
"COPTOORE DOOCOEOT 6 begat
ON eee eM ee SCS ee)
The رگ DOOCG, OE, OT & begac
متن برنامه این چنین است: امس سس
0 Cana}
صفحه 51:
نت9
يكى از مزيتهاى رايافه» قدرت نكهدارى اطلاعات
حجیم است. فابلها لین قدرت رلبه رابلنه میدهند.
Ce her ety Se es ad
SS tt Tee rd
نمی کردند.
چون اغلب برنامههای امروزیبا فایلها سر و کار
دایند»یک برنامهنییس لازم است کمبا فلیل آشنا
eee ا pes
eB کارابی ۳ را eddO LR)
صفحه 52:
۱۳ eB) ee Te Lae 3S)
ا ا ل ال
eee) Boat ا ل oar |
ل ل eros,
دو زير شاخة مرس و رو وت dot ped ومحوجدا
تقسيم مى شود.
جريان مرو براى خواندن اطلاعات ea) فلیل
اه کار میرود و جريان موص وناو براى نونتن
اطلاعات درون يك فايل استفاده مى شود.
صفحه 53:
ae a Som Serer een
شدهاند.
1 nee
ی
شكل زير تعريف كنيد:
۱ se
wPstreay wrtteFie("ODNPOT.DXT")
طبق کدهای فوق» ا ی
صفحه 54:
یک دفتر تلفن
برنامة زيرء جند نام و تلفن مربوط به هر يك را به ترتيب از كاربر دريافت كرده
و در فايلي به تام 1/۱۰/۳۱ ذخیره ميکند. کاربر براي پایان دادن
به ورودي بايد عدد (0 را تايب كند. Pree ae eee
ee ee
es Bd Ree a
سا
ریز
(قو ۳ ۵) ی اه ۳ اه و ۵ >> نج از
ود
و
eee
eee) od
Aes eed
toot << "Oawe
0
عدم >> السام << ' أ
aa
صفحه 55:
جستجوي یک شماره در دفثر ثلفن
اين برنامه» فایل تولید شده توسط برنامه قبل را به کار ميگیرد
و درون آن به دنبال یک شماره ثلفن ميگردد: مد رت
el داكا
میا
اک ی en ed
>> واسه >> ۱۲ >> ووم Se
atte ad
۱
Mia ee
ee ee ae a or
{
صفحه 56:
پابان جلسه هشتم