Presentation is loading. Please wait.

Presentation is loading. Please wait.

برنامه نویسی کامپیوتر computer Programming

Similar presentations


Presentation on theme: "برنامه نویسی کامپیوتر computer Programming"— Presentation transcript:

1

2 برنامه نویسی کامپیوتر computer Programming
Variable & Data Representation

3 هدف از برنامه نویسی ورود اطلاعات و داده ها به کامپیوتر پردازش اطلاعات
خروج نتایچ نحوة نمایش اطلاعات در کامپیوتر؟!! پردازش داده‌هاي ورودي داده‌هاي خروجي

4 Analog and Digital Signal
Analog system The physical quantities or signals may vary continuously over a specified range. Digital system The physical quantities or signals can assume only discrete values. Greater accuracy X(t) X(t) t t Analog signal Digital signal

5 Binary Digital Signal An information variable represented by physical quantity. For digital systems, the variable takes on discrete values. Two level, or binary values are the most prevalent values. Binary values are represented abstractly by: Digits 0 and 1 Words (symbols) False (F) and True (T) Words (symbols) Low (L) and High (H) And words On and Off Binary values are represented by values or ranges of values of physical quantities. Binary Digit  Bit Group of bits  Binary Codes 4 Bit  Nibble 8 Bit  Byte 16 Bit  Word V(t) Logic 1 undefine Logic 0 t Binary digital signal

6 Number Systems Base(Radix) Positional notation
The total number of different digits required to represent a number. Base 16 (Hexadecimal, Hex) 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F Base 10 (Decimal)(Human word) 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 Base 8(Octal) 0, 1, 2, 3, 4, 5, 6, 7 Positional notation MSD(Most Significant Digit) LSD(Least Significant Digit)

7 Decimal Number System 5 1 2 7 4 Base (also called radix) = 10
10 digits { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 } Digit Position Integer & fraction Digit Weight Weight = (Base) Position Magnitude Sum of “Digit x Weight” Formal Notation 1 -1 2 -2 5 1 2 7 4 10 1 0.1 100 0.01 500 10 2 0.7 0.04 d2*B2+d1*B1+d0*B0+d-1*B-1+d-2*B-2 (512.74)10

8 Octal Number System Base = 8 Weights Magnitude Formal Notation 5 1 2 7
8 digits { 0, 1, 2, 3, 4, 5, 6, 7 } Weights Weight = (Base) Position Magnitude Sum of “Digit x Weight” Formal Notation 1 -1 2 -2 8 1/8 64 1/64 5 1 2 7 4 5 *82+1 *81+2 *80+7 *8-1+4 *8-2 =( )10 (512.74)8

9 Hexadecimal Number System
Base = 16 16 digits { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F } Weights Weight = (Base) Position Magnitude Sum of “Digit x Weight” Formal Notation 1 -1 2 -2 16 1/16 256 1/256 1 E 5 7 A 1 * *161+5 *160+7 * *16-2 =( )10 (1E5.7A)16

10 Binary Number System Base = 2 Weights Magnitude Formal Notation
2 digits { 0, 1 }, called binary digits or “bits” Weights Weight = (Base) Position Magnitude Sum of “Bit x Weight” Formal Notation Groups of bits bits = Nibble 8 bits = Byte 1 -1 2 -2 1/2 4 1/4 1 1 1 1 *22+0 *21+1 *20+0 *2-1+1 *2-2 =(5.25)10 (101.01)2

11 The Power of 2 n 2n 20=1 1 21=2 2 22=4 3 23=8 4 24=16 5 25=32 6 26=64 7 27=128 n 2n 8 28=256 9 29=512 10 210=1024 11 211=2048 12 212=4096 20 220=1M 30 230=1G 40 240=1T Kilo Mega Giga Tera

12 Decimal Addition Table
Familiar to every one Hard for computer computation

13 Decimal Multiplication Table
Familiar to every one Hard for computer computation

14 Binary Addition and Multiplication Tables
Very Simple table We should learn to compute in base 2

15 Octal Addition Table Unfamiliar Hard to learn
It is better to use base 10 as an intermediate base

16 Octal Multiplication Table
Unfamiliar Hard to learn It is better to use base 10 as an intermediate base

