درصورتي اجرا خواهد شد كه a
if (a < b) if (a if (c ; if (c ;
else ; }
else ; else ;
بعنوان يك مثال ديگر، به نمونه زير دقت كنيد:
if () {
if ()
if () ;
else ; // this refer to if ()
}
else ;//this refer to if
برنامه 2) برنامه اي بنويسيد كه 3 عدد را دريافت و حداكثر آنها را چاپ كند.
#include
void main() {
int a, b, c, max;
printf("Please enter 3 numbers :");
scanf("%d %d %d",&a, &b, &c);
if (a> b)
if (a> c) max = a;
else max= c;
else if (b> c) max = b;
else max = c;
printf("Maximum is %d",max);
}
ساختار تكرار while
همانطور كه در بخش الگوريتمها نيز گفته شد، يك ساختار تكرار باعث مي شود تا زمانيكه شرط خاصي برقرار است، عمليات مشخصي تكرار گردد. دستور while نيز باعث ايجاد يك حلقه تكرار به شكل زير مي گردد:
while () ;
اين دستور باعث مي شود تا زمانيكه شرط موجود در قسمت درست است، دستور قسمت تكرار شود، و به محض اينكه شرط نادرست گردد، كنترل اجرا به دستور بعد از حلقه مي رود.
بازهم دستور موجود در قسمت مي تواند يك دستور مركب باشد، دراينصورت دستور بصورت زير درخواهد آمد:
while () {
;
;
…….
;
}
برنامه 3) برنامه اي بنويسيد كه يك عدد را دريافت و فاكتوريال آن را محاسبه و چاپ نمايد.
#include
void main() {
int i,number;
long int factorial;
printf("Please enter number :");
scanf("%d",&number);
factorial = 1;
i = 1;
while (i <= number) {
factorial *= i;
i ++;
}
printf("Factorial of %d is %ld"number,factorial);
}
برنامه 4) برنامه اي بنويسيد كه يك متن را از كاربر دريافت و آن را با حروف بزرگ چاپ كند.
#include
void main() {
char ch;
ch = getch() ;
while (ch != 13) {
if (ch>= 'a' && ch <= 'z')
ch -= 32;
putch(ch);
ch = getch();
}
}
ساختار تكرار for
همانگونه كه در مثال مربوط به حل مسئله فاكتوريال ديده مي شود، گاهي نياز به حلقه تكراري داريم كه به تعداد دفعات مشخصي تكرار گردد. در چنين مواقعي با استفاده از يك متغير شمارنده، تعداد تكرارها را تا رسيدن به مقدار مورد نظر می شماریم و سپس به حلقه پایان می دهیم. به چنین حلقه هایی، تکرار تحت کنترل شمارنده یا تکرار معین می گوییم، چرا که تعداد تکرار ها از قبل مشخص است. چنین حلقه ای دارای 3 جزء اصلی می باشد:
1- مقداردهی اولیه به متغیر شمارنده حلقه
2- شرط پایان حلقه (پایان شمارش)
3- نحوه افزایش متغیر شمارنده
از آنجا که در تمام حلقه هایی که تکرار معین دارند، همین ساختار استفاده می شود؛ در اکثر زبانهای برنامه سازی یک ساختار تکرار ویژه، بنام حلقه for، برای اینکار در نظر گرفته شده است. اما در این بین، حلقه تکرار for در زبان C دارای ویژگیهای خاصی است که آنرا از سایر زبانها متمایز کرده و به آن قدرت بسیار بالایی داده است. شکل کلی این دستور بصورت زیر است:
for ( ; ; ) ;
وظایف عبارات فوق بشرح زیر است :
1- ، مقداردهی اولیه به متغیر حلقه
2- ، شرط اجرای حلقه
3- ،نحوه افزایش متغیر حلقه
البته همانندموارد قبل بازهم قسمت می تواند یک دستور مرکب باشد. نحوه کار حلقه بدینصورت است که در ابتدای شروع حلقه فقط برای یکبار اجرا می شود. سپس عبارت بررسی می گردد و در صورتیکه درست ارزیابی شود (≠ 0)، آنگاه دستور اجرا شده و سپس به ابتدای حلقه باز می گردد. از اجرای دوم به بعد، ابتدا عبارت اجرا می گردد (یعنی متغیر حلقه افزایش می یابد) و سپس عبارت بررسی می گردد و مجددا درصورت درست بودن، حلقه تکرار می شود. اینکار تا زمانیکه مقدار عبارت نادرست ( = 0) ارزیابی شود، تکرار می گردد. به محض اینکه این اتفاق بیفتد، کنترل اجرا به دستور پس از حلقه انتقال می یابد.
درحقیقت هر حلقه for معادل با حلقه while زیر است:
;
while () {
;
;
}
بعنوان یک مثال ساده، تکه برنامه زیر اعداد بین 0 تا 100 را چاپ می نماید:
int count;
for (count = 0; count <= 100; count ++)
printf(“%d “,count);
اگر بخواهيم تنها مضارب 5 چاپ شوند، حلقه را به شكل زير تغيير مي دهيم:
for (count = 0; count <= 100; count += 5)
حتي مي توان مضارب 5 را از آخر به اول چاپ كرد:
for (count = 100; count> = 0; count -= 5)
قسمت شرط مي تواند يك شرط مركب نيز باشد، بعنوان مثال:
for (count = 0; count <100 && sw==1; count ++)
كه در اينصورت در هربار اجراي حلقه، علاوه بر مقدار شمارنده، مقدار متغير sw نيز بررسي مي گردد.
نكته آخر اينكه قسمت مقدار دهي اوليه و افزايش متغير نيز مي توانند شامل چند عبارت باشند كه در اينصورت با كاما از يكديگر جدا مي شوند. بعنوان مثال:
for (a = 0, b = 100; b – a> 50; a++, b--)
در ادامه یک مثال کاملتر برای تشریح این حلقه آمده است:
برنامه 5) برنامه ای بنویسید که تعدادی عدد را از کاربر دریافت و 2 عدد بزرگتر و مجموع آنها را محاسبه و چاپ نماید.
#include
void main() {
int i, n, number;
int sum, max1, max2;
printf(“please enter n : “);
scanf(“%d”,&n);
sum = 0;
max1 = max2 = -1;
for (i=1 ; iprintf(“enter number : “);
scanf(“%d”,&number);
sum += number;
if (number> max1) {
max2 = max1;
max1 = number;
}
else if (number> max2)
max2 = number;
} //end for
printf(“Sum = %d, Maximum 1=%d, Maximum 2= d”, sum, max1, max2);
}
نكته جالب در مورد حلقه for آنستكه مي توان هريك از 3 عبارت فوق را حذف كرد. به مثالهاي زير توجه كنيد:
for (;i<100; i++)
مقداردهي اوليه حذف شده است. اين در صورتي است كه بنحوي قبل از شروع حلقه، مقدار متغير i تعيين شده باشد.
for (i= 0;i<100;)
نحوه افزايش متغير حلقه حذف شده است. اين مورد زماني بكار مي رود كه نحوه افزايش متغير حلقه پيچيده بوده و توسط برنامه نويس در داخل حلقه انجام شود.
for (;i<100;)
هر دو مورد فوق حذف شده است.
for (i=0; ;i++)
شرط ادامه حلقه حذف شده است. اين مورد زياد متداول نيست و ممكن است باعث شود حلقه براي هميشه اجرا شود. در چنين مواردي حتما بايد در داخل حلقه با استفاده از دستور break (كه در قسمتهاي بعدي توضيح داده خواهد شد)، راهي براي خروج از حلقه قرار داده شود.
حلقه do / while
همانگونه كه در قسمت الگوريتمها توضيح داده شد، در بعضي مواقع لازم است كه شرط ، در انتهاي حلقه بررسي گردد. دستور do / while از نوع حلقه هايي است كه ابتدا دستورات را اجرا كرده و سپس شرط ادامه حلقه را بررسي مي نمايد. شكل كلي اين دستور بصورت زير است:
do
;
while () ;
نحوه كار اين حلقه به اين صورت است كه ابتدا دستور اجرا مي گردد، سپس شرط حلقه بررسي شده و درصورتيكه درست بود، به ابتداي حلقه باز گشته و آن را مجددا اجرا مي كند. البته دستور مي تواند يك دستور مركب باشد.
بعنوان يك مثال كوچك، ممكن است شما از كاربر خواسته ايد كه اعلام كند آيا مايل به ادامه هست يا خير؟ وي بايد پاسخ y يا n بدهد، اما ممكن است يك حرف اشتباه (مانند m) وارد كند. قصد داريم تكه برنامه اي بنويسيم كه عمل دريافت پاسخ را تا زمانيكه يك حرف درست وارد شود، تكرار كند. مسلم است كه بايد ابتدا يك پاسخ وارد شود و سپس درستي آن بررسي گردد.
char answer;
do {
printf("Do you want to continue (y/n) ?");
answer = getch();
} while (answer != 'y' && answer != 'n') ;
بعنوان يك نمونه كاملتر به مثال زير توجه كنيد.
برنامه 6) فرض كنيد نمرات يك گروه از دانشجويان بصورت درجه بندي (A, B, C and D) آماده شده است. برنامه اي بنويسيد كه نمرات دانشجويان را دريافت و در پايان درصد هريك از نمرات را محاسبه و چاپ نمايد. در ضمن از آنجا كه تعداد دانشجويان از قبل مشخص نيست، كاربر در انتهاي نمرات، حرف Q (مخفف Quit) را وارد مي نمايد.
#include
void main() {
int aCount, bCount, cCount, dCount, n;
char grade;
aCount = bCount = cCount = dCount = n = 0;
do {
printf("Enter grade (Q for Quit) : ");
grade = getch() ;
n ++;
if (grade == 'A') aCount ++;
else if (grade == 'B') bCount ++;
else if (grade == 'C') cCount ++;
else if (grade == 'D') dCount ++;
else if (grade == 'Q') n --;
else {
printf("Wrong grade, try again.\n");
n --;
}
} while (grade != 'Q' ) ;
printf("Statistics :\n");
printf("Grade A : %f percent\n", float(aCount)/float(n));
printf("Grade B : %f percent\n", float(bCount)/float(n));
printf("Grade C : %f percent\n", float(cCount)/float(n));
printf("Grade D : %f percent\n", float(dCount)/float(n));
} // end main
ساختار switch / case
اگر مجددا به برنامه 6 دقت كنيد، خواهيد ديد كه در بعضي موارد قصد داريم برحسب مقادير مختلف يك عبارت (در اينجا مقدار متغير grade)، عمليات متفاوتي را انجام دهيم. گرچه اينكار با استفاده از دستورات if / else متداخل قابل انجام است، اما ساختار مناسبتري نيز براي اينكار وجود دارد، كه به آن ساختار چندانتخابي مي گوييم. شكل كلي ان ساختار بصورت زير است:
switch () {
case : ;
;
…
;
case : ;
;
…
;
…
default : ;
;
…
;
}
برنامه 7) برنامه 6 را با استفاده از دستور switch / case بازنويسي نماييد. برنامه را بگونه اي بنويسيد كه حروف بزرگ و كوچك هردو مورد قبول واقع شود.
#include
void main() {
int aCount, bCount, cCount, dCount, n;
char grade;
aCount = bCount = cCount = dCount = n = 0;
do {
printf("Enter grade (Q for Quit) : ");
grade = getch() ;
n ++;
switch (grade) {
case 'A' :
case 'a' : aCount ++; break ;
case 'B' :
case 'b' : bCount ++; break ;
case 'C' :
case 'c' : cCount ++; break ;
case 'D' :
case 'd' : dCount ++; break ;
case 'Q' :
case 'q' : n--; break ;
default : printf("Wrong grade, try again.\n");
n --;
} //end switch
} while (grade != 'Q' ) ;
printf("Statistics :\n");
printf("Grade A : %f percent\n", float(aCount)/float(n));
printf("Grade B : %f percent\n", float(bCount)/float(n));
printf("Grade C : %f percent\n", float(cCount)/float(n));
printf("Grade D : %f percent\n", float(dCount)/float(n));
} // end main
برنامه 8) برنامه اي بنويسيد كه يك عدد، يك عملگر و يك عدد ديگر را از كاربر دريافت و پس از اعمال عملگر برروي دو عدد، حاصل را چاپ نمايد.
#include
void main() {
int number2, number2, result;
char op ;
printf("Please enter number1 operator number2 : ");
scanf("%d %c %d",&number1, &number2, &op, &number3);
result = 0;
switch (op) {
case '+' : result = number1 + number2 ; break;
case '-' : result = number1 - number2 ; break;
case '*' : result = number1 * number2 ; break;
case '/' : if (number2 != 0) result = number1 / number2 ;
else printf("There is no answer!\n");
break;
case '%' : if (number2 != 0) result = number1 % number2 ;
else printf("There is no answer!\n");
break;
default : printf("invalid operator!\n");
}
printf("Result = %d",&result);
}
دستورات break و continue
اين دستورات قادرند مسير اجراي برنامه را در يك حلقه تكرار تغيير دهند. البته اين تغيير مسير بصورت كنترل شده بوده و همانند دستور goto نمي توان به هرجاي دلخواه پرش كرد.
چنانچه دستور break در يك ساختار while، for، do/while ويا switch بكار رود، باعث مي شود كه بلافاصله كنترل اجراي برنامه از ساختار خارج شده و به اولين دستور پس از ساختار برود. قبلا كاربرد اين دستور را در switch ديده ايد. در اينجا به مثال زير دقت كنيد:
برنامه 9) برنامه 5 را بگونه اي تغيير دهيد كه فقط اعداد مثبت را بپذيرد، و درصورتيكه عدد منفي وارد شد، بلافاصله به عمليات خاتمه داده و نتايج تا همين نقطه را چاپ نمايد.
#include
void main() {
int i, n, number;
int sum, max1, max2;
printf(“please enter n : “);
scanf(“%d”,&n);
sum = 0;
max1 = max2 = -1;
for (i=1 ; iprintf(“enter number : “);
scanf(“%d”,&number);
if (number <0) break; // this is the difference
sum += number;
if (number> max1) {
max2 = max1;
max1 = number;
}
else if (number> max2)
max2 = number;
} //end for
printf(“Sum = %d, Maximum 1=%d, Maximum 2= d”, sum, max1, max2);
}
اما دستور continue فقط در حلقه هاي while، for و do/while بكار مي رود. نحوه عمل آن بدين صورت است كه به محض آنكه كنترل اجرا به اين دستور برسد، بلافاصله از باقيمانده حلقه صرفنظر كرده و مجددا به ابتداي حلقه باز مي گردد و اجراي آن را از سر مي گيرد. در مورد حلقه for، پس از بازگشت به ابتداي حلقه، عمل افزايش مقدار متغير حلقه نيز صورت مي پذيرد.
بعنوان مثال، چنانچه بخواهيم برنامه 9 را بگونه اي تغيير دهيم كه از اعداد منفي صرفنظر كند و آنها را در محاسبات لحاظ نكند، كافيست دستور
if (number <0) break;
را به دستور زير تبديل كنيم:
if (number <0) continue;
دراينصورت، چنانچه عدد منفي باشد، بدون اينكه محاسبات بعدي انجام شوند، كنترل به ابتداي حلقه بازگشته و عدد بعدي را دريافت مي كند.
ادامه مطلب
+
نوشته شده در شنبه بیست و نهم دی 1386ساعت 17:21 توسط و.د
|
PHP يک زبان برنامه نويسی با کد باز (Open-Source) است که اگرچه در ابتدا صرفا جهت برنامه نويسی تحت وب توليد شد، امروزه کارآييهای فراوانی پيدا کرده است. PHP يک زبان تحت سرور است (Server-Side) که طبيعتا برای اجرا نياز به يک برنامه سرويس دهنده وب (Web Server) دارد.
کسانيکه مانند خود من قبلا با PERL کار کرده اند و حالا قصد دارند با PHP کار کنند، احتمالا مثل من در ابتدا به مشکلاتی بر خواهند خورد اما مطمئن باشيد که PHP را سريع خواهيد آموخت. آنچه به نظر من از خصوصيات خوب PHP بشمار می آيد آن است که با وجود شباهت PHP با PERL، PHP پيچيدگيهای PERL را کمتر دارا می باشد. هرچند که قدرت PERL بر روی متن ها غير قابل انکار است اما فراموش نکنيد که PHP را صرفا برای محيط وب ساخته اند پس به اندازه کافی ( و حتی بيش از حد کافی ) امکانات کار با stringها را به شما ارائه خواهد کرد. فکر می کنم مقدمه چينی بيش از اين هم حوصله شما را سر می برد و هم من را از موضوع دور می کند پس بر می گرديم به PHP.
برای شروع کار با PHP چه نياز داريم؟
PHP برای اجرا نياز به يک Web-Server دارد. دم دست ترين Web-Server برای شما احتمالا IIS خواهد بود، چرا که با استفاده از سی دی Windows قابل نصب است. نمی خواهم در اين مقاله به شرح نصب IIS (يا وب سرورهای ديگر) بپردازم اما اگر نياز به شرح آن داريد لطفا با من تماس بگيريد تا بطور مفصل آن را شرح دهم (آدرس پست الکترونيکی من در انتهای اين مقاله آمده است). برای کسانيکه بقول يکی از دوستان من، "مرام Open Source" گلوی آنها را می فشارد شايد بهتر باشد از Apache به عنوان Web-Server استفاده کنند. (البته اگر از حق هم نگذريم Apache خيلی از IISبهتره!!!)
اگر Web-Server مورد علاقه شما به درستی بر روی دستگاه شما نصب شده است، حالا نياز داريد که PHP را بر روی آن نصب کنيد. برای بدست آوردن کد PHP از آدرس http://www.php.net/downloads.php استفاده کنيد.
طبيعتا برای مشاهده نتيجه اجرای فايلهای PHP نياز به يک مرورگر وب (Web Browser) داريد که مسلما رايجترين آن Internet Explorer است. برای درست کردن هر فايل PHP هم نياز به يک ويرايشگر ساده متنی داريد (مثلا Word pad يا Note pad ) توجه کنيد که از ويرايشگرهای حرفه ای مانند Microsoft Word نمی توانيد استفاده کنيد زيرا اين ويرايشگرها از کاراکترهای پنهانی فراوانی استفاده می کنند که در هنگام ذخيره فايل متنی اين کاراکترها هم ذخيره خواهند شد که باعث عدم اجرای دستورات PHP می شوند. با هم يک کد ساده PHP بنويسيم.
حالا می خواهيم اولين کد PHP را با هم درست کنيم. ويرايشگر متن را باز کنيد (مثلا Word pad) و در آن چنين بنويسيد:
echo (“Hi! I am the first PHP script you have made!”);
?>
حالا فايلتان را با عنوان 1st.php و در Web Server Local Folder ذخيره نماييد (اگر از IIS استفاده می کنيد اين فولدر در درايوی که Windows را در آن نصب کرده ايد، با نام Inetpub وجود دارد. در داخل آن فولدر ديگری به نام wwwroot وجود دارد که بايد فايلتان را در آن بريزيد.)
حالا مرورگر وب خود را باز کنيد (مثلا Internet Explorer) و در قسمت آدرس آن ابتدا //:http و سپس نام کامپيوتر خود و يا آدرس IP آن را تايپ نماييد (نام کاميوتر را در Control panel/System/Network Identification و IP را در صورتيکه تعيين کرده باشيد در قسمت Command Prompt و با اجرای دستور ipconfig می توانيد مشاهده کنيد) و پس از يک Backslash (/) نام فايل (1st.php) را تايپ نموده و Enter را بزنيد. بعنوان مثال نام کامپيوتر من siamak است. پس بايد در قسمت آدرس مرورگرم خط زير را بنويسم:
http://siamak/1st.php
اگر همه چيز را تا اينجا درست انجام داده باشيد، متن زير در مرورگرتان پديدار می شود:

