آموزش و بحث راجع به برنامه نویسی در محیط های بورلند c و توربو c و c free و ++notepad

navidkhob

عضو جدید
با سلام.
مدت ها است که زبان c به عنوان یک زبان برنامه نویسی قدرتمند ، در دانشگاه ها ، صنایع و تجارت مورد بهره برداری قرار می گیرد.وجود منابع آموزشی غنی c ، کمک شایانی به پیشرفت علم انفورماتیک در این مراکز است.
از طرفی با آن که کار در محیط هایی همانند DOS از قدرت بالاتری برخوردار است (چون می توان تعامل مستقیم با سخت افزار داشت) اما از لحاظ گرافیکی طرفداران زیادی ندارد و در این سالها برنامه نویسی در محیط های ویژوال بیشتر انجام می شود.در کل دانشجویان مهندسی برق و کامپیوتر خواسته یا ناخواسته در بسیاری از موارد با یکدیگر در تعامل هستند و در اغلب موارد این ارتباط و تعامل جداناشدنی خواهد بود.
بسیار خب بحث در این تایپک بر سر محیط های برنامه نویسی معرفی شده می باشد که در انتهای آنها پاسخ یا نتیجه یک برنامه نویسی مشخص خواهد شد.
در کل نرم افزار های جدید و پر کاربرد دیگری نیز وجود دارند همانندc free و ورژن های بالا ++notepad که جایگاه بحث راجع به آنها نیز خارج از این تایپک نخواهد بود و دوستانی که تمایل به آموزش آنها و یا ارائه نکات و تجربیات خود در آن موضوع هستند می توانند در این تایپک ،پست های مفید قرار بدهند.
در کل از تمامی دوستان خواهش می کنم که تنها هدف و انگیزه خود رو بر بالا بردن کیفیت کار برنامه نویسی برای دانشجویان مهندسی برق معطوف کرده و ما را در به اشتراک گذاری علمشان جزء مصرف کننده های نا محدود unlimited قرار بدن.
بار دیگر قوانین قابل احترام تالار :
از دادن پست تشکر خودداری کنید.(تنها با کلیک بر روی گزینه thanks تشکر خود رو اعلام کنید.)
در صورت ارسال پاسخی مشخص به پست شخصی مشخص از نقل قول استفاده کنند.

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

EECi

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

PHP:
Visual C++
void CTripodDlg::doMyImageProcessing(LPBITMAPINFOHEADER lpThisBitmapInfoHeader)
{
	// doMyImageProcessing:  This is where you'd write your own image processing code
	// Task: Read a pixel's grayscale value and process accordingly

	unsigned int	W, H;			// Width and Height of current frame [pixels]
	unsigned int    row, col;		// Pixel's row and col positions
	unsigned long   i;			// Dummy variable for row-column vector
	unsigned int	max_row;		// Row of the brightest pixel
	unsigned int	max_col;		// Column of the brightest pixel
        BYTE		max_val = 0;	        // Value of the brightest pixel

	// Values used for calculating range from captured image data
	// these values are only for a specific camera and laser setup
	const double	gain = 0.0024259348;	// Gain Constant used for converting
						// pixel offset to angle in radians
	const double	offset = -0.056514344;	// Offset Constant
	const double	h_cm = 5.842;		// Distance between center of camera and laser
        double		range;		        // Calculated range 
	unsigned int	pixels_from_center;	// Brightest pixel location from center
						// not bottom of frame
	
	char		str[80];	        // To print message
	CDC		*pDC;			// Device context need to print message

        W = lpThisBitmapInfoHeader->biWidth;	// biWidth: number of columns
        H = lpThisBitmapInfoHeader->biHeight;	// biHeight: number of rows
	
	for (row = 0; row < H; row++) {
		for (col = 0; col < W; col++) {

			// Recall each pixel is composed of 3 bytes
			i = (unsigned long)(row*3*W + 3*col);
			
			// If the current pixel value is greater than any other,                         // it is the new max pixel
			if (*(m_destinationBmp + i) >= max_val) 
			{
				max_val = *(m_destinationBmp + i);
				max_row = row;
				max_col = col;
			}
		}
	}
	// After each frame, reset max pixel value to zero
        max_val = 0;

	for (row = 0; row < H; row++) {
		for (col = 0; col < W; col++) {

			i = (unsigned long)(row*3*W + 3*col);
			
			// Draw a white cross-hair over brightest pixel in the output display
			if ((row == max_row) || (col == max_col)) 
				*(m_destinationBmp + i) = 
				*(m_destinationBmp + i + 1) = 
				*(m_destinationBmp + i + 2) = 255; 
		}
	}

	// Calculate distance of brightest pixel from center rather than bottom of frame
        pixels_from_center = 120 - max_row;

	// Calculate range in cm based on bright pixel location, and setup specific constants
	range = h_cm / tan(pixels_from_center * gain + offset);

	// To print message at (row, column) = (75, 580)
	pDC = GetDC();	

	// Display frame coordinates as well as calculated range
	sprintf(str, "Max Value at x= %u, y= %u, range= %f cm    ",max_col, max_row, range);
	pDC->TextOut(75, 580, str);
	ReleaseDC(pDC);
}
 

