Binary Course
77 subscribers
132 photos
19 videos
119 files
41 links
Reconfigurable Systems
Digital System Synthesis
Computer Aided Design
Embedded Systems
Computer Systems
HW-SW Co-design
Deep Learning
@BinaryCourse
Download Telegram
#Programming
#How_To
#programmer
⚪️10 نکته برای دانشجویانی که به دنبال شغل برنامه‌نویسی هستند:
ما همواره به سال‌های یکنواخت گذشته فکر می‌کنیم و آرزو می‌کنیم که ای کاش کار متفاوتی انجام می‌دادیم. مخصوصا زمانی که در دانشگاه هستیم و دوست داریم در کنار درس‌ها و کلاس‌های خسته کننده، به شغل شگفت انگیزی مانند برنامه‌نویسی مشغول باشیم. در ادامه نکته‌های را خواهید خواند که در رابطه با شغل برنامه‌نویسی برایتان مفید خواهد بود. با ما در سکان آکادمی همراه باشید.

آن چه گفته شد، به این معنا نیست که برای تغییر مسیر دیر است. نکته‌هایی که در ادامه آمده است مخصوص دانشجویان نیست و هر کسی که کدنویسی می‌کند می تواند از آن‌ها برای موفقیت در شغل خود بهره ببرد. این نکته‌ها ترکیبی از تجربیات متخصصین -گرفته‌شده از سایت Experts Exchange- و چند نکته از افراد حرفه‌ای است که مطمئنا می‌تواند به شما در جهت یافتن استراتژی مناسب در شغل خود، کمک کند.

1- برای مصاحبه‌های کاری خود از قبل کدنویسی کنید.
مصاحبه‌ی کاری شغل مهندسی نرم افزار و برنامه‌نویسی در اغلب موارد شامل کدنویسی هم می‌شود. شخص مصاحبه گر برای پی بردن به این که شما در شرایط مختلف و تحت فشار چقدر از پس اوضاع برمی‌آیید، شما را به سمت کدنویسی سناریوهای نرم افزاری مختلف خواهد برد؛ لذا از قبل تمرین کافی داشته باشید و تا جایی که امکان دارد با تکنیک‌های جدید برنامه‌نویسی آشنا باشید. آنچه که شما به عنوان خلاقیت یا مهارت حل مسئله در هنگام مصاحبه از خود بروز می‌دهید، در رسیدن به و یا از دست دادن شغل مورد نظرتان تاثیر می‌گذارد.

2- ابزار درست را انتخاب کنید.
چند ابزار مهم وجود دارد که برنامه نویسان در شغل خود به آن نیاز خواهند داشت لذا آن‌ها را یاد بگیرید. در ادامه،‌ به برخی از مهم ترین آن ها اشاره یی خواهیم داشت:
- برنامه‌نویس حرفه‌ای معمولا وابسته به لایبرری های نرم افزاری آماده است. لایبرری هایی که گاها به صورت رایگان و متن باز هم عرضه می‌شوند.
- Vi یک ویرایشگر استاندارد است که همراه با UNIX عرضه می‌شود. سعی کنید کار با آن را یاد بگیرید.
- و از همه مهمتر ورژن کنترل سورس کد امری اساسی در موفقیت شغلی یک برنامه‌نویس است. لذا در اسرع وقت کار با سیستم هایی نظیر Git و SVN را یاد بگیرید.
همواره با این چند ابزار کار کنید و حتی ابزار‌های کدنویسی خود را توسعه بدهید. ابزار‌های جدید زبان‌های برنامه نویس جدید، سورس کد برنامه‌ها و منابع آنلاین به شما در رسیدن به موفقت کمک خواهند کرد.