17 Hexadecimal Addition Table
Very Hard to learn It is better to use base 10 as an intermediate base

18 Hexadecimal Multiplication Table
Very Hard to learn It is better to use base 10 as an intermediate base

19 Addition 1 1 Carry 5 5 + 6 8 1 2 3 = 13≥ Base  Subtract a Base
Decimal Addition 1 1 Carry 5 5 + 6 8 1 2 3 = 13≥ Base  Subtract a Base

20 Binary Addition Column Addition 1 1 1 1 1 1 1 1 1 1 1 = 61 = 23 + 1 1 1 1 1 1 1 = 84 ≥ (2)10

21 Binary Subtraction 1 2 = (10)2 2 2 2 1 1 1 1 − 1 1 1 1 1 1 1 1
Borrow a “Base” when needed 1 2 = (10)2 2 2 2 1 1 1 1 = 77 = 23 1 1 1 1 1 1 1 1 = 54

22 Binary Multiplication
Bit by bit 1 1 1 1 x 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

23 Number Base Conversions
Evaluate Magnitude Octal (Base 8) Evaluate Magnitude Decimal (Base 10) Binary (Base 2) Hexadecimal (Base 16) Evaluate Magnitude

24 Decimal (Integer) to Binary Conversion
Divide the number by the ‘Base’ (=2) Take the remainder (either 0 or 1) as a coefficient Take the quotient and repeat the division Example: (13)10 Quotient Remainder Coefficient 13 / 2 = a0 = 1 6 / 2 = a1 = 0 3 / 2 = a2 = 1 1 / 2 = a3 = 1 Answer: (13)10 = (a3 a2 a1 a0)2 = (1101)2 MSB LSB

25 Decimal (Fraction) to Binary Conversion
Multiply the number by the ‘Base’ (=2) Take the integer (either 0 or 1) as a coefficient Take the resultant fraction and repeat the division Example: (0.625)10 Integer Fraction Coefficient 0.625 * 2 = a-1 = 1 0.25 * 2 = a-2 = 0 0.5 * 2 = a-3 = 1 Answer: (0.625)10 = (0.a-1 a-2 a-3)2 = (0.101)2 MSB LSB

26 Decimal to Octal Conversion
Example: (175)10 Quotient Remainder Coefficient 175 / 8 = a0 = 7 21 / 8 = a1 = 5 2 / 8 = a2 = 2 Answer: (175)10 = (a2 a1 a0)8 = (257)8 Example: (0.3125)10 Integer Fraction Coefficient 0.3125 * 8 = a-1 = 2 0.5 * 8 = a-2 = 4 Answer: (0.3125)10 = (0.a-1 a-2 a-3)8 = (0.24)8

27 Binary − Octal Conversion
0 0 0 1 0 0 1 2 0 1 0 3 0 1 1 4 1 0 0 5 1 0 1 6 1 1 0 7 1 1 1 8 = 23 Each group of 3 bits represents an octal digit Example: Assume Zeros ( )2 ( )8 Works both ways (Binary to Octal & Octal to Binary) It is easier to use Octal as an intermediate to convert a number from decimal to binary

28 Binary − Hexadecimal Conversion
1 2 3 4 5 6 7 8 9 A B C D E F 16 = 24 Each group of 4 bits represents a hexadecimal digit Example: Assume Zeros ( )2 ( )16 Works both ways (Binary to Hex & Hex to Binary)

29 Octal − Hexadecimal Conversion
Convert to Binary as an intermediate step Example: ( )8 Assume Zeros Assume Zeros ( )2 ( )16 Works both ways (Octal to Hex & Hex to Octal)

30 Decimal, Binary, Octal and Hexadecimal
00 0000 01 0001 1 02 0010 2 03 0011 3 04 0100 4 05 0101 5 06 0110 6 07 0111 7 08 1000 10 8 09 1001 11 9 1010 12 A 1011 13 B 1100 14 C 1101 15 D 1110 16 E 1111 17 F

31 Signed Binary Numbers To represent negative integers, we need a notation for negative values. It is customary to represent the sign with a bit placed in the leftmost position of the number. The convention is to make the sign bit 0 for positive and 1 for negative. Example: Table 1.3 lists all possible four-bit signed binary numbers in the three representations.

