آموزش و رفع اشکالات در مورد برنامه نویسی زبانهای Delphi, C, C++, C#, Pacal, PHP
شاید برای شما هم پیش آمده باشد که در جایی گیر کرده اید که موس کار نمی کرده و موس دیگری هم نداشته اید. اتفاقا در این مواقع زمان برای ما مهم است در اینجاست که اگر صفحه کلید کارهای ما را انجام می داد چقدر خوب میشد.


خب کاری ندارد برای اینکه صفحه کلید را به یک موس تبدیل کنید از روش زیر استفاده کنید:

1- با فشردن کلید "ویندوز" بر روی صفحه کلید استارت را باز کنید.

2- سپس با کلیدهای جهت نما بر روی Control Panel رفته و با زدن کلید "اینتر" وارد شوید.

3- در این قسمت سمت راست پنجره روی Accessibility Options کلیک کنید. (اگر سمت راست پنجره نمی توانید بروید، کلید Tab را آنقدر بزنید که به سمت راست منتقل گردد.)

4- اینجا دوباره بر روی Accessibility Options کلیک کنید.

نکته: اگر نمایش آیکن های کنترل پنل به صورت کلاسیک می باشد این مرحله را ندارید.

5- در برگه (Tab) مربوط به موس (Mouse) بروید.

6- در اینجا با فشردن کلیدهای Alt و M همزمان آیتم Use MouseKeys انتخاب می شود.

7- با فشردن کلیدهای Alt + A تنظیمات را اعمال کنید.

اکنون صفحه کلید شما کارهای موس را هم انجام خواهد داد. برای این کار با کلیدهای زیر کار می کنید:

قبل از پرداختن به بقیه ی آموزش باید کلید Num Lock روشن باشد. اگر روشن نیست با فشردن این کلید از قسمت سمت راست صفحه کلید آنرا فعال کنید.

کلیدهای 6 و 2 و 4 و 8 برای حرکت دادن مکان نما به راست، پایین، چپ و بالا.

کلیدهای 9 و 3 و 1 و 7 برای حرکت اریب

کلید 5 برای کلیک.

کلید + هم برای کلیک راست.

+ نوشته شده در  سه شنبه 21 خرداد1392ساعت 10:51  توسط احمد  | 

برخی موارد وجود دارد که می خواهیم برنامه خود را دوباره راه اندازی نماییم. یعنی آنرا بسته و دوباره اجرا کنیم. برای این کار دو خط زیر می تواند راه گشا باشد:


  ShellExecute(Handle, nil, PChar(Application.ExeName), nil, nil, SW_SHOWNORMAL);
  Application.Terminate;


البته می توانید جای دو دستور را با هم جابجا نمایید
دستور بالا را می توانید در هر جایی که نیاز داشتید به کار ببرید تا برنامه شما دوباره راه اندازی گردد.

+ نوشته شده در  پنجشنبه 22 فروردین1392ساعت 9:31  توسط احمد  | 

در برنامه نویسی پیش خواهد آمد زمانیکه شما بازگشتی به عقب دارید و می خواهید کدی را که مثلا 3 سال قبل نوشته اید را بازسازی نموده یا مرور نمایید و یا اینکه در یک پروژه گروهی شما شرکت نموده اید و می خواهید یک بخش از کدی را که همکار شما نوشته است اصلاح نمایید در اینگونه موارد اگر بخواهید به کدهای خام یک فرد یا حتی خودتان نگاه بیندازید و از آن سر در بیاورید به طور حتم درک کد برایتان مشکل خواهد بود.

خب چاره چیست؟

استفاده از توضیحات درون کد.

توضیحات درون کد برای درک بهتر از یک کد می باشد. توضیحات فقط در پروژه های بزرگ و یا تجاری استفاده نمی شوند شما می توانید در هر برنامه ای که می نویسید حتی آنهایی که یک خط کد دارند از توضیحات استفاده نمایید.