3- قدرت منابع آنلاین را درک کنید.
اینترنت مکانی شگفت‌انگیز است که هر وقت شما به آن نیاز داشته‌اید در دسترس تان بوده است. زمانی که درگیر موضوعی در برنامه‌نویسی هستید به راحتی می‌توانید از اینترنت کمک بگیرید و مهم نیست آن موضوع چه باشد. تعداد زیادی انجمن و جوامع دیجیتال نظیر Experts Exchange ویا StackOverFlow و یا حتی Google وجود دارد که شما کافی است مسئله خود را در آن‌ها مطرح کرده و پاسختان را در سریع‌ترین زمان ممکن از سایر برنامه‌نویسان دریافت کنید. یکی از این جوامع را انتخاب کرده و در آن عضو شوید و مانند یک کاربر فعال در آن به فعالیت بپردازید. مطمئن باشید که هرگز پشیمان نخواهید شد!

4- قدرت اطرافیانتان را درک کنید.
دنیای مجازی و دیجیتال تنها بخشی از منابع شما است اما شما به افراد حاضر و موجود نیز نیازمندید. با برنامه نویسان و متخصصین تکنولوژی دوست شوید. تمام پند و اندرز و راهنمایی‌هایی که از آن‌ها دریافت می‌کنید بسیار ارزشمند خواهد بود و شما را قادر می‌سازند که در آینده کمک‌هایشان را جبران کنید. با افراد متخصص و باتجربه شرکتی که در آن کار می کنید دوست شوید؛ شما قرار است با آن‌ها در پروژه‌های نرم افزاری کار کنید لذا چه بهتر که آن اشخاص دوست و آشنا‌ی شما باشند.

5- انتقاد پذیر باشید.
کدهای شما همواره مورد انتقاد قرار خواهند گرفت خواه شما دانشجوی تازه کاری باشید و یا یک برنامه‌نویس حرفه‌ای. از آنچه که شما به عنوان انتقاد می‌پندارید به راحتی می‌توان بازخورد یا Feedback منفی دریافت کرد اما هرچه زودتر این عادت بد را ترک کنید. در بسیاری از مواقع افرادی که شما و کارهایتان را مورد انتقاد قرار می‌دهند، ممکن است اصلا برنامه‌نویس نباشند و آنچه را که شما انجام داده‌اید درک نکنند. لذا انتقاد پذیر باشید و خودتان را برای تغییرات لازم آماده کنید.
@binarycourse
#Programming
#How_To
#programmer
⚪️10 نکته برای دانشجویانی که به دنبال شغل برنامه‌نویسی هستند:

6- همه‌ی کدها کامل و بی‌عیب نیستند.
هدف همه‌ی کدهای نوشته شده، نوشتن برنامه‌هایی با کارایی و اثربخشی بالا است اما به این معنا نیست که تمام کدها بی‌عیب و نقص هستند و یا باید بی‌عیب و نقص باشند. بعضی اوقات زمان اجرای یک پروژه بسیار مهم تر از نوشتن برنامه‌ایی با گرافیک زیبای منحصر به فرد است. به عبارت دیگر، شما نیاز دارید تمام شرایط را بسنجید و تشخیص دهید که دقیقا چه زمانی نیاز به ایده‌های جدید و خارق‌العاده است. اگر راه موثرتری را برای نوشتن برنامه‌ی خود یافتید، ترس به دل خود راه ندهید و کدهای بد نوشته شده‌ی خود را دور بریزید حتی اگر بیشتر از 1000 خط بودند.

7- از کنار پیغام‌های خطا به سادگی نگذرید.
نگاه‌های اجمالی و سرسری بدون واکاوی و دقت نظر به پیغام‌های خطا، عادت بد اکثر برنامه‌نویسان است. زمان بیشتری را برای مشاهده و کند و کاو پیغام‌های خطا سپری کنید و به آنچه این پیغام‌ها می‌خواهند بازگو کنند، پی ببرید. آنگاه عادت می‌کنید که به راحتی هر نوع خطایی را در برنامه‌های خود شکار کنید.

8- به جزئیات کوچک هم توجه کنید.
برنامه‌نویسی کلا درباره‌ی جزئیات است لذا به آن ها توجه کنید. مدیریت جزئیات کدهایتان، کلید بخشی از موفقیت تان خواهد بود. لذا از کوچکترین خطاها هم نگذرید و آن ها را دنبال کنید. تصور کنید که ساعت‌ها به دنبال مکان کامایی که در هنگام برنامه‌نویسی فراموش کرده‌اید بگردید، این‌ کار واقعا هر برنامه‌نویسی را خسته و ناامید می‌کند!

