آموزش پاسکال قسمت اول

زبان پاسکال یکی از زبانهای برنامه سازی است که ویژگیهای آموزشی آن بسیار بالاست یعنی زبان خوبی برای آموزش برنامه نویسی منظم و دقیق است.قابلیت خوانایی و درک برنامه های این زبان بالاست ومیتوان برنامه هایی نوشت که احتمال خطاهای آنها بسیار اندک باشد علتش این است که یک زبان ساختار یافته (structed) است .

ساختار کلی برنامه چیست؟ 
1-تعریف 
2-به وسیله procedure  و functionقسمتهای تکراری را از بین ببریم 
3-بدنه
فرم کلی پاسکال:
اسم Program 
; تعریف ثابت const 
; تعریف نوع type 
; تعریف متغیرها var 
)پارامترها ) نام procedure


begin
____
____
____
end  ;
; ( پارامترها ) نام نوع تابع function
begin
____
____
____
end ;
begin
____
____
____
end  .
متغیر : محلی است که دارای یک اسم می باشد و می توان مقداری را در آن ذخیره کرد

انواع متغیرها در پاسکال:
Integer  :انواع عددی صحیح شامل اعداد بدون نقطه ممیز است
نوع مقادیری که می پذیرند طول(بایت)
byte 0  تا  255 1 
Shortint 128- تا  127 1 
integer 32768- تا  32767 2 
Word 0  تا  65535 2 
Longint 2147483648- تا  2147483647 4 

 

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

نوع مقادیری که میپذیرند ارقام با معنی طول(بایت)
single 1.5e-45  تا3.4e38 7  تا  8 4 
real 2.9e-39  تا  1.7e38 11  تا  12 6 
Double 5.0e-324تا  1.7e308 15  تا  16 8 
extended 1.9e-4951تا  1.1e493 19  تا  20 10 
انواع داده های اعشاری

-Char  :
نوع داده کاراکتری که با کلمه char  مشخص می شود میتواند یک کاراکتر را در خود نگهداری کند بنابراین کاراکترها در یک بایت از حافظه کامپیوتر ذخیره می شوند

String  - :
این نوع داده ها برای ذخیره رشته ها مثل اسامی افراد به کار می رود و با کلمه کلیدی string  مشخص ی گردد
برای هر رشته باید طول معلوم کنیم اگر طولی تعریف نشود به طور پیش فرض  80  در نظر گرفته میشود(مقدار طول حداکثر  255  است)
- Boolean  :
نوع دیگری از داده ها در پاسکال وجود دارند که داده های بولی خوانده می شوند مقادیر بولی دارای دو ارزش درستی یا نادرستی اند که در پاسکال با صفر و یک نمایش داده می شوند صفر به معنی نادرستی و یک به معنی درستی به کار میرود این نوع داده ها با کلمه Boolean  تعریف میشوند.
دستورات ورودی در پاسکال:
دستور Readlnبرای خواندن اطلاعات از ورودی به کار میرود.
فرمت آن به صورت مقابل است:
(اسامی متغیرها)read/ln 
اسامی متغیرها باید با کاما از یکدیگر جدا شوند..
برای چاپ اطلاعات در خروجی از دستور write/ln  استفاده میکنیم.
فرمت آن به صورت مقابل است:
' یک پیام '
( متغیر ) write/ln 
عبارت محاسباتی
انتساب متغیرها:
مقدار ثابت
( متغیر )=: متغیر
عبارت محاسباتی

مثال : برنامه ای بنویسید که دو عدد را از ورودی دریافت و حاصلجمع آن دو را چاپ کند .
Program add;
Var
a,b:integer;
begin
writeln('enter 2 num');
readln(a,b);
c:=a+b;
writeln('result is =',c);
end.

