𝐏𝐨𝐰𝐞𝐫𝐅𝐚𝐜𝐭𝐨𝐫𝐲 𝐃𝐈𝐠𝐒𝐈𝐋𝐄𝐍𝐓 | آموزش نرم افزار دیگسایلنت پاورفکتوری
🔰ادامه سطح 1 - بخش 5 🔰 6️⃣ Object — شیء این قسمت یکی از مهمترین مفاهیم DPL است. در PowerFactory تقریباً همه اجزای پروژه بهصورت Object مدیریت میشوند. برای مثال: Bus Line Transformer Load Generator Cable Switch Substation Study Case هرکدام میتوانند یک…
🎯 تمرین شماره 5
به کد زیر نگاه کنید و مشخص کنید:
Comment کدام است؟
Function کدام است؟
Statement کدام است؟
خروجی برنامه چیست؟
#تمرین_سطح_1
#تمرین
به کد زیر نگاه کنید و مشخص کنید:
Comment کدام است؟
Function کدام است؟
Statement کدام است؟
خروجی برنامه چیست؟
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
! Display a message
printf('My first DPL program');
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
#تمرین_سطح_1
#تمرین
🔰 سطح 1 - بخش 6 🔰
📌 Comment در DPL
در پست قبل با ساختار کلی یک برنامه DPL آشنا شدیم.
یکی از اولین اجزای هر برنامه، Comment یا توضیحات داخل کد است.
ممکن است Comment در ظاهر موضوع سادهای باشد، اما در پروژههای واقعی و مخصوصاً Scriptهای طولانی، نقش بسیار مهمی در خوانایی، مستندسازی و نگهداری کد دارد.
🔹 Comment چیست؟
Comment متنی است که برای توضیح کد نوشته میشود و در منطق اجرای برنامه دخالتی ندارد.
در DPL برای نوشتن Comment از علامت:
استفاده میکنیم.
مثلاً:
خط زیر:
توسط DPL بهعنوان Comment شناخته میشود.
🔹 چرا از Comment استفاده میکنیم؟
فرض کنید چند ماه بعد به یک Script برگردیم.
اگر کد به این شکل باشد:
ممکن است فوراً به خاطر نیاوریم این خط دقیقاً برای چه کاری نوشته شده است.
اما اگر توضیح مناسبی اضافه کنیم:
هدف کد بسیار واضحتر میشود.
🔹 Comment فقط برای توضیح کد نیست
از Comment میتوان برای موارد مختلف استفاده کرد.
1️⃣ توضیح هدف برنامه
مثلاً:
2️⃣ توضیح یک بخش از برنامه
3️⃣ توضیح یک دستور
4️⃣ ثبت اطلاعات آموزشی
مثلاً در دوره آموزشی میتوانیم مشخص کنیم این مثال مربوط به چه موضوعی است:
🔹 Comment در ابتدای Script
در پروژههای واقعی بهتر است ابتدای Script مشخص باشد.
برای مثال:
این نوع ساختار باعث میشود Scriptهای آموزشی ما از همان ابتدا منظم و قابل تشخیص باشند.
🔹 Comment در بین کد
میتوانیم یک برنامه را به چند بخش تقسیم کنیم.
مثلاً:
در پروژههای بزرگ این روش بسیار مفید است.
🔹 Comment میتواند کد را موقتاً غیرفعال کند
یکی از کاربردهای بسیار مفید Comment در زمان Debug کردن است.
فرض کنید:
خط:
دیگر بهعنوان دستور اجرایی پردازش نمیشود.
بنابراین میتوانیم برای تست، بعضی قسمتهای کد را موقتاً غیرفعال کنیم.
⚠️ البته در پروژههای بزرگ بهتر است برای مدیریت بخشهای مختلف برنامه، از روشهای ساختاریافتهتر استفاده کنیم و صرفاً تعداد زیادی خط را Comment نکنیم.
#سطح_1
#DIgSILENT #PowerFactory #DPL #PowerSystems #مهندسی_برق
✅ @PowerFactoryDIgSILENT
📌 Comment در DPL
در پست قبل با ساختار کلی یک برنامه DPL آشنا شدیم.
یکی از اولین اجزای هر برنامه، Comment یا توضیحات داخل کد است.
ممکن است Comment در ظاهر موضوع سادهای باشد، اما در پروژههای واقعی و مخصوصاً Scriptهای طولانی، نقش بسیار مهمی در خوانایی، مستندسازی و نگهداری کد دارد.
🔹 Comment چیست؟
Comment متنی است که برای توضیح کد نوشته میشود و در منطق اجرای برنامه دخالتی ندارد.
در DPL برای نوشتن Comment از علامت:
!
استفاده میکنیم.
مثلاً:
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
! This is a comment
printf('Hello DPL!');
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
خط زیر:
! This is a comment
توسط DPL بهعنوان Comment شناخته میشود.
🔹 چرا از Comment استفاده میکنیم؟
فرض کنید چند ماه بعد به یک Script برگردیم.
اگر کد به این شکل باشد:
Set = AllRelevant("*.ElmLne");
ممکن است فوراً به خاطر نیاوریم این خط دقیقاً برای چه کاری نوشته شده است.
اما اگر توضیح مناسبی اضافه کنیم:
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
! Get all relevant line objects
Set = AllRelevant("*.ElmLne");
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
هدف کد بسیار واضحتر میشود.
🔹 Comment فقط برای توضیح کد نیست
از Comment میتوان برای موارد مختلف استفاده کرد.
1️⃣ توضیح هدف برنامه
مثلاً:
! Calculate network loading
2️⃣ توضیح یک بخش از برنامه
! ================================
! Load Flow Calculation
! ================================
3️⃣ توضیح یک دستور
! Get all relevant line objects
Set = AllRelevant("*.ElmLne");
4️⃣ ثبت اطلاعات آموزشی
مثلاً در دوره آموزشی میتوانیم مشخص کنیم این مثال مربوط به چه موضوعی است:
! Example 006
! Introduction to DPL Comments
🔹 Comment در ابتدای Script
در پروژههای واقعی بهتر است ابتدای Script مشخص باشد.
برای مثال:
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
! ===================================
! Example 006 - Comments in DPL
! ===================================
printf('Comment Example');
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
این نوع ساختار باعث میشود Scriptهای آموزشی ما از همان ابتدا منظم و قابل تشخیص باشند.
🔹 Comment در بین کد
میتوانیم یک برنامه را به چند بخش تقسیم کنیم.
مثلاً:
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
! -------------------------------
! Input
! -------------------------------
! -------------------------------
! Calculation
! -------------------------------
! -------------------------------
! Output
! -------------------------------
printf('DPL Program');
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
در پروژههای بزرگ این روش بسیار مفید است.
🔹 Comment میتواند کد را موقتاً غیرفعال کند
یکی از کاربردهای بسیار مفید Comment در زمان Debug کردن است.
فرض کنید:
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
printf('Step 1');
! printf('Step 2');
printf('Step 3');
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
خط:
! printf('Step 2');دیگر بهعنوان دستور اجرایی پردازش نمیشود.
بنابراین میتوانیم برای تست، بعضی قسمتهای کد را موقتاً غیرفعال کنیم.
⚠️ البته در پروژههای بزرگ بهتر است برای مدیریت بخشهای مختلف برنامه، از روشهای ساختاریافتهتر استفاده کنیم و صرفاً تعداد زیادی خط را Comment نکنیم.
#سطح_1
#DIgSILENT #PowerFactory #DPL #PowerSystems #مهندسی_برق
✅ @PowerFactoryDIgSILENT
𝐏𝐨𝐰𝐞𝐫𝐅𝐚𝐜𝐭𝐨𝐫𝐲 𝐃𝐈𝐠𝐒𝐈𝐋𝐄𝐍𝐓 | آموزش نرم افزار دیگسایلنت پاورفکتوری
🔰 سطح 1 - بخش 6 🔰 📌 Comment در DPL در پست قبل با ساختار کلی یک برنامه DPL آشنا شدیم. یکی از اولین اجزای هر برنامه، Comment یا توضیحات داخل کد است. ممکن است Comment در ظاهر موضوع سادهای باشد، اما در پروژههای واقعی و مخصوصاً Scriptهای طولانی، نقش بسیار…
🔰 ادامه سطح 1 - بخش 6 🔰
🔹 Comment و خوانایی کد
یک قانون مهم در برنامهنویسی وجود دارد:
❌ Comment ضعیف:
این Comment اطلاعات زیادی به ما نمیدهد.
✅ Comment بهتر:
در اینجا توضیح میدهد چرا این دستور وجود دارد.
🔹 Comment در پروژههای حرفهای
وقتی Script از چند خط به چند صد خط یا حتی بیشتر میرسد، میتوان ساختار را به شکل زیر سازماندهی کرد:
و برای هر بخش Comment مناسب قرار داد.
این موضوع در پروژههای حرفهای DPL اهمیت زیادی پیدا میکند.
⚠️ نکته مهم درباره Comment
Comment کد اجرایی نیست.
بنابراین اگر اشتباهاً یک دستور DPL را داخل Comment قرار دهیم، آن دستور اجرا نخواهد شد.
مثلاً:
خروجی فقط:
خواهد بود.
🎯 جمعبندی
در این پست یاد گرفتیم:
☜ Comment چیست.
☜ علامت Comment در DPL چیست.
☜ چگونه برای کد توضیح بنویسیم.
☜ چگونه Script را بخشبندی کنیم.
☜ چگونه موقتاً یک دستور را غیرفعال کنیم.
☜ چرا Comment در پروژههای بزرگ اهمیت دارد.
☜ چگونه Comment مناسب و مفید بنویسیم.
✅ قانون طلایی این پست:
#سطح_1
#DIgSILENT #PowerFactory #DPL #PowerSystems #مهندسی_برق
✅ @PowerFactoryDIgSILENT
🔹 Comment و خوانایی کد
یک قانون مهم در برنامهنویسی وجود دارد:
Comment باید دلیل یا هدف کد را توضیح دهد، نه اینکه صرفاً خود کد را تکرار کند.
❌ Comment ضعیف:
! Print Hello
printf('Hello');
این Comment اطلاعات زیادی به ما نمیدهد.
✅ Comment بهتر:
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
! Display a message to confirm that the script is running
printf('Hello');
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
در اینجا توضیح میدهد چرا این دستور وجود دارد.
🔹 Comment در پروژههای حرفهای
وقتی Script از چند خط به چند صد خط یا حتی بیشتر میرسد، میتوان ساختار را به شکل زیر سازماندهی کرد:
Program
│
├── Initialization
│
├── Input
│
├── Object Selection
│
├── Calculation
│
├── Result Processing
│
├── Reporting
│
└── Finalization
و برای هر بخش Comment مناسب قرار داد.
این موضوع در پروژههای حرفهای DPL اهمیت زیادی پیدا میکند.
⚠️ نکته مهم درباره Comment
Comment کد اجرایی نیست.
بنابراین اگر اشتباهاً یک دستور DPL را داخل Comment قرار دهیم، آن دستور اجرا نخواهد شد.
مثلاً:
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
! printf('This message will NOT be executed');
printf('This message WILL be executed');
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
خروجی فقط:
This message WILL be executed
خواهد بود.
🎯 جمعبندی
در این پست یاد گرفتیم:
☜ Comment چیست.
☜ علامت Comment در DPL چیست.
☜ چگونه برای کد توضیح بنویسیم.
☜ چگونه Script را بخشبندی کنیم.
☜ چگونه موقتاً یک دستور را غیرفعال کنیم.
☜ چرا Comment در پروژههای بزرگ اهمیت دارد.
☜ چگونه Comment مناسب و مفید بنویسیم.
✅ قانون طلایی این پست:
کدی که قرار است دیگران بخوانند، باید برای انسان قابل فهم باشد؛ نه فقط برای کامپیوتر قابل اجرا.
#سطح_1
#DIgSILENT #PowerFactory #DPL #PowerSystems #مهندسی_برق
✅ @PowerFactoryDIgSILENT
𝐏𝐨𝐰𝐞𝐫𝐅𝐚𝐜𝐭𝐨𝐫𝐲 𝐃𝐈𝐠𝐒𝐈𝐋𝐄𝐍𝐓 | آموزش نرم افزار دیگسایلنت پاورفکتوری
🔰 ادامه سطح 1 - بخش 6 🔰 🔹 Comment و خوانایی کد یک قانون مهم در برنامهنویسی وجود دارد: Comment باید دلیل یا هدف کد را توضیح دهد، نه اینکه صرفاً خود کد را تکرار کند. ❌ Comment ضعیف: ! Print Hello printf('Hello'); این Comment اطلاعات زیادی به ما نمیدهد.…
🎯 تمرین شماره 6
کد زیر را بررسی کنید و برای هر بخش یک Comment مناسب بنویسید:
سعی کنید برنامه را به سه بخش تقسیم کنید:
Start → Calculation → Finish
#تمرین_سطح_1
#تمرین
کد زیر را بررسی کنید و برای هر بخش یک Comment مناسب بنویسید:
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
printf('Start');
printf('Load Flow');
printf('Finish');
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
سعی کنید برنامه را به سه بخش تقسیم کنید:
Start → Calculation → Finish
#تمرین_سطح_1
#تمرین
🔰 سطح 1 - بخش 7 🔰
📌 Statement در DPL
در پستهای قبلی با Comment و ساختار کلی برنامه DPL آشنا شدیم.
حالا به یکی از پایهایترین مفاهیم برنامهنویسی میرسیم:
اگر بخواهیم خیلی ساده بگوییم:
🔹 Statement چیست؟
هر برنامه DPL از مجموعهای از دستورها تشکیل شده است.
برای مثال:
در اینجا:
یک Statement است.
این Statement به DPL میگوید:
🔹 پایان Statement با ;
یکی از نکات مهم در Syntax زبان DPL این است که پایان دستور را با:
مشخص میکنیم.
مثلاً:
در اینجا سه Statement داریم.
🔹 ترتیب اجرای Statementها
DPL دستورات برنامه را بر اساس ساختار برنامه و ترتیب اجرای آنها پردازش میکند.
مثلاً:
خروجی به ترتیب خواهد بود:
بنابراین ترتیب Statementها میتواند روی نتیجه برنامه تأثیر داشته باشد.
🔹 یک Statement میتواند محاسبات انجام دهد
Statementها فقط برای چاپ متن نیستند.
در برنامهنویسی میتوانیم از آنها برای انجام محاسبات نیز استفاده کنیم.
برای مثال:
در این برنامه چند Statement داریم:
هرکدام یک بخش از عملیات برنامه را انجام میدهند.
🔹 چند Statement در یک خط؟
از نظر خوانایی بهتر است هر دستور را در یک خط جدا بنویسیم.
مثلاً:
صحیح است اما این ساختار خواناتر است.
اما مفهوم اصلی این است که
بنابراین خطبندی و پایان دستور دو مفهوم متفاوت هستند.
#سطح_1
#DIgSILENT #PowerFactory #DPL #PowerSystems #مهندسی_برق
✅ @PowerFactoryDIgSILENT
📌 Statement در DPL
در پستهای قبلی با Comment و ساختار کلی برنامه DPL آشنا شدیم.
حالا به یکی از پایهایترین مفاهیم برنامهنویسی میرسیم:
🔹 Statement چیست؟
اگر بخواهیم خیلی ساده بگوییم:
Statement یعنی یک دستور قابل اجرا که به DPL میگوید چه کاری انجام دهد.
🔹 Statement چیست؟
هر برنامه DPL از مجموعهای از دستورها تشکیل شده است.
برای مثال:
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
printf('Hello DPL!');
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
در اینجا:
printf('Hello DPL!');یک Statement است.
این Statement به DPL میگوید:
متن
Hello DPL!
را در خروجی نمایش بده.
🔹 پایان Statement با ;
یکی از نکات مهم در Syntax زبان DPL این است که پایان دستور را با:
;
مشخص میکنیم.
مثلاً:
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
printf('Statement 1');
printf('Statement 2');
printf('Statement 3');
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
در اینجا سه Statement داریم.
Statement 1 → printf('Statement 1');
Statement 2 → printf('Statement 2');
Statement 3 → printf('Statement 3');
🔹 ترتیب اجرای Statementها
DPL دستورات برنامه را بر اساس ساختار برنامه و ترتیب اجرای آنها پردازش میکند.
مثلاً:
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
printf('First');
printf('Second');
printf('Third');
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
خروجی به ترتیب خواهد بود:
First
Second
Third
بنابراین ترتیب Statementها میتواند روی نتیجه برنامه تأثیر داشته باشد.
🔹 یک Statement میتواند محاسبات انجام دهد
Statementها فقط برای چاپ متن نیستند.
در برنامهنویسی میتوانیم از آنها برای انجام محاسبات نیز استفاده کنیم.
برای مثال:
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
int a, b, result;
a = 10;
b = 20;
result = a + b;
printf('Result = %d', result);
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
در این برنامه چند Statement داریم:
int a, b, result;
a = 10;
b = 20;
result = a + b;
printf(...);
هرکدام یک بخش از عملیات برنامه را انجام میدهند.
⚠️ نکته: جزئیات تعریف Variable و انواع داده را در پستهای بعدی بهصورت کامل بررسی خواهیم کرد. فعلاً هدف فقط شناخت مفهوم Statement است.
🔹 چند Statement در یک خط؟
از نظر خوانایی بهتر است هر دستور را در یک خط جدا بنویسیم.
مثلاً:
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
printf('A'); printf('B'); printf('C');
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
صحیح است اما این ساختار خواناتر است.
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
printf('A');
printf('B');
printf('C');
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
اما مفهوم اصلی این است که
; پایان Statement را مشخص میکند.بنابراین خطبندی و پایان دستور دو مفهوم متفاوت هستند.
#سطح_1
#DIgSILENT #PowerFactory #DPL #PowerSystems #مهندسی_برق
✅ @PowerFactoryDIgSILENT
𝐏𝐨𝐰𝐞𝐫𝐅𝐚𝐜𝐭𝐨𝐫𝐲 𝐃𝐈𝐠𝐒𝐈𝐋𝐄𝐍𝐓 | آموزش نرم افزار دیگسایلنت پاورفکتوری
🔰 سطح 1 - بخش 7 🔰 📌 Statement در DPL در پستهای قبلی با Comment و ساختار کلی برنامه DPL آشنا شدیم. حالا به یکی از پایهایترین مفاهیم برنامهنویسی میرسیم: 🔹 Statement چیست؟ اگر بخواهیم خیلی ساده بگوییم: Statement یعنی یک دستور قابل اجرا که به DPL میگوید…
🔰 ادامه سطح 1 - بخش 7 🔰
🔹 یک اشتباه رایج
فراموش کردن
مثلاً:
در اینجا بعد از Statement اول
بنابراین باید به این شکل باشد:
🔹 Statement و Comment چه تفاوتی دارند؟
این دو را با هم اشتباه نگیریم.
Comment
برای توضیح است و اجرا نمیشود.
Statement
یک دستور اجرایی است.
بنابراین:
🔹 Statementهای سادهای که در ادامه میبینیم
در ادامه دوره با انواع مختلف Statementها مواجه خواهیم شد، از جمله:
Assignment
برای مقداردهی:
Function Call
برای فراخوانی Function:
Conditional Statement
برای تصمیمگیری:
Loop Statement
برای تکرار:
و در ادامه با Statementهای مرتبط با Object، Set، Study، Calculation و Automation نیز کار خواهیم کرد.
🧠 یک نکته مهم
در این مرحله باید یک تصویر ساده در ذهن داشته باشید:
یعنی یک برنامه DPL از مجموعهای از دستورها تشکیل میشود که با یک منطق مشخص کنار هم قرار گرفتهاند.
در پستهای بعدی یاد میگیریم این Statementها چگونه با Variable، Expression، Object و Function ترکیب میشوند.
🎯 جمعبندی
در این پست یاد گرفتیم:
☜ Statement چیست.
☜ Statement یک دستور اجرایی است.
☜ پایان Statement با
☜ یک برنامه میتواند چند Statement داشته باشد.
☜ ترتیب Statementها اهمیت دارد.
☜ Comment با Statement تفاوت دارد.
☜ فراموش کردن
⚡️ قانون طلایی این پست:
#سطح_1
#DIgSILENT #PowerFactory #DPL #PowerSystems #مهندسی_برق
✅ @PowerFactoryDIgSILENT
🔹 یک اشتباه رایج
فراموش کردن
; میتواند باعث خطای Syntax شود.مثلاً:
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
printf('Hello')
printf('World');
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
در اینجا بعد از Statement اول
; قرار نگرفته است.بنابراین باید به این شکل باشد:
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
printf('Hello');
printf('World');
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
🔹 Statement و Comment چه تفاوتی دارند؟
این دو را با هم اشتباه نگیریم.
Comment
! This is a comment
برای توضیح است و اجرا نمیشود.
Statement
printf('Hello');یک دستور اجرایی است.
بنابراین:
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
! This line is a comment
printf('This line is a statement');
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
🔹 Statementهای سادهای که در ادامه میبینیم
در ادامه دوره با انواع مختلف Statementها مواجه خواهیم شد، از جمله:
Assignment
برای مقداردهی:
variable = value;
Function Call
برای فراخوانی Function:
printf(...);
Conditional Statement
برای تصمیمگیری:
if (...)
{
...
}
Loop Statement
برای تکرار:
for (...)
{
...
}
و در ادامه با Statementهای مرتبط با Object، Set، Study، Calculation و Automation نیز کار خواهیم کرد.
🧠 یک نکته مهم
در این مرحله باید یک تصویر ساده در ذهن داشته باشید:
DPL Program
↓
Statement
↓
Statement
↓
Statement
↓
Result
یعنی یک برنامه DPL از مجموعهای از دستورها تشکیل میشود که با یک منطق مشخص کنار هم قرار گرفتهاند.
در پستهای بعدی یاد میگیریم این Statementها چگونه با Variable، Expression، Object و Function ترکیب میشوند.
🎯 جمعبندی
در این پست یاد گرفتیم:
☜ Statement چیست.
☜ Statement یک دستور اجرایی است.
☜ پایان Statement با
; مشخص میشود.☜ یک برنامه میتواند چند Statement داشته باشد.
☜ ترتیب Statementها اهمیت دارد.
☜ Comment با Statement تفاوت دارد.
☜ فراموش کردن
; میتواند باعث Syntax Error شود.⚡️ قانون طلایی این پست:
هر دستور اجرایی را بهعنوان یک Statement بشناس و پایان آن را با Syntax صحیح مشخص کن.
#سطح_1
#DIgSILENT #PowerFactory #DPL #PowerSystems #مهندسی_برق
✅ @PowerFactoryDIgSILENT
𝐏𝐨𝐰𝐞𝐫𝐅𝐚𝐜𝐭𝐨𝐫𝐲 𝐃𝐈𝐠𝐒𝐈𝐋𝐄𝐍𝐓 | آموزش نرم افزار دیگسایلنت پاورفکتوری
🔰 ادامه سطح 1 - بخش 7 🔰 🔹 یک اشتباه رایج فراموش کردن ; میتواند باعث خطای Syntax شود. مثلاً: ! =================================== ! ✅ Telegram: @PowerFactoryDIgSILENT ! =================================== printf('Hello') printf('World'); ! ===========…
🎯 تمرین شماره 7
کد زیر را ببینید:
سؤال:
چند Statement در این برنامه وجود دارد؟
خروجی برنامه چیست؟
اگر
#تمرین_سطح_1
#تمرین
کد زیر را ببینید:
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
printf('PowerFactory');
printf('DPL');
printf('Programming');
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
سؤال:
چند Statement در این برنامه وجود دارد؟
خروجی برنامه چیست؟
اگر
; بعد از Statement دوم حذف شود، چه اتفاقی میافتد؟#تمرین_سطح_1
#تمرین
🔰 سطح 1 - بخش 8 🔰
📌 Expression در DPL
در پست قبلی با مفهوم Statement آشنا شدیم.
حالا میخواهیم یکی از مفاهیم مهمی را یاد بگیریم که تقریباً در تمام برنامههای DPL با آن سروکار خواهیم داشت:
به زبان ساده:
این مقدار میتواند حاصل یک محاسبه، یک مقایسه، یک مقدار متغیر یا حتی اطلاعاتی باشد که از یک Object دریافت میکنیم.
مثلاً:
یک Expression است و نتیجه آن:
است.
یا:
نتیجه:
🔹 تفاوت Expression و Statement
این دو مفهوم را باید از همین ابتدا از هم تفکیک کنیم.
❏ Expression
یک مقدار یا نتیجه تولید میکند:
❏ Statement
یک دستور کامل برای انجام یک عملیات است:
در این مثال:
یک Expression است.
اما:
یک Statement است.
یعنی میتوانیم بگوییم:
🔹 Expressionهای ریاضی
یکی از سادهترین انواع Expression، عبارتهای ریاضی هستند.
مثلاً:
در اینجا:
Expression است.
نتیجه محاسبه:
خواهد بود.
🔹 Expression با متغیرها
Expression فقط شامل اعداد ثابت نیست.
میتوانیم از Variableها نیز استفاده کنیم.
مثلاً:
در اینجا:
یک Expression است.
چون مقدار
🔹 Expressionهای مختلف
Expression میتواند شکلهای مختلفی داشته باشد.
1️⃣ Expression ریاضی
2️⃣ Expression مقایسهای
این Expression نتیجهای منطقی تولید میکند.
مثلاً اگر:
باشد:
برابر True خواهد بود.
3️⃣ Expression ترکیبی
میتوان چند Expression را با هم ترکیب کرد.
مثلاً:
این عبارت نیز یک Expression است و نتیجه آن میتواند True یا False باشد.
#سطح_1
#DIgSILENT #PowerFactory #DPL #PowerSystems #مهندسی_برق
✅ @PowerFactoryDIgSILENT
📌 Expression در DPL
در پست قبلی با مفهوم Statement آشنا شدیم.
حالا میخواهیم یکی از مفاهیم مهمی را یاد بگیریم که تقریباً در تمام برنامههای DPL با آن سروکار خواهیم داشت:
Expression چیست؟
به زبان ساده:
Expression عبارتی است که میتواند یک مقدار تولید کند.
این مقدار میتواند حاصل یک محاسبه، یک مقایسه، یک مقدار متغیر یا حتی اطلاعاتی باشد که از یک Object دریافت میکنیم.
مثلاً:
10 + 20
یک Expression است و نتیجه آن:
30
است.
یا:
5 * 4
نتیجه:
20
🔹 تفاوت Expression و Statement
این دو مفهوم را باید از همین ابتدا از هم تفکیک کنیم.
❏ Expression
یک مقدار یا نتیجه تولید میکند:
10 + 20
❏ Statement
یک دستور کامل برای انجام یک عملیات است:
result = 10 + 20;
در این مثال:
10 + 20
یک Expression است.
اما:
result = 10 + 20;
یک Statement است.
یعنی میتوانیم بگوییم:
Expression میتواند بخشی از یک Statement باشد.
🔹 Expressionهای ریاضی
یکی از سادهترین انواع Expression، عبارتهای ریاضی هستند.
مثلاً:
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
printf('Result = %d', 10 + 20);
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
در اینجا:
10 + 20
Expression است.
نتیجه محاسبه:
30
خواهد بود.
🔹 Expression با متغیرها
Expression فقط شامل اعداد ثابت نیست.
میتوانیم از Variableها نیز استفاده کنیم.
مثلاً:
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
int a, b;
a = 10;
b = 20;
printf('Sum = %d', a + b);
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
در اینجا:
a + b
یک Expression است.
چون مقدار
a برابر 10 و مقدار b برابر 20 است، نتیجه Expression برابر 30 خواهد بود.🔹 Expressionهای مختلف
Expression میتواند شکلهای مختلفی داشته باشد.
1️⃣ Expression ریاضی
a + b
2️⃣ Expression مقایسهای
a > b
این Expression نتیجهای منطقی تولید میکند.
مثلاً اگر:
a = 20
b = 10
باشد:
a > b
برابر True خواهد بود.
3️⃣ Expression ترکیبی
میتوان چند Expression را با هم ترکیب کرد.
مثلاً:
a > 10 AND b < 50
این عبارت نیز یک Expression است و نتیجه آن میتواند True یا False باشد.
#سطح_1
#DIgSILENT #PowerFactory #DPL #PowerSystems #مهندسی_برق
✅ @PowerFactoryDIgSILENT
𝐏𝐨𝐰𝐞𝐫𝐅𝐚𝐜𝐭𝐨𝐫𝐲 𝐃𝐈𝐠𝐒𝐈𝐋𝐄𝐍𝐓 | آموزش نرم افزار دیگسایلنت پاورفکتوری
🔰 سطح 1 - بخش 8 🔰 📌 Expression در DPL در پست قبلی با مفهوم Statement آشنا شدیم. حالا میخواهیم یکی از مفاهیم مهمی را یاد بگیریم که تقریباً در تمام برنامههای DPL با آن سروکار خواهیم داشت: Expression چیست؟ به زبان ساده: Expression عبارتی است که میتواند…
🔰 ادامه سطح 1 - بخش 8 🔰
🔹 Expression در شرطها
در پستهای آینده بهصورت کامل با
اما همین حالا میتوانیم ارتباط Expression و شرط را ببینیم:
در اینجا:
یک Expression است.
نتیجه آن تعیین میکند که دستورات داخل
🔹 Expression و محاسبات مهندسی
حالا یک مثال نزدیکتر به کاربردهای PowerFactory ببینیم.
فرض کنید مقدار توان اکتیو و راکتیو را داریم و میخواهیم اندازه توان ظاهری را محاسبه کنیم.
فرمول:
بخش:
یک Expression است.
بنابراین Expressionها در محاسبات مهندسی نقش بسیار مهمی دارند.
در ادامه دوره از همین مفهوم برای پردازش نتایج مطالعات PowerFactory استفاده خواهیم کرد.
🔹 Expression و Objectهای PowerFactory
در مراحل بعدی، Expressionها بسیار جذابتر میشوند.
فرض کنید یک Object از نوع خط داریم و میخواهیم یکی از Attributeهای آن را بررسی کنیم.
بهصورت مفهومی:
مثلاً:
منطق:
یک Expression مقایسهای است.
این دقیقاً یکی از مفاهیمی است که بعداً در پروژههای واقعی Load Flow از آن استفاده خواهیم کرد.
🔹 Expression داخل Function
Expression میتواند بهعنوان ورودی یک Function نیز استفاده شود.
مثلاً:
در اینجا:
Expression است و نتیجه آن به
⚠️ یک اشتباه رایج
گاهی Expression و Statement با هم اشتباه گرفته میشوند.
مثلاً:
بهتنهایی یک Expression است.
اما:
یک Statement است که در آن Expression:
استفاده شده است.
به این شکل در ذهن داشته باشید:
البته همه Statementها الزاماً Expression به این شکل ندارند؛ این فقط یک نمونه برای درک ارتباط این دو مفهوم است.
🧠 یک مثال کامل
بیایید همه چیز را کنار هم قرار دهیم:
بررسی کد:
یک Expression است.
یک Statement است.
یک فراخوانی Function است که Expression/Value موردنظر را برای نمایش دریافت میکند.
و نتیجه:
خواهد بود.
🎯 جمعبندی
در این پست یاد گرفتیم:
☜ Expression چیست.
☜ Expression میتواند یک مقدار تولید کند.
☜ Expression میتواند شامل اعداد و Variableها باشد.
☜ Expression میتواند ریاضی باشد.
☜ Expression میتواند مقایسهای باشد.
☜ Expression میتواند در شرطها استفاده شود.
☜ Expression میتواند بخشی از یک Statement باشد.
☜ در آینده Expressionها را برای پردازش Attributeهای PowerFactory نیز استفاده خواهیم کرد.
⭐️ قانون طلایی
#سطح_1
#DIgSILENT #PowerFactory #DPL #PowerSystems #مهندسی_برق
✅ @PowerFactoryDIgSILENT
🔹 Expression در شرطها
در پستهای آینده بهصورت کامل با
if کار خواهیم کرد.اما همین حالا میتوانیم ارتباط Expression و شرط را ببینیم:
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
int value;
value = 80;
if (value > 50)
{
printf('Value is greater than 50');
}
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
در اینجا:
value > 50
یک Expression است.
نتیجه آن تعیین میکند که دستورات داخل
if اجرا شوند یا خیر.🔹 Expression و محاسبات مهندسی
حالا یک مثال نزدیکتر به کاربردهای PowerFactory ببینیم.
فرض کنید مقدار توان اکتیو و راکتیو را داریم و میخواهیم اندازه توان ظاهری را محاسبه کنیم.
فرمول:
S = √(P² + Q²)
بخش:
P² + Q²
یک Expression است.
بنابراین Expressionها در محاسبات مهندسی نقش بسیار مهمی دارند.
در ادامه دوره از همین مفهوم برای پردازش نتایج مطالعات PowerFactory استفاده خواهیم کرد.
🔹 Expression و Objectهای PowerFactory
در مراحل بعدی، Expressionها بسیار جذابتر میشوند.
فرض کنید یک Object از نوع خط داریم و میخواهیم یکی از Attributeهای آن را بررسی کنیم.
بهصورت مفهومی:
Line Object
↓
Attribute
↓
Value
↓
Expression
↓
Comparison
↓
Result
مثلاً:
اگر Loading یک خط بیشتر از 100 درصد بود، آن را بهعنوان Overloaded گزارش کن.
منطق:
Loading > 100
یک Expression مقایسهای است.
این دقیقاً یکی از مفاهیمی است که بعداً در پروژههای واقعی Load Flow از آن استفاده خواهیم کرد.
🔹 Expression داخل Function
Expression میتواند بهعنوان ورودی یک Function نیز استفاده شود.
مثلاً:
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
int a, b;
a = 15;
b = 25;
printf('Result = %d', a + b);
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
در اینجا:
a + b
Expression است و نتیجه آن به
printf داده میشود.⚠️ یک اشتباه رایج
گاهی Expression و Statement با هم اشتباه گرفته میشوند.
مثلاً:
a + b
بهتنهایی یک Expression است.
اما:
result = a + b;
یک Statement است که در آن Expression:
a + b
استفاده شده است.
به این شکل در ذهن داشته باشید:
Statement
│
└── Expression
البته همه Statementها الزاماً Expression به این شکل ندارند؛ این فقط یک نمونه برای درک ارتباط این دو مفهوم است.
🧠 یک مثال کامل
بیایید همه چیز را کنار هم قرار دهیم:
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
int power1, power2, total;
power1 = 100;
power2 = 150;
total = power1 + power2;
printf('Total Power = %d MW', total);
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
بررسی کد:
power1 + power2
یک Expression است.
total = power1 + power2;
یک Statement است.
printf(...)
یک فراخوانی Function است که Expression/Value موردنظر را برای نمایش دریافت میکند.
و نتیجه:
Total Power = 250 MW
خواهد بود.
🎯 جمعبندی
در این پست یاد گرفتیم:
☜ Expression چیست.
☜ Expression میتواند یک مقدار تولید کند.
☜ Expression میتواند شامل اعداد و Variableها باشد.
☜ Expression میتواند ریاضی باشد.
☜ Expression میتواند مقایسهای باشد.
☜ Expression میتواند در شرطها استفاده شود.
☜ Expression میتواند بخشی از یک Statement باشد.
☜ در آینده Expressionها را برای پردازش Attributeهای PowerFactory نیز استفاده خواهیم کرد.
⭐️ قانون طلایی
Expression نتیجه یا مقدار تولید میکند؛ Statement یک دستور کامل برای انجام یک عملیات است.
#سطح_1
#DIgSILENT #PowerFactory #DPL #PowerSystems #مهندسی_برق
✅ @PowerFactoryDIgSILENT
𝐏𝐨𝐰𝐞𝐫𝐅𝐚𝐜𝐭𝐨𝐫𝐲 𝐃𝐈𝐠𝐒𝐈𝐋𝐄𝐍𝐓 | آموزش نرم افزار دیگسایلنت پاورفکتوری
🔰 ادامه سطح 1 - بخش 8 🔰 🔹 Expression در شرطها در پستهای آینده بهصورت کامل با if کار خواهیم کرد. اما همین حالا میتوانیم ارتباط Expression و شرط را ببینیم: ! =================================== ! ✅ Telegram: @PowerFactoryDIgSILENT ! ==================…
🎯 تمرین شماره 8
در کد زیر Expressionها را پیدا کنید:
سؤال:
☜ Expression موجود در محاسبه
☜ Expression موجود در شرط
☜ مقدار نهایی
☜ آیا پیام نمایش داده میشود؟
#تمرین_سطح_1
#تمرین
در کد زیر Expressionها را پیدا کنید:
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
int a, b, result;
a = 20;
b = 30;
result = a + b;
if (result > 40)
{
printf('Result is greater than 40');
}
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
سؤال:
☜ Expression موجود در محاسبه
result چیست؟☜ Expression موجود در شرط
if چیست؟☜ مقدار نهایی
result چقدر است؟☜ آیا پیام نمایش داده میشود؟
#تمرین_سطح_1
#تمرین
🔰 سطح 1 - بخش 9 🔰
📌 Variable در DPL
در پستهای قبلی با Comment، Statement و Expression آشنا شدیم.
حالا به یکی از مهمترین مفاهیم برنامهنویسی میرسیم:
تقریباً در تمام برنامههای DPL که در ادامه دوره مینویسیم، با Variableها سروکار خواهیم داشت.
🔹 Variable چیست؟
Variable را میتوان یک محل نامگذاریشده برای نگهداری یک مقدار در نظر گرفت.
فرض کنید میخواهیم عدد
میتوانیم یک Variable به نام
حالا هرجا در برنامه از
🔹 چرا به Variable نیاز داریم؟
فرض کنید میخواهیم چند بار از عدد
اگر مقدار را مستقیماً در همهجا بنویسیم:
مدیریت برنامه سخت میشود.
اما اگر آن را داخل یک Variable قرار دهیم:
از این به بعد فقط کافی است از:
استفاده کنیم.
اگر مقدار power تغییر کند، فقط مقدار Variable را تغییر میدهیم.
🔹 تعریف Variable
در DPL باید نوع Variable را مشخص کنیم.
برای مثال یک Variable از نوع
در اینجا:
نوع Variable است.
و:
نام Variable است.
بنابراین:
یعنی یک Variable عدد صحیح به نام
🔹 مقداردهی به Variable
بعد از تعریف Variable میتوانیم به آن مقدار بدهیم.
در این برنامه:
1️⃣ مرحله اول
Variable تعریف میشود:
2️⃣ مرحله دوم
مقدار
3️⃣ مرحله سوم
مقدار Variable چاپ میشود:
خروجی:
🔄 مقدار Variable میتواند تغییر کند
یکی از ویژگیهای مهم Variable این است که مقدار آن ثابت نیست.
مثلاً:
خروجی:
یعنی ابتدا:
و بعد:
🔹 نامگذاری Variableها
انتخاب نام مناسب برای Variable بسیار مهم است.
نامهایی مانند:
ممکن است در مثالهای خیلی ساده قابل قبول باشند، اما در پروژههای واقعی خوانایی کد را کاهش میدهند.
بهتر است نام Variable نشاندهنده مفهوم آن باشد.
مثلاً:
این نامها خیلی خواناتر هستند.
مثلاً وقتی میبینیم:
تقریباً بدون توضیح هم متوجه منطق برنامه میشویم.
#سطح_1
#DIgSILENT #PowerFactory #DPL #PowerSystems #مهندسی_برق
✅ @PowerFactoryDIgSILENT
📌 Variable در DPL
در پستهای قبلی با Comment، Statement و Expression آشنا شدیم.
حالا به یکی از مهمترین مفاهیم برنامهنویسی میرسیم:
🔹 Variable یا متغیر چیست؟
تقریباً در تمام برنامههای DPL که در ادامه دوره مینویسیم، با Variableها سروکار خواهیم داشت.
🔹 Variable چیست؟
Variable را میتوان یک محل نامگذاریشده برای نگهداری یک مقدار در نظر گرفت.
فرض کنید میخواهیم عدد
100 را در برنامه نگهداری کنیم.میتوانیم یک Variable به نام
power داشته باشیم:power → 100
حالا هرجا در برنامه از
power استفاده کنیم، مقدار ذخیرهشده در آن را در اختیار خواهیم داشت.🔹 چرا به Variable نیاز داریم؟
فرض کنید میخواهیم چند بار از عدد
100 استفاده کنیم.اگر مقدار را مستقیماً در همهجا بنویسیم:
100
100
100
100
مدیریت برنامه سخت میشود.
اما اگر آن را داخل یک Variable قرار دهیم:
power = 100
از این به بعد فقط کافی است از:
power
استفاده کنیم.
اگر مقدار power تغییر کند، فقط مقدار Variable را تغییر میدهیم.
🔹 تعریف Variable
در DPL باید نوع Variable را مشخص کنیم.
برای مثال یک Variable از نوع
int:! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
int power;
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
در اینجا:
int
نوع Variable است.
و:
power
نام Variable است.
بنابراین:
int power;
یعنی یک Variable عدد صحیح به نام
power تعریف کن.🔹 مقداردهی به Variable
بعد از تعریف Variable میتوانیم به آن مقدار بدهیم.
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
int power;
power = 100;
printf('Power = %d MW', power);
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
در این برنامه:
1️⃣ مرحله اول
Variable تعریف میشود:
int power;
2️⃣ مرحله دوم
مقدار
100 به آن داده میشود:power = 100;
3️⃣ مرحله سوم
مقدار Variable چاپ میشود:
printf('Power = %d MW', power);خروجی:
power = 100 MW
🔄 مقدار Variable میتواند تغییر کند
یکی از ویژگیهای مهم Variable این است که مقدار آن ثابت نیست.
مثلاً:
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
int power;
power = 100;
printf('Power = %d MW', power);
power = 150;
printf('Power = %d MW', power);
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
خروجی:
Power = 100 MW
Power = 150 MW
یعنی ابتدا:
power → 100
و بعد:
power → 150
🔹 نامگذاری Variableها
انتخاب نام مناسب برای Variable بسیار مهم است.
نامهایی مانند:
x
a
b
n
ممکن است در مثالهای خیلی ساده قابل قبول باشند، اما در پروژههای واقعی خوانایی کد را کاهش میدهند.
بهتر است نام Variable نشاندهنده مفهوم آن باشد.
مثلاً:
power
voltage
current
loading
lineCount
busCount
totalPower
این نامها خیلی خواناتر هستند.
مثلاً وقتی میبینیم:
totalPower = power1 + power2;
تقریباً بدون توضیح هم متوجه منطق برنامه میشویم.
#سطح_1
#DIgSILENT #PowerFactory #DPL #PowerSystems #مهندسی_برق
✅ @PowerFactoryDIgSILENT
𝐏𝐨𝐰𝐞𝐫𝐅𝐚𝐜𝐭𝐨𝐫𝐲 𝐃𝐈𝐠𝐒𝐈𝐋𝐄𝐍𝐓 | آموزش نرم افزار دیگسایلنت پاورفکتوری
🔰 سطح 1 - بخش 9 🔰 📌 Variable در DPL در پستهای قبلی با Comment، Statement و Expression آشنا شدیم. حالا به یکی از مهمترین مفاهیم برنامهنویسی میرسیم: 🔹 Variable یا متغیر چیست؟ تقریباً در تمام برنامههای DPL که در ادامه دوره مینویسیم، با Variableها سروکار…
🔰 ادامه سطح 1 - بخش 9 🔰
🔹 Variable و Expression
حالا ارتباط Variable و Expression را که در پست قبل یاد گرفتیم ببینیم.
در اینجا:
یک Expression است.
و:
یک Variable است که نتیجه Expression را نگهداری میکند.
در نتیجه:
🔹 چند Variable در یک تعریف
در صورت همنوع بودن Variableها میتوان آنها را در یک Statement تعریف کرد.
مثلاً:
در اینجا سه Variable از نوع
البته در پروژههای مهندسی واقعی باید نوع داده را متناسب با ماهیت مقدار انتخاب کنیم؛ مثلاً برای مقادیر اعشاری معمولاً به نوع مناسب عددی نیاز خواهیم داشت که در پستهای بعدی بررسی میکنیم.
🔹 Variableها فقط عدد نیستند
یکی از نکات بسیار مهم در DPL این است که Variable میتواند انواع مختلفی داشته باشد.
در ادامه دوره با مواردی مانند:
کار خواهیم کرد.
مثلاً:
و این بخش یکی از پایههای اصلی دوره خواهد بود.
🔥 Variable در PowerFactory
اینجا Variableها اهمیت بسیار بیشتری پیدا میکنند.
فرض کنید در آینده میخواهیم تعداد خطوط شبکه را نگهداری کنیم:
یا مقدار Loading یک خط را:
یا یک Object مربوط به خط را:
یا مجموعهای از خطوط را:
در نتیجه Variableها پل ارتباطی بین منطق برنامه DPL و اطلاعات PowerFactory هستند.
⚠️ یک اشتباه رایج
نباید قبل از تعریف Variable از آن استفاده کنیم.
مثلاً این ساختار صحیح نیست:
اگر
ابتدا باید Variable را تعریف کنیم:
و سپس مقداردهی کنیم:
یعنی:
🧠 یک مثال کامل
بیایید مفاهیمی که تا اینجا یاد گرفتهایم را کنار هم قرار دهیم:
ساختار برنامه:
این الگو را در بسیاری از برنامههای آینده نیز خواهیم دید.
🎯 جمعبندی
در این پست یاد گرفتیم:
☜ Variable چیست؟
☜ چرا از Variable استفاده میکنیم.
☜ چگونه Variable تعریف کنیم.
☜ چگونه به Variable مقدار بدهیم.
☜ چگونه مقدار Variable را تغییر دهیم.
☜ چگونه Variable را در Expression استفاده کنیم.
☜ چگونه چند Variable تعریف کنیم.
☜ Variableها میتوانند انواع مختلفی داشته باشند.
☜ در PowerFactory، Variableها برای نگهداری مقادیر و Objectها اهمیت زیادی دارند.
⭐️ قانون طلایی
#سطح_1
#DIgSILENT #PowerFactory #DPL #PowerSystems #مهندسی_برق
✅ @PowerFactoryDIgSILENT
🔹 Variable و Expression
حالا ارتباط Variable و Expression را که در پست قبل یاد گرفتیم ببینیم.
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
int power1, power2, totalPower;
power1 = 100;
power2 = 150;
totalPower = power1 + power2;
printf('Total Power = %d MW', totalPower);
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
در اینجا:
power1 + power2
یک Expression است.
و:
totalPower
یک Variable است که نتیجه Expression را نگهداری میکند.
در نتیجه:
power1 = 100
power2 = 150
↓
power1 + power2
↓
totalPower = 250
🔹 چند Variable در یک تعریف
در صورت همنوع بودن Variableها میتوان آنها را در یک Statement تعریف کرد.
مثلاً:
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
int voltage, current, power;
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
در اینجا سه Variable از نوع
int داریم:voltage
current
power
البته در پروژههای مهندسی واقعی باید نوع داده را متناسب با ماهیت مقدار انتخاب کنیم؛ مثلاً برای مقادیر اعشاری معمولاً به نوع مناسب عددی نیاز خواهیم داشت که در پستهای بعدی بررسی میکنیم.
🔹 Variableها فقط عدد نیستند
یکی از نکات بسیار مهم در DPL این است که Variable میتواند انواع مختلفی داشته باشد.
در ادامه دوره با مواردی مانند:
Integer
Real
String
Boolean
Object
Set
کار خواهیم کرد.
مثلاً:
Integer ☜ عدد صحیح
Real ☜ عدد اعشاری
String ☜ متن
Boolean ☜ مقدار منطقی
Object ☜ یک Object از PowerFactory
Set ☜ مجموعهای از Objectها
و این بخش یکی از پایههای اصلی دوره خواهد بود.
🔥 Variable در PowerFactory
اینجا Variableها اهمیت بسیار بیشتری پیدا میکنند.
فرض کنید در آینده میخواهیم تعداد خطوط شبکه را نگهداری کنیم:
lineCount
یا مقدار Loading یک خط را:
loading
یا یک Object مربوط به خط را:
line
یا مجموعهای از خطوط را:
lines
در نتیجه Variableها پل ارتباطی بین منطق برنامه DPL و اطلاعات PowerFactory هستند.
⚠️ یک اشتباه رایج
نباید قبل از تعریف Variable از آن استفاده کنیم.
مثلاً این ساختار صحیح نیست:
power = 100;
اگر
power قبلاً تعریف نشده باشد.ابتدا باید Variable را تعریف کنیم:
int power;
و سپس مقداردهی کنیم:
power = 100;
یعنی:
تعریف
↓
مقداردهی
↓
استفاده
🧠 یک مثال کامل
بیایید مفاهیمی که تا اینجا یاد گرفتهایم را کنار هم قرار دهیم:
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
! Define variables
int power1, power2, totalPower;
! Assign values
power1 = 100;
power2 = 150;
! Calculate total power
totalPower = power1 + power2;
! Display result
printf('Total Power = %d MW', totalPower);
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
ساختار برنامه:
Comment
↓
Variable Definition
↓
Assignment
↓
Expression
↓
Result
↓
Output
این الگو را در بسیاری از برنامههای آینده نیز خواهیم دید.
🎯 جمعبندی
در این پست یاد گرفتیم:
☜ Variable چیست؟
☜ چرا از Variable استفاده میکنیم.
☜ چگونه Variable تعریف کنیم.
☜ چگونه به Variable مقدار بدهیم.
☜ چگونه مقدار Variable را تغییر دهیم.
☜ چگونه Variable را در Expression استفاده کنیم.
☜ چگونه چند Variable تعریف کنیم.
☜ Variableها میتوانند انواع مختلفی داشته باشند.
☜ در PowerFactory، Variableها برای نگهداری مقادیر و Objectها اهمیت زیادی دارند.
⭐️ قانون طلایی
Variable یک نام برای نگهداری و استفاده مجدد از یک مقدار در برنامه است.
#سطح_1
#DIgSILENT #PowerFactory #DPL #PowerSystems #مهندسی_برق
✅ @PowerFactoryDIgSILENT
𝐏𝐨𝐰𝐞𝐫𝐅𝐚𝐜𝐭𝐨𝐫𝐲 𝐃𝐈𝐠𝐒𝐈𝐋𝐄𝐍𝐓 | آموزش نرم افزار دیگسایلنت پاورفکتوری
🔰 ادامه سطح 1 - بخش 9 🔰 🔹 Variable و Expression حالا ارتباط Variable و Expression را که در پست قبل یاد گرفتیم ببینیم. ! =================================== ! ✅ Telegram: @PowerFactoryDIgSILENT ! =================================== int power1, power2, totalPower;…
🎯 تمرین شماره 9
برنامهای بنویسید که سه Variable برای موارد زیر داشته باشد:
سپس مجموع توانها را محاسبه کرده و نتیجه را نمایش دهید.
هدف تمرین:
استفاده همزمان از Variable + Assignment + Expression + Function.
#تمرین_سطح_1
#تمرین
برنامهای بنویسید که سه Variable برای موارد زیر داشته باشد:
Power 1 = 120
Power 2 = 180
Power 3 = 250
سپس مجموع توانها را محاسبه کرده و نتیجه را نمایش دهید.
هدف تمرین:
استفاده همزمان از Variable + Assignment + Expression + Function.
#تمرین_سطح_1
#تمرین
🔰 سطح 1 - بخش 10 🔰
📌 مقداردهی و تغییر مقدار Variable
در پست قبلی با مفهوم Variable آشنا شدیم و دیدیم که متغیر محلی برای نگهداری یک مقدار است.
اما یک سؤال مهم وجود دارد:
پاسخ این سؤال در مفهوم Assignment یا مقداردهی قرار دارد.
🔹 Assignment چیست؟
وقتی یک مقدار را به یک Variable نسبت میدهیم، در حال انجام Assignment هستیم.
ساختار کلی:
مثلاً:
در اینجا:
یعنی:
🔹 Assignment شامل دو طرف است
به این Statement دقت کنید:
سمت چپ:
Variable است.
سمت راست:
مقداری است که قرار است در Variable قرار بگیرد.
بنابراین:
🔹 مقدار Variable قابل تغییر است
همانطور که گفتیم، Variable یک مقدار ثابت نیست.
مثلاً:
خروجی:
یعنی مقدار Variable در طول اجرای برنامه تغییر کرده است:
🔹 مقداردهی میتواند با یک Expression انجام شود
مقدار سمت راست
میتوانیم یک Expression داشته باشیم.
مثلاً:
در اینجا:
سمت راست:
یک Expression است.
ابتدا Expression محاسبه میشود:
سپس نتیجه در
🔹 مقداردهی یک Variable با Variable دیگر
میتوان مقدار یک Variable را در Variable دیگری قرار داد.
مثلاً:
در اینجا ابتدا:
و سپس:
بنابراین مقدار
🔄 بعد از کپی شدن مقدار، دو Variable مستقل هستند
این نکته بسیار مهم است.
مثلاً:
در اینجا بعد از اجرای:
مقدار
بعداً:
باعث تغییر
نتیجه:
#سطح_1
#DIgSILENT #PowerFactory #DPL #PowerSystems #مهندسی_برق
✅ @PowerFactoryDIgSILENT
📌 مقداردهی و تغییر مقدار Variable
در پست قبلی با مفهوم Variable آشنا شدیم و دیدیم که متغیر محلی برای نگهداری یک مقدار است.
اما یک سؤال مهم وجود دارد:
🔹 چگونه یک مقدار را داخل Variable قرار دهیم و بعداً مقدار آن را تغییر دهیم؟
پاسخ این سؤال در مفهوم Assignment یا مقداردهی قرار دارد.
🔹 Assignment چیست؟
وقتی یک مقدار را به یک Variable نسبت میدهیم، در حال انجام Assignment هستیم.
ساختار کلی:
Variable = Value;
مثلاً:
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
int power;
power = 100;
printf('Power = %d MW', power);
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
در اینجا:
power = 100;
یعنی:
مقدار
100را در Variable به نام
powerقرار بده.
🔹 Assignment شامل دو طرف است
به این Statement دقت کنید:
power = 100;
سمت چپ:
power
Variable است.
سمت راست:
100
مقداری است که قرار است در Variable قرار بگیرد.
بنابراین:
Assignment
│
┌──────┴──────┐
↓ ↓
Variable Value
power 100
🔹 مقدار Variable قابل تغییر است
همانطور که گفتیم، Variable یک مقدار ثابت نیست.
مثلاً:
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
int power;
power = 100;
printf('Power = %d MW', power);
power = 200;
printf('Power = %d MW', power);
power = 350;
printf('Power = %d MW', power);
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
خروجی:
Power = 100 MW
Power = 200 MW
Power = 350 MW
یعنی مقدار Variable در طول اجرای برنامه تغییر کرده است:
power = 100
↓
power = 200
↓
power = 350
🔹 مقداردهی میتواند با یک Expression انجام شود
مقدار سمت راست
= الزاماً یک عدد ثابت نیست.میتوانیم یک Expression داشته باشیم.
مثلاً:
! ===================================
! Telegram: @PowerFactoryDIgSILENT
! ===================================
int power1, power2, totalPower;
power1 = 100;
power2 = 150;
totalPower = power1 + power2;
printf('Total Power = %d MW', totalPower);
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
در اینجا:
totalPower = power1 + power2;
سمت راست:
power1 + power2
یک Expression است.
ابتدا Expression محاسبه میشود:
100 + 150 = 250
سپس نتیجه در
totalPower قرار میگیرد:totalPower = 250
🔹 مقداردهی یک Variable با Variable دیگر
میتوان مقدار یک Variable را در Variable دیگری قرار داد.
مثلاً:
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
int power1, power2;
power1 = 250;
power2 = power1;
printf('Power 1 = %d MW', power1);
printf('Power 2 = %d MW', power2);
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
در اینجا ابتدا:
power1 = 250
و سپس:
power2 = power1
بنابراین مقدار
250 در power2 نیز قرار میگیرد.🔄 بعد از کپی شدن مقدار، دو Variable مستقل هستند
این نکته بسیار مهم است.
مثلاً:
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
int power1, power2;
power1 = 250;
power2 = power1;
power1 = 500;
printf('Power 1 = %d MW', power1);
printf('Power 2 = %d MW', power2);
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
در اینجا بعد از اجرای:
power2 = power1;
مقدار
250 در power2 قرار گرفته است.بعداً:
power1 = 500;
باعث تغییر
power2 نمیشود.نتیجه:
Power 1 = 500 MW
Power 2 = 250 MW
#سطح_1
#DIgSILENT #PowerFactory #DPL #PowerSystems #مهندسی_برق
✅ @PowerFactoryDIgSILENT
𝐏𝐨𝐰𝐞𝐫𝐅𝐚𝐜𝐭𝐨𝐫𝐲 𝐃𝐈𝐠𝐒𝐈𝐋𝐄𝐍𝐓 | آموزش نرم افزار دیگسایلنت پاورفکتوری
🔰 سطح 1 - بخش 10 🔰 📌 مقداردهی و تغییر مقدار Variable در پست قبلی با مفهوم Variable آشنا شدیم و دیدیم که متغیر محلی برای نگهداری یک مقدار است. اما یک سؤال مهم وجود دارد: 🔹 چگونه یک مقدار را داخل Variable قرار دهیم و بعداً مقدار آن را تغییر دهیم؟ پاسخ این سؤال…
🔰 ادامه سطح 1 - بخش 10 🔰
🔹 مقداردهی میتواند مرحلهای باشد
فرض کنید میخواهیم مجموع سه مقدار را محاسبه کنیم.
میتوانیم این کار را مرحلهبهمرحله انجام دهیم:
مقدار
در نتیجه:
🔹 Assignment با عملگرهای ریاضی
در Assignment میتوانیم از Expressionهای مختلف استفاده کنیم.
مثلاً:
ابتدا:
سپس:
یعنی:
و در نهایت:
⚠️ یک اشتباه بسیار مهم
علامت
در این دستور:
ما نمیگوییم:
بلکه میگوییم:
در نتیجه
مقایسهها و عملگرهای مقایسهای را در بخش مربوط به Operatorها بررسی خواهیم کرد.
🔹 ترتیب اجرای Assignmentها مهم است
به این مثال توجه کنید:
ابتدا:
سپس:
بنابراین:
اما اگر ترتیب را اشتباه کنیم، نتیجه مورد انتظار را نخواهیم داشت.
مثلاً در برنامههای واقعی باید قبل از استفاده از یک Variable، مطمئن شویم مقدار مناسبی در آن قرار گرفته است.
🔥 Assignment در پروژههای PowerFactory
حالا این مفهوم ساده را به کاربردهای واقعی DPL نزدیک کنیم.
فرض کنید در آینده مقدار Loading یک تجهیز را از PowerFactory دریافت کردهایم و در یک Variable ذخیره میکنیم.
بهصورت مفهومی:
مثلاً:
در اینجا Assignment یکی از مراحل اصلی پردازش اطلاعات خواهد بود.
#سطح_1
#DIgSILENT #PowerFactory #DPL #PowerSystems #مهندسی_برق
✅ @PowerFactoryDIgSILENT
🔹 مقداردهی میتواند مرحلهای باشد
فرض کنید میخواهیم مجموع سه مقدار را محاسبه کنیم.
میتوانیم این کار را مرحلهبهمرحله انجام دهیم:
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
int power1, power2, power3, totalPower;
power1 = 100;
power2 = 200;
power3 = 300;
totalPower = power1;
totalPower = totalPower + power2;
totalPower = totalPower + power3;
printf('Total Power = %d MW', totalPower);
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
مقدار
totalPower به ترتیب تغییر میکند:totalPower = 100
totalPower = 100 + 200
= 300
totalPower = 300 + 300
= 600
در نتیجه:
Total Power = 600 MW
🔹 Assignment با عملگرهای ریاضی
در Assignment میتوانیم از Expressionهای مختلف استفاده کنیم.
مثلاً:
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
int value;
value = 100;
value = value + 20;
printf('Value = %d', value);
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
ابتدا:
value = 100
سپس:
value = value + 20
یعنی:
value = 100 + 20
و در نهایت:
value = 120
⚠️ یک اشتباه بسیار مهم
علامت
= در Assignment به معنی «برابر بودن» در مفهوم ریاضی نیست.در این دستور:
power = 100;
ما نمیگوییم:
power از نظر ریاضی برابر 100 است.
بلکه میگوییم:
مقدار 100 را در Variable به نام Power قرار بده.
در نتیجه
= را در این مرحله بهتر است عملگر مقداردهی در نظر بگیریم.مقایسهها و عملگرهای مقایسهای را در بخش مربوط به Operatorها بررسی خواهیم کرد.
🔹 ترتیب اجرای Assignmentها مهم است
به این مثال توجه کنید:
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
int value, result;
value = 10;
result = value + 5;
printf('Result = %d', result);
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
ابتدا:
value = 10
سپس:
result = value + 5
بنابراین:
result = 15
اما اگر ترتیب را اشتباه کنیم، نتیجه مورد انتظار را نخواهیم داشت.
مثلاً در برنامههای واقعی باید قبل از استفاده از یک Variable، مطمئن شویم مقدار مناسبی در آن قرار گرفته است.
🔥 Assignment در پروژههای PowerFactory
حالا این مفهوم ساده را به کاربردهای واقعی DPL نزدیک کنیم.
فرض کنید در آینده مقدار Loading یک تجهیز را از PowerFactory دریافت کردهایم و در یک Variable ذخیره میکنیم.
بهصورت مفهومی:
Object
↓
Attribute
↓
Value
↓
Variable
↓
Analysis
مثلاً:
Line
↓
Loading
↓
loading
↓
loading > 100
↓
Overload
در اینجا Assignment یکی از مراحل اصلی پردازش اطلاعات خواهد بود.
#سطح_1
#DIgSILENT #PowerFactory #DPL #PowerSystems #مهندسی_برق
✅ @PowerFactoryDIgSILENT
𝐏𝐨𝐰𝐞𝐫𝐅𝐚𝐜𝐭𝐨𝐫𝐲 𝐃𝐈𝐠𝐒𝐈𝐋𝐄𝐍𝐓 | آموزش نرم افزار دیگسایلنت پاورفکتوری
🔰 ادامه سطح 1 - بخش 10 🔰 🔹 مقداردهی میتواند مرحلهای باشد فرض کنید میخواهیم مجموع سه مقدار را محاسبه کنیم. میتوانیم این کار را مرحلهبهمرحله انجام دهیم: ! =================================== ! ✅ Telegram: @PowerFactoryDIgSILENT ! ===================================…
🔰 ادامه سطح 1 - بخش 10 🔰
🧠 یک مثال ترکیبی
در مثال زیر چند مفهوم قبلی را همزمان میبینیم:
خروجی:
ساختار برنامه:
⚠️ نکات مهم
1️⃣ Variable باید از قبل تعریف شده باشد
قبل از:
باید Variable مناسب تعریف شده باشد.
2️⃣ نوع داده باید مناسب باشد
اگر قرار است مقدار اعشاری ذخیره کنیم، نمیتوانیم بدون توجه به نوع داده، آن را مانند یک عدد صحیح مدیریت کنیم.
انواع داده و تفاوت Integer و Real را در پستهای بعدی بهصورت دقیق بررسی خواهیم کرد.
3️⃣ مقدار قبلی ممکن است با مقدار جدید جایگزین شود
وقتی مینویسیم:
در نهایت مقدار فعلی
🎯 جمعبندی
در این پست یاد گرفتیم:
☜ Assignment چیست؟
☜ چگونه یک Variable را مقداردهی کنیم.
☜ چگونه مقدار Variable را تغییر دهیم.
☜ چگونه از Variable دیگر برای مقداردهی استفاده کنیم.
☜ چگونه یک Expression را به Variable اختصاص دهیم.
☜ چرا ترتیب Assignmentها اهمیت دارد.
☜ مفهوم
☜ Assignment چگونه در پردازش اطلاعات PowerFactory کاربرد پیدا میکند.
⭐️ قانون طلایی
#سطح_1
#DIgSILENT #PowerFactory #DPL #PowerSystems #مهندسی_برق
✅ @PowerFactoryDIgSILENT
🧠 یک مثال ترکیبی
در مثال زیر چند مفهوم قبلی را همزمان میبینیم:
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
! Define variables
int basePower, additionalPower, totalPower;
! Initial values
basePower = 500;
additionalPower = 150;
! Calculate total power
totalPower = basePower + additionalPower;
printf('Base Power = %d MW', basePower);
printf('Additional Power = %d MW', additionalPower);
printf('Total Power = %d MW', totalPower);
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
خروجی:
Base Power = 500 MW
Additional Power = 150 MW
Total Power = 650 MW
ساختار برنامه:
Variable Definition
↓
Assignment
↓
Expression
↓
Assignment
↓
Output
⚠️ نکات مهم
1️⃣ Variable باید از قبل تعریف شده باشد
قبل از:
power = 100;
باید Variable مناسب تعریف شده باشد.
2️⃣ نوع داده باید مناسب باشد
اگر قرار است مقدار اعشاری ذخیره کنیم، نمیتوانیم بدون توجه به نوع داده، آن را مانند یک عدد صحیح مدیریت کنیم.
انواع داده و تفاوت Integer و Real را در پستهای بعدی بهصورت دقیق بررسی خواهیم کرد.
3️⃣ مقدار قبلی ممکن است با مقدار جدید جایگزین شود
وقتی مینویسیم:
power = 100;
power = 200;
در نهایت مقدار فعلی
power برابر 200 خواهد بود.🎯 جمعبندی
در این پست یاد گرفتیم:
☜ Assignment چیست؟
☜ چگونه یک Variable را مقداردهی کنیم.
☜ چگونه مقدار Variable را تغییر دهیم.
☜ چگونه از Variable دیگر برای مقداردهی استفاده کنیم.
☜ چگونه یک Expression را به Variable اختصاص دهیم.
☜ چرا ترتیب Assignmentها اهمیت دارد.
☜ مفهوم
= در Assignment چیست؟☜ Assignment چگونه در پردازش اطلاعات PowerFactory کاربرد پیدا میکند.
⭐️ قانون طلایی
در Assignment، نتیجه سمت راست محاسبه میشود و مقدار حاصل در Variable سمت چپ قرار میگیرد.
#سطح_1
#DIgSILENT #PowerFactory #DPL #PowerSystems #مهندسی_برق
✅ @PowerFactoryDIgSILENT
𝐏𝐨𝐰𝐞𝐫𝐅𝐚𝐜𝐭𝐨𝐫𝐲 𝐃𝐈𝐠𝐒𝐈𝐋𝐄𝐍𝐓 | آموزش نرم افزار دیگسایلنت پاورفکتوری
🔰 ادامه سطح 1 - بخش 10 🔰 🧠 یک مثال ترکیبی در مثال زیر چند مفهوم قبلی را همزمان میبینیم: ! =================================== ! ✅ Telegram: @PowerFactoryDIgSILENT ! =================================== ! Define variables int basePower, additionalPower,…
🎯 تمرین شماره 10
برنامهای بنویسید که:
یک Variable به نام
مقدار اولیه آن را
مقدار آن را به
سپس
مقدار نهایی را با
انتظار داریم مقدار نهایی برابر باشد با:
#تمرین_سطح_1
#تمرین
برنامهای بنویسید که:
یک Variable به نام
load تعریف کند.مقدار اولیه آن را
100 قرار دهد.مقدار آن را به
150 تغییر دهد.سپس
50 واحد به مقدار آن اضافه کند.مقدار نهایی را با
printf نمایش دهد.انتظار داریم مقدار نهایی برابر باشد با:
200
#تمرین_سطح_1
#تمرین
🔰 سطح 1 - بخش 11 🔰
📌 انواع داده در DPL
تا اینجا با Variable، Assignment و Expression آشنا شدیم.
اما یک سؤال مهم وجود دارد:
پاسخ در مفهوم Data Type یا نوع داده است.
در DPL، انتخاب نوع داده اهمیت زیادی دارد؛ چون دادهای که با آن کار میکنیم ممکن است یک عدد صحیح، عدد اعشاری، متن، مقدار منطقی، یک Object از PowerFactory یا مجموعهای از Objectها باشد.
1️⃣ Integer — عدد صحیح
برای نگهداری مقادیر عددی بدون بخش اعشاری از نوع صحیح استفاده میکنیم.
مثلاً:
یک مثال مرتبط با PowerFactory:
خروجی:
کاربردهای رایج Integer
☜ تعداد تجهیزات
☜ شماره سناریو
☜ شمارنده حلقهها
☜ تعداد Busها
☜ تعداد خطوط
☜ تعداد ترانسفورماتورها
☜ Indexها
2️⃣ Real — عدد اعشاری
در مطالعات سیستم قدرت، با مقادیر اعشاری بسیار زیاد سروکار داریم.
مثلاً:
بنابراین برای چنین دادههایی باید از نوع عددی مناسب برای مقادیر اعشاری استفاده کنیم.
در DPL این مقادیر با نوع
مثلاً:
خروجی:
مثال واقعیتر
فرض کنید حد مجاز Loading را 100 درصد در نظر گرفتهایم:
خروجی:
این نوع داده در پروژههای Load Flow، Short Circuit و Voltage Analysis بسیار پرکاربرد خواهد بود.
⚠️ Integer یا Double؟
این تفاوت را جدی بگیرید.
اگر داده ما:
باشد، یک مقدار صحیح است.
اما اگر:
باشد، باید از نوعی استفاده کنیم که بتواند بخش اعشاری را نگهداری کند.
مثلاً در یک پروژه واقعی:
3️⃣ String — داده متنی
گاهی دادهای که با آن کار میکنیم عدد نیست؛ بلکه متن است.
در PowerFactory با نام تجهیزات بسیار زیاد سروکار داریم.
مثلاً:
برای نگهداری چنین اطلاعاتی از
خروجی:
🔹 String در گزارشگیری
فرض کنید میخواهیم نام یک تجهیز را همراه با نتیجه تحلیل نمایش دهیم:
خروجی:
این ترکیب String + Double در گزارشگیریهای آینده بسیار مهم خواهد بود.
#سطح_1
#DIgSILENT #PowerFactory #DPL #PowerSystems #مهندسی_برق
✅ @PowerFactoryDIgSILENT
📌 انواع داده در DPL
تا اینجا با Variable، Assignment و Expression آشنا شدیم.
اما یک سؤال مهم وجود دارد:
🔹 وقتی میخواهیم یک Variable تعریف کنیم، از کجا بدانیم باید
intاستفاده کنیم یا
doubleیا
stringیا یک نوع دیگر؟
پاسخ در مفهوم Data Type یا نوع داده است.
در DPL، انتخاب نوع داده اهمیت زیادی دارد؛ چون دادهای که با آن کار میکنیم ممکن است یک عدد صحیح، عدد اعشاری، متن، مقدار منطقی، یک Object از PowerFactory یا مجموعهای از Objectها باشد.
1️⃣ Integer — عدد صحیح
برای نگهداری مقادیر عددی بدون بخش اعشاری از نوع صحیح استفاده میکنیم.
مثلاً:
تعداد خطوط = 125
تعداد Busها = 48
تعداد ترانسفورماتورها = 12
یک مثال مرتبط با PowerFactory:
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
int lineCount;
lineCount = 125;
printf('Number of Lines = %d', lineCount);
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
خروجی:
Number of Lines = 125
کاربردهای رایج Integer
☜ تعداد تجهیزات
☜ شماره سناریو
☜ شمارنده حلقهها
☜ تعداد Busها
☜ تعداد خطوط
☜ تعداد ترانسفورماتورها
☜ Indexها
2️⃣ Real — عدد اعشاری
در مطالعات سیستم قدرت، با مقادیر اعشاری بسیار زیاد سروکار داریم.
مثلاً:
Voltage = 0.987 pu
Loading = 87.35 %
Power = 125.6 MW
Current = 456.72 A
بنابراین برای چنین دادههایی باید از نوع عددی مناسب برای مقادیر اعشاری استفاده کنیم.
در DPL این مقادیر با نوع
double تعریف میشوند.مثلاً:
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
double voltage;
voltage = 0.987;
printf('Bus Voltage = %.3f pu', voltage);
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
خروجی:
Bus Voltage = 0.987 pu
مثال واقعیتر
فرض کنید حد مجاز Loading را 100 درصد در نظر گرفتهایم:
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
double loading;
loading = 103.75;
printf('Line Loading = %.2f %%', loading);
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
خروجی:
Line Loading = 103.75 %
این نوع داده در پروژههای Load Flow، Short Circuit و Voltage Analysis بسیار پرکاربرد خواهد بود.
⚠️ Integer یا Double؟
این تفاوت را جدی بگیرید.
اگر داده ما:
125
باشد، یک مقدار صحیح است.
اما اگر:
125.75
باشد، باید از نوعی استفاده کنیم که بتواند بخش اعشاری را نگهداری کند.
مثلاً در یک پروژه واقعی:
Number of Lines → Integer
Bus Voltage → Double
Line Loading → Double
Active Power → Double
3️⃣ String — داده متنی
گاهی دادهای که با آن کار میکنیم عدد نیست؛ بلکه متن است.
در PowerFactory با نام تجهیزات بسیار زیاد سروکار داریم.
مثلاً:
Line_230kV_01
Bus_230_01
TR_230_63_01
Substation_A
برای نگهداری چنین اطلاعاتی از
string استفاده میکنیم.! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
string lineName;
lineName = 'Line_230kV_01';
printf('Line Name = %s', lineName);
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
خروجی:
Line Name = Line_230kV_01
🔹 String در گزارشگیری
فرض کنید میخواهیم نام یک تجهیز را همراه با نتیجه تحلیل نمایش دهیم:
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
string lineName;
double loading;
lineName = 'Line_230kV_01';
loading = 108.42;
printf('Line: %s | Loading: %.2f %%', lineName, loading);
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
خروجی:
Line: Line_230kV_01 | Loading: 108.42 %
این ترکیب String + Double در گزارشگیریهای آینده بسیار مهم خواهد بود.
#سطح_1
#DIgSILENT #PowerFactory #DPL #PowerSystems #مهندسی_برق
✅ @PowerFactoryDIgSILENT
𝐏𝐨𝐰𝐞𝐫𝐅𝐚𝐜𝐭𝐨𝐫𝐲 𝐃𝐈𝐠𝐒𝐈𝐋𝐄𝐍𝐓 | آموزش نرم افزار دیگسایلنت پاورفکتوری
🔰 سطح 1 - بخش 11 🔰 📌 انواع داده در DPL تا اینجا با Variable، Assignment و Expression آشنا شدیم. اما یک سؤال مهم وجود دارد: 🔹 وقتی میخواهیم یک Variable تعریف کنیم، از کجا بدانیم باید int استفاده کنیم یا double یا string یا یک نوع دیگر؟ پاسخ در مفهوم…
🔰 ادامه سطح 1 - بخش 11 🔰
4️⃣ Boolean — مقدار منطقی
گاهی لازم نیست یک عدد یا متن ذخیره کنیم.
فقط میخواهیم بدانیم:
برای این نوع داده از مقدار منطقی استفاده میکنیم.
مثلاً:
یا:
یک مثال مفهومی:
منطق برنامه:
⚠️ توجه: در مثالهای آموزشی این پست هدف نشان دادن نقش نوع داده منطقی است؛ جزئیات Syntax مربوط به Boolean و شرطها را در بخش Operator و
5️⃣ Object — نگهداری Reference به یک Object
اینجا وارد بخش بسیار مهم DPL میشویم.
در PowerFactory تجهیزات پروژه بهصورت Object وجود دارند.
مثلاً:
در DPL میتوانیم یک Variable داشته باشیم که به یک Object اشاره کند.
بهصورت مفهومی:
این مفهوم بعداً برای کار با Objectهای واقعی PowerFactory بسیار مهم خواهد بود.
مثلاً وقتی میخواهیم:
باید بتوانیم Reference آن Object را در یک Variable نگهداری کنیم.
6️⃣ Set — مجموعهای از Objectها
حالا فرض کنید فقط یک خط نداریم.
شبکه ما شامل:
است.
نمیتوانیم برای هر خط یک Variable مستقل تعریف کنیم.
اینجاست که Set اهمیت پیدا میکند.
Set را میتوان بهصورت ساده اینگونه تصور کرد:
در آینده میتوانیم مثلاً مجموعهای از خطوط مرتبط را پیدا کنیم و سپس با یک Loop روی آنها حرکت کنیم.
این موضوع یکی از مهمترین کاربردهای Set در DPL است.
🔥 یک مثال واقعیتر از ترکیب انواع داده
فرض کنید میخواهیم اطلاعات یک خط را برای گزارش نگهداری کنیم:
یعنی:
این دقیقاً همان چیزی است که در پروژههای واقعی DPL با آن روبهرو خواهیم شد.
#سطح_1
#DIgSILENT #PowerFactory #DPL #PowerSystems #مهندسی_برق
✅ @PowerFactoryDIgSILENT
4️⃣ Boolean — مقدار منطقی
گاهی لازم نیست یک عدد یا متن ذخیره کنیم.
فقط میخواهیم بدانیم:
آیا یک شرط برقرار است یا خیر؟
برای این نوع داده از مقدار منطقی استفاده میکنیم.
مثلاً:
Overloaded = True
یا:
Overloaded = False
یک مثال مفهومی:
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
int loading;
bool overloaded;
loading = 105;
overloaded = loading > 100;
if (overloaded)
{
printf('Line is overloaded');
}
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
منطق برنامه:
Loading = 105
↓
105 > 100
↓
True
↓
Overloaded = True
↓
Line is overloaded
⚠️ توجه: در مثالهای آموزشی این پست هدف نشان دادن نقش نوع داده منطقی است؛ جزئیات Syntax مربوط به Boolean و شرطها را در بخش Operator و
if دقیقتر بررسی خواهیم کرد.5️⃣ Object — نگهداری Reference به یک Object
اینجا وارد بخش بسیار مهم DPL میشویم.
در PowerFactory تجهیزات پروژه بهصورت Object وجود دارند.
مثلاً:
ElmLne → Line
ElmTerm → Terminal / Bus
ElmTr2 → 2-Winding Transformer
ElmLod → Load
ElmSym → Synchronous Machine
در DPL میتوانیم یک Variable داشته باشیم که به یک Object اشاره کند.
بهصورت مفهومی:
line
↓
Line Object
↓
Line_230kV_01
این مفهوم بعداً برای کار با Objectهای واقعی PowerFactory بسیار مهم خواهد بود.
مثلاً وقتی میخواهیم:
«خط موردنظر را پیدا کن و Loading آن را بخوان»
باید بتوانیم Reference آن Object را در یک Variable نگهداری کنیم.
6️⃣ Set — مجموعهای از Objectها
حالا فرض کنید فقط یک خط نداریم.
شبکه ما شامل:
Line 1
Line 2
Line 3
...
Line 500
است.
نمیتوانیم برای هر خط یک Variable مستقل تعریف کنیم.
اینجاست که Set اهمیت پیدا میکند.
Set را میتوان بهصورت ساده اینگونه تصور کرد:
Set
│
├── Line 1
├── Line 2
├── Line 3
├── Line 4
└── ...
در آینده میتوانیم مثلاً مجموعهای از خطوط مرتبط را پیدا کنیم و سپس با یک Loop روی آنها حرکت کنیم.
این موضوع یکی از مهمترین کاربردهای Set در DPL است.
🔥 یک مثال واقعیتر از ترکیب انواع داده
فرض کنید میخواهیم اطلاعات یک خط را برای گزارش نگهداری کنیم:
نام خط → String
طول خط → Double
Loading → Double
تعداد خطوط → Integer
وضعیت → Boolean
خود خط → Object
مجموع خطوط → Set
یعنی:
Line Name → String
Length → Double
Loading → Double
Line Count → Integer
Overloaded → Boolean
Line → Object
Lines → Set
این دقیقاً همان چیزی است که در پروژههای واقعی DPL با آن روبهرو خواهیم شد.
#سطح_1
#DIgSILENT #PowerFactory #DPL #PowerSystems #مهندسی_برق
✅ @PowerFactoryDIgSILENT
𝐏𝐨𝐰𝐞𝐫𝐅𝐚𝐜𝐭𝐨𝐫𝐲 𝐃𝐈𝐠𝐒𝐈𝐋𝐄𝐍𝐓 | آموزش نرم افزار دیگسایلنت پاورفکتوری
🔰 ادامه سطح 1 - بخش 11 🔰 4️⃣ Boolean — مقدار منطقی گاهی لازم نیست یک عدد یا متن ذخیره کنیم. فقط میخواهیم بدانیم: آیا یک شرط برقرار است یا خیر؟ برای این نوع داده از مقدار منطقی استفاده میکنیم. مثلاً: Overloaded = True یا: Overloaded = False یک مثال مفهومی:…
🔰 ادامه سطح 1 - بخش 11 🔰
🧠 یک سناریوی PowerFactory را تصور کنیم
فرض کنید میخواهیم یک برنامه برای بررسی Loading خطوط بسازیم.
منطق برنامه:
در این فرآیند تقریباً تمام انواع دادهای که امروز یاد گرفتیم درگیر میشوند.
🔹 مثال ترکیبی
مثلاً اطلاعات یک خط را بهصورت مفهومی در Variableهای مختلف نگهداری میکنیم:
منطق برنامه:
و خروجی تقریباً به این شکل خواهد بود:
⚠️ یک نکته بسیار مهم
در DPL، Object و Set را با یکدیگر اشتباه نگیرید.
مثلاً:
ولی:
مثلاً:
در بخشهای بعدی این تفاوت را بهصورت عملی و با Objectهای واقعی PowerFactory بررسی خواهیم کرد.
🎯 جمعبندی
در این پست با انواع داده مهم DPL آشنا شدیم:
برای مقادیر صحیح مثل تعداد تجهیزات
برای مقادیر اعشاری مثل ولتاژ، توان و Loading
برای متن و نام تجهیزات.
برای وضعیتهای منطقی مثل Overloaded / Normal
برای نگهداری Reference یک Object از PowerFactory
برای نگهداری مجموعهای از Objectها.
و مهمتر از همه یاد گرفتیم که انتخاب Data Type باید بر اساس ماهیت واقعی داده انجام شود.
#سطح_1
#DIgSILENT #PowerFactory #DPL #PowerSystems #مهندسی_برق
✅ @PowerFactoryDIgSILENT
🧠 یک سناریوی PowerFactory را تصور کنیم
فرض کنید میخواهیم یک برنامه برای بررسی Loading خطوط بسازیم.
منطق برنامه:
Lines
↓
Set
↓
انتخاب یک Line
↓
Object
↓
Loading
↓
Double
↓
Loading > 100 ?
⬋ ⬊
True False
↓ ↓
Overloaded Normal
در این فرآیند تقریباً تمام انواع دادهای که امروز یاد گرفتیم درگیر میشوند.
🔹 مثال ترکیبی
مثلاً اطلاعات یک خط را بهصورت مفهومی در Variableهای مختلف نگهداری میکنیم:
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
string lineName;
double loading;
int lineNumber;
bool overloaded;
lineNumber = 1;
lineName = 'Line_230kV_01';
loading = 108.42;
overloaded = loading > 100;
printf('Line %d: %s', lineNumber, lineName);
printf('Loading = %.2f %%', loading);
if (overloaded)
{
printf('Status = OVERLOADED');
}
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
منطق برنامه:
lineNumber → 1
lineName → Line_230kV_01
loading → 108.42
overloaded → True
و خروجی تقریباً به این شکل خواهد بود:
Line 1: Line_230kV_01
Loading = 108.42 %
Status = OVERLOADED
⚠️ یک نکته بسیار مهم
در DPL، Object و Set را با یکدیگر اشتباه نگیرید.
مثلاً:
Object
↓
یک تجهیز
ولی:
Set
↓
مجموعهای از تجهیزات
مثلاً:
line
↓
یک Line
lines
↓
مجموعهای از Lineها
در بخشهای بعدی این تفاوت را بهصورت عملی و با Objectهای واقعی PowerFactory بررسی خواهیم کرد.
🎯 جمعبندی
در این پست با انواع داده مهم DPL آشنا شدیم:
intبرای مقادیر صحیح مثل تعداد تجهیزات
doubleبرای مقادیر اعشاری مثل ولتاژ، توان و Loading
stringبرای متن و نام تجهیزات.
boolبرای وضعیتهای منطقی مثل Overloaded / Normal
objectبرای نگهداری Reference یک Object از PowerFactory
setبرای نگهداری مجموعهای از Objectها.
و مهمتر از همه یاد گرفتیم که انتخاب Data Type باید بر اساس ماهیت واقعی داده انجام شود.
#سطح_1
#DIgSILENT #PowerFactory #DPL #PowerSystems #مهندسی_برق
✅ @PowerFactoryDIgSILENT
𝐏𝐨𝐰𝐞𝐫𝐅𝐚𝐜𝐭𝐨𝐫𝐲 𝐃𝐈𝐠𝐒𝐈𝐋𝐄𝐍𝐓 | آموزش نرم افزار دیگسایلنت پاورفکتوری
🔰 ادامه سطح 1 - بخش 11 🔰 🧠 یک سناریوی PowerFactory را تصور کنیم فرض کنید میخواهیم یک برنامه برای بررسی Loading خطوط بسازیم. منطق برنامه: Lines ↓ Set ↓ انتخاب یک Line …
🎯 تمرین شماره 11
فرض کنید میخواهیم اطلاعات یک ترانسفورماتور را برای تحلیل نگهداری کنیم.
برای هر مورد مشخص کنید چه نوع دادهای مناسب است:
نام ترانسفورماتور
توان نامی، مثلاً 160 MVA
تعداد ترانسفورماتورها
وضعیت Overload
خود Object ترانسفورماتور
مجموعه تمام ترانسفورماتورها
💡 راهنمای تمرین
به این سؤال فکر کنید:
پاسخ صحیح این تمرین پایه بسیاری از Scriptهای آینده ما خواهد بود.
#تمرین_سطح_1
#تمرین
فرض کنید میخواهیم اطلاعات یک ترانسفورماتور را برای تحلیل نگهداری کنیم.
برای هر مورد مشخص کنید چه نوع دادهای مناسب است:
نام ترانسفورماتور
توان نامی، مثلاً 160 MVA
تعداد ترانسفورماتورها
وضعیت Overload
خود Object ترانسفورماتور
مجموعه تمام ترانسفورماتورها
💡 راهنمای تمرین
به این سؤال فکر کنید:
آیا داده عدد صحیح است، عدد اعشاری است، متن است، مقدار منطقی است، یک Object است یا مجموعهای از Objectها؟
پاسخ صحیح این تمرین پایه بسیاری از Scriptهای آینده ما خواهد بود.
#تمرین_سطح_1
#تمرین