فصل پنجم
متن: کار با رشته های کاراکتری
5-1-رشته های کاراکتری
برای تعریف رشته های کاراکتری در متلب از علامت ‘ ‘ استفاده می شود:
مثال:
>> s=‘This is a character string’;
>> size(s)
ans=
1 26
نکته: در متلب رشته های کاراکتری نیز بعنوان ماتریس شناخته می شوند بطوریکه هر کاراکتر یک عنصر ماتریس محسوب می شود.
5-2-نمایش کد اسکی کاراکترها: تابع abs
برای نمایش کد اسکی یک رشته می توان از تابع abs متلب استفاده کرد:
>> s= ‘Hello’
>> u=abs(s)
u=
72 101 108 108 111
5-3-تبدیل کد اسکی به کاراکتر
برای تبدیل کد اسکی به کاراکتر از تابع char استفاده کنید.
>> s= ‘Hello’
>> u=abs(s)
u=
72 101 108 108 111
>> sNew=char(u)
sNew=
Hello
5-4-رفتار ماتریسی رشته ها
با رشته های کاراکتری متلب دقیقا می توان مانند ماتریسهای عددی رفتار کرد. مثلا می توان عملیات ریاضی را بر آنها اعمال کرد. در اینصورت متلب کد اسکی رشته را مورد استفاده قرار می دهد.
مثال: نمایش رشته از آخر به اول
>> s= ‘Hello’
>> sInv=s( end : -1 : 1);
>>disp(sInv)
olleH
5-5-ایجاد ماتریسهای کاراکتری(روش اول)
برای ایجاد یک ماتریس کاراکتری می توان از علائم [ ] و ; مانند ایجاد ماتریس های عددی استفاده کرد. اما باید دقت شود که تعداد ستونهای هر سطر مساوی باشند:
>> sm=[‘This is first line’ ; ‘This is second line’]
??? Error using ==> vertcat
All rows in the bracketed expression must have the same
number of columns.
>> sm=[‘This is first line ’ یک فاصله خالی در انتهای خط
‘This is second line’];
5-6-ایجاد ماتریسهای کاراکتری(روش دوم)
روش بهتر برای ایجاد یک ماتریس کاراکتری استفاده از تابع char می باشد:
>> line1=‘This is first line’ ;
>> line2= ‘This is second line’;
>>sm=char(line1,line2)
sm=
This is first line
This is second line
5-7-گرفتن رشته در حین اجرای برنامه
برای گرفتن یک رشته از ورودی با استفاده از تابع input در حین اجرای برنامه دو روش را می توان بکار برد:
روش اول روش معمول استفاده از این تابع است. یعنی تابع مذکور را تنها با یک آرگومان ورودی بکار می بریم. در اینصورت در حین اجرا، باید رشته را در داخل ‘ ‘ قرار داد.
روش بهتر استفاده از تابع input با یک آرگومان دوم ‘s’ می باشد که در اینصورت متلب ورودی کاربر را بعنوان رشته تلقی می کند حتی اگر یک عدد یا نام یک متغیر باشد.
5-7-گرفتن رشته در حین اجرای برنامه-ادامه-
مثال:
>>s=input(‘Please answer Yes or No: ’)
Please answer Yes or No: ‘No’
s=
No
———————-
>>s=input(‘Please answer Yes or No: ’,’s’)
Please answer Yes or No: No
s=
No
5-8- سایر توابع کار با رشته ها
strcmp(s1,s2) :درصورتیکه دو رشته یکسان باشند 1 و درغیر اینصورت 0 باز می گرداند
upper : تمای حروف یک رشته را به حروف بزرگ تبدیل می کند
lower :تمامی حروف یک رشته را به حروف کوچک تبدیل می کند
num2str :تبدیل عدد به رشته عددی
str2num :تبدیل رشته عددی به عدد
mat2str تبدیل ماتریسی از اعداد به رشته:
eval :اجرای فرمانی از متلب که بصورت رشته وارد شده باشد
نکته: تفاوت تابع num2str با تابع mat2str در این است که در تابع دوم رشته بازگردانده شده قابل اجرا توسط تابع eval است.
5-8- سایر توابع کار با رشته ها-ادامه…
مثال:
>> a=input(‘Enter <a> value= ‘);
enter <a> value= 12
>> disp([‘You number is’, num2str(a) , ‘ . Thank you!’]);
Your number is 12 . Thank you!
تکلیف ۱-۵: برنامه ای بنویسید که دو ماتریس عددی را از کاربر بگیرد و در متغیرهای x و y قرار دهد. سپس یک رشته کاراکتری شامل عبارتی ریاضی از متغیرهای x و y را از کاربر بگیرد و نتیجه آنرا بر اساس مقادیر متغیرهای ورودی تعیین کند.
تکلیف ۲-۵: برنامه ای بنویسید که یک رشته کاراکتری را از کاربر بگیرد و با تغییر کد اسکی آن، آنرا بصورت رمز در آورده نمایش دهد.
تکلیف ۳-۵: برنامه ای بنویسید که نتایج تمرین ۲-۵ را از حالت رمز خارج کرده و نمایش دهد.