| فناورياطلاعات ، برنامهنويسي |
برنامه نويسي ، شبكه ، سيستم عامل ، پايگاه داده ، سيستم اطلاعات جغرافيايي ، مديريت و كنترل پروژه
|
Information
![]()
سلام دوست عزيز . اين وبلاگ در مورد فناوري اطلاعات و علوم مرتبط با اون هست و داراي آموزش كامل و گام به گام برنامه نويسي به زبان ++C .
************************ پيشنهاد ميكنم از لينكهاي بخش مقالات فناوري اطلاعات ديدن كنيد . ************************ به اميد اينكه مطالب مفيد واقع بشه . با ارائه نظرات سازنده ي خودتون من رو در هرچه پربارتر كردن اين وب ياري كنيد . متشكرم مقالات فناوري اطلاعات
سيستم اطلاعات جغرافيايي
گزارش كار آزمايشگاه فيزيك2 خلاصهي كتاب سيستمهاي عامل تأليف ويليام استالينگز بانك اطلاعات چيست ؟ علل كاهش سرعت كامپيوتر فركانس بالاتر يا هسته بيشتر؟! مديريت و كنترل پروژههاي IT راه اندازي شبكه ي بي سيم تمام پیوندها پیوندها
ترفندستان (حسين)
كليك كن سرگرم ميشي يه غريب آموزش امنيت و برنامهنويسي(مهدي زارعي) وبلاگ علمي تخصصي فناوري اطلاعات اديب آموزش حرفهاي هك ترفند و آموزش (smn) ۩۞۩ تبدیل صدای مرد به زن ۩۞۩ ترفندهای کامپیوتر و موبایل و آموزش آفیس(بهزاد) آموزش حرفه اي ويروس نويسي (رضا) گل سرخ كلبه درويشي (محمد) انجمن تخصصي ويژوال بيسيك 6 (سيد كمال رضايي) : :سایت تخصصی موبایل:: (نويد) سايت تخصصي برنامه نويسي (مهدي) ترفندستان (محمد) مرکز دانلود مقاله و کتاب و فونت و سوال فؤاد (قلبها) سهيلستان سايت بزرگ موبايل و كامپيوتر حسين كوهساري عشقاي بچگي (شهر دانلود...جاوا..فيلم..عکس) خدمات انفورماتيك و اطلاع رساني ماموت: وبلاگ مقالات مهندسي مكانيك و خودرو آموزش جامع كامپيوتر وبلاگ تخصصي كامپيوتر (محمد) مهندسان عمران آموزش گام به گام دلفي برنامه نويسي ( عليرضا ) پسرهاي با معرفت بهترین وبلاگ دانلود نرم افزار اورميا هك جستجوگر
طراح قالب
|
آماده سازي مقدمات يك برنامه (Program) دستورالعمل هاي متوالي است كه مي تواند توسط يك كامپيوتر اجرا شود . براي نوشتن و اجراي هر برنامه , به يك ويرايشگر متن (Text Editor) و يك كامپايلر (Compiler) احتياج داريم . با استفاده از ويرايشگر متن مي توانيم كد برنامه را نوشته و ويرايش كنيم . سپس كامپايلر اين كد را به زبان ماشين ترجمه مي كند . هرچند ويرايشگر و كامپايلر را مي توان به دلخواه انتخاب نمود اما امروزه بيشتر توليد كنندگان كامپايلر , "محيط مجتمع توليد (Integrated Development Environment) , (IDE ) " را توصيه مي كنند . محيط مجتمع توليد , يك بسته ي نرم افزاري است كه تمام ابزارهاي لازم براي برنامه نويسي را يكجا دارد : يك ويرايشگر متن ويژه كه امكانات خاصي دارد , يك كامپايلر , ابزار خطا يابي و كنترل اجرا , نمايشگر كد ماشين , ابزار توليد خودكار براي ايجاد امكانات استاندارد در برنامه , پيوند دهنده هاي خودكار (Linker) , راهنماي سريع و هوشمند و ... . بيشتر اين ابزارها براي سهولت برنامه نويسي , توانايي هاي ويژه اي دارند . ويرايشگرهاي متن كه در محيط هاي IDE استفاده ميشوند , قابليت هاي بصري به كد برنامه ميدهند تا كد خواناتر شود و نوشتن و دنبال كردن برنامه آسانتر باشد . به عنوان مثال , دستورات را با رنگ خاصي متمايز مي سازند , متغيرها را با رنگ ديگري مشخص مي كنند , توضيحات اضافي را به شكل مايل نشان مي دهند و حتي با نوشته هاي خاصي شما را راهنمايي مي كنند كه كجاي برنامه چه چيزهايي بنويسيد . تمام اين امكانات سبب شده تا برنامه نويسي جذابتر از گذشته باشد و برنامه نويس بجاي اينكه نگران سرگرداني در كد برنامه يا رفع خطا باشد , تمركز خويش را بر منطق برنامه و قابليت هاي آن استوار كند . بسته ي ++Visual C محصول شركت مايكروسافت و بسته ي C++builder محصول شركت بورلند نمونه هاي جالبي از محيط مجتمع توليد براي زبان ++C بشمار مي روند . البته هر دوي اينها مخصوص سيستم عامل ويندوز هستند . اگر مي خواهيد روي سيستم عامل ديگري مثل Unix يا Linux برنامه بنويسيد بايد از كامپايلري كه مخصوص اين سيستم عامل هاست استفاده كنيد . قبل از اينكه برنامه نويسي با ++C را شروع كنيم , يك محيط مجتمع توليد روي كامپيوتر خود نصب كنيد تا بتوانيد مثال هايي كه بيان ميشود را خودتان نوشته و امتحان كنيد . تاريخچه ي ++C ؟ در دهه ي 70 ميلادي در آزمايشگاه هاي بل , زباني بنام C ايجاد شد . انحصار اين زبان در اختيار شركت بل بود تا اينكه در سال 1978 توسط Kernighan و Richie شرح كاملي از اين زبان منتشر شد و بسرعت نظر برنامه نويسان حرفه اي را جلب نمود . هنگامي كه بحث شئ گرايي و مزاياي آن در جهان نرم افزار رونق يافت , زبان C كه قابليت شئ گرايي نداشت , ناقص به نظر مي رسيد تا اينكه در اوايل دهه ي 1980 دوباره شركت بل دست بكار شد و Bjarne Stroustrup زبان ++C را طراحي نمود . ++C تركيبي از دو زبان C و Simula بود و قابليت هاي شئ گرايي نيز داشت . از آن زمان به بعد , شركت هاي زيادي كامپايلرهايي براي ++C طراحي كردند . اين امر سبب شد تفاوت هايي بين نسخه هاي مختلف اين زبان بوجود آيد و از قابليت سازگاري و انتقال آن كاسته شود . به همين دليل در سال 1998 زبان ++C توسط مؤسسه ي استانداردهاي ملي آمريكا (ANSI) به شكل استاندارد و يكپارچه درآمد . كامپايلرهاي كنوني به اين استاندارد پايبندند . ما نيز بر اساس همين استاندارد كار خواهيم كرد . چرا ++C ؟ از زماني كه اولين زبان از خانواده ي C به شكل رسمي انتشار يافت , متخصصين بسياري درباره ي توانايي ها و قابليت هاي آن قلم زده و در اين وادي قدم زده اند . از نظر ايشان آنچه بيشتر جلب نظر مي كرد نكات زير بود : - زبان C يك زبان همه منظوره است . دستورالعمل هاي اين زبان بسيار شبيه عبارات جبري است و نحو آن شبيه جملات انگليسي است . اين امر سبب ميشود كه C يك زبان سطح بالا باشد كه برنامه نويسي در آن آسان است . - در اين زبان عملگرهايي تعبيه شده كه برنامه نويسي سطح پايين و به زبان ماشين را نيز امكان پذير مي سازد . اين خاصيت سبب مي شود تا بتوانيم با استفاده از C برنامه هاي سيستمي و بسيار سريع ايجاد كنيم . به اين ترتيب خلاء بين زبان هاي سطح بالا و زبان ماشين پر ميشود . به همين دليل به C زبان سطح متوسط نيز گفته ميشود . - چون C عملگرهاي فراواني دارد , كد منبع برنامه ها در اين زبان بسيار كوتاه است . - زبان C براي اجراي بسياري از دستوراتش از توابع كتابخانه اي استفاده مي كند و بيشتر خصوصيات وابسته به سخت افزار را به اين توابع واگذار مي نمايد . نتيجه اين است كه نرم افزار توليد شده با اين زبان به سخت افزار خاص بستگي ندارد و با اندك تغييراتي مي توانيم نرم افزار مورد نظر را روي ماشيني متفاوت اجرا كنيم . يعني برنامه هايي كه با C نوشته مي شوند " قابليت انتقال " دارند و مستقل از ماشين هستند . علاوه بر اين C اجازه ميدهد تا كاربر توابع كتابخانه اي خاص خودش را ايجاد كند و از آنها در برنامه هايش استفاده كند . به اين ترتيب كاربر مي تواند امكانات C را گسترش دهد . - برنامه ي مقصدي كه توسط كامپايلرهاي C ساخته ميشود بسيار فشرده تر و كم حجم تر از برنامه هاي مشابه در ساير زبان هاست . ++C كه از نسل C است , تمام ويژگي هاي جذاب بالا را به ارث برده است . اما اين فرزند برتري فني ديگري هم دارد : ++C اكنون شئ گراست . ميتوان با استفاده از اين خاصيت , برنامه هاي شئ گرا توليد نمود . برنامه هاي شئ گرا منظم و ساختاري اند , قابل بروز شدن اند , به سهولت تغيير و بهبود مي يابند و قابليت اطمينان و پايداري بيشتري دارند . و سرانجام آخرين دليل استفاده از ++C ورود به دنياي #C ( سي شارپ ) است . #C كه اخيرا عرضه شده , زباني است كاملا شئ گرا . اين زبان در شئ گرايي پيشرفت هاي زيادي دارد و همين موضوع سبب پيچيدگي بيشتر آن شده است . ولي براي عبور از اين پيچيدگي يك ميانبر وجود دارد و آن ++C است . نحو #C بسيار شبيه ++C است . اگر ++C را بلد باشيم #C آن قدرها هم پيچيده نيست . كليد ورود به دنياي #C ميان كدهاي ++C نهفته است . كدام شيوه بهتر است ؟ برنامه نويسي شئ گرا از منطق قوي و قابليت اطمينان بالا برخوردار است . همچنين روند توسعه ي نرم افزار در اين روش ساده تر دنبال ميشود و مديريت برنامه هاي پيچيده در آن آسانتر است . در عوض شناسايي اشياي برنامه كمي مشكل است و اين كار , روند توليد نرم افزار را كمي كند مي نمايد . همچنين به دليل سرباري كه برنامه هاي شئ گرا دارند , كمي كندتر از برنامه هاي مشابه در شيوه ي ساخت يافته عمل مي كنند . برنامه هاي ساخت يافته را به آساني ميتوان طراحي كرد زيرا فقط كافي است جريان كار برنامه را بدانيد . سپس خيلي راحت مي توانيد توابع را تشخيص داده و پياده سازي كنيد . برنامه هاي ساخت يافته سربار ندارند و به همين دليل معمولا سريع تر از برنامه هاي شئ گراي مشابه اجرا مي شوند ولي روند توسعه ي نرم افزار هاي ساخت يافته مشكل تر است زيرا بايد با تابع هاي زيادي سروكله بزنيد و همين امر امنيت و صحت برنامه را به خطر مي اندازد . با توجه به اين گفته ها , به درستي نمي توان گفت كه كدام برنامه نويسي بهتر است . اين كاملا به نوع برنامه بستگي دارد . اگر قابليت اطمينان و نگهداري اهميت بيشتري داشته باشد , شئ گرايي اولين انتخاب است ولي اگر سرعت اجرا و زمان عكس العمل و تصميم گيري اهميت بيشتري دارد , برنامه نويسي ساخت يافته ترجيح داده مي شود . برنامه نويسان با تجربه , اغلب تركيبي از اين دو روش را به كار مي گيرند . بخش هايي را با اشياء پيش مي برند و قسمت هايي را با توابع . حتي ممكن است طراحي برنامه را با يك روش انجام دهند و پياده سازي را با روش ديگر . اين كاملا به شرايط برنامه و توانايي اعضاي گروه بستگي دارد . در اين وبلاگ هر دو روش را با استفاده از زبان ++C بررسي خواهم كرد . برنامه نويسي شئ گرا برنامه نويسي شئ گرا روش نويني است كه بجاي آن كه به جريان اجراي برنامه بپردازد , به داده هايي كه قرار است پردازش شوند مي پردازد . در اين روش , داده هاي مرتبط با هم يك جا جمع ميشوند و توابعي كه براي پردازش آنها لازم است نيز اضافه ميشود به تركيب حاصل " شئ " ( Object ) مي گويند . پس از اينكه اشياي برنامه شناخته شدند , با ارسال پيام به يكديگر , تراكنش هايي انجام مي دهند كه حاصل اين تراكنش ها , مقصود اصلي برنامه را تامين مي كند . درست مثل دنياي اطراف ما كه در آن اشياي مختلف با رفتارشان روي اشياي ديگر تاثير مي گذارند تا كاري را انجام دهند . قدرت برنامه نويسي شئ گرا در " پنهان سازي اطلاعات " ( Information Hiding ) است . يعني داده هاي مورد نياز و توابع لازم براي يك شئ , درون آن شئ محصور ميشود . به اين ترتيب ساير اشياي برنامه از پياده سازي داخلي اشياي ديگر بي خبرند و فقط توابع و داده هاي لازم را مي توانند دست يابي كنند . در نتيجه توابع درهم و برهم از يكديگر تفكيك شده و درون اشياي خاصي قرار مي گيرند . خلاصه اينكه منطق برنامه براحتي دنبال ميشود و جزئيات كم اهميت ما را سردرگم نمي كند . عيب يابي چنين برنامه اي نيز راحت است زيرا اغلب براحتي مي توان شئ معيوب را شناخت و با اصلاح پياده سازي داخلي آن , برنامه را بهبود داد . اشياء نيز مثل تابع ها قابليت استفاده ي مجدد دارند و اين كار بسيار آسانتر و منطقي تر انجام ميشود زيرا هم ميتوان اشياء را با هم تركيب كرد تا شئ جديد حاصل شود و هم با استفاده از وراثت مي توانيم از روي اشياي قبلي , شئ جديدي بسازيم كه ويژگي هاي مشترك و ويژگي هاي منحصر بفرد داشته باشد . برنامه نويسي گروهي با استفاده از شئ گرايي بهتر انجام ميشود . اعضاي گروه به جاي آنكه روي نوشتن توابع متمركز شوند , روي ساختن اشياء تمركز مي كنند . چون شئ گرايي از مخفي سازي اطلاعات سود مي برد , اعضاي گروه ميتوانند شيء ساخته شده توسط ساير اعضا را بدون درگير شدن با جزئيات داخلي اش بكار بگيرند . به همين علت است كه شئ گرايي در مديريت برنامه هاي حجيم و پيچيده موفق تر است . #C و JAVA دو تا از زبان هايي هستند كه برنامه نويسي شئ گرايي در آنها انجام ميشود . برنامه نويسي ساخت يافته برنامه نويسي ساخت يافته روش منظمي براي توليد برنامه هاست . برنامه هايي كه به اين شيوه نوشته ميشوند خوانايي زيادي دارند ( يعني راحت درك ميشوند ) , آزمايش و اشكال زدايي و اصلاح آنها نيز آسان است . در اين روش برنامه بصورت مجموعه اي از فعاليت ها تصور ميشود كه بايد بر روي داده ها انجام شوند . هر كار پيچيده اي به چند كار كوچكتر تجزيه ميشود تا اين كارها براحتي قابل پياده سازي باشند . سپس براي انجام هريك از اين كارها , زير برنامه ي خاصي كه تابع ( Function ) نام گرفته نوشته ميشود . به همين دليل به اين شيوه " برنامه نويسي بالا به پايين " ( Up-Down programming ) نيز مي گويند . برنامه نويسي ساخت يافته روش موفقي در حل مسائل پيچيده است . توابع قابليت استفاده ي مجدد دارند . يعني ميتوان توابع يك برنامه را در برنامه هاي ديگر نيز بكار برد . به اين ترتيب كد نويسي كمتر ميشود و توليد نرم افزار با سرعت بيشتري صورت مي گيرد . توابع امكان مي دهند تا توليد نرم افزار با استفاده از گروه ممكن شود . به اين شكل كه پس از مشخص شدن توابع مورد نياز , هريك از اعضاي گروه وظيفه ي نوشتن و آزمايش توابع مشخصي را برعهده مي گيرد و به اين شكل اعضاي گروه بصورت همزمان روي بخش هاي مختلف برنامه كار مي كنند بدون اينكه يكي منتظر ديگري بماند . در نهايت اين توابع به هم پيوند مي خورند تا جريان منطقي برنامه برقرار شود . بديهي است كه عيب يابي و اصلاح برنامه نيز آسان ميشود , زيرا با برسي جريان برنامه , تابع معيوب بسرعت شناسايي و اصلاح ميشود بدون اينكه بقيه ي بخش هاي برنامه تغيير يابند . زبان هاي C و PASCAL دو نمونه از زبان هاي برنامه نويسي ساخت يافته هستند .
مروري بر تاريخ برنامه نويسي
برنامه نويسي رايانه به گونه اي كه ما امروز مي شناسيم , در اواخر دهه ي 50 ميلادي شروع شد و در دهه ي 60 ميلادي بسرعت رشد نمود . در آن دوران برنامه نويسي يك كار تخصصي و مهندسي تلقي نميشد زيرا رايانه ها بسيار محدود بودند و كارهاي ساده اي انجام مي دادند . اغلب اينگونه بود كه افراد بسيار سريعتر از رايانه ها پاسخ محاسبات رياضي را مي يافتند . لذا برنامه نويسي براي چنين دستگاه هايي چندان ارزش و اهميت نداشت و اولين برنامه ها فقط چند دستور ساده ي متوالي بودند . پس از اجراي اين دستورها رايانه بايد از نو راه اندازي ميشد تا براي اجراي دوباره ي برنامه آماده شود . كم كم سخت افزار متحول شد و رايانه ها قدرتمندتر و كارامدتر شدند اما به همان نسبت توليد برنامه براي آنها دشوار گشت طوري كه برنامه هاي ساده ي اوليه , مشكل جدي بر سر راه كاربري رايانه محسوب شدند . پس تلاش هايي صورت گرفت تا برنامه هاي كارامدتري نوشته شود . اما طبق يك قانون كلي , پيچيدگي نرم افزار بيشتر و بيشتر مي گردد تا جايي كه ديگر انسان نمي تواند آن را مديريت كند و از همان جا هرج و مرج شروع مي شود . بزودي نهضت همگاني صورت گرفت تا راهكاري براي مديريت پيچيدگي و كارايي برنامه ها يافت شود . سرانجام در اواخر دهه ي 60 " برنامه نويسي ساخت يافته " ( Procedural programming ) بعنوان راه حل پذيرفته شد. برنامه نويسي ساخت يافته امكان ميداد كه برنامه به چند تابع تقسيم شود و چند نفر بطور همزمان كار توليد نرم افزار را پيش ببرند و همين امر سبب افزايش سرعت توليد نرم افزار و كاهش خطاهاي برنامه نويسي گرديد و برنامه هاي بزرگ و مفيد ساخته شدند . برنامه هايي كه در ابتدا با اين روش ايجاد شدند چيزي بين 10 تا 20 هزار خط كد داشتند , از ساختمان داده ي كوچكي بهره مي جستند و الگوريتم هاي ساده اي در آنها به كار مي رفت . با استفاده از برنامه نويسي ساخت يافته براحتي ميشد چنين برنامه اي را مديريت كرد . برنامه ها آرام آرام به قصد بهبود كارايي , حجيم تر شدند . الگوريتم هاي پيشرفته اي بكار گرفته شد و ساختمان داده ي پيچيده تري در تركيب برنامه ها استفاده شد . برنامه نويسي ساخت يافته ديگر نمي توانست از پس كدهاي طولاني چنين برنامه هايي برآيد ( سيستم عامل ويندوز NT بيش از 10 ميليون خط كد دارد ) . بنظر ميرسيد كه روش ديگري لازم است تا توليد كنندگان نرم افزار را از دست متغيرهاي فراوان و توابع طولاني و سرگيجه آور خلاص كند . بر اساس اين تفكر بود كه برنامه نويسي شئ گرا ( Object oriented programming )پيش كشيده شد . تفكر شئ گرا تقريبا همزمان با تفكر ساخت يافته مطرح شد اما فقط براي طراحي برنامه استفاده ميشد . پس از عاجز ماندن برنامه نويسي ساخت يافته , شئ گرايي در برنامه نويسي هم استفاده شد . حالا برنامه نويسان مي توانند در برنامه به پانزده شيء فكر كنند كه اين اشياء با چهل پيام مشخص با هم ارتباط دارند , حال آنكه همين برنامه اگر به سبك ساخت يافته ايجاد شود بايد به 100 متغير , 20 ثابت , ششصد تابع و ... فكر كرد . ****************************** در پست بعدي اين دو سبك برنامه نويسي را دقيق تر برسي خواهيم كرد . |
Technology
آرشیو
هفته اوّل آبان 1388
هفته سوم شهریور 1388 هفته سوم مرداد 1388 هفته چهارم تیر 1388 هفته دوم فروردین 1388 هفته اوّل بهمن 1387 هفته سوم مهر 1387 هفته چهارم شهریور 1387 هفته سوم شهریور 1387 هفته دوم شهریور 1387 هفته اوّل شهریور 1387 هفته چهارم مرداد 1387 هفته سوم مرداد 1387 هفته دوم مرداد 1387 هفته اوّل مرداد 1387 هفته چهارم تیر 1387 هفته سوم تیر 1387 هفته دوم تیر 1387 هفته دوم اسفند 1386 هفته سوم بهمن 1386 هفته چهارم دی 1386 هفته دوم دی 1386 آمار وبلاگ
» تعداد بازدیدها:
» مرورگر: امکانات اضافي
|
© All Rights Reserved by mrz-it.Blogfa.com ©