منبعی کامل برای 28 تابع API ویندوز
مقاله ای رو که گفته بودم بلاخره کامل شد.به همه ی برنامه نویسان عزیز پیشنهاد می کنم که حتما دانلود کننش.به هر حال یه روزی باید از این مقاله استفاده کنند.چیزی که این مقاله رو با مقاله های دیگر متفاوت می کند این موضوع است که همراه هر تابع API که در این مقاله توضیح داده شده ، یک مثال که از این تابع استفاده می کند آورده شده است.از اینجا دانلود کنید.
جزوه ی الکترومغناطیس دکتر آقاجعفری
برای دانلود این جزوه اینجا کلیک کنید
.(حجم فایل 3.4MEG)
matlab e-books

Newnes.Essential.MATLAB.for
.Engineers.and.Scientists

ENGINEERING AND SCIENTIFIC
CALCULATIONS USING MATLAB

MatLab Primer, 7th Edition

ELECTRONICS and CIRCUIT
ANALYSIS using MATLAB
استایل (CSS) چیست؟
CSS مخفف کلمه Cascading Style Sheets می باشند.
زبان HTML
برای ایجاد یك سیستم كد سازی جهانی به وجود آمد تا بوسیله آن بتوان صفحات وب را
بدون توجه به نوع كامپیوتر طراحی كرد. خاصیت مهم HTML
قالب بندی ساختاری میباشد ولی متاسفانه به طراحان قابلیت کنترل در همه زوایای
صفحه را نمیدهد. برای قالب بندی و ایجاد افکت های بیشتر از CSS
استفاده میکنیم.
در واقع CSS این امکان را ایجاد میکند تا طراح بتواند چندین مشخصه در طراحی
صفحه را به یکباره تعیین کند بعنوان مثال خصوصیات تمامی تگهای h1
موجود در صفحه اعم از اندازه، فونت و رنگ را مشخص نماید. و یا مشخصات ظاهری چندین
صفحه را در یك فایل CSS تعیین نماید.
برای دیدن کد نمونه فایل css اینجا کلیک کنید و برای مشاهده ی آن در مرورگرتان اینجا کلیک کنید.
تفاوت عمده ی XML و HTML:
XML برای حمل داده ها طراحی شده است و این در
حالی است که به عنوان یک جایگزین برای HTML تعریف نشده است. در حقیقت XML و HTML برای اهدافی مختلف طراحی شده اند
• XML برای این طراحی شده است
که داده ها را توصیف کند و بیشتر بر این مسئله تاکید دارد که بگوید داده ها واقعا
چه چیزهایی هستند.
• HTML برای این طراحی شد که
نحوه ی نمایش داده ها را بیان کند و بر این تاکید دارد که داده ها چگونه به نظر
برسند.
• HTML برای نحوه ی نمایش داده
هاست درحالی که XML برای توصیف
داده ها بکار می رود.
Xml چیست؟
• XML رایگان و قابل توسعه است.
• تگ های XML از پیش تعریف شده نیستند و شما باید درخور نیاز خود تگ
های مد نظرتان را تعریف کنید.
• XML مکملی برای
HTML است.
• XML یک تکنولوژی مستقل از
Platform و سخت
افزار و نرم
افزار، برای انتقال
داده می باشد.
• XML آینده
ی برنامه نویسی و توسعه صفحات وب می باشد.
• XML به زودی یک تکنولوژی
فراگیر خواهد شد.
• XML می تواند داده ها را از تگ های HTML جدا کند.
• با XML داده های شما می توانند بیرون از HTML ذخیره شوند.
• از XML برای تبادل داده ها بین سیستم های ناهماهنگ استفاده می
شود.
• با کمک XML داده های مالی و تجاری می توانند در اینترنت مبادله شوند.
• با کمک XML می توان داده ها را توسط متونی بسیار ساده
Share کرد.
• با کمک XML داده ها می توانند در فایل های متنی بسیار ساده ذخیره شوند.
• باXML داده
های شما می
توانند برای کاربران بسیاری
قابل دسترس باشند.
• با XML می توان زبان های جدیدی را ابداع نمود.
• XML مادر تکنولوژی WAP
و WML می باشد.
• امکان این مسئله بسیار زیاد
است که در آینده تمامی برنامه های کاربردی از XML برای تبادل داده های خود استفاده کنند.
XML برای کمک به ذخیره سازی ،
سازماندهی و انتقال داده ها طراحی شده است. به این دلیل که از متنی بسیار ساده
برای نوشتن کمک می گیرد و به آسانی می تواند به اینترنت فرستاده شود و توسط نرم
افزارهای مختلف بر روی platform
های مختلف نگه داری شود. XML
طراحی شده است که به مردم امکان بدهد به آسانی داده های خود را جابجا کنند. در این
5 سال اخیر، حدود صدها زبان نشات گرفته از XML (که همه مجموعه ای از Element های از پیش تعریف شده می باشند) بوجود آمدند.
برای مثال فرض کنید که می خواهید یک تحقیق در مورد نسل ها و شجره ی افراد داشته
باشید. برای جستجو در میان بسیاری از رکوردها، مطمئنا نیاز به یک ساختار مرتب و از
پیش تعریف شده خواهید داشت و داشتن آن همه اطلاعات فقط در یک فایل متنی ساده کافی
نخواهد بود.
حال برای این تحقیق شما می توانید از یکی از شاخه های زبان XML به نام Genealogical Data Communication استفاده کنید. در این
زبان تگ های مخصوص بسیاری برای ذخیره سازی نام ها، تاریخ ها، ازدواج ها و... وجود
دارد. با استفاده از GEDCOM
بسیاری از مردم در سرتاسر جهان می توانند از پایگاه های داده برای نسل ها و شجره
ها استفاده کنند.
زبان های منشعب از XML
مثل GEDCOM به برنامه های کاربردی
XML شهرت دارند. (این نام
تا حدی با بدشانسی روبرو بوده است، به این دلیل که بسته های نرم افزاری نیز برنامه
های کاربردی خوانده می شوند، ولی در کل ایده ی این نامگذاری بیشتر به برنامه های
کاربردی XML متمایل بوده است).
هم اکنون صدها برنامه ی کاربردیXML
موجود است که به گروه های مختلف مردم اجازه ی ارتباط برقرار کردن و تبادل داده ها
را می دهد. در اینجا لیستی از این برنامه های کاربردی وجود دارد:
• Application Vulnerability
Description Language-AVDL
• Bank Internet
Payment System -BIPS
• Banking Industry
Technology Secretariat -BITS
• Common Business
Library -xCBL
• Connexions Markup
Language -CNXML
• Electronic
Business XML plan -ebXML
• Extensible Access
Control Markup Language-XACML
• Financial
Exchange -IFX
• Financial
Information eXchange protocol -FIX
• Financial
Products Markup Language-FpML
• Genealogical Data
Communication -GEDCOM
• Geography Markup
Language-GML
• Global Justice's
Justice XML Data Dictionary -JXDD
• Human Resources
Background Checks and Payroll Deductions Language -HR-XML
• Product Data
Markup Language-PDML
• Schools
Interoperability Framework -SIF
• Telecommunications
Interchange Markup -TIM
• The Text Encoding
Initiative -TEI
• Windows Rights
Management Services -RMS
• XML Common
Biometric Format -XCBF
• XML Process
Definition Language-XPDL
XHTML چیست ؟
• XHTML به عنوان یک جایگزین برای HTML طراحی شده است.
• XHTML بسیار شبیه HTML است.
• XHTML کمی از HTML خشک تر و مرتب تر است.
• XHTML یک HTML تعریف شده برای برنامه های کاربردی XML ی می باشد.
• XHTML از طرف W3C تائید شده می باشد.
دلیل پیدایش XHTML :
تمامی توسعه دهندگان روزی به این نتیجه رسیدند كه بسیاری از صفحات وب ساختار HTML مناسبی ندارند.
زبان نشانه گذاری xml نیز به این دلیل بوجود آمد كه بتواند دادهها را به درستی نشانهگذاری كند و نتیجه آن خوانا بودن سند شد.
امروزه تكنولوژی های مرورگرهای مختلفی موجود است مثلاً برخی از مرورگرها
اینترنت را بر روی pc ها و برخی بر روی موبایلها فراهم می كنند و نكته ای
كه بسیار قابل توجه میباشد. این است كه این مرورگرها فاقد منابعی هستند
كه قدرت ترجمهی بالایی را به آنها میدهد.
بنابراین، با تركیب HTML و XML و قدرتهای آنها، یك زبان نشانهگذاری جدیدی به نام XHTML بوجود آمد.
برنامه نویس و مهندس
یک برنامهنویس و یک مهندس در یک مسافرت طولانى هوائى کنار یکدیگر در ... نشسته بودند. برنامهنویس رو به مهندس کرد و گفت: مایلى با همدیگر بازى کنیم؟ مهندس که میخواست استراحت کند محترمانه عذر خواست و رویش را به طرف پنجره برگرداند و پتو را روى خودش کشید.
برنامهنویس دوباره گفت: بازى سرگرمکنندهاى است. من از شما یک سوال میپرسم و اگر شما جوابش را نمیدانستید ۵ دلار به من بدهید. بعد شما از من یک سوال میکنید و اگر من جوابش را نمیدانستم من٥ دلار به شما میدهم.
مهندس مجدداً معذرت خواست و چشمهایش را روى هم گذاشت تا خوابش ببرد.
این بار، برنامهنویس پیشنهاد دیگرى داد. گفت: خوب، اگر شما سوال مرا جواب ندادید ۵ دلار بدهید ولى اگر من نتوانستم سوال شما را جواب دهم ٥٠ دلار به شما میدهم.
این پیشنهاد چرت مهندس را پاره کرد و رضایت داد که با برنامهنویس بازى کند.
برنامهنویس نخستین سوال را مطرح کرد: «فاصله زمین تا ماه چقدر است؟»
مهندس بدون اینکه کلمهاى بر زبان آورد دست در جیبش کرد و ۵ دلار به برنامهنویس داد. حالا نوبت خودش بود.
مهندس گفت: «آن چیست که وقتى از تپه بالا میرود ۳ پا دارد و وقتى پائین میآید ۴ پا؟»
برنامهنویس نگاه تعجب آمیزى کرد و سپس به سراغ کامپیوتر قابل حملش رفت و تمام اطلاعات موجود در آن را مورد جستجو قرار داد. آنگاه از طریق مودم بیسیم کامپیوترش به اینترنت وصل شد و اطلاعات موجود در کتابخانه کنگره آمریکا را هم جستجو کرد. باز هم چیز بدرد بخورى پیدا نکرد. سپس براى تمام همکارانش پست الکترونیک فرستاد و سوال را با آنها در میان گذاشت و با یکى دو نفر هم گپ زد ولى آنها هم نتوانستند کمکى کنند. بالاخره بعد از ۳ ساعت، مهندس را از خواب بیدار کرد و ٥٠ دلار به او داد.
مهندس مودبانه ٥٠ دلار را گرفت و رویش را برگرداند تا دوباره بخوابد. برنامهنویس بعد از کمى مکث، او را تکان داد و گفت: «خوب، جواب سوالت چه بود؟»
مهندس دوباره بدون اینکه کلمهاى بر زبان آورد دست در جیبش کرد و ۵ دلار به برنامهنویس داد و رویش را برگرداند و خوابید.
سه معمایی که مایکروسافت هم قادر به حل کردن آنها نیست!
1-هیچ وقت و در هیچ کجای ویندوز نمی توانید فولدری ایجاد کنید که نام آن "CON" باشد.(البته بدون علامت های کوتیشن)
2-کسانی که از ویندوز xp استفاده می کنند کارهای زیر را انجام دهند:
1-یک فایل text خالی را ایجاد کنید.(با کلیک راست بر روی دسکتاپ و انتخاب گزینه ی Newàtext doucument)
2-جمله ی "Bush hid the facts" را بدون علامت های کوتیشن درون این فایل تایپ کنید.
3-هر جایی که دلتان خواست فایل را ذخیره کنید.
4-فایل را ببندید و دوباره باز کنید.! اگر می توانید جمله تان را دوباره بخوانید!
3-یک واقعیت دیوانه کننده!تیم کامل مایکروسافت شامل شخص بیل گیتس و تمام برنامه نویسانش نتوانستند دلیلی برای این معما بیاورند!یک فایل word office باز کنید و دورن آن تایپ کنید "=rand (200, 99)" (البته بدونکوتیشنها).سپس ENTER را بزنید. چه می بینید؟ چرا؟
pi
دقیقا یادم نیست ولی فکر کنم که سوم راهنمایی بودم که با عدد pi آشنا شدم.یادمه اون موقع تو کتابمون نوشته بود که عدد pi رو با ابرکامپیوترها تا میلیون ها رقم اعشار حساب کرده اند . خوب حالا من الان به این فکر کردم که چه جوری این اعداد رو به دست آوردند؟فرمول های زیر رو می توانید تو کتاب های ریاضیات دانشگاهی پیدا کنید.
من از کتاب حساب دیفرانسیل و انتگرالِ " جورج توماس و راس فینی " پیداشون کردم.
:فرمول های مجموع جملات نامتناهی
Pi = 1/1 - 1/3 + 1/5 - 1/7 + 1/9 - 1/11 . . . = 4 / Pi
Pi = 1/1^2 + 1/2^2 + 1/3^2 +1/4^2 + 1/5^2 . . . = (Pi^2) / 6
فرمول آرک تانژانت :
Pi = 4 * Atn1))
فرمول اویلر:
Pi = 20 * Atn(1/7) + 8 * Atn3/79) )
:فرول گاووس
Pi = 48 * Atn(1/18) + 32 * Atn(1/57) - 20 * Atn(1/239 )
فرمول ماچین:
Pi = 16 * Atn(1/5) - 4 * Atn1/239))
سری توانی آرک تانژانت:
Atn(X) = X - X^3 /3 + X^5 /5 - X^7 /7 + X^9 /9 . . .
Ramanujan فرمول:
1 1103 27493 1 1*3 53883 1*3 1*3*5*7
---------------- = ------ + --------- -- ---- + --------- ------ ----------- + . . .
2*pi*Sqr(2) 99^2 99^6 2 4^2 99^10 2*4 4^2+8^2
برنامه ی نوشته شده که از فرمول آرک تانژانت استفاده می کند را از اینجا دانلود کنید.