navidkhob

عضو جدید
تشریح برخی کلمات کلیدی (مختص تازه وارد ها)

تشریح برخی کلمات کلیدی (مختص تازه وارد ها)

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

PHP:
Visual C++
void CTripodDlg::doMyImageProcessing(LPBITMAPINFOHEADER lpThisBitmapInfoHeader)
{
    // doMyImageProcessing:  This is where you'd write your own image processing code
    // Task: Read a pixel's grayscale value and process accordingly

    unsigned int    W, H;            // Width and Height of current frame [pixels]
    unsigned int    row, col;        // Pixel's row and col positions
    unsigned long   i;            // Dummy variable for row-column vector
    unsigned int    max_row;        // Row of the brightest pixel
    unsigned int    max_col;        // Column of the brightest pixel
        BYTE        max_val = 0;            // Value of the brightest pixel

    // Values used for calculating range from captured image data
    // these values are only for a specific camera and laser setup
    const double    gain = 0.0024259348;    // Gain Constant used for converting
                        // pixel offset to angle in radians
    const double    offset = -0.056514344;    // Offset Constant
    const double    h_cm = 5.842;        // Distance between center of camera and laser
        double        range;                // Calculated range 
    unsigned int    pixels_from_center;    // Brightest pixel location from center
                        // not bottom of frame
    
    char        str[80];            // To print message
    CDC        *pDC;            // Device context need to print message

        W = lpThisBitmapInfoHeader->biWidth;    // biWidth: number of columns
        H = lpThisBitmapInfoHeader->biHeight;    // biHeight: number of rows
    
    for (row = 0; row < H; row++) {
        for (col = 0; col < W; col++) {

            // Recall each pixel is composed of 3 bytes
            i = (unsigned long)(row*3*W + 3*col);
            
            // If the current pixel value is greater than any other,                         // it is the new max pixel
            if (*(m_destinationBmp + i) >= max_val) 
            {
                max_val = *(m_destinationBmp + i);
                max_row = row;
                max_col = col;
            }
        }
    }
    // After each frame, reset max pixel value to zero
        max_val = 0;

    for (row = 0; row < H; row++) {
        for (col = 0; col < W; col++) {

            i = (unsigned long)(row*3*W + 3*col);
            
            // Draw a white cross-hair over brightest pixel in the output display
            if ((row == max_row) || (col == max_col)) 
                *(m_destinationBmp + i) = 
                *(m_destinationBmp + i + 1) = 
                *(m_destinationBmp + i + 2) = 255; 
        }
    }

    // Calculate distance of brightest pixel from center rather than bottom of frame
        pixels_from_center = 120 - max_row;

    // Calculate range in cm based on bright pixel location, and setup specific constants
    range = h_cm / tan(pixels_from_center * gain + offset);

    // To print message at (row, column) = (75, 580)
    pDC = GetDC();    

    // Display frame coordinates as well as calculated range
    sprintf(str, "Max Value at x= %u, y= %u, range= %f cm    ",max_col, max_row, range);
    pDC->TextOut(75, 580, str);
    ReleaseDC(pDC);
}



خیلی خیلی از آقا آیدین ممنونیم از بابت اینکه لطف می کنند و ما رو بی بهره نمی گذارند.

هدف از برنامه نویسی ،ورود داده ها به کامپیوتر ،پردازش داده ها و استخراج نتایج است.لذا داده ها نقش مهمی را در برنامه نویسی ایفا می کنند.
انواع داده هایی که خانواده زبان c با آن سروکار دارد :
char : برای ذخیره داده های کاراکتری

int : برای ذخیره اعداد صحیح

float :برای ذخیره اعداد اعشاری

double :برای ذخیره اعداد اعشاری بزرگتر از float
و همانطور که از نام های signed و unsigned مشخص است با اضافه کردن این دو به انواع داده می توان آن را با علامی یا بی علامت تعریف کرد.
همچنین برای تغییر در طول داده می توان از long و short استفاده کرد.
لازم به ذکر است قرار دادن // در جلوی خط برنامه منجر به آن می شود که شما بتوانید تشریحی برای خطوط برنامه هایتان داشته باشید(قابل توجه است که در این مورد این بخش توسط کامپایلر ترجمه نمی شود.و تنها برای آموزش استفاده می شود.)
اما کلمه کلیدی const که یه جورایی مخفف constant به معنی ثابت می باشد:
ثوابت مقادیری هستند که در برنامه وجود دارند ولی قابل تغییر نیستند.به عنوان مثال شما برنامه ای می خواهید بنویسید که مربوط به یک موضوع ریاضیات می باشد که از عدد پی pi یا همون 3.14 خودمون به کررات در خطوط برنامه استفاده خواهید کرد.در این صورت لزومی نداره هر بار این 3.14 رو تعریف کرده و همچنین گاهی پیش می آید که شما می خواهید این مقدار ثابت که در سرتاسر خطوط برنامتون استفاده شده مقداره خودش رو به یک مقدار جدید تغییر بده در این حال (یعنی در صورت استفاده نکردن از ثوابت) باید برید تمام اون مقادیر رو یکی یکی عوض کنید.
فرم کلی تعریف یک ثابت همانند تعریف متغیر می باشد.اینجا عملگر انتساب استفاده می کنیم.به شکل زیر:
مقدار = نام ثابت نوع داده const

اما ساختار های تکرار یا همون حلقه های خودمون.

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

(گام حرکت یا به روز رسانی متغیر حلقه ; شرط حلقه ; مقدار دهی اولیه به متغیر حلقه) for


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

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

navidkhob

عضو جدید
دانلود چند ebook مرتبط با عنوان تایپک

دانلود چند ebook مرتبط با عنوان تایپک

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

http://www.4shared.com/get/XWYAewMG/Learn_C_programming_language_i.html

http://www.4shared.com/document/3lqJpQNI/Learn_To_Program_With_C__2003_.html

http://www.4shared.com/document/tAd95d28/Learn_C_in_21_days.html

http://www.4shared.com/document/8y_b_vsF/Learn_C.html

http://www.4shared.com/document/85VT3Bc9/_ebook_pdf__Learn_Visual_C_6.html
 

navidkhob

عضو جدید
بحث راجع به یک برنامه

بحث راجع به یک برنامه

سلام دوستان.
ممنون میشم تشریحی بر خطوط برنامه زیر داشته باشید.
این برنامه پیدا کردن یک ریشه معادله به سه روش هستش:





 

پیوست ها

  • peida kardane rishe be 3 ravesh.txt
    1.8 کیلوبایت · بازدیدها: 0

hosseinassar

مدیر ارشد
یک کتاب مرجع خوب برای زبان c ،
کتاب c نویسنده ritchie
با تشکر از همکار محترم تالار کامپیوتر خانم negin17h که این کتاب معرفی کردند

دانلود
 

EECi

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

Similar threads

بالا