توضیحات پاسکال دو نوع می باشد که از یک جفت علامت استفاده می گردد که ابتدا و انتهای توضیحات را نشان می دهند اولین نوع علامتهای (* و *) می باشند و دومین نوع { و } هستند. هر چیزی که بین (* و *) قرار گیرد و یا بین { و } باشد به عنوان توضیح در نظر گرفته می شود.

مثال:

  readln(a, b, c);

{This code checks to see whether they can be the sides of a triangle}

  if (a + b <= c) or (a + c <= b) or (b + c <= a) then
    writeln('false');

در قطعه کد بالا خط دوم توضیح محسوب می گردد.

توضیحات از طرف کامپایلر نادیده گرفته می شود و صرفا جهت راهنمایی و افزایش خوانایی کدها برای برنامه نویسان کاربرد دارد.


+ نوشته شده در  پنجشنبه 15 فروردین1392ساعت 10:53  توسط احمد  | 

در برنامه نویسی پیش خواهد آمد زمانیکه شما بازگشتی به عقب دارید و می خواهید کدی را که مثلا 3 سال قبل نوشته اید را بازسازی نموده یا مرور نمایید و یا اینکه در یک پروژه گروهی شما شرکت نموده اید و می خواهید یک بخش از کدی را که همکار شما نوشته است اصلاح نمایید در اینگونه موارد اگر بخواهید به کدهای خام یک فرد یا حتی خودتان نگاه بیندازید و از آن سر در بیاورید به طور حتم درک کد برایتان مشکل خواهد بود.

خب چاره چیست؟

استفاده از توضیحات درون کد.

توضیحات درون کد برای درک بهتر از یک کد می باشد. توضیحات فقط در پروژه های بزرگ و یا تجاری استفاده نمی شوند شما می توانید در هر برنامه ای که می نویسید حتی آنهایی که یک خط کد دارند از توضیحات استفاده نمایید.

در دلفی می توان توضیحات را به فارسی نیز نوشت.

توضیحات در دلفی به دو دسته تقسیم می گردند:

1- توضیحات تک خطی

2- توضیحات چند خطی

در توضیحات تک خطی شما از علامت // استفاده می نمایید که دقیقا مشابه با توضیحات درون برنامه های شبه C می باشد. این توضیحات از این علامت شروع شده و تا انتهای خط ادامه دارد. ( یعنی خط بعدی شامل توضیحات نمی گردد.)

مثال:

// محاسبه ی دلتا در سهمی

delta := b * b - 4 * a * c;

x1 = (-b + sart(delta)) / (2 * a); // این خط ریشه ی اول را محاسبه می کند

در قطعه کد بالا می بینید که اولین خط کلا توضیحات است.

دومین خط یک محاسبه می باشد.

و سومین خط از ابتدا تا // یک فرمول و از // تا انتهای خط توضیحات است.

توضیحات چند خطی دو نوع می باشد که برخلاف توضیحات تک خطی از یک جفت علامت استفاده می گردد که ابتدا و انتهای توضیحات را نشان می دهند اولین نوع از توضیحات چند خطی علامتهای (* و *) می باشند و دومین نوع { و } هستند. هر چیزی که بین (* و *) قرار گیرد و یا بین { و } باشد به عنوان توضیح در نظر گرفته می شود.

مثال:

  readln(a, b, c);

{در این بخش کنترل می گردد که طبق قانون اضلاع مثلث آیا سه مقدار وارد شده می توانند

اضلاع یک مثلث باشند یا خیر}

  if (a + b <= c) or (a + c <= b) or (b + c <= a) then
    writeln('false');

در قطعه کد بالا نیز توضیحات چند خطی را مشاهده می نمایید.

توضیحات از طرف کامپایلر نادیده گرفته می شود و صرفا جهت راهنمایی و افزایش خوانایی کدها برای برنامه نویسان کاربرد دارد.


+ نوشته شده در  پنجشنبه 15 فروردین1392ساعت 10:34  توسط احمد  | 

