loading...
███▓▒░░◄ Hack iran►░░▒▓███
مرتضی(Germany) بازدید : 106 چهارشنبه 20 اردیبهشت 1391 نظرات (0)

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

بدین منظور:

از منوی Start وارد Run شوید.
عبارت NETSH DIAG GUI را وارد کرده و Enter بزنید.
حال چند ثانیه ای صبر کنید و در پنجره باز شده بر روی Scan your system کلیک کنید.
بررسی اطلاعات (ترفندستان) اندک زمانی طول میکشد و سپس تمامی اطلاعات برای شما نمایش داده خواهد شد.
شما می توانید با استفاده از دکمه ...Save to file در قالب یک متن html این اطلاعات را ذخیره نمایید.
برای مشاهده فایل ذخیره شده بر روی Show Saved File کلیک کنید یا مستقیمأ به پوشه WINDOWSpchealthhelpctrSystemNetDiag مراجعه کنید.

مرتضی(Germany) بازدید : 104 چهارشنبه 20 اردیبهشت 1391 نظرات (0)

113 دستور قابل اجرا در Run
از منوی Start میتوانید گزینه Run را انتخاب کنید و این دستور ها را در آن وارد کنید:
(سرچ کردم دیدم پست کاملی در این باره نبود گفتم اینو بزارم دوستان استفاده کنن)


Too Access---->Accessibility Controls



---->Run Command >----access.cpl

---------------------------------------
Add Hardware Wizard


hdwwiz.cpl

---------------------------------------
Add/Remove Programs


appwiz.cpl

----------------------------------------
Administrative Tools


control admintools

----------------------------------------
Automatic Updates


wuaucpl.cpl

----------------------------------------
Bluetooth Transfer Wizard


fsquirt

----------------------------------------
Calculator


calc

----------------------------------------
Certificate Manager


certmgr.msc

----------------------------------------
Character Map


charmap

----------------------------------------
Check Disk Utility


chkdsk

----------------------------------------
Clipboard Viewer


clipbrd

----------------------------------------
Command Prompt


cmd

----------------------------------------
Component Services


dcomcnfg

----------------------------------------
Computer Management


compmgmt.msc

----------------------------------------
Date and Time Properties


timedate.cpl

----------------------------------------
DDE Shares


ddeshare

----------------------------------------
Device Manager


devmgmt.msc

----------------------------------------
Direct X Control Panel (If Installed)*


directx.cpl

----------------------------------------
Direct X Troubleshooter


dxdiag

----------------------------------------
Disk Cleanup Utility


cleanmgr

----------------------------------------
Disk Defragment


dfrg.msc

----------------------------------------
Disk Management


diskmgmt.msc

----------------------------------------
Disk Partition Manager


diskpart

----------------------------------------
Display Properties


control desktop

----------------------------------------
Display Properties


desk.cpl

----------------------------------------
Display Properties (w/Appearance Tab Preselected)


control color

----------------------------------------
Dr. Watson System Troubleshooting Utility


drwtsn۳۲

----------------------------------------
Driver Verifier Utility


verifier

----------------------------------------
Event Viewer


eventvwr.msc

----------------------------------------
File Signature Verification Tool


sigverif

----------------------------------------
Findfast


findfast.cpl

----------------------------------------
Folders Properties


control folders

----------------------------------------
Fonts


control fonts

----------------------------------------
Fonts Folder


fonts

----------------------------------------
Free Cell Card Game


freecell

----------------------------------------
Game Controllers


joy.cpl

----------------------------------------
Group Policy Editor (XP Prof)


gpedit.msc

----------------------------------------
Hearts Card Game


mss

----------------------------------------
Iexpress Wizard


iexpress

----------------------------------------
Indexing Service


ciadv.msc

----------------------------------------
Internet Properties


inetcpl.cpl

----------------------------------------
IP Configuration (Display Connection Configuration)


ipconfig /all

----------------------------------------
IP Configuration (Display DNS Cache Contents)


ipconfig /displaydns

----------------------------------------
IP Configuration (Delete DNS Cache Contents)


ipconfig /flushdns

----------------------------------------
IP Configuration (Release All Connections)


ipconfig /release

----------------------------------------
IP Configuration (Renew All Connections)


ipconfig /renew

----------------------------------------
IP Configuration (Refreshes DHCP & Re-Registers DNS)


ipconfig /registerdns

----------------------------------------
IP Configuration (Display DHCP Class ID)


ipconfig /showclassid

----------------------------------------
IP Configuration (Modifies DHCP Class ID)


ipconfig /setclassid

----------------------------------------
Java Control Panel (If Installed)


jpicpl۳۲.cpl

----------------------------------------
Java Control Panel (If Installed)


javaws

----------------------------------------
Keyboard Properties


control keyboard

----------------------------------------
Local Security Settings


secpol.msc

----------------------------------------
Local Users and Groups


lusrmgr.msc

----------------------------------------
Logs You Out Of Windows


logoff

----------------------------------------
Microsoft Chat


winchat

----------------------------------------
Minesweeper Game


winmine

----------------------------------------
Mouse Properties


control mouse

----------------------------------------
Mouse Properties


main.cpl

----------------------------------------
Network Connections


control netconnections

----------------------------------------
Network Connections


ncpa.cpl

----------------------------------------
Network Setup Wizard


netsetup.cpl

----------------------------------------
Notepad


notepad

----------------------------------------
Nview Desktop Manager (If Installed)


nvtuicpl.cpl

----------------------------------------
Object Packager


packager

----------------------------------------
ODBC Data Source Administrator


odbccp۳۲.cpl

----------------------------------------
On Screen Keyboard


osk

----------------------------------------
Opens AC۳ ****** (If Installed)


ac۳filter.cpl

----------------------------------------
Password Properties


password.cpl

----------------------------------------
Performance Monitor


perfmon.msc

----------------------------------------
Performance Monitor


perfmon

----------------------------------------
Phone and Modem Options


telephon.cpl

----------------------------------------
Power Configuration


powercfg.cpl

----------------------------------------
Printers and Faxes


control printers

----------------------------------------
Printers Folder


printers

----------------------------------------
Private Character Editor


eudcedit

----------------------------------------
Quicktime (If Installed)


QuickTime.cpl

----------------------------------------
Regional Settings


intl.cpl

----------------------------------------
Registry Editor


regedit

----------------------------------------
Registry Editor


regedit۳۲

----------------------------------------
Remote Desktop


mstsc

----------------------------------------
Removable Storage


ntmsmgr.msc

----------------------------------------
Removable Storage Operator Requests


ntmsoprq.msc

----------------------------------------
Resultant Set of Policy (XP Prof)


rsop.msc

----------------------------------------
Scanners and Cameras


sticpl.cpl

----------------------------------------
Scheduled Tasks


control schedtasks

----------------------------------------
Security Center


wscui.cpl

----------------------------------------
Services


services.msc

----------------------------------------
Shared Folders


fsmgmt.msc

----------------------------------------
Shuts Down Windows


shutdown

----------------------------------------
Sounds and Audio


mmsys.cpl

----------------------------------------
Spider Solitare Card Game


spider

----------------------------------------
SQL Client Configuration


cliconfg

----------------------------------------
System Configuration Editor


sysedit

----------------------------------------
System Configuration Utility


msconfig

----------------------------------------
System File Checker Utility (Scan Immediately)


sfc /scannow

----------------------------------------
System File Checker Utility (Scan Once At Next Boot)


sfc /scanonce

----------------------------------------
System File Checker Utility (Scan On Every Boot)


sfc /scanboot

----------------------------------------
System File Checker Utility (Return to Default Setting)


sfc /revert

----------------------------------------
System File Checker Utility (Purge File Cache)


sfc /purgecache

----------------------------------------
System File Checker Utility (Set Cache Size to size x)


sfc /cachesize=x

----------------------------------------
System Properties


sysdm.cpl

----------------------------------------
Task Manager


taskmgr

----------------------------------------
Telnet Client


telnet

----------------------------------------
User Account Management


nusrmgr.cpl

----------------------------------------
Utility Manager


utilman

----------------------------------------
Windows Firewall


firewall.cpl

----------------------------------------
Windows Magnifier


magnify

----------------------------------------
Windows Management Infrastructure


wmimgmt.msc

----------------------------------------
Windows System Security Tool


syskey

----------------------------------------
Windows Update Launches


wupdmgr

----------------------------------------
Windows XP Tour Wizard


tourstart

----------------------------------------
Wordpad

مرتضی(Germany) بازدید : 133 چهارشنبه 20 اردیبهشت 1391 نظرات (0)

این روزها بسیاری از کاربران در تب و تاب تهیه و نصب ویندوز 7 هستند. تعریف*ها و نقدهای مختلفی که از ویندوز 7 شده باعث شده است که بسیاری از کاربران که تجربه خوبی از ویندوز ویستا نداشته*اند به این ویندوز جدید تمایل پیدا کنند. علاوه بر آن آمار کاربرانی که پس از استفاده از این ویندوز از آن اعلام رضایت کردند بالا بوده و این موضوع نوید روزهای خوشی را برای مایکروسافت به ارمغان آورده است. اما در این میان عده*ای از کاربران هستند که عقیده خاصی را دنبال می*کنند. آن*ها معتقدند که ویندوز 7، همان ویندوز ویستا است که توسط مایکروسافت کمی کاربر پسند*تر شده است. در نتیجه همچنان ویندوز XP را ترجیح می*دهند. اما شاید واقعیت چیز دیگری باشد. تفاوت*های بین ویندوز 7 و ویستا قطعاً چیزی فراتر از یک تغییرات کوچک است. در این ترفند قصد داریم به معرفی 18 قابلیت جالبی بپردازیم که در ویندوز ویستا و سایر ویندوزها از هیچ یک از آن*ها خبری نبود. قابلیت*هایی که هر یک به خودی خود یک تغییر جدی محسوب می*شود.

1. لرزاندن پنجره*ها

فرض کنید چندین پنجره مختلف را به طور همزمان در محیط ویندوز باز کرده*اید. در نسخه*های پیشین ویندوز برای اینکه این پنجره*ها را ببندید، ناچار بودید تک تک پنجره*ها Close یا Minimize کنید. اما با استفاده از این قابلیت جدید در ویندوز 7 که Aero Shake نام دارد، کافی است تا پنجره*ای که قصد دارید آن را باز نگه دارید را گرفته و با استفاده از ماوس کمی آن را بلرزانید. خواهید دید که سایر پنجره*ها Minimize خواهند شد. با انجام مجدد این کار پنجره*های کوچک شده مجدداً بازیابی خواهند شد. به این قابلیت در این ترفند به تفصیل پرداخته شده است.

2. لیست پرش

یکی از قابلیت*های فوق*العاده*ای که در ویندوز 7 اضافه شده است و باعث صرفه جویی زیادی در وقت می*شود «لیست پرش» یا Jumplist است. شما توسط برنامه*های نصب شده بر روی ویندوز فایل*های مختلفی را فراخوانی می*کنید. به عنوان مثال توسط نرم افزارهای Player، فایل*های موزیک را اجرا می*کنید. یا توسط نرم افزار Notepad فایل*های متنی را باز می*کنید. اکنون با استفاده از «لیست پرش» میتوانید به آخرین فایلهای باز شده توسط نرم افزارهای مختلف دسترسی داشته باشید بدون اینکه نیاز به اجرای اولیه برنامه مربوطه باشد. برای دسترسی به «لیست پرش» کافی است بر روی آیکن برنامه در Taskbar راست کلیک کنید تا آخرین فایلهای فراخوانده شده توسط این نرم افزار برایتان لیست شود. همچنین میتوانید در منوی Start، با کلیک بر روی فلش موجود در کنار هر برنامه به «لیست پرش» مربوط به آن برنامه دسترسی پیدا کنید.

3. توسعه پیش نمایش پنجره*ها

در ویندوز ویستا، با عبور ماوس از روی پنجره*های Minimize شده در Taskbar، پیش نمایشی از پنجره*ها در یک سایز کوچک نمایش داده می*شد. اکنون در ویندوز 7 این قابلیت توسعه داده شده است. به طوری که با قرار دادن ماوس بر روی پیش نمایش (ترفندستان) امکان بستن آن نیز وجود دارد. همچنین پنجره*های چندگانه دارای چندین پیش نمایش هستند و علاوه بر آن با استفاده از کلید ترکیبی Win+T امکان گردش میان پیش نمایش*ها وجود دارد.

4. مرتب*سازی پنجره*ها در صفحه به روشی جدید

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

5. ویندوز XP در ویندوز 7

یکی از مشکلاتی که کاربران در ویندوز ویستا زیاد با آن سر و کار داشتند عدم اجرای برخی برنامه*های سازگار با ویندوز XP در محیط ویندوز ویستا بود. مایکروسافت در ویندوز 7 چاره*ای برای این مشکل پیدا کرده است. با استفاده از XP Mode شما می*توانید به طور مجازی ویندوز XP را در دل ویندوز 7 داشته باشید و با استفاده از آن هر برنامه سازگار با XP را همانند گذشته اجرا کنید. برای استفاده از XP Mode شما ابتدا بایستی نرم افزاری به نام Windows Virtual PC را دانلود و نصب کنید. سپس XP Mode را در درون آن اجرا نمایید. برای دانلود این دو می*توانید از http://www.microsoft.com/windows/vir.../download.aspx اقدام نمایید.

6. یک راه ساده و سریع برای تنظیم صفحات نمایش چندگانه

آیا تاکنون پیش آمده که کامپیوتر خود را به بیش از یک مانیتور یا پروژکتور متصل نمایید؟ در ویندوز 7 تنظیم این صفحان نمایش چندگانه در یک ثانیه امکان پذیر است! کافی است کلیدهای ترکیبی Win+P را فشار دهید و تنظیمات صفحه نمایش را اعمال نمایید.

7. رابط کاربری بهتر در خصوص دستگاه*های جانبی متصل به کامپیوتر

در ویندوز 7، پس از کلیک (ترفندستان) بر روی منوی Start بخش جدیدی به نام Devices and Printers به چشم می*خورد. در این بخش دستگاه*های متصل به کامپیوتر اعم از پرینتر و حافظه*های قابل حمل با تصویر مرتبط به هر کدام وجود دارد. با راست کلیک بر روی هر یک از دستگاه*ها امکانات منحصر به فردی نظیر آپدیت و تنظیمات قابل دسترسی است.

8. ویرایش محدوده اطلاع رسانی

در ویندوز XP و ویندوز ویستا در سمت راست محیط Taskbar محدوده*ای به نام اطلاع رسانی یا Notification Area وجود داشت. این محدوده در ویندوز 7 هم وجود دارد اما با انعطافی بسیار بیشتر که می*توان این محدوده را ویرایش و یا حتی حذف کرد. بر روی فضای خالی از این محدوده راست کلیک کنید و Customize notification icons را انتخاب نمایید. در این پنجره می*توانید نمایش یا عدم نمایش آیکن*های مربوط به هر نرم افزار را تعیین کنید. علاوه بر آن با کلیک بر روی Turn system icons on or off می*توانید نمایش یا عدم نمایش آیکن*های مربوط به خود ویندوز نظیر ساعت ویندوز را تنظیم نمایید.

9. ضبط کننده قدم به قدم مشکلات

یکی دیگر از قابلیت*های کاربردی جدید در ویندوز 7 «ضبط کننده قدم به قدم مشکلات» یا Problem Steps Recorder است. با استفاده از PSR شما می*توانید مشکلات موجود در ویندوز خود را به صورت قدم به قدم با استفاده از تصویر ذخیره نمایید و آن را جهت دریافت کمک در اختیار دیگران قرار دهید. این قابلیت در این ترفند به تفصیل بررسی شده است.

10. ذره*بین جدید

Magnifier یا ذره*بین در ویندوز XP و ویستا نیز وجود داشت، اما در ویندوز 7 با یک ذره*بین حرفه*ای طرف هستیم. برای دسترسی به ذره*بین در منوی Start عبارت Magnifier را وارد نموده و Enter بزنید. در Magnifier جدید شما می*توانید درصد بزرگ*نمایی را تعیین کنید. علاوه بر آن 3 حالت بزرگ*نمایی خواهید داشت. Full Screen که حالت تمام صفحه است و کل صفحه بزرگ خواهد شد که با حرکت ماوس کل صفحه درگیر خواهد بود. نوع دیگر حالت Lens است که یک صفحه کوچک با ماوس همراه خواهد شد که تمام بزرگ*نمایی در این صفحه رخ می*دهد و عملکردی دقیقاً مشابه یک ذره*بین خواهد داشت. آخرین حالت Docked است که یک صفحه ذره*بینی در بالا یا هر قسمت دیگری از صفحه به صورت ثابت قرار خواهد داد و تصاویر بزرگ شده در آن پدیدار خواهند شد. از Magnifier جهت کاربردهای آموزشی استفاده می*گردد.

11. یک راه جدید برای مشاهده فایل*های صوتی و تصویری

Windows Media Player در ویندوز 7 بسیار توسعه پیدا کرده است. عمده*ترین پیشرفت آن باز شدن یک پخش کننده کوچک به هنگام پخش فایل*های صوتی و تصویری است. پیشنهاد می*شود پیش از این که Player جدیدی را برای استفاده بر روی ویندوز نصب کنید، این ظاهر کاربر پسند Windows Media Player در ویندوز 7 را امتحان کنید.

12. عملیات به اشتراک گذاری در شبکه*های خانگی

در ویندوز ویستا و سایر نسخه*های ویندوز، ساخت شبکه*های خانگی و به اشتراک*گذاری منابع کاری دشوار بود. اما با استفاده از Wizard جدید موجود در ویندوز 7 به نام Homegroup شما می*توانید فولدرهایی که قصد به اشتراک*گذاری آن*ها را دارید را انتخاب کنید. سپس رمز عبوری که دریافت می*کنید را در کامپیوتر دیگر وارد نمایید تا به همین سادگی عملیات به اشتراک*گذاری صورت بگیرد. اما نکته*ای که وجود دارد این است که تنها کامپیوترهای دارای ویندوز 7 می*توانند چنین کاری را صورت دهند. جهت دسترسی به این قابلیت عبارت Homegroup را در منوی Start وارد کنید و Enter بزنید.

13. اجرای مستقیم فایل صوتی و تصویری از یک کامپیوتر دیگر

با استفاده از قابلیت جدیدی (ترفندستان) که در ویندوز 7 وجود دارد، در کامپیوترهای تحت شبکه Homegroup، نرم افزار Windows Media Player این امکان را به شما می*دهد که فایل صوتی و تصویری مستقیماً از یک کامپیوتر اجرا شده و توسط اسپیکر کامپیوتر دیگر متصل به شبکه پخش شود! به عنوان مثال اگر یک لپتاپ و یک PC را شبکه کرده*اید، از این پس می*توانید فایل*های موزیک موجود در لپتاپ را به وسیله اسپیکرهای کامپیوتر رومیزی با صدای بلند گوش کنید!

14. یک مرکز امنیتی جدید

Action Center نام محیط امنیتی جدیدی است که در ویندوز 7 گنجانده شده است. در محیط Action Center اطلاع رسانی*هایی نظیر آپدیت ویندوز، آپدیت آنتی ویروس، یادآوری پشتیبان*گیری و نظایر آن درج می*گردد. برای دسترسی به آن در منوی Start عبارت Action Center را وارد نموده و Enter بزنید.

15. سنجاق کردن برنامه*ها به Taskbar

در ویندوز 7، میتوانید جهت دسترسی سریع*تر به برنامه*ها آن*ها را در Taskbar سنجاق کنید. به طوریکه همواره در محیط Taskbar حضور داشته باشند و حتی با بستن برنامه نیز از Taskbar خارج نشوند. برای این کار کافی است بر روی آیکن برنامه در Taskbar راست کلیک کنید و Pin this program to taskbar را انتخاب کنید.

16. توسعه استفاده از قابلیت*های لمسی

این قابلیت به طور خاص مختص به صفحه نمایش*های لمسی است. در صورتی که از یک صفحه نمایش لمسی استفاده می*کنید با نصب ویندوز 7 یک تجربه شیرین از کار با دست و ویندوز 7 خواهید داشت! Taskbar بزرگ*تر و آیکن*های مربع شکل باعث راحتی کار با دست خواهند شد. علاوه بر آن اگر از Macbookها که از قابلیت Multi Touch نیز پشتیبانی می*کنند استفاده کنید همه چیز فوق العاده*تر خواهد شد! چرا که می*توانید پنجره*ها را با دو انگشت بگیرید و اندازه آن*ها را کوچک و بزرگ کنید. درست همانند آی*فون! (ترفندستان)

17. رایت فایل*های ISO

همان طور که احتمالاً می*دانید فایل*های Image مربوط به DVDها که در اصل فایل*های فشرده آماده رایت بر روی DVD*ها هستند با فرمت ISO وجود دارند. نرم افزارهایی نظیر Nero کار رایت آن*ها را بر روی DVD صورت می*دهند. اما از این پس با استفاده از ویندوز 7 نیازمند هیچ برنامه جانبی نخواهید بود. کافی است بر روی فایل ISO خود دوبار کلیک کنید تا پنجره*ای به نام Windows Disk Image Burner باز شود و از طریق آن فایل Image خود را بر روی DVD به سادگی رایت کنید.

18. سنجش رنگ صفحه نمایش

در ویندوز 7 قابلیتی به نام Display Color Calibration اضافه شده است که کار اصلی آن سنجش میزان درستی رنگ*های نمایش داده شده بر روی صفحه است. به عنوان مثال یک HDTV را به کامپیوتر خود وصل کرده*اید و قصد دارید تا به بیشترین کیفیت ممکن دست پیدا کنید. برای دسترسی به این قابلیت در منوی Start عبارت Display Color Calibration را وارد نموده و Enter بزنید.

مرتضی(Germany) بازدید : 91 شنبه 16 اردیبهشت 1391 نظرات (0)

 

گوگل یك نسخه جدید از كروم 18 را منتشر كرده است. در این نسخه سه رخنه با درجه امنیتی "بسیارمهم" و دو رخنه با درجه امنیتی "متوسط" را برطرف شده است.



گوگل یك نسخه جدید از كروم 18 را منتشر كرده است. در این نسخه سه رخنه با درجه امنیتی "بسیارمهم" و دو رخنه با درجه امنیتی "متوسط" را برطرف شده است.

شما می توانید با استفاده از به روز رسان بی سرو صدای تعبیه شده در نرم افزار، مرورگر كروم خود را به آخرین نسخه به روز رسانی نمایید یا می توانید آخرین نسخه مرورگر كروم را به


طور مستقیم از google.com/chromeدانلود نمایید.


پنج آسیب پذیری امنیتی اصلاح شده در گوگل كروم نسخه 18.0.1025.168 به شرح زیر است:


آسیب پذیری CVE-2011-3078: یك خطای استفاده پس از آزادسازی در مدیریت اعداد اعشاری.


آسیب پذیری CVE-2012-1521: یك خطای استفاده پس از آزدسازی در تجزیه گر xml.


آسیب پذیری CVE-2011-3079: یك مشكل در اعتبارسنجی IPC.


آسیب پذیری CVE-2011-3080: یك مشكل در شرایط رقابتی در sandbox IPC.


آسیب پذیری CVE-2011-3081: یك خطای استفاده پس از آزادسازی در مدیریت اعداد اعشاری.

منبع:
certcc

مرتضی(Germany) بازدید : 99 شنبه 16 اردیبهشت 1391 نظرات (0)

 

گزارشی در مورد قدرت سایبری ایران

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

iran cyber army

به گزارش بخش خبر پرتال از گرداب به نقل از ایران دیپلماتیک، "تام یلتن"، گزارشگر "ان پی آر" طی گزارشی می نویسد: متخصصین امنیتی سازمان های دولتی و خصوصی مدت مدیدی است که نگران شروع جنگ سایبری با چین و روسیه هستند. این دو کشور قادر به راه اندازی حملات مخرب علیه آن دسته از شبکه های کامپیوتری هستند که سرمایه های حیاتی مانند سیستم های برق رسانی و مالی را کنترل می کنند.


این گزارش اضافه می کند: هم اکنون آنها با تهدید دیگری روبرو شده اند و آن ایران است. Jeffrey Carr، متخصص جنگ سایبری و مشاور وزارت دفاع آمریکا ادعا کرد که ایران منابع و توانایی لازم به عنوان یک رقیب قدرتمند برای درگیری در یک جنگ سایبری را دارد.


وی می افزاید: تخصص ایران در حد توانایی های چین و روسیه نیست، ولیکن برخلاف این دو کشور، ایران در حال حاضر با آمریکا بر سر مسائل هسته ای خود درگیری داشته و احتمال بروز تنش و خصومت بین دو کشور بیشتر است.


تحریم های آمریکا علیه ایران به قدری شدید است که در واقع می توان از آن به عنوان یک جنگ اقتصادی نام برد. به همراه این تحریم ها، تهدیدهای رژیم صهیونیستی در مورد اقدام نظامی علیه تاسیسات هسته ای ایران، می تواند ایرانیان را وسوسه کند تا حمله سایبری علیه آمریکا را در نظر بگیرند.


این گزارش ادامه می دهد: نگرانی ها در این مورد زیاد است. "جیمز کلپر"، رئیس سازمان اطلاعات ملی در اوایل سال جاری طی گزارشی به کنگره مدعی شد که ایران در حال حاضر بیش از هر زمان دیگر خواهان حمله به آمریکا بوده و توانایی سایبری آنها به طرز چشمگیری در سال های اخیر افزایش یافته است.


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


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


ان پی آر همچنین می نویسد: ژنرال "James Cartwright"، قائم مقام اسبق رئیس ستاد ارتش می گوید: «ایران ممکن است توانایی سایبری خود را به منزله نیروی بازدارنده در قبال تهدیدات خارجی توسعه دهد. اما داشتن این توانایی لزوما برای مقاصد بازدارنده کابرد نداشته و ایران می تواند این اطلاعات را به راحتی در اختیار گروه هایی که تردید کمتری در استفاده از آن دارند، قرار دهد.


"John Brennan"، مشاور مبارزه با تروریسم کاخ سفید اظهار می کند: «برخی از کشورها در حال توسعه تهاجمی توانایی های اینترنتی خود بوده و کشورهایی نیز در تنش با آمریکا می هستند و ما از آن آگاه هستیم. ما با تمام توان خود از حمله کشورهایی که توانایی سایبری و اراده استفاده از آن را دارند، جلوگیری خواهیم کرد.

 

______بابک بوتر______ بازدید : 1747 جمعه 15 اردیبهشت 1391 نظرات (0)

 مرتب کردن سه عدد به صورت نزولی

کد PHP:

 

#include <iostream.h> 
#include <conio.h> 
int main
() 

 
int a,k,b,c

cout<<"Enter 3 numbers : "

cin>>a>>b>>c