32 Signed Binary Numbers

33 IEEE754 Floating point Single precision(32 bit) Normalized mantissa
31 30 23 22 S Exponent Fraction(Mantissa) Normalized mantissa Fraction is actually 24 bits Hidden 1 فقظ در حالتی که توان همه صفر است یعنی 147- حالت denormalized است Number interpretation Bias +127

34 IEEE754 Floating point Single precision(32 bit) Special cases
31 30 23 22 S Exponent Fraction(Mantissa) Special cases Exponent 255 is reserved for special cases 7F  + FF  - 7F8xxxxx  NAN, xxxxx /= 0 FF8xxxxx  -NAN, xxxxx /= 0  +0  -0

35 IEEE754 Floating point Double precision(64 bit) Bias  1023
63 62 52 51 S Exponent Fraction(Mantissa) Bias  1023 Allowing a range of E.g Ultra high precision 419DF6CEEE9D2698

36 American Standard Code for Information Interchange (ASCII) Character Code
26 lowercase letters 26 uppercase letters 32 special printable characters 10 numerical symbols 34 nonprintable character for control Total 128 codes Binary Codes(ASCII)

37 ASCII ASCII Control character Codes Format effectors
Information separators Communication controls

38 متغییر(Variable) به طور کلی داده های ورودی و داده های میانی (داده های حاصل از پردازش های میانی) و داده های خروجی همگی باید در داخل کامپیوتر در محلی ذخیره شوند. کامپیوتر از حافظة برای ذخیرة این داده ها استفاده میکند. اگر داده ای متغییر باشد یعنی مقدار آن در شروع برنامه مشخص نباشد و یا در حین برنامه مرتباً مقدار آن عوض شود داخل حافظة RAM قرار میگیرد. داده های ثابت که مقدار آنها در شروع برنامه مشخص است و در حین برنامه نیز عوض نمیشوند در داخل حافظة ROMقرار میگیرند. کامپیوتر برای دستیابی به حافظه از آدرس آنها استفاده میکند. آدرس ها بسته به حجم حافظه اعداد 32 تا 64 بیتی هستند. استفاده از آدرس برای برنامه نویس بسیار سخت است و خوانایی برنامه را کم میکند. بنابراین ما متغیرها و ثوابت اسم را اسم گذاری میکنیم.

39 تعریف متغییرها نام متغییر نوع داده; نوع داده مشخص کنندة
مفهوم محتویات داخل متغییر نحوة ذخیره متغییر در داخل حافظه به عنوان مثال 8 بیتی، 16 بیتی، .... چگونگی بازیابی متغیر از حافظه چگونگی انجام محاسبات نام متغییر در واقع اسمی است که ما به خانة حافظه ای که متغییر در آن وجود دارد میدهیم. ترکیبی از حروف A-Z و a-z و ارقام و under line _ اولین حرف نمیتواند عدد باشد. طول مهم نیست ولی 31 کاراکتر اول استفاده می شود.

40 نامگذاری متغییر از نامهای تک حرفی و کوتاه خودداری کنید.
نام متغییر باید تا حد امکان با نوع استفاده و محتویات آن متغییر ارتباط داشته باشد. برای نامگذاری متغییرها حتما فکر کنید و به اندازة کافی وقت بگذارید. اسم های چند بخشی را با استفاده از تغییر حروف به بزرگ و یا Underline از هم جدا کنید. thermalcoefficient ThermalCoefficient Thermal_Coefficient

41 انواع داده در زبان C به طور کلی 5 نوع داده در C وجود دارد. 1. char
2. int 3. float 4. double 5. void in C++ there is another type named bool bool exists in the current C - C99, but not in C89/90. In C99 the native type is actually called _Bool, while bool is a standard library macro defined in stdbool.h (which expectedly resolves to _Bool). Objects of type _Bool hold either 0 or 1, while true and false are also macros from stdbool.h.

42 char معمولاً برای ذخیرة حروف استفاده میشود. (کد اسکی حروف) 8 بیتی است.
علامت دار است. محدودة قابل قبول 128- تا 127 اگر عدد در محدودی قابل قبول نباشد کامپایلر تولید اخطار(warning) از نوع سرریز (Over flow) میکند و در زمان اجرا نتیجه درست نخواهد بود. char M = ‘d’; char N; N = ‘R’; char X = 120;

