خوش آمدید به رمان ۹۸ | بهترین انجمن رمان نویسی

رمان ۹۸ با هدف ترویج فرهنگ کتاب خوانی و تقویت قلم عزیزان ایجاد شده است.
هدف ما همواره ایجاد محیطی گرم و صمیمی و دوستانه بوده
برای مطالعه کامل رمان‌ها و استفاده از امکانات انجمن
به ما بپیوندید و یا وارد انجمن شوید.
  • شروع کننده موضوع unknown
  • تاریخ شروع

unknown

همراه رمان ۹۸
کاربر رمان ۹۸
  
عضویت
31/7/18
ارسال ها
82
امتیاز واکنش
1,939
امتیاز
203
سن
25
زمان حضور
1 روز 11 ساعت 58 دقیقه
نویسنده این موضوع
در سال ۱۹۶۷ مارتین ریچاردز زبان BCPL را برای نوشتن نرم‌افزارهای سیستم‌عامل و کامپایلر در دانشگاه کمبریج ابداع کرد. سپس در سال ۱۹۷۰ کن تامسون بل زبان B را بر مبنای ویژگی‌های زبان BCPL نوشت و از آن برای ایجاد اولین نسخه‌های سیستم‌عامل یونیکس در آزمایشگاه‌های بل استفاده کرد. زبان C در سال ۱۹۷۲ توسط دنیس ریچی از روی زبان B و BCPL در آزمایشگاه بل ساخته شد و ویژگی‌های جدیدی همچون نظارت بر نوع داده‌ها نیز به آن اضافه شد. ریچی از این زبان برای ایجاد سیستم‌عامل یونیکس استفاده کرد اما بعدها اکثر سیستم‌عامل‌های دیگر نیز با همین زبان نوشته شدند. این زبان با سرعت بسیاری گسترش یافت و چاپ کتاب "The C Programming Language" در سال ۱۹۷۸ توسط برایان کرنیگان و ریچی باعث رشد روزافزون این زبان در جهان شد.

متأسفانه استفاده گسترده این زبان در انواع کامپیوترها و سخت‌افزارهای مختلف باعث شد که نسخه‌های مختلفی از این زبان بوجود آید که با یکدیگر ناسازگار بودند. در سال ۱۹۸۳ مؤسسه استانداردهای ملی آمریکا (ANSI) کمیته‌ای موسوم به X3J11 را را مأمور کرد تا یک تعریف فاقد ابهام و مستقل از ماشین را از این زبان تدوین نماید. در سال ۱۹۸۹ این استاندارد تحت عنوان ANSI C به تصویب رسید و سپس در سال ۱۹۹۰، سازمان بین‌المللی استانداردسازی (ISO) نیز این استاندارد را پذیرفت و مستندات مشترک آن‌ها تحت عنوان ANSI/ISO C منتشر گردید.

در سال‌های بعد و با ظهور روش‌های برنامه‌نویسی شئ‌گرا نسخه جدیدی از زبان C بنام C++ توسط بی‌یارنه استراس‌تروپ در اوایل ۱۹۸۰ در آزمایشگاه‌های بل توسعه یافت. در C++ علاوه بر امکانات جدید، خاصیت شئ‌گرایی نیز به C اضافه شده‌است.

با گسترش شبکه و اینترنت، نیاز به زبانی احساس شد که برنامه‌های آن بتوانند بر روی هر ماشین و هر سیستم‌عامل دلخواهی اجرا گردد. شرکت سان مایکروسیستمز در سال ۱۹۹۵ میلادی زبان جاوا را برمبنای C و C++ ایجاد کرد که هم اکنون از آن در سطح وسیعی استفاده می‌شود و برنامه‌های نوشته شده به آن بر روی هر کامپیوتری که از جاوا پشتیبانی کند (تقریباً تمام سیستم‌های شناخته شده) قابل اجرا می‌باشد.


سی

 
  • تشکر
Reactions: Afshin Javan

unknown

همراه رمان ۹۸
کاربر رمان ۹۸
  
عضویت
31/7/18
ارسال ها
82
امتیاز واکنش
1,939
امتیاز
203
سن
25
زمان حضور
1 روز 11 ساعت 58 دقیقه
نویسنده این موضوع
برنامه‌نویسی ساختار یافته