9- در تسخیر کار خود قرار نگیرید.
برنامه‌نویسان همواره به عنوان معتادان شغلی شناخته‌ می‌شوند و به گونه‌ای به شغل خود اعتیاد پیدا می‌کنند که نمی‌توانند از آن دل بکنند و تمام وقت خود را با آن سپری خواهند کرد که این موضوع سلامتی را به خطر می‌اندازد. تعادل مناسبی را بین کار و زندگی بیابید که شامل تفریحاتی بدون کامپیوتر، سپری کردن اوقات با دوستان و خانواده و مقدار کافی استراحت باشد. برنامه‌نویسان خسته بیشترین اشتباهات را مرتکب می‌شوند.

10- تفکرات منفی را از خود دور کنید.
آیا کدهای شما هرچند ساده اما در اجرا ناموفق بودند؟ آیا خطای فاجعه‌باری در برنامه‌ی شما رخ داده است؟ آیا برنامه‌ای را که خود نابود ساخته‌اید مجدد لازم است بسازید؟ ناامید نشوید چرا که هیچ کدام از این چیزها مهم نیست به این دلیل که در آینده یی نه چندان دور تمام آن‌ها تبدیل به تجربیات ارزشمندی خواهند شد. بهترین راه برای بالابردن مهارت خود این است که از خطاها و اشتباهات تان درس یاد بگیرید و آن‌ها را برطرف سازید. وقتی می‌توانید خوشبینانه به موضوعی نگاه کنید و آن را حل کنید، بی‌دلیل با فکر‌های بد و منفی ذهن خود را خسته نکنید.

شاید برخی از موارد فوق الذکر جزو بدیهیات باشند و یا شما فکر کنید که برخی از آن ها کلیشه یی و شعارگونه اند، اما واقعیت امر آن است که برای موفقیت در حرفه ی برنامه نویسی گریزی از تبعیت از این کلیشه ها نیست!
@binarycourse
#ACM
#Programming
#PROBLEM01
🔵یک سوال ساده از مسابقات برنامه نویسی

فرض کنید صفی از m انسان وجود دارد. هدف ما این است که این صف را به صف های کوچک تری تقسیم کنیم.
برای مثال یک صف 3 تایی را میتوان به یک صف 1 نفره و یک صف 2 نفره تقسیم کرد. شما باید برنامه ای بنویسید که تعداد اعضای صف اصلی را از ورودی بگیرد و تمامی حالت های ممکن شکستن این صف را نمایش دهد.

ورودی مثال:
3
خروجی:
1 1 1
2 1
1 2
3

برنامشو بنویسید - موفق باشید
@binaryCourse
#ACM
#Programming
درود
دوستان به نظر میرسه سوال اول یکم پیچیده بود و هیچ کسی جوابشو برام نفرستاد.
به نظرم از سوال های آسون تر شروع کنیم بهتره
#ACM
#Programming
#PROBLEM02
🔹جمع زدن(Addition)🔹
جمع زدن اعداد چند رقمی برای کودکان سخت است. اگر پای رقم نقلی(ده بر یک) موقع جمع زدن به میان بیاید این کار سخت تر هم میشود. یک کودک باهوش برای اینکه مطمئن شود اعداد را درست جمع زده است از مادرش میخواهد فقط تعداد رقم نقلی را برای اون مشخص کند. حال این مادر از شما کمک میخواهد.

🔹ورودی و خروجی🔹
هر خط ورودی شامل دو عدد مثبت حداکثر ۱۰ رقمی است. آخرین خط ورودی حاوی دو صفر است. 0 0
به ازای هر خط ورودی یک خروجی تولید میشود که در آن تعداد ارقام نقلی چاپ میشود. اگر رقم نقلی وجود نداشته باشد عبارت "No Carry" چاپ میشود.
—------------------------—
~~~~ Input ~~~~
438 529
231 128
0 0
~~~~ Output ~~~~
1
No Carry
—---------------------------
@BinaryCourse
#ACM
#Programming
#PROBLEM03
@binaryCourse

