امتیاز موضوع:
  • 2 رأی - میانگین امتیازات: 5
  • 1
  • 2
  • 3
  • 4
  • 5
آموزش برنامه نویسی موبایل با Midlet Pascal
نویسنده پیام
godvb غایب
مدیر بازنشسته بخش نفوذ و امنیت
*****

ارسال‌ها: 430
موضوع‌ها: 77
تاریخ عضویت: اسفند ۱۳۸۶

تشکرها : 886
( 1338 تشکر در 343 ارسال )
ارسال: #12
RE: آموزش برنامه نویسی موبایل با Midlet Pascal
توابع کار با sound

گرفتن طول یک اهنگ که در پلیر لود شده بر حسب میلی ثانیه

کد:
function getPlayerDuration:integer;

باز کردن یک ریسورس در پلیر موبایل

کد:
function openPlayer(resource:string; mimetype:string):boolean;

مقدار mimetype میتواند به صورت زیر باشد
کد:
wave files: audio/x-wav
    au files: audio/basic
    MP3 files: audio/mpeg
    MIDI files: audio/midi

مثال:
کد:
begin
    if not openPlayer('/explosion.mid', 'audio/midi') then  halt;    
    if not setPlayerCount(-1) then halt;
    if not startPlayer then halt;
    delay(5000);    
  end.
این تابع همانند دکمه تکرار عمل میکند و میتوانید مشخص کنید یک اهنگ چند بار تکرار شود

کد:
function setPlayerCount(loopCount:integer):boolean;

اجرای آهنگ لود شده در پلیر

کد:
function startPlayer:boolean;

اجرای آهنگ در پلیر را متوقف میکند

کد:
procedure stopPlayer;



نوشتن اولین برنامه

نرم افزار MIDletPascal را باز کنید. از منوی فایل new و سپس project را بزنید. و نامی برای پروژه خود انتخاب کنید. و okکنید حالا در محیط کد نویسی کدهای زیر را بنویسید و برای اجرا از منوی Project ابتدا Build Project را بزنید و سپس Run MIDlet را بزنید. یا می توانید Build and Run را بزنید. که هر دو کار را با هم انجام بدهید. یا با کلید F9 همین کار را انجام خواهید داد یا از ساید باز سمت راست یکی از این دکمه ها را انتخاب کنید
کد:
program HelloWorld;
begin
  DrawText ('Hello, World!', 0, 0);
  Repaint;
  Delay(2000);
end.
.

[تصویر:  1.png]

بعد از اجرا فایل نهایی ساخته شده و ادرس ان در انتهای پنجره Message نمایش داده میشود مانند زیر

Launching cmd /A /C "C:\NewProject\bin\HelloWord.jad"

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

کد:
program NewProject;
begin
    drawEllipse(0, 0, getWidth, getHeight);
    repaint;
    delay(6000);
end.
یک دایره می کشد.

[تصویر:  2.png]




نوشتن functionوprocedure

Procedures ها زیر برنامه هایی هستند که مقدار خروجی ندارند وبطورکلی چیزی را برنمی گردانند.درمثال زیر دو پروسیجر نوشته شده است است که یکی از آنها بدون پارامتر ورودی و دیگری دارای دوپارامتر ورودی است:
کد:
program procedureSample;
  var
n: integer; { this variable is visible in main
                    program block and in all functions
                    and procedures }

  procedure noArgs;
  begin
    n := 5;
  end;

  procedure twoArgs(a: integer; b: string);
  var len: integer; { this variable can be accessed only
                      from within the procedure and is
                      reinitialized every time that the
                      procedure is called }
  begin
    len := length(b);
    n := a + len;
  end;

  begin
    noArgs; { call the first procedure }
    twoArgs(n, 'Some string'); { call the second procedure }
  end.


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

کد:
program functionSample;
  var result: integer;

  { this simple function always returns 5 }
  function returnFive: integer;
  begin
    returnFive := 5;
  end;

  function multiply(a, b: integer): integer;
  begin
    multiply := a * b;
  end;

  begin
    result := multiply(2, returnFive); { call the multiply function
                                         where on argument is value
                                         returned by calling the
                                         other function }
  end.

می توانید از کلمه کلیدی result برای برگرداندن مقدار در توابع استفاده نمایید.در مثال زیر طرز استفاده را خواهید دید:

کد:
function Return4: integer;
begin
  result := 4;
end;
برای خروج از یک تابع را رویه در هر لحظه میتوانید از دستور Exit استفاده کنید
کد:
Procedure Exit;

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

