ادامه برنامه های فرعی عباسپور 1 متغير ها در برنامه های فرعی هر نوع متغيری که در برنامه فرعی اعلان می شود مخصوص همان برنامه است و در خارج از آن موجوديت.

Slides:



Advertisements
Similar presentations
Queue theory.
Advertisements

Awe sim.
معاونت درمان امور مامایی اردیبهشت 90. برای ثبت اطلاعات در برنامه نرم افزاری نظام مراقبت مرگ پریناتال ابتدا لازم است برنامه نرم افزار info-path وپرنیان.
Stranded Costs مقدمه 1 - آشنايی با پديده های غيرخطی ( ياد آوری و تکميل ) 2 - مبانی رياضی ( مهم )
دستورهای انتقال کنترل عباسپور 1 دستورهای انتقال کنترل Control Statements.
1 آزمايشگاه سيستم های هوشمند ( Domain-specific Architecture.
Computer Programming برنامه سازی کامپيوتر1 مدل های رياضی مهندسی يعنی کاربرد علوم مختلف (رياضی، فيزيک) در حل مسائل کاربردی مدل های رياضی برای پيش بينی رفتار.
دستور های ورودی خروجی عباسپور 1 دستورهای ورودی و خروجی Input Output Commands.
آرايه ها يا رشته ها Arrays
Computer Programming برنامه سازی کامپيوتر1 طراحی الگوريتم ها Algorithm Design.
ارائه روشي براي شناسايي کاراکترهاي دستنويس، برپايه شبکه LVQ.
دستور های منطقی، عباسپور1 دستور های منطقی مقايسه ای LOGICAL COMPARISON EXPRESION.
دستورهای خروجی بر اساس فايل عباسپور 1 دستور های ورودی-خروجی بر اساس استفاده از فايل File-based Input and Output.
ارائه درس روباتيکز Extended Kalman Filter فريد ملازم استاد مربوطه دکتر شيري دانشگاه امير کبير – دانشکده کامپيوتر و فناوري اطلاعات.
عامل و محيط. آزمایشگاه سیستمهای هوشمند 2 رئوس مطالب عاملها و محيطها مفهوم رفتار عقلانی محيطها ساختارهای مختلف برای عاملها.
نويسه و رشته CHARACTER string رشته عبارتست از توالی از صفر يا چند کاراکتر مثل Ali برای ذخيره مواردی مثل اسم و آدرس و غيره.
نام و نام خانوادگي : فريد ملازم 1 آزمايشکاه سيستم هاي هوشمند ( موضوع ارائه Process and Deployment Design.
برنامه سازی کامپيوتری 1 نرم افزار در کامپيوتر. برنامه سازی کامپيوتری 2 نرم افزارها سخت افزار کامپيوتر بدون نرم افزار ان غير قابل استفاده است نرم افزار.
1 تدوين راهبرد برای يک برنامه جلب حمايت همه جانبه Mohsen Shams, MD. PhD Candidate in Health Education, School of Public Health, Tehran University of Medical.
مديريت پروژه‌هاي فناوري اطلاعات فرآيند مديريت پروژه-مرحله برنامه‌ريزي تخصيص منابع.
مراحل مختلف اجرای يک برنامه
فایل پردازی در C File based Programming in C. انواع فایل متنی –سرعت بالا –حجم کمتر –امکان دسترسی تصادفی –حفظ امنیت داده ها دودویی (باینری) –امکان باز.
1 Network Address Translation (NAT). 2 Private Network شبکه خصوصی شبکه ای است که بطور مستقیم به اینترنت متصل نیست در یک شبکه خصوصی آدرس های IP به دلخواه.
فارسی سازی يکپارچه در سيستم عاملهای OS/390 & Windows واحد 1 مهندسی سيستم Integrated Farsi support on OS/390 & Windows.
1 بنام خدا زبان برنامه نویسی C (21814( Lecture 8 Chapters 8 & 9.
آرايه Array آرايه مجموعه اى از متغيرهاى از يك نوع است كه با يك نام مشترك تحت استفاده قرار مى گيرند. يك عنصر بخصوص در يك آرايه با يك index (انديس ) مورد.
مظفر بگ محمدی دانشگاه ایلام Generics. کدهای عمومی 2 یکی از اهداف OOP ایجاد قابلیت نوشتن برنامه های عمومی با قابلیت استفاده ی مجدد است. کدهای چندریخت تا.
Data Types Modifiers Base data type Size Sign signed int 2 B unsigned float 4 B short double 8 B long char 1 B.
روابط مجموعه ها سلیمی. دکتر سلیمانی. نظریه فازی در سال 1965 بوسیله یک دانشمند ایرانی بنام پروفسور لطفی زاده معرفی گردید. گرچه این نظریه در ابتدا با.
آشنايي با سيستم اعداد.
به نام خدا.
[c.
تهیه و تنظیم: فاطمه قاسمی دانشگاه صنعتی شریف – پاییز 86
تهیه و تنظیم: فاطمه قاسمی دانشگاه صنعتی شریف – پاییز 86
نظریه رفتار برنامه ريزي شده Theory of Planned Behavior
بنام خدا زبان برنامه نویسی C (21814( Lecture 2 Chapter 3
انواع دستور در برنامه نويسی
بنام خدا زبان برنامه نویسی C (21814( Lecture 12 Selected Topics
اسلایدهای فصل سوم کتاب سیلبرشاتز دانشکده مهندسی کامپیوتر دانشگاه شریف
دانلود جدیدترین مقالات برق الکترونیک و کامپیوتر
Address: Times New Roman, size 34
واحد های مختلف برنامه عباسپور
چگونه بفهمیم آیا ژورنالی ISI است؟ ایمپکت فاکتور دارد یا خیر؟
آشنايي با برنامه نويسي به زبان C++
تکنیک دیماتل DEMATEL: decision making trial and evaluation laboratory.
نمايش اعداد در کامپيوتر چهار عمل اصلي
آشنایی با پایگاه داده mysql
Similarity transformation
Strain gauge Omid Kooshki Mohammad Parhizkar Yaghoobi
مدارهای منطقی فصل سوم - خصوصیات توابع سويیچی
به نام خدا برنامه ارزيابي خارجي کيفيت (هماتولوژی- سرولوژی)
هیدرولیک جریان در کانالهای باز
تهیه و تنظیم: فاطمه قاسمی دانشگاه صنعتی شریف – پاییز 86
تهیه و تنظیم: فاطمه قاسمی دانشگاه صنعتی شریف – پاییز 86
نظریه رفتار برنامه ريزي شده Theory of Planned Behavior
وبلاگ جامع مهندسی برق و الکترونیک
به نام خدا برنامه ارزيابي خارجي کيفيت (هماتولوژی- سرولوژی)
به نام خدا اين فايل راهنما جهت آشنايی کاربران گرامی با پايگاه اطلاعاتی Sciencedirect و نحوه جستجوی اطلاعات در آن تهيه شده است لطفاً اسلايدهای بعد را مشاهده.
بسم الله الرحمن الرحیم هرس درخت تصمیم Dr.vahidipour Zahra bayat
جستجوی منابع الکترونیک
آزمون کوتاه مدت عملکرد بالینی
فصل ششم مدارهای ترتیبی.
مثال : فلوچارتي رسم كنيد كه دو عدد از ورودي دريافت كرده بزرگترين عدد
Uniprocessor Scheduling
توزیع میانگین نمونه سعید موسوی.
عملیات با رشته‌ها موسوی ندوشنی ویراست 1389 دانشگاه صنعت آب و برق.
کتابخانه دانشکده پرستاری و مامایی دانشگاه علوم پزشکی شهید بهشتی
kbkjlj/m/lkiubljj'pl;
مباني كامپيوتر و برنامه سازي Basics of Computer and Programming
مباني كامپيوتر و برنامه سازي Basics of Computer and Programming
Presentation transcript:

ادامه برنامه های فرعی عباسپور 1 متغير ها در برنامه های فرعی هر نوع متغيری که در برنامه فرعی اعلان می شود مخصوص همان برنامه است و در خارج از آن موجوديت ندارد هر متغيری که در برنامه ای فرعی اعلان شود تنها در موقع اجرای آن برنامه فرعی موجوديت پيدا می کند در هنگام احضار يک برنامه فرعی تمام متغير ها ايجاد و حافظه کافی در اختيار آنها قرار می گيرد هر گاه برنامه ای فرعی در حال اجرا نيست تمام متغير های آن از بين رفته حافظه اشغال شده آزاد می گردد

ادامه برنامه های فرعی عباسپور 2 لذا در پايان هر CALL يک برنامه فرعی مقادير متغير های آن از بين رفته و قابل دسترسی نخواهند بود با استفاده از دستور SAVE می توان مقادير آنها را از يک CALL تا CALL بعدی نگه داشت و مورد استفاده قرار داد ( مقادير اختصاص داده شده به هر متغير دست نخورده باقی می ماند به صورت پيش فرض By default هر متغيری که در مرحله اعلان مقدار اوليه داده شود خاصيت SAVE می گيرد دستور SAVE به صورت TYPE, SAVE:: variable name REAL, SAVE:: Keep_value

ادامه برنامه های فرعی عباسپور 3 مثال FUNCTION func1( a_new ) REAL :: func1 REAL :: a_new REAL, SAVE :: a_old !saved INTEGER :: counter=0 !saved... a_old = a_new counter = counter+1 END FUNCTION func1

ادامه برنامه های فرعی عباسپور 4 دستور COMMON جهت اشتراک داده ها بين برنامه اصلی و برنامه های فرعی فرم کلی COMMON/name/ list of variables and arrays COMMON / pool/ name1(10), arrya1 (3,3,3), inflag اين دستور در هر برنامه فرعی قرار گيرد به مقادير مربوط دسترسی خواهد داشت ترتيب نوشتن متغير ها مهم است ولی اسمی آنها می تواند در هر برنامه فرعی متفاوت باشد COMMON / pool/ a1(10), arr1 (3,3,3), dflag

ادامه برنامه های فرعی عباسپور 5 قطعه ها Modules اگر چه می توان از دستور Common برای به اشتراک گذاشتن داده ها در برنامه های مختلف استفاده نمود ولی وقتی اطلاعات رد وبدل شده خيلی زياد باشد استفاده از ليست آرگومانها خسته کننده خواهد بود می توان به جای آن از روش قابل انعطاف تری به نام Module استفاده نمود می دانيم که نام اختصاص داده شده به هرثابت و يا متغير فقط در داخل برنامه خود معنی و مفهوم پيدا می کند مثلاً: CHARACTER (80)::line (60) اگر اين اعلان در برنامه های مختلف آورده شود از نظر پردازنده اطلاعاتی متفاوت محسوب شده و برای هرکدام حافظه خاصی اختصاص می يابد. برای اينکه يک داده خاص بتواند در دسترس تعدادی ازبرنامه های فرعی و اصلی باشد از Module استفاده می شود.

ادامه برنامه های فرعی عباسپور 6 مثال Module MODULE text CHARACTER (80):: line (60) INTEGER:: linlenght, lineperpage, numpage LOGICAL:: checkin, checkout, checkspell END MODULE text با نوشتن دستور USE text در هر برنامه فرعی و يا اصلی قابل دسترسی خواهند بود انتخاب نام (text) اختياری است و هر مدول بايد نام غير تکراری داشته باشد مدول ها مثل FUNCTION و SUBROUTINE در برنامه اصلی قرار می گيرند يک مدول می تواند مدول ديگری را مورد استفاده قرار دهد و لی نه خودش را هر برنامه می تواند مشتمل بر چندين مدول باشد

ادامه برنامه های فرعی عباسپور 7 اجزاء با اشکال فرضی Assumed shape objects ازانجائيکه يک برنامه فرعی ممکن است به کرات در برنامه ديگری مورد استفاده قرار بگيرد که اگر چه Rank آرايه ها يکسان است ولی طول ابعاد آنها ممکن است مختلف باشد ( همينطور برای طول رشته های نويسه ای) F90 اجازه می دهد تا در برنامه های فرعی آرگومانهای ساختگی اندازه های متغيری داشته باشند. مثال: SUBROUTINE sub2(data1, data3, str) REAL, DIMENSION(:) :: data1 INTEGER, DIMENSION(:,:,:) :: data3 CHARACTER(len=*) :: str... END SUBROUTINE sub2

ادامه برنامه های فرعی عباسپور 8 صفت INDENT جهت وضوح برنامه نويسی INTENT(IN) يعنی اين آرگومان ساختگی قبل از احضار مقدار مشخصی داشته و در برنامه فرعی تغييری در آن حاصل نمی شود INTENT(OUT) يعنی اين آرگومان ساختگی قبل از احضار مقدار مشخصی نداشته ولی در پايان برنامه فرعی مقدار آن مشخص می شود INTENT(INOUT) يعنی اين آرگومان ساختگی قبل از احضار مقدار مشخصی داشته و در برنامه فرعی مقدار آن بروز Update می شود

ادامه برنامه های فرعی عباسپور 9 مثال SUBROUTINE invert(a, inverse, count) REAL, INTENT(IN) :: a REAL, INTENT(OUT) :: inverse INTEGER, INTENT(INOUT) :: count inverse = 1/a count = count+1 END SUBROUTINE invert

ادامه برنامه های فرعی عباسپور 10 آرگومان ها با لغت کليدی Keywords Arguments در حالت معمولی تطابق بين آرگومانهای حقيقی و ساختگی بر مبنای محل قرار گيری آنها است می توان تطابق را بر اساس اسامی آرگومانها برقرار نمود از سرگردانی جلو گيری می کند SUBROUTINE sub2(a, b, stat) INTEGER, INTENT(IN) :: a, b INTEGER, INTENT(INOUT):: stat... END SOBROUTINE sub2 می توان به صورت های زير احضار نمود CALL sub2( a=1, b=2, stat=x ) CALL sub2( 1, stat=x, b=2) CALL sub2( 1, 2, stat=x ) لغات کليدی بايد حتماً پس از ترتيب مکانی آورده شوند CALL sub2( 1, b=2, 0 ) !illegal CALL sub2( 1, stat=x, 2) !illegal

ادامه برنامه های فرعی عباسپور 11 آرگومانه های اختياری Optional Arguments گاهی اوقات ممکن است تمام آرگومانهای تقلبی در برنامه احضار کننده مورد نياز نباشند. می توان انها را به صورت Optional اعلان نمود SUBROUTINE sub1(a, b, c, d) INTEGER, INTENT(INOUT):: a, b REAL, INTENT(IN), OPTIONAL :: c, d... END SUBROUTINE sub1 مثال احضار CALL sub1( a, b ) CALL sub1( a, b, c, d ) CALL sub1( a, b, c ) آرگومانهای اختياری بايد به ترتيب آورده شوند CALL sub1( a, b, d ) !illegal

ادامه برنامه های فرعی عباسپور 12 دستور PRESENT مشخص می کند که آيا در هنگام احضار يک برنامه فرعی ارگومان بخصوص حضور دارد يا خير. مثال: REAL :: inverse_c IF( PRESENT(c) ) THEN inverse_c = 0.0 ELSE inverse_c = 1/c ENDIF از توقف برنامه به صورت ناخواسته جلوگيری می کند

ادامه برنامه های فرعی عباسپور 13 آرايه های ديناميکی Dynamic Arrays تاکنون تمام آرايه ها در برنامه ها به صورت استاتيکی بود يعنی حافظه ثابتی اشغال می کنند؛ در زمان اعلان و اجرای برنامه با شکل و اندازه مشخصی باشد –آرايه بايد با حداکثر اندازه محتمل مورد نياز اعلان گردد –هر بار که برنامه اجرا می شود ابعاد برنامه را تغيير دهيم و آن را مجدداً کمپايل نمائيم آرايه های ديناميکی يا تخصيص پذير (Allocatable) در زمان اعلان شکل و اندازه آنها مشخص نمی شود وحافظه ای به آنها اختصاص نمی يابد در زمان اجرا دقيقا به مقدار مورد نياز حافظه در اختيار آنها قرار می گيرد به عبارتی دارای حد بالا و پايين مشخصی نيستند

ادامه برنامه های فرعی عباسپور 14 مشخصات آرايه های ديناميکی نحوه اعلان: TYPE, ALLOCATABLE, [attribute]:: name در زمان اعلان مرتبه (Rank) آرايه بايد مشخص شود (با علامت”:”) ولی شکل و اندازه آنها لازم نيست: INTEGER, ALLOCATABLE:: b(:, :) !مرتبه دوم INTEGER, DIMENSION ( : ), ALLOCATABLE:: a !مرتبه اول REAL, DIMENSION ( : ), ALLOCATABL:: c REAL, ALLOCATABL:: array1 (:, :), array2 (:, : ) CHARACTER (30), ALLOCATABLE, DIMENSION (:, :, :)::name LOGICAL, ALLOCATABLE :: truetable (:,:)

ادامه برنامه های فرعی عباسپور 15 دادن و گرفتن حافظه Allocating & Deallocating storage با مشخص نمودن اندازه و شکل ارايه ديناميکی حافظه مورد نياز برای آن به صورت زير مشخص می شود: ALLOCAT (name) ALLOCAT (a (3425)) ALLOCAT (b (45, 25)) ALLOCAT (a (3425), b (45, 25), c (65,30,12)) اين دستور فقط می تواند برای آن دسته از آرايه ها بکار رود که قبلاً به صورت ديناميکی اعلان شده اند. مثال: READ (*,*) N ALLOCATE (c (N,N)) N هر عدد صحيح و يا عبارت محاسباتی که مقدار آن قبلاً مشخص شده باشد می تواند باشد

ادامه برنامه های فرعی عباسپور 16 کنترل خطا هنگام تخصيص ارايه فرم کلی ALLOCATE (name (bounds) [,STAT=icheck) STAT يک صفت اختياری برای اين دستور Icheck هر نام اختياری و يا متغير صحيح در صورت موفقيت آميز بودن مقدار آن صفر در غير ان مثبت مثال ALLOCATE ( array1 (2,2), array2 (8,12), STAT=k

ادامه برنامه های فرعی عباسپور 17 دستور DEALLOCATE برای آرايه ای که قبلاً ALLOCATE شده است حافظه از اين آرايه گرفته می شود فرم کلی DEALLOCATE (name, [STAT=check]) در اين دستور نياز به نوشتن شکل و اندازه آرايه نيست مثال: DEALLOCATE (a,b) DEALLOCATE (c, STAT=test) IF (test /=0) WRITE (*,*) “Deallocation error” STOP END IF

ادامه برنامه های فرعی عباسپور 18 توابع ALLOCATED وِِِِِ DEALLOCATED توابع منطقی هستند که آرگومان آنها بايد يک آرايه ديناميکی باشد مثال IF (ALLOCATED (a)) DEALLOCATE (b) IF (.NOT. ALLOCATED (results)) ALLOCATE & (results (4,100), noresults (5)) دستور ALLOCATE و DEALLOCATE را به کرات می توان در مورد يک آرايه در برنامه بکار برد

ادامه برنامه های فرعی عباسپور 19 نشت حافظه Memory leaks Allocate و Dealloctae شدن آرايه های استاتيکی توسط خود برنامه انجام می شود حافظه ای که توسط دستور Allocateاشغال شده است با دستور Deallocate يا خاتمه برنامه آزاد می شود حافظه ای که در يک برنامه فرعی (تابع و سابروتين) با دستور Allocate اشغال می شود بايد پس از خروج به صورت Deallocate در آيد. در غير اينصورت به صورت اشغال شده باقی می ماند، بدون اينکه اسم خاصی داشته باشد؛ قابل دسترسی نيز نيست. به عبارتی يک آرايه گم شده است. اگر رجوع به اين برنامه فرعی زياد شود نشت حافظه زياد می شود و ادامه برنامه ممکن است دچار اشکال و خطا در برنامه می شود که مشخص نمودن آن خيلی مشکل است

ادامه برنامه های فرعی عباسپور 20 مثال نشت حافظه SUBROUTINE swap (a,b) REAL, DIMENSION (:) :: a,b a و b آرايه های اتوماتيکی هستند که به صورت استاتيکی در برنامه اصلی اعلان می شوند REAL, ALLOCATABLE :: work(:) ALLOCATE (work (size (a)) Work=a a=b B=work DEALLOCATE (work) END SUBROUTINE swap