الأربعاء، 20 يناير 2010

عبر عن نفسك

بسم الله الرحمن الرحيم

ان تحقيق السعاده ليس فى تحقيق الكمال ,او الثراء , او الوقوع فى الحب او امتلاك سلطه او نفوذ او معرفة الناس الذى تعتقد بوجوب معرفتهم او النجاح فى عملك
===================

ان تحقيق السعاده يكمن فى ان تحب نفسك بكل خصائصها الحاليه ... ربما ليس كل اجزاء نفسك تستحق ان تحبها ولكن جوهرك يستحق ذلك====================

اعرف اخطاءك لكن لاتسمح لوجودها ان يصبح عذرا تلتمسه لعدم حبك لذاتك كما هى

=================== 

عندما لاتقبل ذاتك فانك تصبح شديد الحساسيه تجاه رفض الآخرين لك

==================

عندما لاتقبل ذاتك فانك تضيع الوقت باحثا عن حب الآخرين لك حتى نصبح متكاملاً

=================

عندما لاتقبل ذاتك فان جهودك تنحصر فى محاولة قهر الآخرين وليس فى البحث عن افضل امكانياتك

===============

اذا لم تكن سعيدا فى حياتك وتنتظر وقوع شيئا ما من شأنه ان يغير حياتك للأفضل ... فانك وبكل تأكيد ستنتظر طويلاً

=============

ان التمسك بالمستحيل هو مصدر كل الآمك تذكر ان المعاناه فى النهايه هى مجرد اختيار

===========

اذا كنت تتوقع من الآخرين اصلاح ما افسدوه .... فان خيبة الامل ستلازمك

=========

انك بحاجه لان تصفح عن الآخرين بالقدر الذى تستحق ان يصفحوا به عنك

==========

ان لم تكن لديك ثقه بذاتك فستجد نفسك مجبراً على ان تثق فى اى شخص من شأنه ان يعتنى بك

==========

ان ثقة الآخرين بك شيئاً هاما ولكن مهمتهم الوحيده هى تذكيرك بان تثق فى نفسك

==========

انك الفنان الوحيد الذى يستطيع بريشته ان يرسم حياتك

===========

اتبع قلبك وليكن لديك الشجاعه كى تحلم لان ما تحلم به يصبح حياتك

===========

كن على يقين بذاتك
وعندما تفقد اتجاهك .......... انظر داخلك كى تجده مره اخرى

============

ان قوتك تختفى فى اوقات الضعف وتحتاج الى ايمانك كى تظهر نفسها

===========

عبر عن مشاعرك اولاً باول ولا تجعلها تتراكم ...... فعندما تبقى المشاعر لفتره طويله فانها تصبح اقل صدقاً

=============

امنح تقديرك ... دعمك ... تفهمك ... حبك ... ولكن من منطلق القوه

ان العطاء من منطلق الضعف ما هو الا نوع من انواع التسول

============

عندما يغلق باب للسعاده ... ابواب غيره تفتح ... ولكننا ننظر وبشده خلف  الباب المغلق .... فلا ننتبه لوجود ابواب اخرى مفتوحه 

Assembly programs



بسم الله الرحمن الرحيم
السلام عليكم ورحمه الله وبركاته 
اصحابي الاعزاء دي  بعض برامج الاسمبلي علشان امتحان العملي بكره وان شاء الله هيكون سهل زي البرولوج وبالتوفيق للجميع
max program   
.386
.MODEL FLAT
ExitProcess PROTO NEAR32 stdcall,dwExitCode:DWORD
include io.h
cr equ 0dh
lf equ 0ah
.STACK 4096
.DATA  
list           BYTE             10,30,1,90,4  
Result    Byte             "the maximum is:"
max       WORD   ?
  Byte cr,lf,0
.CODE 
_start:

  mov ecx,4
LEA  ebx,list
mov  AL,[ebx]
next:
  add ebx,1
  cmp    AL,[ebx]
  jge   skip
  mov   AL,[ebx]
skip:
  loop  next
  mov AH,0 
  Itoa  max,AH
  output    Result
INVOKE ExitProcess,0
PUBLIC _start
END  
ودي نتيجه التنفيذ




