Lesson 6

  • November 2019
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Lesson 6 as PDF for free.

More details

  • Words: 5,163
  • Pages: 81
LabVIEW ‫دروس ﺗﻌﻠﻴﻢ‬

‫اﻟﺪرس اﻟﺴﺎدس‬ Arrays and Clusters

‫اﻟﻔﻬﺮس‬ ‫اﻟﻔﻬﺮس ‪i.........................................................................................................‬‬ ‫هﺪف اﻟﺪرس ‪iii ..................................................................................................‬‬ ‫ﻣﻘﺪﻣﺔ ‪iv ..........................................................................................................‬‬ ‫اﻟﻤﺼﻔﻮﻓﺎت )‪1 ..................................................................................... (Arrays‬‬ ‫ﻣﺎهﻰ اﻟﻤﺼﻔﻮﻓﺔ )‪ (Array‬؟ ‪1 .............................................................................‬‬ ‫اﻧﺸﺎء ﻣﺼﻔﻮﻓﺔ ﻣﻦ ‪ Controls‬او ‪3 ...................................................... Indicators‬‬ ‫اﻧﺸﺎء ﻣﺼﻔﻮﻓﺔ ﻣﻦ ‪ Constants‬ﻓﻰ ‪9 ........................................... Block Diagram‬‬ ‫ﺣﺬف ﺟﻤﻴﻊ ﻋﻨﺎﺻﺮ اﻟﻤﺼﻔﻮﻓﺔ ‪10 .........................................................................‬‬ ‫اﺿﺎﻓﺔ او ﺣﺬف ﻋﻨﺼﺮ ﻓﻰ اﻟﻤﺼﻔﻮﻓﺔ ‪11 .................................................................‬‬ ‫اﻇﻬﺎر ‪) Scrollbar‬ﺷﺮﻳﻂ اﻧﺰﻻق( ﻟﻠﻤﺼﻔﻮﻓﺔ ‪13 .......................................................‬‬ ‫اﺳﺘﺨﺪام ﺧﺎﺻﻴﺔ ‪14 .................................................................. Auto-Indexing‬‬ ‫اﺳﺘﺨﺪام ﺧﺎﺻﻴﺔ ‪ Auto Indexing‬ﻟﺘﺤﺪﻳﺪ ﻋﺪد ﻣﺮات ﺗﻜﺮار ﺗﻨﻔﻴﺬ ‪17 .............. For Loop‬‬ ‫اﻟﻤﺼﻔﻮﻓﺎت ذات ﺑﻌﺪﻳﻦ ‪19 .................................................................................‬‬ ‫آﻴﻔﻴﺔ ﺗﻜﻮن ﻣﺼﻔﻮﻓﺔ ذات ﺑﻌﺪﻳﻦ ‪20 ....................................................................‬‬ ‫آﻴﻔﻴﺔ ﺗﻜﻮﻳﻦ ﻣﺼﻔﻮﻓﺔ ذات ﺑﻌﺪﻳﻦ ﺑﺎﺳﺘﺨﺪام ‪22 ......................................... For Loop‬‬ ‫اﻟﺪول اﻟﺨﺎﺻﺔ ﺑﺎﻟﻤﺼﻔﻮﻓﺎت ‪24 ............................................................................‬‬ ‫داﻟﺔ ‪25 ............................................................................ Initialize Array‬‬ ‫داﻟﺔ ‪27 ................................................................................ Array Size‬‬ ‫داﻟﺔ ‪28 ................................................................................. Build Array‬‬ ‫داﻟﺔ ‪31 .............................................................................. Array Subset‬‬ ‫داﻟﺔ ‪32 ................................................................................ Index Array‬‬ ‫داﻟﺔ ‪34 ....................................................................... Delete from Array‬‬ ‫‪35 ....................................................................................... Polymorphism‬‬

‫‪i‬‬

37 ............................................................. Compound Arithmetic Function 43 ................................................................................................. Clusters 44 .................................... Cluster Indicators‫ و‬Cluster Controls ‫آﻴﻔﻴﺔ اﻧﺸﺎء‬ 46 ....................................................Block Diagram ‫ ﺛﺎﺑﺖ داﺧﻞ‬Cluster ‫اﻧﺸﺎء‬ 47 ...................................................................... Cluster ‫ﺗﺮﺗﻴﺐ اﻟﻌﻨﺎﺻﺮ داﺧﻞ‬ 49 ........................................... SubVI ‫ ﻓﻰ ﺗﻤﺮﻳﺮ اﻟﺒﻴﺎﻧﺎت ﻣﻦ و اﻟﻰ‬Cluster ‫اﺳﺘﺨﺪام‬ 49 ..................................................................... Clusters ‫اهﻢ اﻟﺪوال اﻟﺨﺎﺻﺔ ﺑـ‬ 50 ........................................................................................Bundle ‫داﻟﺔ‬ 53 ................................................................................... Unbundle ‫داﻟﺔ‬ 54 ........................................................................ Bundle By Name ‫داﻟﺔ‬ 55 .................................................................... Unbundle by Name ‫داﻟﺔ‬ 56 ................................................................ Clusters ‫اﻟﺘﺤﻮﻳﻞ ﺑﻴﻦ اﻟﻤﺼﻔﻮﻓﺎت و‬ 57 .......................................................................... Cluster to Array ‫داﻟﺔ‬ 58 .......................................................................... Array to Cluster ‫داﻟﺔ‬ 60 .................................................Clusters ‫اﺳﺘﺨﺪام دوال اﻟﻤﻘﺎرﻧﺔ ﻣﻊ اﻟﻤﺼﻔﻮﻓﺎت و‬ 64 ........................................................ Error-Handling ‫ ودوال‬Error Clusters 66 .........................................................‫ و اﻟﺪوال ﻣﻊ اﻻﺧﻄﺎء‬SubVIs ‫آﻴﻒ ﺗﺘﻔﺎﻋﻞ‬ 66 .......................................................................... Error Case Structure 68 ............................................................................... Error Clusters ‫دﻣﺞ‬ 69 .................................................................. SubVI ‫ داﺧﻞ‬Error ‫آﻴﻔﻴﺔ ﺗﻜﻮﻳﻦ‬ 72 ..................................................................... ‫آﻴﻔﻴﺔ اﻇﻬﺎر رﺳﺎﻟﺔ ﺧﻄﺄ ﻟﻠﻤﺴﺘﺨﺪم‬ 73 ................................................................................ Explain Error ‫ﻧﺎﻓﺬة‬ 74 ....................................................................... Loops ‫اﺧﺘﺒﺎر ﺣﺪوث ﺧﻄﺄ ﻓﻰ‬

ii

‫هﺪف اﻟﺪرس‬ ‫• اﻟﺘﻌﺮف ﻋﻠﻰ اﻟﻤﺼﻔﻮﻓﺎت واﻟﻌﻤﻠﻴﺎت اﻟﺨﺎﺻﺔ ﺑﻬﺎ ‪.‬‬ ‫• اﻟﺘﻌﺮف ﻋﻠﻰ ‪ Clusters‬واﻟﻌﻤﻠﻴﺎت اﻟﺨﺎﺻﺔ ﺑﻬﺎ ‪.‬‬ ‫• اﻟﺘﻌﺮف ﻋﻠﻰ ﻣﻌﻨﻰ ‪.Polymorphism‬‬ ‫• اﻟﺘﻌﺮف ﻋﻠﻰ ‪.Compound Arithmetic Function‬‬ ‫• اﻟﺘﻌﺮف ﻋﻠﻰ آﻴﻔﻴﺔ ﻣﻌﺎﻟﺠﺔ اﻻﺧﻄﺎء اﻟﺘﻰ ﺗﺤﺪث اﺛﻨﺎء ﺗﻨﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺞ ‪.‬‬

‫‪iii‬‬

‫ﻣﻘﺪﻣﺔ‬ ‫ﻓﻰ هﺬا اﻟﺪرس ﺳﻮف ﻧﺘﻌﺮف ﻋﻠﻰ ﻧﻮﻋﻴﻦ ﻣﺮآﺒﻴﻦ ﻣﻦ اﻧﻮاع اﻟﺒﻴﺎﻧﺎت )‪ ( Data Type‬وهﻤﺎ‬ ‫اﻟﻤﺼﻔﻮﻓﺎت )‪ (Arrays‬و‪.Clusters‬‬ ‫ووﺟﻮد هﺬان اﻟﻨﻮﻋﺎن ﻳﺴﻬﻞ ﺗﺨﺰﻳﻦ اﻟﺒﻴﺎﻧﺎت واﻟﺘﻌﺎﻣﻞ ﻣﻌﻬﺎ‪.‬‬ ‫وﺳﻮف ﻧﺘﻌﺮف ﻋﻠﻰ اﺳﺘﺨﺪاﻣﺎت ﻋﺪﻳﺪة ﻟﻬﻤﺎ واﻳﻀﺎ اﻟﺪوال اﻟﺨﺎﺻﺔ ﺑﻬﻤﺎ ﻓﻰ ﺑﻴﺌﺔ ‪.LabVIEW‬‬ ‫واﺧﻴﺮا ﺳﻮف ﻧﺘﻌﺮف آﻴﻔﻴﺔ اﻟﺘﻌﺎﻣﻞ ﻣﻊ اﻻﺧﻄﺎء اﻟﺘﻰ ﺗﺤﺪث اﺛﻨﺎء ﺗﻨﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺞ وﺑﻌﺾ اﻟﻤﻬﺎرات‬ ‫اﻟﻤﻬﻤﺔ ﻓﻰ اﻟﺒﺮﻣﺠﺔ‪.‬‬

‫‪iv‬‬

‫اﻟﻤﺼﻔﻮﻓﺎت )‪(Arrays‬‬ ‫ﻣﺎهﻰ اﻟﻤﺼﻔﻮﻓﺔ )‪ (Array‬؟‬ ‫اﻟﻤﺼﻔﻮﻓﺔ هﻰ ﻣﺠﻤﻮﻋﺔ ﻣﻦ اﻟﻌﻨﺎﺻﺮ ﻟﻬﺎ ﻧﻔﺲ ﻧﻮع اﻟﺒﻴﺎﻧﺎت )‪.(Data Type‬‬ ‫ﻓﻠﻘﺪ ﺗﻌﺎﻣﻠﻨﺎ ﻣﻦ ﻗﺒﻞ ﻣﻊ ﻋﻨﺎﺻﺮ ﺗﺄﺧﺬ ﻗﻴﻤﺔ وﺣﻴﺪة )‪ (Scalar Value‬ﻣﺜﻞ ‪ Indicators‬و ‪. Controls‬‬ ‫ﻓﻤﺜﻼ ‪ Indicator‬اﻟﺨﺎص ﺑﺪرﺟﺔ اﻟﺤﺮارة ﻟﻪ ﻗﻴﻤﺔ وﺣﻴﺪة ﻓﻰ اى وﻗﺖ ﻓﻨﻘﻮل ﻣﺜﻼ ان درﺟﺔ اﻟﺤﺮارة ﺗﺴﺎوى ‪.35‬‬ ‫اﻣﺎ اذا اردﻧﺎ ان ﻧﻤﺜﻞ درﺟﺎت اﻟﺤﺮارة ﺧﻼل اﻟﻴﻮم ﻓﻠﻦ ﻧﺴﺘﻄﻴﻊ ان ﻧﻀﻌﻬﺎ ﻓﻰ ‪ Indicator‬او ‪ Control‬وﻟﻜﻦ‬ ‫ﻧﻀﻌﻬﺎ ﻓﻰ ﻣﺼﻔﻮﻓﺔ )‪ ( Array‬و ﻧﺼﻔﻬﺎ ﺑﺎﻧﻬﺎ ﻣﺼﻔﻮﻓﺔ درﺟﺎت اﻟﺤﺮارة‪.‬‬ ‫وآﻤﺎ ﻗﻠﻨﺎ ﺗﺤﺘﻮى اﻟﻤﺼﻔﻮﻓﺔ ﻋﻠﻰ ﻋﻨﺎﺻﺮ وﻳﻤﻜﻦ ان ﺗﻜﻮن هﺬة اﻟﻌﻨﺎﺻﺮ ﻣﻦ اى ﻧﻮع ﻣﺜﻞ )‪ Control‬او‬ ‫‪ Indicator‬او ‪ ( ... Constant‬ﻣﺎﻋﺪا ‪ Array‬او ‪ Chart‬او ‪. Graph‬‬ ‫واﻟﻤﺼﻔﻮﻓﺔ ﻗﺪ ﺗﻜﻮن ذات ﺑﻌﺪ واﺣﺪ او ﺑﻌﺪﻳﻦ او ﻋﺪة اﺑﻌﺎد‪.‬‬ ‫وﻋﺪد اﻟﻌﻨﺎﺻﺮ ﻓﻰ آﻞ ﺑﻌﺪ ﻳﻤﻜﻦ ان ﻳﺼﻞ ‪ 231-1‬ﻋﻨﺼﺮ ‪.‬‬ ‫ﻣﺜﺎل ﻳﻮﺿﺢ ﻣﻔﻬﻮم اﻻﺑﻌﺎد‪:‬‬ ‫اﻟﻤﺼﻔﻮﻓﺔ ذات اﻟﺒﻌﺪ اﻟﻮاﺣﺪ هﻰ ﻣﺠﻤﻮﻋﺔ ﻣﻦ اﻟﻌﻨﺎﺻﺮ ﻓﻰ ﺻﻒ وﺣﻴﺪ او ﻋﻤﻮد وﺣﻴﺪ ‪.‬‬ ‫ﻓﻤﺜﻼ ﻟﻮ ان ﻃﻼﺑﺎ ﻳﻤﺘﺤﻨﻮن ﻓﻰ اآﺜﺮ ﻣﻦ ﻣﺎدة آﻞ ﺷﻬﺮ‪.‬‬ ‫ﻓﺎن درﺟﺎت اﻟﻄﻼب ﻓﻰ ﻣﺎدة واﺣﺪة ﻓﻰ ﺷﻬﺮ ﻣﺎ ﺗﻜﻮن ﻣﺼﻔﻮﻓﺔ ذات ﺑﻌﺪ واﺣﺪ‪.‬‬

‫‪1‬‬

‫اﻟﻤﺼﻔﻮﻓﺔ دات اﻟﺒﻌﺪﻳﻦ ﻣﺜﻞ اﻟﺠﺪول ﻟﻬﺎ ﻋﺪة ﺻﻔﻮف واﻋﻤﺪة‪.‬‬ ‫ﻣﺜﻞ درﺟﺎت اﻟﻄﻼب ﻓﻰ اآﺜﺮ ﻣﻦ ﻣﺎدة ﻓﻰ ﺷﻬﺮ واﺣﺪ‪.‬‬

‫اﻟﻤﺼﻔﻮﻓﺔ ذات ﺛﻼث اﺑﻌﺎد ﻣﺜﻞ ﻣﺠﻤﻮﻋﺔ ﻣﻦ اﻟﺠﺪاول‪.‬‬ ‫ﻣﺜﻞ درﺟﺎت اﻟﻄﻼب ﻓﻰ اآﺜﺮ ﻣﻦ ﻣﺎدة ﻓﻰ اآﺜﺮ ﻣﻦ ﺷﻬﺮ‪.‬‬

‫وﻟﻠﻮﺻﻮل اﻟﻰ اى ﻋﻨﺼﺮ ﻓﻰ اﻟﻤﺼﻔﻮﻓﺔ ﻧﺴﺘﺨﺪم ‪) Index‬دﻟﻴﻞ( اﻟﻤﺼﻔﻮﻓﺔ‪.‬‬

‫وهﺬا ‪ Index‬ﻳﺎﺧﺬ اﻟﻘﻴﻢ ﻣﻦ ﺻﻔﺮ اﻟﻰ ‪ N-1‬ﺣﻴﺚ ‪ N‬هﻮ ﻋﺪد اﻟﻌﻨﺎﺻﺮ ﻓﻰ اﻟﻤﺼﻔﻮﻓﺔ‪.‬‬ ‫ﻣﺜﺎل‪ :‬ﻣﺼﻔﻮﻓﺔ ذات ﺑﻌﺪ واﺣﺪ ﺑﻬﺎ ‪ 10‬ﻋﻨﺎﺻﺮ‬ ‫‪2‬‬

‫وﻟﻠﻤﺼﻔﻮﻓﺎت اهﻤﻴﺔ آﺒﺮى ﻓﻤﺜﻼ اى اﺷﺎرة ﻟﻜﻰ ﻳﺘﻢ رﺳﻤﻬﺎ او ﺗﺨﺰﻳﻨﻬﺎ ﻓﻰ ﻣﻠﻒ ﺗﻤﺜﻞ ﻋﻠﻰ هﻴﺌﺔ ﻣﺼﻔﻮﻓﺔ ‪ ،‬آﻞ‬ ‫ﻋﻨﺼﺮ ﺑﻬﺎ ﻳﻤﺜﻞ ﻧﻘﻄﺔ ﻓﻰ هﺬة اﻻﺷﺎرة ‪ ،‬اﻳﻀﺎ ﻟﻠﻤﺼﻔﻮﻓﺎت اهﻤﻴﺔ ﻓﻰ ﺗﺨﺰﻳﻦ اﻟﻘﻴﻢ اﻟﺘﻰ ﺗﺨﺮج ﻣﻦ ‪ ،Loop‬ﻓﻜﻞ‬ ‫ﺗﻨﻔﻴﺬة ﻟـ ‪ Loop‬ﺗﺨﺮج ﻋﻨﺼﺮ ﻓﻰ اﻟﻤﺼﻔﻮﻓﺔ آﻤﺎ ﺳﻨﻮﺿﺢ‪.‬‬ ‫اﻧﺸﺎء ﻣﺼﻔﻮﻓﺔ ﻣﻦ ‪ Controls‬او ‪: Indicators‬‬ ‫ﻳﺘﻢ اﻧﺸﺎء ﻣﺼﻔﻮﻓﺔ ﻣﻦ ‪ Controls‬او ‪ Indicators‬ﻓﻰ ‪ Front Panel‬ﻓﻰ ﺧﻄﻮﺗﻴﻦ ‪:‬‬ ‫‪ -1‬ﻳﺘﻢ ادارح اﻃﺎر اﻟﻤﺼﻔﻮﻓﺔ وهﻮ اﻟﺬى ﺳﻴﺤﺘﻮى ﻋﻠﻰ ﻋﻨﺎﺻﺮ اﻟﻤﺼﻔﻮﻓﺔ‬ ‫وﻳﺘﻢ ادراﺟﻪ ﻣﻦ‬ ‫‪Controls Palette>>Modern>>Array, Matrix & Cluster‬‬

‫‪ -2‬ﻳﺘﻢ ادراج ‪ Control‬او ‪ Indicator‬اﻟﺬى ﻧﺮﻳﺪﻩ داﺧﻞ اﻃﺎر اﻟﻤﺼﻔﻮﻓﺔ ﻟﺘﻜﻮﻳﻦ ﻣﺼﻔﻮﻓﺔ ﻣﻨﻪ‪.‬‬

‫‪3‬‬

‫ﻻﺣﻆ ان ﻋﻨﺎﺻﺮ اﻟﻤﺼﻔﻮﻓﺔ ﻳﻤﻜﻦ ان ﻳﻜﻮﻧﻮا ‪ Controls‬او ‪ Indicators‬وﻟﻴﺲ ﺧﻠﻴﻂ ﻣﻨﻬﻢ‪.‬‬

‫‪4‬‬

‫ﻋﻨﺪ ادراج اﻃﺎر اﻟﻤﺼﻔﻮﻓﺔ وﻗﺒﻞ وﺿﻊ اى ‪ Control‬او ‪ Indicator‬داﺧﻠﻪ ﻳﻈﻬﺮ ﻟﻪ ‪ Terminal‬ﻓﻰ‬ ‫‪ Block Diagram‬وﻳﻜﻮن ﻟﻮن هﺬا ‪ Terminal‬اﺳﻮد وﻳﻮﺟﺪ ﺑﻪ ﻗﻮﺳﻴﻦ ﻓﺎرﻏﻴﻦ ﺣﺘﻰ ﻳﺘﻢ ﺗﺤﺪﻳﺪ اﻟـ ‪Data‬‬ ‫‪ type‬اﻟﺨﺎص ﺑﻪ وﻳﺘﻢ ذﻟﻚ ﺑﻮﺿﻊ ‪ Control‬او ‪ Indicator‬او ﺛﺎﺑﺖ داﺧﻞ اﻃﺎر اﻟﻤﺼﻔﻮﻓﺔ‪.‬‬

‫وﻋﻨﺪ وﺿﻊ ‪ Control‬او ‪ Indicator‬او ﺛﺎﺑﺖ داﺧﻞ اﻃﺎر اﻟﻤﺼﻔﻮﻓﺔ ﻳﺘﻐﻴﺮ ﻟﻮن ‪ Terminal‬اﻟﻰ ﻟﻮن ‪Data‬‬ ‫‪ Type‬اﻟﺨﺎص ﺑﺎﻟﻌﻨﺼﺮ اﻟﺬى وﺿﻊ ﻓﻴﻬﺎ‪ .‬آﻤﺎ ﻳﻮﺿﻊ ﺑﻴﻦ اﻟﻘﻮﺳﻴﻦ ﻓﻰ ‪ Terminal‬رﻣﺰ هﺬا ‪. Data Type‬‬

‫ﺗﺬآﺮ ان ‪ Terminal‬ﻳﻤﻜﻦ ان ﻳﻜﻮن ﻋﻠﻰ ﺷﻜﻞ اﻳﻘﻮﻧﺔ او ﻳﻜﻮن ﻋﻠﻰ اﻟﺸﻜﻞ اﻟﻘﺪﻳﻢ وﻟﻠﺘﻐﻴﻴﺮ ﺑﻴﻨﻬﻤﺎ ﻧﻀﻐﻂ ﺑﺎﻟﺰر‬ ‫اﻻﻳﻤﻦ ﻟﻠﻤﺎوس وﻧﺨﺘﺎر او ﻧﻠﻐﻰ اﺧﺘﻴﺎر ‪ View as icon‬وهﺬا ﺗﻐﻴﻴﺮ ﻓﻰ اﻟﺸﻜﻞ ﻓﻘﻂ وﻟﻴﺲ ﻟﻪ اى ﺗﺄﺛﻴﺮ اﺧﺮ‪.‬‬ ‫‪5‬‬

‫ﻳﻤﻜﻦ ﺗﻐﻴﻴﺮ اﺑﻌﺎد اﻟﻌﻨﺼﺮ داﺧﻞ اﻟﻤﺼﻔﻮﻓﺔ وذﻟﻚ ﺑﺘﺤﺮﻳﻚ اﻻداة‬ ‫اﻟﻤﺼﻔﻮﻓﺔ ﺣﺘﻰ ﻳﻈﻬﺮ اﻟﻤﺆﺷﺮ ﻋﻠﻰ هﻴﺌﺔ ﻣﺆﺷﺮﺑﺴﻬﻤﻴﻦ او‬

‫‪ Positioning‬ﻋﻠﻰ ﺣﺎﻓﺔ اﻟﻌﻨﺼﺮ داﺧﻞ‬ ‫ﻓﻨﻀﻐﻂ وﻧﺴﺤﺐ اﻟﻰ اﻻﺑﻌﺎد اﻟﺘﻰ ﻧﺮﻳﺪهﺎ ‪.‬‬

‫وﻳﻜﻦ ﺗﻐﻴﻴﺮ ﻋﺪد اﻟﻌﻨﺎﺻﺮ اﻟﺘﻰ ﺗﻈﻬﺮ داﺧﻞ اﻃﺎر اﻟﻤﺼﻔﻮﻓﺔ وذﻟﻚ ﺑﺘﻐﻴﻴﺮ اﺑﻌﺎد اﻃﺎر اﻟﻤﺼﻔﻮﻓﺔ وذﻟﻚ ﺑﺘﺤﺮﻳﻚ‬ ‫اﻻداة‬

‫‪ Positioning‬ﻋﻠﻰ اﻃﺎر اﻟﻤﺼﻔﻮﻓﺔ ﺣﺘﻰ ﻳﻜﻮن اﻟﻤﺆﺷﺮ ﻋﻠﻰ هﻴﺌﺔ ﻣﺆﺷﺮ ﺑﺴﻬﻤﻴﻦ او‬

‫وﻧﺴﺤﺐ اﻟﻰ اﻻﺑﻌﺎد اﻟﺘﻰ ﻧﺮﻳﺪهﺎ‪.‬‬ ‫‪6‬‬

‫ﻓﻨﻀﻐﻂ‬

‫ﻳﻈﻬﺮ اﻟﻌﻨﺼﺮ داﺧﻞ اﻟﻤﺼﻔﻮﻓﺔ ﻣﻌﺘﻤﺎ اذا ﻟﻢ ﺗﺤﺪد ﻟﻪ ﻗﻴﻤﺔ وﻳﺘﻢ ﺗﺤﺪﻳﺪ ﻗﻴﻤﺔ اﻟﻌﻨﺎﺻﺮ ﺑﻜﺘﺎﺑﺔ اﻟﻘﻴﻤﺔ ﻣﺒﺎﺷﺮة ﻓﻰ‬ ‫اﻟﻌﻨﺼﺮ او اﺳﺘﺨﺪام اﻻﺳﻬﻢ ﻓﻰ ﺣﺎﻟﺔ اذا آﺎن اﻟﻌﻨﺼﺮ ‪ Numeric Control‬او ﺑﺎﻟﻀﻐﻂ ﻋﻠﻰ اﻟﻌﻨﺼﺮ اذا آﺎن‬ ‫‪ Boolean‬او ﺗﺤﺪد ﻗﻴﻢ اﻟﻤﺼﻔﻮﻓﺔ ﻣﻦ داﺧﻞ اﻟﺒﺮﻧﺎﻣﺞ اﺛﻨﺎء اﻟﺘﻨﻔﻴﺬ‪.‬‬

‫‪7‬‬

‫و ﺗﻌﺘﺒﺮ اﻟﻌﻨﺎﺻﺮ اﻟﺘﻰ داﺧﻞ اﻟﻤﺼﻔﻮﻓﺔ هﻰ اﻟﻌﻨﺎﺻﺮ اﻟﺘﻰ ﺗﻢ ﺗﺤﺪﻳﺪ ﻗﻴﻢ ﻟﻬﺎ )ﻻﺣﻆ ان اﻟﺼﻔﺮ ﻗﻴﻤﺔ(‪.‬‬

‫ﺗﺪل ﻗﻴﻤﺔ ‪) Index‬اﻟﺪﻟﻴﻞ( اﻟﺨﺎص ﺑﺎﻟﻤﺼﻔﻮﻓﺔ ﻋﻠﻰ رﻗﻢ اول ﻋﻨﺼﺮ ﻳﻈﻬﺮ ﻓﻰ اﻃﺎر اﻟﻌﻨﺼﺮ ‪.‬‬ ‫واذا ﻗﻤﺖ ﺑﺘﻐﻴﻴﺮ ﻗﻴﻤﺔ اﻟﺪﻟﻴﻞ ﻳﻈﻬﺮ ﻟﻚ اﻟﻌﻨﺼﺮ اﻟﺬى رﻗﻤﺔ ﻳﺴﺎوى ﻗﻴﻤﺔ ‪.Index‬‬

‫‪8‬‬

‫اﻧﺸﺎء ﻣﺼﻔﻮﻓﺔ ﻣﻦ ‪ Constants‬ﻓﻰ ‪: Block Diagram‬‬ ‫ﺑﻨﻔﺲ اﻟﻄﺮﻳﻘﺔ ﻳﺘﻢ اﻧﺸﺎء ﻣﺼﻔﻮﻓﺔ ﻣﻦ ‪ Constants‬ﻓﻰ ‪ Block Diagram‬ﻋﻠﻰ ﺧﻄﻮﺗﻴﻦ‪:‬‬ ‫‪ -1‬ﻧﺪرج اﻃﺎر اﻟﻤﺼﻔﻮﻓﺔ )‪ (Array Constant‬ﻣﻦ‬ ‫‪Function Palette>>Programming >>Array‬‬

‫‪-2‬ﻧﺪرج ﺛﺎﺑﺖ )‪ (Constant‬داﺧﻞ اﻃﺎر اﻟﻤﺼﻔﻮﻓﺔ‬ ‫هﺬا اﻟﺜﺎﺑﺖ ﻳﻤﻜﻦ ان ﻳﻜﻮن ﻣﻦ اﻟﻨﻮع ‪ Numeric‬او ‪ String‬او ‪.Boolean‬‬

‫‪9‬‬

‫ﺣﺬف ﺟﻤﻴﻊ ﻋﻨﺎﺻﺮ اﻟﻤﺼﻔﻮﻓﺔ ‪:‬‬ ‫ﻳﻤﻜﻦ ﺣﺬف ﺟﻤﻴﻊ ﻗﻴﻢ اﻟﻌﻨﺎﺻﺮ اﻟﻤﻮﺟﻮدة ﻓﻰ اﻟﻤﺼﻔﻮﻓﺔ وﺟﻌﻠﻬﺎ ﻓﺎرﻏﺔ وذﻟﻚ ﺑﺎﻟﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻟﻠﻤﺎوس ﻋﻠﻰ‬ ‫‪) Index‬اﻟﺪﻟﻴﻞ( – وﻟﻴﺲ ﻋﻠﻰ اﻟﻌﻨﺼﺮ‪ -‬واﺧﺘﻴﺎر‬ ‫‪Data Operation >>Empty Array‬‬

‫‪10‬‬

‫اﺿﺎﻓﺔ او ﺣﺬف ﻋﻨﺼﺮ ﻓﻰ اﻟﻤﺼﻔﻮﻓﺔ ‪:‬‬ ‫ﻳﻤﻜﻦ اﺿﺎﻓﺔ ﻋﻨﺼﺮ او ﺣﺬف ﻋﻨﺼﺮ ﻣﻦ ﻣﺼﻔﻮﻓﺔ ﺑﺎﻟﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻟﻠﻤﺎوس ﻋﻠﻰ اﻟﻌﻨﺼﺮ داﺧﻞ اﻟﻤﺼﻔﻮﻓﺔ‬ ‫و اﺧﺘﻴﺎر‬ ‫‪Data Operation >>Insert Element Before‬‬ ‫ﻻﺿﺎﻓﺔ ﻋﻨﺼﺮ‬ ‫او‬ ‫‪Data Operation >>Delete Element‬‬ ‫ﻟﺤﺬف ﻋﻨﺼﺮ‬

‫‪11‬‬

12

‫اﻇﻬﺎر ‪) Scrollbar‬ﺷﺮﻳﻂ اﻧﺰﻻق( ﻟﻠﻤﺼﻔﻮﻓﺔ ‪:‬‬ ‫ﻋﻠﻤﻨﺎ اﻧﻪ ﺑﺘﻐﻴﻴﺮ ﻗﻤﻴﺔ ‪ Index‬ﺗﺘﻐﻴﺮ اﻟﻌﻨﺎﺻﺮ اﻟﺘﻰ ﺗﻈﻬﺮ ﻣﻦ ﺧﻼل اﻃﺎر اﻟﻤﺼﻔﻮﻓﺔ ﻓﺘﺴﺘﻄﻴﻊ ﻣﺸﺎهﺪﺗﻬﺎ ‪ .‬وهﻨﺎك‬ ‫ﻃﺮﻳﻘﺔ اﺧﺮى ﻟﺘﺸﺎهﺪ ﻋﻨﺎﺻﺮ اﻟﻤﺼﻔﻮﻓﺔ وهﻰ اﻇﻬﺎر ‪ Scrollbar‬ﻟﻠﻤﺼﻔﻮﻓﺔ وهﺬا ‪ Scrollbar‬ﻗﺪ ﻳﻜﻮن اﻓﻘﻴﺎ‬ ‫)‪ (Horizontal‬او رأﺳﻴﺎ )‪ (Vertical‬وذﻟﻚ ﺑﺎﻟﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻟﻠﻤﺎوس ﻋﻠﻰ ‪ Index‬واﺧﺘﻴﺎر‬ ‫‪Visible Items>>Vertical Scrollbar‬‬ ‫او‬ ‫‪Visible Items>> Horizontal Scrollbar‬‬

‫‪13‬‬

‫اﺳﺘﺨﺪام ﺧﺎﺻﻴﺔ ‪: Auto-Indexing‬‬ ‫ﺧﺎﺻﻴﺔ ‪ Auto-Indexing‬هﻰ ان ‪ While Loop‬او ‪ For Loop‬ﺗﻘﻮم ﺑﺘﺨﺰﻳﻦ ﻗﻴﻢ ﻋﻠﻰ اﻃﺎرهﺎ ﻓﻰ‬ ‫ﻣﺼﻔﻮﻓﺔ ﻓﻜﻞ ﻣﺮة ﺗﻨﻔﺬ ﻓﻴﻬﺎ ‪ Loop‬ﻳﺘﻢ اﺿﺎﻓﺔ ﻗﻴﻤﺔ اﻟﻰ اﻟﻤﺼﻔﻮﻓﺔ وﺗﺨﺮج هﺬة اﻟﻤﺼﻔﻮﻓﺔ اﻟﻰ ﺧﺎرج ‪ Loop‬ﺑﻌﺪ‬ ‫اﻧﺘﻬﺎء ﻋﻤﻞ ‪ Loop‬ﻣﺒﺎﺷﺮة‪.‬‬ ‫واذا آﺎﻧﺖ هﺬة اﻟﺨﺎﺻﻴﺔ ﻏﻴﺮ ﻣﻔﻌﻠﺔ ﺗﺨﺮج اﺧﺮ ﻗﻴﻤﺔ ﻓﻘﻂ ﻣﻦ ‪ Loop‬ﺑﻌﺪ اﻧﺘﻬﺎء ﻋﻤﻠﻬﺎ‪.‬‬ ‫وهﺬة اﻟﺨﺎﺻﻴﺔ ﻣﻔﻌﻠﺔ ﺗﻠﻘﺎﺋﻴﺎ ﻣﻊ ‪ For Loop‬وﻳﻤﻜﻦ ﺗﻌﻄﻴﻠﻬﺎ‪.‬‬ ‫وﻟﻜﻦ هﻰ ﻣﻌﻄﻠﺔ ﺗﻠﻘﺎﺋﻴﺎ ﻣﻊ ‪ While Loop‬وﻳﻤﻜﻦ ﺗﻔﻌﻠﻴﻠﻬﺎ‪.‬‬ ‫ﻣﺜﺎل ‪:‬‬ ‫اﺳﺘﺨﺪام ‪ For Loop‬ﻻﺧﺮاج ﻣﺼﻔﻮﻓﺔ ﺑﻬﺎ ‪ 5‬ﻋﻨﺎﺻﺮ آﻞ ﻋﻨﺼﺮ ﺑﻪ رﻗﻢ ﻋﺸﻮاﺋﻰ‬

‫‪14‬‬

‫ﻳﻤﻜﻦ اﻟﻐﺎء ﺗﻔﻌﻴﻞ ‪ Auto Indexing‬ﺑﺎﻟﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻋﻠﻰ ‪ Tunnel‬واﺧﺘﻴﺎر ‪. Disable Indexing‬‬ ‫وﻓﻰ هﺬة اﻟﺤﺎﻟﺔ ﺗﺨﺮج ﻓﻘﻂ اﺧﺮ ﻗﻴﻤﺔ ﻟﺪاﻟﺔ اﻟﺮﻗﻢ اﻟﻌﺸﻮاﺋﻰ وهﻰ ﻗﻴﻤﺔ وﺣﻴﺪة )‪ ( Scalar‬و ﻟﻴﺴﺖ ﻣﺼﻔﻮﻓﺔ‪.‬‬

‫‪15‬‬

‫ﻻﺣﻆ ان اﻟﺮاﺑﻂ اﺻﺒﺢ ﻣﻘﻄﻮﻋﺎ ﻻﻧﻪ ﻳﺼﻞ ﺑﻴﻦ ﻧﻮﻋﻴﻦ ﻣﺨﺘﻠﻔﻴﻦ )ﻗﻴﻤﺔ وﺣﻴﺪة وﻣﺼﻔﻮﻓﺔ( وﻟﻠﺘﻐﻠﺐ ﻋﻠﻰ هﺬا اﻟﺨﻄﺄ‬ ‫وﺟﻌﻞ اﻟﺮاﺑﻂ ﻏﻴﺮ ﻣﻘﻄﻮع ﻧﺠﻌﻞ اداة اﻻﻇﻬﺎر ﻋﺒﺎرة ﻋﻦ ‪ Numeric Indicator‬ﺑﺪﻻ ﻣﻦ ﻣﺼﻔﻮﻓﺔ‪.‬‬

‫ﺗﺴﺘﺨﺪم اﻳﻀﺎ ﺧﺎﺻﻴﺔ ‪ Auto Indexing‬ﻓﻰ ﺣﺎﻟﺔ ادﺧﺎل ﻗﻴﻢ ﻋﻨﺎﺻﺮ ﻣﺼﻔﻮﻓﺔ اﻟﻰ ‪ For Loop‬و ‪While‬‬ ‫‪.Loop‬‬ ‫ﻓﻰ ﺣﺎﻟﺔ وﺻﻞ ﻣﺼﻔﻮﻓﺔ اﻟﻰ دﺧﻞ ‪ For Loop‬ﻣﺜﻼ ﻣﻊ ﺗﻔﻌﻴﻞ ‪ .Auto Indexing‬ﻓﺴﻮف ﻳﺪﺧﻞ ﻗﻴﻤﺔ اﻟﻌﻨﺼﺮ‬ ‫اﻻول ﻓﻰ اﻟﻤﺼﻔﻮﻓﺔ اﻟﻰ داﺧﻞ ‪ Loop‬ﻣﻊ اول ﺗﻨﻔﻴﺬة‪ .‬ﺛﻢ ﻳﺪﺧﻞ ﻗﻴﻤﺔ اﻟﻌﻨﺼﺮ اﻟﺜﺎﻧﻰ ﻓﻰ اﻟﻤﺼﻔﻮﻓﺔ اﻟﻰ داﺧﻞ‬ ‫‪ Loop‬ﻣﻊ اﻟﺘﻨﻔﻴﺬة اﻟﺜﺎﻧﻴﺔ‪ .‬وهﻜﺬا‬ ‫اى ان ﻓﻰ ﺣﺎﻟﺔ ‪ Auto Indexing‬ﻻ ﺗﺪﺧﻞ ﻋﻨﺎﺻﺮ اﻟﻤﺼﻔﻮﻓﺔ آﻠﻬﺎ ﻣﺮة واﺣﺪة واﻧﻤﺎ ﻳﺪﺧﻞ ﻋﻨﺼﺮ ﻋﻨﺼﺮ ﻣﻊ‬ ‫آﻞ ﺗﻨﻔﻴﺬة‪.‬وﻳﺘﻢ اﻟﺘﻌﺎﻣﻞ ﻣﻊ هﺬة اﻟﻌﻨﺎﺻﺮ داﺧﻞ ‪ Loop‬آﺄﻧﻬﺎ ﻗﻴﻢ وﺣﻴﺪة‪.‬‬

‫‪16‬‬

‫اﻣﺎ ﻓﻰ ﺣﺎﻟﺔ ﺗﻌﻄﻴﻞ ﺧﺎﺻﻴﺔ ‪ Auto Indexing‬ﻓﺴﻮف ﺗﺪﺧﻞ آﻞ ﻋﻨﺎﺻﺮ اﻟﻤﺼﻔﻮﻓﺔ آﻜﻞ ﻣﻊ اول ﺗﻨﻔﻴﺬة ﻓﻘﻂ ﻟﻴﺘﻢ‬ ‫اﻟﺘﻌﺎﻣﻞ ﻣﻌﻬﺎ آﻤﺼﻔﻮﻓﺔ داﺧﻞ ‪.Loop‬‬

‫اﺳﺘﺨﺪام ﺧﺎﺻﻴﺔ ‪ Auto Indexing‬ﻟﺘﺤﺪﻳﺪ ﻋﺪد ﻣﺮات ﺗﻜﺮار ﺗﻨﻔﻴﺬ ‪: For Loop‬‬ ‫اذا ﺗﻢ ﺗﻮﺻﻴﻞ ﻣﺼﻔﻮﻓﺔ اﻟﻰ داﺧﻞ ‪ For Loop‬و ﺧﺎﺻﻴﺔ ‪ Auto Indexing‬ﻣﻔﻌﻠﺔ ﻓﺴﻮف ﻳﻜﻮن ﻋﺪد ﻣﺮات‬ ‫ﺗﻜﺮار ﺗﻨﻔﻴﺬ ‪ For Loop‬ﻳﺴﺎوى ﺳﻌﺔ هﺬة اﻟﻤﺼﻔﻮﻓﺔ )ﻋﺪد اﻟﻌﻨﺎﺻﺮ اﻟﻤﻮﺟﻮدة ﻓﻰ اﻟﻤﺼﻔﻮﻓﺔ(‪ .‬وﻓﻰ هﺬة اﻟﺤﺎﻟﺔ‬ ‫ﻻداﻋﻰ ﻟﺘﻮﺻﻴﻞ اى ﻗﻴﻤﺔ ﻟـ‬

‫‪.Terminal‬‬

‫‪17‬‬

‫اذا ﺗﻢ ﺗﻮﺻﻴﻞ ﻗﻴﻤﺔ اﻟﻰ اﻟـ‬

‫‪ Terminal‬واﻳﻀﺎ ﺗﻮﺻﻴﻞ ﻣﺼﻔﻮﻓﺔ اﻟﻰ دﺧﻞ ‪ For Loop‬ﻣﻊ ﺗﻔﻌﻴﻞ ﺧﺎﺻﻴﺔ‬

‫‪ Auto Indexing‬ﻓﺴﻮف ﻳﺘﻢ ﺗﺤﺪﻳﺪ ﻋﺪد ﻣﺮات ﺗﻨﻔﻴﺬ ‪ For Loop‬ﺑﺎﺻﻐﺮ اﻟﻘﻴﻤﻴﺘﻴﻦ )اﻟﻘﻴﻤﺔ اﻟﻤﻮﺻﻠﺔ ﻟـ‬ ‫وﺳﻌﺔ اﻟﻤﺼﻔﻮﻓﺔ(‪.‬‬ ‫ﻓﺎذا آﺎﻧﺖ ﺳﻌﺔ اﻟﻤﺼﻔﻮﻓﺔ اﺻﻐﺮ ﻣﻦ اﻟﻘﻴﻤﺔ اﻟﻤﻮﺻﻠﺔ ﻟـ‬

‫ﻓﺴﻮف ﻳﻜﻮن ﻋﺪد ﻣﺮات ﺗﻨﻔﻴﺬ ‪ For Loop‬ﻳﺴﺎوى‬

‫ﺳﻌﺔ اﻟﻤﺼﻔﻮﻓﺔ‪.‬‬ ‫واذا آﺎﻧﺖ اﻟﻘﻴﻤﺔ اﻟﻤﻮﺻﻠﺔ ﻟـ‬ ‫اﻟﻘﻴﻤﺔ اﻟﻤﻮﺻﻠﺔ اﻟﻰ‬

‫اﺻﻐﺮ ﻣﻦ ﺳﻌﺔ اﻟﻤﺼﻔﻮﻓﺔ ﻓﺴﻮف ﻳﻜﻮن ﻋﺪد ﻣﺮات ﺗﻨﻔﻴﺬ ‪ For Loop‬ﻳﺴﺎوى‬

‫‪.‬‬

‫ﻣﺜﺎل ‪:‬‬

‫‪18‬‬

‫اﻟﻤﺼﻔﻮﻓﺎت ذات ﺑﻌﺪﻳﻦ ‪:‬‬ ‫وهﻰ ﺗﻤﺎﺛﻞ اﻟﺠﺪول ﺣﻴﺚ ﺗﺨﺰن اﻟﻌﻨﺎﺻﺮ ﻋﻠﻰ هﻴﺌﺔ ﺻﻔﻮف واﻋﻤﺪة‪.‬‬ ‫وهﺬة اﻟﻤﺼﻔﻮﻓﺎت ﻳﺤﺪد ﻓﻴﻬﺎ اﻟﻌﻨﺼﺮ ﺑﻌﺪد ‪) Index 2‬دﻟﻴﻠﻴﻦ( ‪.‬‬ ‫‪ Index‬ﻟﺘﺤﺪﻳﺪ رﻗﻢ اﻟﻌﻤﻮد و ‪ Index‬ﻟﺘﺤﺪﻳﺪ رﻗﻢ اﻟﺼﻒ‪.‬‬ ‫وآﻞ ﻣﻦ ‪ Index‬اﻟﻌﻤﻮد و ‪ Index‬اﻟﺼﻒ ﻳﺒﺪأ ﺑﺎﻟﺮﻗﻢ ﺻﻔﺮ‪.‬‬

‫‪19‬‬

‫آﻴﻔﻴﺔ ﺗﻜﻮن ﻣﺼﻔﻮﻓﺔ ذات ﺑﻌﺪﻳﻦ ‪:‬‬ ‫ﻧﻘﻮم ﺑﻌﻤﻞ ﻣﺼﻔﻮﻓﺔ ذات ﺑﻌﺪ واﺣﺪ ﺛﻢ ﻧﻀﻐﻂ ﻋﻠﻰ ‪ Index‬ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻟﻠﻤﺎوس وﻧﺨﺘﺎر ‪Add Dimension‬‬

‫‪20‬‬

‫وﻳﻤﻜﻦ ﻋﺮض ﻋﺪد اآﺒﺮ ﻣﻦ اﻟﻌﻨﺎﺻﺮ ﻓﻰ اﻟﻤﺼﻔﻮﻓﺔ ﺑﺘﺤﺮﻳﻚ اﻻداة‬ ‫ﺣﺘﻰ ﺗﺘﺤﻮل اﻟﻰ اﻟﺴﻬﻢ ذو اﺗﺠﺎهﻴﻦ‬

‫او‬

‫‪ Positioning‬ﻋﻠﻰ اﻃﺎر اﻟﻤﺼﻔﻮﻓﺔ‬

‫ﻓﻨﻀﻐﻂ وﻧﺤﺮك اﻻﻃﺎر ﻓﻰ اﺣﺪ اﻻﺗﺠﺎهﺎت اﻟﺮأﺳﻴﺔ او اﻻﻓﻘﻴﺔ‬

‫واﻋﺎدة ﻋﻤﻞ ذﻟﻚ ﻓﻰ اﻻﺗﺠﺎﻩ اﻻﺧﺮ‪.‬‬

‫وﻧﻼﺣﻆ اﻧﻪ ﻋﻨﺪ ﺗﻜﻮﻳﻦ اﻟﻤﺼﻔﻮﻓﺔ ﺗﻜﻮن ﻓﺎرﻏﺔ وﻧﺴﻄﻴﻊ آﺘﺎﺑﺔ اﻟﻘﻴﻢ اﻟﺘﻰ ﻧﺮﻳﺪهﺎ ﻓﻴﻬﺎ ﻣﺒﺎﺷﺮة‪.‬‬ ‫وﻳﻤﻜﻦ ﺑﻨﻔﺲ اﻟﻄﺮﻳﻘﺔ ان ﻧﻘﻮم ﺑﺤﺬف ﺑﻌﺪ ﻣﻦ ﻣﺼﻔﻮﻓﺔ ﻟﻬﺎ اآﺜﺮ ﻣﻦ ﺑﻌﺪ ‪.‬وذﻟﻚ ﺑﺎﻟﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻋﻠﻰ‬ ‫‪ Index‬اﻟﻤﺼﻔﻮﻓﺔ واﺧﺘﻴﺎر ‪.Remove Dimension‬‬

‫‪21‬‬

‫آﻴﻔﻴﺔ ﺗﻜﻮﻳﻦ ﻣﺼﻔﻮﻓﺔ ذات ﺑﻌﺪﻳﻦ ﺑﺎﺳﺘﺨﺪام ‪: For Loop‬‬ ‫رأﻳﻨﺎ آﻴﻒ ﻳﺘﻢ اﺳﺘﺨﺪام ‪ For Loop‬ﻟﻌﻤﻞ ﻣﺼﻔﻮﻓﺔ ذات ﺑﻌﺪ واﺣﺪ‪.‬وﺑﺎﺳﺘﺨﺪام ﻋﺪد ‪ - For Loop 2‬ﺑﺤﻴﺖ‬ ‫ﺗﻜﻮن واﺣﺪة داﺧﻞ اﻻﺧﺮى‪ -‬وﺗﻔﻌﻴﻞ ﺧﺎﺻﻴﺔ ‪ Auto Indexing‬ﻳﻤﻜﻦ ﺗﻜﻮﻳﻦ ﻣﺼﻔﻮﻓﺔ ذات ﺑﻌﺪﻳﻦ ﺑﻬﺎ ﻗﻴﻢ‪.‬‬ ‫و ﺗﻜﻮن ‪ For Loop‬اﻟﺪاﺧﻠﻴﺔ اﻟﺼﻔﻮف وﺗﻘﻮم ‪ For Loop‬اﻟﺨﺎرﺟﻴﺔ ﺑﺘﺨﺰﻳﻦ هﺬة اﻟﺼﻔﻮف ﻓﻮق ﺑﻌﻀﺎ ﻟﺘﻜﻮﻳﻦ‬ ‫ﻣﺼﻔﻮﻓﺔ ذات ﺑﻌﺪﻳﻦ‪.‬‬

‫‪22‬‬

23

‫اﻟﺪول اﻟﺨﺎﺻﺔ ﺑﺎﻟﻤﺼﻔﻮﻓﺎت ‪:‬‬ ‫ﺗﻮﺟﺪ دوال آﺜﻴﺮة ﻓﻰ ‪ LabVIEW‬ﺧﺎﺻﺔ ﺑﺎﻟﺘﻌﺎﻣﻞ ﻣﻊ اﻟﻤﺼﻔﻮﻓﺎت‪.‬‬ ‫وﺗﻮﺟﺪ هﺬة اﻟﺪوال ﻓﻰ‬ ‫‪Function Palette>>Programming>>Array‬‬

‫‪24‬‬

‫ﺗﺬآﺮة‪ :‬اﻟﺘﺮﻗﻴﻢ ﻓﻰ اﻟﻤﺼﻔﻮﻓﺎت ﻳﺒﺪأ ﻣﻦ اﻟﺼﻔﺮ ﻓﺎﻟﻌﻨﺼﺮ اﻻول ﺗﺮﻗﻴﻤﻪ ‪ (Index=0) 0‬واﻟﻌﻨﺼﺮ اﻟﺜﺎﻧﻰ ﺗﺮﻗﻴﻤﻪ‬ ‫‪ (Index=1) 1‬وهﻜﺬا‪.‬‬ ‫داﻟﺔ ‪:Initialize Array‬‬ ‫ﺗﻘﻮم ﺑﺈﻧﺸﺎء ﻣﺼﻔﻮﻓﺔ ﺑﻬﺎ ﻋﺪد ﻣﻌﻴﻦ ﻣﻦ اﻟﻌﻨﺎﺻﺮ وﻗﻴﻢ هﺬة اﻟﻌﻨﺎﺻﺮ ﻣﺘﺴﺎوﻳﺔ‪.‬‬ ‫وﻣﺪاﺧﻞ هﺬة اﻟﺪاﻟﺔ ‪:‬‬ ‫• اﻟﻘﻴﻤﺔ اﻟﺘﻰ ﺳﺘﺄﺧﺬهﺎ اﻟﻌﻨﺎﺻﺮ‬ ‫• ﻋﺪد اﻟﻌﻨﺎﺻﺮ ﻓﻰ آﻞ ﺑﻌﺪ‬ ‫وﺧﺮج هﺬة اﻟﺪاﻟﺔ ﻣﺼﻔﻮﻓﺔ ﺑﻬﺎ ﻋﺪد ﻣﻌﻴﻦ ﻣﻦ اﻟﻌﻨﺎﺻﺮ ﻣﺘﺴﺎوﻳﻴﻦ ﻓﻰ اﻟﻘﻴﻤﺔ وهﻰ اﻟﻘﻴﻤﺔ اﻟﺘﻰ ﺣﺪدﻧﺎهﺎ‪.‬‬

‫ﻣﻦ اﻟﺸﻜﻞ ﻓﻰ اﻻﻋﻠﻰ اﻟﺪاﻟﺔ اﺧﺮﺟﺖ ﻣﺼﻔﻮﻓﺔ ذات ﺑﻌﺪ واﺣﺪ‪.‬‬ ‫وﻻﺧﺮاج ﻣﺼﻔﻮﻓﺔ ذات ﺑﻌﺪﻳﻦ او ﺛﻼﺛﺔ او اآﺜﺮ ﻧﻤﺪ اﻳﻘﻮن اﻟﺪاﻟﺔ ﻻﺳﻔﻞ ﻟﻠﻌﺪد اﻟﺬى ﻧﺮﻳﺪﻩ ﻣﻦ اﻻﺑﻌﺎد‪.‬‬

‫‪25‬‬

‫اﻣﺜﻠﺔ‬

‫‪26‬‬

‫داﻟﺔ ‪: Array Size‬‬

‫ﺗﺨﺮج هﺬة اﻟﺪاﻟﺔ ﺳﻌﺔ اﻟﻤﺼﻔﻮﻓﺔ )ﻋﺪد اﻟﻌﻨﺎﺻﺮ( ‪.‬‬ ‫ﻓﺎذا آﺎﻧﺖ اﻟﻤﺼﻔﻮﻓﺔ ذات ﺑﻌﺪ واﺣﺪ ﺗﺨﺮج اﻟﺪاﻟﺔ ﻋﺪد ﻋﻨﺎﺻﺮ اﻟﻤﺼﻔﻮﻓﺔ‪.‬‬ ‫واذا آﺎﻧﺖ اﻟﻤﺼﻔﻮﻓﺔ ﻟﻬﺎ اآﺜﺮ ﻣﻦ ﺑﻌﺪ ﺗﺨﺮج اﻟﺪاﻟﺔ ﻣﺼﻔﻮﻓﺔ ذات ﺑﻌﺪ واﺣﺪ‪ .‬اﻟﻌﻨﺼﺮ اﻻول ﻓﻴﻬﺎ ﻗﻴﻤﺘﻪ ﻋﺪد‬ ‫ﻋﻨﺎﺻﺮ اﻟﺒﻌﺪ اﻻول واﻟﻌﻨﺼﺮ اﻟﺜﺎﻧﻰ ﻓﻴﻬﺎ ﻗﻴﻤﺘﻪ ﻋﺪد ﻋﻨﺎﺻﺮ اﻟﺒﻌﺪ اﻟﺜﺎﻧﻰ وهﻜﺬا‪.‬‬ ‫اﻣﺜﻠﺔ‬

‫‪27‬‬

‫داﻟﺔ ‪: Build Array‬‬ ‫ﺗﻘﻮم هﺬة اﻟﺪاﻟﺔ ﺑﺎﺿﺎﻓﺔ ﻋﻨﺎﺻﺮ ﻟﻠﻤﺼﻔﻮﻓﺔ او ﺑﺠﻤﻊ ﺑﻴﻦ ﻣﺼﻔﻮﻓﺎت او ﻋﻨﺎﺻﺮ ﻟﺘﻜﻮﻳﻦ ﻣﺼﻔﻮﻓﺔ اآﺒﺮ‪.‬‬

‫وهﺬة اﻟﺪاﻟﺔ ﻟﻬﺎ ﻣﺨﺮج واﺣﺪ‪.‬‬ ‫وﻟﻬﺎ ﻣﺪﺧﻞ واﺣﺪ ﻋﻨﺪ ادراﺟﻬﺎ وﻳﻤﻜﻦ زﻳﺎدة ﻋﺪد اﻟﻤﺪاﺧﻞ ﺑﻤﺪ اﻳﻘﻮن اﻟﺪاﻟﺔ اﻟﻰ اﺳﻔﻞ‪.‬‬

‫او ﺑﺎﻟﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻋﻠﻰ اﻳﻘﻮﻧﺔ اﻟﺪاﻟﺔ واﺧﺘﻴﺎر ‪Add Input‬‬

‫وﻳﻤﻜﻦ ان ﻳﻮﺻﻞ اﻟﻤﺪﺧﻞ اﻟﻰ ﻋﻨﺼﺮ او ﻣﺼﻔﻮﻓﺔ ذات اى ﺑﻌﺪ وﻳﻌﺘﻤﺪ ﺧﺮج اﻟﺪاﻟﺔ ﻋﻠﻰ ﻧﻮﻋﻴﺔ اﻟﻤﺪاﺧﻞ وﻋﻠﻰ‬ ‫ﺧﺎﺻﻴﺔ ‪ Concatenate‬وﻳﻤﻜﻦ ﺗﻘﺴﻴﻢ ﺣﺎﻻت ﺗﻨﻔﻴﺬ هﺬة اﻟﺪاﻟﺔ اﻟﻰ ﺛﻼث ﺣﺎﻻت ‪:‬‬ ‫اوﻻ ‪ :‬ﺗﻮﺻﻴﻞ ﻋﻨﺎﺻﺮذات ﻗﻴﻢ وﺣﻴﺪة اﻟﻰ ﻣﺪاﺧﻞ اﻟﺪاﻟﺔ‪.‬‬ ‫ﻓﻰ هﺬة اﻟﺤﺎﻟﺔ ﺗﺨﺮج اﻟﺪاﻟﺔ ﻣﺼﻔﻮﻓﺔ ذات ﺑﻌﺪ واﺣﺪ ﻣﻜﻮﻧﺔ ﻣﻦ اﻟﻌﻨﺎﺻﺮ اﻟﺪاﺧﻠﺔ وهﺬة اﻟﻌﻨﺎﺻﺮ ﻟﻬﺎ ﻧﻔﺲ اﻟﺘﺮﺗﻴﺐ‬ ‫ﻓﻰ اﻟﻤﺼﻔﻮﻓﺔ‪.‬‬

‫‪28‬‬

‫ﺛﺎﻧﻴﺎ ‪ :‬ﺗﻮﺻﻴﻞ ﻣﺼﻔﻮﻓﺎت ذات اﺑﻌﺎد ﻣﺨﺘﻠﻔﺔ و ﻋﻨﺎﺻﺮ اﻟﻰ اﻟﻤﺪاﺧﻞ ‪.‬‬ ‫ﻓﻰ هﺬة اﻟﺤﺎﻟﺔ ﺗﻘﻮم اﻟﺪاﻟﺔ ﺑﺘﺠﻤﻴﻊ اﻟﻤﺪﺧﻼت ﺑﺎﻟﺘﺮﺗﻴﺐ ﻟﺘﻜﻮﻳﻦ ﻣﺼﻔﻮﻓﺔ ذات ﺑﻌﺪ ﻳﺴﺎوى اآﺒﺮ ﺑﻌﺪ ﻟﻤﺼﻔﻮﻓﺎت‬ ‫اﻟﻤﺪﺧﻞ‪.‬‬

‫‪29‬‬

‫ﻻﺣﻆ ان ﺷﻜﻞ ﻣﺪﺧﻞ اﻟﻤﺼﻔﻮﻓﺔ ﻣﺨﺘﻠﻒ ﻋﻦ ﺷﻜﻞ ﻣﺪﺧﻞ اﻟﻌﻨﺼﺮ‬ ‫وﺷﻜﻞ ﻣﺪﺧﻞ اﻟﻌﻨﺼﺮ ﻋﺒﺎرة ﻋﻦ ﻣﺮﺑﻊ واﺣﺪ وﺷﻜﻞ ﻣﺪﺧﻞ اﻟﻤﺼﻔﻮﻓﺔ ﻋﺒﺎرة ﻋﻦ ﻣﺮﺑﻌﻴﻦ ﻣﺘﺠﺎورﻳﻦ‪.‬‬ ‫آﻤﺎ ﻻﺣﻆ ان اﻟﻤﺼﻔﻮﻓﺔ ذات ﺑﻌﺪ واﺣﺪ ﺗﻌﺘﺒﺮ ﻋﻨﺼﺮ ﻓﻰ ﻣﺼﻔﻮﻓﺔ ذات ﺑﻌﺪﻳﻦ‪.‬‬ ‫ﺛﺎﻟﺜﺎ ‪:‬ﺗﻮﺻﻴﻞ ﻣﺼﻔﻮﻓﺎت ذات اﺑﻌﺎد ﻣﺘﺴﺎوﻳﺔ‬ ‫وﻓﻰ هﺬة اﻟﺤﺎﻟﺔ ﻳﺘﻮﻗﻒ اﻟﺨﺮج ﻋﻠﻰ ﺧﺎﺻﻴﺔ ‪ Concatenate‬ﻣﻔﻌﻠﺔ ام ﻻ‪.‬‬ ‫وﻟﺘﻔﻌﻴﻞ ﺧﺎﺻﻴﺔ ‪ Concatenate‬ﻧﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻟﻠﻤﺎوس ﻋﻠﻰ اﻳﻘﻮﻧﺔ اﻟﺪاﻟﺔ وﻧﺨﺘﺎر ‪Concatenate‬‬ ‫ﻟﺘﻔﻌﻴﻠﻬﺎ او اﻟﻐﺎء ﺗﻔﻌﻴﻠﻬﺎ‪.‬‬

‫اذا آﺎﻧﺖ ﺧﺎﺻﻴﺔ ‪ Concatenate‬ﻣﻔﻌﻠﺔ ﻓﺎن اﻟﺨﺮج ﻋﺒﺎرة ﻋﻦ ﻣﺼﻔﻮﻓﺔ ذات ﻧﻔﺲ اﺑﻌﺎد اﻟﻤﺼﻔﻮﻓﺎت اﻟﺪاﺧﻠﺔ‬ ‫وﻋﻨﺎﺻﺮهﺎ هﻰ ﻋﻨﺎﺻﺮ اﻟﻤﺼﻔﻮﻓﺎت اﻟﺪاﺧﻠﺔ ﺑﺎﻟﺘﺮﺗﻴﺐ‪.‬‬

‫‪30‬‬

‫داﻟﺔ ‪: Array Subset‬‬ ‫ﺗﻘﻮم ﺑﺎﺧﺮاج ﺟﺰء ﻣﺤﺪد ﻣﻦ اﻟﻤﺼﻔﻮﻓﺔ اﻟﺪاﺧﻠﺔ ﻟﻬﺎ‪.‬‬ ‫وﻣﺪاﺧﻞ هﺬة اﻟﻤﺼﻔﻮﻓﺔ آﺎﻟﺘﺎﻟﻰ ‪:‬‬ ‫• ﻣﺪﺧﻞ اﻟﻤﺼﻔﻮﻓﺔ اﻟﺘﻰ ﺳﻨﺄﺧﺬ ﻣﻨﻬﺎ اﻟﺠﺰء‪.‬‬ ‫• اﻟﻤﺪﺧﻞ ‪ Index‬وهﻮ رﻗﻢ اول ﻋﻨﺼﺮ ﻓﻰ اﻟﺠﺰء اﻟﺬى ﻧﺮﻳﺪﻩ‪.‬‬ ‫• اﻟﻤﺪﺧﻞ ‪ Length‬وهﻮ ﻋﺪد ﻋﻨﺎﺻﺮ اﻟﺠﺰء اﻟﺬى ﻧﺮﻳﺪﻩ‪.‬‬

‫ﻣﺜﺎل‬

‫‪31‬‬

‫ﻳﻤﻜﻦ زﻳﺎدة ﻣﺪاﺧﻞ هﺬة اﻟﺪاﻟﺔ ﺑﻤﺪ اﻳﻘﻮﻧﺘﻬﺎ ﻻﺳﻔﻞ وذﻟﻚ ﻻﺧﺮاج ﺟﺰء ﻣﻦ ﻣﺼﻔﻮﻓﺔ ﻟﻬﺎ اآﺜﺮ ﻣﻦ ﺑﻌﺪ‬

‫داﻟﺔ ‪: Index Array‬‬ ‫ﺗﺨﺮج هﺬة اﻟﺪاﻟﺔ ﻗﻴﻤﺔ ﻋﻨﺼﺮ ﻣﻌﻴﻦ ﻣﻦ اﻟﻤﺼﻔﻮﻓﺔ‪.‬‬

‫اﻟﻤﺪﺧﻞ ﻳﻤﻜﻦ ان ﻳﻜﻮن ﻋﺒﺎرة ﻋﻦ ﻣﺼﻔﻮﻓﺔ ﻟﻬﺎ اآﺜﺮ ﻣﻦ ﺑﻌﺪ وذﻟﻚ ﺑﻤﺪ اﻳﻘﻮﻧﺔ اﻟﺪاﻟﺔ ﻟﺰﻳﺎدة ﻋﺪد اﺑﻌﺎد ﻣﺼﻔﻮﻓﺔ اﻟﺪﺧﻞ‪.‬‬

‫وهﺬا ﻣﺜﺎل ﻟﻜﻴﻔﻴﺔ ﻣﻌﺮﻓﺔ ﻗﻴﻤﺔ ﻋﻨﺼﺮ ﻓﻰ ﻣﺼﻔﻮﻓﺔ ذات ﺑﻌﺪﻳﻦ ‪:‬‬

‫‪32‬‬

‫وﻳﻤﻜﻦ ﺑﺎﺳﺘﺨﺪام هﺬة اﻟﺪاﻟﺔ اﻟﺤﺼﻮل ﻋﻠﻰ ﺻﻒ او ﻋﻤﻮد ﻣﻦ ﻣﺼﻔﻮﻓﺔ ذات ﺑﻌﺪﻳﻦ‪.‬‬ ‫ﻓﺎذا اردﻧﺎ اﻟﺤﺼﻮل ﻋﻠﻰ ﺻﻒ ﻣﻌﻴﻦ ﻧﺤﺪد رﻗﻢ اﻟﺼﻒ وﻧﺘﺮك رﻗﻢ اﻟﻌﻤﻮد ﺧﺎﻟﻴﺎ‪.‬‬

‫واذا اردﻧﺎ اﻟﺤﺼﻮل ﻋﻠﻰ ﻋﻤﻮد ﻧﺤﺪد رﻗﻢ اﻟﻌﻤﻮد وﻧﺘﺮك رﻗﻢ اﻟﺼﻒ ﺧﺎﻟﻴﺎ ‪.‬‬

‫‪33‬‬

‫داﻟﺔ ‪: Delete from Array‬‬ ‫ﺗﻘﻮم هﺬة اﻟﺪاﻟﺔ ﺑﺤﺬف ﺟﺰء ﻣﻦ اﻟﻤﺼﻔﻮﻓﺔ اﻟﺪاﺧﻠﺔ اﻟﻴﻬﺎ‪.‬‬

‫وﻣﺪاﺧﻞ هﺬة اﻟﺪاﻟﺔ ‪:‬‬ ‫• اﻟﻤﺼﻔﻮﻓﺔ اﻟﺘﻰ ﻧﺮﻳﺪ اﻟﺤﺬف ﻣﻨﻬﺎ ‪.‬‬ ‫• ﻃﻮل اﻟﺠﺰء اﻟﺬى ﻧﺮﻳﺪ ﺣﺬﻓﻪ ‪.‬‬ ‫• ﺑﺪاﻳﺔ اﻟﺠﺰء اﻟﺬى ﻧﺮﻳﺪ ﺣﺬﻓﻪ ‪.‬‬ ‫وﺗﺨﺮج اﻟﺪاﻟﺔ ‪:‬‬ ‫• اﻟﻤﺼﻔﻮﻓﺔ ﺑﻌﺪ ﺣﺬف اﻟﻌﻨﺎﺻﺮ ﻣﻨﻬﺎ‪.‬‬ ‫• اﻟﺠﺰء اﻟﺬى ﺗﻢ ﺧﺬﻓﻪ ‪.‬‬ ‫ﻣﺜﺎل‬

‫‪34‬‬

‫‪Polymorphism‬‬ ‫ﻧﻌﻠﻢ ان اﻟﺪوال اﻟﺤﺴﺎﺑﻴﺔ اﻟﺠﻤﻊ واﻟﻄﺮح و اﻟﻀﺮب و اﻟﻘﺴﻤﺔ ﺗﻘﻮم ﺑﻌﻤﻠﻴﺎت ﺣﺴﺎﺑﻴﺔ ﺑﻴﻦ ﻗﻴﻤﺘﻴﻦ ﻋﺪدﻳﺘﻴﻦ‬ ‫وهﺬة اﻟﻘﻴﻢ هﻰ ﻗﻴﻢ وﺣﻴﺪة‪.‬‬ ‫وﻟﻜﻦ هﺬة اﻟﺪول ﻳﻤﻜﻦ ان ﺗﻘﻮم ﺑﻌﻤﻠﻴﺔ ﺣﺴﺎﺑﻴﺔ ﺑﻴﻦ ﻗﻴﻤﺔ وﺣﻴﺪة و ﻣﺼﻔﻮﻓﺔ او ﺗﻘﻮم ﺑﻌﻤﻠﻴﺎت ﺣﺴﺎﺑﻴﺔ ﺑﻴﻦ‬ ‫ﻣﺼﻔﻮﻓﺘﻴﻦ‪.‬‬ ‫واﺧﺘﻼف ﻣﺪاﺧﻞ هﺬة اﻟﺪوال ﻓﻰ اﻟﺴﻌﺔ و اﻟﺘﻤﺜﻴﻞ اﻟﻌﺪدى هﻮ ﻣﺎ ﻳﻌﺮف ﺑـ‪. Polymorphism‬‬ ‫اﻣﺜﻠﺔ ‪:‬داﻟﺔ اﻟﺠﻤﻊ ﻳﻤﻜﻦ ان ﺗﻘﻮم ﺑﺎﻟﺠﻤﻊ ﺑﻴﻦ رﻗﻤﻴﻦ او ﺑﻴﻦ رﻗﻢ وﻣﺼﻔﻮﻓﺔ او ﻣﺼﻔﻮﻓﺘﻴﻦ‪.‬‬

‫ﻣﺜﺎل‬

‫‪35‬‬

‫ﻣﻠﺤﻮﻇﺔ ‪:‬‬ ‫اذا ﻗﻤﺖ ﺑﻌﻤﻞ ﻋﻤﻠﻴﺔ ﺣﺴﺎﺑﻴﺔ ﺑﻴﻦ ﻣﺼﻔﻮﻓﺘﻴﻦ ﻣﺨﺘﻠﻔﺘﻴﻦ ﻓﻰ اﻟﺴﻌﺔ )ﻋﺪد اﻟﻌﻨﺎﺻﺮ ( ﻓﺎن اﻟﻨﺎﺗﺞ ﻣﺼﻔﻮﻓﺔ‬ ‫ﺳﻌﺘﻬﺎ هﻰ ﻧﻔﺲ ﺳﻌﺔ اﺻﻐﺮهﻤﺎ‪.‬‬ ‫ﻣﺜﺎل‬

‫‪36‬‬

‫‪Compound Arithmetic Function‬‬ ‫اﻟﺪوال اﻟﺤﺴﺎﺑﻴﺔ اﻟﻤﺮآﺒﺔ‬ ‫ﺗﺘﻴﺢ هﺬة اﻟﺪاﻟﺔ ﻋﻤﻞ ﻋﻤﻠﻴﺎت ﺣﺴﺎﺑﻴﺔ او ﻣﻨﻄﻘﻴﺔ ﺑﻴﻦ اآﺜﺮ ﻣﻦ ﻗﻴﻤﺘﻴﻦ‪.‬‬ ‫ﻣﺜﺎل‬

‫وﻳﻤﻜﻦ ان ﺗﻘﻮم هﺬة اﻟﺪاﻟﺔ )‪ (Compound Arithmetic Function‬ﺑﻌﻤﻠﻴﺔ ﺟﻤﻊ) ‪ (Add‬او‬ ‫ﺿﺮب )‪ ( Multiply‬او ‪ And‬او ‪ Or‬او ‪.Xor‬‬ ‫وﻳﺘﻢ ادراﺟﻬﺎ ﻣﻦ‬ ‫‪Function Palette>>Numeric‬‬ ‫او‬ ‫‪Function Palette>>Boolean‬‬

‫‪37‬‬

38

‫وﻋﻨﺪ ادراج هﺬة اﻟﺪاﻟﺔ ﻳﻜﻮن ﻟﻬﺎ ﻣﺪﺧﻼن وﻳﻤﻜﻦ زﻳﺎدة ﻋﺪد اﻟﻤﺪاﺧﻞ ﺑﻤﺪ اﻳﻘﻮﻧﺘﻬﺎ ﻻﺳﻔﻞ ﺑﺎﻻداة‬

‫‪.Positioning‬‬

‫ﻋﻨﺪ ادراج اﻟﺪاﻟﺔ ﻓﺎﻧﻬﺎ ﺗﻜﻮن ﻣﻌﺪة ﻟﺘﺆدى ﻋﻤﻠﻴﺔ اﻟﺠﻤﻊ )‪ (Add‬او ‪ AND‬وﻟﻜﻦ ﻳﻤﻜﻦ اﺧﺘﻴﺎر وﻇﻴﻔﺔ‬ ‫اﺧﺮى )‪ Multiply‬او ‪ And‬او ‪ Or‬او ‪ .(Xor‬وذﻟﻚ ﺑﺎﻟﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻋﻠﻰ اﻟﺪاﻟﺔ و اﺧﺘﻴﺎر‬ ‫‪ Change Mode‬ﺛﻢ اﺧﺘﻴﺎر اﻟﻮﻇﻴﻔﺔ‪.‬‬

‫وﻳﻤﻜﻦ ﺗﻐﻴﻴﺮ اﻟﻮﻇﻴﻔﺔ ﺑﺎﻟﻀﻐﻂ ﺑﺎﻻداة‬

‫‪ Operating‬ﻋﻠﻰ اﻟﺪاﻟﺔ واﺧﺘﻴﺎر ‪ Change Mode‬ﺛﻢ‬

‫اﺧﺘﻴﺎر اﻟﻮﻇﻴﻔﺔ‪.‬‬

‫‪39‬‬

‫ﻳﻤﻜﻦ ﻋﻜﺲ اى ﻣﻦ اﻟﻤﺪاﺧﻞ او اﻟﻤﺨﺮج ‪.‬‬ ‫وﻋﻨﺪ ﻋﻜﺲ ﻣﺪﺧﻞ او ﻣﺨﺮج ﺗﻮﺿﻊ ﻋﻠﻴﻪ داﺋﺮة ﺻﻐﻴﺮة‪.‬‬ ‫وﻟﻌﻜﺲ ﻣﺪﺧﻞ او اﻟﻤﺨﺮج ﻧﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻟﻠﻤﺎوس ﻋﻠﻰ اﻟﻤﺪﺧﻞ او اﻟﻤﺨﺮج وﻧﺨﺘﺎر ‪. Invert‬‬

‫واﻟﻌﻜﺲ ﻓﻰ ﺣﺎﻟﺔ اﻟﺠﻤﻊ ﻳﻌﻨﻰ ﺿﺮب ﻣﺪﺧﻞ او اﻟﻤﺨﺮج ﻓﻰ اﺷﺎرة ﺳﺎﻟﺐ ﻓﺎذا آﺎن ﻗﻴﻤﺘﻪ ‪ x‬ﺳﺘﻌﻜﺲ اﻟﻰ ‪.–x‬‬ ‫وﻓﻰ ﺣﺎﻟﺔ اﻟﻀﺮب اذا آﺎن ﻣﺪﺧﻞ او اﻟﻤﺨﺮج ﺑﺎﻟﻘﻴﻤﺔ ‪ x‬وﺗﻢ ﻋﻜﺴﻪ ﺳﺘﻜﻮن ﻗﻴﻤﺘﻪ ‪.1/x‬‬ ‫اﻣﺎ ﻓﻰ ﺣﺎﻟﺔ اﻟﻌﻤﻠﻴﺎت اﻟﻤﻨﻄﻘﻴﺔ ‪ And‬او ‪ Or‬او ‪ Xor‬ﻓﺘﻌﻜﺲ ﺣﺎﻟﺔ اﻟﻤﺪﺧﻞ او اﻟﻤﺨﺮج ﺑـ ‪ Not‬ﻓﻤﺜﻼ ‪x‬‬ ‫ﻋﻜﺴﻬﺎ ‪.Not x‬‬ ‫اﻣﺜﻠﺔ‬

‫‪40‬‬

41

42

‫‪Clusters‬‬ ‫‪ Cluster‬ﻣﺜﻞ اﻟﻤﺼﻔﻮﻓﺔ ﻓﻬﻮ ﻣﺠﻤﻮﻋﺔ ﻣﻦ اﻟﻌﻨﺎﺻﺮ وﻟﻜﻦ ﻋﻜﺲ اﻟﻤﺼﻔﻮﻓﺎت هﺬة اﻟﻌﻨﺎﺻﺮ ﻳﻤﻜﻦ ان‬ ‫ﺗﻜﻮن ﻣﺨﺘﻠﻔﺔ ﻓﻰ ﻧﻮع اﻟﺒﻴﺎﻧﺎت )‪ (Data Type‬ﻓﻴﻤﻜﻦ ان ﺗﺤﺘﻮى ﻋﻠﻰ ‪Numeric Control‬‬ ‫و‪ Boolean Control‬و اﻧﻮاع اﺧﺮى‪.‬‬ ‫وآﻤﺜﺎل ﻣﺠﻤﻮﻋﺔ اﻟﺒﻴﺎﻧﺎت اﻟﺸﺨﺼﻴﺔ اﻟﺘﻰ ﺗﺤﺘﻮى ﻋﻠﻰ اﻻﺳﻢ وﺗﺎرﻳﺦ اﻟﻤﻴﻼد وﻋﻨﻮان اﻟﺴﻜﻦ و رﻗﻢ‬ ‫اﻟﺘﻠﻴﻔﻮن هﻰ ﻣﺠﻤﻮﻋﺔ ﻣﻦ اﻟﺒﻴﺎﻧﺎت اﻟﻤﺨﺘﻠﻔﺔ اﻻﻧﻮاع ﺗﻨﺪرج ﺗﺤﺖ اﺳﻢ واﺣﺪ وهﻰ اﻟﺒﻴﺎﻧﺎت اﻟﺸﺨﺼﻴﺔ‪.‬‬ ‫وﻳﻤﻜﻦ ﺗﺸﺒﻴﺔ ‪ Cluster‬ﺑﻜﺎﺑﻞ اﻟﺘﻠﻴﻔﻮن ﻓﻬﻮ ﻋﺒﺎرة ﻋﻦ آﺎﺑﻞ واﺣﺪ ﻳﻮﺟﺪ ﺑﻪ ﻋﺪة اﺳﻼك آﻞ ﺳﻠﻚ ﻳﻌﺒﺮ‬ ‫ﻋﻦ ﻋﻨﺼﺮ ﻣﻌﻴﻦ‪.‬‬ ‫و ‪ Cluster‬ﻳﻌﺒﺮ ﻋﻨﻪ ﻓﻰ ‪ Block Diagram‬ﺑـ ﺧﻂ واﺣﺪ ﺣﺘﻰ اذا آﺎن ﻳﺤﺘﻮى ﻋﻠﻰ ﻋﺪة ﻗﻴﻢ ﻻﻧﻮاع‬ ‫ﻣﺨﺘﻠﻔﺔ ﻣﻦ اﻟﺒﻴﺎﻧﺎت‪.‬‬ ‫وﺑﺬﻟﻚ ﺗﺴﻄﻴﻊ ﻧﻘﻞ ﻋﺪة ﻗﻴﻢ ﻣﻦ اﻟﺒﻴﺎﻧﺎت ﻓﻰ ﺧﻂ واﺣﺪ ﺑﺪﻻ ﻣﻦ ﻋﺪة ﺧﻄﻮط‪.‬وﺑﺎﻟﺘﺎﻟﻰ ﻟﻮ ان هﺬة اﻟﺒﻴﺎﻧﺎت‬ ‫ﺳﺘﺪﺧﻞ او ﺗﺨﺮج ﻣﻦ داﻟﺔ او ‪ SubVI‬ﺳﺘﺤﺘﺎج اﻟﻰ ﻣﺨﺮج او ﻣﺪﺧﻞ واﺣﺪ‪.‬‬ ‫وﻓﻰ ‪ Block Diagram‬ﻳﻤﻜﻦ ﺗﺠﻤﻴﻊ ﻋﺪة ﺧﻄﻮط ﻟﺒﻴﺎﻧﺎت ﻣﺨﺘﻠﻔﻪ ﻓﻰ ‪ Cluster‬وﺗﺴﻤﻰ هﺬة اﻟﻌﻤﻠﻴﺔ‬ ‫ﺑـ ‪.Bundle‬‬ ‫وﻳﻤﻜﻦ ان اﻳﻀﺎ ﻓﻚ ‪ Cluster‬اﻟﻰ ﻋﻨﺎﺻﺮﻩ ﻟﻠﺘﻌﺎﻣﻞ ﻣﻌﻬﺎ وﺗﺴﻤﻰ هﺬة اﻟﻌﻤﻠﻴﺔ ﺑـ ‪.UnBundle‬‬

‫‪43‬‬

‫و ﻟﻠـ ‪ Cluster‬ﺳﻌﺔ ﺛﺎﺑﺘﺔ وﻣﺤﺪدة ﺑﺎﻟﻌﻨﺎﺻﺮ اﻟﺘﻰ ﻓﻴﻪ‪.‬‬ ‫وﻻ ﻳﻤﻜﻦ رﺑﻂ ﻋﺪد ‪ Clusters 2‬اﻻ اذا آﺎﻧﺎ ﻟﻬﻢ ﻧﻔﺲ اﻟﻌﻨﺎﺻﺮ و ﻧﻔﺲ ﺗﺮﺗﻴﺐ ﺗﻠﻚ اﻟﻌﻨﺎﺻﺮ ﻓﻰ ‪. Cluster‬‬ ‫آﻴﻔﻴﺔ اﻧﺸﺎء ‪ Cluster Controls‬و‪: Cluster Indicators‬‬ ‫ﻣﺜﻞ اﻟﻤﺼﻔﻮﻓﺎت ﻳﺘﻢ اﻧﺸﺎء ‪ Cluster‬ﻋﻠﻰ ﺧﻄﻮﺗﻴﻦ‪:‬‬ ‫‪ -1‬ﻳﺘﻢ ادراج اﻃﺎر اﻟـ ‪ Cluster‬وهﻮ اﻟﺬى ﺳﻴﺤﺘﻮى ﻋﻨﺎﺻﺮ ‪ Cluster‬ﻣﻦ‬ ‫‪Controls Palette>>Modern>>Array, Matrix, & Cluster‬‬

‫‪ -2‬ﻳﺘﻢ ادراج ‪ Controls‬او ‪ Indicators‬داﺧﻞ اﻃﺎر ‪. Cluster‬‬

‫‪44‬‬

‫واﻟﻌﻨﺎﺻﺮ داﺧﻞ ‪ Cluster‬ﻳﺠﺐ ان ﺗﻜﻮن آﻠﻬﺎ ‪ Controls‬او آﻠﻬﺎ ‪ Indicators‬وﻟﻴﺲ ﻣﺨﺘﻠﻂ‪.‬‬ ‫ﺑﻤﺠﺮد ادراج ‪ Cluster‬داﺧﻞ ‪ Front Panel‬ﻳﻮﺿﻊ ﻟﻪ ﺗﻠﻘﺎﺋﻴﺎ ‪ Terminal‬ﻓﻰ ‪Block Diagram‬‬

‫ﻳﻤﻜﻦ ﺗﻐﻴﻴﺮ اﺑﻌﺎد ‪ Cluster‬ﺑﻮاﺳﻄﺔ اﻻداة‬

‫‪. Positioning‬‬

‫وﻟﺠﻌﻞ ﻣﺴﺎﺣﺔ اﻃﺎر ‪ Cluster‬ﻋﻠﻰ ﻗﺪر اﻟﻌﻨﺎﺻﺮ داﺧﻞ ‪ Cluster‬ﻧﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻟﻠﻤﺎوس ﻋﻠﻰ‬ ‫اﻃﺎر ‪ Cluster‬وﻧﺨﺘﺎر‬ ‫‪45‬‬

Autosize>>Size to Fit

: Block Diagram ‫ ﺛﺎﺑﺖ داﺧﻞ‬Cluster ‫اﻧﺸﺎء‬ : ‫ آﺎﻟﺘﺎﻟﻰ‬Block Diagram ‫ ﺛﺎﺑﺖ داﺧﻞ‬Cluster ‫ﻳﻤﻜﻦ اﻧﺸﺎء‬ ‫ ﻣﻦ‬Cluster Constant ‫ ادراج اﻃﺎر‬: ‫اوﻻ‬ Function Palette>>Arrays and Clusters >>Cluster Constant

46

‫ﺛﺎﻧﻴﺎ ‪ :‬ادراج ﺛﻮاﺑﺖ داﺧﻞ اﻃﺎر ‪ Cluster‬ﻣﺜﻞ )‪ Numeric Constant‬او ‪ Boolean Constant‬او‬ ‫‪.(String Constant‬‬

‫ﺗﺮﺗﻴﺐ اﻟﻌﻨﺎﺻﺮ داﺧﻞ ‪: Cluster‬‬ ‫ﻟﻠﻌﻨﺎﺻﺮ داﺧﻞ ‪ Cluster‬ﺗﺮﺗﻴﺐ وهﺬا اﻟﺘﺮﺗﻴﺐ ﻟﻴﺲ ﻣﺮﺗﺒﻄﺎ ﺑﻤﻜﺎن اﻟﻌﻨﺼﺮ داﺧﻞ اﻃﺎر ‪.Cluster‬‬ ‫وﺗﺮﺗﺐ اﻟﻌﻨﺎﺻﺮ داﺧﻞ ‪ Cluster‬وﻓﻖ ﺗﺮﺗﻴﺐ ادراﺟﻬﺎ داﺧﻞ اﻻﻃﺎر‪.‬‬ ‫ﻓﺎول ﻋﻨﺼﺮ ﺗﻢ ادراﺟﺔ ﺗﺮﺗﻴﺒﺔ رﻗﻢ ‪ 0‬وﺛﺎﻧﻰ ﻋﻨﺼﺮ ﺗﻢ ادراﺟﻪ ﺗﺮﺗﻴﺒﻪ رﻗﻢ ‪ 1‬وهﻜﺬا‪.‬‬ ‫وﻟﻠﺘﺮﺗﻴﺐ اهﻤﻴﺔ ﻓﻠﻜﻰ ﺗﺮﺑﻂ ﺑﻴﻦ ‪ Clusters 2‬ﻳﺠﺐ ان ﻳﻜﻮﻧﺎ ﻟﻬﻢ ﻧﻔﺲ اﻟﻌﻨﺎﺻﺮ وﺑﻨﻔﺲ اﻟﺘﺮﺗﻴﺐ ‪.‬‬ ‫وﻟﻤﻌﺮﻓﺔ او ﺗﻐﻴﻴﺮ ﺗﺮﺗﻴﺐ اﻟﻌﻨﺎﺻﺮ داﺧﻞ ‪ Cluster‬ﻧﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻟﻠﻤﺎوس ﻋﻠﻰ اﻃﺎر ‪Cluster‬‬ ‫وﻧﺨﺘﺎر ‪.Reorder Controls in Cluster‬‬

‫ﻳﻈﻬﺮ ارﻗﺎم ﻓﻰ ﻣﺮﺑﻌﺎت ﻣﻈﻠﻠﻪ ﺑﺎﻟﻠﻮن اﻻﺑﻴﺾ و واﺧﺮى ﻣﻈﻠﻠﺔ ﺑﺎﻟﻠﻮن اﻻﺳﻮد ‪.‬‬ ‫• اﻻرﻗﺎم اﻟﻤﻮﺟﻮدة ﻓﻰ اﻟﻤﺮﺑﻌﺎت اﻟﻤﻈﻠﻠﺔ ﺑﺎﻟﻠﻮن اﻻﺑﻴﺾ هﻰ ﺗﺮﺗﻴﺐ اﻟﻌﻨﺎﺻﺮ اﻟﺤﺎﻟﻰ‪.‬‬ ‫‪47‬‬

‫• اﻻرﻗﺎم اﻟﻤﻮﺟﻮدة ﻓﻰ اﻟﻤﺮﺑﻌﺎت اﻟﻤﻈﻠﻠﺔ ﺑﺎﻟﻠﻮن اﻻﺳﻮد هﻰ اﻟﺘﺮﺗﻴﺐ اﻟﺠﺪﻳﺪ ﻟﻠﻌﻨﺎﺻﺮ‪.‬‬ ‫وﻳﻈﻬﺮ ﻓﻰ ‪ Toolbar‬ﻣﻔﺎﺗﻴﺢ ‪:‬‬ ‫• ﻣﻔﺘﺎخ ‪ Ok‬ﻟﻠﺨﺮوج ﻣﻦ ﻋﻤﻠﻴﺔ اﻟﺘﺮﺗﻴﺐ ﺑﺎﻟﺘﺮﺗﻴﺐ اﻟﺠﺪﻳﺪ‪.‬‬ ‫• ﻣﻔﺘﺎح ‪ Revert‬ﻟﻠﻌﻮدة ﻟﻠﺘﺮﺗﻴﺐ اﻟﻘﺪﻳﻢ واﻟﻐﺎء اﻟﺘﻐﻴﺮات ﻓﻰ اﻟﺘﺮﺗﻴﺐ‪.‬‬ ‫• ﻣﺮﺑﻊ ﻻدﺧﺎل ﺗﺮﺗﻴﺐ اﻟﻌﻨﺼﺮ ‪.‬‬

‫‪48‬‬

‫اﺳﺘﺨﺪام ‪ Cluster‬ﻓﻰ ﺗﻤﺮﻳﺮ اﻟﺒﻴﺎﻧﺎت ﻣﻦ و اﻟﻰ ‪: SubVI‬‬ ‫ﻧﻌﻠﻢ ﻣﻦ اﻟﺪرس اﻟﺮاﺑﻊ ان اﻗﺼﻰ ﻋﺪد ﻟﻠـ ‪ Terminals‬ﻷى ‪ Connector Pane‬ﺧﺎﺻﺔ ﺑـ ‪ VI‬هﻮ ‪.28‬‬ ‫وﻟﻜﻦ اذا آﺎن ﻋﺪد ‪ Terminals‬آﺒﻴﺮا ﻓﻘﺪ ﻳﺆدى اﻟﻰ وﺟﻮد اﺧﻄﺎء ﻓﻰ اﻟﺘﻮﺻﻴﻞ واﻳﻀﺎ اﻟﻰ ﺑﻌﺾ ﻣﻦ اﻟﺘﻌﻘﻴﺪ‪.‬‬ ‫وﺗﺴﺘﺨﺪم ‪ Cluster‬ﻓﻰ ﺗﻘﻠﻴﻞ ﻋﺪد اﻟﻮﺻﻼت اﻟﺘﻰ ﺗﺪﺧﻞ او ﺗﺨﺮج ﻣﻦ ‪ SubVI‬ﻓﺒﻮاﺳﻄﺔ ‪Cluster‬‬ ‫ﺗﺴﺘﻄﻴﻊ ﺗﺠﻤﻴﻊ ﻋﺪد ﻣﻦ ‪ Controls‬او ‪ Indicators‬وادﺧﺎل او اﺧﺮاج ﻋﺪة ﻗﻴﻢ ﻣﻦ واﻟﻰ ‪SubVI‬‬ ‫ﺑﻮاﺳﻄﺔ ‪ Terminal‬واﺣﺪ ﻓﻘﻂ‪.‬‬

‫اهﻢ اﻟﺪوال اﻟﺨﺎﺻﺔ ﺑـ ‪: Clusters‬‬ ‫وهﺬة اﻟﺪوال ﻣﻮﺟﻮدة ﻓﻰ‬ ‫‪Function Palette>>Programming>>Cluster & Variant‬‬

‫‪49‬‬

‫داﻟﺔ ‪: Bundle‬‬ ‫ﺗﻘﻮم هﺬة اﻟﺪاﻟﺔ ﺑﺘﺠﻤﻴﻊ ﻣﺠﻤﻮﻋﺔ ﻣﻦ اﻟﻌﻨﺎﺻﺮ اﻟﻤﻨﻔﺮدة ﻓﻰ ‪ Cluster‬ﺟﺪﻳﺪ او ﺗﻐﻴﺮ ﻗﻴﻤﺔ اﺣﺪ اﻟﻌﻨﺎﺻﺮ‬ ‫اﻟﻤﻮﺟﻮدة ﻓﻰ ‪ Cluster‬ﻣﻮﺟﻮد‪.‬‬

‫وﻳﻤﻜﻦ زﻳﺎدة ﻋﺪد ﻣﺪاﺧﻞ اﻟﺪاﻟﺔ ﺑﻤﺪهﺎ ﻻﺳﻔﻞ ﺑﺎﺳﺘﺨﺪام اﻻداة‬

‫‪. Positioning‬‬

‫ﻣﺪﺧﻞ هﺬة اﻟﺪاﻟﺔ ﻋﺒﺎرة ﻋﻦ ﻣﺪﺧﻞ ﻟـ ‪ Cluster‬وﻣﺠﻤﻮﻋﺔ ﻣﺪاﺧﻞ ﻟﻌﻨﺎﺻﺮ‪.‬‬ ‫واﻟﻤﺨﺮج هﻮ ‪ Cluster‬ﺗﻢ اﻧﺸﺄﻩ او ﺗﻌﺪﻳﻞ ﻗﻴﻢ ﻓﻴﻪ‪.‬‬ ‫وﻻﻧﺸﺎء ‪ Cluster‬ﺟﺪﻳﺪ ﻣﻦ ﻣﺠﻤﻮﻋﺔ ﻣﻦ اﻟﻌﻨﺎﺻﺮ ‪ .‬ﻧﺮﺑﻂ هﺬة اﻟﻌﻨﺎﺻﺮ اﻟﻰ ﻣﺪاﺧﻞ اﻟﺪاﻟﺔ وﻓﻰ هﺬة‬ ‫اﻟﺤﺎﻟﺔ ﻻ ﻳﺴﺘﺨﺪم اﻟﻤﺪﺧﻞ اﻟﺨﺎص ﺑـ ‪ . Cluster‬وﺳﻮف ﺗﺨﺮج اﻟﺪاﻟﺔ ‪ Cluster‬ﻳﺤﺘﻮى ﻋﻠﻰ اﻟﻌﻨﺎﺻﺮ‬ ‫اﻟﺪاﺧﻠﺔ وﺗﺮﺗﻴﺐ هﺬة اﻟﻌﻨﺎﺻﺮ ﻓﻰ ‪ Cluster‬هﻰ ﻧﻔﺲ ﺗﺮﺗﻴﺐ رﺑﻄﻬﺎ ﺑﺎﻟﺪاﻟﺔ‪.‬‬ ‫ﻣﻠﺤﻮﻇﺔ ‪:‬‬ ‫ﻋﻨﺪ رﺑﻂ اﻟﻌﻨﺼﺮ ﺑﻤﺪﺧﻞ اﻟﺪاﻟﺔ ﻳﻈﻬﺮ ﻋﻨﺪ ﻣﺪﺧﻞ اﻟﺪاﻟﺔ رﻣﺰ ﻳﺪل ﻋﻠﻰ ﻧﻮع اﻟﺒﻴﺎﻧﺎت ﻟﻬﺬا اﻟﻌﻨﺼﺮ‪.‬‬

‫‪50‬‬

‫وﻟﺘﻐﻴﻴﺮ ﻗﻴﻤﺔ ﻋﻨﺼﺮ ﻓﻰ ‪ Cluster‬ﻧﻘﻮم ﺑﺘﻮﺻﻴﻞ ‪ Cluster‬ﺑـﻤﺪﺧﻞ ‪ Cluster‬ﻋﻨﺪﺋﺬ ﻳﺼﺒﺢ ﺗﻠﻘﺎﺋﻴﺎ‬ ‫ﻋﺪد ﻣﺪاﺧﻞ اﻟﻌﻨﺎﺻﺮ ﻟﻠﺪاﻟﺔ ﻳﺴﺎوى ﻋﺪد ﻋﻨﺎﺻﺮ ‪ Cluster‬وﺑﻨﻔﺲ اﻟﺘﺮﺗﻴﺐ آﻤﺎ ﺳﻴﻈﻬﺮ ﻋﻨﺪ آﻞ ﻣﺪﺧﻞ‬ ‫ﻧﻮع اﻟﺒﻴﺎﻧﺎت اﻟﺨﺎﺻﺔ ﺑﺎﻟﻌﻨﺼﺮ‪.‬‬ ‫ﺛﻢ ﻧﻘﻮم ﺑﺘﻮﺻﻴﻞ اﻟﻘﻴﻤﺔ اﻟﺠﺪﻳﺪة ﻟﻤﺪﺧﻞ اﻟﻌﻨﺼﺮ اﻟﻤﺮاد ﺗﻐﻴﻴﺮ ﻗﻴﻤﺘﻪ‪.‬‬

‫‪51‬‬

‫ﻣﻠﺤﻮﻇﺔ ‪ :‬ﻟﻮ ﺗﻢ ﺗﻮﺻﻴﻞ اﻟﻘﻴﻤﺔ اﻟﺠﺪﻳﺪة ﺑﻤﺪﺧﻞ ﻋﻨﺼﺮ اﺧﺮ وﻣﺨﺘﻠﻒ ﻓﻰ ﻧﻮع اﻟﺒﻴﺎﻧﺎت ﺳﻮف ﻳﻈﻬﺮ اﻟﺨﻂ‬ ‫ﻣﻘﻄﻮﻋﺔ ﻻﻧﻪ ﺧﻄﺄ‪.‬‬

‫‪52‬‬

‫ﻳﻤﻜﻦ ﺗﻐﻴﻴﺮ ﻗﻴﻢ اآﺜﺮ ﻣﻦ ﻋﻨﺼﺮ ﻓﻰ ‪ Cluster‬ﻓﻰ ﻧﻔﺲ اﻟﻮﻗﺖ‪.‬‬

‫داﻟﺔ ‪: Unbundle‬‬ ‫ﺗﻘﻮم هﺬة اﻟﺪاﻟﺔ ﺑﻔﻚ ‪ Cluster‬اﻟﻰ ﻋﻨﺎﺻﺮﻩ‪.‬‬

‫وﻳﻮﺟﺪ ﻟﻬﺬة اﻟﺪاﻟﺔ ﻣﺪﺧﻞ واﺣﺪ ﻳﺘﻢ ﺗﻮﺻﻴﻞ ﻟﻪ ‪ Cluster‬اﻟﺘﻰ ﻧﺮﻳﺪ ﻓﻜﻪ ﻓﻴﺼﺒﺢ ﻋﺪد ﻣﺨﺎرج اﻟﺪاﻟﺔ‬ ‫ﻳﺴﺎوى ﻋﺪد ﻋﻨﺎﺻﺮ ‪ Cluster‬وآﻞ ﻣﺨﺮج ﻳﻜﻮن ﻻﺣﺪ اﻟﻌﻨﺎﺻﺮ اﻟﻤﻮﺟﻮدة ﻓﻰ ‪ Cluster‬وﻳﻈﻬﺮ ﻋﻠﻰ‬ ‫اﻟﻤﺨﺮج ﻧﻮع ﺑﻴﺎﻧﺎت اﻟﻌﻨﺼﺮ‪.‬‬ ‫وﺗﺮﺗﻴﺐ اﻟﻌﻨﺎﺻﺮ ﻋﻠﻰ ﻣﺨﺎرج اﻟﺪاﻟﺔ هﻮ ﻧﻔﺲ ﺗﺮﺗﻴﺐ اﻟﻌﻨﺎﺻﺮ ﻓﻰ ‪.Cluster‬‬

‫وﻣﻦ اﻟﻤﻬﻢ ﻣﻌﺮﻓﺔ ﺗﺮﺗﻴﺐ اﻟﻌﻨﺎﺻﺮ‬ ‫ﻓﺘﺮﺗﻴﺐ اﻟﻌﻨﺎﺻﺮ هﻰ اﻟﻄﺮﻳﻘﺔ ﻟﻠﺘﻌﺮف ﻋﻠﻰ ﻋﻨﺼﺮ ﻣﻌﻴﻦ ﻓﻬﺬة اﻟﺪاﻟﺔ ﻻ ﺗﺘﻴﺢ اﻟﺘﻌﺮف ﻋﻠﻰ اﺳﻢ اﻟﻌﻨﺼﺮ‪.‬‬

‫‪53‬‬

‫ﻓﻴﻤﻜﻦ ان ﻳﻮﺟﺪ ﻋﻨﺼﺮﻳﻦ ﺑﻨﻔﺲ ﻧﻮع اﻟﺒﻴﺎﻧﺎت ﻓﻬﺬﻳﻦ اﻟﻌﻨﺼﺮ ﻟﻦ ﻳﻔﺮق ﺑﻴﻨﻬﻤﺎ اﻻ اﻟﺘﺮﺗﻴﺐ وﻟﻮﺣﺪث ان‬ ‫وﺻﻠﺖ ﻋﻨﺼﺮ ﻣﻜﺎن اﻻﺧﺮ ﻟﻦ ﺗﻌﻄﻰ ‪VI‬ﺧﻄﺄ ﻻﻧﻬﻢ ﻟﻬﻢ ﻧﻔﺲ ﻧﻮع اﻟﺒﻴﺎﻧﺎت وﻟﻜﻦ اﻟﻨﺘﻴﺠﺔ ﺳﺘﻜﻮن ﺧﻄﺄ ‪.‬‬

‫داﻟﺔ ‪: Bundle By Name‬‬ ‫ﻣﺜﻞ داﻟﺔ ‪ Bundle‬ﺗﻘﻮم هﺬة اﻟﺪاﻟﺔ ﺑﺘﻐﻴﺮ ﻗﻴﻤﺔ ﻋﻨﺼﺮ او اآﺜﺮ ﻓﻰ ‪ .Cluster‬وﻳﺘﻢ ﺗﺤﺪﻳﺪ اﻟﻌﻨﺎﺻﺮ ﺑﻮاﺳﻄﺔ اﻻﺳﻢ ‪.‬‬ ‫وﻻ ﺗﺴﺘﺨﺪم هﺬة اﻟﺪاﻟﺔ ﻓﻰ اﻧﺸﺎء ‪ Cluster‬ﺟﺪﻳﺪ‪.‬‬ ‫وﻓﻰ هﺬة اﻟﺪاﻟﺔ ﻳﺠﺐ ﺗﻮﺻﻴﻞ اﻟﻤﺪﺧﻞ اﻟﺨﺎص ﺑـ ‪ Cluster‬وﺗﺴﺘﻄﻴﻊ ان ﺗﺨﺘﺎر اى ﻋﻨﺼﺮ ﻓﻰ ‪Cluster‬‬ ‫ﻟﺘﻐﻴﻴﺮ ﻗﻴﻤﺘﻪ‪.‬‬

‫وﻳﻤﻜﻦ زﻳﺎدة ﻋﺪد ﻣﺪاﺧﻞ اﻟﺪاﻟﺔ ﺑﻤﺪ اﻳﻘﻮﻧﺘﻬﺎ ﻻﺳﻔﻞ ﺑﻮاﺳﻄﺔ اﻻداة‬

‫‪54‬‬

‫‪.Positioning‬‬

‫وﻻﺧﺘﻴﺎر ﻋﻨﺼﺮ ﻣﻌﻴﻦ ﻣﻦ ﻋﻨﺎﺻﺮ ‪ Cluster‬ﻟﺘﻐﻴﻴﺮ ﻗﻴﻤﺘﻪ )ﺑﻌﺪ ﺗﻮﺻﻴﻞ ‪ (Cluster‬ﻧﻀﻐﻂ ﻋﻠﻰ‬ ‫اﻟﻤﺪﺧﻞ ﺑﺎﻻداة‬

‫‪ Operating‬ﻟﺘﻈﻬﺮ ﻟﻨﺎ ﻗﺎﺋﻤﺔ ﺑﻌﻨﺎﺻﺮ ‪ Cluster‬ﻧﺨﺘﺎر ﻣﻨﻬﺎ اﻟﻌﻨﺼﺮ اﻟﺬى ﻧﺮﻳﺪﻩ‪.‬‬

‫داﻟﺔ ‪: Unbundle by Name‬‬ ‫ﺗﺴﺘﺨﺪم هﺬة اﻟﺪاﻟﺔ ﻟﻠﺤﺼﻮل ﻋﻠﻰ ﻗﻴﻤﺔ ﻋﻨﺼﺮ او اآﺜﺮ ﻣﻦ ‪ Cluster‬وﻳﺘﻢ ﺗﺤﺪﻳﺪ اﻟﻌﻨﺼﺮ ﺑﻮاﺳﻄﺔ اﺳﻢ اﻟﻌﻨﺼﺮ‪.‬‬ ‫ﻋﻨﺪ ادراج اﻟﺪاﻟﺔ ﻗﻢ ﺑﺘﻮﺻﻴﻞ ‪ Cluster‬اﻟﻰ ﻣﺪﺧﻞ اﻟﺪاﻟﺔ ﻓﻴﻈﻬﺮ اﺳﻢ اول ﻋﻨﺼﺮ ﻓﻰ ‪ Cluster‬ﻋﻠﻰ ﻣﺨﺮج اﻟﺪاﻟﺔ‪.‬‬ ‫ﻻﺧﺘﻴﺎر ﻋﻨﺼﺮ اﺧﺮ اﺿﻐﻂ ﻋﻠﻰ اﻟﻌﻨﺼﺮ ﺑﻮاﺳﻄﺔ اﻻداة‬ ‫ﻣﻦ ﻗﺎﺋﻤﺔ اﻟﻌﻨﺎﺻﺮ‪.‬‬

‫‪55‬‬

‫‪ Operating‬واﺧﺘﺮ اﻟﻌﻨﺼﺮ اﻟﺬى ﺗﺮﻳﺪﻩ‬

‫ﻟﺰﻳﺎدة ﻋﺪد اﻟﻤﺨﺎرج ﻧﻤﺪ اﻳﻘﻮﻧﺔ اﻟﺪاﻟﺔ ﻻﺳﻔﻞ ﺑﻮاﺳﻄﺔ اﻻداة‬

‫‪.Positioning‬‬

‫اﻟﺘﺤﻮﻳﻞ ﺑﻴﻦ اﻟﻤﺼﻔﻮﻓﺎت و ‪: Clusters‬‬ ‫ﻓﻰ ﺑﻌﺾ اﻻﺣﻴﺎن ﺗﺤﺘﺎج ﻟﻠﺘﺤﻮﻳﻞ ﺑﻴﻦ اﻟﻤﺼﻔﻮﻓﺔ اﻟﻰ ‪ Cluster‬واﻟﻌﻜﺲ‪.‬‬ ‫وﻳﻮﺟﺪ داﻟﺘﺎن ﻟﺘﺤﻮﻳﻞ ﺑﻴﻦ اﻟﻤﺼﻔﻮﻓﺎت و ‪ Clusters‬وﻳﻤﻜﻦ ادراﺟﻬﻤﺎ ﻣﻦ‬ ‫‪Function Palette>>Programming>>Cluster & Variant‬‬

‫‪Function Palette>>Programming>>Arrey‬‬

‫‪56‬‬

‫داﻟﺔ ‪: Cluster to Array‬‬ ‫ﺗﻘﻮم هﺬة اﻟﺪاﻟﺔ ﺑﺎﻟﺘﺤﻮﻳﻞ ﻣﻦ ‪ Cluster‬ﺑﻪ ﻋﺪد ﻣﻌﻴﻦ ﻣﻦ اﻟﻌﻨﺎﺻﺮ ﻟﻬﺎ ﻧﻔﺲ ﻧﻮع اﻟﺒﻴﺎﻧﺎت اﻟﻰ ﻣﺼﻔﻮﻓﺔ‬ ‫ﺑﻬﺎ ﻧﻔﺲ اﻟﻌﺪد ﻣﻦ اﻟﻌﻨﺎﺻﺮ ﻟﻨﻔﺲ ﻧﻮع اﻟﺒﻴﺎﻧﺎت‪.‬‬

‫وﺳﻴﻜﻮن ﺗﺮﺗﻴﺐ اﻟﻌﻨﺎﺻﺮ ﻓﻰ اﻟﻤﺼﻔﻮﻓﺔ هﻮ ﻧﻔﺲ ﺗﺮﺗﻴﺐ اﻟﻌﻨﺎﺻﺮ ﻓﻰ ‪.Cluster‬‬

‫‪57‬‬

‫ﻻﺣﻆ اﻧﻪ ﻟﻜﻠﻰ ﺗﺴﺘﺨﺪم هﺬة اﻟﺪاﻟﺔ ﻳﺠﺐ ان ﺗﻜﻮن آﻞ اﻟﻌﻨﺎﺻﺮ ﻓﻰ ‪ Cluster‬ﻟﻬﺎ ﻧﻔﺲ ﻧﻮع اﻟﺒﻴﺎﻧﺎت‪.‬‬ ‫ﻻﺣﻆ اﻳﻀﺎ ان اذا آﺎن اﺣﺪ اﻟﻌﻨﺎﺻﺮ داﺧﻞ ‪ Cluster‬ﻋﺒﺎرة ﻋﻦ ﻣﺼﻔﻮﻓﺔ ﻓﻠﻦ ﺗﺴﻄﻴﻊ ان ﺗﺴﺘﺨﺪم هﺬة‬ ‫اﻟﺪاﻟﺔ ﻻن ‪ LabVIEW‬ﻻ ﻳﺴﻤﻊ ﺑﻮﺟﻮد ﻣﺼﻔﻮﻓﺔ داﺧﻞ ﻣﺼﻔﻮﻓﺔ‪.‬‬ ‫داﻟﺔ ‪: Array to Cluster‬‬ ‫ﺗﻘﻮم هﺬة اﻟﺪاﻟﺔ ﺑﺎﻟﺘﺤﻮﻳﻞ ﻣﻦ ﻣﺼﻔﻮﻓﺔ اﺣﺎدﻳﺔ ﺗﺤﺘﻮى ﻋﻠﻰ ﻋﺪد ﻣﻌﻴﻦ ﻣﻦ اﻟﻌﻨﺎﺻﺮ اﻟﻰ ‪ Cluster‬ﺑﻪ‬ ‫ﻧﻔﺲ اﻟﻌﺪد ﻣﻦ اﻟﻌﻨﺎﺻﺮ ﺑﻨﻔﺲ ﻧﻮع اﻟﺒﻴﺎﻧﺎت‪.‬‬

‫وﻋﻨﺪ اﺳﺘﺨﺪام هﺬة اﻟﺪاﻟﺔ ﻳﺠﺐ ان ﺗﺤﺪد ﻋﺪد اﻟﻌﻨﺎﺻﺮ ﻓﻰ ‪ Cluster‬وذﻟﻚ ﻻن ‪ LabVIEW‬ﻻ ﻳﻘﻮم‬ ‫ﺑﺘﺤﺪﻳﺪ ﺣﺠﻢ ‪ Cluster‬ﺗﻠﻘﺎﺋﻴﺎ ﻣﺜﻞ اﻟﻤﺼﻔﻮﻓﺎت‪.‬‬ ‫وﻟﺘﺤﺪﻳﺪ ﻋﺪد اﻟﻌﻨﺎﺻﺮ ﻧﻀﻐﻂ ﺑﺎﻟﺰر اﻻﻳﻤﻦ ﻟﻠﻤﺎوس ﻋﻠﻰ اﻳﻘﻮﻧﺔ اﻟﺪاﻟﺔ ﻓﻨﺨﺘﺎر ‪ Cluster Size‬ﻓﺘﻈﻬﺮ‬ ‫ﻟﻨﺎ ﻧﺎﻓﺬة ﻧﺤﺪد ﻓﻴﻬﺎ ﻋﺪد ﻋﻨﺎﺻﺮ ‪Cluster‬‬

‫‪58‬‬

‫ﻣﺎذا ﻳﺤﺪث اذا ﻟﻢ ﻧﺤﺪد ﻋﺪد اﻟﻌﻨﺎﺻﺮ ﻓﻰ ‪Cluster‬؟‬ ‫اﻟﻘﻴﻤﺔ اﻻﺑﺘﺪاﺋﻴﺔ ﻟﻌﺪد اﻟﻌﻨﺎﺻﺮ ﻓﻰ ‪Cluster‬هﻰ ‪. 9‬‬ ‫ﻓﺎذا آﺎن ﻋﺪد اﻟﻌﻨﺎﺻﺮ ﻓﻰ اﻟﻤﺼﻔﻮﻓﺔ اﻗﻞ ﻣﻦ ‪ 9‬ﻓﺴﻮف ﻳﺤﺘﻮى ‪ Cluster‬ﻋﻠﻰ ﻋﻨﺎﺻﺮ اﻟﻤﺼﻔﻮﻓﺔ‬ ‫ﺑﺎﻻﺿﺎﻓﺔ ﻋﻠﻰ ﻋﻨﺎﺻﺮ ﻣﻜﻤﻠﺔ ﻗﻴﻤﺘﻬﺎ اﻟﻘﻴﻤﺔ اﻻﺑﺘﺪاﺋﻴﺔ ﻟﻨﻮع اﻟﺒﻴﺎﻧﺎت ) ﻣﺜﺎل ‪ 0‬اذا آﺎن ﻧﻮع اﻟﺒﻴﺎﻧﺎت‬ ‫‪ False ، Numeric‬اذا آﺎن ﻧﻮع اﻟﺒﻴﺎﻧﺎت ‪ ( Boolean‬ﺣﺘﻰ ﻳﺼﺒﺢ اﻟﻌﺪد اﻟﻜﻠﻰ ﻓﻰ ‪Cluster‬‬ ‫ﻳﺴﺎوى ‪ 9‬ﻋﻨﺎﺻﺮ‪.‬‬

‫‪59‬‬

‫واذا آﺎن ﻋﺪد ﻋﻨﺎﺻﺮ اﻟﻤﺼﻔﻮﻓﺔ اآﺒﺮ ﻣﻦ ‪ 9‬ﻓﺴﻮف ﻳﺤﺘﻮى ‪ Cluster‬ﻋﻠﻰ اول ‪ 9‬ﻋﻨﺎﺻﺮ ﻣﻦ‬ ‫ﻋﻨﺎﺻﺮ اﻟﻤﺼﻔﻮﻓﺔ ﻓﻘﻂ ‪.‬‬ ‫ﻣﺜﺎل ﻋﻠﻰ اهﻤﻴﺔ اﻟﺘﺤﻮﻳﻞ ﺑﻴﻦ ‪ Cluster‬و ‪: Array‬‬ ‫هﺪف اﻟﻤﺜﺎل ﻋﻜﺲ ﺗﺮﺗﻴﺐ اﻟﻌﻨﺎﺻﺮ ﻓﻰ ‪ Cluster‬وﺣﻴﺚ ان ﻻ ﺗﻮﺟﺪ داﻟﺔ ﺗﻘﻮم ﺑﻬﺬة اﻟﻮﻇﻴﻔﺔ ﻣﻊ‬ ‫‪ Cluster‬ﺳﻨﻘﻮم ﺑﺘﺤﻮﻳﻞ ‪ Cluster‬اﻟﻰ ‪ Array‬وﻧﺴﺘﺨﺪم اﻟﺪاﻟﺔ ‪ Reverse 1D Array‬ﻟﻌﻜﺲ‬ ‫ﺗﺮﺗﻴﺐ اﻟﻌﻨﺎﺻﺮ ﺛﻢ ﻧﺤﻮل اﻟﻤﺼﻔﻮﻓﺔ اﻟﻨﺎﺗﺠﺔ اﻟﻰ ‪.Cluster‬‬

‫اﺳﺘﺨﺪام دوال اﻟﻤﻘﺎرﻧﺔ ﻣﻊ اﻟﻤﺼﻔﻮﻓﺎت و ‪: Clusters‬‬ ‫ﻳﻤﻜﻦ اﺳﺘﺨﺪام دوال اﻟﻤﻘﺎرﻧﺔ ﻟﻠﻤﻘﺎرﻧﺔ ﺑﻴﻦ ﻣﺼﻔﻮﻓﺘﻴﻦ او ‪Clusters 2‬‬

‫‪60‬‬

‫وهﻨﺎك ﻧﻤﻄﻴﻦ ﻟﻠﻤﻘﺎرﻧﺔ ﺑﻴﻦ اﻟﻤﺼﻔﻮﻓﺎت و ‪ Clusters‬هﻤﺎ ‪ Compare Elements‬و ‪Compare‬‬ ‫‪.Aggregates‬‬ ‫وﻻﺧﺘﻴﺎر اﻟﻨﻤﻂ ﻧﻀﻐﻂ ﻋﻠﻰ اﻟﺰر اﻻﻳﻤﻦ ﻟﻠﻤﺎوس ﻋﻠﻰ داﻟﺔ اﻟﻤﻘﺎرﻧﺔ وﻧﺨﺘﺎر ‪Comparison Mode‬‬ ‫ﺛﻢ اﻟﻨﻤﻂ اﻟﺬى ﻧﺮﻳﺪﻩ‪.‬‬

‫‪61‬‬

‫وﻓﻰ ﻧﻤﻂ ‪ Compare Aggregates‬ﺗﻘﻮم داﻟﺔ اﻟﻤﻘﺎرﻧﺔ ﺑﻤﻘﺎرﻧﺔ آﻞ ﻋﻨﺼﺮ ﻣﻊ اﻟﺬى ﻳﻘﺎﺑﻠﻪ اﻟﺬى‬ ‫ﻳﻘﺎﺑﻠﻪ واذا آﺎﻧﺖ آﻞ اﻟﻤﻘﺎرﻧﺎت ﻧﺘﻴﺠﺘﻬﺎ ‪ True‬ﺗﺨﺮج اﻟﺪاﻟﺔ اﻟﻘﻴﻤﺔ ‪ True‬واذا ﻟﻢ ﺗﻜﻦ آﻞ اﻟﻤﻘﺎرﻧﺎت‬ ‫ﻗﻴﻤﺘﻬﺎ ‪ True‬ﺗﺨﺮج اﻟﺪاﻟﺔ اﻟﻘﻴﻤﺔ ‪ .False‬ان اﻟﺪاﻟﺔ ﻓﻰ هﺬا اﻟﻨﻤﻂ ﺗﺨﺮج ﻗﻴﻤﺔ وﺣﻴﺪة ‪ True‬او‬ ‫‪.False‬‬

‫وﻓﻰ ﻧﻤﻂ ‪ Compare Elements‬ﺗﻘﻮم داﻟﺔ اﻟﻤﻘﺎرﻧﺔ ﺑﻤﻘﺎرﻧﺔ آﻞ ﻋﻨﺼﺮ ﻣﻊ اﻟﺬى ﻳﻘﺎﺑﻠﻪ وﺗﺨﺮج‬ ‫ﻧﺘﺎﺋﺞ اﻟﻤﻘﺎرﻧﺎت آﻠﻬﺎ ﻓﻰ ﻣﺼﻔﻮﻓﺔ او ‪ Cluster‬ﺑﻨﻔﺲ ﺗﺮﺗﻴﺐ اﻟﻌﻨﺎﺻﺮ‪.‬‬

‫‪62‬‬

63

‫‪ Error Clusters‬ودوال ‪Error-Handling‬‬ ‫‪ Error Cluster‬وهﻮ ‪ Cluster‬ﺧﺎص ﻟﺘﺨﺰﻳﻦ و ﺗﻤﺮﻳﺮ ﻣﻌﻠﻮﻣﺎت ﻋﻦ اﻻﺧﻄﺎء اﻟﺘﻰ ﺗﺤﺪث اﺛﻨﺎء‬ ‫ﺗﻨﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺞ‪.‬‬ ‫وﻳﻤﻜﻦ ادراج هﺬا ‪ Cluster‬ﻋﻠﻰ هﻴﺌﺔ ‪ Error-In Cluster‬او ‪ Error-Out Cluster‬ﻣﻦ‪:‬‬ ‫‪Controls Palette>>Modern>>Array , Matrix & Cluster‬‬

‫وﻳﺘﻜﻮن ‪ Error Cluster‬ﻣﻦ ﺛﻼث ﻋﻨﺎﺻﺮ‪:‬‬ ‫‪ : Status -1‬وهﻮ ﻣﻦ اﻟﻨﻮع ‪ Boolean‬وﻗﻴﻤﺘﻪ ﺗﻜﻮن ‪ True‬ﻟﻮ ان هﻨﺎك ﺧﻄﺄ ‪ .‬وﺗﻜﻮن ‪ False‬ﻟﻮ‬ ‫اﻧﻪ ﻟﻴﺲ هﻨﺎك ﺧﻄﺄ ‪.‬‬ ‫‪: Code -2‬وﻳﺤﻤﻞ رﻗﻢ ﺻﺤﻴﺢ ﻣﻦ اﻟﻨﻮع ‪- signed integer) I32‬رﻗﻢ ﺻﺤﻴﺢ ﻳﻤﻜﻦ ان ﻳﻜﻮن ﻣﻮﺟﺒﺎ او‬ ‫ﺳﺎﻟﺒﺎ( وهﺬا اﻟﻌﻨﺼﺮ ﻗﻴﻤﺘﻪ ﺗﺤﺪد اﻟﺨﻄﺄ اﻟﺬى ﺣﺪث‪.‬‬

‫‪64‬‬

‫ﻓﺎذا آﺎﻧﺖ ﻗﻴﻤﺘﻪ ‪:‬‬ ‫ﻣﻮﺟﺐ ‪ :‬رﻗﻢ اﻟﺨﻄﺄ ﻓﻠﻜﻞ ﺧﻄﺄ رﻗﻢ آﻮدى ﻣﻌﻴﻦ‪.‬‬ ‫ﺳﺎﻟﺐ ‪ :‬رﻗﻢ اﻟﺘﺤﺬﻳﺮ ﻓﻠﻜﻞ ﺗﺤﺬﻳﺮ رﻗﻢ آﻮدى ﻣﻌﻴﻦ‪.‬‬ ‫ﺻﻔﺮ‪ :‬ﻟﻢ ﻳﺤﺪث ﺧﻄﺄ ‪.‬‬ ‫‪ :Source -3‬ﻧﺺ ﻳﺤﺘﻮى ﻋﻠﻰ وﺻﻒ ﻟﻤﺼﺪر اﻟﺨﻄﺄ ﺳﻮاء آﺎن داﻟﺔ او ‪.SubVI‬‬

‫ﻳﺤﺪث اﻟﺨﻄﺄ ﻏﺎﻟﺒﺎ ﻋﻨﺪﻣﺎ ﻻ ﺗﺴﺘﻄﻴﻊ اﻟﺪاﻟﺔ او ‪ SubVI‬ﺗﻜﻤﻠﺔ ﻣﻬﻤﺘﻬﺎ ﺑﺴﺒﺐ ﻋﺪم ﺗﻮﻓﺮ ﻣﻌﻠﻮﻣﺎت اﺳﺎﺳﻴﺔ‬ ‫ﻟﺘﻜﻤﻠﻪ ﻣﻬﻤﺘﻬﺎ او ان اى ﻣﻦ ﺗﻠﻚ اﻟﻤﻌﻠﻮﻣﺎت اﻟﻤﻬﻤﺔ ﻏﻴﺮ ﺻﺎﻟﺤﺔ‪.‬‬ ‫وﻳﺴﺘﺨﺪم هﺬا ‪ Cluster‬ﻋﺎدة ﻓﻰ آﺜﻴﺮ ﻣﻦ اﻟﺪوال و ‪ SubVI‬آﻤﺪﺧﻞ او ﻣﺨﺮج‪.‬‬

‫‪65‬‬

‫آﻴﻒ ﺗﺘﻔﺎﻋﻞ ‪ SubVIs‬و اﻟﺪوال ﻣﻊ اﻻﺧﻄﺎء ‪:‬‬ ‫اذا ﺣﺪث ﺧﻄﺄ داﺧﻞ داﻟﺔ او ‪ SubVI‬ﻓﺎﻧﻬﺎ ﺗﺨﺮج ﻣﻌﻠﻮﻣﺎت اﻟﺨﻄﺄ ﻓﻰ ‪ error out cluster‬ﺣﺘﻰ‬ ‫ﺗﻜﻮن هﺬة اﻟﻤﻌﻠﻮﻣﺎت ﺟﺎهﺰة ﻟﻠـ ‪ SubVI‬واﻟﺪوال اﻟﺘﻰ ﺗﻠﻴﻬﺎ‪.‬‬ ‫اذا اﺳﺘﻘﺒﻠﺖ ‪ SubVI‬او داﻟﺔ ﻋﻠﻰ ﻣﺪﺧﻠﻬﺎ ‪ error in‬ﻳﺤﺘﻮى ﻋﻠﻰ ﺧﻄﺄ ﻓﺎﻧﻬﺎ ﻻ ﺗﻘﻮم ﺑﺎى ﻋﻤﻞ اﻻ ﺑﻌﺪ‬ ‫ازاﻟﺔ ﺳﺒﺐ اﻟﺨﻄﺄ‪.‬واذا ﻟﻢ ﻳﺘﻢ ازاﻟﺔ ﺳﺒﺐ اﻟﺨﻄﺄ ﺗﻘﻮم ‪ VI‬ﺑﺘﻤﺮﻳﺮ ‪ error in‬اﻟﻰ ‪ error out‬ﻟﻴﻜﻮن‬ ‫ﺟﺎهﺰا ﻟﻠﺪوال و ‪ SubVIs‬اﻟﺘﻰ ﺗﻠﻴﻬﺎ‪.‬‬

‫اﻧﺘﺸﺎر ﻣﻌﻠﻮﻣﺎت اﻟﺨﻄﺄ ﻋﻦ ﻃﺮﻳﻖ ﺗﺪﻓﻖ اﻟﺒﻴﺎﻧﺎت ‪:‬‬ ‫ﻋﻨﺪ ﺗﺼﻤﻴﻢ اﻟﺒﺮﻧﺎﻣﺞ ﻳﻔﻀﻞ رﺑﻂ ﻣﺪاﺧﻞ وﻣﺨﺮاج ‪ Error Clusters‬ﻟﻠﺪوال و ‪ SubVI‬ﺣﺘﻰ ﻳﺘﻢ ﻧﺸﺮ‬ ‫‪ Error Cluster‬ﻋﻦ ﻃﺮﻳﻖ ﺗﺪﻓﻖ اﻟﺒﻴﺎﻧﺎت ﻓﺒﺬﻟﻚ اﻟﻤﻌﻠﻮﻣﺎت ﻋﻦ اﻟﺨﻄﺄ اﻟﺬى ﻳﺤﺪث ﺗﻜﻮن ﻣﺘﺎﺣﺔ ﻟﻠﺪاﻟﺔ‬ ‫او ‪ SubVI‬اﻟﺘﻰ ﺳﺘﻨﻔﺬ‪.‬‬

‫‪: Error Case Structure‬‬ ‫ﻋﻨﺪ ﺗﻮﺻﻴﻞ ‪ Error Cluster‬ﺑﺎﻟﻤﺪﺧﻞ ‪ Case Selector‬ﻟـ ‪ Case Structure‬ﻓﺎﻧﻪ ﻳﺼﺒﺢ ﻟﻠـ‬ ‫‪ Case Structure‬ﺣﺎﻟﺘﻴﻦ ‪:‬‬

‫‪66‬‬

‫• اﻟﺤﺎﻟﺔ اﻻوﻟﻰ ‪) Error‬ﻟﻮن اﻃﺎرهﺎ اﺣﻤﺮ ( وهﻰ اﻟﺤﺎﻟﺔ اﻟﺘﻰ ﺳﺘﻨﻔﺬ اﺛﻨﺎء ﺗﻨﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺞ اذا آﺎن‬ ‫‪ Error In Cluster‬ﻳﺤﺘﻮى ﻋﻠﻰ ﺧﻄﺄ )‪.(Status=True‬‬ ‫• اﻟﺤﺎﻟﺔ اﻟﺜﺎﻧﻴﺔ ‪) No Error‬ﻟﻮن اﻃﺎرهﺎ اﺧﻀﺮ ( وهﻰ اﻟﺤﺎﻟﺔ اﻟﺘﻰ ﺳﺘﻨﻔﺬ اﺛﻨﺎء ﺗﻨﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺞ اذا‬ ‫آﺎن ‪ Error In Cluster‬ﻻ ﻳﺤﺘﻮى ﻋﻠﻰ ﺧﻄﺄ )‪.(Status=False‬‬ ‫وﻏﺎﻟﺒﺎ ﻋﻨﺪ ﺗﺼﻤﻴﻢ ‪ SubVI‬ﻳﻮﺿﻊ آﻮد ‪ SubVI‬داﺧﻞ اﻟﺤﺎﻟﺔ ‪. No Error‬ﻓﻬﻰ ﺳﺘﻨﻔﺬ ﻣﻬﻤﺘﻬﺎ اذا ﻟﻢ‬ ‫ﻳﺄﺗﻰ ﻟﻬﺎ ﺧﻄﺄ ﻣﻦ اﻟﺪوال او ‪ SubVIs‬اﻟﺘﻰ ﻗﺒﻠﻬﺎ‪.‬‬

‫وﻓﻰ اﻟﺤﺎﻟﺔ ‪ Error‬ﺳﻮف ﺗﻘﻮم ﺑﺘﻤﺮﻳﺮ ‪ Error Cluster‬اﻟﻰ ﺧﺎرﺟﻬﺎ ﻟﺘﻨﻘﻞ اﻟﻤﻌﻠﻮﻣﺎت ﻋﻦ اﻟﺨﻄﺄ اﻟﻰ‬ ‫اﻟﺪوال و‪ SubVIs‬اﻟﺘﻰ ﺑﻌﺪهﺎ‪.‬‬ ‫‪67‬‬

: Error Clusters ‫دﻣﺞ‬ . ‫ ﻳﻤﻜﻦ ﺟﻤﻌﻬﻢ ﺟﻤﻴﻌﺎ ﻓﻰ ﻣﺴﺎر واﺣﺪ‬Error Cluster ‫اذا آﺎن هﻨﺎك اآﺜﺮ ﻣﻦ ﻣﺼﺪر او ﻣﺴﺎر ﻟﻠـ‬ .Error Clusters ‫ ﻟﺪﻣﺞ اآﺜﺮ‬Merge Errors.vi ‫وﺗﺴﺘﺨﺪم‬

‫وﻳﺘﻢ ادراﺟﻬﺎ ﻣﻦ‬ Function Palette >>Dialog & User Interface

68

‫وﻣﺪاﺧﻞ هﺬة ‪ VI‬ﺛﻼث ﻣﺪاﺧﻞ ‪:‬‬ ‫‪ : Error In1‬ﻣﺪﺧﻞ ﻟـ ‪ Error Cluster‬اﻻآﺜﺮ اهﻤﻴﺔ‪.‬‬ ‫‪ : Error In 2‬ﻣﺪﺧﻞ ﻟـ ‪ Error Cluster‬واهﻤﻴﺔ هﺬا اﻟﻤﺪﺧﻞ ﺑﻌﺪ اهﻤﻴﺔ ‪Error In1‬‬ ‫‪ : Error In3‬ﻣﺪﺧﻞ ﻟـ ‪ Error Cluster‬واهﻤﻴﺔ هﺬا اﻟﻤﺪﺧﻞ ﺑﻌﺪ اهﻤﻴﺔ ‪.Error In2‬‬ ‫‪ : Error Array in‬ﻣﺪﺧﻞ ﻟﻤﺼﻔﻮﻓﺔ ﻣﻦ ‪ Error Clusters‬واهﻤﻴﺘﻬﺎ ﺗﺄﺗﻰ ﺑﻌﺪ اهﻤﻴﺔ اﻟﻤﺪاﺧﻞ اﻟﺜﻼث‪.‬‬ ‫وﺗﺨﺮج هﺬة ‪ Error Cluster VI‬وﺣﻴﺪ ‪ .‬ﻓﺎذا آﺎن اﺣﺪ اﻟﻤﺪاﺧﻞ ﻳﺤﺘﻮى ﻋﻠﻰ ﺧﻄﺄ )‪( Status=True‬‬ ‫ﺗﺨﺮج اﻟﺪاﻟﺔ ‪ Error Cluster‬ﻟﻬﺬا اﻟﻤﺪﺧﻞ ‪.‬‬ ‫وﻟﻮ آﺎن هﻨﺎك اآﺜﺮ ﻣﻦ ﻣﺪﺧﻞ ﻳﺤﺘﻮى ﻋﻠﻰ ﺧﻄﺄ ﺗﺨﺮج اﻟﺪاﻟﺔ ‪ Error Cluster‬ﻟﻠﻤﺪﺧﻞ اآﺜﺮ اهﻤﻴﺔ‪.‬‬ ‫ﻣﺜﺎل‪ :‬ﻟﻮ ان ‪ Error In2‬و‪ Error In 3‬ﻳﺤﺘﻮﻳﺎن ﻋﻠﻰ اﺧﻄﺎء )‪ Status =True‬ﻓﻰ آﻼهﻤﺎ( ﺗﺨﺮج‬ ‫اﻟﺪاﻟﺔ ‪ Error In 2‬ﻻﻧﻪ اآﺜﺮ اهﻤﻴﺔ‪.‬‬ ‫واذا ﻟﻢ ﻳﻜﻦ هﻨﺎك اﺧﻄﺄ ﻓﻰ اﻟﻤﺪاﺧﻞ ﺗﺒﺤﺚ اﻟﺪاﻟﺔ ﻋﻦ اﻟﺘﺤﺬﻳﺮات ﻋﻠﻰ اﻟﻤﺪاﺧﻞ وﺗﺨﺮج اآﺜﺮ اﻟﺘﺤﺬﻳﺮات‬ ‫اهﻤﻴﺔ ان وﺟﺪت‪.‬‬ ‫واذا ﻟﻢ هﻨﺎك اى ﺧﻄﺄ او ﺗﺤﺬﻳﺮ ﺗﺨﺮج اﻟﺪاﻟﺔ ‪ Error Cluster‬ﻻ ﻳﺤﺘﻮى ﻋﻠﻰ اﺧﻄﺎء )‪(No Error‬‬ ‫آﻴﻔﻴﺔ ﺗﻜﻮﻳﻦ ‪ Error‬داﺧﻞ ‪: SubVI‬‬ ‫آﻴﻒ ﻳﻤﻜﻦ ﺟﻌﻞ ‪ SubVI‬اذا ﻟﻢ ﺗﺴﺘﻄﻊ اآﻤﺎل ﻣﻬﻤﺘﻬﺎ ﻻى ﺳﺒﺐ ان ﺗﻜﻮن ﺧﻄﺄ وﺗﺨﺮﺟﻪ‪.‬‬ ‫ﻣﺜﺎل ‪ SubVI :‬ﺗﻘﻮم ﺑﺤﺴﺎ ب اﻟﺠﺬر اﻟﺘﺮﺑﻴﻌﻰ ﻟﻼﻋﺪاد ﻓﺎذا آﺎن اﻟﺪﺧﻞ ﻋﺪد اآﺒﺮ او ﻳﺴﺎوى اﻟﺼﻔﺮ ﻓﺎﻧﻬﺎ‬ ‫ﺗﺤﺴﺐ اﻟﺠﺬر اﻟﺘﺮﺑﻴﻌﻰ و اذا آﺎن اﻟﺪﺧﻞ ﻋﺪد ﺳﺎﻟﺐ ﻓﺎن ‪ SubVI‬ﺗﻘﻮم ﺑﺘﻜﻮﻳﻦ ﺧﻄﺄ ﻻن اﻟﻌﺪد ﺳﺎﻟﺐ‬ ‫وﺗﻘﻮم ﺑﺎﺧﺮاج هﺬا اﻟﺨﻄﺄ ﻓﻰ ‪.Error Cluster‬‬ ‫ﻟﻌﻤﻞ ذﻟﻚ ﻧﺴﺘﺨﺪم اﻟﺪاﻟﺔ ‪Error Cluster from Error Code‬‬

‫‪69‬‬

‫ﺗﻘﻮم هﺬة ‪ VI‬ﺑﺘﺤﻮﻳﻞ اﻟﺮﻗﻢ اﻟﻜﻮدى ﻟﻠﺨﻄﺄ اﻟﻰ ‪. Error Cluster‬‬ ‫وﻣﺪاﺧﻞ هﺬة ‪:VI‬‬ ‫• ‪ : Error Code‬اﻟﺮﻗﻢ اﻟﻜﻮدى ﻟﻠﺨﻄﺄ ‪.‬‬ ‫• ‪ : Error Message‬وﺻﻒ ﻟﻠﺨﻄﺄ هﺬا اﻟﻮﺻﻒ ﻳﻈﻬﺮ ﻋﻨﺪ اﺳﺘﺨﺪام ‪Simple Error Handler‬‬ ‫)ﺳﻴﺄﺗﻰ ﺷﺮﺣﻪ ﻓﻰ اﻟﺠﺰء اﻟﻘﺎدم( واذا ﻟﻢ ﻳﻮﺻﻞ هﺬة اﻟﻤﺪﺧﻞ ﻓﺎن ‪ LabVIEW‬ﻳﻈﻬﺮ اﻟﻮﺻﻒ اﻟﺘﻘﻠﻴﺪى‬ ‫اﻟﺨﺎص ﺑـ ‪.Error Code‬‬ ‫• ‪ : Error in‬ﻣﺪﺧﻞ ‪ Error Cluster‬اﻟﺬى ﻳﺤﺘﻮى ﻋﻠﻰ اﻟﻤﻌﻠﻮﻣﺎت ﻋﻦ اى ﺧﻄﺄ ﺣﺪث ﻗﺒﻞ ﻋﻤﻞ ‪. VI‬‬ ‫وﻣﺨﺮج هﺬة ‪:VI‬‬ ‫• ‪ Error Cluster : Error Out‬ﻳﺤﺘﻮى ﻋﻠﻰ ﻣﻌﻠﻮﻣﺎت ﻋﻦ اﻟﺨﻄﺄ اﻟﺨﺎص ﺑﺎﻟـ ‪Error‬‬ ‫‪ Code‬وذﻟﻚ ﻓﻰ ﺣﺎﻟﺔ اذا آﺎن ‪ Error In‬ﻻﻳﺤﺘﻮى ﻋﻠﻰ ﺧﻄﺄ اﻣﺎ ﻓﻰ ﺣﺎﻟﺔ ان ‪Error In‬‬ ‫ﻳﺤﺘﻮى ﻋﻠﻰ ﺧﻄﺄ ﻓﺎن ﺧﺮج ‪ Error Out‬هﻮ ﻧﻔﺴﻪ ‪.Error In‬‬

‫‪70‬‬

71

‫آﻴﻔﻴﺔ اﻇﻬﺎر رﺳﺎﻟﺔ ﺧﻄﺄ ﻟﻠﻤﺴﺘﺨﺪم ‪:‬‬ ‫ﻋﻨﺪﻣﺎ ﻻ ﻳﺴﺘﻄﻴﻊ اﻟﺒﺮﻧﺎﻣﺞ اﻟﺘﻌﺎﻣﻞ ﻣﻊ اﻟﺨﻄﺄ او ازاﻟﺘﻪ ﻓﺎﻧﻪ ﻳﻤﻜﻦ اﻇﻬﺎر رﺳﺎﻟﺔ ﻟﻠﻤﺴﺘﺨﺪم ﺗﺒﻴﻦ ﺣﺪوث اﻟﺨﻄﺄ ‪.‬‬ ‫ﺗﺴﺘﺨﺪم ‪ Simple Error Handler .vi‬ﻻﻇﻬﺎر رﺳﺎﻟﺔ ﻟﻠﻤﺴﺘﺨﺪم ﺑﺎﻟﺨﻄﺄ اﻟﺬى ﺣﺪث ‪.‬‬ ‫وﻳﺘﻢ ادراج هﺬة ‪ VI‬ﻣﻦ‬ ‫‪Function Palette>>Programming>>Dialog & User Interface‬‬

‫وﻳﺘﻢ ﺗﻮﺻﻴﻞ ‪ Error Cluster‬ﻓﻰ اﻟﺒﺮﻧﺎﻣﺞ اﻟﻰ ﻣﺪﺧﻞ هﺬة ‪ VI‬ﻓﺎذا آﺎن هﻨﺎك ﺧﻄﺄ ﺗﺨﺮج هﺬة اﻟﺪاﻟﺔ‬ ‫وﺻﻒ ﻟﻠﺨﻄﺄ آﻤﺎ اﻧﻬﺎ ﺗﻈﻬﺮ رﺳﺎﻟﺔ ﻟﻠﻤﺴﺘﺨﺪم ﺑﻪ هﺬا اﻟﻮﺻﻒ‪.‬‬ ‫و ﻳﺤﺪد اﻟﻤﺪﺧﻞ ‪ type of dialog‬ﻧﻮع اﻟﺮﺳﺎﻟﺔ ‪.‬‬ ‫‪72‬‬

‫واذا ﻟﻢ ﻳﻮﺻﻞ هﺬة اﻟﻤﺪﺧﻞ ﺗﻈﻬﺮ رﺳﺎﻟﺔ ﺑﺰرار واﺣﺪ‪.‬‬

‫ﻧﺎﻓﺬة ‪: Explain Error‬‬ ‫ﻋﻨﺪﻣﺎ ﻳﺤﺘﻮى ‪ Error Cluster Control‬او ‪ Error Cluster Indicator‬ﻋﻠﻰ ﺧﻄﺄ ﻓﻴﻤﻜﻦ‬ ‫اﻇﻬﺎر ﻧﺎﻓﺬة ‪ Explain Error‬اﻟﺘﻰ ﺗﺤﺘﻮى ﻋﻠﻰ ﻣﻌﻠﻮﻣﺎت ﻋﻦ اﻟﺨﻄﺄ ﺑﺎﻻﺿﺎﻓﺔ ﻟﻮﺻﻒ اﻟﺨﻄﺄ واﺳﺒﺎب‬ ‫ﺣﺪوﺛﻪ‪.‬‬

‫‪73‬‬

‫اﺧﺘﺒﺎر ﺣﺪوث ﺧﻄﺄ ﻓﻰ ‪: Loops‬‬ ‫ﻳﺴﺘﺨﺪم ‪ Status‬اﻟﻤﻮﺟﻮد ﻓﻰ ‪ Error Cluster‬ﻓﻰ اﺧﺘﺒﺎر ﺣﺪوث ﺧﻄﺄ ﻣﻦ ﻋﺪﻣﻪ ‪.‬‬ ‫وذﻟﻚ ﺑﺎﺳﺘﺨﺪام اﻟﺪاﻟﺔ ‪.Unbundle by Name‬‬

‫‪74‬‬

‫وﻳﺴﺘﺨﺪم ‪ Status‬ﻓﻰ داﺧﻞ ‪ Loops‬ﻻﻳﻘﺎف ﻋﻤﻠﻬﺎ ﻓﻰ ﺣﺎﻟﺔ ﺣﺪوث ﺧﻄﺄ‪.‬‬

‫‪75‬‬

‫ﺗﻢ ﺑﺤﻤﺪ اﷲ ﺗﻌﺎﻟﻰ اﻻﻧﺘﻬﺎء ﻣﻦ اﻟﺪرس‬ ‫اﻟﻰ اﻟﻘﺎء ﺑﺎذن اﷲ ﺗﻌﺎﻟﻰ ﻣﻊ اﻟﺪرس اﻟﺴﺎﺑﻊ‬

‫‪[email protected]‬‬

Related Documents

Lesson 6
October 2019 25
Lesson 6
December 2019 20
Lesson 6
November 2019 24
Lesson 6
June 2020 12
Lesson 6
May 2020 14
Lesson 6
May 2020 15