منتدى الإلكترونيات قسم الالكترونكس لمناقشة الافكار والمعلومات المتعلقة بالهندسة الالكترونية للمبتدئين والهواة والفنيين - Electronics

   

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 01-02-2014, 03:07 PM المشاركة 25   
افتراضي



البرمجة بلغة السى – الجزء الثالث – 3- أنواع الدوال المعرفة بمعرفة المستخدم

لفهم الأدلة وعائد الدالة بشكل أفضل ، يمكن تصنيف الدوال المعرفة بمعرفة المستخدم كما يلى :
1- دالة بدون أدلة وبدون قيمة عائد .
2- دالة بدون أدلة وبفيمة عائد .
3- دالة بأدلة ولكن بدون قيمة عائد
4- دالة بأدلة وبقيمة عائد .
دعنا نأخذ مثال لإيجاد ما إذا كان اارقم أساسى أو لا باستخدام الأربعة تصنيفات للدوال المعرفة بمعرفة المستخدم :

دالة بدون أدلة وبدون قيمة عائد :


كود:
/*C program to check whether a number entered by user is prime or not using function with no arguments and no return value*/
#include <stdio.h>
void prime();
int main(){
    prime();      //No argument is passed to prime().
    return 0;
}
void prime(){  
/* There is no return value to calling function main(). Hence, return type of prime() is void */
    int num,i,flag=0;
    printf("Enter positive integer enter to check:\n");
    scanf("%d",&num);
    for(i=2;i<=num/2;++i){
        if(num%i==0){
             flag=1;
         }
    }
    if (flag==1)
        printf("%d is not prime",num);
    else
       printf("%d is prime",num);  
    }
الدالة prime() تستخدم لسؤال المستخدم عن الدخل ، واختبار ما إذا كان هذا الدخل أساسى أو لا وعرضه وفقا لذلك . لا يوجد أدلة لتمريرها ولا يوجد عائد من الدالة prime() .

الدالة بدون أدلة ولكن بقيمة عائد :


كود:
/*C program to check whether a number entered by user is prime or not using function with no arguments but having return value */
#include <stdio.h>
int input();
int main(){
    int num,i,flag;
    num=input();     /* No argument is passed to input() */
    for(i=2,flag=i;i<=num/2;++i,flag=i){
    if(num%i==0){
        printf("%d is not prime",num);
        ++flag;
        break;
    }
    }
    if(flag==i)
        printf("%d is prime",num);
    return 0;
}
int input(){   /* Integer value is returned from input() to calling function */
    int n;
    printf("Enter positive enter to check:\n");
    scanf("%d",&n);
    return n;
}

لا يوجد أدلة لتمريرها للدالة input() ولكن قيمة n يتم إعادتها (إرجاعها) من الدالة input() للدالة الرئيسية main() .

الدالة بأدلة وبقيمة عائد :

كود:
/*Program to check whether a number entered by user is prime or not using function with arguments and no return value */
#include <stdio.h>
void check_display(int n);
int main(){
    int num;
    printf("Enter positive enter to check:\n");
    scanf("%d",&num);
    check_display(num);  /* Argument num is passed to function. */
    return 0;
}
void check_display(int n){     
/* There is no return value to calling function. Hence, return type of function is void. */
    int i,flag;
    for(i=2,flag=i;i<=n/2;++i,flag=i){
    if(n%i==0){
        printf("%d is not prime",n);
        ++flag;
        break;
    }
    }
    if(flag==i)
        printf("%d is prime",n);
}
هنا الدالة "اختبار العرض" check_display() تستخدم لاختبار ما إذا كان n أساسى أو لا وعرضه وفقا لذلك . هنا يتم تمرير الدليل إلى الدالة المعرفة بمعرفة المستخدم ولكن لا يتم إعادة (إرجاع) قيمة من هذه الدالة إلى الدالة التى استدعتها .

الدالة بأدلة وبقيمة عائد :


