آز آن جا که استراکچر ها انقدر ساده هستند که فقط با مثال قابل درک اند چند تابع ساده و مفید برای کار با استراکچرها را بررسی می کنیم
در این توابع از همان استراکچر personکه در جلسات قبل تعریف نمودیم استفاده می کنند.
struct date{
int yy,mm,dd;
};
struct person{
char name[40];
date tt;
float grade;
};
نکته:
نکته مهمی که یادم رفت بگم اینه که تعریف استراکچر ها باید قبل از تابع main باشند واین یک قاعده ی عمومی است و نه یک قاعده ی کلی یعنی ممکن است گاهی استراکچری جای دیگری تعریف شود.که بعنوان یک دانشجو با این حالت مواجه نخواهید شد(به احتمال زیاد)
در کلیه ی مثال ها فر ض می کنیم استراکچری از نوع personبه نام myvarداریم
مثال1:
تابع خواندن یک استراکچر از صفحه کلید.
void read(person *p){
cin>>p->name;
cin>>p->grade;
cin>>p->tt.dd;
cin>>p->tt.mm;
cin>>p->tt.yy;
}
1.فرا خوانی این تابع به صورت read(&myvar);خواهد بود.
2.آرگمان تابع به صورت اشاره گر تعریف شده چرا که باید مقادیر خوانده شده به برنامه ی اصلی بر گردانده شود.
3.به نحوه ی دسترسی به فیلدهای اشاره گر pتوجه کنید .(استفاده از عملگر(<-))
4.بعد از دسترسی به فیلد ttبرای دسترسی به فیلد های dd,mm,yyاز عملگر نقطه استفاده شده چرا که tt یک استراکچر است نه یک اشاره گر.
باز نویسی تابع بالا با استفاده از رفرنس ها بجای اشاره گر
void read(person &p){
cin>>p.name;
cin>>p.grade;
cin>>p.tt.dd;
cin>>p.tt.mm;
cin>>p.tt.yy;
}
فرا خوانی این تابع به صورت read(myvar);می باشد.
مثال 2:
تابع تعویض محتویات دو استراکچر:
void swap(person *p1,person *p2){
person tmp=*p1;
*p1=*p2;
*p2=tmp;
}
1.مانند همه اشاره گر ها برای دسترسی یه محتویات اشاره گر استراکچرها باید ار عملگر ستاره استفاده کنیم.
2.آرگمان ها به صورت اشاره گر هستند چون باید تغییرات به برنامه ی اصلی منتقل شود.
3.فراخوانی این تابع به صورت swap(&myvar1,&myvar2);است
باز نویسی لین تابع با رفرنس ها:
void swap(person &p1,person &p2){
person tmp=p1;
p1=p2;
p2=tmp;
}
3.فراخوانی این تابع به صورت swap(myvar1, myvar2);است
آموزش Visual Basic
در این وبلاگ سعی دارم طریقه برنامه نویسی با Visual Basic به صورت مقدماتی آموزش دهم.
(توابع داخلی)
LoadPicture: این تابع یک تصویر را به برنامه اضافه می کند. در داخل پرانتز مسیر تصویر قرار می گیرد.مثل:
Image1.Picture = LoadPicture("c:\Pic1.bmp")
MsgBox: تابعی است که یک جعبه پیام را به کاربر نشان می دهد.
همانطور که می بینید جعبه پیام یک آیکون، یک پیام و چند دکمه فرمان دارد. شکل کلی این دستور به صورت مقابل است.
intResponse=MsgBox(strPrompt,intStyle,strTilte)
آرگمان اول اجباری و بقیه ارگمان ها اختیاری است. StrPrompt پیامی است که جعبه پیام نشان می دهد. اگر آرگمان های دیگر را مشخص نکنیم تنها پیام با دکمه OK نشان داده می شود. آرگمان دوم نوع دکمه ها و آیکون ها را مشخص می کند. strTitle تیتر جعبه پیام را مشخص می کند. intResponse کد دکمه ای را که کاربر فشار داده در خود نگه می دارد که با دستور If یا Select case می توان آن را بررسی کرد. دکمه های این جعبه در لیست پایین آمده است:
vbOkOnly دکمه OK
vbOKCancel دکمه های OK و Cancel
vbAbortRetryIgnore دکمه های Abort,Retry,Ignore
vbYesNoCancel دکمه های Yes,No,Cancel
vbYesNo دکمه های Yes,No
vbRetryCancel دکمه های Retry,Cancel
آیکون هایی که می توان استفاده کرد به شرح زیر است:
vbCritical
vbQuestion
vbExclamation
vbInformation
بین دکمه و ایکون باید علامت + بگذاریم. مقدارهایی که جعبه پیام می تواند بر گرداند به شرح زیر است:
|
نام ثابت |
مقدار |
|
vbOK |
1 |
|
vbCancel |
2 |
|
vbAbort |
3 |
|
vbRetry |
4 |
|
vbIgnore |
5 |
|
vbYes |
6 |
|
vbNo |
7 |
مثال:
Dim I As Integer
I = MsgBox("Do you want to exit?", vbYesNo + vbQuestion, "Exit")
Select Case (I)
Case 6
MsgBox ("Yes")
Case 7
MsgBox ("No")
End Select
InputBox: جعبه ای که سوالی می کند و کاربر باید جواب را وارد کند.
شکل کلی تابع به صورت زیر است:
strAnswer = InputBox (پیام,تیتر,مقدار پیش فرض)
توابع عددی:
Int(Value) محاسبه جزء صحیح
Fix(Value) اعشار را از عدد حذف می کند.
Log(Value) محاسبه لگاریتم طبیعی
Atn(Value) محاسبه آرکتانژانت
Cos(Value) محاسبه کسینوس
Sin(Value) محاسبه سینوس
Tan(Value) محاسبه تانژانت
Abs(Value) محاسبه قدر مطلق
Sqr(Value) محاسبه جذر
این توابع با عدد های داخل پرانتز سروکار دارند.
توابع تشخیص نوع:
IsEmpty() اگر متغییر داخل پرانتز مقدار نگرفته باشد True برمی گر داند.
IsNull() اگر مقدار متغییر داخل پرانتز Null باشد True برمی گر داند.
IsNumeric() اگر متغییر داخل پرانتز از نوع عددی باشد یا توانایی تبدیل به عدد را داشته باشد True برمی گر داند.
توابع تبدیل نوع: این توابع برای تغییر نوع یک متغییر به نوع دیگر به کار می رود. مسئله مهمی که باید توجه کنید این است که باید حدود انواع متغییر را در نظر بگیرید تا ازاین توابع انتظار درست کار کردن داشته باشید.
CBool() تبدیل آرگمان به Boolean
CByte() تبدیل آرگمان به Byte
CCur() تبدیل آرگمان به Currency
CDbl() تبدیل آرگمان به Double
CDec() تبدیل آرگمان به Decimal
CInt() تبدیل آرگمان به Integer
CLng() تبدیل آرگمان به Long
CSng() تبدیل آرگمان به Single
CStr() تبدیل آرگمان به String
CVar() تبدیل آرگمان به Variant
توابع رشته:
Len() تعداد حرف یک متغییر String را برمی گرداند.
Right() قسمتی از یک رشته را از سمت راست بر می گرداند.
Left() قسمتی از یک رشته را از سمت چپ بر می گرداند.
Mid() قسمتی از یک رشته را از وسط بر می گرداند.مثال:
Dim str,str1,str2,str3 as String
str = "abcdefg"
str1 = Right(str,2) ‘ fg
str2 = Left(str,2) ‘ ab
str3 = Mid(str,3,2) ‘ cd
UCase() تمام حروف متن داخلش را تبدیل به حروف بزرگ می کند.
LCase() تمام حروف متن داخلش را تبدیل به حروف کوچک می کند.
توابع اسکی: هر کاراکتر دارای یک کد است.توابع Chr() و Asc() برای تبدیل اعداد به کاراکتر و بلعکس هستند.مثال:
Str = Chr(65) ‘ A
I = Asc("A") ‘65