کد:
program recursionSample;
  var factorielOfFive: integer;
  function factoriel(n: integer): integer;
  begin
    if n = 1 then
      factoriel := 1;
    else
      factoriel := n * factoriel(n-1);
  end;

  begin
    factorielOfFive := factoriel(5);
  end.
حالت زیر را درنظر بگیرید:
کد:
procedure a (x: integer);
  begin
    ...
    b(x);
    ...
  end;

  procedure b(y: integer);
  begin
  ...
    a(y);
  ...
  end;

  begin
    a(5);
  end.
خوب همانطورکه میبینید پروسیجر a پروسیجر b را فراخوانی میکند و باز از درون پروسیجر b نیز پروسیجر a نیز فراخوانی میشود.که کامپایلر پیغام خطا میدهد که برای رفع این مشکل بصورت زیر عمل می کنیم:

کد:
procedure b(y:integer); forward;{ the forward reference tells
                                     compiler that procedure 'b' will
                                     be defined somewhere in the program code }

  procedure a (x: integer);
  begin
    ...
    b(x);
    ...
  end;

  procedure b(y: integer);
  begin
    ...
    a(y);
    ...
  end;

  begin
    a(5);
  end.
که این تکنیک و حالت را forward references گویند.

آنچه توانسته ایم انجام دهیم، لطف پرودگار بوده است.

XMen For Ever
۱۷-بهمن-۱۳۹۱, ۱۵:۳۵:۵۶
ارسال‌ها
پاسخ
تشکر شده توسط : omid_phoenix, lord_viper, behzady
godvb غایب
مدیر بازنشسته بخش نفوذ و امنیت
*****

ارسال‌ها: 430
موضوع‌ها: 77
تاریخ عضویت: اسفند ۱۳۸۶

تشکرها : 886
( 1338 تشکر در 343 ارسال )
ارسال: #13
RE: آموزش برنامه نویسی موبایل با Midlet Pascal
چند سورس ساده

سورس برنامه ماشین حساب

کد:
program Calculator;
var textField_1,textField_3,choice_1,
textField_2,sum,sub,mul,diw: Integer;
Result:Real;
exitCmd, okCmd, clicked: command;
begin
showForm;
SetTicker('MB ماشين حساب');
textField_1:=FormAddTextField('ورودي عدد اول :','',20,TF_NUMERIC);
textField_2:=FormAddTextField('ورودي عدد دوم :','',20,TF_NUMERIC);
choice_1:=FormAddChoice('انتخاب عمليات:',CH_EXCLUSIVE);
sum := ChoiceAppendStringImage(choice_1, 'جمع(+)',LoadImage('/icon.png'));
sub := ChoiceAppendStringImage(choice_1, 'تفريق(-)',LoadImage('/icon.png'));
mul := ChoiceAppendStringImage(choice_1, 'ضرب(*)',LoadImage('/icon.png'));
diw := ChoiceAppendStringImage(choice_1, 'تقسيم(/)',LoadImage('/icon.png'));
textField_3:=FormAddTextField('نتيجه:','',20,TF_ANY);
exitCmd:=CreateCommand('خروج', CM_EXIT, 1);
AddCommand(exitCmd);
okCmd:=CreateCommand('محاسبه', CM_OK, 1);
AddCommand(okCmd);
repeat
clicked := GetClickedCommand;
if clicked = okCmd then
Begin
if choiceIsSelected(choice_1, sum) then
FormSetText(textField_3, IntegerToString(StringToInteger(FormGetText(textField_1)) + StringToInteger(FormGetText(textField_2))));
else
if choiceIsSelected(choice_1, sub) then
FormSetText(textField_3, IntegerToString(StringToInteger(FormGetText(textField_1)) - StringToInteger(FormGetText(textField_2))));
else
if choiceIsSelected(choice_1, mul) then
FormSetText(textField_3, IntegerToString(StringToInteger(FormGetText(textField_1)) * StringToInteger(FormGetText(textField_2))));
else
if choiceIsSelected(choice_1, diw) then
Begin
if FormGetText(textField_2)='0' then
FormSetText(textField_3, 'تعريف نشده');
else
FormSetText(textField_3, IntegerToString(StringToInteger(FormGetText(textField_1)) / StringToInteger(FormGetText(textField_2))));
End;
End;
until clicked = exitCmd;
end.



Screen Saver ساده
کد زیر با استفاده از یک حلقه ,متنی را تا زمانی که کلیدی فشرده نشود نشان می دهد