كود:
/* Program to check whether a number entered by user is prime or not using function with argument and return value */
#include <stdio.h>
int check(int n);
int main(){
    int num,num_check=0;
    printf("Enter positive enter to check:\n");
    scanf("%d",&num);
    num_check=check(num); /* Argument num is passed to check() function. */
    if(num_check==1)
       printf("%d in not prime",num);
    else
       printf("%d is prime",num);
    return 0;
}
int check(int n){   
/* Integer value is returned from function check() */ 
    int i;
    for(i=2;i<=n/2;++i){
    if(n%i==0)
        return 1;
}
   return 0;
}
هنا ، الدالة check() تستخدم لاختبار ما إذا كان العدد أساسى أو لا . فى هذا البرنامج ، الدخل من المستخدم يمرر إلى الدالة check() ويتم إعادة (إرجاع) قيمة عدد صحيح منها . إذا كان العدد المدخل أساسى يتم إرجاع صفر (0) وإذا لم يكن العدد أساسى يتم إرجاع واحد (1) .

اعلانات

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 01-02-2014, 03:12 PM المشاركة 26   
افتراضي


البرمجة بلغة السى – الجزء الثالث – 4- استدعاء الدالة لنفسها :

مثال على استدعاء الدالة لنفسها :

كتابة برنامج لإيجاد مجموع عدد أرقام n من الأولى من الأعداد الطبيعية باستخدام استدعاء الدالة لنفسها .
ملحوظة : الأعداد الصحيحة الموجبة تعرف بالأعداد الطبيعية أى : 1,2,3,4,….n .

كود:
#include <stdio.h>
int sum(int n);
int main(){
    int num,add;
    printf("Enter a positive integer:\n");
    scanf("%d",&num);
    add=sum(num);
    printf("sum=%d",add);
}
int sum(int n){
    if(n==0)
       return n;
    else
       return n+sum(n-1);    /*self call  to function sum() */
}
الخرج :

كود:
Enter a positive integer:
5
15
فى هذا البرنامج ، الدالة sum() يتم إطلاقها من نفس الدالة . إذا كان (n) لا يساوى الصفر ، عندئذ فإن الدالة تستدعى نفسها وتمرر دليل أقل بواحد عن الدليل السابق الذى تم استدعاؤها به . افترض أن n قيمتها الابتدائية تساوى (5) عندئذ ، خلال الاستدعاء التالى للدالة يتم تمرير القيمة (4) إلى الدالة ويتم تناقص قيمة الدليل بواحد فى كل استداء للدالة من داخل نفسها . عندما تصبح (n) تساوى (0) فإن قيمة (n) يتم إرجاعها والتى تكون مجموع الأرقام من (5) إلى (1) .
لفهم استدعاء الدالة لنفسها بشكل أفضل إليك المثال التالى :

كود:
sum(5)
=5+sum(4)
=5+4+sum(3)
=5+4+3+sum(2)
=5+4+3+2+sum(1)
=5+4+3+2+1+sum(0)
=5+4+3+2+1+0
=5+4+3+2+1
=5+4+3+3
=5+4+6
=5+10
=15
كل دالة تعيد استدعاء نفسها يجب إمدادها بوسيلة لإنهاء إعادة استدعاء نفسها . فى هذا المثال عندما تساوى (n) الصفر ، لا يكون هناك إعادة لاستدعاء الدالة لنفسها ويتم إنهاء استدعاء الدالة لنفسها .

مميزات وعيوب استدعاء الدالة لنفسها :

استدعاء الدالة لنفسها يكون أكثر أناقة ويتطلب بضعة متغيرات والذى يجعل البرنامج نظيف . يمكن استخدام استدعاء الدالة لنفسها لتحل محل الكود المتداخل المعقد عن طريق تقسيم المشكلة إلى نفس المشكلة كنوع من فروعها .
من ناحية أخرى ، من الصعب التفكير فى منطق استدعاء الدالة لنفسها . بل من الصعب أيضا تصحيح الكود الذى يحتوى على استدعاء الدالة لنفسها .

اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 01-02-2014, 08:50 PM المشاركة 27   
افتراضي



البرمجة بلغة السى – الجزء الرابع – المصفوفات والسلاسل النصية -1- المصفوفات Arrays :

فى البرمجة بلغة السى ، أحد المشاكل التى تنشأ فى كثير من الأحيان هى التعامل مع البيانات التى تنتمى إلى نفس النوع . على سبيل المثال : إذا أراد المستخدم تخزين درجات 100 طالب . يمكن القيام بذلك عن طريق إنشاء 100 متغير بشكل فردى لكن هذه العملية شاقة نوعا ما وغير عملية . هذا النوع من المشاكل يمكن التعامل معه عند البرمجة بلغة السى باستخدام المصفوفات .