در دهه ۱۹۶۰ میلادی توسعه نرم‌افزار دچار مشکلات عدیده‌ای شد. در آن زمان سبک خاصی برای برنامه‌نویسی وجود نداشت و برنامه‌ها بدون هیچگونه ساختار خاصی نوشته می‌شدند. وجود دستور پرش (goto) نیز مشکلات بسیاری را برای فهم و درک برنامه توسط افراد دیگر ایجاد می‌کرد، چرا که جریان اجرای برنامه مرتباً دچار تغییر جهت شده و دنبال کردن آن دشوار می‌گردید؛ لذا نوشتن برنامه‌ها عملی بسیار زمان بر و پرهزینه شده بود و معمولاً اشکال زدایی، اعمال تغییرات و گسترش برنامه‌ها بسیار مشکل بود. فعالیت‌های پژوهشی در این دهه باعث بوجود آمدن سبک جدیدی از برنامه‌نویسی بنام برنامه‌نویسی ساخت‌یافته گردید؛ روش منظمی که باعث ایجاد برنامه‌هایی کاملاً واضح و خوانا گردید که اشکال‌زدایی و خطایابی آن‌ها نیز بسیار ساده‌تر بود.

اصلی‌ترین نکته در این روش عدم استفاده از دستور پرش (goto) است. تحقیقات بوهم و ژاکوپینی نشان داد که می‌توان هر برنامه‌ای را بدون دستور پرش و فقط با استفاده از ۳ ساختار کنترلی ترتیب، انتخاب و تکرار نوشت.

ساختار ترتیب، همان اجرای دستورات به صورت متوالی (یکی پس از دیگری) است که کلیه زبان‌های برنامه‌نویسی در حالت عادی بهمان صورت عمل می‌کنند.

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

ساختار تکرار نیز به برنامه نویسان اجازه می‌دهد مجموعه خاصی از دستورات را تا زمانی‌که شرط خاصی برقرار باشد، تکرار نماید.

هر برنامه ساخت‌یافته از تعدادی بلوک تشکیل می‌شود که این بلوک‌ها به ترتیب اجرا می‌شوند تا برنامه خاتمه یابد (ساختار ترتیب). هر بلوک می‌تواند یک دستور ساده مانند خواندن، نوشتن یا تخصیص مقدار به یک متغیر باشد یا اینکه شامل دستورهایی باشد که یکی از ۳ ساختار فوق را پیاده‌سازی کنند. نکته مهم اینجاست که درمورد دستورات داخل هر بلوک نیز همین قوانین برقرار است و این دستورات می‌توانند از تعدادی بلوک به شرح فوق ایجاد شوند و تشکیل ساختارهایی مانند حلقه‌های تودرتو را دهند.

نکته مهم اینجاست که طبق قوانین فوق یک حلقه تکرار یا بطور کامل داخل حلقه تکرار دیگر است یا بطور کامل خارج آن قرار می‌گیرد و هیچگاه حلقه‌های روی هم افتاده نخواهیم داشت.

از جمله اولین تلاشها در زمینه ساخت زبان‌های برنامه‌نویسی ساخت‌یافته، زبان پاسکال بود که توسط پروفسور نیکلاوس ویرت در سال ۱۹۷۱ برای آموزش برنامه‌نویسی ساخت یافته در محیط‌های آموزشی ساخته شد و بسرعت در دانشگاه‌ها رواج یافت اما به دلیل نداشتن بسیاری از ویژگی‌های مورد نیاز مراکز صنعتی و تجاری در بیرون دانشگاه‌ها موفقیتی نیافت.

کمی‌بعد زبان C ارائه گردید که علاوه بر دارا بودن ویژگی‌های برنامه‌نویسی ساخت یافته به دلیل سرعت و کارایی بالا مقبولیتی همه گیر یافت و هم اکنون سالهاست که به‌عنوان بزرگ‌ترین زبان برنامه‌نویسی دنیا شناخته شده‌است.


سی

 
  • تشکر
Reactions: Afshin Javan

unknown

همراه رمان ۹۸
کاربر رمان ۹۸
  
عضویت
31/7/18
ارسال ها
82
امتیاز واکنش
1,939
امتیاز
203
سن
25
زمان حضور
1 روز 11 ساعت 58 دقیقه
نویسنده این موضوع
مراحل اجرای یک برنامه C

