دروس كمبيوتر وصيانة دروس حاسب دروس مجلة  درس نيوك phpnuke الدروس دروس مسنجر MSN - yahoo - Gmail دروس منتديات vBulletin دروس الجوالات والهواتف دروس السي بنل cpanel دروس اكسس access دروس بيونت شوب برو - point shop pro دروس برمجة php - mysql دروس برامج منوعة software دروس ثري دي ماكس 3D max دروس جافا سكريبت JavaScript دروس دريم ويفر DreamWeaver دروس شبكات Networks دروس سويش - swish دروس فلاش - flash دروس فيجوال بيسك Visual Basic دروس فرونت بيج - frontpage دروس فوتوشوب photoshop دروس هكر hacker crack virus
توبيكات رمضان | رسايل رمضان | ثيمات رمضان | طبخات رمضانية | توبيكات رمضانية | صور عن رمضان | دعاء رمضان
احصائيات سريعة
اقسام على الموقع
دروس في أنظمة التشغيل | ماي سكيول - MySQL | لفيجوال بيسك - Visual Basic | المات لاب Matlab | اللينكس و اليونكس | الاسمبلي - ASSEMBLY | الاوتلوك - Outlook | البرمجة تحت اللنكس -Linux Programming | البرمجة تحت وندوز بواسطة دوال ال win API | البرمجة في بيئة الدوت نت .Net | التصمبم والرسوم | الدلفي - Delphi | الجافا - Java | السي - C | الصوت و الصورة | الوورد - Word | القسم العام للأوفيس | الكوبول - COBOL | control panel-ftp | اوراكل - Oracle | اكسل - Excel | تحميل الملفات | برامج متنوعة | برامج التصفح | برامج الحماية | برامج إنترنت | تعرّف على الويب | بوربوينت - Power Point | images | دروس : كمبيوتر وصيانة | دروس مجلة نيوك phpnuke | دروس مسنجر MSN - yahoo - Gmail | دروس منتديات vBulletin | دروس الجوالات والهواتف | دروس السي بنل cpanel | دروس اكسس access | دروس بيونت شوب برو - point shop pro | دروس برمجة php - mysql | دروس برامج منوعة software | دروس ثري دي ماكس 3D max | دروس تطوير المواقع والمنتديات | دروس جافا سكريبت JavaScript | دروس دريم ويفر DreamWeaver | دروس شبكات Networks | دروس سويش - swish | دروس فلاش - flash | دروس فلاش mx | دروس فى نظام الوندوز WINDOWS | دروس فىالباسكال - Pascal | دروس فيجوال بيسك Visual Basic | دروس فرونت بيج - frontpage | دروس فوتوشوب photoshop | دروس هكر hacker crack virus | سي ++ | سي شارب - #C | فيجوال سي ++ - ++ Visual C | قسم البرمجة العام | دروس فى لغة HTML
البحث في المواد

اكثر المحتويات زيارة
الدوال في الاكسل (6,375 مشاهده)
ربط قاعدة بيانات أكسس (MS Access) مع برنامج الفيجوال بيسك بطريقة(ODBC) (4,138 مشاهده)
الدرس الثالث : بعض تطبيقات الدوال في اكسل (3,091 مشاهده)
تعريف الاستعلام وطريقة عرضه في آكسس، أنواع الاستعلامات، نافذة تحديد الاستعلام! (2,402 مشاهده)
الدرس الثاني: بعض الحيل لتسهيل برنامج اكسل (2,298 مشاهده)
شرح طريقة استعمال الأوتلوك مع بريد الهوتميل (2,192 مشاهده)
تغيير لغة واجهة التطبيق من عربي الى انجليزي وبالعكس لـ Windows-based applications (2,156 مشاهده)
أنواع العلاقات وطريقة الربط بين الجداول. (1,928 مشاهده)
مقدمة عامة حول الاكسل وحيل خاصة بالاكسل (1,756 مشاهده)
أنشئ قاعدة بياناتك التي ستستند إليها في تعلم طريقة ربط الجداول والاستعلامات. (1,725 مشاهده)
الدرس الأول : عمل شريحة في البوربوينت (1,576 مشاهده)
دروس في الأوفيس الأكسس - Access0- (1,527 مشاهده)
كيفية حل مشاكل الانترنت اكسبلور Internet Explorer (1,489 مشاهده)
دورة الأكسس: الدرس السادس : منوعات في أكسيس . (1,468 مشاهده)
اضافه صوت ونص لخلفيه في باور بوينت (1,357 مشاهده)
شرح طريقة التجميع Grouping في برنامج الاكسل (1,322 مشاهده)
التعرف على مكونات الكمبيوتر (1,286 مشاهده)
دورة الأكسس: الدرس السادس : منوعات في أكسيس .0--- (1,275 مشاهده)
برنامج Windows Movie Maker لتكوين أفلام (1,265 مشاهده)
درس تعريب المجلة (1,247 مشاهده)
مقدمة في ربط قواعد البيانات داخل بيئة الـ .NET باستخدام الـ VB.NET (1,218 مشاهده)
كيف تجعل برنامجك أكثر تألقا وجمالا باستخدام أداة Active Skin (1,215 مشاهده)
ما هو المات لاب MATLAB؟ (1,171 مشاهده)
مقدمة عن لغة البيسك (1,129 مشاهده)
الفيجوال بيسك - مقدمة (1,090 مشاهده)
جديد مواد مع عشوائي
التحويل التلقائي للحروف ل- ل- ه إلى اسم الجلالة0---- (791 مشاهده)
النسبة المئوية لا تظهر بالخط العربي & الشدة وألف المد في لفظ الجلالة0---النسبة المئوية لا تظهر بالخط العربي & الشدة وألف المد في لفظ الجلالة0--- (491 مشاهده)
ضبط خيارات اللغة فى الـ Microsoft Word0--- (551 مشاهده)
استخدام لوحة المفاتيح في الـ Word0---- (719 مشاهده)
إضافة كلمة سر إلي ملفات الورد دون استخدام برامج0--- (790 مشاهده)
دمج المراسلات0-- (438 مشاهده)
وضع صورة كخلفية للنص0-- (567 مشاهده)
السماح للمستخدمين بتعديل أجزاء من ملف وورد محمي (Word2003)0--- (385 مشاهده)
كتابة الأرقام الكسرية ورموز المعادلات0-- (636 مشاهده)
درس كامل عن الدمج السهل من لوحة المفاتيح ف0-ي برنامج الـ Word (401 مشاهده)
دورة الأكسس: الدرس السادس : منوعات في أكسيس .0--- (1,275 مشاهده)
دورة الأكسيس : الدرس الرابع : العلاقات0---- (667 مشاهده)
أساسيات في Access0--0 (457 مشاهده)
تصميم تقرير لطباعة البيانات0---- (496 مشاهده)
تصميم نموذج استعراض البيانات‏0--تصميم نموذج استعراض البيانات‏0-- (481 مشاهده)
تصميم نموذج إدخال‎ ‎البيانات0--- (573 مشاهده)
إنشاء قوائم خاصة باستخدام الماكرو(1)0-- (444 مشاهده)
خطوات إنشاء الماكرو في تذييل النموذج (2)0-- (376 مشاهده)
خطوات إنشاء الماكرو في تذييل النموذج (1)0- (330 مشاهده)
استعلامات SQL في Access - تعديل الجداول وإضافة الحقول0- (466 مشاهده)
استعلامات SQL في Access - تحديث البيانات الجدولية0-- (421 مشاهده)
الاستعلامات الإجرائية -4 (استعلام الحذف)0--- (218 مشاهده)
الاستعلامات الإجرائية -2 (استعلام الإلحاق)0--- (301 مشاهده)
تصميم تقرير لطباعة الإجمالي0--- (329 مشاهده)
استعلامات التحديد Select Query مع أمثله (1)0--- (434 مشاهده)
اعلانات في الموقع على جميع الصفحات