کد:
program Screen_Saver;
begin
while GetKeyPressed = KE_NONE do
begin
DrawText('Hello MidletPascal ', 70, 130);
Repaint;
Delay(100);
end;
end.

خواندن فایل متنی و نمایش 2 خط اول آن روی صفحه
کد:
program ResourceSample;
var text: Resource;
img: image;
exit: command;
str1, str2: string;
begin
text: = OpenResource ('/ tekst.txt');
if (ResourceAvailable (text)) then
begin
str1: = ReadLine (text);
str2: = ReadLine (text);
CloseResource (text);
end;
DrawText (str1, 0,130);
DrawText (str2, 0,140);
img: = LoadImage ('/ image.png');
DrawImage (img, 0,0);
if OpenPlayer ('/ wrong.mid', 'audio / midi') then
if SetPlayerCount (1) then
if StartPlayer then DrawText ('duration -' +
IntegerToString (GetPlayerDuration) + 'ms.', 0.150);
exit: = createCommand ('output', CM_SCREEN, 1);
addCommand (exit);
Repaint;
while exit <> GetClickedCommand do delay (100);
end.

حرکت کادر به عقب و جلو با استفاده از دکمه های کنترلی
کد:
program Sample;
var x, y, key: integer;
begin
x: = 0;
y: = 0;
while key <> GA_FIRE do
begin
SetColor (255,255,255);
FillRect (0,0,240,320);
SetColor (0,0,0);
FillRect (x, y, 10,10);
Repaint;
Delay (100);
Key: = KeyToAction (GetKeyClicked);
if key = GA_LEFT then x: = x-10;
if key = GA_RIGHT then x: = x +10;
if key = GA_UP then y: = y-10;
if key = GA_DOWN then y: = y +10;
end;
end.



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

کد:
www.boolean.name > Game Programming Mobile > MidletPascal > Our Open Source Software
www.boolean.name > Game Programming Mobile > MidletPascal > Projects MidletPascal

لیست کتابخانه ها
کد:
www.boolean.name > Game Programming Mobile > MidletPascal > Libraries

> Working with the file system:
Lib_bmp: Save BMP images into PS
Lib_imload: Download images of FS
Lib_jsr75: Create, read, write files to the file system
Lib_jsr75ex: Extended to work with FS
Lib_jsr75mf: Simultaneous work with several files
Lib_pim: Using the phone book
Lib_png: Save images in PNG format
Lib_jpeg: Save images in JPEG format

> Backup / decompress data
Lib_gzip: Unpacking GZIP
Lib_zip: Unpack the ZIP (jsr75)
Lib_tar: unpacking tar archives

> Network and Bluetooth:
Lib_bt: Full support for bluetooth connection
Lib_netutils: Download images for HTTP
Lib_socket: socket support
Lib_web: Working with http, correct handling of POST
Lib_ftp: Implementing support for FTP protocol
Lib_binsock: send / receive binary data over a socket
Lib_proweb - full support for http. Work POST.
Lib_smtp2 - Sending mail with authorization

> Graphics:
LIb_st: Output styled text
Lib_font32: Graphic fonts
Lib_text: Text output in the transfer window and styles
Lib_alpha: Change the transparency of the image
Lib_gfx: Advanced graphics features
Lib_canvas: Rotate the screen and copy
All you need to work with graphic fonts
Lib_game: Sprites, tiles, etc. Game designer, in general
Lib_anigif: Download and playback is GIF-animation
Lib_jpeg: Saving JPEG-images
Lib_effects: Library to apply different effects to the picture
Lib_m3g: support for 3D graphics
Lib_mcv3: Mascot Capsule v3
Lib_picker: copy of the image with transparency
Lib_gif: create animated GIF images
Lib_beta: Redirects output to the image / display
Lib_rc: screen rotation
Lib_turn: Rotating images at any angle

> Media:
Lib_mmapi: Advanced player controls
Lib_player: Any number of players. Need support Audio Mixing
Lib_tonesnd: tone generation
Lib_media: Audio Capture, photos /? \
Lib_videocnv: Playing video in Canvas
Lib_medialist: Get a list of media formats supported by the phone