برنامه‌های نوشته شده به زبان C در فایلی متنی با پسوند c. ذخیره می‌شوند. به این فایل، کد منبع (source code) گفته می‌شود. فایل کد منبع برای اجرا باید به زبان ماشین ترجمه شود که به اینکار ترجمه (compile) و به برنامه‌ای که عمل ترجمه به زبان ماشین یا زبان دیگر را انجام می‌دهد مترجم (compiler) می‌گویند. کامپایلرهای متعددی برای زبان C و برای سیستم‌عامل‌های مختلف نوشته شده است، مانند Clang. معمولاً برنامه نویسان C در برنامه‌های خود از یک سری از کدهای از پیش آماده شده برای انجام عملیات متداول (مانند محاسبه جذر یا سینوس) استفاده می‌کنند که برنامه آن‌ها قبلاً نوشته و ترجمه شده‌است. این برنامه‌ها یا در قالب کتابخانه‌های استاندارد توسط شرکت‌های ارائه‌کننده نرم‌افزار یا توسط دیگر برنامه‌نویسان نوشته و در اختیار شخص یا بر روی اینترنت قرار داده شده‌است که در چنین وضعیتی باید کد منبع با کدهای مربوط به برنامه‌های کمکی پیوند زده‌شود. برای اینکار نیاز به یک پیوند دهنده (Linker) داریم و نتیجه این عمل یک فایل اجرایی خواهد بود. مرحله بعدی اجرای برنامه و دادن ورودی‌های لازم به آن و اخذ خروجی‌ها می‌باشد. در شکل زیر این مراحل نشان داده شده‌اند.

مسلماً انجام مراحل بالا برای اجرای هر برنامه زمان‌بر می‌باشد، به همین دلیل اکثر توسعه‌دهندگان کامپایلرها، محیط‌هایی را برای برنامه‌نویسی ارائه کرده‌اند که کلیه مراحل بالا را بطور اتوماتیک انجام می‌دهند.

به این محیط‌ها Integrated Development Environment (سرواژه:IDE) (محیط توسعه مجتمع) گفته می‌شود. این محیط‌ها دارای یک ویرایشگر متن می‌باشند که معمولاً دارای ویژگی‌هایی همچون استفاده از رنگ‌های مختلف برای نشان دادن اجزای مختلف برنامه مانند کلمات کلیدی و قابلیت تکمیل اتوماتیک قسمت‌های مختلف برنامه می‌باشد. پس از نوشتن برنامه و Run کردن آن، کلیه عملیات فوق بطور اتوماتیک انجام شده و برنامه اجرا می‌گردد. علاوه براین، این محیط‌ها معمولاً دارای امکانات اشکال‌زدایی برنامه (Debug) نیز می‌باشند که شامل مواردی همچون اجرای خط به خط برنامه یا دیدن محتویات متغیرها در زمان اجرا است.


سی

 
  • تشکر
Reactions: Afshin Javan

unknown

همراه رمان ۹۸
کاربر رمان ۹۸
  
عضویت
31/7/18
ارسال ها
82
امتیاز واکنش
1,939
امتیاز
203
سن
25
زمان حضور
1 روز 11 ساعت 58 دقیقه
نویسنده این موضوع
خطاهای برنامه‌نویسی

بنظر می‌رسد خطاها جزء جداناپذیر برنامه‌ها هستند. بندرت می‌توان برنامه‌ای نوشت که در همان بار اول بدرستی و بدون هیچگونه خطایی اجرا شود. اما خطاها از لحاظ تأثیری که بر اجرای برنامه‌ها می‌گذارند، متفاوتند. گروهی ممکن است باعث شوند که از همان ابتدا برنامه اصلاً کامپایل نشود و گروه دیگر ممکن است پس از گذشت مدت‌ها و در اثر دادن یک ورودی خاص به برنامه، باعث یک خروجی نامناسب یا یک رفتار دور از انتظار (مانند قفل شدن برنامه) شوند. بطور کلی خطاها به دو دسته تقسیم می‌شوند:

  1. خطاهای نحوی (خطاهای زمان کامپایل): این خطاها در اثر رعایت نکردن قواعد دستورات زبان C یا تایپ اشتباه یک دستور بوجود می‌آیند و در همان ابتدا توسط کامپایلر به برنامه‌نویس اعلام می‌گردد. برنامه‌نویس باید این خطا را رفع کرده و سپس برنامه را دوباره کامپایل نماید؛ لذا معمولاً این قبیل خطاها خطر کمتری را دربردارند.
  2. خطاهای منطقی (خطاهای زمان اجرا): این دسته خطاها در اثر اشتباه برنامه‌نویس در طراحی الگوریتم درست برای برنامه یا گاهی در اثر درنظر نگرفتن بعضی شرایط خاص در برنامه ایجاد می‌شوند. متأسفانه این دسته خطاها در زمان کامپایل اعلام نمی‌شوند و در زمان اجرای برنامه خود را نشان می‌دهند؛ بنابراین، این خود برنامه‌نویس است که پس از نوشتن برنامه باید آن را تست کرده و خطاهای منطقی آن را پیدا کرده و رفع نماید. متأسفانه ممکن است یک برنامه‌نویس خطای منطقی برنامه خود را تشخیص ندهد و این خطا پس از مدت‌ها و تحت یک شرایط خاص توسط کاربر برنامه کشف شود. به همین دلیل این دسته از خطاها خطرناک‌تر هستند. خود این خطاها به دو دسته تقسیم می‌گردند:
    1. خطاهای مهلک: در این دسته خطاها کامپیوتر بلافاصله اجرای برنامه را متوقف کرده و خطا را به کاربر گزارش می‌کند. مثال معروف این خطاها خطای تقسیم بر صفر می‌باشد.
    2. خطاهای غیرمهلک: در این دسته خطا، اجرای برنامه ادامه می‌یابد ولی برنامه نتایج اشتباه تولید می‌نماید. به‌عنوان مثال ممکن است دراثر وجود یک خطای منطقی در یک برنامه حقوق و دستمزد، حقوق کارمندان اشتباه محاسبه شود و تا مدت‌ها نیز کسی متوجه این خطا نشود!