Copy right © @BinaryCourse

محدودیت زمانی ۳ ثانیه

🔹بازی اعداد🔹
این سوال در مورد یک بازی است که در آن تعدادی عدد در اختیار افراد قرار میگیرد و هر کس می تواند با پشت سر هم گذاشتن اون اعداد یک عدد بزرگ بسازد مثلا برای ۴ عدد صحیح 123 و 124 و 56 و 90 می توان اعداد:
1231245690
1241235690
5612312490
9012321456
9056124213
و ... را می توان تولید کرد.
در حقیقت ۲۴ عدد مختلف با این اعداد می توان ساخت ولی مشخص است که 9056124123 از همه بزرگترین عددی است که می توان ساخت. برنده بازی کسی است که بزرگترین عدد ممکن را بسازد.

شما باید برنامه ای بنویسید که هیچ وقت در این بازی شکست نخورد.

🔹ورودی🔹
ورودی شامل تعداد اعداد و خود عدد ها می باشد در خط اول تعداد ورودی سپس در سطر بعدی عدد ها با یک فاصله از یکدیگر می آیند.

🔹خروجی🔹
به ازای هر تست ورودی ، بزرگترین عددی را که میتوان با اعداد موجود در آن تست ساخت نشان دهید.

⬇️نمونه ورودی⬇️
4
123 124 56 90
5
123 124 56 90 9
5
9 9 9 9 9
⬆️نمونه خروجی⬆️
9056124123
99056124123
99999

@binarycourse
پاسخ را با موضوع HUT_ACM_03 به ایمیلم بفرستین.
#ACM
#Programming
جواب سوالات بجر سوال C که پروژه درسی یکی از اساتید می باشد در فایل فوق موجود می باشد.
هدف از راه حل سوالات دادن ایده ی حل مسئله برای دانشویان علاقه مند می باشد.
برای آمادگی بیشتر کافیست سوالات زیادی حل کنید و همچنین به مباحث ساختمان داده مسلط باشید.
البته لازم است یک زبان برنامه نویسی را خوب بلد باشید و از امکانات آن استفاده کنید.
موفق باشید.محمدپور
#Programming
فناوری نرم افزار و اشکال زدایی (Software Technology & Debugging )/ برنامه نویسی کامپیوتر هاروارد و اولین اشکال زدایی تاریخ!

احتمالا برایتان این سوال پیش آمده است که کلمه باگ (bug) به معنای سوسک چرا مورد استفاده برای تعریف ایرادات نرم افزاری قرار گرفته است!؟

وقتی کامپیوتر هاروارد (Harvard Mark I)توسط دانشمندان دانشگاه هاروارد ساخته شد.(معماری هاروارد )
که به عنوان یک کامپیوتر الکترومکانیکی همه منظوره در سال های پایانی جنگ جهانی دوم مورد استفاده قرار گرفت.
خانم گریس هاپر (Grace Hopper) ، دانشمند علوم کامپیوتر و هم چنین دریابان دوم نیروی دریایی ایالات متحده آمریکا بعنوان اولین برنامه نویس این کامپیوتر ، به برنامه نویسی این کامپیوتر پرداخت و این باعث شد که او به عنوان یکی از پیشگامان مهندسی کامپیوتر لقب " بانوی نرم افزار " را ازآن خود کند.
در خلال یکی از برنامه ها و کاربری کامپیوتر هاروارد ، عملکرد کامپیوتر دچار مشکل شد!
جستجو و تحقیق و بررسی برای حل مشکل شروع شد!
حل مشکل و با یافتن یک "سوسک" درون کامپیوتر خاتمه یافت. سوسک عامل مشکل بود!
سوسک یا همان باگ انگلیسی ها ! نمادی شد برای دردسر همیشگی برنامه نویس ها!
بانوی نرم افزار جهان و اولین دیباگر جهان که یابنده سوسک هاروارد بود ، اولین باگ تاریخ برنامه نویسی را کشف کرد و البته تا به امروز تریلیون ها باگ دیگر توسط توسعه دهندگان کشف و برطرف می شود.
این فقط داستان Debugging نیست .
خانم گریس هاپر ، نخستین کامپایلر را ساخت ، اون حتی ایده زبان برنامه نویسی مسقل از ماشین (مرتبط با crossplatform) را مطرح کرد ، او بعدها در وزارت دفاع ایالات متحده آمریکا ، زبان برنامه نویسی FLOW-MATIC را اختراع کرد که بعداز مدتی در سال 1959 ، زبان_برنامه_نویسی COBOL بر اساس زبان FLOW-MATIC طراحی شد ، زبان برنامه نویسی COBOL به عنوان اولین زبان کراس پلتفرم شناخته میشود.