43 int برای ذخیرة اعداد صحیح(integer) استفاده میشود.
16 بیتی و یا 32 بیتی است. بسته به نوع ماشین و کامپایلر دارد. علامت دار است. در رنج تا برای حالت 16 بیتی در رنج تا برای حالت 32 بیتی int A, B, C = 1560; A= -2100; C= B + A; از تعریف چند متغییر در یک خط بپرهیزید. در هر خط فقط یک متغییر تعریف کنید.

44 float برای ذخیرة اعداد حقیقی(ممیز شناور) استفاده میشود. 32 بیتی است.
در رنج تا 1038 دارای 7 رقم اعشار دقت(بسته به اندازه قسمت صحیح نیز دارد.) float Area; float Radius = 15.8; Area = Radius * Radius * 3.14; دقت 7 رقم اعشار در واقع تعداد ارقام بعد از ممیز بعد از نرمالیزه کردن عدد است نرمالیزه کردن یعنی شیفت ممیز به اولین عدد غیر صفر به گونه ای که فقط یک رقم قبل از ممیز باشد.

45 double دارای دقتی بیشتر از نوع float است. 64 بیتی است.
در رنج تا 10308 دارای 15 رقم اعشار دقت(بسته به اندازه قسمت صحیح نیز دارد.) double Pi; همیشه با توجه به نیاز برنامه متغییرها را تعریف کنید. متغییرهای بزرگ تر منابع بیشتری را مصرف میکنند در متغییرهای بزرگ تر معمولا سرعت اجرای برنامه کندتر خواهد شد(بسته به ساختار ماشین و امکانات آن دارد)

46 void دادة تهی بدون نوع دارای کاربردهای متنوع
مثلاً تابعی که هیج مقداری را بر نمیگرداند. در مباحث مربوط به اشاره گرها

47 انواع دیگر داده ها با استفاده از کلمات زیر میتوان انواع دیگری از داده نیز تعریف کرد. علامت دار (signed) بدون علامت (unsigned) long short نوع char را میتوان با signed و unsigned استفاده کرد. نوع int را میتوان با signed ، unsigned ، long و short استفاده کرد. نوع double را میتوان با long استفاده کرد.

48 بازه قابل قبول اندازه به بیت نوع
-128 to 127 8 char -128 t0 127 signed char 0 t0 255 unsigned char بسته به تعداد بیت 16 (32) int signed int unsigned int to 32767 16 short int signed short int 0 to 65535 unsigned short int to 32 long int signed long int 0 t unsigned long int (7 رقم اعشار دقت) رنج تقریبی 1038 to 10-38 float (15 رقم اعشار دقت) رنج تقریبی to 64 double (19 رقم اعشار دقت) to 80 long double

49 standard integer types
برای جلوگیری از مشکلات مربوط به مشخص نبودن طول متغییر از نوع int انواع استانداردی از این نوع در فایل stdint.h تعریف شده است. int8_t int16_t int32_t int64_t uint8_t uint16_t uint32_t uint64_t

50 Standard integer types
int_least8_t, int_fast8_t int_least16_t, int_fast16_t int_least32_t, int_fast32_t int_least64_t, int_fast64_t uint_least8_t, uint_fast8_t uint_least16_t, uint_fast16_t uint_least32_t, uint_fast32_t uint_least64_t, uint_fast64_t intmax_t uintmax_t

51 مقدار دادن به متغییرها 1. هنگام تعریف متغییر(مقدار اولیه)
int a = 125, b=-35, c; char m = ‘b’, n = ‘H’, z = 120; float q = 12.5; 2. با استفاده از دستور انتصاب (=) int a; int b; int sum; a = 12; b = 25; c = a + b;