با توجه به آنچه گفته شد، در می‌یابیم که رفع اشکال برنامه‌ها بخصوص خطاهای منطقی از مهم‌ترین و مشکلترین وظایف یک برنامه‌نویس بوده و گاهی حتی سخت‌تر از خود برنامه‌نویسی است! به همین دلیل است که بسیاری از شرکت‌ها (همانند مایکروسافت) ابتدا نسخهٔ اولیه نرم‌افزار خود را در اختیار کاربران قرار می‌دهند تا اشکالات آن گزارش شده و رفع گردد. بسیار مهم است که در ابتدا سعی کنید برنامه‌ای بنویسید که حداقل خطاها را داشته باشد، در گام دوم با آزمایش دقیق برنامه خود هرگونه خطای احتمالی را پیدا کنید و در گام سوم بتوانید دلیل بروز خطا را پیدا کرده و آن را رفع نمایید. هر سه عمل فوق کار سختی بوده و نیاز به تجربه و مهارت دارد.

آخرین نکته اینکه در اصطلاح برنامه‌نویسی به هرگونه خطا، bug و به رفع خطا debug گفته می‌شود.


سی

 
  • تشکر
Reactions: Afshin Javan

unknown

همراه رمان ۹۸
کاربر رمان ۹۸
  
عضویت
31/7/18
ارسال ها
82
امتیاز واکنش
1,939
امتیاز
203
سن
25
زمان حضور
1 روز 11 ساعت 58 دقیقه
نویسنده این موضوع
مدیریت حافظه

از مهم‌ترین توابع زبان‌های برنامه‌نویسی فراهم آوردن ابزاری جهت ادارهٔ حافظه و اشیا ذخیره شده در حافظه می‌باشد. سی، دو راه اصلی برای تخصیص حافظه به اشیا را فراهم می‌کند.

  • تخصیص حافظه به صورت اتوماتیک: اشیا موقتی می‌توانند بر روی پشته ذخیره شوند، این فضای اختصاص داده شده به اشیا به صورت اتوماتیک پس از خارج شدن از بلاکی که اشیا در آن‌ها تعریف شده‌اند، آزاد و دوباره قابل استفاده خواهد بود.
  • تخصیص حافظه به صورت دینامیک: اندازه‌های اختیاری از بلاک‌های حافظه می‌توانند توسط توابع کتابخانه‌ای همانند تابع malloc از ناحیه‌ای از رم موسوم به هیپ در هنگام اجرای برنامه درخواست بشود. این بلاک‌های حافظه تا زمانی‌که متعاقباً توسط تابع free به سیستم بازگردانده نشوند در حافظه باقی می‌مانند. برای تخصیص حافظه به صورت پویا (دینامیک) باید آدرس بلوک حافظه‌ای که توسط تابع malloc گرفته می‌شود را در یک اشاره گر ذخیره کنیم.


سی

 
  • تشکر
Reactions: Afshin Javan

unknown

همراه رمان ۹۸
کاربر رمان ۹۸
  
عضویت
31/7/18
ارسال ها
82
امتیاز واکنش
1,939
امتیاز
203
سن
25
زمان حضور
1 روز 11 ساعت 58 دقیقه
نویسنده این موضوع
امتیازهای برنامه‌نویسی ساختار یافته عبارتند از

. نوشتن برنامه‌های ساخت یافته آسان است، زیرا برنامه‌های پیچیده به بخش‌های کوچک‌تری تقسیم می‌شوند و هر بخش توسط تابعی نوشته می‌شود. دستورالعمل‌ها و داده‌های موجود در تابع، مستقل از سایر بخش‌های برنامه است.

۲. همکاری بین افراد را فراهم می‌کند. به‌طوری‌که افراد می‌توانند بخش‌های مختلفی از برنامه را بنویسند.

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

۴. برنامه‌نویسی ساخت یافته موجب صرفه جویی در وقت می‌شود.


سی

 
shape1
shape2
shape3
shape4
shape7
shape8
بالا