Electerical field drawer
قبلا یک برنامه برای محاسبه ی میدان الکتریکی حاصل از دو بار نقطه ای در صفحه نوشته بودم .وسط امتحانات ترمی که گذشت یک نفر در وبلاگم برنامه ای خواست تا برآیند این میدان را برای دو بار نقطه ای در صفحه ی مختصات رسم کند و اندازه ی میدان را در نقطه ی مشخصی به دست آورد.
می دانیم که هر بار نقطه ای در فضا میدانی ایجاد می کند که برای بارهای منفی میدان در جهت نزدیک شونده با بار و برای بار مثبت در جهت دور شونده از آن است.و خطوط میدان در فضا از دو اصل مهم پیروی می کنند.
1-ھر خط مماس بر خط ھای میدان در یک نقطه با خط میدان در آن نقطه موازی است.
2- میدان به وجود آمده در یک نقطه از فضا با اندازه ی میدان در آن نقطه رابطه ی مستقیم دارد.
از قانون اول که بر موازی بودن هر خط مماس برخطوط میدان با همین خطوط دلالت دارد ،مفهوم مشتق به ذهن می رسد.
قانون دوم نیز می تواند در رسم خطوط میدان برای دور کردن و نزدیک کردن خطوط به کار روند زیرا طبق قرارداد هرجا که ترکم خطوط بیشتر باشد میدان قوی تر است و برعکس.همچنین میتوانیم هر قدر که از خطوط میدان دور شدیم رنگ خطوط را نیز کمرنگ تر کنیم.
توضیحات کامل درباره ی فرمول ها و شیوه ی برنامه نویسی را در فایلی همراه این برنامه قرار داده ام. که از اینجا می توانید آن را دانلود کنید.

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

وقتی ماشین حساب مهندسی کم می آورد!
امروز یکی از هم
کلاسی هام از من خواست تا براش مقدار دقیق عبارت cos(3.141583304) را محاسبه کنم. خودش
با ماشین حساب مهندسی حساب کرده بود و عدد منفی یک رو جواب گرفته بود.خوب من هم با
ماشین حساب خودم امتحان کردم عدد منفی یک رو جواب گرفتم.البته
همون طور که واضحه این عدد همان عدد pi تا 8 رقم اعشار است.حالا
سوال اینجاست که چرا هم cos(pi)
و هم cos (3.141583304) دارای یک جواب اند!
خوب معلومه
دیگه!ماشین حساب ارقام رو گرد می کنه.تازه این ماشین حساب من تا 9 رقم اعشار بیشتر
رو حساب نمی کند و بقیه ی ارقام رو تا 1099± به صورت نماد علمی نمایش
می دهد.حالا ما چی کار کنیم!چه جوری مقدار دقیق این عبارت رو به دست بیاوریم؟
اولین چیزی که به ذهنم رسید این بود که برنامه ای بنویسم که عددx را بگیره و cos(x) را حساب کنه.چه جوری؟ دو راه
داشت.اولین راه استفاده از توابع همراه با کامپایلر بود که مثلا در اینجا من از torbo c++ استفاده کردم .می
تونستم تابع cos()
از سرفایل <math.h>
برای نوشتن این برنامه استفاده کنم.اما این تابع هم مقدار دقیق رو به دست نمیدهد
چون برای نوشتن همین تابع از سری تیلور تابع cos (x) با تعداد جمله های محدود
استفاده شده است.
خوب پس من باید
برنامه ای بنویسم که سری تیلور تابع cos(_) را تا تعداد جمله ی دلخواه به دست بیاورد و البته با
خطای و دقتی که ما می خواهیم.خوب قبلش یک گوشه ی چشمی هم به matlab می اندازیم تا ببینیم چقدر
دقیق برامون حساب می کنه.همون طور که در شکل 2 می بینید مقدار cos(3.141583304) را تا 60 رقم اعشار
با matlab حساب کردم که مقدار...-.99999999995629263000
رو جواب داد.در ادامه به این نتیجه می رسیم که این مقدار زیاد هم دقیق نیست!
این برنامه رو نوشتم
و مقدار این عبارت رو تا 50 رقم اعشار حساب کردم و برای این کار 200 جمله ی اول
سری cos(x)
را حساب کردم.مقدار این بود :
Cos( 3.141583304 ) = -.9999999999562925850654407521516198700002
در کامپیوتر من که
32 بیتی این عدد دقیق ترین عددی است که می توان به دست آورد.چون دقیقترین نوع داده
ای که برای ذخیره ی این عدد می توانم تعریف کنم از نوع long double است و این نوع دقتی بیشتر از این را به دست نمی دهد.در
ادامه وقتی برنامه ی نوشته شده توسط خودم را طوری تغییر دادم تا مقدار cos(x) را تا جملاتی حساب
کند که یبه عددی برسیم که باmatlab
به دست آمده بود و به این
نتیجه رسیدم که matlab
فقط 25 جمله از سری تیلور را حساب می کند!
Windows Win32 API Programming Using C++\C
قبل از این یک مقاله ی کامل درباره ی توابعAPI در زبان های سطح بالا نوشته بودم که از این جا می توانید دانلود کنید.اما بعد از اون تعداد زیادی از مراجعه کننده گان به وبلاگم مطلبی درباره ی کاربرد این توابع در زبان های c++/cخواسته بودند.من هم این مقاله ی آموزشی رو درباره ی برنامه نویسی با توابع API در ویندوز 32 بیتی نوشته ام.این را هم بگویم که این مقاله تنها مرجع فارسی درباره ی این توابع است.برای دانلود اینجا کلیک کنید.