تکلیف : چرا برنامه باید ادب داشته باشد ؟
مثال : برنامه ای بنویسید که حقوق پایه وتعداد فرزندان یک کارگر را از ورودی دریافت و مبلغ حقوق وی را بر اساس فرمول زیر حساب کنید.
10*تعداد فرزندان + حقوق پایه =حقوق کل
Program test;
Var
Salary:longint;
Child:byte;
kole:integer
Begin
Writeln('enter salary and number of child);
Readln(salary,child);
Kole := salary + child *10
Writeln('kole is ',kole);
END.
اولویت عملگرها:
/ *
- +
شرط:
then  شرط if
Begin
____
____
____
end
else
begin
____
____
____
end;
نکته : دستورالعمل قبل از IF  سمی کالن نمی گیرد
عناصر شرط:
< > <= >= = <>
اپراتورها :
AND OR NOT XOR
NOT A
1 0
0 1

XOR OR AND B A
0 1 1 1 1
1 1 0 0 1
1 1 0 1 0
0 0 0 0 0 
مثال : برنامه ای بنویسید که با دریافت دو عدد بزرگترین آنها را چاپ کند.
Program test;
Var
a,b:integer;
if a>b then
begin
writeln(a);
end
else
writeln(b);
end.

مثال : برنامه ای بنویسید که با دریافت سه عدد به عنوان ضرایب y=ax2+bx+c  معادله درجه دو را حل کند(این برنامه را با یک If  بنویسید).
Var
A,b,c:integer;
D,x1,x2:real;
Begin
Writeln('enter a,b,c');
Readln(a,b,c);
D:=b*b-4*a*c;
If (d >=0 ) then
Begin
X1:=(-b+sqrt(d))/2*a);
X1:=(-b-sqrt(d))/2*a);

مثال : برنامه ای بنویسید که تعداد فرزندان وحقوق پایه و رتبه یک کارگر را از ورودی دریافت و حقوق کل وی را بر اساس فرمول زیر حساب کند.
کسریها - مزایا +بیمه = حقوق کل 
5*رتبه  +1000* تعداد فرزند = مزایا
مالیات + بیمه = کسریها

بیشتر کمتر یا مساوی  2  تعداد فرزند
تعداد فرزندان  1000  بیمه
هر چیزی دیگر  20  تا  0  رتبه
حقوق پایه حقوق پایه*100/10  مالیات
begin
writeln('enter salary and grade and number of child');
readln(salary ,num,grade);
if num<=2 then
bimeh:=100
else
bimeh :=num*500;
if (grade>=0) and (grade<=20)then
net := 10/100*salary
else
if grade >20 then
begin
net:=20/100*salary;
mazaya:=num*1000+grade*50;
kasry:=bimeh+net;
kol :=salary + mazaya-kasry;
end;
writeln(kol);
end.

تکلیف : در یک ترکیب شیمیایی  4  عنصر شرکت دارند مقدار مجاز برای تهیه ماده ای به نام asxd  به این صورت است.
A 0 ~ 50
S 0.5 ~ 0.83
X 81 ~ 92 or 824 ~ 901
D -100 ~ 100 
با دریافت مقادیر a,s,x,d  از ورودی به ما بگوید که آیا می توان این ماده را تولید کرد یا نه ؟
Begin
Num:=0;
Writeln('please enter a s x d');
Readln(a,s,x,d);
If (a>0) and(a<50) then
Num:=num+1;
If (s>0.5)and (s<0.83) then
Num:=num+1;
If ((x>81)and(x<92))or ((x>824)and(x<901))then
Num:=num+1;
If (d>-100) and (d<100) then
Num:=num+1;
If num=4 then
Writeln('yes can')
Else
Writeln('you can not');
End.
تکلیف : برنامه ای بنویسید که با دریافت سه عدد و با فرض اینکه عدد دوم وتر میباشد به ما بگویید که آیا این سه عدد تشکیل یک مثلث قایم الزاویه می دهد یا خیر؟

CASE:
CASE  میتواند تعدادای شرط را بگیرد و انتخاب کند.
مقادیری که دستور CASE  میپذیرد ORDINAL  است مقادیری کهORDINAL  هستند دارای ترکیب نیستند و همچنین قابل شمارش هم هستند مثل INTEGER,CHARACTER,BYTE,BOOLEAN,LONGINT,…
پسREAL,STRING ORDINAL<---- نیستند
CASE  تنها دستوری است که BEGIN  ندارد ولی END  دارد
مقدارها میتوانند شامل یک مقدار یا چند مقدار که از یکدیگر با کاما جدا شده اند باشند و یا یگ سری شمارشی باشند مثل:
1:------
1,10,28:------
1..100,150..243:---------
'A'..'Z':---------