sum of N-series
.386
.MODEL FLAT
ExitProcess PROTO NEAR32 stdcall,dwExitCode:DWORD
include io.h
cr equ 0dh
lf equ 0ah
.STACK 4096
.DATA
S     Byte        "enter the N series:"
N       Dword    ?
RES  Byte        "the sum is:",0
sum   Dword    ?,0
.CODE
_start:
          output S
          input N,4
          atod  N
          mov Ecx,Eax
          mov edx,0
next:
        add edx,ecx
        loop next
       dtoa sum,edx
       output RES
 output sum
INVOKE ExitProcess,0
PUBLIC _start
END



 search for an element in array
.386
.MODEL FLAT
.STACK  4096                 ; reserve 4096-byte stack
INCLUDE io.h


ExitProcess PROTO NEAR32 stdcall, dwExitCode:DWORD

.DATA                        ; reserve storage for data

list DWORD 13,12,10,30,40,50,60,70,80,9
msg1 BYTE  "enter number to be searched: ", 0
num BYTE 6 DUP(?)
msg2 BYTE "The element was not found",0
msg3 BYTE "The element found",0
Res BYTE 10 DUP(?),0

.CODE                         ; start of main program code

search PROC NEAR32
push ecx
push edx
push ebx
push esi
push ebp

mov ebp,esp
mov ecx,[ebp+28]              ; number of array elements
mov ebx,[ebp+24]                ;address of list[0]
mov edx,[ebp+32]                  ; number for search
;output msg1
mov esi,0
         
next:   cmp edx,[ebx]         
             JNZ  skip
            mov eax,esi
            ;output msg1  
            JMP break
skip:    ; output msg1
             inc esi
             add  ebx,4                 ; move to next item
loop next

mov eax,-1
break:   

pop ebp
pop esi
pop ebx
pop edx
pop ecx

RET   
search ENDP

_start:
          
             output msg1
             input num,6
             atod num              ;eax=num
                       
            ;mov eax,-1

            mov ecx,10
            lea ebx,list
            push eax          ;number for search
            push ecx           ; n elements
            push ebx          ; address of list[0]
          
            call search          
                 
                dtoa Res,eax
                output Res

                             
        INVOKE  ExitProcess, 0  ; exit with return code 0

PUBLIC _start                ; make entry point public
END
Any Service
ربنا يوفقنا جميعا بكره والسلام عليكم ورحمه الله وبركاته

السبت، 2 يناير 2010

Assembly program

بسم الله الرحمن الرحيم
السلام عليكم ورحمه الله وبركاته
اصحابي سكشن ( 3 ) انا عملت البرنامج اللي طلبته المعيده كتطبيق علي IMUL في الاسمبلي
والبرنامج يقوم بحساب العلاقه الاتيه

(length*width + length*height + width*height)

والناتج طبعا هيضرب في 2
ده الحل واللي عنده استفسار يسأله في يوم السكشن مافيش اي مانع وممكن تحل باكتر من طريقه لكن دي اسهل طريقه


.386
.MODEL FLAT
ExitProcess PROTO NEAR32 stdcall,dwExitCode:DWORD
include io.h
.STACK 4096
.DATA
l byte "enter the length:",0
w byte "enter the width :",0
h byte "enter the height:",0
area byte " The volume is :"
sum byte 32 DUP(?)
value byte 16 DUP(?)

.CODE
_start:
output l
input value,16
atoi value
mov bx,ax ;bx=lengh
mov dx,bx
output w
input value,16
atoi value
mov cx,ax ;cx=width
IMUL bx,cx ;bx=length*width
output h
input value,16
atoi value
IMUL dx, ax ;dx=length*hight
add bx,dx ;bx=length*width+length*hight
IMUL cx,ax ;
add bx,cx
add bx,bx ;2*bx
itoa sum,bx
output area
INVOKE ExitProcess,0
PUBLIC _start
END
ودي نتيجه التنفيذ


وفي اقرب فرصه هنزل حلول الاسيمنتس كلها وحل امتحان اعمال السنه بس اخلص مشروع السوفت وير
والسلام عليكم ورحمه الله وبركاته

الخميس، 31 ديسمبر 2009

linked list application

بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
اليوم اقدم لكم برنامج بسيط جدا تطبيق علي linked list بناء علي طلب اصحابي سنه تانيه علشان امتحان العملي دي حاجه بسيطه انا عملتها اتمني الاستفاده البرنامج بيوضح العمليات التي يمكن تطبيقها علي ابسط انواع linked list وهي