> System features:
Lib_thread: Implementation of the procedure in an independent thread
Lib_memory: The number of used and available memory
Lib_memclean: Clearing memory of "rubbish"
Lib_str: Additional functions for string manipulation
Lib_vibra: Vibration Control
Lib_autorun: Autostart MIDlet
Lib_timer: Performing procedures on the timer
Lib_array2d: Creating a two-dimensional dynamic arrays
Lib_bytes: dynamic array of bytes
Lib_dbl: java double support
Lib_rms: New aspects of a record store
Lib_call - A phone call to the number
Lib_scodes - Definition of codes of soft keys and phone model
Lib_resloader - Economical resource utilization
Lib_sms: Sending SMS
Lib_radix - Number Systems
Lib_keys: Pressing the buttons
Lib_suspend: Collapsing MIDlet
Lib_safeload: safe loading of images
Lib_threads - dynamic flow (performing procedures on separate threads, parallel to the main program)
Lib_adata - Several dynamic arrays
Lib_xml - Splitting XML / HTML document
Lib_parse: splitting strings

> Cryptography / coding data
Lib_base64: Implementation of the algorithm base64
Lib_md5hash: implementation of a cryptographic algorithm MD5
Lib_vault - resources under lock and key

> Standard interface:
Lib_ui: Advanced control of the shape and the menu

> Advanced graphical interface:
Lib_gui32 - long suffering, windows
Lib_font32: Graphic fonts
Lib_line32 - Horizontal bar elements
Lib_menu32 - Graphical menus without headaches


پایان

آنچه توانسته ایم انجام دهیم، لطف پرودگار بوده است.

XMen For Ever
۱۷-بهمن-۱۳۹۱, ۱۶:۳۸:۲۸
ارسال‌ها
پاسخ
تشکر شده توسط : behzady, lord_viper
lord_viper غایب
مدیر کل انجمن
*****

ارسال‌ها: 3,949
موضوع‌ها: 352
تاریخ عضویت: بهمن ۱۳۸۴

تشکرها : 5193
( 9875 تشکر در 2650 ارسال )
ارسال: #14
RE: آموزش برنامه نویسی موبایل با Midlet Pascal
این هم کل مطالب این تاپیک به صورت یک فایل pdf


فایل‌(های) پیوست شده
.rar   MIDletPascal.rar (اندازه: 508.58 KB / تعداد دفعات دریافت: 73)

[تصویر:  xshon.png]
از آن نماز که خود هیچ از آن نمی فهمی خدا چه فایده و بهره اکتساب کند
تفاخری نبود مر خدای عالم را که چون تو ابلهی او را خدا حساب کند
۱۷-بهمن-۱۳۹۱, ۱۹:۵۶:۰۹
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : godvb, behzady, فاطمه وطن دوست


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  راهنمایی برای برنامه نویسی student-p 6 5,999 ۲۴-آبان-۱۳۹۵, ۱۳:۳۸:۰۵
آخرین ارسال: leyla_93
  برنامه نویسی اندروید ؟؟ EBKA 8 7,513 ۲۹-خرداد-۱۳۹۴, ۱۴:۴۳:۲۲
آخرین ارسال: bghad1
  [آموزشی] کتاب برنامه نویسی آندروید mitraahmadi 0 2,001 ۰۷-خرداد-۱۳۹۴, ۱۸:۵۴:۲۷
آخرین ارسال: mitraahmadi
  سوالات برنامه‌نویسی اندروید babyy 52 34,415 ۱۸-اسفند-۱۳۹۲, ۱۲:۵۹:۰۷
آخرین ارسال: omid_phoenix
  [آموزشی] شروع برنامه‌نویسی اندروید babyy 8 10,127 ۱۵-آبان-۱۳۹۲, ۲۳:۰۰:۲۷
آخرین ارسال: babyy
  برنامه نویسی اندروید با Google Android Studio babyy 3 13,288 ۰۷-خرداد-۱۳۹۲, ۰۸:۵۵:۵۱
آخرین ارسال: Di Di
  آموزش برنامه نویسی برای موبایل توسط جاوا NabiKAZ 66 95,372 ۰۸-اردیبهشت-۱۳۹۲, ۰۹:۴۴:۲۱
آخرین ارسال: mmghp75
Exclamation برنامه نویسی آندریود moosavi12 12 11,571 ۱۰-اسفند-۱۳۹۱, ۱۵:۳۸:۱۳
آخرین ارسال: طار
  اموزش برنامه نویسی سیمبین با c++builderX lord_viper 5 11,449 ۰۶-تير-۱۳۹۰, ۱۹:۴۴:۵۱
آخرین ارسال: h0x00i
  sign کردن برنامه های موبایل lolohacko 3 7,568 ۲۵-فروردین-۱۳۹۰, ۰۸:۲۷:۰۶
آخرین ارسال: wlc

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 2 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS