1 بنام خدا زبان برنامه نویسی c (21814( lecture 8 chapters 8 & 9

Post on 17-Jan-2016

224 Views

Category:

Documents

5 Downloads

Preview:

Click to see full reader

TRANSCRIPT

1

خدا بنام

نویسی برنامه )C (21814زبان

Lecture 8

Chapters 8 & 9

2

نویسی برنامه هشتم - )C (21814زبان فصل

: فصلهشتم

اعداد از استفاده مورد در نکاتی

: اینفصل اساسی نکاتمحاسباتی • مسایل از تعدادی با برخورد نحوه

عدد دو مقایسه نحوه نظیریک • به اختصاصیافته مقدار شدن خارج نتایج

قبول قابل محدوده از متغیر

3

نویسی برنامه هشتم - )C (21814زبان فصل

: عدد دو میان مقایسه

مشکل • صحیح، عدد دو حالتمقایسه در. ندارد وجود چندانی

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

4

نویسی برنامه هشتم - )C (21814زبان فصل

:مثال

#include <stdio.h>

float w = 4.4;

double x = 4.4;

void main (void){

printf (" Is x== (double)w? %i \n",(x == (double)w));

printf (" Is (float)x == w? %i \n",((float)x == w));

}

5

نویسی برنامه نهم - )C (21814زبان فصل

كوچك ) • اجزاي به بايستي functons)برنامه. شود شكسته

مي چيد • زير بصورت برنامه يك عمومي مانباشد:

• include commands for header files

• Constant definitions and type declarations

• Prototypes (function declarations( and one line functions

• main( (, which contains function calls

• Function definitions

6

نویسی برنامه نهم - )C (21814زبان فصل

جز • به توابع ساير مورد اين ) )mainدر اگراز قبل توان ) )mainتوابع مي تعريفشوند،

declaration. حذفنمود آنها براي را

كه • دهند مي ترجيح نويسان برنامه معموالmain( (. شود نوشته تابع اولين عنوان به

7

نویسی برنامه )C (21814زبان

توابع ) مورد در ):Functionsمطالبی

گرفته بحثقرار مورد مختلفی توابع تاکنوناند:

