Professional Documents
Culture Documents
حلظ املربجمون و مع تطور و تعقيد الربامج أن أسلوب سرد السطور الربجمية سوف يوصلنا إىل درجة من
التعقيد كبرية لذلك اقرتحوا أسلوب الربجمة البنائية و الذي يعد استخدام الدوال وجها من وجوهها فبدال
من أن يتم تكرر القرارات الربجمية اليت أالحتياج إليها يف الربانمج ( لنفرض عدد التكرار يصل اىل ألف
مرة ) فمن االفضل واالجدر وضع هذه السطور ضمن تركيب معني يطلق علية اسم داله ويتم أستدعاء
هذه الداله عند احلاجه لتنفيذ تلك القرارت املتكررة وابلثايل سوف توفر هذه العملية عدة فوائد وهى
كالثايل:
تساعد الدوال املخزنة يف ذاكرة احلاسب على اختصار الربانمج إذ يكتفى ابستعادهتا ابمسها فقط .1
لتقوم ابلعمل املطلوب.
تساعد ال دوال املخزنة يف مكتبة احلاسب ،أو اليت يكتبها املربمج على تاليف عمليات التكرار .2
يف خطوات الربانمج اليت تتطلب عمال طويال وشاقا.
تساعد الدوال اجلاهزة على تسهيل عملية الربجمة نفسها. .3
توفر مساحة من الذاكرة املطلوبة. .4
اختصار عمليات زمن الربجمة وتنفيذ الربانمج أبسرع وقت ممكن .5
تعيد قيمة بعد استدعائها وتكون بشكل التايل عند استدعائها وجيب أن حتتوي على return .1
داخلها على returnوطريقة استدعائها يف الربانمج فقط تتم من خالل كتابة اسم الدالة
مالحظات هامه
-يف حالة استخدام دوال ذات القيمه االسرتجاعية ،جيب خزن القيمة املعادة يف متغري بنفس
نوع القيمة املعادة اي لو كان نوع القيمة املعادة هو integerجيب أن يتم تعريف املتغري على
انه متغري من نوع integerلتخزن به النتيجة القيمة املرجعة.
-املتغريات املعرفة داخل الدوال تنتهي حياهتا ابنتهاء تنفيذ أخر سطر يف الدالة
-ميكن استدعاء الدالة لنفسها ملرة أو أكثر من مرة .وأتخذ الدالة الشكل العام التايل :
)Type name(parameter1, parameter2,…….
{
;Statement
;) )Return( name(parameter1, parameter2,…….
}
✓مثال (: )1استخدام الدوال صمم برانمج يستقبل عدد Nمن العناصر ويطبع فقط االعداد الزوجية
منها
>#include <iostream.h
>#include<conio.h
;) (void even
;int n,x
)(main
{
;)(clrscr
;cin>>n
)while(n!=0
{
;cin>> x
; )even( x
;n=n-1
جامعة طرابلس االهلية /قسم تقنية المعلومات صفحه رقم 3
}
;)(getch
}
)void even( int r
{
)if(r%2==0
;cout<<r<<endl
}
✓مثال (: )2أكتب برانمج يقوم بطباعة مصفوفه احادية البعد الستخدام الدوال
>#include <iostream.h
>#include<conio.h
)void printArray(int b[],int n
{
)for(int i=0;i<n;i++
;]cout<<b[i
}
)(void main
{
;)(clrscr
;}int a[5]={2,4,6,8,9
;)printArray(a,5
;)(getch
}
✓مثال (: )3أكتب برانمج يقوم بقراءة عناصر مصفوفه احادية البعد مث يقوم إبستخدام الدوال مبا يلي:
طباعة عناصرها و البحث عن عنصر ومن مث مجع مجيع عناصر املصفوفه.
>#include<iostream.h
>#include<conio.h
)void insertelementarray(int a[],int n
{
)for(int i=0;i<n;i++
{
;" =]"<<cout<<"a["<<i
;]cin>>a[i
}
}
• الرتكيب Structure
هو عبارة عن جمموعة من العناصر اليت تربطها مع بعضها البعض عالقات وثيقة وهذه العناصر من
املمكن أن تكون من أنواع خمتلفة من البياانت )… (int,float,char,وختزن هذه املعطيات يف الذاكرة
بشكل متتايل حتت اسم واحد ،ويستخدم لتمثيل بياانت شيء ما ،مثل سجل بياانت طالب ،سجل
بياانت سيارة وهكذا .ويتكون الرتكيب من جمموعة من احلقول ) (Fieldsوكل حقل ميثل معلومة مفردة
من معلومات الرتكيب وميكن أن يكون لكل حقل يف الرتكيب نوع بياانت خمتلف عن احلقول األخرى.
حيتوي هذا الرتكيب على ثالثة حقول هي :الرقم ( )noوهو من نوع ، intاالسم ( )nameوهو من
نوع stringواملعدل ( )averageوهو من نوع floatويتم تعريف الرتكيب يف لغة C++يف بداية
الربانمج ابستخدام األمر structوضمن الدالة ) (.main
الصيغة العامة لإلعالن عن الرتاكيب:
struct struct_name
{
;data type field1_name
;data type field2_name
.
.
;data type fieldn_name
;}
✓مثال ( : )1كيفية اإلعالن عن تركيب موظف حيوي احلقول (الرقم ,االسم ,الراتب) نكتب التايل:
• التعامل مع الرتاكيب:
بعد تعريف الرتكيب وقبل استخدامه جيب اإلعالن او التصريح عن متغري أو متغريات من الرتكيب
الستخدامها يف الوصول إىل حقول الرتكيب .حيث أنه ال ميكن الوصول اىل حقول الرتكيب بشكل
مباشر اال عن طريق متغري من نوع الرتكيب.
✓مثال ( : )2اكتب برانمج إلدخال بياانت الطالب (تركيب الطالب) وهي الرقم اجلامعي واالسم
والعنوان والقسم مث طباعتها ابستخدام الرتكيب.
>#include<iostream.h
)( int main
{
struct student
{
;int no
;]char name[30
;]char address[20
;]char department[15
;}
;student st
cout<<"enter the student ;"number:\n
;cin>>st.no
cout<<"enter the student ;"name:\n
;cin>>st.name
cout<<"enter the student ;"address:\n
;cin>>st.address
cout<<"enter the student ;"department:\n
;cin>>st.department
#include<iostream.h>
int main ()
{
struct student
{
int no;
char name[30];
char address[20];
char department[15];
};
student st[5];
int i;
for(i=0;i<5;i++)
{
cout<<"enter the student number:\n";
cin>> st[i].no;
cout<<"enter the student name:\n";
cin>> st[i].name;
cout<<"enter the student address:\n";
cin>> st[i].address;
cout<<"enter the student department:\n";
cin>> st[i].department;
. برانمج يقوم ابشاء تركيب يتعلق ببياانت افالم فيديو ومن مث عرض هذه البياانت:)2( ✓ مثال
#include<iostream.h>
#include<stdio.h>
struct books
{
char name[20],author[20];
}
a[50];
int main()
{
int i,n;
cout<<"No Of Books[less than 50]:";
cin>>n;
cout<<"Enter the book details\n";
cout<<"----------------------\n";
for(i=0;i<n;i++)
{
cout<<"Details of Book No "<<i+1<<"\n";
cout<<"Book Name :";
cin>>a[i].name;
cout<<"Book Author :";
cin>>a[i].author;
cout<<"----------------------\n";
cout<<"================================================";
for(i=0;i<n;i++)
{
out<<"\n "<<i+1<<"\t|"<<a[i].name<<"\t| "<<a[i].author;
}
cout<<"\n=================================================";
return 0;
}
ميكن إعطاء الرتاكيب قيم ابتدائية من خالل متغري الرتكيب واملثال:• إعطاء الرتاكيب قيم ابتدائية
:التايل يوضح ذلك
#include<iostream.h>
int main ()
{
struct customer
{
int count_no;
char name[20];
};
customer c1;
customer c2={18922,"abdallah"};
cout<<"enter customer 1 name: \n";
cin>>c1.name;
cout<<"enter customer 1count_number: \n";
cin>>c1. count_no;
cout<<"=== list of customers===\n";
cout<<"===================\n";
cout<<"name1:"<<c1.name<<"\n";
cout<<"count_number1::"<<c1.count_no<<"\n";
cout<<"name2:"<<c2.name<<"\n";
cout<<"count_number2::"<<c2.count_no<<"\n";