تمامی فعالیت ها
این جریان به طور خودکار بروزرسانی می شود
- دیروز
-
در این موضوع می توانید لایسنس های رایگان آنتی ویروس کاسپر اسکی را با دوستان خود به اشتراک بگذارید. تاریخ بروز رسانی لایسنس ها : ۱۳۹۹/۱۰/29 Kaspersky Antivirus 30 days: YZWEN-98MCX-Z9FV1-9TUSW BKEM2-5FKHA-EP2U8-1EZ5M KIS Android 45 days: JAPXZ-9G9EJ-CSUV2-7YQUS
-
- لایسنس kaspersky
- license kaspersky
-
(و 11 مورد دیگر)
برچسب زده شده با :
- لایسنس kaspersky
- license kaspersky
- license kaspersky internet security 2019
- license kaspersky internet security 2020
- license kaspersky total security 2019
- license kaspersky free
- license kaspersky total security
- license kaspersky security for ws and fs
- license kaspersky endpoint security 11
- لایسنس کسپراسکای اندروید
- لایسنس کاسپر اسکای موبایل
- خرید لایسنس کسپراسکای
- لایسنس انتی ویروس کاسپر اسکای
- هفته گذشته
-
دانلود دوره ویدئویی آموزش استفاده از توابع و فرمول نویسی در اکسل
Mostafa پاسخی ارسال کرد برای یک موضوع در آموزش آفیس
اکسل به عنوان یک ابزار محاسباتی، قادر است به کمک توابعی که در آن قرار دارد، کار نوشتن پیچیده ترین فرمول ها را ساده کند. آگاهی از این قدرت مخفی اکسل، در وقت و هزینه بسیار صرفه جویی خواهد کرد. فهرست سردرس های مطرح شده در این دوره آموزش، در ادامه آمده اند: درس یکم: ورود و ویرایش فرمول ورود و ویرایش فرمول اولویت های محاسباتی خطاهای محاسباتی فرمول های دو بعدی و سه بعدی و چهار بعدی استفاده از آدرس مطلق و نسبی و ترکیبی نام گذاری و فواید استفاده از آن فرمول های برداری و کاربردهای آن درس دوم: توابع در اکسل معرفی انواع توابع در اکسل شیوه های مختلف ورود تابع استفاده از نوار فرمول استفاده از کادر Formula ترکیب فرمول و تابع چند تابع پرکاربرد (ریاضی و آماری) تابع جمع (Sum) میانگین (Average-Averagea) حداکثر(Maxa-Max) حداقل (Mina-Min) شمارش (Count-Countblank-Counta) تابع گرد کردن (Round-Roundup-Rounddown-Celling-Floor) تابع تو در تو (Round , Sum و یا Round , PI) تابع شرطی IF, And,Or درس سوم: توابع خاص توابع مرتبط با متن Left-Right-Mid-Len-Substitute توابع مرتبط با تاریخ Now-Today-Day-Month-Year-Hour-Minute-Second-Weekday توابع مرتبط با جمع بندی و شمارش شرطی Countifs-Sumifs-Averageifs-Dsum-Dcount-Daverage توابع جستجو و مرجع Vlookup-Hlookup-lookup-match-index توابع محاسبات مالی PMT-PPMT-IPMT-PV-NperFV-Rate-SLN-DB-DDB دانلود دوره آموزشی در کانال تلگرام-
- آموزش excel
- آموزش excel پیشرفته
-
(و 3 مورد دیگر)
برچسب زده شده با :
-
بی راه نگفته ایم اگر بگوییم، ابزار Adobe Photoshop Lightroom بسیاری از عکاسان جدید را سردرگم می کند. احتمالاً پیش خود می پرسید که این اپلیکیشن نام فوتوشاپ را یدک می کشد اما در حقیقت نرم افزاری با قابلیت های فوتوشاپ نیست. به طور کلی باید بگوییم که Lightroom اپلیکیشنی مهم برای عکاسان است. لایت روم هم اکنون روی پلتفرم های ویندوز، مک، اندروید و iOS (هرچند نسخه ی دیوایس های همراه آن چنان قوی نیستند) به عنوان یک برنامه ی مستقل با قیمتی معادل 149 دلار در دسترس است. همچنین قادر هستید این نرم افزار را تحت برنامه ی Creative Cloud Photography Plan شرکت ادوبی با هزینه ی ماهانه 9.99 دلار تهیه نمایید. لایت روم از تصاویر شما فهرست های مختلف می سازد اولین و مهم ترین چیزی که باید در مورد این ابزار بدانید این است که لایت روم برای هر عکسی که می گیرید یک فهرست (کاتالوگ) به حساب می آید. لایت روم شباهت کمی به فوتوشاپ داشته و بیشتر مشابه Picasa یا Apple Photos عمل می کند و برای عکاسان حرفه ای و یا آماتورهایی که به صورت جدی به دنبال این حرفه هستند، ساخته شده است. ابزار شرکت ادوبی برای کمک به وارد کردن، پردازش، بررسی و ذخیره ی ده ها هزار عکس طراحی شده است. هر زمان که عکس جدیدی ثبت کردید، به راحتی آن را از داخل دوربین و یا کارت SD وارد فهرست لایت روم خود کنید. این تصاویر به صورت طبیعی روی هارد دیسک تان ذخیره می شوند و می توانید از طریق برنامه های دیگر نیز به آن ها دسترسی داشته باشید. در حالی که مشغول وارد کردن عکس ها هستید، قادر خواهید بود کلمات کلیدی، عنوان، شرح تصاویر، نام مدل و دیگر اطلاعات مورد نیاز را به این تصاویر اضافه کنید. پس از آن که عکس هایتان را با موفقیت وارد این نرم افزار کردید، لایت روم مرور تصاویر و انتخاب بهترین عکس های ثبت شده را برای شما ساده تر می کند. در ادامه قادر هستید، عکس های قابل قبول و یا رد شده را علامت بزنید و به آن ها امتیاز دهید. پس از آن نیز می توانید به فیلتر کردن این تصاویر به وسیله امتیاز و یا فرا داده دیگر بپردازید. این به شما کمک می کند تا به عنوان مثال با استفاده از فیلترهای 5 ستاره و سال 2016 بهترین تصاویری که طی سال گذشته به ثبت رسانده اید را ببینید. لایت روم از ابزار قدرتمند فهرست نویسی برخوردار است؛ این در حالی است که اپلیکیشن های دیگر مثل Picasa یا Apple Photos تنها به ذخیره کردن تصاویر می پردازند و گزینه های زیادی را برای ذخیره سازی، دسته بندی و پیدا کردن عکس های دلخواه در اختیار شما قرار نمی دهند. برای مثال در Apple Photos تنها می توانید تصاویر مورد علاقه ی خود را مشخص کنید و هیچ راهی برای امتیاز دادن به آن ها و یا علامت گذاری موارد رد شده وجود ندارد. اگر عکس های زیادی می گیرید، لایت روم ابزار مناسبی برای پیگیری آن ها محسوب می شود. و ..... دانلود دوره آموزشی در کانال تلگرام
-
- آموزش adobe lightroom
- فیلم آموزش adobe lightroom
- (و 5 مورد دیگر)
-
آموزش انتزاع داده (Data Abstraction) در ++C
Mostafa پاسخی ارسال کرد برای یک موضوع در برنامه نویسی C++
منظور از چکیدهسازی داده فراهم کردن حداقل اطلاعات برای دنیای خارج و مخفیسازی جزئیات پس زمینه است، یعنی اطلاعات مورد نیاز بدون ارائه جزئیات نمایش داده میشود. چکیدهسازی داده یک تکنیک برنامهنویسی و طراحی است که مبتنی بر جداسازی رابط میانجی (interface) از پیادهسازی (implementation) میباشد. اجازه دهید با یک مثال از زندگی واقعی ادامه دهیم، یک تلویزیون را تصور کنید که میتوان آن را روشن یا خاموش کرد، کانال را عوض کرد، صدا را تنظیم کرده و اجزای خارجی مانند بلندگو، VCR و پخش کننده DVD را به آن متصل کرد، اما شما از جزئیات درونی آن هیچ اطلاعی ندارید، یعنی اطلاع ندارید که چگونه سیگنالها را از کابل یا هوا دریافت کرده، چگونه این سیگنالها را منتقل میکند و در نهایت بر روی صفحه نمایش میدهد. بنابراین، میتوان گفت که تلویزیون به وضوح پیادهسازی داخلیاش را از رابط خروجیاش جدا کرده و شما قادر هستید از رابط آن مانند دکمه روش/خاموش، عوض کردن کانال و کنترل صدا، بدون هیچ دانشی از جزئیات درونیاش استفاده کنید. در ++C، کلاسها سطح بالایی از چکیدهسازی داده را فراهم میکنند. این کلاسها توابع عمومی کافی را برای دنیای خارج از خود فراهم کرده تا قابلیتهای اشیا نمایان شده و امکان دستکاری دادههای شی مثل وضعیت (state)، بدون اطلاع از نحوهی پیادهسازی درونی کلاس فراهم گردد. برای مثال، برنامه شما میتواند برای مرتبسازی، تابع ()sort را بدون اطلاع از الگوریتم به کار رفته در آن فراخوانی کند. در حقیقت، پیادهسازی پشت پرده این تابع مرتبساز، با انتشار نسخههای کتابخانه آن ممکن است تغییر کند، اما تا زمانیکه رابط آن ثابت بماند، فراخوانی تابع شما کماکان کار میکند. در ++C از کلاسها برای تعریف چکیدهسازی نوع داده (Abstract Data Type- ADT) استفاده میشود. میتوان از شی cout از کلاس ostream برای استریم کردن داده به خروجی استاندارد استفاده کرد، مانند مثال زیر: #include <iostream> using namespace std; int main() { cout << "Hello C++" <<endl; return ; } در اینجا، نیازی نیست که بدانید cout چگونه متن را روی صفحه نمایش نشان میدهد. تنها چیزی که باید بدانید رابط عمومی آن است و بنابراین هیچ محدودتی برای تغییر در پیادهسازی پشت پرده cout بوجود نمیآید. برچسبهای دسترسی (Access Label) منجر به چکیدهسازی میشود در ++C، با استفاده از برچسبهای دسترسی برای یک کلاس رابط چکیده تعریف میکنیم. یک کلاس میتواند تعدادی برچسب دسترسی داشته باشد یا هیچ برچسبی نداشته باشد. اعضای تعریف شده در یک کلاس با برچسب عمومی از همه بخشهای برنامه قابل دسترسی هستند. نمای چکیده شده یک نوع داده از طریق اعضای عمومیاش تعریف میشود. اعضای تعریف شده در یک کلاس با برچسب خصوصی، برای کدهای استفاده کننده قابل دسترسی نیستند. بخشهای خصوصی کلاس، پیادهسازی آن را از دید کاربران مخفی میکند. هیچ محدودیتی بر تعداد استفاده از یک برچسب دسترسی وجود ندارد. هر برچسب دسترسی، سطح دسترسی عضو تعریف شده را مشخص میکند.سطح دسترسی تعیین شده، تا زمان نوشتن برچسب دسترسی بعدی یا رسیدن به آکلاد بسته، معتبر باقی میماند. مزایای چکیدهسازی داده چکیدهسازی داده دو مزیت مهم مهیا میسازد. بخشهای درونی کلاس را از اشتباهات سهوی کاربر، که منجر به خراب کردن وضعیت شی شود در امان نگه میدارد. پیادهسازی تابع در طول زمان و در پاسخ به مقتضیات یا گزارش خرابیها ممکن است تکامل پیدا کند. با تعریف دادههای عضو در بخشهای خصوصی کلاس، نویسنده کلاس برای تغییر در دادهها آزادی عمل پیدا میکند. اگر پیادهسازی تغییر کند، برای مشاهده تاثیرات این تغییر، تنها کافی است که کد کلاس آزمایش شود. اگر دادهها عمومی باشند، آنگاه ممکن است هر تابعی که مستقیماً به این دادههای عضو دسترسی دارد نیز از کار بیفتد. مثال چکیدهسازی داده هر برنامه ++Cای که یک کلاس را با اعضای خصوصی و عمومی پیادهسازی کند، نمونه ای از چکیدهسازی داده میباشد. مثال زیر را ملاحظه کنید. #include <iostream> using namespace std; class Adder { public: // constructor Adder(int i = ) { total = i; } // interface to outside world void addNum(int number) { total += number; } // interface to outside world int getTotal() { return total; }; private: // hidden data from outside world int total; }; int main() { Adder a; a.addNum(10); a.addNum(20); a.addNum(30); cout << "Total " << a.getTotal() <<endl; return ; } با اجرای کد فوق، خروجی زیر حاصل میشود. Total 60 کلاس بالا دو عدد را باهم جمع کرده و حاصل جمع را برمیگرداند. اعضای عمومی، addNum و getTotal رابطهای میانجی به دنیای خارج از کلاس بوده و کاربر برای استفاده از کلاس باید با آنها آشنا شود. عضو خصوصی total چیزی است که کاربر نیازی به آشنایی با آن ندارد، اما برای عملکرد صحیح کلاس ضروری است. استراتژی طراحی چکیدهسازی کد را به دو بخش پیادهسازی و رابط تقسیم میکند. بنابراین هنگام طراحی اجزا، باید رابط را از پیادهسازی مستقل نگه دارید تا اگر تغییری در پیادهسازی ایجاد شد، رابط کماکان سالم باقی ماند. در چنین شرایطی، برنامههایی که از رابط استفاده میکنند متاثر از تغییر نخواهند شد و تنها نیازمند یک کامپایل مجدد هستند. -
یک اینترفیس (interface) رفتار یا قابلیتهای یک کلاس ++C را بدون درنظرگرفتن هیچ نوع پیادهسازی برای آن توصیف میکند. اینترفیسهای ++C با استفاده از کلاسهای انتزاعی (abstract class) پیاده میشوند. این کلاسهای انتزاعی را نباید با مفهوم چکیدهسازی که برای جداسازی جزئیات پیادهسازی از دادهها به کار رفت اشتباه بگیریم. یک کلاس را میتوان با اعلان حداقل یک تابع مجازی محض در آن، انتزاعی کرد. یک تابع مجازی با قرادادن «0=» در هنگام اعلان آن مشخص میشود. class Box { public: // pure virtual function virtual double getVolume() = 0; private: double length; // Length of a box double breadth; // Breadth of a box double height; // Height of a box }; هدف از ایجاد کلاس انتزاعی (معمولاً با ABC مشخص میشود)، ایجاد یک کلاس پایه مناسب است تا دیگر کلاسها از آن ارث ببرند. نمیتوان از کلاسهای انتزاعی شی نمونه گرفت و تنها به عنوان اینترفیس عمل میکنند. تلاش برای گرفتن یک شی نمونه از یک کلاس انتزاعی به خطای کامپایل منجر میشود. بنابراین، اگر قرار باشد که از زیرکلاس یک کلاس ABC نمونه گرفته شود، آن زیرکلاس باید همه توابع مجازی را پیادهسازی کند، یعنی باید اینترفیس ABC را اجرا کند. اگر یک کلاس مشتق شده در روند رونویسی (override) تابع مجازی محض با مشکل مواجه شود، آنگاه هرگونه نمونهگیری شی از آن به خطای کامپایل منجر میشود. کلاسهایی که بتوان از آنها نمونهگیری انجام داد کلاسهای عینی (concrete class) نامیده میشوند. مثالهایی از تابع انتزاعی در مثال زیر کلاس والد، یک اینترفیس برای کلاس پایه فراهم کرده تا تابعی به نام ()getArea را پیاده کند. #include <iostream> using namespace std; // Base class class Shape { public: // pure virtual function providing interface framework. virtual int getArea() = ; void setWidth(int w) { width = w; } void setHeight(int h) { height = h; } protected: int width; int height; }; // Derived classes class Rectangle: public Shape { public: int getArea() { return (width * height); } }; class Triangle: public Shape { public: int getArea() { return (width * height)/2; } }; int main(void) { Rectangle Rect; Triangle Tri; Rect.setWidth(5); Rect.setHeight(7); // Print the area of the object. cout << "Total Rectangle area: " << Rect.getArea() << endl; Tri.setWidth(5); Tri.setHeight(7); // Print the area of the object. cout << "Total Triangle area: " << Tri.getArea() << endl; return ; } با اجرای کد فوق، خروجی زیر حاصل میشود. Total Rectangle area: 35 Total Triangle area: 17 میتوان مشاهده کرد که چگونه یک کلاس انتزاعی اینترفیسی در قالب ()getArea تعریف کرده و دو کلاس دیگر همان تابع را با الگوریتمهای متفاوت پیاده سازی میکنند. استراتژی طراحی یک سیستم مبتنی بر شیگرایی، میتواند یک کلاس پایه انتزاعی را به عنوان یک اینترفیس استاندارد مشترک برای همه اپلیکیشنهای خارجی به کار بندد. سپس با ارثبری از این کلاس پایه انتزاعی، کلاسهای مشتق شدهای پدید میآید که مشابه هم عمل میکنند. قابلیتهای (یعنی توابع عمومی) فراهم آمده از طریق این اپلیکیشنهای خارجی، همان توابع مجازی محض موجود در کلاس پایه انتزاعی میباشند. پیادهسازی این توابع محض در هرکلاس مشتق شده، بسته به نوع اپلیکیشن میتواند متفاوت باشد. این نوع معماری همچنین امکان اضافه کردن اپلیکیشنهای جدید به سیستم، حتی پس از تعریف آن را به سهولت فراهم ساخته است.
-
آموزش تابع مجازی (virtual function) در ++C
Mostafa پاسخی ارسال کرد برای یک موضوع در برنامه نویسی C++
یک مثال برای شروع فرض کنید روی یک بازی (جنگی) کار میکنیم. کلاس Weapon را ایجاد میکنیم و دو کلاس Bomb و Gun را از آن مشتق میکنیم تا ویژگیهای این سلاحها را در آنها بارگذاری کنیم: #include <iostream> using namespace std; class Weapon { public: void loadFeatures() { cout << "Loading weapon features.\n"; } }; class Bomb : public Weapon { public: void loadFeatures() { cout << "Loading bomb features.\n"; } }; class Gun : public Weapon { public: void loadFeatures() { cout << "Loading gun features.\n"; } }; int main() { Weapon *w = new Weapon; Bomb *b = new Bomb; Gun *g = new Gun; w->loadFeatures(); b->loadFeatures(); g->loadFeatures(); return 0; } خروجی Loading weapon features. Loading bomb features. Loading gun features. سه شیء اشارهگر به نامهای w ،b و g را به ترتیب برای کلاسهای Weapon ،Bomb و Gun تعریف میکنیم. همچنین تابع عضو ()loadFeatures را برای هر شیء با استفاده از کدهای زیر فراخوانی میکنیم: w->loadFeatures(); b->loadFeatures(); g->loadFeatures(); تا این جا همه چیز به خوبی کار میکند، با این حال پروژه بازی ما رفتهرفته بزرگتر میشود و تصمیم میگیریم کلاس مجزای Loader را برای بارگذاری ویژگیهای سلاحها ایجاد کنیم. این کلاس Loader ویژگیهای دیگری از سلاحها را بسته به نوع سلاح انتخابی بارگذاری میکند. class Loader { public: void loadFeatures(Weapon *weapon) { weapon->features(); } }; ()loadFeatures ویژگی یک سلاح خاص را بارگذاری میکند. پیادهسازی کلاس Loader #include <iostream> using namespace std; class Weapon { public: Weapon() { cout << "Loading weapon features.\n"; } void features() { cout << "Loading weapon features.\n"; } }; class Bomb : public Weapon { public: void features() { this->Weapon::features(); cout << "Loading bomb features.\n"; } }; class Gun : public Weapon { public: void features() { this->Weapon::features(); cout << "Loading gun features.\n"; } }; class Loader { public: void loadFeatures(Weapon *weapon) { weapon->features(); } }; int main() { Loader *l = new Loader; Weapon *w; Bomb b; Gun g; w = &b; l->loadFeatures(w); w = &g; l->loadFeatures(w); return 0; } خروجی Loading weapon features. Loading weapon features. Loading weapon features. Loading weapon features. پیادهسازی ما درست به نظر میرسد؛ اما ویژگیهای سلاحها 4 بار بارگذاری شده است. دلیل این مسئله آن است که در ابتدا شیء سلاح w به شیء کلاس b (یا Bomb) اشاره میکرد و تلاش کردهایم ویژگیهای شیء Bomb را با ارسال آن به تابع ()loadFeatures با استفاده از شیء اشارهگر l (کلاس Loader) بارگذاری کنیم. به طور مشابه تلاش کردهایم ویژگیهای شیء Gun را نیز بارگذاری کنیم، اما تابع ()loadFeatures کلاس Loader اشارهگر به شیء کلاس Weapon را به عنوان آرگومان میگیرد: void loadFeatures(Weapon *weapon) به همین جهت است که ویژگیهای weapon 4 بار بارگذاری میشوند. برای حل این مشکل باید تابعی از کلاس مبنا (کلاس Weapon) به صورت مجازی با استفاده از کلیدواژه virtual بسازیم. class Weapon { public: virtual void features() { cout << "Loading weapon features.\n"; } }; مثال: استفاده از تابع مجازی برای حل مشکل #include <iostream> using namespace std; class Weapon { public: virtual void features() { cout << "Loading weapon features.\n"; } }; class Bomb : public Weapon { public: void features() { this->Weapon::features(); cout << "Loading bomb features.\n"; } }; class Gun : public Weapon { public: void features() { this->Weapon::features(); cout << "Loading gun features.\n"; } }; class Loader { public: void loadFeatures(Weapon *weapon) { weapon->features(); } }; int main() { Loader *l = new Loader; Weapon *w; Bomb b; Gun g; w = &b; l->loadFeatures(w); w = &g; l->loadFeatures(w); return 0; } خروجی Loading weapon features. Loading bomb features. Loading weapon features. Loading gun features. همچنین توجه کنید که تابع l->loadFeatures(w) تابع کلاسهای مختلفی را بسته به این که شیء l به چه چیزی اشاره میکند فرامیخواند. استفاده از تابع مجازی نهتنها موجب شده کد ما روشنتر شود، بلکه انعطافپذیری آن را نیز افزایش داده است. در برنامه فوق، ویژگیهای سلاح دو بار پرینت شدهاند. با افزودن کد بیشتر میتوانید کاری کنید که ویژگیهای سلاح تنها یک بار بارگذاری شود. اگر بخواهیم سلاح دیگری (مانند چاقو) اضافه میکنیم میتوانیم به سادگی ویژگیهای آن را به صورت زیر اضافه کرده و بارگذاری کنیم. class Knife : public Weapon { public: void features() { this->Weapon::features(); cout << "Loading knife features.\n"; } }; و در تابع ()main به صورت زیر عمل میکنیم: Knife k; w = &k; l->loadFeatures(w); لازم به ذکر است که ما برای بارگذاری ویژگیهای چاقو، هیچ چیز را در کلاس Loader تغییر ندادهایم. کلاس مجرد در ++C و تابع مجازی خالص هدف برنامهنویسی شیءگرا، تقسیم کردن یک مسئله پیچیده به مجموعههای کوچکتر است. بدین ترتیب میتوانیم مسئله را به روشی بهینه درک کرده و حل کنیم. برخی اوقات استفاده از وراثت صرفاً به منظور بصریسازی بهتر مسئله مفید خواهد بود. در ++C میتوان یک کلاس مجرد ایجاد کرد که امکان وهلهسازی از آن وجود نداشته باشد، یعنی نمیتوان شیئی از روی این کلاس مجرد ساخت. با این حال میتوان از آن کلاس دیگری مشتق کرد و شیئی را از آن کلاس مشتق شده وهلهسازی نمود. کلاسهای مجرد کلاسهای مبنایی هستند که وهلهسازی نمیشوند. یک کلاس شامل تابع مجازی خالص به نام کلاس مجرد نامیده میشود. تابع مجازی خالص یک تابع مجازی که اعلان آن با =0 پایان یابد یک تابع مجازی خالص است. به مثال زیر توجه کنید: class Weapon { public: virtual void features() = 0; }; در این کد تابع مجازی به صورت زیر است: virtual void features() = 0 و کلاس Weapon یک کلاس مجرد است. مثال: کلاس مجرد و تابع مجازی خالص #include <iostream> using namespace std; // Abstract class class Shape { protected: float l; public: void getData() { cin >> l; } // virtual Function virtual float calculateArea() = 0; }; class Square : public Shape { public: float calculateArea() { return l*l; } }; class Circle : public Shape { public: float calculateArea() { return 3.14*l*l; } }; int main() { Square s; Circle c; cout << "Enter length to calculate the area of a square: "; s.getData(); cout<<"Area of square: " << s.calculateArea(); cout<<"\nEnter radius to calculate the area of a circle: "; c.getData(); cout << "Area of circle: " << c.calculateArea(); return 0; } خروجی Enter length to calculate the area of a square: 4 Area of square: 16 Enter radius to calculate the area of a circle: 5 Area of circle: 78.5 در این برنامه، تابع مجازی خالص زیر درون کلاس Shape تعریف شده است: virtual float area() = 0; یک نکته که باید اشاره کنیم این است که تابع مجازی خالص کلاس مبنا باید در کلاس مشتق شده باطل (Override) شود. اگر این کار صورت نگیرد، کلاس مشتق شده خود به یک کلاس مجرد تبدیل میشود. برای مطالعه بخش بعدی روی لینک زیر کلیک کنید: -
در ابتدای این آموزش به توضیح Overriding میپردازیم سپس شرایط پیاده سازی Function Overriding در سی پلاس پلاس را بیان کرده، در پایان جلسه نیز یک مثال را پیاده سازی میکنیم. Function Overriding در سی پلاس پلاس در یک کلاس اگر یک تابع همنام تابعی که در کلاس پدر خود وجود دارد،بنویسیم به آن override میگویند. به زبان دیگر اگر کلاس فرزند تابعی را پیاده سازی کند که به نوعی در کلاس پدر وجود داشته است، overriding در سی پلاس پلاس انجام داده ایم. شروط overriding به ترتیب زیر است: نام توابع یکسان باشد ورودی و خروجی توابع یکسان باشد توابع override شده حتما باید در دو کلاس متفاوت باشند و بین کلاس ها رابطه ارث بری وجود دارد. مثال Function Overriding در سی پلاس پلاس کلاسی به نام Parent داریم و کلاس دیگری به نام Child ساختهایم به صورتی که Child از Parent ارثبری کند. کد این مثال به صورت زیر میباشد: // Base class class Parent { public: void print() { cout << "The Parent print function was called" << endl; } }; // Derived class class Child : public Parent { public: // definition of a member function already present in Parent void print() { cout << "The child print function was called" << endl; } <div style="clear:both; margin-top:0em; margin-bottom:1em;"><a href="[Hidden Content]" target="_blank" rel="nofollow" class="u6d856ee28e00bf9b93f69b378d085de0"><!-- INLINE RELATED POSTS 1/3 //--><style> .u6d856ee28e00bf9b93f69b378d085de0 { padding:0px; margin: 0; padding-top:1em!important; padding-bottom:1em!important; width:100%; display: block; font-weight:bold; background-color:#e6e6e6; border:0!important; border-left:4px solid #E67E22!important; text-decoration:none; } .u6d856ee28e00bf9b93f69b378d085de0:active, .u6d856ee28e00bf9b93f69b378d085de0:hover { opacity: 1; transition: opacity 250ms; webkit-transition: opacity 250ms; text-decoration:none; } .u6d856ee28e00bf9b93f69b378d085de0 { transition: background-color 250ms; webkit-transition: background-color 250ms; opacity: 1; transition: opacity 250ms; webkit-transition: opacity 250ms; } .u6d856ee28e00bf9b93f69b378d085de0 .ctaText { font-weight:bold; color:#2980B9; text-decoration:none; font-size: 16px; } .u6d856ee28e00bf9b93f69b378d085de0 .postTitle { color:inherit; text-decoration: underline!important; font-size: 16px; } .u6d856ee28e00bf9b93f69b378d085de0:hover .postTitle { text-decoration: underline!important; } </style><div style="padding-left:1em; padding-right:1em;"><span class="ctaText">بیشتر بخوانید:</span> <span class="postTitle">لیست پیوندی در سی پلاس پلاس (LinkedList)</span></div></a></div> }; //main function int main() { //object of parent class Parent obj1; //object of child class Child obj2 = Child(); // obj1 will call the print function in Parent obj1.print(); // obj2 will override the print function in Parent // and call the print function in Child obj2.print(); return 0; } همانطور که در کد بالا میبینید تابعی به نام Print هم در کلاس Parent و هم در کلاس Child آمده است. به عبارت دیگر تابع Print در کلاس فرزند Override شده است. در تابع Main هر دو کلاس را ساخته و نحوه دسترسی به هر تابع را نشان دادهایم. خروجی کد بالا به صورت زیر میباشد: The Parent print function was called The child print function was called
-
++C به شما اجازه میدهد تا در یک دامنه مشخص، بیش از یک تعریف برای یک تابع یا یک عملگر مشخص کنید، که به ترتیب اضافه بار تابع (function overloading) و اضافه بار عملگر (operator oveloading) نامیده میشود. یک اعلان اورلود شده، اعلانی است که دارای نام و دامنه یکسانی با یک اعلان پیشین است، با این تفاوت که آرگومانهای متفاوت و طبیعتاً تعریف متفاوتی از اعلان قبلی خواهد داشت. هنگام تعریف یک تابع یا عملگر اورلود شده، کامپایلر نوع آرگومانهایی که در فراخوانی تابع یا عملگر استفاده کردهاید را با نوع پارامترهای تعیین شده در تعریف مقایسه کرده و مناسبترین تعریف را انتخاب میکند. فرآیند انتخاب مناسبترین تابع یا عملگر اورلود شده overload resolution خوانده میشود. اورلود تابع در ++C میتوان برای یک نام تابع در یک دامنه مشخص، چندین تعریف ارائه کرد. تعاریف تابع باید از حیث نوع/تعداد آرگومانها متفاوت باشند. نمیتوان تابع اورلود شدهای اعلان کرد که تنها از لحاظ نوع داده برگشتی متفاوت باشد. مثال زیر تابع ()print را برای چاپ نوع دادههای متفاوت به کار میبرد. #include <iostream> using namespace std; class printData { public: void print(int i) { cout << "Printing int: " << i << endl; } void print(double f) { cout << "Printing float: " << f << endl; } void print(char* c) { cout << "Printing character: " << c << endl; } }; int main(void) { printData pd; // Call print to print integer pd.print(5); // Call print to print float pd.print(500.263); // Call print to print character pd.print("Hello C++"); return ; } با اجرای برنامه فوق، خروجی زیر تولید میشود. Printing int: 5 Printing float: 500.263 Printing character: Hello C++ اورلود عملگرها در ++C میتوان عملگرهای درونی ++C را نیز اورلود یا بازتعریف کرد. بنابراین، یک برنامهنویس میتواند عملگرها را برای نوع دادههای تعریف شده توسط کاربر نیز به کار گیرد. عملگرهای اورلود شده توابعی با نام ویژه هستند: کلیدواژه «operator» و به دنبال آن علامت عملگر تعریف شونده. مانند هر تابع دیگری، عملگر اورلودشده یک نوع داده بازگشتی و یک لیست پارامتر دارد. Box operator+(const Box&); عبارت فوق عملگر جمع را برای اضافه کردن دو شی Box و بازگرداندن Box حاصله به کار میگیرد. اکثر عملگرهای اورلود شده را میتوان به عنوان توابع غیرعضو معمولی و یا توابع عضو کلاس تعریف کرد. در حالتی که این توابع را به عنوان توابع غیرعضو یک کلاس تعریف کنیم، مجبور خواهیم بود که برای هر عملوند، دو آرگومان به صورت زیر ارسال کنیم. Box operator+(const Box&, const Box&); مثال زیر مفهوم اورلود عملگر را با استفاده از یک تابع عضو نشان میدهد. در اینجا یک شی به صورت آرگومان به تابع ارسال میشود و خصوصیات آن از طریق نام آرگومان قابل دسترسی هستند، اما برای دسترسی به خصوصیات شی که عملگر را فراخوانی میکند از کلیدواژه this استفاده میشود. #include <iostream> using namespace std; class Box { public: double getVolume(void) { return length * breadth * height; } void setLength( double len ) { length = len; } void setBreadth( double bre ) { breadth = bre; } void setHeight( double hei ) { height = hei; } // Overload + operator to add two Box objects. Box operator+(const Box& b) { Box box; box.length = this->length + b.length; box.breadth = this->breadth + b.breadth; box.height = this->height + b.height; return box; } private: double length; // Length of a box double breadth; // Breadth of a box double height; // Height of a box }; // Main function for the program int main() { Box Box1; // Declare Box1 of type Box Box Box2; // Declare Box2 of type Box Box Box3; // Declare Box3 of type Box double volume = 0.0; // Store the volume of a box here // box 1 specification Box1.setLength(6.0); Box1.setBreadth(7.0); Box1.setHeight(5.0); // box 2 specification Box2.setLength(12.0); Box2.setBreadth(13.0); Box2.setHeight(10.0); // volume of box 1 volume = Box1.getVolume(); cout << "Volume of Box1 : " << volume <<endl; // volume of box 2 volume = Box2.getVolume(); cout << "Volume of Box2 : " << volume <<endl; // Add two object as follows: Box3 = Box1 + Box2; // volume of box 3 volume = Box3.getVolume(); cout << "Volume of Box3 : " << volume <<endl; return ; } با اجرای این کد، خروجی زیر حاصل میگردد. Volume of Box1 : 210 Volume of Box2 : 1560 Volume of Box3 : 5400 عملگرهایی با قابلیت اورلود و عملگرهایی بدون قابلیت اورلود در زیر لیست عملگرهایی که قابلیت اورلود دارند آمده است. + – * / % ^ & | ~ ! , = > < <= >= ++ — >> << == != && || =+ -= /= %= ^= &= |= *= <<= >>= [] () -> ->* new new [] delete delete [] و در زیر نیز لیست عملگرهایی که قابلیت اورلود ندارند گردآوری شده است. :: .* . ?: مثالهایی از اورلود عملگرها در زیر مثالهای متنوعی آمده که به فهم بهتر مفهوم کمک میکند. ردیف عملگرها و مثالها 1 اورلود عملگرهای یگانی 2 اورلود عملگرهای باینری 3 اورلود عملگرهای رابطهای 4 اورلود عملگرهای ورودی/خروجی 5 اورلود عملگرهای ++ و – – 6 اورلود عملگرهای تخصیص 7 اورلود عملگر فراخوانی تابع () 8 اورلود عملگر []Subscripting 9 -> اورلود عملگر دسترسی عضو
-
آموزش مفهوم چندریختی یا Polymorphism در ++C
Mostafa پاسخی ارسال کرد برای یک موضوع در برنامه نویسی C++
یک موضوع مهم در برنامه نویسی Polymorphism است و در این جلسه ما به بررسی چندریختی یا Polymorphism در ++C خواهیم پرداخت. واژه چندریختی به معنی داشتن چندین صورت است. معمولاً، چندریختی در شرایطی اتفاق میافتد که زنجیرهای از کلاسها از طریق وراثت به هم مربوط شدهاند. چندریختی در ++C یعنی اینکه فراخوانی یک تابع عضو، بسته به نوع شی فراخواننده آن، میتواند منجر به اجرای توابع مختلفی شود. مثال زیر را درنظر بگیرید که در آن دو کلاس از یک کلاس پایه مشتق شدهاند. #include <iostream> using namespace std; class Shape { protected: int width, height; public: Shape( int a = , int b = ){ width = a; height = b; } int area() { cout << "Parent class area :" <<endl; return ; } }; class Rectangle: public Shape { public: Rectangle( int a = , int b = ):Shape(a, b) { } int area () { cout << "Rectangle class area :" <<endl; return (width * height); } }; class Triangle: public Shape { public: Triangle( int a = , int b = ):Shape(a, b) { } int area () { cout << "Triangle class area :" <<endl; return (width * height / 2); } }; // Main function for the program int main() { Shape *shape; Rectangle rec(10,7); Triangle tri(10,5); // store the address of Rectangle shape = &rec; // call rectangle area. shape->area(); // store the address of Triangle shape = &tri; // call triangle area. shape->area(); return ; } با اجرای این کد، خروجی زیر نتیجه میشود. Parent class area : Parent class area : علت این خروجی نادرست این است که برای فراخوانی تابع ()area، کامپایلر از ابتدا نسخه تابع در کلاس پایه را انتخاب کرده است. به این حالت وضوح ایستا (static resolution)، فراخوانی تابع یا اتصال ایستا (static linkage) گفته میشود، تابع پیش از فراخوانی قطعی (fixed) شده است. به این حالت همچنین اتصال اولیه (early binding) نیز گفته میشود زیرا تابع ()area در زمان کامپایل برنامه تعیین شده است. اما حالا، اجازه دهید یک تغییر کوچک در برنامه ایجاد کرده و پیش از اعلان تابع ()area در کلاس Shape کلیدواژه virtual را قرار دهیم. class Shape { protected: int width, height; public: Shape( int a = 0, int b = 0) { width = a; height = b; } virtual int area() { cout << "Parent class area :" <<endl; return 0; } }; بعد از اعمال این تغییر جزئی و اجرای کد، خروجی زیر حاصل میشود. Rectangle class area Triangle class area اینبار، کامپایلر به جای نوع اشارهگر به محتوای آن نگاه میکند. بنابراین، از آنجایی که آدرس اشیا کلاسهای tri و rec در shape* ذخیره میشود، تابع ()area مربوطه فراخوانی میشود. همانطور که میبینید، هر کدام از کلاسهای فرزند (child class) پیادهسازی خاص خود را برای تابع ()area دارند. این شکل عمومی کاربرد چندریختی است. شما چند کلاس مختلف با یک تابع با نام و پارامترهای یکسان، اما پیادهسازیهای متفاوت خواهید داشت. تابع مجازی (Virtual Function) یک تابع مجازی (Virtual) تابعی از کلاس پایه است که با کلیدواژه virtual اعلان میشود. وجود یک تابع مجازی در کلاس پایه و یک نسخه متفاوت از آن در کلاس مشتق شده، به کامپایلر این نشانی را میدهد که برای این تابع از اتصال ایستا استفاده نکند. آنچه مطلوب ماست انتخاب تابع در هر نقطه از برنامه، براساس نوع شی فراخوانده شده است. به این عملیات اتصال دینامیک (dynamic linkage) یا اتصال متاخر (late binding) گفته میشود. توابع مجازی محض (Pure Virtual Functions) میتوان یک تابع مجازی در کلاس پایه را به گونهای تعریف کرد که در خود کلاس پایه هیچ تعریف معناداری نداشته باشد اما در توابع مشتق شده قابل تعریف مجدد باشد. تابع مجازی ()area را در کلاس پایه به صورت زیر تغییر میدهیم. class Shape { protected: int width, height; public: Shape(int a = 0, int b = 0) { width = a; height = b; } // pure virtual function virtual int area() = 0; }; عبارت 0 = به کامپایلر اعلام میکند که این تابع هیچ بدنهای ندارد. این تابع، تابع مجازی محض (pure virtual function) نامیده میشود. -
متد zfill رشته را در سمت چپ با 0 رقم پر می کند تا رشته ای به تعداد طول برسد. این یک رشته شامل یک پیشوند علامت + یا - قبل از 0 رقم است. اگر طول کمتر از طول رشته باشد رشته اصلی را برمی گرداند. مثال : # Python zfill(width) method # Declaring variables text = "Zfill Example" # Calling Function str2 = text.zfill(20) # Displaying result print(str2) Output: 0000000Zfill Example ******************************************** # Python zfill(width) method # Declaring variables text = "Zfill Example" # Calling Function str2 = text.zfill(5) # Displaying result print(str2) Output: Zfill Example
-
متد upper تمام کاراکترها را به بزرگ تبدیل کرده و یک رشته بزرگ را برمی گرداند. مثال : # Python upper() method # Declaring table and variables str = "Hello mypgr" # Calling function str2 = str.upper() # Displaying result print(str2) Output: HELLO MYPGR
-
متد Python رشته ای را ترجمه می کند که در آن هر کاراکتر از طریق جدول ترجمه داده شده نقشه برداری شده است. ما می توانیم از روش maketrans () برای ایجاد نقشه ترجمه از نگاشت های شخصیت به شخصیت در قالب های مختلف استفاده کنیم. مثال : # Python translate() method # Declaring table and variables table = { 97 : 103, 111 : 112, 117 : None } str = "Hello java" # Calling function str2 = str.translate(table) # Displaying result print(str2) Output: Hellp jgvg
-
متد swapcase حروف کوچک رشته ها را از بزرگ به کوچک و بالعکس تبدیل می کند. به پارامتری نیاز ندارد و یک رشته را پس از تبدیل مورد برمی گرداند. مثال : # Python String swapcase() method # Declaring variable str = "HELLO MYPGR" # Calling function str2 = str.swapcase() # Displaying result print (str2) Output: hello mypgr
-
پایتون با شروع رشته True یا False را برمی گرداند. اگر رشته با پیشوند شروع شود ، در غیر این صورت False باز می گردد. شروع و پایان دو پارامتر طول می کشد. Start یک شاخص شروع از جایی است که جستجو شروع می شود و index end جایی است که جستجو متوقف می شود. مثال : # Python String startswith() method # Declaring variable str = "Hello Mypgr" # Calling function str2 = str.startswith("Hello") # Displaying result print (str2) Output: True ********************************************************* # Python String startswith() method # Declaring variable str = "Hello Mypgr" # Calling function str2 = str.startswith("Java") # False # Displaying result print (str2) Output: False
-
متد split رشته را به لیست جدا شده با کاما تقسیم می کند. این رشته را بر اساس جداکننده جداکننده جدا می کند. این روش دو پارامتر می گیرد و هر دو اختیاری هستند. در زیر توضیح داده شده است. مثال : # Python split() method example # Variable declaration str = "Java is a programming language" # Calling function str2 = str.split() # Displaying result print(str) print(str2) Output: Java is a programming language ['Java', 'is', 'a', 'programming', 'language'] ************************************************************** # Python split() method example # Variable declaration str = "Java is a programming language" # Calling function str2 = str.split('Java') # Displaying result print(str2)3 Output: ['', ' is a programming language'] ************************************************************** # Python split() method example # Variable declaration str = "Java is a programming language" # Calling function str2 = str.split('a') # Displaying result print(str) print(str2) Output: Java is a programming language ['J', 'v', ' is ', ' progr', 'mming l', 'ngu', 'ge'] ************************************************************** # Python split() method example # Variable declaration str = "Java is a programming language" # Calling function str2 = str.split('a',1) # Displaying result print(str2) str2 = str.split('a',3) # Displaying result print(str2) Output: ['J', 'va is a programming language'] ['J', 'v', ' is ', ' programming language']
-
متد splitlines (رشته) را بر اساس خطوط تقسیم می کند. رشته را در مرزهای خط می شکند و لیستی از رشته های تقسیم شده را برمی گرداند. خط شکن ها می توانند یک خط جدید (\ n) ، بازگشت (\ r) و غیره باشند. جدولی از خط شکن ها در زیر آورده شده است که رشته را تقسیم می کند. این روش بر روی مرزهای خط داده شده تقسیم می شود. علامت توضیح \n Line Feed \r Carriage Return \r\n Carriage Return + Line Feed \v or \x0b Line Tabulation \f or \x0c Form Feed \x1c File Separator \x1d Group Separator \x1e Record Separator \x85 Next Line (C1 Control Code) \u2028 Line Separator \u2029 Paragraph Separator مثال : # Python splitlines() method example # Variable declaration str = "Java is a programming language" # Calling function str2 = str.splitlines() # returns a list having single element print(str) print(str2) str = "Java \n is a programming \r language" str2 = str.splitlines() # returns a list having splitted elements print(str2) Output: Java is a programming language ['Java is a programming language'] ['Java ', ' is a programming ', ' language'] *********************************************************** # Python splitlines() method example # Variable declaration str = "Java \n is a programming \r language" # Calling function str2 = str.splitlines(True) # returns a list having splitted elements print(str2) Output: ['Java \n', ' is a programming \r', ' language']
-
متد rstrip نویسه های مشخص شده را از رشته حذف می کند . این بدان معنی است که همه نویسه های مشخص شده را از سمت راست رشته حذف می کند. اگر پارامتر را مشخص نکنیم ، این فضای سفید را از رشته حذف می کند. این روش مقدار رشته ای را برمی گرداند. مثال : # Python rstrip() method example # Variable declaration str = "Java and C# " # Calling function str2 = str.rstrip() # Displaying result print("Old string: ",str) print("New String: ",str2) Output: Old string: Java and C# New String: Java and C# ********************************************************************** # Python rstrip() method example # Variable declaration str = "Java and C#" # Calling function str2 = str.rstrip('#') # Displaying result print("Old string: ",str) print("New String: ",str2) Output: Old string: Java and C# New String: Java and C ********************************************************************** # Python rstrip() method example # Variable declaration str = "Java and C#" # Calling function str2 = str.rstrip('#') # Displaying result print("Old string: ",str, len(str)) print("New String: ",str2, len(str2)) Output: Old string: Java and C# 11 New String: Java and C 10
-
متد rsplit رشته را جدا کرده و لیستی را برمی گرداند. با استفاده از جداکننده به عنوان جدا کننده از سمت راست تقسیم می شود. اگر seperator مشخص نشده باشد ، هر رشته فضای سفید جدا کننده است. این روش همان تقسیم () به جز تقسیم از سمت راست است که در زیر به تفصیل شرح داده شده است. مثال : # Python rsplit() method example # Variable declaration str = "Java is a programming language" # Calling function str2 = str.rsplit() # Displaying result print(str2) Output: ['Java', 'is', 'a', 'programming', 'language'] *************************************************************** # Python rsplit() method example # Variable declaration str = "Java is a programming language" # Calling function str2 = str.rsplit('Java') # Displaying result print(str2) Output: ['', ' is a programming language'] *************************************************************** # Python rsplit() method example # Variable declaration str = "Java is a programming language" # Calling function str2 = str.rsplit('a') # Displaying result print(str2) Output: ['J', 'v', ' is ', ' progr', 'mming l', 'ngu', 'ge']
-
متد rpartition رشته را در آخرین وقوع رشته فرعی جدا می کند. این رشته را از آخرین وقوع پارامتر تقسیم کرده و یک تاپل برمی گرداند. تاپل شامل سه قسمت قبل از جدا کننده ، خود جدا کننده و قسمت بعد از جدا کننده است. اگر جداکننده پیدا نشود ، یک تاپل خالی با داشتن جداکننده برمی گرداند. مثال : # Python rpartition() method example # Variable declaration str = "Java is a programming language" # Calling function str2 = str.rpartition("is") # Displaying result print(str2) # seperator is at begining str2 = str.rpartition("Java") print(str2) # seperator at ent str2 = str.rpartition("language") print(str2) # when seperater is a substring str2 = str.rpartition("av") print(str2) Output: ('Java ', 'is', ' a programming language'') ('', 'Java', ' is a programming language') ('Java is a programming ', 'language', '') ('J', 'av', 'a is a programming language')
-
متد Python rjust رشته را به سمت راست تراز می کند و فضاهای باقیمانده را با پر کننده پر می کند. این متد رشته جدیدی را که تراز شده به سمت و پر از مواد پر کننده است ، برمی گرداند. مثال : # Python rjust() method example # Variable declaration str = 'Mypgr' # Calling function str = str.rjust(10) # Displaying result print(str) Output: Mypgr
-
متد rindex مانند متد rfind عمل می کند با این تفاوت که خطای ValueError را ایجاد می کند. اگر زیر رشته پیدا نشود ، این روش یک ValueError استثنا را ایجاد می کند. نحو زیر آورده شده است. مثال » # Python rindex() method example # Variable declaration str = "It is technical tutorial" # calling function str2 = str.rindex("t") # No start and end is given # displaying result print(str2) Output: 18 ********************************************** # Python rindex() method example # Variable declaration str = "It is technical tutorial" # calling function str2 = str.rindex("t") # No start and end is given # displaying result print(str2) str2 = str.rfind("t",5,15) # Start is end both are given print(str2) Output: 18 6 ********************************************** # Python rindex() method example # Variable declaration str = "Hello C Language" # calling function str2 = str.rindex("t") # No start and end is given # displaying result print(str2) str2 = str.rfind("t",5,15) # Start is end both are given print(str2) Output: ValueError: substring not found
-
متد rfind یک رشته فرعی را در رشته پیدا می کند و بالاترین شاخص را برمی گرداند. این به این معنی است که شاخص صحیح ترین زیرشاخه همسان رشته را برمی گرداند. اگر زیر رشته پیدا نشود ، -1 برمی گردد. مثال : # Python rfind() method example # Variable declaration str = "Learn Java from Mypgr" # calling function str2 = str.rfind("Java") # displaying result print(str2) Output: 11 ******************************************************** # Python rfind() method example # Variable declaration str = "It is technical tutorial" # calling function str2 = str.rfind("t") # displaying result print(str2) Output: 18 ******************************************************** # Python rfind() method example # Variable declaration str = "It is technical tutorial" # calling function str2 = str.rfind("t",5) # Only starting index is passed # displaying result print(str2) str2 = str.rfind("t",5,10) # Start and End both indexes are passed print(str2) Output: 18 6
-
یک کپی از رشته را با تمام وقایع زیر رشته قدیمی که جایگزین جدید شده است ، برگردانید. اگر شمارش آرگومان اختیاری داده شود ، فقط اولین وقایع شمارش جایگزین می شوند. مثال : # Python replace() method example # Variable declaration str = "Java is a programming language" # Calling function str2 = str.replace("Java","C") # Displaying result print("Old String: \n",str) print("New String: \n",str2) Output: Old String: Java is a programming language New String: C is a programming language *************************************************** # Python replace() method example # Variable declaration str = "Java C C# Java Php Python Java" # Calling function str2 = str.replace("Java","C#") # replaces all the occurences # Displaying result print("Old String: \n",str) print("New String: \n",str2) # Calling function str2 = str.replace("Java","C#",1) # replaces first occurance only # Displaying result print("\n Old String: \n",str) print("New String: \n",str2) Output: Old String: Java C C# Java Php Python Java New String: C# C C# C# Php Python C# Old String: Java C C# Java Php Python Java New String: C# C C# Java Php Python Java *************************************************** # Python replace() method example # Variable declaration str = "Apple is a fruit" # calling function str2 = str.replace(str,"Tomato is also a fruit") # displaying result print(str2) Output: Tomato is also a fruit
-
متد partition (رشته) رشته را از رشته مشخص شده جدا می کند . در پارامتر تقسیم می کند. در اولین وقوع پارامتر رشته را از هم جدا کرده و یک تاپل را برمی گرداند. تاپل شامل سه قسمت قبل از جدا کننده ، خود جدا کننده و قسمت بعد از جدا کننده است. اگر جداکننده پیدا نشود ، یک تاپل خالی با داشتن جداکننده برمی گرداند. امضای روش در زیر آورده شده است. مثال : ****************************************** ex1 # Python partition() method example # Variable declaration str = "Java is a programming language" # Calling function str2 = str.partition("is") # Displaying result print(str2) # when seperate from the start str2 = str.partition("Java") print(str2) # when seperate is the end str2 = str.partition("language") print(str2) # when seperater is a substring str2 = str.partition("av") print(str2) ****************************************** ex2 # Python partition() method example # Variable declaration str = "Java is a programming language" # Calling function str2 = str.partition("not") # Displaying result print(str2) Output: ('Java is a programming language', '', '')
-
از متد lstrip برای حذف تمام کارکتر های پیشرو از رشته استفاده می شود. این یک پارامتر نوع char را می گیرد که اختیاری است. اگر پارامتر ارائه نشود ، تمام فضاهای پیشرو را از رشته حذف می کند. مثال : *********************************************************** ex1 # Python lstrip() method example # Variable declaration str = " Mypgr " # Calling function str2 = str.lstrip() # Displaying result print(str) print(str2) Output: Mypgr Mypgr *********************************************************** ex2 # Python lstrip() method example # Variable declaration str = "$$$$-Mypgr-$$$$" # Calling function str2 = str.lstrip('$') # Displaying result print(str) print(str2) Output: $$$$-Mypgr-$$$$ -Mypgr-$$$$ *********************************************************** ex3 # Python lstrip() method example # Variable declaration str = "[Hidden Content]" # Calling function str2 = str.lstrip('[Hidden Content].') # Displaying result print(str) print(str2) Output: [Hidden Content] mypgr.ir