رانگه کوتا مرتبه دو و چهار
خوب بلاخره امتحانام تموم شد و برگشتم.
. دانلود .pspice - creating netlists
خوب فایل مقاله ی آموزشی که تو پست قبلی گذاشته بودم رو جدا آپلود کردم تا کسانی که فقط فایل اصلی رو می خواهند و با توابع API آشنایی دارند دیگه مجبور نشوند همه ی فایل رو دانلود کنند.اینجا کلیک کنید.(در ضمن بگم که فقط دانشجویان و مهندسان برق)
PSpice
مهندسان و دانشجویان برق بخوانند.....
یک مقاله ی آموزشی برای ساختن برنامه هایی که فهرست شبکه (netlist) دلخواه ما را به
وجود بیاورند.netlist ها فایل هایی اند که اطلاعات مدار رسم شده ی
ما را به صورت فایل متنی ذخیره می کنند.این اطلاعات شامل نام و تعداد شاخه ها و
قطعات و پین ها و نوع قطعات و ولتاژ و
جریان شاخه ها و انواع تحلیل های انجام شده و نمودار های رسم شده و ....هستند.حال
اگر ما بخواهیم netlist ای متناسب با کار خودمان به وجود بیاوریم
باید بتوانیم برنامه ی آن را بنویسیم و آن را در محیط Capture و یا خارج ازآن
، اجرا کنیم. (برای مثال netlist ای که فقط نام عناصر پسیو و پین ها ی عناصر اکتیو و
شاخه های متصل به آنها را ذخیره کند و یا netlist ای که فقط نام عناصر دیجیتال را در خود ذخیره کند.)
برای دانلود اینجا کلیک کنید.
Tabulation method
اول پست
قبلی را بخوانید بعدش بیایید اینجا…
برای
پروژه ی مدار منطقی می خواستم برنامه ی قبلی رو (مبدل کدها) رو بنویسم.خوب
نوشتمش.اما یه جورایی ازش خوشم نیومد.بیشتر به درد برنامه نویسی و مخصوصا اسمبلی
می خورد.برای همین این برنامه رو نوشتم.
خوب تو
درس مدار منطقی (فصل سوم-کتاب مانور) برای ساده سازی توابع بولین دو راه پیشنهاد
شده.یکی استفاده از جدول Karnaugh که برای توابعی با تعداد متغیر کمتر از 5 تا به
درد می خوره. و دومین روش که برنامه اش رو نوشتم،( Quine-McCluskey ) که برای توابعی با تعداد متغییر های زیاد به کار
می رود.
خوب قبل
از شروع به نوشتن این برنامه یه search کردم تا ببینم قبلا این برنامه نوشته شده یا نه؟
قبل از من
چند نفر این برنامه رو نوشته بودند (به زبان های Delphi و Qbasicو vb) اما هر کدوم مشکلات و یا محدودیت هایی
داشتند.کار با برنامه ای که به زبان Qbasic نوشته شده بود
بسیار مشکل بود و اصلا User
friendly نبود.و فقط
توانایی مینیمم کردن توابعی با تعداد متغییر کمتر از 26 را داشت.(به دلیل عدم
توانایی اخذ حافظه از سیستم برای توابعی با تعداد متغیر بیشتر)
برنامه ای
که با vb نوشته شده بود کاملا classified بود و توسط آقای Allaedin Hallak در دانشگاه Computer Science, University of Science &
Technology نوشته شده بود.این برنامه از
list-link برای اخذ حافظه از سیستم استفاده می کرد و نسبتا برنامه
ی خوبی بود.اما یه مشکل بزرگ داشت!! الگوریتمش غلط بود.اولش که این برنامه رو دیدم
ناامید شدم و با خودم گفتم که دیگه نوشتن یک برنامه که قبلا نوشته شده فایده ای
نداره اما وقتی چند تا عدد (Minterm)
به برنامه دادم و دیدم که Error داد یه جورایی خوشحال شدم.(مشکل برنامه عدم
توانای در تشخیص انتخاب های نخستینی که تکرار شده بودند است.) خوب پس با این که
برنامه رو خیلی خوب نوشته بود ولی برنامه ای که غلط باشه که به درد نمی خوره!!!!
در ضمن در این برنامه برای وارد کردن اعداد راه مناسبی پیش بینی نشده بود،یعنی
کاربر برای وارد کردن 2000 مینترم باید همه ی آنها را یکی یکی وارد می کرد (خیلی خسته کننده است! و امکان
اشتباه در ورود اعداد بالا می باشد).تازه بالفرض که هر 2000 تاش رو وارد می کردیم
و فقط یک عدد رو اشتباهی دو بار وارد می کردیم.حالا تازه برنامه error می داد که عدد تکراری
وارد شده،کاربر باید بشینه و همه ی اعدادی رو که وارد کرده رو از اول بینه تا اون
عدد تکراری پیدا بشه.خلاصه اصول مهندسی نرم افزار رعایت نشده بود.
برنامه ی
سوم که به زبان دلفی بود ،مشکل از همه جاش میریخت.اصلا درباره اش هیچی
نمینویسم.البته هرسه این برنامه ها رو با برنامه ی خودم Upload کردم.خودتون قضاوت کنید.
خوب می
رسیم به برنامه ی خودم.چیزهایی که این برنامه رو خاص میکنه رو این زیر نوشتم.
1-توانایی
برنامه در اخذ حافظه از سیستم برای توابعی تا 180 متغییر.(فکرش رو کنید برای تابع 180
متغیره باید 2^180=1.5324955408658888583583470271503e54
خانه ی حافظه برای ذخیره ی متغییر ها (مینترم ها) از سیستم اخذ شود.تازه عدد بالا
رو باید ضرب در 2 هم کنیم.(برای ذخیره ی هر متغییر از نوع عدد صحیح 2 بایت فضا
لازم است.)
2-توانایی
وارد کردم بازه ای از اعداد.برای مثال برای وارد کردن مینترم های 1000 تا 2000
لازم نیست که این اعداد را تک تک وارد کنیم.در این برنامه دو راه برای ورود داده
ها پیش بینی شده است.
3-هوشمند
بودن برنامه.این برنامه قابلیت تشخیش و کنترل ورودیها را دارد.کاربر فقط توانایی
وارد کردن اعداد در بازه ی مشخص را دارد.همچنین برنامه وارد کردن اعداد تکراری را
نمی پذیرد.(امتحان کنید.!)
امکان
وارد کردن کاراکتر های غیر مجاز (مانند حروف الفبا و یا اعداد اعشاری) از کاربر
گرفته شده و برنامه اجرازه ی وارد کردن این ورودی ها را نمی دهد.
نوشتن این
برنامه حدود 10 روز زمان برد و 2 روز هم از چشم درد افتاده بودم تو خونه!!
خوب برای دانلود برنامه اینجا کلیک کنید.(فایل اجرایی هر سه برنامه ی دیگر نیز در این پوشه وجود دارد)
Universal converter
بعد از 17
روز تمام برنامه نویسی....
این
برنامه که برای نوشتنش مجبور شدم اسمبلی یاد بگیرم، توانایی تبدیل اعداد بین کدها
و مبناهای مختلف را دارد.
در این
برنامه کاربر با وارد کردن عدد در مبنای ده می تواند معادل باینری آن را به 7 صورت
که در زیر آورده شده است مشاهده کند.این 7 شکل در زیر آورده شده است.
1-مکمل یک ((1's complement
2-مکمل دو (2's complement )
3-هم طول
با مقدار(Variable Length
)
4–شانزده
بیتی (صحیح بدون علامت) ( (16 bit
5-ممیز شناور(Floating-Point)
6-ممیز
ثابت(Fixed-Point)
7- BCD : Binary Coded Decimal
همچنین
عدد وارد شده در مبنای شانزده نیز به نمایش در خواهد آمد.معادل ASCII ،عددِ در مبنای ده
نیز در textbox
چهارم نمایش داده می شود.
کاربر می
تواند با انتخاب گزینه های دیگر ( Decimal ,Binary ,Hex , ASCII) به تبدیل بین انواع مختلف به
صورت عکس بپردازد.برای مثال با انتخاب گزینه ی Binary و مشخص کردن نوع آن (یکی از 7 مورد بالا) ، معادل مبنای
ده و شانزده و همچنین کد اَسکی آن را دریافت کند.
این
برنامه کاملا به طور هوشمند نوشته شده است و تمامی قوانین حاکم بین اعداد و کدها
رعایت شده و به طور اتوماتیک توسط برنامه اجرا می شوند.برای مثال اگر کاربر برای
تبدیل عدد باینریی که ممیز شناور است تعدادی کمتر از 32 بایت را وارد کند،خود
برنامه طول عدد وارد شده را کنترل می کند و آن را به 32 بیت افزایش می دهد و یا به
عنوان مثالی دیگر اگر برای گرفتن معادل باینری عددی به صورت BCD ،عددی منفی در کادر decimal تایپ شود،برنامه به
صورت خودکار عدد منفی را تشخیص داده وآن را پس از مثبت نمودن،به BCD تبدیل می کند.(توجه
شود که BCD
استفاده شده در این برنامه از نوع غیر فشرده می باشد.)
بحث
درباره ی انواع این کدها و خصوصیات هر کدام در پستهای آینده.
همچنین
این برنامه قابلیت کنترل اعداد ورودی را دارد،به این معنی که در کادر های مخصوص
ورودی (برای مثال binary)
امکان وارد کردن عددی به جز 0 و 1 وجود ندارد.
در این
برنامه از بیش از 150 تابع مختلف استفاده شده است که از این میان 5 تابع از نوع
توابع API
هستند.(برای دانلود مقاله ای که درباره ی توابع API نوشته بودم اینجا کلیک کنید.)
و توابع باقی مانده عموما دارای پارامتر هایی از نوع string و نوع بازگشتی string هستند.تا آنجایی که مقدور بوده سعی کردم که از
ارسال پارامترها با ارجاع خودداری کنم و به همین دلیل این برنامه کاملا به صورت functional نوشته شده و هیچ
روالی در آن به کار برده نشده است.(به جز برای کنترل Active X ها)
فایل
اجرایی نسخه ی ارائه شده ی این برنامه (version:2.5.7 ) (نسخه ی بتا) را آپلود کردم و قسمتی از سورس کد آن را به صورت
PDF همراه آن آورده
ام.هنوز قسمت هایی از برنامه مانند help و قسمت های کوچک کنترل کننده ی بازه ی اعداد باقی مانده
که به زودی کامل خواهد شد.سورس کامل برنامه هم همراه نسخه ی کامل ارائه می شود.
این
برنامه قابل استفاده برای برنامه نویسان به زبان اسمبلی و عموما زبان های سطح
پایین و میانی است. همچنین آشنایی با طریقه ی برنامه نویسی این برنامه کمک خوبی
برای مهندسین برق و کامپیوتر برای فهم بهتر درس های مدار منطقی و میکروپروسسور خواهد
بود.
توجه:
تبدیلات و طول های اعداد باینری در این برنامه بر مبنای میکروپروسسور 8086 می
باشد.(طول اعداد مکمل یک و دو در طولهای BYTE,WORD,DWORD آورده شده است.
توضیحات تکمیلی درباره ی این برنامه را همراه با برنامه کامل و قابل نصب خواهم آورد.برنامه ی کامل قابل نصب بر روی ویندوز ویستا و لینوکس نیز می باشد.برای دانلود اینجا کلیک کنید.
محاسبات عددی
چهار
برنامه برای درس محاسبات عددی که یکی از اونها (انتگرال به روش سیمپسون) پروژه ی
محاسبات خودم بود و سه تای دیگر رو برای دوستام نوشته بودم رو براتون آپلود کردم .
این چهار
برنامه شامل موارد زیراند.
1-محاسبه
ی ریشه به روش دوبخشی
2-محاسبه
ی ریشه به روش نیوتون-رافسون
3-محاسبه
ی ریشه به روش نابجایی
4-انتگرالگیری
ازتابع cos(eX) به روش سیمپسون
برای
دانلود اینجا کلیک کنید.
تمرین های پایان ترم
این مطلب رو به درخواست برو بچه های مکانیک و عمران و صنایع و متالوژی دانشگاهمون نوشتم.

برنامه ی love
این برنامه رو به درخواست یکی از بازدید کنندگان نوشتم.
من دانشجوی ترم1 کامپیوترم.استادم گفته برنامه ای بنویسم که رشته ای را خوانده و تمام
کلمات 4 حرفی آن را با کلمه loveجایگزین کنه.مثلا i hate you بشه i love
you ........
برای دانلود برنامه اینجا کلیک کنید....
تبلیغات