Of  متغیر Case
Begin  : مقدار1 
-------
-------
End;
Begin  : مقدار2 
-------
-------
End;
Begin :Else
-------
-------
End;
End.
مثال : برنامه ای بنویسید که یک عدد را از ورودی دریافت  ( (0<=x<3وتلفظ آنها را چاپ کند.
BEGIN
READLN(X);
CASE X OF
0:WRITELN('ZERO');
1:WRITELN('ONE');
2:WRITELN('TWO')
ELSE
WRITELN('ERROR');
END;
END.

 

-----------

ما را از نظرات گرانبها خود بهره مند سازید

آموزش راه‌اندازی شبکه خصوصی مجازی (VPN)

شبکه خصوصی مجازی یا VPN (Virtual Private Network) در اذهان تصور یک مطلب پیچیده برای استفاده و پیاده کنندگان آن به وجود آورده است . اما این پیچیدگی ، در مطالب بنیادین و مفهومی آن است نه در پیاده‌سازی .
این نکته را باید بدانید که پیاده‌سازی VPN دارای روش خاصی نبوده و هر سخت‌افزار و نرم‌افزاری روش پیاده‌سازی خود را داراست و نمی‌توان روش استانداردی را برای کلیه موارد بیان نمود . اما اصول کار همگی به یک روش است .

مختصری درباره تئوری VPN
مفهوم اصلی VPN چیزی جز برقراری یک کانال ارتباطی خصوصی برای دسترسی کاربران راه دور به منابع شبکه نیست . در این کانال که بین دو نقطه برقرار می‌شود ، ممکن است که مسیرهای مختلفی عبور کند اما کسی قادر به وارد شدن به این شبکه خصوصی شما نخواهد بود . گرچه می‌توان از VPN در هر جایی استفاده نمود اما استفاده آن در خطوط Dialup و Leased کار غیر ضروری است (در ادامه به‌دلیل آن پی خواهید برد).
در یک ارتباط VPN شبکه یا شبکه‌ها می‌توانند به هم متصل شوند و از این طریق کاربران از راه دور به شبکه به راحتی دسترسی پیدا می‌کنند. اگر این روش از ارائه دسترسی کاربران از راه دور را با روش خطوط اختصاصی فیزیکی (Leased) مقایسه کنیم ، می‌بینید که ارائه یک ارتباط خصوصی از روی اینترنت به مراتب از هر روش دیگری ارزان‌تر تمام می‌شود .
از اصول دیگری که در یک شبکه VPN در نظر گرفته شده بحث امنیت انتقال اطلاعات در این کانال مجازی می‌باشد . یک ارتباط VPN می‌تواند بین یک ایستگاه کاری و یک شبکه محلی و یا بین دو شبکه محلی صورت گیرد. در بین هر دو نقطه یک تونل ارتباطی برقرار می‌گردد و اطلاعات انتقال یافته در این کانال به صورت کد شده حرکت می‌کنند ، بنابراین حتی در صورت دسترسی مزاحمان و هکرها به این شبکه خصوصی نمی‌توانند به اطلاعات رد و بدل شده در آن دسترسی پیدا کنند.
جهت برقراری یک ارتباط VPN ، می‌توان به کمک نرم‌افزار یا سخت‌افزار و یا ترکیب هر دو ، آن را پیاده‌سازی نمود . به طور مثال اکثر دیواره‌های آتش تجاری و روترها از VPN پشتیبانی می‌کنند . در زمینه نرم‌افزاری نیز از زمان ارائه ویندوز NT ویرایش 4 به بعد کلیه سیستم عامل‌ها دارای چنین قابلیتی هستند .
در این مقاله پیاده‌سازی VPN بر مبنای ویندوز 2000 گفته خواهد شد .

پیاه‌سازی VPN
برای پیاده‌سازی VPN بر روی ویندوز 2000 کافیست که از منوی Program/AdministrativeTools/ ، گزینه Routing and Remote Access را انتخاب کنید . از این پنجره گزینه VPN را انتخاب کنید . پس از زدن دکمه Next وارد پنجره دیگری می‌‌شوید که در آن کارت‌های شبکه موجود بر روی سیستم لیست می‌شوند .
برای راه‌اندازی یک سرور VPN می‌بایست دو کارت شبکه نصب شده بر روی سیستم داشته باشید .
از یک کارت شبکه برای ارتباط با اینترنت و از کارت دیگر جهت برقراری ارتباط با شبکه محلی استفاده می‌شود. در این‌جا بر روی هر کارت به‌طور ثابت IP قرار داده شده اما می‌توان این IPها را به صورت پویا بر روی کارت‌های شبکه قرار داد .
در پنجره بعد نحوه آدرس‌دهی به سیستم راه دوری که قصد اتصال به سرور ما را دارد پرسیده می‌شود . هر ایستگاه کاری می‌ تواند یک آدرس IP برای کار در شبکه محلی و یک IP برای اتصال VPN داشته باشد . در منوی بعد نحوه بازرسی کاربران پرسیده می‌شود که این بازرسی می‌ تواند از روی کاربران تعریف شده در روی خود ویندوز باشد و یا آنکه از طریق یک سرویس دهنده RADIUS صورت گیرد در صورت داشتن چندین سرور VPN استفاده از RADIUS را به شما پیشنهاد می‌کنیم . با این روش کاربران ، بین تمام سرورهای VPN به اشتراک گذاشته شده و نیازی به تعریف کاربران در تمامی سرورها نمی‌باشد.

پروتکل‌های استفاده شونده
عملیاتی که در بالا انجام گرفت تنها پیکربندی‌های لازم جهت راه‌اندازی یک سرور VPN می‌باشد .
اما (Remote Routing Access Service) RRAS دارای دو پروتکل جهت برقراری تونل ارتباطی VPN می‌باشد. ساده‌ترین پروتکل آن PPTP (Point to Point Tunneling Protocol) است ، این پروتکل برگرفته از PPP است که در سرویس‌های Dialup مورد استفاده واقع می‌شود ،‌ در واقع PPTP همانند PPP عمل می‌کند .
پروتکل PPTP در بسیاری از موارد کافی و مناسب است ،‌ به کمک این پروتکل کاربران می‌توانند به روش‌های PAP (Password Authentication Protocol) و Chap (Challenge Handshake Authentication Protocol) بازرسی شوند. جهت کد کردن اطلاعات می‌توان از روش کد سازی RSA استفاده نمود.
PPTP برای کاربردهای خانگی و دفاتر و افرادی که در امر شبکه حرفه‌ای نیستند مناسب است اما در جایگاه امنیتی دارای پایداری زیادی نیست . پروتکل دیگری به نام L2TP (Layer2 Forwarding) به وسیله شرکت CISCO ارائه شده که به لحاظ امنیتی بسیار قدرتمندتر است.
این پروتکل با استفاده از پروتکل انتقال اطلاعات UDP (User Datagram Protocol) به‌جای استفاده از TCP به مزایای زیادی دست یافته است . این روش باعث بهینه و ملموس‌تر شدن برای دیواره‌های آتش شده است ، اما باز هم این پروتکل در واقع چیزی جز یک کانال ارتباطی نیست . جهت حل این مشکل و هر چه بالاتر رفتن ضریب امنیتی در VPN شرکت مایکروسافت پروتکل دیگری را به نام IPSec (IP Security) مطرح نموده که پیکربندی VPN با آن کمی دچار پیچیدگی می‌گردد.
اما در صورتی که پروتکل PPTP را انتخاب کرده‌اید و با این پروتکل راحت‌تر هستید تنها کاری که باید در روی سرور انجام دهید فعال کردن قابلیت دسترسی Dial in می‌باشد. این کار را می‌توانید با کلیک بر روی Remote Access Polices در RRAS انجام دهید و با تغییر سیاست کاری آن ، آن را راه‌اندازی کنید (به‌ طور کلی پیش‌فرض سیاست کاری ، رد کلیه درخواست‌ها می‌باشد).

دسترسی ایستگاه کاری از طریق VPN
حالا که سرور VPN آماده سرویس‌دهی شده ، برای استفاده از آن باید بر روی ایستگاه کاری نیز پیکربندیهایی را انجام دهیم . سیستم عاملی که ما در این‌جا استفاده می‌کنیم ویندوز XP می‌باشد و روش پیاده‌سازی VPN را بر روی آن خواهیم گفت اما انجام این کار بر روی ویندوز 2000 نیز به همین شکل صورت می‌گیرد . بر روی ویندوزهای 98 نیز می‌توان ارتباط VPN را برقرار نمود ، اما روش کار کمی متفاوت است و برای انجام آن بهتر است به آدرس زیر مراجعه کنید :
www.support.microsot.com
بر روی ویندوزهای XP ، یک نرم‌افزار جهت اتصال به VPN برای هر دو پروتکل PPTP و L2TP وجود دارد. در صورت انتخاب هر کدام ،‌ نحوه پیکربندی با پروتکل دیگر تفاوتی ندارد . راه‌اندازی VPN کار بسیار ساده‌ای است ، کافیست که بر روی Network Connection کلیک نموده و از آن اتصال به شبکه خصوصی از طریق اینترنت (Private Network Through Internet) را انتخاب کنید .
در انجام مرحله بالا از شما یک اسم پرسیده می‌شود . در همین مرحله خواسته می‌شود که برای اتصال به اینترنت یک ارتباط تلفنی (Dialup) تعریف نمایید ، پس از انجام این مرحله نام و یا آدرس سرور VPN پرسیده می‌شود .
مراحل بالا تنها مراحلی است که نیاز برای پیکربندی یک ارتباط VPN بر روی ایستگاه‌های کاری می‌باشد . کلیه عملیات لازمه برای VPN به صورت خودکار انجام می‌گیرد و نیازی به انجام هیچ عملی نیست . برای برقراری ارتباط کافیست که بر روی آیکونی که بر روی میز کاری ایجاد شده دو بار کلیک کنید پس از وارد کردن کد کاربری و کلمه عبور چندین پیام را مشاهده خواهید کرد که نشان‌دهنده روند انجام برقراری ارتباط VPN است .
اگر همه چیز به خوبی پیش رفته باشد می‌توانید به منابع موجود بر روی سرور VPN دسترسی پیدا کنید این دسترسی مانند آن است که بر روی خود سرور قرار گرفته باشید .

ارتباط سایت به سایت (Site-to-Site VPN)
در صورتی که بخواهید دو شبکه را از طریق یک سرور VPN دومی به یکدیگر وصل کنید علاوه بر مراحل بالا باید چند کار اضافه‌تر دیگری را نیز انجام دهید .
جزئیات کار به پروتکلی که مورد استفاده قرار می‌گیرد . جهت این کار باید سرور را در پنجره RRAS انتخاب کرده و منوی خاص (Properties) آن را بیاورید .
در قسمت General مطمئن شوید که گزینه‌های LAN و Demand Dial انتخاب شده باشند (به طور پیش گزیده انتخاب شده هستند). هم‌چنین اطمینان حاصل کنید که پروتکل را که قصد روت (Route) کردن آن را دارید فعال است .
پس از مراحل بالا نیاز به ایجاد یک Demand Dial دارید ، این کار را می‌توانید با یک کلیک راست بر روی واسط روت (Routing Interface) انجام دهید .
در پنجره بعدی که ظاهر می‌شود باید برای این ارتباط VPN خود یک نام تعیین کنید این نام باید همان اسمی باشد که در طرف دیگر کاربران با آن به اینترنت متصل می‌شوند در صورتی که این مطلب را رعایت نکنید ارتباط VPN شما برقرار نخواهد شد .
پس از این مرحله باید آدرس IP و یا نام دامنه آن را مشخص کنید و پس از آن نوع پروتکل ارتباطی را تعیین نمود .
اما مرحله نهایی تعریف یک مسیر (Route) بر روی سرور دیگر می‌باشد بدین منظور بر روی آن سرور در قسمت RRAS ، Demand Dial را انتخاب کنید و آدرس IP و ساب‌نت را در آن وارد کنید و مطمئن شوید که قسمت
Use This to Initate Demand
انتخاب شده باشد . پس از انجام مرحله بالا کار راه‌اندازی این نوع VPN به پایان می‌رسد .

پایان
همان‌طور که دیدید راه‌اندازی یک سرور VPN بر روی ویندوز 2000 تحت پروتکل PPTP کار ساده‌ای بود اما اگر بخواهید از پروتکل L2TP/IPSec استفاده کنید کمی کار پیچیده خواهد شد . به خاطر بسپارید که راه‌اندازی VPN بار زیادی را بر روی پردازنده سرور می‌گذارد و هرچه تعداد ارتباطات VPNبیشتر باشد بار زیادتری بر روی سرور است که می‌توانید از یک وسیله سخت‌افزاری مانند روتر جهت پیاده‌سازی VPN کمک بگیرد .