Sparse Matrix-

المصفوفة المتناثرة Sparse Matrix





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


   

 



 سنتعلم أخي الكريم في هذا الدرس كيفية انشاء class   واستخدامه في برنامجنا، كما ستتعرف على المصفوفة المتناثرة وكيفية معالجتها.

 



المصفوفة المتناثرة أو مصفوفة الأصفار ( Sparse Matrix   ) : 

 




لو ألقينا نظرة على المصفوفة التالية التي تحوي 6 صفوف و6 أعمدة وتتكون من : 6x 6 = 36   عنصر  :

 



                             

 





سيتضح لنا من الوهلة الأولى أن أكثر عناصر هذه المصفوفة عبارة عن " أصفار " ؛ تسمى المصفوفة  التي أكثر عناصرها أصفار  بـمصفوفة الأصفار أو المصفوفة المتناثرة " Sparse Matrix   " . ومن الصعب علينا تحديد ما إذا كانت المصفوفة عبارة عن Sparse Matrix   أو لا .. ولكن يتضح لنا ذلك عن طريق النظر؛ ففي المصفوفة السابقة يوجد فقط 8 عناصر لا تساوي الصفر من أصل  36 عنصر، بينما البقية كلها أصفار .
نعالج الـ
Sparse Matrix    بالتكنيك الذي سنشرحه في درسنا لتوفير المساحة في الذاكرة حيث نستطيع تخزين العناصر الغير مساوية للصفر فيها فقط ؛ وذلك من خلال استخدام مصفوفة وحيدة لكل عنصر من عناصرها يوجد 3 صفات هي : الصف والعمود والقيمة الخاصة به؛ ويتم ذلك عن طريق استخدامنا لـClass   كالتالي :
 

 




package Sparse_Matrix;

public class SM extends Object {
    private int row , col , val ;


//-----------<< SM constructor >>------------------------
    public SM (int row1 ,int col1 ,int val1 ) {
        setrow(row1) ;
        setcol(col1) ;
        setval(val1) ;
        }

//-----------<< Method to perform row >>-----------------
    public int setrow( int row1 ){
        return row = row1 ;
    }
//-----------<< Method to perform column >>--------------
    public int setcol( int col1 ){

        return col = col1 ;
    }
//-----------<< Method to perform value >>---------------
    public int setval( int val1 ){
        return val = val1 ;
    }
//-----------<< Method to Print >>-----------------------
    public String Print() {
        return ( row +"t"+ col +"t"+ val +"n") ;
    }
}



ولكن يجب أن نراعي هنا أن ترتيب العناصر في هذه المصفوفة الوحيدة سيكون تابع لأحد هذه الصفات وهو الصف " row    " و لابد من أن يكون  تصاعدياً ..


إذن .. يتضح لدينا أن تعريف الـ Sparse Matrix  كما هو موجود في قاموسنا كالتالي :
مصفوفة ذات بعد واحد تحوي الكثير من العناصر المتشابهة ، والتي غالباً ما تساوي صفر، لكل عنصر فيها ثلاث صفات : الصف ، العمود ، والقيمة التي تسند إليه .

 



  * Sparse_Matrix : a set of triples < row , col , value > , where row & column are integers & from a unique combination , & value comes from the set item .
* Sparse_Matrix Create(max_row , max_col) ::= return a Sparse_Matrix that can hold up to max_item = max_row X max_col ,& whose maximum row size is max_row , & whose maximum column size is max_col.

 



ومن هنا نستطيع إعادة رسم الـ Sparse Matrix   كما في الشكل التالي :

 




 



 


 

 

حيث أن a[0].row   تحتوي عدد الأسطر الكلي للمصفوفة الأصلية ( في هذا المثال = 6 ) , كذلك a[0].col   فهي تحوي عدد الأعمدة الكلي للمصفوفة الأصلية ( في هذا المثال = 6 ) , وأيضاً a[0].value   عدد العناصر الغير مساوية للصفر فقط ( في هذا المثال = 8 ) .
ولكي نعرف رقم الصف لأي عنصر ننظر لـ
Field   row   , وبالمثل إذا أردنا أن نعرف رقم العمود فننظر لـ Field   col   وستكون قيمة هذا العنصر مخزنة في Field   value   . والثلاثي < row , col , value   > سيكون مرتب في المصفوفة على حسب الصفوف " تصاعدياً " كما ذكرنا سابقاً ..
ولكن كيف نستطيع كتابة شيفرة لإنشاء هذه المصفوفة بلغة الجافا ؟ هذا ما سنعرفه ان شاء الله خلال الأسطر التالية :

 



 



1) في البداية نقوم بعمل ملف ونسمّيه: Sparse_Matrix   مثلاً كما اعتمدنا في هذا المثال.
2) ثم نقوم بعمل كلاس نسميّه
SM   ونخزّنه في الملف السابق الذكر بعد أن نعمل فيه package Sparse_Matrix   ونكتب في هذا الكلاس الكود السابق.
3) ثم نقوم بعمل
Application   ونضع فيه إستدعاء للكلاس السابق أي : import Sparse_Matrix.SM   .. ونكتب فيه شيفرة لمعالجة المصفوفة المتناثرة بالتسلسل التالي:

 



·         سنفترض في مثالنا الحالي أن المصفوفة مكوّنة من 3 صفوف و3 أعمدة .. 

 



·         وبعد ذلك نسمح للمستخدم بإدخال العناصر كمصفوفة عادية شريطة أن تكون أكثرها مساوية للصفر ونطبع المصفوفة بالطريقة التقليدية العادية. 

 



·         ثم نقوم بإنشاء الـ Sparse Matrix   ؛ نخزّن في البداية عدد الصفوف الكلي وعدد الأعمدة الكلي  في كل من  a[0].row    و a[0].col   .. ثم نضع عداداً  = 1  كفهرس لكي نبدأ التخزين ..

 



·         نقوم بعمل Loop   يمّر على كل عناصر المصفوفة العادية ويسأل ما إذا كان هذا العنصر مساوياً للصفر أما لا ؟
إذا اتضح أن العنصر لا يساوي الصفر .. نقوم بتخزين رقم الصف الموجود فيه هذا العنصر وكذلك رقم العمود ثم نخزّن قيمة العنصر باستخدام  العداد الذي جعلنا قيمته =1 كفهرس  لأول عنصر يقابلنا غير مساوي للصفر  .. ثم نزيد قيمة العداد بواحد لكي يفهرس العنصر المخزن الجديد .. وهكذا إلى أن ننتهي من جميع عناصر المصفوفة الأصلية .

 



·         الآن قمنا بتخزين جميع القيم الغير مساوية للصفر في الـ Sparse Matrix    ولكن يتبقى Field   واحد لم نخزّن به شئ .. أتعلمون ما هو ؟
إنه الـ
Field    الخاص بعدد العناصر الغير مساوية للصفر في المصفوفة الأصلية (a[0].val   ) .. ونستطيع معرفة عدد العناصر الغير مساوية للصفر من خلال العداد الذي فهرس العناصر ..
 ولكن نلاحظ هنا أن هذا العداد داخل
Loop   عندما انتهى التخزين قد زادت قيمته بواحد على عدد العناصر الغير مساوية للصفر؛ فيجب علينا أن نقوم بانقاص قيمته بمقدار واحد ثم نخزنها في a[0].val   ... 

 



·         الآن نستطيع نقوم بطباعة المصفوفة المتناثرة الناتجة لدينا. 

 



وأليك الشيفرة كاملة:



import Sparse_Matrix.SM;
import javax.swing.*;

public class Sparse_MatrixO {
    public static void main (String args[])
    {
    int Matrix [][] ;
    int i , j , q ,count = 1 ;
    SM SparseMatrix ;
    SparseMatrix= new SM(0,0,0);
    String x,output="";
    output+="The Normal Matrix :n";
    JTextArea outputarea = new JTextArea(10,20);
    Matrix = new int[3][3];
    //-----------<< To Read & Print Normal Matrix >>-------------------
    for(i=0 ; i<3 ; i++){
        for(j=0 ; j<3 ; j++){
            x=JOptionPane.showInputDialog("plz. Enter the value of element n");
            q = Integer.parseInt(x) ;
            Matrix[i][j] = q ;
            output += Matrix[i][j] +"t" ;
            if ( Matrix[i][j] != 0 ) count++ ;
        } // end of j Loop
        output += "n" ;
    } // end of i Loop
    //-----------<< To Make & Print Sparse_Matrix >>-------------------
    output +="n The Sparce_Matrix :nrowtcoltvaluen--------------------------------------------------n" ;
    SparseMatrix.setcol(3);
    SparseMatrix.setrow(3);
    SparseMatrix.setval(count-1);
    output += SparseMatrix.Print() ;
    for(i=0 ; i<3 ; i++){
        for(j=0 ; j<3 ; j++){
            if ( Matrix[i][j] != 0 ) {
                SparseMatrix.setcol(j);
                SparseMatrix.setrow(i);
                SparseMatrix.setval(Matrix[i][j]);
                output += SparseMatrix.Print() ;
            } // end of if
        } // end of j Loop
    } // end of i Loop

    outputarea.setText(output);
    JOptionPane.showMessageDialog(null,outputarea,"Sparse_Matrix", JOptionPane.INFORMATION_MESSAGE);
    System.exit(0);
    }
}


طبعاً، في برنامجنا المتواضع أدخلنا العناصر عنصراً عنصراً، وهي طريقة غير عملية بتاتاً مع التطبيقات الكبيرة، حيث أننا في التطبيقات الكبيرة نخزن المصفوفة في ملف ونقوم بقراءة عناصرها منه.

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

 


 


درس Sparse Matrix-

أضف هذه المادة في موقعك:
مواد مشابهة:
ماهي حزم الجافا؟ ماهي حزم الجافا؟
ماهي حزم الجافا؟
(مرات المشاهدة: 97 مرات)
اظهار الجداول من الجهه اليمنى (JArabicTable) اظهار الجداول من الجهه اليمنى (JArabicTable)
اظهار الجداول من الجهه اليمنى (JArabicTable)
(مرات المشاهدة: 96 مرات)
(9) المتغيّرات (9) المتغيّرات
(9) المتغيّرات
(مرات المشاهدة: 84 مرات)
(13) استخراج عضو من فئة (13) استخراج عضو من فئة
(13) استخراج عضو من فئة
(مرات المشاهدة: 64 مرات)
(14) استخدام عضو من فئة (14) استخدام عضو من فئة
(14) استخدام عضو من فئة
(مرات المشاهدة: 74 مرات)
(7) شرح البرنامج الأوّل (7) شرح البرنامج الأوّل
(7) شرح البرنامج الأوّل
(مرات المشاهدة: 130 مرات)
المصفوفة المتناثرة Sparse Matrix- المصفوفة المتناثرة Sparse Matrix-
المصفوفة المتناثرة Sparse Matrix-
(مرات المشاهدة: 51 مرات)
HTML)- HTML)-
HTML)-
(مرات المشاهدة: 54 مرات)
استخدام الهتمل (HTML) بمكونات الـ Swing- استخدام الهتمل (HTML) بمكونات الـ Swing-
استخدام الهتمل (HTML) بمكونات الـ Swing-
(مرات المشاهدة: 77 مرات)
خلف كواليس JOptionPane خلف كواليس JOptionPane
خلف كواليس JOptionPane
(مرات المشاهدة: 88 مرات)
fot
جميع الحقوق محفوظة :Copyright © All rights reserved