‏ COBOL مخفف Common Business-Oriented Language زبانی سطح بالا برای کاربرد های تجاری بود.‏ اما با وجود عمری حدود 60 ساله هنوز هم مورد استفاده قرار می گیرد و قابلیت های ویژه ای دارد که او را قدرتمند نگه داشته است.
#programming
تمرین برنامه نویسی نسبتا مشکل با یک تک LED:
در کاربردهایی که پیاده سازی آنها مستلزم تسلط به کدنویسی است حتما لازم نیست از سخت افزارهای پیچیده ای استفاده شده باشد و حتی ممکن است با یک تک LED بتوان صورت مسئله ای را تعریف کرد که انجام آن از عهده برنامه نویسان مبتدی خارج باشد.
یک LED به یکی از پین های میکروکنترلر متصل است و هدف نوشتن برنامه ای است که با اجرای آن نور LED به ترتیبی که توضیح داده می شود از وضعیت خاموش شروع به افزایش کند و بعد از رسیدن به یک مقدار حداکثر دوباره کاهش یابد و این روال همچنان ادامه یابد. برای تغییر ولتاژ LED باید از روش PWM استفاده شود. پارامترهای زیر در برنامه باید قابل تعیین باشند:

1- مدت زمان افزایش نور از حداقل به حداکثر.
2- منحنی ولتاژ اعمال شده به LED در یکی از دو وضعیت خطی یا سهمی در سیکل افزایش نور.
3- مدت زمان کاهش نور از حداکثر به حداقل (مستقل از گزینه 1).
4- منحنی ولتاژ اعمال شده به LED در یکی از دو وضعیت خطی یا سهمی در سیکل کاهش نور.
5- حداکثر ولتاژ اعمال شده به LED که محل تلاقی دو منحنی افزایش یا کاهش ولتاژ است.
به عنوان مثال می خواهیم ولتاژ متوسط یک LED در مدت زمان 1 ثانیه تحت منحنی خطی از صفر به نصف مقدار حداکثر خود برسد و سپس در مدت زمان 2.2 ثانیه تحت منحنی سهمی به صفر برسد و این روال بصورت پریودیک همچنان ادامه یابد.
اگه شما مشغول یادگیری یکی از میکروکنترلرها یا امبدد سیستم ها هستید و نظیر این کاربرد را نمی توانید برای یک LED پیاده سازی کنید بهتره بیشتر از آنکه به دنبال کار کردن با سخت افزارهای پیچیده تر باشید، روی توسعه مهارت های برنامه نویسی خود متمرکز شوید.
راه حل خودتون رو میتونین بهم حضوری نشون بدین تا اگه نکته ای داشته باشه بهتون بگم.
با رزبری هم قابل انجام هست.
موفق باشید - محمدپور
@BinaryCourse
#Python
#Programming
از 360 ماژول و کتاب خانه معروف و استاندارد شده پایتون 2 ، بیش از 346 مورد به پایتون سه منتقل شده اند.آیا هنوز هم از پایتون 2 استفاده میکنید؟
@binarycourse