نرم افزار

نرم افزار طراحی شده با ویژوال بیسیک ۶ و دیتابیس SQL بصورت مبتنی بر سرور و شبکه 

متدهای گرافیکی مبتنی بر کدجاک

مناسب برای واحد منابع انسانی 

شماره تماس : 09127558422

کپی فایل در VB6

دستور کپی فایل از یک مسیز به مسیر دیگر در ویژوال بیسیک 6 

برای این کار از دستور Filecopy به شکل زیر می توان استفاده کرد:

 FileCopy "c:\a.bat", "c:\a.bat"

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

بدست آوردن شماره سریال هارد دیسک با برنامه نویسی ویژوال بیسیک 6

 

برنامه نویسی اندروید: دانلود عکس و نمایش آن در ایمیج ویو

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

کد:

 

برنامه نویسی ااندروید: تشخیص ایمیل صحیح

در بسیاری از فرم های ثبت نام دیده اید که اگر کاریری ایمیل را به فرمت نادرستی درج کند پیغام خطا به وجود میاد

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

* این کد مربوط به موتور Basic4andriod  می باشد

SubVerify_Email(MailasString)AsBoolen
Dim eMatch AsMatcher eMatch =Regex.Matcher("\w+@\w+\.\w+", eAddress)
Return eMatch.Find
EndSub

 

مقایسه زبان های برنامه نویسی

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

 

میزان استفاده از زبان های برنامه نویسی طبق آمار

زبان های برنامه نویسی به 4 دسته شئ گرا، رویه ای، کاربردی و منطقی دسته بندی می شوند. میزان استفاده از هر دسته در میان برنامه نویسان در جدول زیر قابل مشاهده می باشد. البته قابل ذکر می باشد که آمار جدول زیر تا سال 2013 میلادی می باشد. (Wavesoft)

جدول 1 - میزان استفاده از دسته های مختلف زبان های برنامه نویسی

دسته بندی زبان ها

میزان استفاده

Object-Oriented  (شئ گرا)

58.1%

Procedural (رویه ای)

37%

Functional (کاربردی)

3.2%

Logical (منطقی)

1.7%

 

 

جدول 2 - رتبه بندی شرکت TIOBE

رتبه

زبان

میزان استفاده

1

C

18.729%

2

Java

16.914%

3

C++

10.428%

4

Objective-C

9.198%

5

C#

6.119%

6

PHP

5.784%

7

VB (Visual Basic)

4.656%

8

Python

4.322%

9

Perl

3.276%

10

Ruby

1.670%

11

Java Script

1.536%

12

VB.NET

1.131%

13

Lisp

0.894%

14

Transact-SQL

0.819%

15

Pascal

0.805%

16

Bash

0.792%

17

Delphi/Object Pascal

0.731%

18

PL/SQL

0.708%

19

Assembly

0.638%

20

Lua

0.632%

 


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

 

شکل 1 - میزان پشتیبانی این زبان ها در هر ماه

 

شکل 2 - میزان به روز رسانی نرم افزارهایی که توسط این زبان ها توسعه داده شده اند در هر ماه

 


شکل 3 - میزان پروژه هایی که در هر ماه با این زبان ها تکمیل می شوند

 

همانطور که در نمودارها مشاهده می کنید بیشترین نرم افزارهای کاربردی روز دنیا با زبان های ++C ، C و Java در حال توسعه می باشند.  (برای اطلاعات بیشتر به سایت Stackoverflow مراجعه کنید.)

 

شکل 4 - میزان استفاده زبان های برنامه نویسی در سال 2014


نمودار زیر میزان استفاده از زبان های برنامه نویسی در مسابقات را نشان می دهد. (linkedin)

 

شکل 5 - میزان استفاده از زبان های برنامه نویسی در مسابقات

مقایسه زبان های برنامه نویسی از لحاظ سرعت

در نمودار های زیر اقدام به تست سرعت زبان های برنامه نویسی در یک کامپیوتر و استفاده از یک نوع الگورتیم شده است. این تست ها شامل حل پاسخ جدول Sudoku 25*20 و Matrix 1000*1000 می باشد و واحد زمان بر حسب ثانیه است. (Attractivechaos.github)

 


شکل 6 - Sudoku 25*20

 


شکل 7 - Matrix 1000*1000

 

نکته قابل توجه در این قسمت این می باشد که الگوریتم استفاده شده برای حل جدول Sudoku و Matrix می تواند بسیار بهینه تر و سریع تر از این باشد. الگوریتم استفاده شده برای همه زبانها یکسان می باشد.


نمودارهای زیر نشان دهنده میزان سرعت محاسبات عددی توسط زبان های C# و ++C می باشد. (برای بررسی و اطلاعات بیشتر نیز می توانید به سایت CodeProject مراجعه کنید.)

شکل 8 - محاسبات عددی با نوع داده ای مختلف در CPU های ARM

 

شکل 9 - جمع های عددی با نوع داده ای مختلف

 

مقایسه قابلیت ها

در ادامه قصد داریم از نظر قابلیت های کلیدی و مهم، چند زبان برنامه نویسی را مورد بررسی قرار دهیم.

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

 

جدول 3 - مقایسه قابلیت های مختلف چندین زبان برنامه نویسی

قابلیت/زبان

C++

C#

Java

Ruby

Visual Basic

Python

Perl

Object-Oriented

قدرتمند و متغیر

قدرتمند

قدرتمند

ضعیف

قدرتمند

قدرتمند

قدرتمند

Generic Classes

بله

خیر

خیر

-

خیر

-

-

Method Overloading

بله

بله

بله

خیر

خیر

خیر

خیر

Multithreading

بله

بله

بله

بله

خیر

بله

خیر

Pointer Arithmetic

بله

بله

خیر

خیر

خیر

خیر

خیر

Security

بسیار بالا

بالا

بسیار بالا

بالا

پایین

پایین

بالا

Functional

بله

بله

بله

بله

-

بله

بله

Procedural

بله

بله

بله

-

-

بله

بله

Level

سطح بالا – سطح پایین –(میانی)

سطح بالا

سطح بالا

سطح بالا

سطح بالا

سطح بالا

سطح بالا

Operation System (OS)

نا محدود

محدود

محدود

محدود

محدود

محدود

محدود

Flexibility

کاملا انعطاف پذیر - بالا

بالا

بالا

متوسط

متوسط

متوسط

متوسط

Speed

بسیار بالا

بالا

بالا

متوسط

متوسط

متوسط

متوسط

Hardware

اکثر سخت افزارها

محدود

محدود

محدود

محدود

محدود

محدود

 

تیم یار و زبان توسعه آن

همانطور که مشاهده کردیم، زبان C  و ++C از زبان های بسیار قدرتمند و انعطاف پذیر می باشند. باید به این موضوع نیز اشاره کرد که بسیاری از نرم افزار های کاربردی و سریع دنیا توسط این زبان ها توسعه یافته اند.

سایت mycplus تعدادی از بهترین نرم افزارهایی که با زبان ++C نوشته شده اند را نام برده است که عبارتند از:

  • Adobe systems: اکثر اپلیکیشن های اصلی سیستم ادوبی به زبان ++C  نوشته شده اند مانند Photoshop & ImageReady، Illustrator و Adobe Premier.
  • Google: برخی از اپلیکیشن های گوگل مانند Google file System و Google Chromium به زبان ++C نوشته شده اند.
  • Mozilla: مانند بروزر مازیلا فایرفاکس و email client Thunderbird 
  • Microsoft: مانند windows 95, 98, Me, 2000, XP, Microsoft Office, Internet Explorer, Visual Studio

  • MySQL
  •  Allias systme - Autodesk Maya
  • Winamp media player
  • 12D solutions
  • Bloomberg
  • callas software
  • Image softwares
  • Apple - OS X
  • Symbian OS

برای توسعه تیم یار از زبان C و ++C استفاده می شود و برای این انتخاب علاوه بر مقایسه های بالا می توان به چند ویژگی این 2 زبان به صورت زیر اشاره کرد:

  • به صورت جامع و مستقیم از چند نوع روش برنامه نویسی می توان استفاده کرد:
  • برنامه‌نویسی ساخت‌ یافته
  • برنامه‌نویسی شی‌گرا
  • انتزاع داده
  • برنامه‌نویسی جنریک یا عمومی
  • ++C یک زبان سطح میانی، به صورت همزمان شامل سطح بالا و سطح پایین می باشد
  • امکان انتخاب به برنامه نویس می دهد، حتی اگر این انتخاب اشتباه باشد
  • توانایی کنترل کامل سخت افزار توسط زبان C
  • پشتیبانی از اکثر سخت افزار های رایج
  • سرعت فوق العاده بالا، به دلیل امکان کد زنی در سطح پایین
  • دارای کتابخانه های بسیار فراوان و کامل در هر زمینه
  • پشتیبانی از اکثر پایگاه داده ها از قبیل SQL Server، Oracle، DB2، Firebird و ...
  • توسعه نرم افزار برای هر نوع سیستم عامل و پلتفرمی
  • امنیت بالا
  • برنامه نویسی به زبان ماشین و ریزپردازنده ها و میکروکنترلرها
  • انعطاف پذیری بالا

نرم افزار مدیریت فلش و پورت یو اس بی

نرم افزار کار با پورت USB و  مدیریت فلش مموری 

در چند ماه گذشته روی سورسی کار می کردیم که قابلیت مدیریت پورت یو اس بی را داشته باشد

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

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

کارهایی که ما قصد داشتیم انجام بدهیم این موارد بود...

1- اگر فلش مموری به سیستم اتصال پیدا کرد برنامه به صورت RUNTIME بتواند آن را تشخیص دهد

خب ما این کار از دو بخش تشکیل شد: تشخیص عادی فلش و قسمت بلادرنگ

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

برای بلادرنگ بودن هم از تایمر استفاده کردیم که کار راحتی بود ولی خب یک سری مشکلات هم داشت مثلا اشغال فضای حافظه تقریبا زیاد ...

