Stdlib Functions and Classes

بسم الله الرحمن الرحيم
لغة الرينج هي لغة مجانية مفتوحة المصدر تسمح لك بالتعديل والاضافة وعمل المكتبات،ويوجد فيها مكتبة تسمي ب “stdlib.ring”
وهي المكتبة  القياسية للغة ، تحتوي علي الدوال التي تحدثنا عنها في المقالات الخاصة بأساسيات اللغة مع بعض الدوال الجديدة التي سوف نتحدث عنها في مقالتنا اليوم وأيضا تحتوي علي   Methods يمكن استخدامها مع ال  Objects.


1-Stdlib Functions

الجدول التالي يوضح الدوال الموجودة في المكتبة: 3.png

قبل استخدام أي من تلك الدوال يجب عليك استدعاء مكتبة ال stdlib.ring كالتالي:

"load "stdlib.ring

ثم بعد ذلك يمكنك استخدام اي من تلك الدوال مباشرة كما هو موضح في موقع اللغة

ولمعرفة المزيد عن كيفية عمل الدوال يمكنك الاطلاع علي مكتبة عمل الدوال مباشرة من هنا

ويمكنك أيضا عمل مكتبات خاصة بك تسهل عليك الكود  عن طريق فتح ملف جديد وحفظة بأي اسم وليكن     mylib.ring

ثم وضع الدوال الخاصة بذلك في تلك المكتبة ثم استدعاء المكتبة في ملفات أخري واستدعاء اسم الدالة.

أو من الممكن وضعها في مكتبة ال “stdcore.lib”  لتكون ضمن مكتبة ال “StdLib.ring”

مثال توضيحي باستخدام المكتبة بعد وضع دوال جديدة بداخلها.

"load"stdlib.ring
see Startswith2("myfile.txt","hello")+nl
see IsVowel2("Ring")+nl
see IsVowel2("unit")+nl
see capitalAllFirst("hello in ring lan., it is a powerful ")+nl

مثال1:

"load "stdlib.ring
#في هذه الدالة يطبع وينزل مباشرة بسطر جديد
("Puts("now we will print with new line by this func
("print("Hello,How are you?\nI'm fine!\t thanks\n
#في هذه الدالة عملنا شرط بأن يتم أخذ القيمةالمتغير الي بعد الهاش # و }
#وكذلك وعمل مسافات باستخدام t\ ونزول سطر جديد باستخدام n\
}for x=1 to 10
("print("#{x}\n
{

مثال2:

"Load "stdlib.ring
("puts("please put your name
#تستخدم لادخال الداتا من المستخدم عن طريق لوحة المفاتيح
()x=getstring
 ("{print("hello #{x

مثال3:

"Load "stdlib.ring
("puts("please put your name
#تستخدم لادخال الداتا عن طريق لوحة المفاتيح وتطبعها علي انها حرفية
()x=getstring
("print("hello #{x}\n
("puts("what is your age
#تستخدم لادخال الداتا عن طريق لوحة المفاتيح وتطبع الرقمي فقط
()y=getnumber
("{print("#{y

مثال4:

"Load "stdlib.ring
#لمعرفة مسار التطبيق المفتوح
see AppPath()+nl
#يحذف ملف ال exe ويطبع باقي المسار
see justfilePath("s:\newFolder\Test\rnote\x.exe")+nl
("see justfileName("s:\newFolder\Test\rnote\x.exe

مثال5:

"Load "stdlib.ring
aList = 1:10
#ينسخ قيمةالقائمة أو object مهما يحدث تغيير لا يؤثر علي قيمتة الاصلية في كل مرة
(del(value(aList),1
see alist[5]+5

مثال6:

"Load "stdlib.ring
#تستخدم لتكرار عدد معين من نوع الدوال ال Anonymous 
({{Times ( 2 , func { for x=1 to 10 {see x+nl

مثال7:

"Load "stdlib.ring
#في حالة وجود قائمة ودالة حيث ينفذ الدالة علي كل عنصر في القائمة
({See Map( [2,4,5], func x { return x*x

مثال8:

"Load "stdlib.ring
#ينزل سطر جديد بعد كل علامة (تم تحديدها بين "" )
#تم تحديد مسافة خالية للنزول بعد كل كلمة بعدها مسافة
See Split("one two three four five"," ")+nl
#تم وضع علامة الفاصلة للنزول بعد كل كلمة يوجد بعدها ,
See Split("one,two ,three ,four ,five",",")+nl

مثال9:

"Load "stdlib.ring
#تم تحديد "!" و "," و" " للنزول سطر جديد
 (" , ! " ,"See SplitMany("Hello in!Ring Language,it is nice ", "!, " )
"Load "stdlib.ring
/*
if n < 0 return -1 ok
if n = 0 return 0 ok
if n > 0 return 1 ok
*/
see "sign of 12 is = " + sign(12) + nl

مثال11:

"Load "stdlib.ring
#طباعة قيم القائمة داخل ملف
("list2file(1:100,"myfile.txt

مثال12:

"Load "stdlib.ring
#يحولStrings داخل الملف الي List 
("see file2list("myfile.txt

مثال13:

"Load "stdlib.ring
#بيختبر نفس حروف وقراءة الكلمة "بحيث من اليمين نفس اليسار"
("()Puts("Test Palindrome
cString = "AllA"
(see " "+Palindrome(cString

مثال14:

"Load "stdlib.ring
/*
Func MakeDir cDir
(system("mkdir " + cDir )

*/
("makedir("myfolder

مثال15:

"Load "stdlib.ring
 #"^'+-/\*~=@,%|&?!'"
#لاختبار اذا كان من الحروف الخاصة^'+-/\*~=@,%|&?!'
See isSpecial("%") + nl
See isSpecial("@") + nl
#لاختبار اذا كان من الحروف المتحركة"aeiou"
See isVowel("c") + nl

ونكتفي بهذا القدر من الدوال الموجودة في مكتبة Stdlib وللمزيد يمكنك الاطلاع عليها من موقع اللغة.


2-Stdlib Classes

عبارة عن Classes  بداخل عدة مكتبات ثم تم تجميعهم بداخل مكتبة StdLib وهما مجموعة ال Classes  الموضجين في الجدول التالي:

1.png

وتعرفنا في مقالات احري علي معظم ال Methods الخاصة بتلك  ال Classes االموضحين في الجدول، و نتعرف اليوم علي باقي ال Classes الاخري، وما يهمنا هو معرفة اسم ال Class المستخدم- لعمل Object من هذا ال Class عند استدعاء المكتبة واستخدام ال Methods الخاصة بهم وايضا ينبغي معرفة وظيفة وكيفية استخدام ال Methods.

1-ينبغي استدعاء مكتبة “Stdlib.ring”

2-عمل Object من ال Class المستخدم “الذي يحتوي علي ال Method المراد استخدامها”

لتوضيح عمل ال Methods بالامثلة  يمكنك الاطلاع عليها من الموقع الرسمي للغة من هنا

1-الMethods  الموجودة داخل ال Class ال StdBase

2.PNG

مثال توضيحي:

"Load "stdlib.ring
obase=new Stdbase
}obase
("Init("ring programming language
printLn() see size()+nl
()set ("ok,thanks") printLn
()see size
{

 

2-الMethods  الموجودة داخل ال Class ال String

2.PNG

مثال توضيحي:

"Load "stdlib.ring
oStr=new String
}oStr
("Init("ring programming language
see copy(2) see nl
()alist= tolist
see type(alist)+nl
()see split
{

3-الMethods  الموجودة داخل ال Class ال List

Capture.PNG

مثال توضيحي:

oList=new List
(["oList.init(["Hello
()olist.println
("olist.add("A") olist.add("B") olist.add("C") olist.add("D") olist.add("E")
()olist.print
()see olist.first#
((olist.Insert(1,olist.item(3
()olist.print

4-الMethods  الموجودة داخل ال Class الخاص بال Stack

3.PNG

ملحوظة: في ال Stack  يكون الاضافة بمبدأ “last in first” أي اخر واحد يتم اضافته يكون هو أول index

وعند عمل pop أو حذف يكون من اخر قيمة التي في أعلي ال Stack  أو اخر قيمة تم اضافتها.

5-الMethods  الموجودة داخل ال Class الخاص بال Queue

11.PNG

ملحوظة: في ال Queue  يكون الاضافة بمبدأ “first in first out” أي عند الاضافة يكون كالتالي: الاول يأخذ أول index والاخر يأخذ أخر ترتيب اخر index

وعند عمل Remove يكون الحذف بالترتيب أيضا أي يكون الحذف من أول index  أو أول عنصر تم اضافته.

مثال توضيحي:

"Load "stdlib.ring
ostk=new Stack
}oStk
()push("A") push("B") push("C") println
()pop() print
{
see copy("=",50) +nl
oq=new Queue
}oq
()add("A") add("B") add("C") println
()remove() print
{

6-الMethods  الموجودة داخل ال Class الخاص بال Hash Table

4.PNG

ال Hash Table عبارة عن جدول تجزئة يتم تطبيقه باستخدام المصفوفه Array  لتخزين البيانات بحيث يمكن الوصول السريع لأي بيانات نريدها مهما كان حجم تلك البيانات ، بالاضافه الى ادخال البيانات والاسترجاع والحذف بسرعه كبيره جدا. يحتوي علي مؤشر أو مفتاح للعنصر ويكون دالة في المحتوي الداخلي وقد يكون هذا ال index قيمة رقمية أو حرفية.

يفضل أن يستخدم في حال كانت البيانات التي تتعامل معها ثابته ولا تتغير ، وتريد الوصول لها في كل مره بشكل سريع ، مثلا البرامج التي تستخدم القاموس Dictionary يمكن أن تقرأ هذه القاموس وتضعه في بنيه Hash Table في الذاكره وقت تشغيل البرنامج.

مثال توضيحي:

5.jpg

الكود المرفق في الصورة

7-الMethods  الموجودة داخل ال Class الخاص بال Tree

1.PNG

ال Tree: هي طريقة لتمثيل البيانات علي هيئة شجرة حيث يتم التمثيل ب nodes أو عقد قد تحتوي علي جذر أو أكثر [children] ويوجدParentلكل مجموعة من ال Children.

وال node الاول الذي يندرج تحته ال Childs ولا يكون فوقه node يكون هو ال root.

اذا هي طريقة سريعة لتمثيل وعرض البيانات واسترجاعها والتعديل عليها بكل سهولةحيث يتم تمثيل البيانات علي هيثة tree تحتوي علي parents و Children.

استخدمنا هنا اثنين من ال attributes:

1-Data: وهي تمثل قيمة ال Nodes

2- Children:وهي عبارة عن قائمة تحتوي علي مجموعة ال Children

ملحوظة:

يتم عرض شجرة البيانات بترتيب حيث القيمة الاصغر تكون ناحية اليسار والقيمة الاكبر تكون ناحية اليمين.

ولهذا عند اضافة قيمة Child جديدة يكون بناء علي هذا الترتيب ان يكون قيم ال childs الي فوقه والي علي يمينه أكبر منه والي تحته والي علي يساره يكون أقل منه  كما سنوضح في الامثلة.

شكل توضيحي:

33.PNG

مثال توضيحي:

 

5.jpg

الكود المرفق في الصورة


وتعرفنا في مقالات سابقة عن الدوال الخاصة بقواعد البيانات المختلفة من ODBC,MYSQL&SQLite

ونتعرف اليوم عن ال Methods الخاصة بهم باستخدام ال Classes

1- ODBC Class

4.png

2-MySQL CLass

22.png

3-SQLite CLass

11.png

يمكنك الاطلاع علي بعض الامثلة علي استخدام قواعد البيانات باستخدام ال Classes من هنا

كما أننا تعرفنا علي ال Methods الخاصة بال Classes الاخري في مقالات سابقه ونكتفي  بذلك والي اللقاء…

تستطيع الاطلاع علي المشاريع مفتوحة المصدر من الموقع  GitHub
الموقع الرسمي للغة  http://ring-lang.net

 

 

 

 

 

 

 

 

 

Advertisements

اترك رد

إملأ الحقول أدناه بالمعلومات المناسبة أو إضغط على إحدى الأيقونات لتسجيل الدخول:

WordPress.com Logo

أنت تعلق بإستخدام حساب WordPress.com. تسجيل خروج   / تغيير )

صورة تويتر

أنت تعلق بإستخدام حساب Twitter. تسجيل خروج   / تغيير )

Facebook photo

أنت تعلق بإستخدام حساب Facebook. تسجيل خروج   / تغيير )

Google+ photo

أنت تعلق بإستخدام حساب Google+. تسجيل خروج   / تغيير )

Connecting to %s