در دلفی نیز همانند پاسکال تعداد نویسه های درون یک خط محدودیت دارد و باید دقت نمود که هر خط کدی که نوشته می شود از این تعداد تجاوز ننماید.

حداکثر تعداد نویسه هایی که در دلفی به کار می برید 1023 نویسه است.

این تعداد نویسه بدون احتساب نویسه های خالی مثل space و tab می باشد.

گرچه در اکثر قریب به اتفاق موارد شما از این تعداد نویسه استفاده نمی کنید اما

در برخی موارد شما طول خط کد خود را کنترل نکرده اید و از این تعداد بیشتر شده است در این صورت کامپایلر خطای معقولی را به شما نمایش نمی دهد و به جای آن از خطاهای بی ارتباط با موضوع استفاده می کند مثلا در زیر یک نمونه را می بینید:

[DCC Error] Unit2.pas(32): E2003 Undeclared identifier: 'stam'

که در آن اشاره به تعریف نشدن متغیر دارد که کاملا بی ربط می باشد و دلیل اصلی در واقع بیشتر شدن تعداد نویسه ها از حداکثر مجاز می باشد.

+ نوشته شده در  پنجشنبه 15 فروردین1392ساعت 10:1  توسط احمد  | 

برای برنامه نویسی در هر زبان یک سری محدودیت هایی وجود دارد و حداکثر طول یک خط دستور نیز از همین جمله می باشد.

در زبان پاسکال حداکثر طول مجاز در هر خط بسته به کامپایلر 127 یا 255 کاراکتر می باشد.

چرا باید بدانیم حداکثر طول یک خط چقدر است؟

به خاطر اینکه اگر خطی از کدهای ما بیش از این تعداد کاراکتر داشته باشد کامپایلر آن را نادیده می گیرد و به احتمال فراوان برنامه ی شما با مشکل مواجه خواهد شد.

در بسیاری از موارد کامپایلر خطای دقیق را پیدا نمی کند و به جای آن از اخطارهای نامعقول استفاده می کند مثلا اخطار " متغیر مثلا x نامعتبر می باشد و یا تعریف نشده است" در این موارد اگر بدانیم که از حداکثر طول مجاز تجاوز کرده ایم دیگر گمراه نخواهیم شد.

+ نوشته شده در  پنجشنبه 15 فروردین1392ساعت 9:54  توسط احمد  | 

دستورات if را در بخش های گذشته بررسی نمودیم.

حال برسیم به گزینش if … else:

این نوع گزینش در واقع نوع تکمیل شده ی if می باشد که از آن برای بررسی کردن شرایط به صورت بهینه تر و با مدیریت بیشتر استفاده نمود.

بقیه ی دستورات در ادامه ی مطلب


ادامه مطلب
+ نوشته شده در  چهارشنبه 23 اسفند1391ساعت 12:10  توسط احمد  | 

این تابع در یونیت windows به شکل زیر پیاده سازی شده است:

function GetTickCount; external kernel32 name 'GetTickCount';

که از تعریف بالا می شود فهمید این یک تابع درون dll می باشد که با نام kernel32.dll هست.

این تابع در واقع از توابع API ویندوز می باشد که تعریف اصلی آن به شکل زیر می باشد:

DWORD GetTickCount(void);

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

GetTickCount

خروجی این تابع یک عدد کاردینال (Cardinal) می باشد و در واقع زمانی را برمی گرداند که سیستم روشن شده است و این زمان بر اساس میلی ثانیه می باشد.

یعنی اگر در یک فرم یک ادیت و یک دکمه داشته باشیم و در دکمه دستور زیر را بنویسیم:

Edit1.Text := IntToStr(GetTickCount);

مقدار زمانی که سیستم شما روشن شده است بر حسب میلی ثانیه درون ادیت قرار می گیرد.


موارد استفاده:

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

var
  Time1, Time2: Cardinal;
begin
  Time1 := GetTickCount;
  // Your statements
  Time2 := GetTickCount;
  Time2 - Time1;


همچنین برای فهمیدن اینکه برنامه ی شما چه مقدار زمانی در حال اجرا بوده است.

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

تابع GetTickCount


+ نوشته شده در  پنجشنبه 5 بهمن1391ساعت 10:41  توسط احمد  | 

این تابع همانطور که از نامش پیداست برای بدست آوردن مختصات مکان نما استفاده می گردد.

این تابع در تمامی کنترل هایی که می توان در آن متن نوشت مثل Edit, Memo, RichEdit و ... کاربرد دارد.

شکل کلی این تابع به صورت زیر است:


function GetCaretPos: TPoint; virtual;


و نحوه ی استفاده از آن به شکل زیر:


var
  CaretPos: TPoint;
begin
  GetCaretPos(CaretPos);
  Self.Caption := Format('x:%d , y:%d', [CaretPos.X, CaretPos.Y] );
end;


در کد بالا مختصات مکان نما(کرسر موس) (در یک کنترل متنی مثل Edit, Memo , ...)، در عنوان فرم نمایش داده می شود.

+ نوشته شده در  پنجشنبه 5 بهمن1391ساعت 8:35  توسط احمد  | 

برای اینکه به الگوریتم این نوع مرتب سازی آشنا شوید به لینک زیر مراجعه نمایید:

الگوریتم مرتب سازی حبابی(Bubble Sort)

حال بپردازیم به کد این الگوریتم در زبان پاسکال:

قطعه کد زیر مرتب سازی حبابی را با استفاده از حلقه در یک آرایه ۱۰ عنصری انجام می دهد.

for i := 1 to 10 do
    for j := i + 1 to 10 do
      if list[i] < list[j] then
      begin
        temp := list[i];
        list[i] := list[j];
        list[j] := temp;
      end;

توضیحات: در قطعه کد بالا list یک آرایه ی ۱۰ عنصری است و i, j نیز متغیر های عددی هستند.

متغیر temp یک متغیر کمکی است تا بتوان توسط استفاده از آن دو خانه از آرایه را جابجا کنیم.


تابعی که مرتب سازی حبابی را انجام می دهد:

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

procedure BubbleSort(var list: array of Integer);
var
  i, j: Integer;
  temp: Integer;
begin
  for i := low(list) to High(list) do
    for j := i + 1 to high(list) do
      if list[i] < list[j] then
      begin
        temp := list[i];
        list[i] := list[j];
        list[j] := temp;
      end;
end;

توضیحات: در کد بالا ورودی یک آرایه ی پویا می باشد(به خاطر اینکه بتوانیم هر آرایه ای با هر تعداد خانه را مرتب سازی نماییم)

همچنین از کلمه ی کلیدی var برای ورودی پارامتر استفاده نموده ایم که هر تغییر آرایه در تابع درون آرایه ی اصلی نیز اعمال گردد.

از تابع low برای پیدا کردن کران پایین آرایه و از تابع high نیز برای پیدا کردن کران بالای آرایه استفاده نموده ایم.


برنامه کاملی که یک آرایه را از کاربر می خواند و آنرا مرتب نموده و نمایش می دهد:

program Sort;


procedure BubbleSort(var list: array of Integer);
var
  i, j: Integer;
  temp: Integer;
begin
  for i := low(list) to High(list) do
    for j := i + 1 to high(list) do
      if list[i] < list[j] then
      begin
        temp := list[i];
        list[i] := list[j];
        list[j] := temp;
      end;
end;


var
  a: array[1..10] of integer;
  i: Integer;

begin
  writeln('Please enter 10 numbers');
  for i := 1 to 10 do
    Readln(a[i]);

  BubbleSort(a);

  Writeln('Your sorted array is:');
  for i := 1 to 10 do
    Write(a[i]);
  Readln;

end.

+ نوشته شده در  دوشنبه 27 آذر1391ساعت 23:17  توسط احمد  |