2- در مرحله قبلی ما فقط می توانستیم یک فلش و با یک نام را کنترل کنیم و بلادرنگ تشخیص دهیم... حال اگر فلش دوم یا سوم هم به سیستم اتصال پیدا کرد چه باید می کردیم...؟

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

3- نمایش دادن ایکون مربوط به هر فلش و حالت گرافیکی برنامه

ما برای این قسمت در نظر گرفتیم که از آیکون فلش مموری استفاده کنیم و بگوییم که اگر فلش اول به سیستم متصل شد ایکون مربوط به این فلش در کنار system tray  برنامه ظاهر شود... البته ن در خود سیستم تری . بلکه در قسمت بالای آن به صورت جداگانه ای نمایان شود... همین طور برای فلش های بعدی هم همین کار را انجام دادیم...مشکلی که در این جا داشتیم بدست آوردن مقیاس آن منطقه بود یعنی ما باید آیکون یا همان عکس فلش را در محلی در سمت راست و قسمت پایین قرار می دادیم بطوری که روی نوار وظیفه نیفتد... خب این کار را با دستور screen به راحتی انجام دادیم...یکم جمع و تفریق به این قسمت اضافه کردیم تا اگر فلش بعدی متصل شد درست کنار ایکون فلش قبلی نمایان شود...

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

1- حذف حداقل یک فایل مخرب به طور مثال فایل اتوران از فلش وصل شده بصورت بلادرنگ و قبل از باز شدن فلش.... 

2- ایجاد یک موتوز جست جوی محتوایی فلش ... طریقه کارش هم این طور در نظر گرفته بودیم که اگر فلش متصل شد به صورت خودکار تمامی فایل های داخل آن به صورت تفکیک شده در اختیار کاربر قرار بگیرد و یا کاربر بنواند با سرچ کردن موارد خود را پیدا کند... البته مواردی هم بود که میخواستیم در این قسمت اضافه کنیم مثلا برنامه تشخیص دهد که فلش وارد شده در حال پر شدن است و به کاربر پیغام دهد و اگر کاربر اجازه داد تمامی پوشه ها را به صورت زیپ کند تا فلش حجم بیشتری پیدا کند... و مواردی دیگری مانند این ها

3- در بحث امنیتی میخواسیم مواردی ایجاد کنیم مثلا پاک کردن رد و پای فلش وصل شده از سیستم... خب همه ما میدانیم که وقتی فلش یا هر وسیله ای به سیستم متصل می شود یک رد و پا از ان در رجیستری ثبت می شود. مثلا برای فلش نام فلش و زمان وصل شدن آن به سیستم در رجیستری ثبت می شود. ما میخواستیم با اجازه کاربر این مورد را پاک کنیم ... 

4- ...

 

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

دوستانی که میخوان این برنامه را تا آنجایی که ادامه دادیم دریافت کنند و به عنوان پروژه روی آن کار کنند به ایمیل بنده اطلاع دهند... و اگر نکته یا مورد یا ایده خاصی دارید که بتواند به این پروژه کمک کنند لطفا در نظرات اطلاع دهید...

نمونه سوال برنامه نویسی شی گرا با سی شارپ

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

فهرست:

برنامه ای بنویسید که اعداد بین دو عدد را نمایش دهد

کمینه و بیشینه در یک آرایه را مشخص کند

نمایش اعداد زوج و اعداد فرد کوچکتر از 50

تشخیض مثلث متساوی الضلاع و متساوی الساقین

جستجو یک عدد در یک آرایه

جستجو یک دانشجو در آرایه بر حسب شماره دانشجویی

جمع و ضرب دو عدد

برنامه ای بنویسید که سن فرد را دریافت کند و پیر وجوان بودن آن را مشخص کند

برنامه ای بنوسید که 0 دانشجو و 4درس را وارد کرده ومعدل هر دانشجو و معدل کل را حساب کند ونمایش دهد

تعداد تکرار دو حلقه فور تو درتو

تعداد تکرار یک عدد در یک آرایه

مجموع خانه های یک آرایه

برنامه محاسبه فاکتوریل یک عدد

برنامه ای بنوسید که اعداد 11 و 11 و 33 و… نمایش دهد

معکوس یک عدد

تابع سازنده با مقدار ورودی

دستور جستجو و درج در یک آرایه از نوع دانشجویان

مجموع خانه های آرایه در برنامه اصلی

مربع اعداد یک تا 10

نمایش عدد اول کوچکتر از عدد ورودی

توان یک عدد

مقدار دهی به خانه های آرایه دوبعدی

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

نمایش اعداد 1 تا 50

نمایش اعداد از 50 تا 1

نمایش اعداد به توان 1

نمایش اعداد مضرب 2 از 100 به 1

نمایش روزه های هفته

نمایش یک خانه از آرایه

مثال زیگما

تعریف دانشجو به صورت خصوصی و مقدار دهی به آن

مرتب سازی ادقام آرایه ها

مقدار دهی به کلاس کارمند

برنامه جایگشت

دانلود