عمليه الانشاء
عمليه الاضافه في اول القائمه
عمليه الاضافه في اخر القائمه
عمليه البحث
عمليه الترتيب
عمليه الحذف
سوف نقوم بعمل برنامج يطبق هذه العمليات البرنامج بسيط جدا عن الطلاب هندخل بيانات طالب او اكتر ونطبق العمليات السابقه عليه



class student
{
private:
char name [50];
int age;

public:

int id;
void enter_data()
{
cout<<" ** enter name ** ";
cin>>name;
cout<<" ** enter the age ** ";
cin>>age;
cout<<" ** enter the id ** ";
cin>>id;
cout<<" ******** //////****** ";

} //end function
void display_data()
{
cout<
cout<<"------------------ ";
cout<
cout<<" ------------------- ";
cout<
cout<<" ----------------- ";
} //end function

int print_id() //this function used to return student id
{
return id;

} //end function
};//end class

struct node
{
student data ; //data contain name,id ,age.
node *next; //pointer
};//end struct


class list
{
private:
node *head;
node *tail;
public:
list() //constructor
{
head=Null;
tail=Null;
} //end constructor

void insert_last(student d)
{
node *nn=new node;
nn->data=d;
if(head==Null)
head=nn;
else
tail->next=nn;
tail=nn;
nn->next=Null;
} //end function

void insert_first(student d) //add node at the first list
{
node *r=new node;
r->data=d;
if(head==Null)//list empty.
{
tail=r;
tail->next=Null;
}
else
r->next=head;
head=r;
}//end function

int search_id(int m) // function to search alinked list
{
int l=0;
node *temp=head;
while(( temp->data.print_id()!=m)&&(temp!=Null))
{
l++; //location
temp=temp->next;

}//end loop
if(temp->data.print_id()==m)
return l;
else
return -1;
}//end function

void sort()
{
node *temp1;
node *temp2;

for(temp1=head;temp1!=Null;temp1=temp1->next)
{

for(temp2=temp1->next;temp2!=Null;temp2=temp2->next)
{
if(temp1->data.id >temp2->data.id)
{
student t=temp1->data;
temp1->data=temp2->data;
temp2->data=t;
} //end if
} //endinner loop
} //end outer loop
} //end fun

void delete_student() //this function includes all types of delete in the linked list
{
node *temp=head;

int h;
node* temp1;
if(head==Null)
cout<<"empty list" <
else if
(h==temp->data.id)
{
head=head->next;
temp->next=Null;
delete temp; //delete the first item in the list
}
else if(h==tail->data.id)
{

while(temp->next!=tail)

temp=temp->next;
tail=temp;
temp=temp->next;
tail->next=Null;
delete temp; //delete the last irem in the list
}
else
{
while((temp->next!=Null) &&(h==temp->data.id))
temp1->next=temp->next;
delete temp; //delete any item betweem them
}//end else
} //end function


int countnode() //this function the number of nodes in the list
{
int count=0;
node *temp=head;
while(head!=Null)
{
count++;
temp=temp->next;
return count;
}
} //end function


void display() //this function to display all actions whitch i do
{
node *current;
current=head;
while(current!=Null)
{
current->data.display_data();
current=current->next;

} //end loop
} //end function
} //end class
void main()
{
int option;

student x[3];
student d;
list l;
int i,m,loc,h,w;
while(option!=0

{
cout<<" ------------------------------------------ ";
cout<<" 1.add new student at the linked list at last ";
cout<<" 2.add new student at the linked list at first ";
cout<<" 3.show all studentes data "<
cout<<" 4.search for student by id in any postion in the list ";
cout<<" 5.sort student by id ";
cout<<" 6.delete the student by id in any postion in the list ";
cout<<" 7.to know the number of nodes in the linked list ";
cout<<" 8. to exit t the program ";
cout<<" "<
cout<<" --------------------------------------- ";
cout<<" *** *** ** * welcom ********* *** ";
cout<<" enter your option ";

cin>>option;
switch(option)
{
case 1:
for(i=0;i<3;i++)
{
d.enter_data();l.insert_last(d);

} //end loop
break;
case 2:
for(i=0;i<3;i++)
{
d.enter_data();
l.insert_first(d);
}//end loop
break;
case 3:
cout<<" the students are ";
cout<<" ******////***** ";
l.display();
break;
case 4:
cout<<" enter the id ";
cin>>m;
loc=l.search_id(m);
if(loc==-1)
cout<<" the student not found ";
else
cout<<" the student is found at : ";
cout<<" ----------------------------- ";
break;
case 5:
cout<<" the sorted list is: ";
l.sort();
l.display();
break;
case 6:
cout<<"enter the id";
cin>>h;
l.delete_student();
l.display();
break;
case 7:
cout<<" the number of nodes in the list is ";
w=l.countnode();
cout<<<>
break;
case 8:
cout<< " the program ended ";
cout<<" "<
cout<<" & & & & & & GOOD LUCK & & & & & & & ";

break;
}//end loop
}//end switch
getch();
}//end main

ودي نتيجه تنفيذ البرنامج









واخيرا ابقوا عدلوا شكل البرنامج علشان اللخبطه اللي بتحصل اثناء الرفع
والسلام عليكم ورحمة الله وبركاته

الاثنين، 28 ديسمبر 2009

الدرس الثالث


بسم الله الرحمن الرحيم

السلام عليكم ابدا معكم اليوم الدرس الثالث وهو بعنوان

Instantiation and Unification

ماهي عملية ال Unification ؟

سوف اشرحها من خلال هذا المثال نفترض لدينا مجموعه ال facts الاتيه

Parent(john,tom).

Parent(jim,kate).

Parent(jean,marry).

عندما تقوم بعمل استعلام كالاتي

?-parent(jim,kate).

ماالذي يحدث للرد علي هذا الاستعلام ؟

الذي يحدث كالاتي يقوم البرولوج بالبحث عن هذا الاستعلام في مجموعة ال facts الي ان يجد مايطابقه من هذه ال facts ويقوم هنا بعمل المطابقه لكل جزء من اجزاء الاستعلام من حيث اسم ال predicate (parent) وعدد ال arity ومن حيث ال terms اذا نجحت المطابقه يرد البرولوج ب yes وهذا هو المقصود بعمليه ال Unification

Examples :

?-parent(john,tom).

Yes

?-parent(hany,ali).

No

لان هذه ال fact لا توجد ضمن مجموعة ال facts التي اعلي لذلك اي استعلام لايوجد في ملف ال knowledge base سوف يرد البرولوج عليه ب no

ولكن ماالذي يحدث اذا احتوي الاستعلام علي متغيرات كالاتي

?-parent(X,tom).

معني هذا الاستعلام اريد معرفة من هو الاب ل tom ؟

هنا كما قلنا سيحدث Unification وايضا سيكون هناك قيمه للمتغير x وعملية ايجاد قيم المتغيرات التي توجد في الاستعلام تسمي Instantiation

ماهي عملية ال Instantiation ؟

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

?-parent(X,tom).

X=john.

Yes

ما الذي حدث ؟ قام البرولوج بعمل Unification عن طريق instantiation للمتغير X بقيمه وهي john

ملاحظه :

حاول مطابقة المثال التالي

Likes(jim,X) and likes(X,kate).

ماالذي سيحدث هنا ؟

كما تعودنا سيقوم البرولوج بعمليه ال unification سيري ان اسم ال predicate قد نجح في المطابقه واايضا عدد ال arity متساوي لذلك يذهب لعمليه ال instantiation لايجاد قيم المتغير X سوف يقوم بوضع X تساوي kate في الحاله الاولي وعندما يذهب للثانيه سيري ايضا ان المتغير X سوف ياخذ قيمه اخري وهي jim وهذا غير مسموح به في البرولوج كما قلنا في الدرس السابق لايمكن للمتغير ان ياخذ اكثر من قيمه فانتبه جيدا

ملاحظه ماهو ال unifier ؟

هو التعويض عن متغير بالقيمه التي اخذها وياخد الشكل الاتي تطبيقا علي المثال السابق kate/X

الي هنا انتهي درس اليوم ارجو ان اكون قد وفقت فيه موعدنا الدرس القادم مع شرح كيفية سير عملية البحث في البرولوج Prolog search strategy والسلام عليكم ورحمه الله وبركاته


الأحد، 27 ديسمبر 2009

الدرس الثاني

بسم الله الرحمن الرحيم

السلام عليكم ورحمة الله وبركاته ابدا معكم اليوم الدرس الثاني كما وعدت وهو بعنوان

Prolog syntax

اولا تذكر ان برنامجنا يتكون من

Logic program=facts + rules

والذي يتمثل في ملف ال knowledgebase


prolog syntax

ال fact : اي شئ متحقق وغير مشروط وتاخذ الشكل

(t1,….tn). r

حيث تمثل ال r اسم العلاقه ومابين القوسين يمثل ال terms مثل

parent (ali, maged).

ال rule وهو يحتوي علي الاقل علي شرط واحد ويتكون من جزاين هما

Body , head وياخذ هذا الشكل

Rule has the form : head :- body

ويكون متحقق اذا تحققت كل متغيرات الجانب الايمن(body) يكون الجانب الايسر متحقق (head)

العلامه (:-) تعني if

مثال

brother(X,Z):-parent(X,Y),parent(X,Z).

سوف نتناول في هذا الدرس شرح النقاط الاتيه

Variables.

Atoms

.Numbers

Structures

Arity


اولا: المتغيرات ((Variables

يتم تعريف المتغيرات في البرولوج في شكل سلسله من الحروف او الارقام واهم مايميزها ان تبدا بحرف capital وايضا يمكن ان تبدا ب underscore (__)

امثله X,_RD ,Ahmed

لاحظ جيدا ان المتغيرات في الغات الاخري مكان يتم حجزه في الذاكره اما في البرولوج فان المتغير يتم اعطاؤه القيمه عن طريق عمليه instantiation وهي عمليه ربط المتغير بقيمه وايضا المتغيرفي البرولوج لاياخذ اكثر من قيمه

المتغير الذي يبدا ب underscore يعرف باسم Anonymous variable وهذا معناه ان كل الذي يهمني ان اجد حميع القيم لل ( _ ) الذي يحقق الاستعلام بغض النظر عن هذه القيم

مثال

?-parent (_, _).

Yes

وهذا الاستعلام مكافئ للاستعلام الاتي

?-parent(X,Y).

ثانيا : Atoms

تاخذ ثلاثة اشكال ولها شروط هامه

اولا : alphanumeric تتمثل في السلاسل الحرفيه او ال digits ويمكن ان تحتوي علي underscore ولكن لا تبدا به ولابد ان تبدا بحروف صغيره علي عكس المتغيرات

مثال

a, my_frind ,fatma .

ثانيا : special character strings هي عباره عن سلسله من الرموز الخاصه ولا تحتوي علي اي حروف او اي underscore مثل

>==>,--------,<<<>>>

ثالثا : quoted character strings اذا احتوي ال atom علي اي علامه او اذا بدا بحرف كبير او اذا احتوي علي مسافات مثل لابد ان ينحصر بين ' ' مثل

'Ali ','fa my'.

ثالثا الاعداد Numbers يمكنك استخام الاعداد الصحيحه والحقيقيه في البرولوج مع وجود قيد علي الاعداد الحقيقيه وتكون بهذا الشكل

23 integer

0.25 Real

كما يمكننا اجاراء العمليات الحسابيه المعتاده كالجمع والطرح والضرب والقسمه وغيرها من العمليات

Addition For +

For subtraction -

For multiplication *

For division /

For integer division //

For power **

Mod for integer reminder

يمكننا عمل evaluation لاي تعبير رياضي عن طريق استخدام ال is والشكل العام لاستخدامه كالاتي

Variable + is + expression

Example:

?- X is 4*3.

X=12

Yes

باختصار فان ال built in predicate is يقوم بعمل evaluation للطرف الايمن ووضعه في الطرف الايسر كما لاحظنا في الاستعلام السابق

تخيل اذا لم نضع is هل الناتج سيكون نفس الناتج السابق كالاتي

?-X=4*3.

X=4*3

Yes

هنا اعتبرها سلسله ولم يقم بعمل اي evaluation للتعبير

رابعا :Structures وتاخد ثلاثة اشكال

1. Simple terms:

وهي تكون اما atoms او variables او numbers


. 2Functors

وهي اسماء لل relations او ال predicates ولابد ان تكون من نوع alphanumeric atoms

مثل flight ,direct flight

3. Structures or compound terms:

وهي عباره عن functor (terms)

Example:


.( flight (egypt, london

book('Programming language',auther(tom)).

ملاحظه جيده

Functors can be overloaded :

Examples :

flight(egypt).

flight(egypt,paris).

flight(X):-flight(X,_).

ماهو ال Arity

هو عدد اال argument في ال compound term

Arity is the number of argument in compound term

Examples:

parent(ali,ahmed) . is aterm with arity 2

mother(mona). is aterm with arity 1

parent(parent(ali)) is aterm with arity 1