همانطور که احتمالا متوجه شديد، بايد کد PHP خود را در داخل تگ قرار دهيد. البته می توانيد از روشهای ديگر نيز استفاده کنيد اما متداولترين روش همين است.
دستور ()echo در PHP وظيفه چاپ در خروجی را بر عهده دارد.
می توانستيم همين کد را با کمک تگهای HTML و بصورت زير نيز بنويسيم:
echo ("Hi! I am the first PHP script you have made!");
?>
ادامه مطلب
+
نوشته شده در شنبه بیست و نهم دی 1386ساعت 17:18 توسط و.د
|
|
خلاصه درس: مسير آينده را در اين درس مشخص میکنم. لغاتی از ديکشنری جارگون را میگم. بحث Footprinting را با پيدا کردن ip سايت شروع میکنيم.
|
| |
|
|
|
| |
| ◊ ترسيم مسير برای آينده: |
۱- اولين و مهمترين تصميم انتخاب نوع کامپيوتری است که میخواهيد هک کنيد ( کلاينت يا سرور )، زيرا روشهک کردن ايندو بجز در مراحل ابتدايی کاملا متفاوت است. ۲- دومين گام انتخاب يک کامپيوتر مشخص (مثلا کامپيوتری که فلان سايت را نگه میدارد که مثالی برای کامپيوتر سرور است و يا کامپیوتر فلان شخصی که با او چت میکنيد که مثالی برای کامپيوتر کلاينت است) و جمعآوری اطلاعات در مورد آن است. اين جمعآوری اطلاعات از قربانی (Victim) را Footprinting گويند. اولين مشخصهای که بايد کشف شود، ip اوست. يکی ديگر از اطلاعات مهم که معمولا دنبالش هستيم، پيدا کردن نوع سيستمعامل و نيز برنامههايی است که کامپيوتر شخص از آنها بهره میبرد. يکی از مهمترين ( و گاه خطرناکترين) کارها، تستکردن پورتهای آن کامپيوتر برای ديدن اينکه کدام پورتها باز و کدامها بسته هستند. ۳- مرحله بعدی در واقع شروع تلاش برای نفوذ به سيستم است. اين نفوذ سطوح مختلف دارد و بالاترين آن که در کامپيوترهای سرور روی میدهد، حالتی است که بتوان username و password مربوط به مدير کامپيوتر (administrator) يا superuser را بهدست آورده و از طريق اين Shell Account به نهايت نفوذ دست يابيم ولی گاه بهدلايل مختلف (مربوط به سطح علمی خود و ... ) نمیتوان به اين سطح دستيافت اما به هر حال برای مرحله بعدی میتواند استفاده شود. اين مرحله جايی است که هنر شما يه عنوان يک هکر آغاز شده و نيز به پايان میرسد. ۴- اين مرحله بعد از نفوذ روی میدهد که در آن به يک سطحی از کنترل سيستم رسيدهايد. رفتار شما در اين مرحله مشخص میکند که چه نوع هکر هستيد(سامورايی، واکر و يا کراکر) و اينکه آيا جنبه ياد گرفتن را داشتهايد يا نه، همينجا مشخص خواهد شد. ۵- مرحله آخر پاک کردن ردپاست تا گير نيفتيم (البته بعضی وقتها برای کلاس گذاشتن بايد گير بيفتيم، هه هه ...). بعضی از سيستمها آمار login را نگه میدارند که در مورد آنها اين مرحله بسيار مهم است.
خلاصه مطالب بالا به اين صورت است:
Selection -> FootPrinting -> Penetration -> [Changings] -> Cleaning |
| |
|
|
|
| |
| ◊ شروع مبحث Footprinting |
گفتيم که اولين مرحله جمعآوری اطلاعات است که به آن FootPrinting میگويند. اين مبحث را با آموزش روش پيدا کردن ip شروع میکنيم.
|
| |
| ◊ پيدا کردن ip يک سايت با دانستن آدرس اينترنتی |
برای اين کار روشهای مختلفی هست:
۱- در (Internet Explorer (IE آدرس را تايپ کنيد و Enter را فشار دهيد. در قسمت پايين مرورگر يعنی Status Bar پس از چند لحظه برای مدت کوتاهی ip نمايش داده میشود و میتوانيد آنرا يادداشت کنيد. اگر طول اين مدت بسيار کوتاه است میتوانيد از صفحه عکس بگيريد ( با دکمه Print Screen ) و در يک نرمافزار گرافيکی بعد از باز کردن يک صفحه خالی به کمک Ctrl+V آنرا مشاهده کنيد. [ عجب راه احمقانهای ;-) اگر اين کار را برای www.yahoo.com انجام دهيم:
که همان شماره ip برای www.yahoo.com است. نکته بسيار مهم اين است که بهدليل ضريب اشتباه بسيار بالای آن هيچگاه از اين روش استفاده نکنيد. نتايج ممکن است کاملا اشتباه باشد که بعدا ميگم چرا.
۲- دستور ping را در command prompt صادر کنيد:
در اين حالت میتوانم ip آن سايت را ملاحظه کنم. (البته کار اصلی ping يک چيز ديگست و ميشه گفت داريم ازش سوءاستفاده میکنيم). مثلا برای پيدا کردن ip سازين مینويسم: ping sazin.com
و جواب میشنوم:
Pinging sazin.com [63.148.227.65] with 32 bytes of data:
Reply from 63.148.227.65: bytes=32 time=821ms TTL=111
Reply from 63.148.227.65: bytes=32 time=821ms TTL=111
Reply from 63.148.227.65: bytes=32 time=822ms TTL=111
Reply from 63.148.227.65: bytes=32 time=811ms TTL=111
Ping statistics for 63.148.227.65:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 811ms, Maximum = 822ms, Average = 818ms ملاحظه میفرماييد که ip سازين 63.148.227.65 است. اگر دستور ping را بهجای sazin.com برای www.sazin.com صادر کنيد، جواب همان است. البته برای سايتهای بزرگ جوابهای حاصل متفاوت خواهد بود.
۳- روش بعدی و کاملترين روش whois کردن به بعضی سايتهای خاص است. بعدا اين را کاملتر توضيح میدم ولی فعلا روشش رو میگم. آدرس زير را در مرورگر خود تايپ کنيد: http://www.samspade.org/t/ipwhois?a=xxxxxx که بهجای xxxxxx آدرس مورد نظر را تايپ کنيد. مثلا برای sazin.com يکی از دو آدرس زير را بايد تايپ کرد: http://www.samspade.org/t/ipwhois?a=sazin.com
http://www.samspade.org/t/ipwhois?a=www.sazin.com چيزی که در صفحه ظاهر میشود به صورت زير است: whois -h magic 63.148.227.65
sazin.com resolves to 63.148.227.65
Trying whois -h whois.arin.net 63.148.227.65
Qwest Communications NET-QWEST-BLKS-2 (NET-63-144-0-0-1)
63.144.0.0 - 63.151.255.255
Neutron Digital Media Corp. QWST-63-148-224 (NET-63-148-224-0-1)
63.148.224.0 - 63.148.231.255
# ARIN Whois database, last updated 2002-09-04 19:05
# Enter ? for additional hints on searching ARIN"s Whois database.که آدرس ip در سطر اول و دوم ذکر شده است.
اگر دو روش آخر را برای سايت بزرگ yahoo انجام دهيم، نتايج زير را میبينيم: --> روش ping : www.yahoo.com ====> 64.58.76.229 yahoo.com ====> 66.218.71.198 --> روش whois : ...و www.yahoo.com ====> 66.218.71.86 64.58.79.230 و yahoo.com ====> 66.218.71.198
نتايج حاصل گويای آن است که چرا بهتر است از whois استفاده کنيم. |
ادامه مطلب
+
نوشته شده در شنبه بیست و نهم دی 1386ساعت 17:17 توسط و.د
|
تعاريف پايه و نكات كاربردي در لينوكس و يونيكس
در ابتدای كاربا
سيستمهای عاملهای يونيكس بيس مثل لينوكس نكات مهمی وجود دارد كه دانستن آنها به هر
كاربر در امر آشناشدن با اين سيستم عامل و فهميدن مفاهيم پايه آن كمك ميكند . در
اين مقاله تصميم دارم تعدادی از اين مفاهيم را بصورت خلاصه برشمرده و شما را با
آنها آشنا نمايم :
1- فرامين و دستورات
در محيط سيستم عاملهای گنو / لينوكس به بزرگی و كوچكی حروف حساس يا باصطلاح
case sesitive
ميباشند ، اين بدان معناست كه كلماتی چون Mozilla,
MOZILLA, mOzilla , mozilla
كاملا با هم متفاوت هستند و بعنوان چهار دستور جداگانه تلقی ميشوند .و بصورت پيش
فرض فقط دستور
mozilla
برای اجرای مرورگر اينترنت موزيلا در محيط اين سيستم قابل اجراست و بقيه دستورات
بدون نتيجه خواهد بود . همچنين كلمه عبور ورودی شما به سيستم و كلمه رمز عبور نيز
از اين قائده پيروی ميكنند .
2- نام فايلها در
لينوكس ميتواند حداكثر شامل 256 كاراكتر باشد كه اين كاراكترها كليه حروف و اعداد و
( - و _ و . ) و حتی تعدادی كاراكترهای غير مصطلح ديگر باشد .
3- فايلهائی كه نام
آنها با دات يا ( . ) آغاز ميشود را نميتوان با دستور
ls
ياdir
مشاهده و ليست نمود . چرا كه سيستم تصور ميكند اين فايلها دارای
خصوصيت پنهان بوده و بايد حتما از دستور ls
?a برای
مشاهده همه فايلهای موجود در مسير جاری استفاده كرد . (a=all)
4- كاراكتر
/
در لينوكس مشابه همتای خود درداس يعنی
\
بوده و به معنای ريشه تمام دايركتوريهای موجود در سيستم فايل لينوكس است . برای
مثال برای رفتن به يكی از دايركتوريهای سيستم از دستور
cd /usr/doc
استفاده ميشود .
5- در لينوكس همه
دايركتوريها در زير شاخه يك دايركتوری اصلی بنام ريشه يا
root
قرار دارند و هيچگونه درايوی مثل داس يا ويندوز (c,d,e,f,?)
وجود ندارد . اين بدان معناست كه حتی درايوهای فيزيكی مثل هارد ديسكهای متعدد و يا
حتی درايوهای شبكه پس از اتصال به سيستم فايل لينوكس در زير مجموعه دايركتوری ريشه
root
قرار ميگيرند .
6- در فايلهای
پيكربندی سيستمی لينوكس كليه خطوط دستوری كه با كاراكتر # شروع ميشوند صرفا حاوی
توضيحاتی برای راهنمائی كاربران ميباشند و در هنگام اجرای فايل پيكربندی ناديده
گرفته خواهند شد .
7- لينوكس بصورت
ذاتی يك سيستم چند كاربره ميباشد و كليه تنظيمات سيستمی و فايلهای متعلق به هر
كاربر در يك دايركتوری اختصاصی وی در شاخه
/home/
قرار ميگيرد . تنظيمات كاربری و كلمه شناسائی و ساير تنظيمات اختصاصی اعمال شده در
سيستم توسط هر كاربر در دايركتوری
home
مخصوص وی و در فايلهائی قرار ميگيرد كه همگی با نقطه يا " . " آغاز ميگردند .
8- فايلهای تنظيمات
عمومی سيستم در دايركتوری
/etc
قرار دارند .
9- در لينوكس همچون
ساير سيستمهای عامل چند كاربره همه دايركتوريها و حتی تك تك فايلها حاوی اطلاعات
مربوط به خصوصيات و سطح دسترسی قابل تعريف permissions
ميباشند .
10- دستورات تكميلی
هر فرمان اجرا شده در خط فرمان متنی با كاراكتر - و وقتی فرمان كمكی حاوی بيش
از يك كاراكتر باشد با - - آغاز ميشوند. اين مورد را ميتوان با برخی سوئيچها
كمكی فرمان داس / مقايسه كرد .
11- هنگامی كه
بخواهيد يك فرمان در پس زمينه سيستم اجرا شود بايد پس از تايپ دستور يا فرمان
مربوطه كاراكتر & را قرا دهيد .
ادامه مطلب
+
نوشته شده در شنبه بیست و نهم دی 1386ساعت 17:12 توسط و.د
|
متغییرهایی که تاکنون معرفی کردیم مهمترین انواعی هستند که در اغلب برنامه های جاوا به کار می رود. اما برای اعداد صحیح سه نوع متغییر دیگر نیز به کار می برند ، نوع اول ، byte برای اعداد بین 128- تا 127 مورد استفاده قرار می گیرد .
مثال byte key=21; این جمله متغییری به نام key با مقدار اولیه 21 ایجاد می کند .
نوع دوم short است که محدوده آن از 32.768- تا 32.767 می باشد
مانند short number =43; این جمله متغییری به نام number با مقدار اولیه 43 ایجاد می کند .
نوع آخر، یعنی long برای اعداد صحیح بزرگی به کار می رود که نوع int برای نگهداری آنها کفایت نی کند .
و همچنین در زبان جاوا با متغییری برخورد خواهیم کرد به نام Boolean که برای ذخیره مقادیر true (درست) و false (نادرست ) به کار برده می شود .
در این زبان برنامه نویسی به دو صورت می توان متغییر ها را مقداردهی کرد :
روش اول : می توان هنگام ایجاد یک متغییر مقداری را به آن تخصیص داد
روش دوم : بعد از تعریف متغییر در هر جایی از برنامه می توان مقداری را در آن قرار داد.
و در صورتی که دو متغییر از یک نوع باشند می توان مقدار یک متغییر را در متغییر دیگر قرار داد ، مثال :
Int number=24;
Int key=number;
در نتیجه شما دو متغییر با مقدار اولیه 24 تعریف کرده اید .
تقدم عملگرها :
برای ارزیابی عبارات و محاسبه آنها ترتیب زیر باید رعایت شود :
- عملگرهای افزایش (مانندx++ ، این عملگر به مقدار x یک واحد می افزاید) و کاهش (مانندy-- ، این عملگر از مقدار y یک واحد می کاهد ) اولویت اول را دارند .
- ضرب ، تقسیم و تقسیم صحیح در اولویت بعد بعد قرار می گیرند .
- جمع و تفریق در اولویت سوم قرار دارند .
- عملگرهای مقایسه در اولویت بعدی قرار می گیرند .
- علامت مساوی = که برای مقداردهی یک متغییر استفاده می شود دارای کمترین اولویت است.
مثال :
Int z=5;
Int number=x++*6+4*10/2;
در نتیجه مقدار number مساوی 50 می باشد
ادامه مطلب
+
نوشته شده در شنبه بیست و نهم دی 1386ساعت 16:55 توسط و.د
|