52 مقدار دادن به متغییرها 3. با استفاده از دستورات ورودی scanf()
getchar() getch() int Num1, Num2; printf("Please enter two numbers\n"); scanf("%d%d", &Num1, &Num2); printf("Your numbers are %d and %d“, Num1, Num2);

53 تعریف ثوابت با استفاده از دستور پیش پردازندة #define
#define PI (3.14) #define STUDENT_ID ( ) دقت کنید دستورات پیش پردازنده نیاز به ; در انتهای هر خط ندارند. دستورات پیش پردازنده با # شروع میشوند. این روش تعریف را تعریف ماکرو(Macro) میگویند. بهتر است ماکروها را با حروف بزرگ اسم گذاری کنیم. مزیت استفاده از ماکروها تغییر راحت مقادیر ثابت بدون نیاز به بازنگری کل کد است. در هر خط فقط یک ماکرو میتوان تعریف کرد. عادت کنید مقادیر ماکروها را در پرانتز بنویسید.

54 تعریف ثوابت با استفاده از دستور const
const float PI = 3.14; const long unsigned int STUDENT_ID = ; const int M = 10, N = 30; دقت کنید این نوع تعریف نیاز به ; در انتهای هر خط دارد. میتوان همانند تعریف معمولی متغییرها در یک خط چندین ثابت تعریف کرد. اگر در طول برنامه سعی کنید به ثوابت مقدار دهی کنید کامپایلر از شما خطا خواهد گرفت.

55 عملگرها و عملوندها عملگر(Operator) عملوند(Operand) انواع عملگرها
نمادهایی که عملیات خاصی را روی متغییرها انجام می دهند. عملگرهای تکی(Unary Operators) عملگرهای دوتایی(Binary Operators) عملوند(Operand) متغییرهایی که عملیات برروی آنها انجام می شود. انواع عملگرها 1. عملگرهای محاسباتی 2. عملگرهای رابطه ای 3. عملگرهای منطقی 4. عملگرهای بیتی

56 عملگرهای محاسباتی Assume A = 10 , B = 20 Operator Description Example
Unary negation -A  (Unary) + Adds two operands. A + B  (Binary) Subtracts second operand from the first. A − B  (Binary) Multiplies both operands. A ∗ B  200 (Binary) Divides numerator by de-numerator. B ∕ A  (Binary) % Modulus Operator and remainder of after an integer division. B % A  (Binary) ++ Increment operator increases the integer value by one. A++  (Unary) -- Decrement operator decreases the integer value by one. A--  (Unary)

57 عملگرهای افزایش و کاهش این عملگرها را می توان به دو صورت در عبارات محاسباتی به کار برد: عملگر قبل از عملوند  ++A یا --A در این حالت ابتدا عملگر برروی متغییر عمل کرده و مقدار متغییر به روزرسانی میشود و سپس از این مقدار جدید در محاسبات استفاده میشود. عملگر بعد از عملوند  A++ یا A-- در این حالت ابتدا مقدار قبلی متغییر در محاسبات شرکت میکند و سپس عملگر برروی متغییر عمل کرده و مقدار متغییر به روزرسانی میشود. int x, y, m; x= 10; y= 15; m = y x; m = 26 x= 11 y=16 توصیه میشود به منظور خوانایی بیشتر برنامه از این روش کد نویسی استفاده نکنید.

58 تقدم عملگرهای محاسباتی
int m, x=6, y=10; m = x + y/2 *3; m ? () بالاترین تقدم ++ و -- -(منهای یکانی) * / % + - پایین ترین تقدم عملگرهای هم اولویت به ترتیب تقدم مکانی از چپ به راست m = 21

59 عملگرهای رابطه ای(Relational operators)
Assume A = 10 , B = 20 Operator Description Example == Checks if the values of two operands are equal or not. If yes, then the condition becomes true. (A == B) is not true. != Checks if the values of two operands are equal or not. If values are not equal then the condition becomes true. (A != B) is true. > Checks if the value of left operand is greater than the value of right operand. If yes, then the condition becomes true. (A > B) is not true. < Checks if the value of left operand is less than the value of right operand. If yes, then the condition becomes true. (A < B) is true. >= Checks if the value of left operand is greater than or equal to the value of right operand. If yes, then the condition becomes true. (A >= B) is not true. <= Checks if the value of left operand is less than or equal to the value of right operand. If yes, then the condition becomes true. (A <= B) is true.

60 عملگرهای منطقی(Logical operators)
برروی عبارتهای منطقی عمل میکنند. عبارتهای منطقی فقط دارای دو ارزش درستی و نادرستی هستند. در زبان C مقدار صفر دارای ارزش نادرستی و مقدار غیر صفر دارای ارزش درستی است. حاصل این عملگرها یکی از دو مقدار منطقی درستی و یا نادرستی است. معمولاً از این عملگرها به همراه عملگرهای رابطه ای در دستورات شرطی برای تصمیم گیری استفاده می شود. مثال نام عملگر !x نقیض (not) ! x>y && m<p و (and) && x>y || m<p یا (or) ||

61 تقدم عملگرهای منطقی و رابطه ای
! بالاترین تقدم > >= < <= == != && || پایین ترین تقدم x>y && m<p

62 عملگرهای بیتی این عملگرها فقط برروی متغییرهای از نوع int و char عمل میکنند. بیت به بیت بر محتویات متغییرها عمل میکنند. قابلیت انعطاف زیادی به زبان C میدهند بسیاری از قابلیتهای زبان اسمبلی بدین وسیله در زبان C قابل پیاده سازی است. در برنامه نویسی میکروکنترلرها و میکروپروسسورها در سیستمهای نهفته بسیار کاربرد دارند. شبیه سازی گیت های منطقی

63 Logic gates

64 Logic gates

65 عملگرهای بیتی مثال نام عملگر C = A & B; AND & C = A | B; OR | C = A^B;
XOR ^ C = ~B; NOT ~ C= B>>4; Right shift >> C=B<<3; Left shift << شیفت به سمت راست یک شیفت محاسباتی است. بدین معنی که اگر عدد منفی باشد از سمت چپ یک وارد میشود تا بیت علامت عوض نشود.

66 عملگر ? <عبارت 3> : <عبارت 2> ؟ <عبارت 1> = متغییر
<عبارت 3> : <عبارت 2> ؟ <عبارت 1> = متغییر عبارت اول مورد ارزیابی قرار میگیرد اگر نتیجه این ارزیابی درست باشد آنگاه عبارت دوم محاسبه می شود و حاصل آن در متغییر قرار میگیرد. اگر نتیجه این ارزیابی درست نباشد آنگاه عبارت سوم محاسبه میشود و حاصل آن در متغییر قرار میگیرد. int x, y; x = 5; y = x>5 ? x*2 : x*5;

67 عملگر کاما (,) نکته از این روش استفاده نکنید.
;(<عبارت 2> , <عبارت 1>) = متغییر انجام چند عمل در یک دستور ابتدا عبارت یک محاسبه میشود. عبارت دو از نتیجه محاسبات عبارت یک استفاده میکند. نتیجه حاصل از محاسبات عبارت دو در متغییر قرار میگیرد. int x, y; y = (x=2, x*4+5); نکته از این روش استفاده نکنید.

68 عملگر sizeof طول یک متغییر و یا یک نوع داده بر حسب تعداد بایت را برمیگرداند. sizeof(متغییر) sizeof(نوع داده) int y, x, z; x = sizeof(y); z = sizeof(int); y = sizeof(long double); در کتاب اندازة long double برابر با 80 بیت ذکر شده است که اگر از این عملوند در محیط code block استفاده کنیم مشاهده می شود 96 بیتی است.

69 عملگرهای ترکیبی از ترکیب عملگرهای منطقی با عملگر انتصاب = معادل مثال
x = x+5 x+=5 += x = x-y x-=y -= x = x * (y + m) x*= y+m *= x = x/y x/= y /= x = x%y x%= y %= x = x & y x&=y &= x = x|y x|=y |= در کتاب ناقص است و دو عملگر منطقی ذکر نشذه است.

70 تقدم عملگرها () بالاترین تقدم ! ~ sizeof * / % + - << >> < <= > >= == != & ^ | && || ? = += -= *= /= %= &= |= پایین ترین تقدم C operator precedence table

71 تبدیل انواع دو نوع تبدیل نوع وجود دارد
1- تبدیل نوع ضمنی (Implicit type conversion) این تبدیل به صورت اتوماتیک و توسط کامپایلر انجام می شود. این تبدیل در عبارات محاسباتی و یا منطقی به صورت اتوماتیک انجام میشود. همیشه انواع کوچکتر به بزرگتر تبدیل میشوند تا نتیجه درست باشد و اطلاعات از بین نرود. 2- تبدیل نوع آشکار و صریح (Explicit type conversion) Type casting تبدیل نوع در عملیات انتساب مفهوم Checked, Unchecked, Bit در حالت اول دو طرف چک می شوند و اگر اطلاعات از دست برود تولید خطا میکند در روش دوم چک نمیشود و عملکر تعریف نشده است در روش دوم عینا بیتها منتقل میشوند

72 تبدیل نوع ضمنی یا اتوماتیک
char -> short int -> int -> unsigned int -> long -> unsigned long -> float -> double -> long double اگر یکی از عملوندها از نوع long double باشد عملوند دیگر نیز به long double تبدیل میشود. وگرنه اگر یکی از عملوندها از نوع double باشد عملوند دیگر نیز به نوع double تبدیل میشود. وگرنه اگر یکی از عملوندها از نوع float باشد عملوند دیگر نیز به نوع float تبدیل میشود. وگرنه اگر یکی از عملوندها از نوع unsigned long باشد دیگری نیز به این نوع unsigned long تبدیل میشود. وگرنه اگر یکی از عملوندها از نوع long باشد عملوند دیگر نیز به long تبدیل میشود. در تبدیل نوع از نوع intبه نوع unsigned intبه شرطی انجام می شود که هر دو مثبت باشند چون فقط در حالتی که هر دو مثبت هستند امکان سرریز وجود دارد (دقت کنبد که یکی از اعداد بدون علامت هست در اینجا سوال این است که حاصل عملیات علامت دار باشد یا نه در صورتی که عدد علامت دار مثبت باشد بهتر است حاصل بدون علامت باشد) When different operands of an expression are of different type, complier performs implicit type conversion to match them. Below are the rules followed by compiler to perform the implicit conversion. Integer Promotion: All types lower than int (char, short etc) are first promoted to int. If the types of operands differ even after integer promotion, then following actions are taken If one of the operand is long double, convert all others to long double If one of the operand is double, convert all others to double If one of the operand is float, convert all others to float

73 تبدیل نوع ضمنی یا اتوماتیک

74 تبدیل نوع صریح در انتساب
در انتساب هنگامی که دو متغییر از دو نوع به هم نسبت داده شوند. ممکن است اطلاعات از دست برود. در کتاب ذکر شده که تبدیل نوع از double به int وجود ندارد و برای اینکار ابتدا باید نوع را به float و بعد به int تبدیل کرد که بعد از تست در کامپایلر مشاهده میشود چنین چیزی درست نیست.

75 تبدیل نوع صریح Type casting (type_name) expression
int sum = 17, count = 5; float mean; mean = sum / count; printf("Value of mean : %f\n", mean ); (float)

76 روش ایجاد برنامه 2- تعیین نیازمندیها و الزامات 3- تحلیل مسئله
1- فهم دقیق صورت مسئله 2- تعیین نیازمندیها و الزامات 3- تحلیل مسئله 4- شکستن مسئله به مسائل کوچکتر در صورت امکان 5- طراحی الگوریتم حل مسئله(فلوچارت) 6- پیاده سازی الگوریتم 7- تست و کنترل برنامه 8- نگهداری و نوسازی برنامه

77 Flow chart basics Project / Task Input / Output Start / End Connector
The start or end of a workflow. Project / Task Process or action. Input / Output Data: Inputs to, and outputs from, a process. Decision Decision point in a process or workflow. Connector Used to connect one part of a flowchart to another.

78

79 مثال فلوچارت برنامه ای که ده عدد را از ورودی میخواند و متوسط آنها را حساب میکند.

80 تعریف متغییرهای Ave و index و M
مثال فلوچارت شروع تعریف متغییرهای Ave و index و M Ave = 0 index = 0 خواندن عدد از ورودی M = عدد ورودی ادامه A Ave += M; index ++; index < 10 بلی خیر ادامه B Ave /= 10; چاپ خروجی

81 روند آماده سازی و اجرای برنامه


Download ppt "برنامه نویسی کامپیوتر computer Programming"

Similar presentations


Ads by Google