آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

طراحی الگوریتم و ساختمان داده‌ها

hosseinAmini  9 سال پیش  9 سال پیش
+2 0

سلام دوستان
من حدود 3 سال سابقه برنامه نویسی اندروید دارم و رشته دانشگاهی و هنرستانم نرم افزار کامپیوتر هست. جدیدا دنبال این هستم که در یک شرکت خوب کار کنم که یکی از این شرکت ها گروه حصین هست. من مشکلی با تخصص های مورد نیاز برای کار در بخش برنامه نویسی اندروید این شرکت ندارم تنها مشکل من که واقعا موندم چیکار باید بکنم مهارت های عمومی ای هست که هر برنامه نویس باید داشته باشه تا بتونه وارد این شرکت بشه. یکی ازمهارت ها ‫آشنایی کافی با مباحث طراحی الگوریتم و ساختمان داده‌ها هست. من با اینکه رشته دانشگاهیم کامپیوتر بوده هیچ وقت نفهمیدم دروس ساختمان داده ها و طراحی الگوریتم در ساخت برنامه های واقعی به چه دردی می خوره(دوستان من با مفهوم الگوریتم و ایجاد الگوریتم آشنا هستم فقط این دروس دانشگاه رو نمیدونم به چه دردی می خورد)
لطفا دوستان با سابقه من رو راهنمایی کنن که یادگیری طراحی الگوریتم و ساختمان داده ها چه تاثیری در کد نویسی و کیفیت برنامه نویسی داره؟ مثلا تسلط بر ساختارهای داده ای استاندارد مثل List و Queue و Map و Stack و همچنین الگوریتم هایی مانند Sort و Search چه سودی داره؟ اگر واقعا مفیده لطفا یه منبع خوب به من معرفی کنید.

این متنی هست که در وبلاگ این شرکت نوشته شده: آدرس وبلاگ

محبوبیت صنعت نرم افزار، و در دسترس بودن منابع آموزش فراوان در دنیای وب، موجب شده است تعداد زیادی برنامه نویس وجود داشته باشد. اما متاسفانه بسیاری از برنامه نویسان (تاکید می کنم، بسیاری از برنامه نویسان)، دانش عمیق کافی ندارند. 

اکثر برنامه نویسان تعداد کمی مفاهیم اولیه برنامه نویسی (مانند متغیر، آرایه، حلقه تکرار، شرط، و همچنین الگوریتم های اولیه) را یاد می گیرند و سپس شروع به نوشتن برنامه می کنند. این موجب می شود که چنین برنامه نویسی، در زبان شی گرای #C با امکانات زیاد، کد رویه ای C بزند و سعی کند با این کد مساله خود را حل کند. 

کار کردن با دانش سطحی برنامه نویسی اگر چه غیر ممکن نیست، اما چنین برنامه نویسانی نمی توانند در تولید سیستم های بزرگ یا پیچیده نقش جدی داشته باشند.