المصفوفات هى سلسة من عناصر بيانات لقيم متجانسة (نفس النوع) . تصنف المصفوغات إلى نوعين :
1- مصفوفات البعد الواحد .
2- مصفوفات متعددة الأبعاد ( سوف يتم تناولها لاحقا) .

إعلان مصفوفة البعد الواحد :


كود:
data_type array_name[array_size];


على سبيل المثال :


كود:
int age[5];


هنا : اسم الدالة هو "age" . وحجم المصفوفة "5" أى يوجد خمس عناصر فى المصفوفة age . جميع عناصر المصفوفة من نفس النوع ، وهو فى هذه الحالة نوع العدد الصحيح int .

عناصر المصفوفة :

حجم المصفوفة يعرف عدد العناصر فى المصفوفة . كل عنصر بالمصفوفة يمكن الوصول إليه واستخدامه بمعرفة المستخدم وفقا لحاجة البرنامج .
على سبيل المثال :


كود:
int age[5];


لاحظ : العنصر الأول يرقم بصفر وهكذا .

هنا : حجم المصفوفة age هو 5 عناصر من نوع int لأن هناك 5 عناصر .
افترض ، عنوان البداية للعنصر age[0[ هو 2120d وأن حجم النوع int هو 4 بايت ، عندئذ يكون العنوان التالى (عنوان العنصر age[1] ) سوف يكون 2124d ، وعنوان العنصر age[2] سوف يكون 2128d وهكذا .

تهيئة مصفوفات البعد الواحد :

يمكن تهيئة المصفوفات عند وقت إعلانها بالصيغة التالية :


كود:
int age[5]={2,4,34,3,4};


ليس من الضرورى تعريف حجم المصفوفات أثناء التهيئة كما يلى :


كود:
int age[]={2,4,34,3,4};


فى هذه الحالة ، يحدد المترجم حجم المصفوفة بواسطة حساب عدد عناصر المصفوفة .


الوصول لعناصر المصفوفة :

فى البرمجة بلغة السى ، يمكن الوصول للمصفوفة ومعالجتها مثل المتغير فى لغة السى .
على سبيل المثال :


كود:
scanf("%d",&age[2]);
/* statement to insert value in the third element of array age[]. */

scanf("%d",&age[i]);
/* Statement to insert value in (i+1)th element of array age[]. */
/* Because, the first element of array is age[0], second is age[1], ith is age[i-1] and (i+1)th is age[i]. */

printf("%d",age[0]);
/* statement to print first element of an array. */

printf("%d",age[i]);
/* statement to print (i+1)th element of an array. */



مثال على المصفوفة :


كود:
/* C program to find the sum marks of n students using arrays */

#include <stdio.h>
int main(){
   int marks[10],i,n,sum=0;
   printf("Enter number of students: ");
   scanf("%d",&n);
   for(i=0;i<n;++i){
        printf("Enter marks of student%d: ",i+1);
        scanf("%d",&marks[i]);
        sum+=marks[i];
   }
   printf("Sum= %d",sum);
return 0;
}



الخرج :


كود:
Enter number of students: 3
Enter marks of student1: 12
Enter marks of student2: 31
Enter marks of student3: 2
sum=45




تحذير :

افترض ، أنك أعلنت مصفوفة لعشر طلبة ، على سبيل المثال : arr[10] . يمكنك عناصر المصفوفة من arr[0] إلى arr[9] . ولكن ، ماذا لو أردت استخدام العنصر [10] أو العنصر [13] . قد لا يبدى المترجم خطأ استخدام هذه العناصر ولكن قد يتسبب فى خطأ قاتل أثناء تنفيذ البرنامج .


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 01-02-2014, 09:21 PM المشاركة 28   
افتراضي


البرمجة بلغة السى – الجزء الرابع – المصفوفات والسلاسل النصية -2- المصفوفات متعددة الأبعاد :

البرمجة بلغة السى تسمح بإنشاء "مصفوفات المصفوفات" والتى تعرف بالمصفوفات متعددة الأبعاد . على سبيل المثال :

كود:
float a[2][6];
هنا : (a) هى مصفوفة ثنائية الأبعاد ، باعتبارها مثال لمصفوفة متعددة الأبعاد . هذه المصفوفة تمتلك (2) صف و (6) عامود .

تهيئة المصفوفات متعددة الأبعاد :

فى لغة السى يمكن تهيئة المصفوفات متعددة الأبعاد بعدد من الطرق كما يلى :

كود:
int c[2][3]={{1,3,0}, {-1,5,9}};
                 OR
int c[][3]={{1,3,0}, {-1,5,9}};
                 OR 
int c[2][3]={1,3,0,-1,5,9};
تهيئة مصفوفة ثلاثية الأبعاد :

كود:
double cprogram[3][2][4]={ 
{{-0.1, 0.22, 0.3, 4.3}, {2.3, 4.7, -0.9, 2}},
 {{0.9, 3.6, 4.5, 4}, {1.2, 2.4, 0.22, -1}},
 {{8.2, 3.12, 34.2, 0.1}, {2.1, 3.2, 4.3, -2.0}} 
};
افترض أن هناك المصفوفة متعددة الأبعاد arr[i][j][k][m] ، هذه المصفوفة يمكن أن تخزن عدد من البيانات قدرة (i*j*k) .
بنفس الطريقة يمكن تهيئة مصفوفة بأى بعد .

مثال على مصفوفة متعددة الأبعاد :

كتابة برنامج لإيجاد مجموع 2 ماتريكس من الرتبة (2*2) باستخدام المصفوفات متعددة الأبعاد ، حيث يتم إدخال عناصر الماتريكس بواسطة المستخدم .


كود:
#include <stdio.h>
int main(){
   float a[2][2], b[2][2], c[2][2];
   int i,j;
   printf("Enter the elements of 1st matrix\n");
/* Reading two dimensional Array with the help of two for loop. If there was an array of 'n' dimension, 'n' numbers of loops are needed for inserting data to array.*/   
   for(i=0;i<2;++i)      
       for(j=0;j<2;++j){
       printf("Enter a%d%d: ",i+1,j+1);
       scanf("%f",&a[i][j]);
       }
   printf("Enter the elements of 2nd matrix\n");
   for(i=0;i<2;++i)
       for(j=0;j<2;++j){
       printf("Enter b%d%d: ",i+1,j+1);
       scanf("%f",&b[i][j]);
       }
   for(i=0;i<2;++i)
       for(j=0;j<2;++j){
/* Writing the elements of multidimensional array using loop. */
       c[i][j]=a[i][j]+b[i][j];  /* Sum of corresponding elements of two arrays. */
       }
   printf("\nSum Of Matrix:");
   for(i=0;i<2;++i)
       for(j=0;j<2;++j){
       printf("%.1f\t",c[i][j]);  
           if(j==1)             /* To display matrix sum in order. */
              printf("\n");
      }
return 0;
}
الخرج :


كود:
Enter the elements of 1st matrix
Enter a11: 2;
Enter a12: 0.5;
Enter a21: -1.1;
Enter a22: 2;
Enter the elements of 2nd matrix
Enter b11: 0.2;
Enter b12: 0;
Enter b21: 0.23;
Enter b22: 23;

Sum Of Matrix:
2.2     0.5
-0.9    25.0


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 01-02-2014, 09:51 PM المشاركة 29   
افتراضي


البرمجة بلغة السى – الجزء الرابع – المصفوفات والسلاسل النصية -3- المصفوفات والدوال :

فى البرمجة بلغة السى ، يمكن تمرير عنصر مفرد لمصفوفة أو المصفوفة بالكامل إلى دالة . أيضا يمكن تمرير كل من مصفوفة البعد الواحد أو المصفوفة متعددة الأبعاد إلى دالة كدليل (بارامتر) .

تمرير مصفوفة البعد الواحد فى الدالة :

فيما يلى برنامج لتمرير عنصر مفرد من مصفوفة إلى دالة :

كود:
#include <stdio.h>
void display(int a)
   {
   printf("%d",a);
   }
int main(){
   int c[]={2,3,4};
   display(c[2]);  //Passing array element c[2] only.
   return 0;
}
الخرج :

كود:
4
يمكن تمرير عنصر من مصفوفة بنفسطريقة تمرير متغير لدالة .

تمرير مصفوفة البعد الواحد بالكامل إلى دالة :

بينما يتم تمرير مصفوفات إلى دليل أو وسيط ، يتم تمرير اسم المصفوفة كدليل ( بمعنى أن عنوان البداية لمساحة الذاكرة يتم تمريره كدليل ) .

كتابة برنامج لتمرير مصفوفة تحتوى على سن (عمر) شخص إلى دالة . هذه الدالة يجب أن توجد متوسط العمر وعرضه فى الدالة الرئيسية .

كود:
#include <stdio.h>
float average(float a[]);
int main(){
     float avg, c[]={23.4, 55, 22.6, 3, 40.5, 18};
     avg=average(c);   /* Only name of array is passed as argument. */
     printf("Average age=%.2f",avg);
     return 0;
   }
float average(float a[]){ 
     int i;
     float avg, sum=0.0;
     for(i=0;i<6;++i){
       sum+=a[i];
     }
     avg =(sum/6);
     return avg;
}
الخرج :


كود:
Average age=27.08
تمرير المصفوفات متعددة الأبعاد إلى دالة :

لتمرير مصفوفة ثنائية الأبعاد إلى دالة كدليل (وسيط) ، يتم تمرير عنوان بداية مساحة الذاكرة كما فى مصفوفة البعد الواحد .
مثال لتمرير المصفوفات ثنائية الأبعاد إلى دالة :

كود:
#include 
void Function(int c[2][2]);
int main(){
   int c[2][2],i,j;
   printf("Enter 4 numbers:\n");
   for(i=0;i<2;++i)
      for(j=0;j<2;++j){
           scanf("%d",&c[i][j]);
      }
   Function(c);   /* passing multi-dimensional array to function */
   return 0;
}
void Function(int c[2][2]){
/* Instead to above line, void Function(int c[][2]){ is also valid */
   int i,j;
   printf("Displaying:\n");
   for(i=0;i<2;++i)
      for(j=0;j<2;++j)
          printf("%d\n",c[i][j]);
}
الخرج :

كود:

Enter 4 numbers:
2
3
4
5
Displaying:
2
3
4
5


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 01-02-2014, 11:25 PM المشاركة 30   
افتراضي



البرمجة بلغة السى – الجزء الخامس – المؤشرات -1- مقدمة المؤشرات Pointers :

المؤشرات هى ميزة قوية عند البرمجة بلغة السى (C , C++) والتى تجعله مختلف عن غيره من اللغات المعروفة من الجافا أو البيسك المرئى .
تستخدم المؤشرات فى برنامج لغة السى للوصول إلى الذاكرة ومعالجة العنوان .

عامل (مؤثر) المرجع (&) :

إذا كان (var) متغير فإن (&var) هو عنوانه بالذاكرة .

مثال يستعرض استخدام عامل المرجع فى لغة السى :
كود:
/* Example to demonstrate use of reference operator in C programming. */
#include <stdio.h>
int main(){
  int var=5;
  printf("Value: %d\n",var);
  printf("Address: %d",&var);  //Notice, the ampersand(&) before var.
  return 0;
}

الخرج :

كود:
Value: 5 
Address: 2686778
ملحوظة :

قد تحصل على قيمة عنوان مختلفة عند استخدام هذا الكود .
فى كود المصدر أعلاه ، يتم تخزين القيمة (5) فى موقع الذاكرة 2686778 . والمسمى (var) هو مجرد اسم يعطى لهذا الموقع .
أنت بالفعل استخدمت عامل المرجع عند استخدام الدالة scanf() كما يلى :

كود:
scanf("%d",&var);
عامل إلغاء المرجع (*) و متغيرات المؤشرات :

تستخدم متغيرات المؤشرات من أجل أخذ العنوان كقيمة ، بمعنى أن المتغير الذى يخزن قيمة العنوان يسمى متغير المؤشر أو ببساطة "المؤشر" pointer .

إعلان المؤشر :

يستخدم عامل إلغاء المرجع (*) لتعريف (لتحديد) العامل كمؤشر كما يلى :

كود:
data_type * pointer_variable_name;
int *p;
العبارة أعلاه تعرف (تحدد) (p) كمتغير مؤشر من نوع int .

مثال لاستعراض عمل المؤشرات :


كود:
/* Source code to demonstrate, handling of pointers in C program */
#include <stdio.h>
int main(){
   int *pc,c;
   c=22;
   printf("Address of c:%d\n",&c);
   printf("Value of c:%d\n\n",c);
   pc=&c;
   printf("Address of pointer pc:%d\n",pc);
   printf("Content of pointer pc:%d\n\n",*pc);
   c=11;
   printf("Address of pointer pc:%d\n",pc);
   printf("Content of pointer pc:%d\n\n",*pc);
   *pc=2;
   printf("Address of c:%d\n",&c);
   printf("Value of c:%d\n\n",c);
   return 0;
}
الخرج :

كود:
Address of c: 2686784
Value of c: 22

Address of pointer pc: 2686784
Content of pointer pc: 22

Address of pointer pc: 2686784
Content of pointer pc: 11

Address of c: 2686784
Value of c: 2

شرح البرنامج :

1- الكود :

كود:
int *pc, c;
ينشىء المؤشر (pc) والمتغير (p) . المؤشر (pc) يشير إلى عنوان ما وهذا العنوان به قيمة نفايات . بالمثل ، المتغير © أيضا به قيمة نفايات عند هذه النقطة .

2- الكود :

كود:
c=22;
يجعل قيمة (c) تساوى (22) ، أى يتم تخزين (22) فى موقع الذاكرة للمتغير (c) .

3- الكود :

كود:
pc=&c;
يقوم بعمل مؤشر ، يشير إلى عنوان المتغير ( c ) . لاحظ أن (&c) هو عنوان المتغير ( c ) ( لأن c هو متغير عادى ) و (pc) هو عنوان pc ( لأن pc هو متغير مؤشر) . ونظرا لأن عنوان pc هو نفسه عنوان c ، فإن ( *pc) ، فيمة المؤشر pc سوف تكون مساوية لقيمة c .

4- الكود :

كود:
c=11 ;
يجعل قيمة c بالقيمة "11" . وحيث أن المؤشر pc يشير إلى عنوان c فإن قيمة (*pc) سوف تكون أيضا "11" .

5- الكود :

كود:
*pc=2;
يغير محتويات موقع الذاكرة المشار إليه بالمؤشر pc ليتغير إلى القيمة "2" . وحيث أن عنوان المؤشر pc هو نفسه عنوان c فإن قيمة c تتغير أيضا إلى القيمة "2" .

الأخطاء الشائعة فى المؤشرات :
افترض أن المبرمج يريد أن يشير المؤشر pc لعنوان c عندئذ :

كود:
int c, *pc;
pc=c;  /* pc is address whereas, c is not an address. */
*pc=&c; /* &c is address whereas, *pc is not an address. */
فى كلا الحالتين ، المؤشر pc لا يشير إلى عنوان c .


peipo
:: عضو ذهبي ::
تاريخ التسجيل: Oct 2012
الدولة: مصر - البحيره
المشاركات: 799
نشاط [ peipo ]
قوة السمعة:
قديم 02-02-2014, 04:43 PM المشاركة 31   
افتراضي


شكرا لك اخى الحبيب والمهندس الكبير F.Abdelaziz تم الحفظ على الجهاز حتى بدون قراءه ،، بالتاكيد سيكون موضوع قيم مثل باقى مواضيعك تقبل مرورى اخى الحبيب


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 03-02-2014, 02:17 PM المشاركة 32   
افتراضي


شكرا لك اخى الحبيب والمهندس الكبير F.Abdelaziz تم الحفظ على الجهاز حتى بدون قراءه ،، بالتاكيد سيكون موضوع قيم مثل باقى مواضيعك تقبل مرورى اخى الحبيب
أخى الكريم شكرا جزيلا لك

بارك الله فيك

تقدير أعتز به



الساعة معتمدة بتوقيت جرينتش +3 الساعة الآن: 12:42 AM
موقع القرية الالكترونية غير مسؤول عن أي اتفاق تجاري أو تعاوني بين الأعضاء
فعلى كل شخص تحمل مسئولية نفسه إتجاه مايقوم به من بيع وشراء وإتفاق وأعطاء معلومات موقعه
التعليقات المنشورة لا تعبر عن رأي موقع القرية الالكترونية ولايتحمل الموقع أي مسؤولية قانونية حيال ذلك (ويتحمل كاتبها مسؤولية النشر)