•int main(void(•printf(arg1, arg2, …(•scanf(arg1, arg2, …(•sqrt(arg1(•rand((•time(NULL(

8

نویسی برنامه )C (21814زبان

توابع ) مورد در ):Functionsمطالبی

به • برنامه یک زدن صدا : فرآیند است زیر شرح

از – دیگری جای به برنامه اجرای انتقالبرنامه

برآوردنسرویسهایی – یا محاسبات انجامبرنامه برای دیگر

و – شده زده صدا تابع که مکانی به بازگشت. کار ادامه

9

نویسی برنامه )C (21814زبان

: توابع از استفاده روشهای

1. x = function1(arg1, arg2);takes arguments, returns a value.

2. function2(arg1,arg2);takes arguments, returns nothing.

3. function3();takes no arguments, returns nothing.

Last two examples sometimes called subroutine (when nothing returned)

10

نویسی برنامه )C (21814زبان

Three parts to writing functions

1.Declaration: tell the compiler about the function (function prototype).

2.Definition: write the code the function executes.

3.Call: Call (use) the function to do some work.

11

نویسی برنامه )C (21814زبان

Declaration - Function Prototype

type function(parameter_list);for example:

double cube(double x); // x is optional

output valueis type double(return value(

formal parameter name(optional(

input valueis type (double(

12

نویسی برنامه )C (21814زبان

(Definition) تعریف

double cube(double val) {

return val*val*val;

}

formal parameter -- holds input value from call. Implicitly declared and initialized variable!!

this function returnsa value of type double

value to return

13

نویسی برنامه ) C (21814زبان

Call (Use)

int main(void) {

double x = 2.5, y;

y = cube(x);

printf("%f %f", x, y);

return 0;

}

Actual parameter -- the value passed to the function

14

نویسی برنامه )C (21814زبان

How Do Functions Work

#include <stdio.h>double cube(double val); // function prototype

(declaration)

int main(void) {double x=2.5, y; // 1y = cube(x); // 2 function callprintf("%f %f", x, y); // 3fflush(stdout); // 4 forces output to console screenreturn 0; // 5

}

double cube(double val){ // function definitionreturn val*val*val; // 6

}Execution order is:1 2 6 2 3 4 5

input to function

output from function

15

Program Structure – Big Picture.

#include <stdio.h>

int fcn1( int (;int fcn2( int (;

int main( void ( { // this is 'main' definition// body of 'main' includes calls to other fcns

}

int fcn1( int inVal( { // fcn1 definition// body of fcn1

}

int fcn2( int inVal( { // fcn1 definition// body of fcn2

}

Prototypes

main function

fcn1 function

fcn2 function

Preprocessor

etc.

16

Program Style 1(this course(

#include <stdio.h> // libraries

int square(int a); // prototypes int cube(int a);

int main(void) { // main function int i = 1;

while(i < 10) {printf("%5d %5d %5d\n", i, square(i), cube(i)); // function calls++i;

}return 0;

}

int square(int a) { // square functionreturn a * a;

}

int cube(int a) { // cube functionreturn a * a * a;

}

نویسی برنامه )C (21814زبان

17

Program Style 2(no prototypes(

#include <stdio.h> // libraries

int square(int a) { // square functionreturn a * a;

}

int cube(int a) { // cube function return a * a * a;

}

int main(void) { // main function int i = 1;

while(i < 10) { printf("%5d %5d %5d\n", i, square(i), cube(i)); ++i;

}return 0;

}

نویسی برنامه )C (21814زبان

18

Function Call Details

int main(void) {double y, x = 2.5;y =cube(x);return 0;

}

double cube(double val) {return val*val*val;

}

1( store value of x in a temporary location, jump to function cube()

2( assign value of x to val

3( calculate cube of val and store in temporary place and jump back to calling line.

4( retrieve the cube value and assign to y.

19

نویسی برنامه )C (21814زبان

با تابع یک زدن صفحه) Array Argument صدا383( کتاب

یک با تابع یک زدن آرایه argumentصدا بصورت: میشود انجام زیر بصورت

براکت – بدون آرایه نام تنها تابع، زدن صدا هنگام. میشود ذکر آن طول یا و اعضا از یکی یا ها،

نام & – از قبل اپراتور که نیست نیازی همچنین. شود ذکر آرایه

هنگان – بدون declareدر را ها براکت باید نمودن. نمایشداد آرایه طول ذکر

ندارد – مانعی شود ذکر آرایه طول اگر حالت این در. گیرد نمی نظر در را آن کامپایلر ولی

با – هایی آرایه با تابع از توان حالتمی این در. نمود استفاده متفاوت طول

20

نویسی برنامه )C (21814زبان

با تابع یک زدن ) Array Argument صدا ادامه)مثال:

void Fname (double Arrayname[], int n(;

void getdata (double x[], int n(;

21

نویسی برنامه )C (21814زبان

22

نویسی برنامه )C (21814زبان

23

نویسی برنامه )C (21814زبان

;

24

نویسی برنامه )C (21814زبان

Recursive Function (Type I(: #include <stdio.h>

int a,N=1;

int Factoriel(int x);

void main (void){

printf(" Enter a number:");

scanf("%i",&a);

Factoriel(a);

printf("\nThe factoriel of %i is equal to %i.\n\n",a,N);

}

int Factoriel(int a){

N = N*a;

a=a-1;

if(a>1){

Factoriel(a);

}

return 0;

}

25

نویسی برنامه )C (21814زبان

Recursive Function (Type II(: #include <stdio.h>

int a,N=1,W=1;

int Factoriel(int x);

void main (void){

printf(" Enter a number:");

scanf("%i",&a);

N= Factoriel(a);

printf("\nThe factoriel of %i is equal to %i.\n\n",a,N);

}

int Factoriel(int a){

W = W*a;

a=a-1;

if(a>1){

Factoriel(a);

}

return W;

}

26

نویسی برنامه )C (21814زبان

:5تمرین

. بگیرید نظر در را تاسمنصف دو ریختن مثالتصادفی متغییر دو Xاگر نتایج مجموع بیانگر

میانگین، محاسبه است مطلوب باشد، تاستصادفی واریانسمتغیر و معیار، . Xانحراف

کدامند؟ مد و میانه مثال این مورد در

برای آزمایشرا 100این 10000و 1000، ،10فایل یک در را نتایج و دهید انجام مرتبه

. کنید ذخیره خروجی

top related