+1 0
البته در اکثر زبان های برنامه نویسی الگوریتم های search و sort و ... به صورت توابع داخلی (built-in) پیاده سازی شدند و شاید برای استفاده از این توابع نیاز به دونستن نحوه کار اون ها نداشته باشید ولی دونست حداقل کلیات ،باعث درک بهتر، موقع برنامه نویسی میشه مخصوصا زمانی که شما به خاطر مثالی مثل بهینه سازی نیاز دارید که یک ماژول رو خودتون بنویسید نه اینکه از ماژول های آماده استفاده کنید.این در مورد مفاهیمی مثل List و Queue و Map و Stack هم صادق است. وقتی شما فرق صف و استک رو ندونید چه جوری میخواهید ازش استفاده کنید ؟شاید بگید تاحالا بهش نیاز نداشتم ولی زمانی که شما عضو یک تیم هستید باید حداقل های برنامه نویسی رو بدونید ،بقیه اعضای تیم نمی تونند منتظر باشند تا شما بری آموزش ببینی یا به شما آموزش بدند پس باید آمادگی نسبی برای هرکاری که به شما محول میشه رو داشته باشید.مطلبی که نقل قول کردید به نظرم کاملا مطلب درستی است."البته من تاحالا تجربه کار تیمی ندارم ولی به نظرم این طرز فکر معقول میاد" (9 سال پیش)
+1 0
البته منظورم از " آمادگی نسبی برای هرکاری" در مورد ابتدایی توین مباحث برنامه نویسی و ساختمان داده ،برنامه نویسی شی گرا و سرفصل های رایج زبان برنامه نویسی مورد نظر است. (9 سال پیش)
+2 0
سلام دوستان ، همین که بتوانی با ابتکار عمل تعداد خطوط برنامتو کمتر بکنی و همینکه بتوانی زمان اجرای برنامتو کمتر بکنی میشه داده و الگوریتم (9 سال پیش)
+1 0
AK1369 شما درست میگید ولی برای اینکار باید مهارت های لازم رو آموخت که اینطور که من متوجه شدم این مهارت ها مربوط به طراحی الگوریتم و ساختمان داده ها میشه (9 سال پیش)
+1 0
با تایید نظر دوستان ، اگر بخوایم یکم جزئی تر و دقیق تر نگاه کنیم ، میشه اینطوری گفت که خیلی مفاهیم برای برنامه نویسی بهتر وجود دارند ، مثلا روش های حل یک مساله با الگوریتم های مختلف برای مثال برای مساله ساده زمان بندی میشه به روش شاخه و حد یا bachtracking حل کرد و حل به هر روش سختی های خاص خود در پیاده سازی و بهینه و مناسب بودن برانمه را در بر داره یا مورد دیگه ای که وجود داره جدا کردن مساله از راه حله که از موارد مربوط به شی گرائی هست و مواردی از این دست ... (9 سال پیش)
0 0
اینا مهم هستن اما مهمتر از اینا توانایی شما در تحلیل کد هست . برنامه نویس حرفه ای کسی هست که اگه 1000 خط کد گذاشتن جلوی روش بتونه تحلیل بکنه و بدونه چی شد بنظر من خود این حرفی که زدم بشه مهندسی نرم افزار که خروجی این حرف یعنی محصولی با کیفیت (9 سال پیش)
 برای این سوال 2 پاسخ وجود دارد.
پاسخ به سوال 
miprosoft  9 سال پیش
+3 0

هر برنامه نویسی که الگوریتم ها و مسائل موجود دردرس ساختمان داده ها رو درک کرده باشه و برنامه ها شو نوشته باشه (تکنیک هایی مثل صف،پشته،درخت،اشاره گرها)  به نظر من برنامه نویس قوی تریه تا اون کسی که با جدول ضرب نوشتن برنامه نویس شده. برنامه نویسی یعنی حل مسئله و هر کی عادت به حل مسائل پیچیده تری کرده باشه مسلما عیارش بالاتره. تصور کنید تمرین شما محاسبه دترمینان ماتریس n در n باشه و یا خواندن یک کاراکتر از ورودی و جستجوی آن کاراکتر در یک رشته. هر کدوم از این تمرین ها شما رو بیشتر به فکر فرو ببره نتیجش این میشه که ذهن شما برای حل مسئله بسیار قویتر میشه.