if ( 
b>a


k=aa=bb=k


if ( 
c>a


k=aa=cc=k


if ( 
c>b


k=bb=cc=k


cout<<"max number is : "<<a<<endl

cout<<"mid number is : "<<b<<endl

cout<<"min number is : "<<c<<endl

getch
(); 
return 
0


______بابک بوتر______ بازدید : 112 جمعه 15 اردیبهشت 1391 نظرات (0)

مخفی‌سازی


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

عمل مخفی سازی باعث می‌شود که اشیاء بدون آنکه از چگونگی کارکرد یکدیگر اطلاع داشته باشند با هم کار کنند.

 

چندریختی


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

 

انتزاع / تجرید


به این معنا است که بخشی از یک موجودیّت یک مفهوم را که میان همهٔ وارثان مشترک است، پیش تعریف کنیم. این توانایی منجر به داشتن نگاه مشابه به موجودیّت های مشابه می‌گردد.

 

یک مثال کاربردی


در اطراف ما اشیاء زیادی وجود دارد و می‌توان تمام مفاهیم موجود در طبیعت را با اشیاء تقلیل داد. مثلاً یک ماشین باربری. این ماشین یک سری خصوصیات دارد: چهار چرخ، یک پدال ترمز، یک پدال گاز، یک فرمان و یک محل بزرگ برای قرار دادن اشياء در آن و.... این ماشین در صورتی که ما پدال گاز آن را فشار دهیم، حرکت می‌کند. در صورتی که فرمان آن را بچرخانیم تغییر مسیر می‌دهد. پس این شیء علاوه بر یک سری خصوصیات، یک سری رفتار مشخص هم به ما نشان می‌دهد. ولی فقط این یک ماشین نیست که این کار را انجام می‌دهد. تمامی ماشین‌ها این کارها را انجام می‌دهند. پس می‌توانیم این ماشین را 'تعریف' کنیم و بگوییم:

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

مفاهیم فوق در زبان‌های برنامه نویسی شیءگرا گنجانده شده‌اند. در این زبان‌ها، اشیاء زیادی از پیش وجود دارند که برنامه‌نویسان می‌توانند از آنها استفاده کنند.

 

ارتباط اشیاء


مجدداً به مثال ماشین باربری بر می‌گردیم و این بار، یک ماشین سواری را تعریف می‌کنیم. ماشین سواری شیئی است که چهار چرخ، یک ترمز، یک پدال گاز و یک صندوق عقب دارد. این تعریف به تعریف ماشین باربری بسیار شبیه است. به عبارت دیگر ما به یک تعریف جدید می‌رسیم: خودرو. خودرو وسیله‌ای است که چهار چرخ، یک ترمز، یک پدال گاز دارد. پس از این به بعد تعریف ماشین باربری و ماشین سواری خیلی ساده‌تر می‌شود.

ماشین باربری، خودرویی است که محلی برای قرار دادن بار داشته باشد و ماشین سواری خودروییاست که صندوق عقب داشته باشد.

* اگر کسی به درب کارخانه مراجعه کند و بگوید که 'خودرو' میخواهد، چیزی دریافت نمی‌کند. خودرو یک تعریف انتزاعی است، برای تعریف خودرو شیء وجود ندارد پس مشتری تنها می‌تواتند ماشین باربری یا ماشین سواری بخواهد.
* کارواش را در نظر می‌گیریم. این کارواش خودرو را تمیز می‌کند و دیگر به طور جزئی عنوان نمی‌کند که کدام نوع خودرو را تمیز می‌کند. به عبارت دیگر نوع خودرو برای کارواش مهم نیست.
* وقتی شخصی قصد اجاره خودرویی دارد، و میخواهد جنسی را حمل کند در هنگام نماس با متصدی کرایه ماشین می‌گوید: «اگر خودرو شمااز نوع باربری است، برای من ارسال کنید»، ولی اگر قصد جابجا شدن را دارد می‌گوید : «برای من یک ماشین سواری بفرستید.»

در زبان‌های برنامه نویسی شیءگرا نیز اشیاء مختلفی وجود دارند که تعریف آنها تکمیل کننده یکدیگر است، به عبارت دیگر اشيا از یکدیگر ارث بری می‌کنند. برخی از تعاریف کاملاً عام است و نمی‌توان از آنها نمونه شیئی ساخت و تنها تعریف هستند. به این تعاریف Interface گفته می‌شود.

 

کلاس


در مهندسی نرم‌افزار و مهندسی دانش کلاس نقشهٔ نوعی و مشترک برای گروهی از اشیاء است که ویژگی‌های مشترکی داشته، و رفتارهای مشترکی از خود نشان می‌دهند. در‌واقع، کلاس‌ها انوع جدیدی هستند که شخص برنامه‌نویس، خود، آن‌ها را برای حل مسئله‌های دنیای واقعی طراحی می‌کند، و حاوی تعریف‌های لازم برای دو عنصر اساسی زیر می‌باشند:

* داده‌ها، یا صفات
* عملیات‌، یا روش‌ها

اشیاء نمونه‌هایی هستند که به هنگام اجراء از روی نقشهٔ ارائه شده به‌وسیلهٔ کلاس ایجاد می‌شوند. می‌توان گفت همان‌طور که متغیر نمونه‌ای از انواع اولیه است، شیء نمونه‌ای از کلاس است.

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

مثال: رانندگی خودرو بدون اطلاع از خصوصیات طرز کار داخلی موتور و سیستم‌های اگزوز و جعبه‌دنده امکان‌پدیر است. در مهندسی نرم‌افزار ضرورت پنهان‌سازی اطلاعات امری بسیار مهم هست.

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

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

 

______بابک بوتر______ بازدید : 106 جمعه 15 اردیبهشت 1391 نظرات (1)

وراثت


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

______بابک بوتر______ بازدید : 177 جمعه 15 اردیبهشت 1391 نظرات (0)

برنامه ي جدول كارنو به زبان c

 

#include <stdio.h>
#include <stdlib.h>
#include <assert.h>

static int num;

/* This forms a linked list of nodes. Yummy. */

struct imp {
int value; /* Algorithm relies on value having 0-bit where mask is zero */
int mask; /* 0 where the value does not matter */
int used; /* This is marked true when an implicant is combined with another */
struct imp *next; /* This points to the next implicant in the linked list */
};


static void printImp(struct imp *imp);
static int countBits(int n);
static int numVars(int X[]);
static void addImp(struct imp *imp, int value, int mask);
static void mungeList(struct imp **imp_list, struct imp **imp_list2, int i);
static void erase_list(struct imp *imp_list);
static void printHeader();
static int is_one_bit(const int n);

int PI(int X[]) {
int i,j;
struct imp **imp_list;
struct imp **imp_list2; // Used for temp list of combined implicants
struct imp needed_imps; // Final list of implicants in compiled into here.
struct imp *i1; // Used as an iterator in various places.
struct imp **i2; // Used as an iterator in various places.
printHeader();

if(X[0] == 0) {
printf("0n");
return 0;
}

num = numVars(X);

/* Initialize the imp_lists */

imp_list = (struct imp**)malloc(sizeof(void*)*(num+1));
imp_list2 = (struct imp**)malloc(sizeof(void*)*(num+1));

for(i=0;i<num+1;i++) {
imp_list[i] = (struct imp*)malloc(sizeof(struct imp));
imp_list2[i] = (struct imp*)malloc(sizeof(struct imp));
}

needed_imps.next = NULL;

for(i=0;i<=num;i++) {
i1 = imp_list[i];
i1->value = 0xBEEF;
i1->next = NULL;

i1 = imp_list2[i];
i1->value = 0xBEEF;
i1->next = NULL;
}

/* Sort implicants into linked lists based on the number of one-bits
in the binary representation of their value */

for(i=1;i<=X[0];i++) {
addImp(imp_list[countBits(X[i])], X[i], -1);
}

/************************************************** *************************/

/* Loop over the different numbers of zero bits in the masks */

for(j=0;j<=num;j++) { /* num+1 times since we have to take in account if all of the cells are true. */
/* Combine all of the terms into a second set of lists */

for(i=0;i<num;i++)
mungeList(imp_list, imp_list2, i);

/* Look for the items that were not used and add them to needed_imps */
for(i=0;i<=num;i++) {
for(i1 = imp_list[i]->next; i1; i1 = i1->next) {
if (!(i1->used)) {
addImp(&needed_imps, i1->value, i1->mask);
}
}
}

/* Remove the old list1 */
for(i=0;i<=num;i++)
erase_list(imp_list[i]);

/* swap the two lists */
i2 = imp_list;
imp_list = imp_list2;
imp_list2 = i2;

} /* . . . . rinse and repeat. */

/************************************************** *************************/

j=0;
for(i1 = needed_imps.next; i1; i1 = i1->next) {
printImp(i1);
printf("n");
j++;
}

// Free all of the dynamicly allocated memory

for(i=0;i<=num;i++)
erase_list(imp_list[i]);
for(i=0;i<=num;i++)
erase_list(imp_list2[i]);
erase_list(&needed_imps);

free(imp_list);
free(imp_list2);

return j;
}

/* If an implicant with value and mask is in imp, this function will
return 1. Otherwise, it returns 0. */

static int search(struct imp *imp, const int value, const int mask) {
while((imp = imp->next))
if (imp->value == value && imp->mask == mask)
return 1;
return 0;
}

/* This prints out an implicant to stdout */

static void printImp(struct imp *imp) {
int i;
int outs=0;
for(i=num-1;i>=0;i--)
if ((imp->mask & (1<<i))) {
if(imp->value & (1<<i))
printf("%c",num-i+'a'-1);
else
printf("%c'",num-i+'a'-1);
outs++;
}
if (outs==0)
printf("1");
}

/* This frees all the nodes in a list (except for the head node )*/

static void erase_list(struct imp *imp_list) {
struct imp *i;
while(imp_list->next) {
i = imp_list->next->next;
free(imp_list->next);
imp_list->next = i;
}
}

/* This attempts to combine terms of imp_list[i] and imp_list[i+1] and
stores the combined terms in imp_list2[num_bits(combined term)] */

static void mungeList(struct imp **imp_list, struct imp **imp_list2, int i) {
int d;
struct imp *i1, *i2;
for(i1 = imp_list[i]->next; i1; i1 = i1->next) {
for(i2 = imp_list[i+1]->next;i2; i2 = i2->next) {
d = i1->value ^ i2->value;
if ((i1->mask == i2->mask)
&& (is_one_bit(d))) {
i1->used = 1;
i2->used = 1;
addImp(imp_list2[i],i1->value,i1->mask-d);
}
}
}
}

/* Prepends an implicant to a implicant list that has a specified
value and mask only if it has not already been added. */

static void addImp(struct imp *imp, int value, int mask) {
struct imp *new_imp;
if (!search(imp,value,mask)) {
new_imp= (struct imp*)malloc(sizeof(struct imp));
new_imp->value = value;
new_imp->mask = mask;
new_imp->next = imp->next;
new_imp->used = 0;
imp->next = new_imp;
}
}

/* Returns 1 is argument contains only one true bit */

static int is_one_bit(int n) {
if(n==0)
return 0;
if(n==1)
return 1;
while (((n >>=1) &1)==0)
;
if(n==1)
return 1;
return 0;
}

/* Returns the number of 1 bits in a number */

static int countBits(int n) {
int total=0;
while(n) {
total += n & 1;
n >>=1;
}
return total;
}

/* Returns the number of variables needed to represent the maximum
term of X */

static int numVars(int X[]) {
int i;
int max = 0;
int num=1;
for(i=1;i<=X[0];i++)
if(X[i]>max)
max = X[i];
while(max/=2)
num++;
return num;
}

static void printHeader() {
printf("Nathan Conradn");
printf("ITCS2181 Programming assignment 1n");
printf("Due 3/27/03, 10pmn");
}

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(void)
{ int b[200][200],c[200][200],n,*m,*ones,*primes,i,j,k,e,f,t;
int a1,b1,index,min = 0,order=0,cnt=0;
char cr;
/* comment : allocating memory space for variables */
printf(" Ain Shams University Faculty of Engineering n");
printf(" Year : 2nd Year of Computer and Systems Eng. n");
printf(" Student Name : Mahmoud Reda Hussien Seireg n");
printf(" Section : 4 n");
printf(" Bench No. : 23777 n");
printf("n enter # of variables in boolean expr. : ");
scanf("%d",&n);
if (n<=0) { printf(" error : not valid no. of variables n"); goto end; }
m=(int *)calloc(n,sizeof(int));
ones=(int *)calloc(n,sizeof(int));
primes=(int *)calloc(n,sizeof(int));
/* comment : receiving minterms */
printf("n enter minterms seperated by space");
printf("n note : enter last minterm -1");
printf("n for example F(x1,x2,x3)=(0,1,2,7) is entered as ");
printf("n 0 1 2 7 -1 ");
printf("n enter data : ");

for (i=0;i<pow(2,n);++i)
{ scanf("%d",&m[i]);
if (m[i]==-1)
break;
if ((m[i]>=pow(2,n)) || (m[i]<0))
{
printf("n error : %d not a valid minterm.n",m[i]);
printf(" please re-run the program n ");
goto end;
}

/* comment : obtaining binary representation of minterm */
for (j=n-1;j>=0;--j)
{ b[i][j]=((m[i]%2)==1); m[i]/=2; }
}
/* comment : printing binary value of each minterm of the function */
printf("nn Displaying minterm's binary values of entered functionn");
for (k=0;k<i;++k)
{ printf(" | ");
for (j=0;j<n;++j)
printf("%d",b[k][j]);
}
printf("n press enter to continue ");
cr=getchar();
cr=getchar();
/* comment : diplaying the function before simplification */
printf("nn Displaying the function before simplification : ");
printf(" n F(");
for (k=1;k<=n;++k)
printf("x%d%s",k,(k!=n)?",":")");
printf("=");
for (k=0;k<i;++k)
{ for (j=0;j<n;++j)
if (b[k][j]==0)
printf("x%d'",j+1);
else if (b[k][j]==1)
printf("x%d",j+1);
printf("%s",(k==i-1)?".n":" + ");
}
printf("n press enter to continue ");
cr=getchar();
/* comment : counting ones in each minterm */
for (k=0;k<i;++k)
primes[k]=0;
for (f=0;f<i;++f)
{
for (k=0;k<i;++k)
{ ones[k]=0; primes[k]=0;}
for (k=0;k<i;++k)
for (j=0;j<n;++j)
ones[k]+=(b[k][j]==1);
/* comment : sorting and simplyfing min no. of ones with those
of next level of ones. */
min=ones[0];
for (k=0;k<i;++k)
min=(ones[k]<=min)?ones[k]:min;
for (e=0;e<i;++e)
for (k=0;k<i;++k)
if (ones[k]==min+e)
for (j=0;j<i;++j)
{ if (j==k) continue;
if (ones[j]==min+e+1)
{ for (a1=0;a1<n;a1++)
if (b[k][a1]==b[j][a1])
++cnt;
else
index=a1;
if (cnt==n-1)
{ primes[k]=1;
primes[j]=1;
for (b1=0;b1<n;b1++)
if (b1==index)
c[order][b1]='-';
else
c[order][b1]=b[k][b1];
++order;
}
}
cnt=0;
}
for (k=0;k<order;k++)
for (j=0;j<n;j++)
b[k][j]=c[k][j];
}
t=0;
for (k=0;k<order;++k)
if (primes[k]==0)
{ for (j=0;j<n;++j)
c[t][j]=b[k][j];
++t;
}
/* comment : printing binary value of simplified minterms */
printf("n Displaying the binary value of the functions prime implicants n");
for (k=0;k<t;++k)
{ printf(" n");
for (j=0;j<n;++j)
if (c[k][j]==45)
printf("%c",c[k][j]);
else
printf("%d",c[k][j]);
}
printf("n press enter to continue ");
cr=getchar();
/* comment : diplaying the function after simplification */
printf("n Displaying the function after simplification : ");
printf(" n F(");
for (k=1;k<=n;++k)
printf("x%d%s",k,(k!=n)?",":")");
printf("=");
for (k=0;k<=t;++k)
{ for (j=0;j<n;++j)
if (c[k][j]==0)
printf("x%d'",j+1);
else if (c[k][j]==1)
printf("x%d",j+1);
printf("%s",(k==t)?".n":" + ");
}
putchar('n');
end:
printf("n press enter to exit the program ");
cr=getchar();
return 0;
}

 

______بابک بوتر______ بازدید : 117 جمعه 15 اردیبهشت 1391 نظرات (0)

ارسال آرایه های چندبعدی به توابع در برنامه نویسی سی

در این قسمت، ابتدا به نحوه ارسال آرایه های دو بعدی به توابع می پردازیم و سپس آرایه های با ابعاد بالاتر می پردازیم.

شاید تصور کنید که برای تعریف یک آرایه دوبعدی بعنوان پارامتری از یک تابع، تنها قرار دادن دو علامت [] کافی است و نیازی به ذکر ابعاد آن نیست. اما متاسفانه اینگونه نیست، بلکه برنامه نویس باید تعداد ستونهای آرایه دوبعدی را صریحا مشخص نماید، اما نیازی به تعیین تعداد ردیفهای آن نیست. بعنوان مثال فرض کنید تابعی مانند test داریم که بعنوان ورودی یک آرایه دو بعدی و تعدادی پارامتر دیگر دریافت می کند. تعریف تابع بصورت زیر اشتباه است:

کد:
void test(int A[][], …) {
تعریف درست، تعریفی مانند زیر است:
کد:
void test(int A[][10] , …) {

همانطور که می بینید تعداد ردیفها مشخص نشده است، اما تعداد ستونها برابر 10 تعیین شده است. در هنگام فراخوانی تابع test، می توان هر آرایه دوبعدی 10 ستونی را به آن ارسال کرد. آرایه ارسالی به تابع می تواند 5×10 و یا 20×10 باشد، اما نمی تواند مثلا 5×20 باشد.

اکنون به 2 برنامه نمونه دقت کنید.

مثال) تابعي بنويسيد كه ميزان فروش تعدادي شركت در 12 ماه سال را بعنوان ورودي دريافت، و ميانگين فروش شركتي را كه بيشترين ميانگين فروش را داشته است، بازگرداند.

حل) با توجه به صورت مسئله مسلم است كه اين تابع بايد يك آرايه دو بعدي را بعنوان ورودي دريافت نمايد. رديفهاي اين آرايه به تعداد شركتهاي مورد نظر و ستونهاي آن برابر 12 (يك ستون براي هر ماه از سال) مي باشد. بنابراين كافيست تابع را بگونه اي تعريف نماييم كه يك آرايه 12 ستوني را بعنوان ورودي دريافت نمايد. حل دقيق بصورت زير است:

کد:
float maxSales(const long int sales[][12], int companyNo) {
int i,j;
float average , max;

max = 0.0;
for (i=0 ;i< companyNo; i++) {
average = 0;
for (j= 0;j<12; j++)
average += sales[i][j] ;

if (average > max) 
max = average ;
}
return(max);
}

مثال ) برنامه ای بنویسید که حاصلضرب دو ماتریس را با استفاده از یک تابع محاسبه نماید.

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

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

معمولا تعداد ستونهای واقعی آرایه دوبعدی بعنوان یک پارامتر مجزا به تابع ارسال می شود. به برنامه زیر دقت کنید:

کد:
const int maxCol = 10;

void multiply(const int A[][maxCol], const int B[][maxCol], int m,int p, int n, 
int C[][maxCol] ) {

for (i=0; i< m; i++) 
for (j=0; j< n; j++) {
sum = 0;
for (k= 0;k < p; k++) 
sum += A[i][k] * B[k][j] ;

C[i][j] = sum; 
}
}

void printMatrix(int matrix[][maxCol], int row,int col) {
int i,j;

for (i=0; i< row; i++) {
for (j=0; j< col ;j++)
printf(“%d ”,matrix[i][j]);
printf(“n”);
}
}

void main() {
int matrix1[2][maxCol] = { {7 ,3 , 2} , {-2, 6, 1} };
int matrix2[3][maxCol] = { {2 , 7 , -4, -1} , { 3 ,-3, 5, -8} , {6, -7, 2, 3} };
int result[2][maxCol] ;

multiply(matrix1, matrix2, 2, 3, 4, result);

printf(“matrix1 is :n”);
printMatrix(matrix1,2,3) ;
printf(“nmatrix2 is :n”);
printMatrix(matrix2,3,4) ;
printf(“nmultiply of matrix1 and matrix2 is :n”);
printMatrix(result,2,4) ;
}
matrix1 is : 
 7 3 2
-2 6 1
matrix2 is :
2  7 -4 -1
3 -3  5 -8
6 -7  2  3
multiply of matrix1 and matrix 2 is :
35  26 -9  -25
20 -39 40 -43

اگر به تابع multiply دقت كنيد، ابتدا دو ماتريس را بصورت ثابت دريافت مي كند (چرا كه مقادير ماتريسهاي اوليه نبايد عوض شود). سپس اندازه واقعي ماتريسها را در قالب سه پارامتر m، p و n دريافت مي نمايد، بدينصورت كه ماتريس اول m × p و ماتريس دوم p × n فرض شده است. مسلما ستونهاي ماتريس اول يعني p و ستونهاي ماتريس دوم يعني n، بايد كوچكتر از حداكثر تعداد ستونها يعني maxCol باشند. آخرين پارامتر نيز ماتريس حاصلضرب است كه خروجي تابع است (و بهمين دليل بصورت ثابت تعريف نشده است).

مسلم است كه اندازه ماتريس خروجي m × n خواهدبود و نيازي به بازگردندان ابعاد آن نيست. نحوه انجام عمليات ضرب نيز قبلا و در مبحث الگوريتمها تشريح شده است. و اما در تابع اصلي، ابتدا دو ماتريس matrix1 و matrix2 تعريف شده و مقدار اوليه گرفته اند. توجه كنيد كه گرچه ابعاد اصلي matrix1 برابر 2×3 است، اما از آنجا كه تابع multiply فقط ماتريسهايي را مي پذيرد كه تعداد ستونهاي آنها برابر maxCol يعني 10 باشد، مجبور شده ايم آن را بصورت 2×10 تعريف كنيم ولي از 7 ستون آخر استفاده نكنيم. بهمين دليل matrix2 نيز كه در حقيقت 3×4 بوده است، بصورت 3×10 تعريف شده است و ماتريس حاصلضرب يعني result نيز كه بايد 2×4 باشد، بصورت 2×10 تعريف شده است.

با اين تعاريف، مي توان بدون هيچ مشكلي تابع multiply را فراخواني كرد. در پايان نيز با استفاده از تابع printMatrix، ماتريسهاي اوليه و حاصلضرب آنها چاپ شده است. دقت كنيد كه تابع printMatrix نيز يك ماتريس با maxCol ستون را به همراه تعداد واقعي سطر و ستونهاي آن دريافت و آن را چاپ مي نمايد.

و اما ارسال آرايه هاي با ابعاد بالاتر به توابع نيز مشابه آرايه هاي دوبعدي است. به اين صورت كه در هنگام تعريف يك پارامتر از تابع بعنوان يك آرايه چندبعدي، مشخص كردن بعد اول لزومي ندارد، اما اندازه كليه ابعاد بعدي بايد حتما مشخص گردد. بعنوان مثال تابع زير:

کد:
void test(int A[][5][10], … ) {

يعنوان ورودي يك آرايه سه بعدي دريافت مي نمايد كه حتما بايد بعد دوم آن 5 و بعد سوم آن 10 باشند، اما اندازه بعد اول هر مقداري مي تواند باشد.

 

______بابک بوتر______ بازدید : 105 جمعه 15 اردیبهشت 1391 نظرات (0)
مقدمه ای بر زبان c

پس از نوشتن یک الگوریتم باید آن را با استفاده از یک زبان برنامه نویسی تبدیل به یک برنامه قابل اجرا برای کامپیوتر نماییم. این زبانها به سه دسته کلی تقسیم میگردند :

1- زبان ماشین (سطح پایین) : این زبان مستقیما با صفر و یک نوشته می شود و بدون هیچ واسطه ای برروی کامپیوتر قابل اجرا است. طراحان سخت افزار هر کامپیوتر، زبان ماشین خاص خود را برای آن ماشین طراحی می نمایند. به همین دلیل هر برنامه ای که به زبان ماشین نوشته شود، فقط برروی همان ماشین خاص کار می کند، بهمین دلیل برنامه های نوشته شده به زبان ماشین را غیر قابل حمل می نامند. از طرف دیگر یادگیری این زبان بسیار مشکل بوده و برنامه نویسی با آن نیز بسیار سخت است و همچنین احتمال بروز خطا نیز در آن زیاد است.

2- زبان اسمبلی : این زبان شکل ساده تر زبان ماشین است، بدین صورت که برای هر دستورالعمل زبان ماشین، یک اسم نمادین انتخاب شده است (مانند دستور ADD بجای کد دودویی دستورالعمل جمع) که بخاطر سپردن و برنامه نویسی با آنها برای انسانها ساده تر است. اما این برنامه ها برای ماشین قابل فهم نیست و باید قبل از اجرا شدن توسط برنامه مترجمی بنام اسمبلر به زبان ماشین تبدیل شود. توجه کنید که از آنجا که هر دستور زبان اسمبلی معادل یک دستور زبان ماشین است، این زبان نیز وابسته به ماشین می باشد و برنامه های نوشته شده به این زبان فقط برروی همان کامپیوتری که برای آن نوشته شده اند قابل اجرا است. علاوه براین کار با این زبانها هنوز هم نسبتا مشکل بود و فقط متخصصین کامپیوتر قادر به استفاده از آنها بودند.

3- زبانهای سطح بالا : دستورالعملهای این زبانها بسیار نزدیک به زبان انسانها (بطور مشخص زبان انگلیسی) می باشد و بهمین دلیل برنامه نویسی به آنها بسیار ساده تر بوده و می توان الگوریتمها را به راحتی به این زبانها تبدیل کرد. از آنجا که این زبانها به هیچ ماشین خاصی وابسته نیستند، برنامه های نوشته شده با این زبانها (تا حد زیادی) قابل حمل می باشند. مثالهایی از این زبانها عبارتند از :

- بیسیک (Basic): برای کاربردهای آموزشی
- فرترن (Fortran) : برای کاربردهای علمی و مهندسی
- پاسکال (Pascal) : برای کاربردهای آموزشی و علمی

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

تاریخچه C

برای بررسی تاریخچه زبان C باید به سال 1967 بازگردیم که مارتین ریچاردز زبان BCPL را برای نوشتن نرم افزارهای سیستم عامل و کامپایلر در دانشگاه کمبریج ابداع کرد. سپس در سال 1970 کن تامپسون زبان B را بر مبنای ویژگیهای زبان BCPL نوشت و از آن برای ایجاد اولین نسخه های سیستم عامل Unix در آزمایشگاههای بل استفاده کرد. زبان C در سال 1972 توسط دنیس ریچی از روی زبان B و BCPL در آزمایشگاه بل ساخته شد و ویژگیهای جدیدی همچون نظارت بر نوع داده ها نیز به آن اضافه شد. ریچی از این زبان برای ایجاد سیستم عامل Unix استفاده کرد اما بعدها اکثر سیستم عاملهای دیگر نیز با همین زبان نوشته شدند. این زبان با سرعت بسیاری گسترش یافت و چاپ کتاب "The C Programming Language" در سال 1978 توسط کرنیگان و ریچی باعث رشد روزافزون این زبان در جهان شد.

متاسفانه استفاده گسترده این زبان در انواع کامپیوترها و سخت افزارهای مختلف باعث شد که نسخه های مختلفی از این زبان بوجود آید که با یکدیگر ناسازگار بودند. در سال 1983 انستیتوی ملی استاندارد آمریکا (ANSI) کمیته ای موسوم به X3J11 را را مامور کرد تا یک تعریف فاقد ابهام و مستقل از ماشین را از این زبان تدوین نماید.در سال 1989 این استاندارد تحت عنوان ANSI C به تصویب رسید و سپس در سال 1990، سازمان استانداردهای بین المللی (ISO) نیز این استاندارد را پذیرفت و مستندات مشترک آنها تحت عنوان ANSI/ISO C منتشر گردید.

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

با گسترش شبکه و اینترنت، نیاز به زبانی احساس شد که برنامه های آن بتوانند برروی هر ماشین و هر سیستم عامل دلخواهی اجرا گردد. شرکت سان مایکروسیستمز در سال 1995 میلادی زبان Java را برمبنای C و C++ ایجاد کرد که هم اکنون از آن در سطح وسیعی استفاده می شود و برنامه های نوشته شده به آن برروی هر کامپیوتری که از Java پشتیبانی کند(تقریبا تمام سیستمهای شناخته شده) قابل اجرا می باشد. شرکت مایکروسافت در رقابت با شرکت سان، در سال 2002 زبان جدیدی بنام C# (سی شارپ) را ارائه داد که رقیبی برای Java بشمار می رود.

برنامه نویسی ساخت یافته

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

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

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

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

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

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

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

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

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

مراحل اجرای یک برنامه C

برای اجرای یک برنامه C ابتدا باید آن را نوشت. برای اینکار می توان از هر ویرایشگر متنی موجود استفاده کرد و سپس فایل حاصل را با پسوند .C ذخیره نمود (فایلهای C++ با پسوند .CPP ذخیره می گردند). به این فایل، کد مبدا (source code) گفته می شود. مرحله بعدی تبدیل کد مبدا به زبان ماشین است که به آن کد مقصد (object code) گفته می شود. همانطورکه قبلا نیز گفته شد برای اینکار از یک برنامه مترجم بنام کامپایلر استفاده می شود. کامپایلرهای متعددی برای زبان C توسط شرکتهای مختلف و برای سیستم عاملهای مختلف نوشته شده است که می توانید برحسب نیاز از هریک از آنها استفاده نمایید. اما هنوز برنامه برای اجرا آماده نیست. معمولا برنامه نویسان از در برنامه های خود از یک سری از کدهای از پیش آماده شده برای انجام عملیات متداول (مانند محاسبه جذر و یا سینوس) استفاده می کنند که برنامه آنها قبلا نوشته و ترجمه شده است. این برنامه ها یا در قالب کتابخانه های استاندارد توسط شرکتهای ارائه کننده نرم افزار عرضه شده است و یا توسط دیگر همکاران برنامه نویس اصلی نوشته و در اختیار وی قرار داده شده است. در این مرحله باید کد مقصد برنامه اصلی با کدهای مربوط به این برنامه های کمکی پیوند زده شود. برای اینکار نیاز به یک پیوند زننده (Linker) داریم و نتیجه این عمل یک فایل قابل اجرا خواهد بود (در ویندوز این فایل پسوند .EXE خواهد داشت). مرحله بعدی اجرای برنامه و دادن ورودیهای لازم به آن و اخذ خروجیها می باشد. در شکل زیر این مراحل نشان داده شده اند.

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

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

Borland C++ 3.1 براي محيط DOS
Borland C++ از نسخه 4 به بالا براي Windows
Microsoft Visual C++ براي محيط Windows
Borland C++ Builder برای محیط Windows

براي شروع ما از محيط Borland C++ 3.1 تحت Dos كه نحوه كار ساده تري نسبت به سايرين دارد استفاده مي كنيم.
پس از نصب اين نرم افزار، برنامه BC.exe را اجرا كنيد تا وارد محيط borland c شويد

همانطور كه مي بينيد، اين محيط از 3 قسمت اصلي تشكيل شده است :
- بخش ويرايش برنامه : بخش آبي رنگ وسط مي باشد كه در حقيقت يك ويرايشگر است كه برنامه در آن تايپ مي شود. همانطور كه مي بينيد در اين ويرايشگر از رنگهاي مختلف براي نشان دادن قسمتهاي مختلف برنامه استفاده مي شود. مثلا براي كلمات كليدي از رنگ سفيد استفاده شده است.

- بخش منوهاي كاري : اين بخش كه در قسمت بالا واقع شده است،- حاوي تعدادي منو (گزينه) براي انجام وظايف مختلف است. خلاصه اين عمليات عبارتند از :
o منوي File : عملياتي مانند باز كردن و يا ذخيره يك برنامه
o منوي Edit : عمليات ويرايش مانند حذف،o كپي و يا چسباندن يك قسمت از برنامه
o منوي Search : جستجوي و يا تعويض يك متن در برنامه
o منوي Run : اجراي برنامه بصورت كامل يا دستور به دستور
o منوي Compile : عمليات مربوط به كامپايل و پيوند برنامه
o منوي Debug : عمليات مربوط به اشكالزدايي مانند ديدن مقادير متغيرها در زمان اجرا
o منوي Project : عمليات مربوط به مديريت برنامه هايي كه شامل چندين فايل مستقل هستند (پروژه)
o منوي Options : عمليات مربوط به تنظيمات سيستم مانند نحوه كامپايل و يا رنگ پيش فرض محيط
o منوي Windows : عمليات مربوط به پنجره هاي باز فعلي (مربوط به چندين برنامه يا نمايش متغيرها و ... )
خطاهای برنامه نویسی

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

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

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

a. خطاهای مهلک: در این دسته خطاها کامپیوتر بلافاصله اجرای برنامه را متوقف کرده و خطا را به کاربر گزارش می کند. مثال معروف این خطاها،b. خطای تقسیم بر صفر می باشد.

c. خطاهای غیرمهلک: در این دسته خطا،d. اجرای برنامه ادامه می یابد ولی برنامه نتایج اشتباه تولید می نماید. بعنوان مثال ممکن است دراثر وجود یک خطای منطقی در یک برنامه حقوق و دستمزد،e. حقوق کارمندان اشتباه محاسبه شود و تا مدتها نیز کسی متوجه این خطا نشود!

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

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

 

درباره ما
سایتی دیگر از تیم بزرگ بکس 021 برای انتقال تجربیات ارزشمندشان دز زمینه های بالا بردن امنیت سیستم های یوزرهای بازدیدکننده عزیز
اطلاعات کاربری
  • فراموشی رمز عبور؟
  • آرشیو
    نظرسنجی
    نظرتان در مورد هک ایران چیست
    آمار سایت
  • کل مطالب : 65
  • کل نظرات : 10
  • افراد آنلاین : 1
  • تعداد اعضا : 52
  • آی پی امروز : 4
  • آی پی دیروز : 1
  • بازدید امروز : 5
  • باردید دیروز : 0
  • گوگل امروز : 0
  • گوگل دیروز : 0
  • بازدید هفته : 9
  • بازدید ماه : 6
  • بازدید سال : 719
  • بازدید کلی : 25,364