+1 0
من هم فکر می کنم برای اینکه واقعا برنامه نویس حرفه ای بشیم باید این مباحث رو یاد بگیریم. همونطور که هممون می دونیم برای ساخت یک برنامه کلی راه و الگوریتم وجود داره حالا برنامه نویس هایی که واقعا حرفه ای هستند کوتاه ترین و سریع ترین راه رو انتخاب می کنن در حالی که برنامه نویس های دیگه چنین توانایی رو ندارند. دوستان اگر امکان داره برای ساختمان داده ها به من منبع معرفی کنید تا اول ساختمان داده ها که پیش نیاز طراحی الگوریتم هست رو یاد بگیرم. ممنون. (9 سال پیش)
+2 0
کتاب ساختمان داده مقسمی کتاب خیلی خوبیه و هم ساختمان داده رو مختصر و مفید توضیح داده . (9 سال پیش)
+1 0
خانم زهرا رئیسی نسخه چاپی این کتاب رو میفروشند یا فقط pdf ؟ ممنون (9 سال پیش)
+2 0
والا نمی دونم الان به چه صورته ولی من یه کتاب دارم از زمان دانشجوییم که کتاب خیلی خوبی هست فکر نمی کنم پی دی اف اون موجود باشه و صد در صد باید نسخه چاپی رو تهیه کنید . (9 سال پیش)
+2 0
من الان یه سرچ کردم ظاهرا پی دی اف این کتاب هم موجود هست و همین طور فیلم های آموزشی در مورد ساختمان داده . (9 سال پیش)
0 0
سلام دوستان گرامی و استاد همیشه ناپیدای گرانقدر . دوستان من زمان لیسانس اینا رو خوب یاد گرفتم و فوق لیسانس پیشرفته ترش رو هم یاد گرفتم اما توصیه من این هست که وقت خودتون رو تلف اینا نکنید اینا همه منقضی هستن و بخونیدش ازش زده میشید هر چند خودم ترم اول لیسانس زبان c افتادم اصلا نمیدونستم چی هست چون دیپلمم تجربی بود اونقدر بهش علاقه داشتم یکی از دوستانم هم توی همین انجمن هست به من کمک بسزایی کرد و با پافشاری خیلی فوق العاده و تلاش زیاد یادش گرفتم . توی این کتابا هر چیزی که هست بروز نیستنن . بنظر من بجای اینکه طراحی الگوریتم بخونید یا ساختمان داده زبان c جعفر نژاد قمی رو pdf ش توی نت موجود هست بگیرید تا فصلی که نیازتون هست بخونید ما معمولا تا فصل 7 یا 8 مربوط به ساختمان بود خوندیم . خودتون سطر به سطر کد بزندید و تست و دیباگ کنید . توصیه من کتابی هست که معرفی کردم و این کتابا برای کسانی خوب هست که نیازمند ادامه ی تحصیلات تکمیلی آکادمیک تئوریسم (که ازش نفرت دارم و عمر آدم از دست میره) هستند . موفق و پیروز باشید . استاد بهنام رو من خیلی دوست دارم (9 سال پیش)
+1 0
با احترام به نظر دوست بزرگوارم ، بعضی موارد وجود داره که باید با تئوری آشنا بود مثل روشهای مختلف حل مساله مثل برنامه نویسی پویا ، شاخه و حد و حریصانه و تقسیم و غلبه در برنامه های دشوار دونستن این موارد خیلی به حل مساله کمک میکنه . صرف خواندن یک کتاب برنامه نویسی میتونه مشکل گشا باشه اما کافی نیست . بنابراین نه خواندن کتابهای کنکوری در این زمینه که آشنا شدن با این مفاهیم و کاربردشون خیلی ضروریه . کتاب ساختمان داده به زبان c جعفرنژاد که فکر میکنم بهترین کتابشم باشه از نظر من ، توصیه می کنم . طراحی الگوریتم هم به همین سادگی نمیشه به مفاهیمش و کاربردش در کد زنی مسلط شد . خیلی ممارست میخواد . (9 سال پیش)
0 0
این روش هایی که شما عرض کردید جنبه ریاضی تون رو قوی میکنه ولی به نظر من یه چیزی بالاتر از ریاضی هست اون هم قدرت تحلیل کد میباشد . (9 سال پیش)
پاسخ به سوال 
Devtpoint  9 سال پیش
+3 0

دوستان مجددا سلام .
یک فایل مربوط به مبانی برنامه نویسی دارم که خیلی دیر بدست خودم رسید ** این فایل اجرایی مربوط به دانشگاه پیام نور هست یعنی اگه اینو یاد بگیرید توی الگوریتم نویسی ، طراحی الگوریتم ، ساختمان داده و ... غیر ممکن هست دیگه لنگ بزنید .

دانلود : لینک 

بعد از extract همچین چیزی برای شما نمایش داده میشود که بر روی مبانی کلیک نمایید .

** توصیه میکنم این فایل رو به همه ی دوستان در همین انجمن معرفی نمایید**

+1 0
سلام خدا قوت ... ممنون دوست عزیز (9 سال پیش)
+1 0
با اجازتون من بعد از دانلود فایل پیشنهادی یه 5-6 روزی به افق خیره بودم دوست من این کتاب مبانی برنامه نویسی دانشگاه پیام نور هستش که زبان پاسکال رو توضیح میده البته کتاب فوق العاده ای است برای کسانی که قصد یادگیری یک زبان برنامه نویسی رو دارن اونم برای آموزش نه بازار کار چون الان از زبان پاسکال دیگه کسی استفاده نمی کنه اما در مورد طراحی الگوریتم و ساختمان داده دقیقا این دو درس + یکسری دروس دیگه تفاوت مهندس کامپیوتر و کسی هست که فقط کد نویسی میکنه و فکر میکنه داره برنامه نویسی میکنه ! این دروس نحوه چیدمان داده ها رو مطرح می کنن به گونه ای که دو اصل مهم حداقل فضا و حداقل زمان رو در نظر بگیرن به نظرم اگه اولین باره که میخواین با این دو آشنا بشین از فیلم های آموزشی استفاده کنین چون کتاب های موجود نیاز به تدریس استاد دارن تا خوب قابل فهم باشن موفق باشید ... (9 سال پیش)
0 0
یک زبان یاد بگیری بقیش سینتکسشون راحته . زبان سی برای شروع سخت و بهترینه (9 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .