background image

 

 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 


background image

 

 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 


background image

 

 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 


background image

 

 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 


background image

 

 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 


background image

 

 

 
 
 

// this is comment 
/* an example on comment in c++ language* / 
main( ) /* start your program */ 

int x,y,z; //this line declares type of x,y,z 
}

 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 


background image

 

 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 


background image

 

 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 


background image

 

 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 


background image

 

 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 


background image

 

 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 


background image

 

 

U

 ﺃﺳﺎﻟﻴﺐ ﺍﻹﺩﺧﺎﻝ ﻭﺍﻹﺧﺮﺍﺝ

input\output

  

 ﻫﻨﺎﻟﻚ ﻣﺠﻤﻮﻋﺘﻴﻦ ﻣﻦ ﺩﻭﺍﻝ ﺍﻹﺩﺧﺎﻝ ﻭﺍﻹﺧﺮﺍﺝ ﺣﻴﺚ ﺗﻌﺘﺒﺮ ﺍﻟﻤﺠﻤﻮﻋﺔ ﺍﻷﻭﻟﻰ ﺿﻤﻦ ﻟﻐﺔ

   ﻭﻟﻜﻦ

 ﻳﻤﻜﻦ ﺍﺳﺘﺨﺪﺍﻣﻬﺎ ﺿﻤﻦ ﻟﻐﺔ

C

P

++

 

P

  ﺃﻣﺎ ﺍﻟﻤﺠﻤﻮﻋﺔ ﺍﻟﺜﺎﻧﻴﺔ ﻓﺘﻌﺘﺒﺮ ﺍﻟﻤﺠﻤﻮﻋﺔ ﺍﻟﻤﺴﺘﺤﺪﺛﺔ ﻓﻲ ﻟﻐﺔ،

C

P

++

 

P

 ﻭﻳﻌﺘﺒﺮ ﻫﺬﺍ ﺍﻻﺧﺘﻼﻑ ﻓﻲ ﺩﻭﺍﻝ ﺍﻹﺩﺧﺎﻝ ﻭﺍﻹﺧﺮﺍﺝ ﻣﻦ ﺃﻫﻢ ﺍﻟﻔﺮﻭﻕ ﺑﻴﻦ ﻟﻐﺔ

C

  ﻭ

C

P

++

 

P

 ﻭﻓﻴﻤﺎ ﻳﻠﻲ

 :

ﻃﺮﻳﻘﺔ ﺍﺳﺘﺨﺪﺍﻡ ﺗﻠﻚ ﺍﻟﺪﻭﺍﻝ

 

U

1

 : ( ﺍﻟﻤﺠﻤﻮﻋﺔ ﺍﻷﻭﻟﻰ

 ﺗﻮﻓﺮ ﻟﻐﺔ

C

 ﻣﺠﻤﻮﻋﺔ ﻣﻦ ﺍﻟﺪﻭﺍﻝ ﻭ ﺍﻟﺮﻭﺗﻴﻨﻴﺎ

  ﺍﻟﻤﻌﺮﻓﺔ ﺿﻤﻦ

stdio

  ﻣﺜﻞ

printf( )

  ﻟﻺﺧﺮﺍﺝ ﻭ

scanf( )

  ﻟﻺﺩﺧﺎﻝ. ﻭﺍﻟﻤﻠﻒ

stdio.h

 :

 ﻳﻌﻨﻲ

Std

 .

 ﻣﻜﺘﺒﺔ ﻗﻴﺎﺳﻴﺔ ﺧﺎﺻﺔ ﺑﺎﻹﺩﺧﺎﻝ ﻭﺍﻹﺧﺮﺍﺝ: 

io

 ـ ﻣﺨﺘﺼﺮ ﻟ

input/output

 .

 ﺁﻱ ﺍﻹﺩﺧﺎﻝ ﻭﺍﻹﺧﺮﺍﺝ

h

header file

 .

 ﺁﻱ ﺍﻟﻤﻠﻒ ﺍﻟﺪﻟﻴﻞ

 

 ﺍﻹﺧﺮﺍﺝ )ﺍﻟﻜﺘﺎﺑﺔ( ﺑﺎﺳﺘﺨﺪﺍﻡ ﺍﻟﺪﺍﻟﺔ

printf( )

:

  

 ﺗﺴﺘﺨﺪﻡ ﺍﻟﺪﺍﻟﺔ

printf( )

 :

 ﻓﻲ ﺇﻇﻬﺎﺭ ﺍﻟﻤﻌﻠﻮﻣﺎﺕ ﺑﺼﻮﺭﺓ ﻣﺮﺗﺒﺔ ﻋﻠﻰ ﺍﻟﺸﺎﺷﺔ ﻭ ﺗﺄﺧﺬ ﺍﻟﺼﻴﻐﺔ ﺍﻟﺘﺎﻟﻴﺔ

printf( format string , list of variables); 

 ﺍﻟﺤﺪ ﺍﻷﻭﻝ ﻣﻦ ﻫﺬﻩ ﺍﻟﺪﺍﻟﺔ ﻋﺒﺎﺭﺓ ﻋﻦ ﺭﻣﺰ ﻧﺼﻲ ﻳﺴﻤﻰ ﺑﻨﺺ ﺍﻟﺘﺮﺗﻴﺐ

(format string)

 

 ﻭﻳﺤﺘﻮﻱ ﻋﻠﻰ ﻣﺠﻤﻮﻋﺔ ﻣﻦ ﻣﺤﺪﺩﺍﺕ ﺍﻟﺘﺮﺗﻴﺐ ﺍﻟﺘﻲ ﺗﺆﺩﻱ ﺇﻟﻰ ﺇﻇﻬﺎﺭ ﺍﻟﻜﺘﺎﺑﺔ ﺑﺎﻟﺸﻜﻞ ﺍﻟﻤﻄﻠﻮﺏ. ﺃﻣﺎ

 ﺍﻟﺠﺰء ﺍﻟﺜﺎﻧﻲ ﻓﻴﺤﺘﻮﻱ ﻋﻠﻰ ﻗﺎﺋﻤﺔ ﺑﺎﻟﻘﻴﻢ ﺃﻭ ﺍﻟﻤﺘﻐﻴﺮﺍﺕ ﺍﻟﺘﻲ ﻳﺮﺍﺩ ﺇﻇﻬﺎﺭ ﻗﻴﻤﻬﺎ ﺑﺪﻝ ﻣﺤﺪﺩ ﺍﻟﺘﺮﺗﻴﺐ ﻓﻲ

 .

ﺍﻟﺤﺪ ﺍﻷﻭﻝ ﻭ ﻫﺬﺍ ﺍﻟﺠﺰء ﻻ ﺿﺮﻭﺭﺓ ﻟﻪ ﺇﺫﺍ ﻟﻢ ﻳﺤﺘﻮﻱ ﺍﻟﺤﺪ ﺍﻷﻭﻝ ﻋﻠﻰ ﻣﺤﺪﺩ ﺗﺮﺗﻴﺐ

 :

ﻳﺄﺧﺬ ﻛﻞ ﻣﺤﺪﺩ ﺗﺮﺗﻴﺐ ﺍﻟﺸﻜﻞ ﺍﻟﺘﺎﻟﻲ

%[flags] [width] [.precision] [h/l] <data type>  

:

ﺗﻤﺜﻞ ﺍﻟﺮﻣﻮﺯ ﺩﺍﺧﻞ ﺍﻷﻗﻮﺍﺱ ﺍﻟﻤﺮﺑﻌﺔ ﺧﻴﺎﺭﺍﺕ ﻳﻤﻜﻦ ﺇﻫﻤﺎﻟﻬﺎ. ﺃﺩﻧﺎﻩ ﻭﺻﻒ ﻣﺤﺪﺩ ﺍﻟﺘﺮﺗﻴﺐ

 

 

%

  ﻳﺴﺘﺨﺪﻡ ﻣﻦ ﻗﺒﻞ ﺍﻟﻤﻌﺎﻟﺞ ﻓﻲ ﺗﺤﺪﻳﺪ ﺍﻟﻤﻜﺎﻥ ﺩﺍﺧﻞ ﺍﻟﺮﻣﺰ ﺍﻟﻨﺼﻲ ﺍﻟﺬﻱ ﻳﺮﺍﺩ ﺇﻇﻬﺎﺭ ﻓﻴﻪ: 

.

ﻗﻴﻤﺔ ﻣﻌﻴﻨﺔ

 

 

[flags]

  ﺗﻤﺜﻞ ﻣﺠﻤﻮﻋﺔ ﻣﻦ ﺍﻟﺮﻣﻮﺯ ﺍﻟﺘﻲ ﻳﻤﻜﻦ ﺍﺳﺘﺨﺪﺍﻡ ﻭﺍﺣﺪ ﻣﻨﻬﺎ ﺃﻭ ﺃﻛﺜﺮ ﻓﻲ ﻧﻔﺲ: 

)

 ﺍﻟﻮﻗﺖ ﻭﻛﻤﺎ ﻣﺒﻴﻦ ﻓﻲ ﺍﻟﺠﺪﻭﻝ ﺭﻗﻢ

1

.(

 

 

[width]

.

ﻋﺪﺩ ﺻﺤﻴﺢ ﻳﻤﺜﻞ ﺍﻟﺤﺪ ﺍﻷﺩﻧﻰ ﻟﻄﻮﻝ ﺍﻟﺤﻘﻞ ﺍﻟﻤﺨﺼﺺ ﻟﻘﻴﻤﺔ ﻣﻌﻴﻨﺔ: 

 


background image

 

 

 

[.precision]

:

 ﻋﺪﺩ ﺻﺤﻴﺢ ﻣﺴﺒﻮﻕ ﺑﻨﻘﻄﺔ ﻭ ﻳﻤﺜﻞ: 

 

 

 :

 ﺍﻟﺤﺪ ﺍﻷﺩﻧﻰ ﻣﻦ ﺭﻣﻮﺯ ﺍﻟﺮﻗﻢ ﺍﻟﺘﻲ ﻳﻤﻜﻦ ﻛﺘﺎﺑﺘﻬﺎ ﻟﻸﻧﻮﺍﻉ

d, i

 

 

 ﻋﺪﺩ ﺭﻣﻮﺯ ﺍﻟﺮﻗﻢ ﺍﻟﺘﻲ ﻳﻤﻜﻦ ﻛﺘﺎﺑﺘﻬﺎ ﺑﻌﺪ ﺍﻟﻔﺎﺭﺯﺓ ﺍﻟﻌﺸﺮﻳﺔ ﻟﻸﻧﻮﺍﻉ

f, e

  .ﻓﻲ ﺣﺎﻟﺔ

 ﻋﺪﻡ ﺍﻟﺘﺤﺪﻳﺪ ﻳﻜﻮﻥ ﻋﺪﺩ ﺍﻟﺮﻣﻮﺯ

6

.

 

 

 ﺍﻟﺤﺪ ﺍﻷﻋﻠﻰ ﻟﻌﺪﺩ ﺍﻟﺮﻣﻮﺯ ﺍﻟﺘﻲ ﻳﻤﻜﻦ ﻛﺘﺎﺑﺘﻬﺎ ﻣﻦ ﺭﻣﺰ ﻧﺼﻲ

(string)

.

 

 

[h/l]

  ﻳﺴﺘﺨﺪﻡ ﺍﻟﺮﻣﺰ: 

l

  ﻟﻠﺪﻻﻟﺔ ﻋﻠﻰ ﺑﻴﺎﻧﺎﺕ ﻣﻦ ﻧﻮﻉ

long

  ﺃﻭ

double

  ﻭ ﺍﻟﺮﻣﺰ

h

 

 ﻟﻠﺪﻻﻟﺔ ﻋﻠﻰ ﺑﻴﺎﻧﺎﺕ ﻣﻦ ﻧﻮﻉ

short

 

 

<data type>

  ﻳﻤﺜﻞ ﻫﺬﺍ ﺍﻟﺤﻘﻞ ﻧﻮﻉ ﺍﻟﺒﻴﺎﻧﺎﺕ ﺍﻟﻤﺴﺘﺨﺪﻣﺔ ﻓﻲ ﺍﻟﻜﺘﺎﺑﺔ ﻭﻛﻤﺎ ﻣﺒﻴﻦ ﻓﻲ: 

)

 ﺍﻟﺠﺪﻭﻝ ﺭﻗﻢ

2

.(

 

 ﺍﻟﺮﻣﺰ

 ﺍﻟﻤﻌﻨﻰ

 ــ

 ﺗﻜﻮﻥ ﺑﺪﺍﻳﺔ ﺍﻟﻜﺘﺎﺑﺔ ﻣﻦ ﺍﻟﻴﺴﺎﺭ ﺿﻤﻦ ﺍﻟﺤﻘﻞ ﺍﻟﻤﺨﺼﺺ ﻟﻠﻘﻴﻤﺔ. ﻓﻲ ﺍﻟﺤﺎﻟﺔ

 .

ﺍﻻﻋﺘﻴﺎﺩﻳﺔ ﻳﻤﻸ ﺍﻟﺤﻘﻞ ﻣﻦ ﺍﻟﻴﻤﻴﻦ

 +

 .

ً ﺃﻭ ﻣﻮﺟﺒﺎًﺎﺒﻟﺎﺳ ﻢﻗﺮﻟﺍ ﻥﺎﻛ ءﺍﻮﺳ ﻢﻗﺮﻟﺍ ﻊﻣ ﺓﺭﺎﺷﻹﺍ ﺔﺑﺎﺘﻛ

Space

  

 .

ًﺗﺮﻙ ﻓﺮﺍﻍ ﻣﻜﺎﻥ ﺍﻹﺷﺎﺭﺓ ﻓﻲ ﺣﺎﻟﺔ ﻛﻮﻥ ﺍﻟﺮﻗﻢ ﻣﻮﺟﺒﺎ

)

 ﺟﺪﻭﻝ

1

 ( ﺭﻣﻮﺯ ﺍﻟﺴﻴﻄﺮﺓ ﻋﻠﻰ ﻣﻜﺎﻥ ﺍﻟﻜﺘﺎﺑﺔ ﺿﻤﻦ ﺍﻟﺤﻘﻞ ﺍﻟﻤﺤﺪﺩ

[flags]

 . 

 

 ﺔــــــــــــــــــﺌﻴﻬﻟﺍ

 ﺍﻟﺮﻣﺰ

 ﺭﻣﺰ ﻣﻔﺮﺩ

%c

 

 ﻋﺪﺩ ﺻﺤﻴﺢ ﺃﻭ ﻋﺪﺩ ﺻﺤﻴﺢ ﻃﻮﻳﻞ ﺑﺎﺳﺘﺨﺪﺍﻡ

%ld

  

%d

 

  ﻋﺪﺩ ﺻﺤﻴﺢ

%i

 

 :

ﻋﺪﺩ ﻋﺸﺮﻱ ﺑﺎﻟﺼﻴﻐﺔ

d.dddde+ddd

  

%e

 

 ﻋﺪﺩ ﻋﺸﺮﻱ)ﺣﻘﻴﻘﻲ( ﺃﻭ ﻋﺪﺩ ﻋﺸﺮﻱ ﻣﻀﺎﻋﻒ ﺍﻟﺪﻗﺔ ﺑﺎﺳﺘﺨﺪﺍﻡ

%lf

  

%f

 

 ﺭﻣﺰ ﻧﺼﻲ

(string)

  

%s

 

  %

 ﻳﻄﺒﻊ

%%

 

)

 ﺟﺪﻭﻝ

2

 .

( ﺭﻣﻮﺯ ﺃﻧﻮﺍﻉ ﺍﻟﺒﻴﺎﻧﺎﺕ

 
 
 


background image

 

 

:ﻣﺜﺎﻝ

 

 .

ﺍﻟﻤﺜﺎﻝ ﺍﻟﺘﺎﻟﻲ ﻳﺒﻴﻦ ﻋﺪﺓ ﺍﺳﺘﺨﺪﺍﻣﺎﺕ ﻟﻤﺤﺪﺩ ﺍﻟﻨﻮﻉ

#include<stdio.h> 

 main(){ 

 float x=123.456; 

 printf("%-5.2f\n",x); 

 printf("%5.2f\n",3.234); 

 printf("%10s\n","hello"); 

 printf("%-s\n","hello"); 

 printf("%5.7s\n","abcdefghijk"); } 

 :

ﺳﻴﻜﻮﻥ ﺍﻟﺘﻨﻔﻴﺬ

 

123.46 

□□3.23 
□□□□□hello 

Hello 

abcdefg 

 ﺣﻴﺚ ﻳﻤﺜﻞ ﺍﻟﺮﻣﺰ

  ﻓﺮﺍﻍ

(space)

 

 

 ﺍﻹﺩﺧﺎﻝ )ﺍﻟﻘﺮﺍءﺓ( ﺑﺎﺳﺘﺨﺪﺍﻡ ﺍﻟﺪﺍﻟﺔ

scanf( )

: 

 ﺗﺴﺘﺨﺪﻡ ﺍﻟﺪﺍﻟﺔ

scanf( )

 :

  ﻟﻌﻤﻠﻴﺔ ﺍﻟﻘﺮﺍءﺓ )ﺍﻹﺩﺧﺎﻝ( ﻭﺍﻟﺘﻲ ﺗﺄﺧﺬ ﺍﻟﺸﻜﻞ ﺍﻟﺘﺎﻟﻲ

scanf(<control string>, <list of variables to store values in>); 

ﺟﻤﻠﺔ ﺍﻟﺴﻴﻄﺮﺓ

 

 ﺗﺘﻜﻮﻥ ﺟﻤﻠﺔ ﺍﻟﺴﻴﻄﺮﺓ

(control string)

 :

 ﻣﻦ

 

 ﻣﺤﺪﺩﺍﺕ ﺍﻟﻨﻮﻉ

(format specifiers)

  ﻭﻳﻠﻴﻪ ﺭﻣﺰ% ﺰﻣﺮﻟﺍ ﻦﻣ ﻉﻮﻨﻟﺍ ﺩﺪﺤﻣ ﻥﻮﻜﺘﻳ : 

)

 ﻧﻮﻉ ﺍﻟﺒﻴﺎﻧﺎﺕ ﺍﻟﻤﻄﻠﻮﺏ ﻗﺮﺍءﺗﻬﺎ ﻭﻫﻲ ﻧﻔﺴﻬﺎ ﺍﻟﺘﻲ ﺫﻛﺮﺕ ﻓﻲ ﺍﻟﺠﺪﻭﻝ ﺭﻗﻢ

2

.(

 

 

 ﺍﻟﺮﻣﻮﺯ ﻏﻴﺮ ﺍﻟﻤﺮﺋﻴﺔ

(white space characters)

  ﻫﺬﻩ ﺍﻟﺮﻣﻮﺯ ﻫﻲ ﺍﻟﻔﺮﺍﻍ: 

(space)

 

  ﺍﻟﺘﺎﺏ،

(tab)

  ﺃﻭ ﺍﻟﺴﻄﺮ ﺍﻟﺠﺪﻳﺪ

(new line)

  . ﻭﺟﻮﺩ ﺃﺣﺪ ﻫﺬﻩ ﺍﻟﺮﻣﻮﺯ ﻓﻲ ﺟﻤﻠﺔ

 ﺍﻟﺴﻴﻄﺮﺓ ﻳﺆﺩﻱ ﺇﻟﻰ ﺇﻫﻤﺎﻝ ﻛﺎﻓﺔ ﺍﻟﺮﻣﻮﺯ ﺍﻟﻐﻴﺮ ﻣﺮﺋﻴﺔ ﻓﻲ ﻣﺠﺮﻯ ﺍﻟﻘﺮﺍءﺓ ﻟﻐﺎﻳﺔ ﺃﻭﻝ ﺭﻣﺰ

.

ﻣﺮﺋﻲ

 


background image

 

 

 

  ﻭﺟﻮﺩ ﺃﺣﺪ ﻫﺬﻩ ﺍﻟﺮﻣﻮﺯ ﻳﺆﺩﻱ ﺑﺎﻟﺪﺍﻟﺔ: ﺔﻴﺋﺮﻤﻟﺍ ﺯﻮﻣﺮﻟﺍ

scanf( )

  ﺇﻟﻰ ﻣﻄﺎﺑﻘﺔ ﻫﺬﺍ ﺍﻟﺮﻣﺰ

  ﺇﺫﺍ ﻛﺎﻧﺖ ﺟﻤﻠﺔ ﺍﻟﺴﻴﻄﺮﺓًﻼﺜﻤﻓ . ﺓءﻭﺮﻘﻤﻟﺍ ﺕﺎﻧﺎﻴﺒﻟﺍ ﻲﻓ ﺩﻮﺟﻮﻤﻟﺍ ﺰﻣﺮﻟﺍ ﻊﻣ

"%d,%d"

 

 ﻓﺄﻥ

scanf( )

  ﺳﺘﻘﻮﻡ ﺑﻘﺮﺍءﺓ ﺍﻟﻌﺪﺩ ﺍﻟﺼﺤﻴﺢ ﺍﻷﻭﻝ ﻭﻣﻦ ﺛﻢ ﻗﺮﺍءﺓ ﻭ ﺇﻫﻤﺎﻝ ﺍﻟﻔﺎﺭﺯﺓ

","

 

 ﻭﻣﻦ ﺛﻢ ﻗﺮﺍءﺓ ﺍﻟﻌﺪﺩ ﺍﻟﺼﺤﻴﺢ ﺍﻟﺜﺎﻧﻲ . ﺃﻣﺎ ﺇﺫﺍ ﻟﻢ ﺗﺠﺪ

scanf( )

  ﺍﻟﺮﻣﺰ

","

  ﻓﻲ ﺍﻟﺒﻴﺎﻧﺎﺕ

 ﺍﻟﻤﻘﺮﻭءﺓ ﻓﻬﺬﺍ ﺳﻮﻑ ﻳﺆﺩﻱ ﺇﻟﻰ ﺗﻮﻗﻒ

scanf( )

.

 ﻭ ﻓﺸﻞ ﻋﻤﻠﻴﺔ ﺍﻟﻘﺮﺍءﺓ

 

ﻗﺎﺋﻤﺔ ﺍﻟﻤﺘﻐﻴﺮﺍﺕ

 

 ﺗﺤﻮﻱ ﻫﺬﻩ ﺍﻟﻘﺎﺋﻤﺔ

(variable list)

  ﻋﻠﻰ ﺍﻟﻤﺘﻐﻴﺮﺍﺕ ﺍﻟﺘﻲ ﺳﻮﻑ ﺗﺨﺰﻥ ﻓﻴﻬﺎ ﺍﻟﻘﻴﻢ ﺍﻟﺘﻲ ﺗﻘﺮﺃ ﻣﻦ

 ﻗﺒﻞ

scanf( )

  ﻭﻳﺴﺒﻖ ﻛﻞ ﻣﺘﻐﻴﺮ ﺑﺎﻟﺮﻣﺰ

&

  ﻭﺍﻟﺬﻱ ﻳﺸﻴﺮ ﺇﻟﻰ ﻣﻮﻗﻊ ﺍﻟﻤﻜﺎﻥ ﺍﻟﻤﺨﺼﺺ ﻟﻠﻤﺘﻐﻴﺮ ﻓﻲ

  ﻟﻘﺮﺍءﺓ ﻋﺪﺩ ﺻﺤﻴﺢ ﻭ ﺧﺰﻧﻪ ﻓﻲ ﻣﺘﻐﻴﺮ ﺍﺳﻤﻪ، ًﻼﺜﻤﻓ .ﺓﺮﻛﺍﺬﻟﺍ

count

 :

 ﻧﺴﺘﺨﺪﻡ ﺍﻹﻳﻌﺎﺯ

scanf("%d",&count); 

  ﻣﻊ ﻛﺎﻓﺔ ﺃﻧﻮﺍﻉ ﺍﻟﻤﺘﻐﻴﺮﺍﺕ ﻋﺪﺍ ﺍﻟﻤﺘﻐﻴﺮ ﻣﻦ ﺍﻟﻨﻮﻉ ﺍﻟﻨﺼﻲ& ﺰﻣﺮﻟﺍ ﻡﺪﺨﺘﺴﻳ

(string)

  . 

 ، ﻳﺠﺐ ﺃﻥ ﻳﻔﺼﻞ ﺑﻴﻦ ﺍﻟﺒﻴﺎﻧﺎﺕ ﺍﻟﻤﻘﺮﻭءﺓ ﺃﺣﺪ ﺍﻟﺮﻣﻮﺯ ﺍﻟﻐﻴﺮ ﻣﺮﺋﻴﺔ ﻓﻲ ﺣﺎﻟﺔ ﻗﺮﺍءﺓ ﺍﻟﺒﻴﺎﻧﺎﺕ ﺍﻟﻌﺪﺩﻳﺔ

:

ﺍﻹﻳﻌﺎﺯًﻼﺜﻣ

 

scanf("%d%d",&x,&y); 

 ﻳﺘﻘﺒﻞ ﺍﻟﺒﻴﺎﻧﺎﺕ

10

□20

  ﻭﻟﻜﻨﻪ ﺳﻴﻔﺸﻞ ﻋﻨﺪ ﻗﺮﺍءﺓ ﺍﻟﺒﻴﺎﻧﺎﺕ ﺑﺎﻟﺸﻜﻞ

10,20

 . 

:

 ﻋﻨﺪ ﺍﺳﺘﺨﺪﺍﻡ ﺍﻹﻳﻌﺎﺯ ﺍﻟﺘﺎﻟﻲ:ﻝﺎﺜﻣ

 

scanf("%d %*d %d",&x,&y); 

                                                                     :

ﻟﻘﺮﺍءﺓ ﺍﻟﺒﻴﺎﻧﺎﺕ

123 456 789     

 

 ﻓﺄﻥ

scanf( )

  ﺳﻮﻑ ﺗﻘﺮﺃ ﺍﻟﻌﺪﺩ

123

  ﻭﺗﺨﺰﻧﻪ ﻓﻲ ﺍﻟﻤﺘﻐﻴﺮ

x

  ﻭﻣﻦ ﺛﻢ ﺗﻘﺮﺃ ﻭ ﺗﻬﻤﻞ ﺍﻟﻌﺪﺩ

456

 

 ﻭﺫﻟﻚ ﻟﻜﻮﻥ ﺍﻟﻤﺤﺪﺩ ﻣﻦ ﻧﻮﻉ

%*

  ﺗﻘﺮﺃ ﺍﻟﻌﺪﺩًﺍﺮﻴﺧﺃﻭ ، (ﻥﺰﺧ ﻡﺪﻋ) ﻝﺎﻤﻫﺇﻭ ﺓءﺍﺮﻗ ﻲﻨﻌﻳﻭ 

789

 

 ﻭﺗﺨﺰﻧﻪ ﻓﻲ ﺍﻟﻤﺘﻐﻴﺮ

y

 . 

 

2

 :(ﺍﻟﻤﺠﻤﻮﻋﺔ ﺍﻟﺜﺎﻧﻴﺔ

 ﺗﻮﻓﺮ ﻟﻐﺔ

C

P

++

P

 ﻣﺠﻤﻮﻋﺔ ﻣﻦ ﺍﻟﺪﻭﺍﻝ ﻭ ﺍﻟﺮﻭﺗﻴﻨﻴﺎ

  ﺍﻟﻤﻌﺮﻓﺔ ﺿﻤﻦ

iostream

  ﻣﺜﻞ

cout<<

 

 ﻟﻺﺧﺮﺍﺝ ﻭ

cin>>

  ﻟﻺﺩﺧﺎﻝ. ﻭﺍﻟﻤﻠﻒ

iostream.h

 :

 ﻳﻌﻨﻲ

stream

 .

 ﻣﻜﺘﺒﺔ ﺗﺪﻓﻖ ﺍﻟﻤﻌﻠﻮﻣﺎﺕ ﺍﻟﺨﺎﺻﺔ ﺑﺎﻹﺩﺧﺎﻝ ﻭﺍﻹﺧﺮﺍﺝ: 

io

 ـ ﻣﺨﺘﺼﺮ ﻟ

input/output

 .

 ﺁﻱ ﺍﻹﺩﺧﺎﻝ ﻭﺍﻹﺧﺮﺍﺝ

h

header file

.

 ﺁﻱ ﺍﻟﻤﻠﻒ ﺍﻟﺪﻟﻴﻞ

 

 


background image

 

 

 ﺍﻹﺧﺮﺍﺝ )ﺍﻟﻜﺘﺎﺑﺔ( ﺑﺎﺳﺘﺨﺪﺍﻡ ﺍﻟﺪﺍﻟﺔ

cout<<

:

  

 ﺍﻟﻄﺒﺎﻋﺔ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺍﻟﺪﺍﻟﺔ

cout<< 

  ﻳﻜﻮﻥ ﺃﺳﻬﻞ ﻓﻲ ﺍﻟﻄﺒﺎﻋﺔ ﻣﻦ ﺍﺳﺘﺨﺪﺍﻡ ﺍﻟﺪﺍﻟﺔ

printf( )

  ﺣﻴﺚ

  ﺑﻌﺪ ﻋﻼﻣﺔ ﻣﻌﺎﻣﻞ ﺍﻹﺩﻣﺎﺝ ﺃﻱ ﺍﻟﺮﻣﺰًﺎﺗﺮﺷﺎﺒﻣ ﻪﻌﺿﻮﺑ ﻥﻮﻜﻳ ﻲﺷ ﻱﺃ ﺔﻋﺎﺒﻄﻟ ﺎﻨﻫ

<<

  ﺣﻴﺚ ﻫﺬﺍ

 ﺍﻟﻤﻌﺎﻣﻞ ﻳﻘﻮﻡ ﺑﻮﺿﻊ ﺧﺮﺝ ﺍﻟﺒﺮﻧﺎﻣﺞ ﻓﻲ ﻣﺠﺮﻯ ﺍﻟﺨﺮﺝ ﺍﻟﻤﺴﻤﻰ ﻋﻠﻰ ﻳﺴﺎﺭﻩ ﺍﻟﺬﻱ ﻫﻮ

cout

  ﺍﻟﺬﻱ

 ﻳﺸﻴﺮ ﺇﻟﻰ ﺷﺎﺷﺔ ﺍﻟﺤﺎﺳﺐ ﻟﺬﻟﻚ ﻋﻨﺪ ﺗﻨﻔﻴﺬ ﺍﻟﺠﻤﻠﺔ

cout<<76

  ﺳﻮﻑ ﻳﻈﻬﺮ ﺍﻟﺮﻗﻢ

76

 ، ﻋﻠﻰ ﺍﻟﺸﺎﺷﺔ

 ﻣﻦ ﻫﻨﺎ ﻧﻌﺮﻑ ﺍﻧﻪ ﻗﺒﻞ ﻛﻞ ﺷﻲ ﻧﺤﺘﺎﺝ ﻃﺒﺎﻋﺘﻪ ﻳﺠﺐ ﺃﻥ ﻧﻀﻊ ﺍﻟﻤﻌﺎﻣﻞ

<<

  ﺃﻱ ﺃﺫﺍ ﺍﺣﺘﺠﻨﺎ ﻃﺒﺎﻋﺔ

 ﺃﻛﺜﺮ ﻣﻦ ﻣﺘﻐﻴﺮ ﺃﻭ ﺛﺎﺑﺖ ﻓﻲ ﺟﻤﻠﺔ ﻭﺍﺣﺪﺓ ﻳﺠﺐ ﻭﺿﻊ ﺍﻟﻤﻌﺎﻣﻞ

<<

 .

 ﻗﺒﻞ ﻛﻞ ﻭﺍﺣﺪ ﻣﻨﻬﻢ

 ﻣﻌﺎﻣﻞ ﺍﻟﺨﺮﺝ

<<

  ﻳﻘﻮﻡ ﺑﺈﺭﺳﺎﻝ ﻗﻴﻤﺔ ﺍﻟﺠﻤﻠﺔ ﺍﻟﺘﻌﺒﻴﺮﻳﺔ ﺍﻟﻤﻮﺟﻮﺩﺓ ﻋﻠﻰ ﻳﻤﻴﻨﻪ ﺇﻟﻰ ﻣﺠﺮﻯ ﺍﻟﺨﺮﺝ

 ﺍﻟﻤﻮﺟﻮﺩﺓ ﻋﻠﻰ ﻳﺴﺎﺭﻩ ﻭﺣﻴﺚ ﺃﻥ ﺗﻨﻔﻴﺬ ﻫﺬﺍ ﺍﻟﻌﻤﻞ ﻳﺘﻢ ﻣﻦ ﺍﻟﻴﻤﻴﻦ ﺇﻟﻰ ﺍﻟﻴﺴﺎﺭ ﻟﺬﻟﻚ ﺗﻢ ﺍﺧﺘﻴﺎﺭ ﺍﻟﺮﻣﺰ

<<

 .

 ﻟﻴﻤﺜﻞ ﻣﻌﺎﻣﻞ ﺍﻟﺨﺮﺝ. ﻳﺠﺐ ﺃﻥ ﺗﺘﺬﻛﺮ ﺃﻥ ﺍﺗﺠﺎﻩ ﺍﻟﺴﻬﻢ ﻳﺸﻴﺮ ﺇﻟﻰ ﺍﻟﻴﺴﺎﺭ

 :

ﻣﺜﺎﻝ

#include < iostream.h> 
main ( ) 

cout<<“smoking is dangerous \n”; 
}

 

 ﺇﻥ ﺍﻟﻌﻼﻣﺔ

\n

 ﺗﻤﺜﻞ ﺍﻻﻧﺘﻘﺎ

  ﺇﻟﻰ ﺳﻄﺮ ﺟﺪﻳﺪ ﻭﻣﻤﻜﻦ ﺃﻥ ﻧﺴﺘﺨﺪﻡ ﺍﻟﻌﺒﺎﺭﺓ

endl

  

#include < iostream.h> 
main ( ) 

cout<<“ smoking is dangerous”<<endl; 
}

 

:

ﻣﺜﺎﻝ

   ﻟﻄﺒﺎﻋﺔ ﺃﻛﺜﺮ ﻣﻦ ﻣﺘﻐﻴﺮ ﻣﻊ ﻧﺼﻮﺹ ﻣﻤﻜﻦ ﺃﻥ ﻧﻜﺘﺐ ﺍﻟﺒﺮﻧﺎﻣﺞ ﺍﻟﺘﺎﻟﻲ

#include < iostream.h> 
main ( ) 

int a=100; 
float x=4.25; 
cout<<“a=”<<a<<“\n”<<“x=”<<x; 
}

 

  ﺳﻴﻜﻮﻥ ﻧﺎﺗﺞ ﺍﻟﻄﺒﺎﻋﺔ

a= 100

 

x= 4.25

 


background image

 

 

 ﺍﻹﺩﺧﺎﻝ )ﺍﻟﻘﺮﺍءﺓ( ﺑﺎﺳﺘﺨﺪﺍﻡ ﺍﻟﺪﺍﻟﺔ

cin>>

: 

 ﻓﻲ ﻟﻐﺔ

C

P

++

P

  ﺍﻹﺩﺧﺎﻝ ﻫﻮ ﺍﻟﻤﻨﺎﻇﺮ ﻟﻺﺧﺮﺍﺝ . ﺍﻟﺒﻴﺎﻧﺎﺕ ﺍﻟﺨﺎﺭﺟﺔ ﻣﻦ ﺗﻨﻔﻴﺬ ﺍﻟﺒﺮﻧﺎﻣﺞ ﺗﻤﺮ ﻓﻲ ﻣﺠﺮﻯ

 ﺍﻟﺨﺮﺝ

cout

  ﻭﺍﻟﺒﻴﺎﻧﺎﺕ ﺍﻟﺪﺍﺧﻠﺔ ﻣﻦ ﻟﻮﺣﺔ ﺍﻟﻤﻔﺎﺗﻴﺢ ﺇﻟﻰ ﺍﻟﺒﺮﻧﺎﻣﺞ ﺃﺛﻨﺎء ﺍﻟﺘﺸﻐﻴﻞ ﺗﻤﺮ ﻓﻲ ﻣﺠﺮﻯ

 ﺍﻟﺪﺧﻞ

cin

  ﻭﺍﺗﺠﺎﻩ ﺍﻟﺴﻬﻢ ﻓﻲ ﺣﺎﻟﺔ ﺍﻹﺩﺧﺎﻝ ﻳﻜﻮﻥ

>>

 :

 ﺃﻱ ﻋﻜﺲ ﺍﻹﺧﺮﺍﺝ ﻭﻓﻴﻤﺎ ﻳﻠﻲ ﺑﻌﺾ ﺍﻷﻣﺜﻠﺔ

ﻣﻼﺣﻈﺔ

 ﻻ

 

ﻳﺠﻮﺯ

 

ﺃﻥ

 

ﻧﺴﺘﺨﺪﻡ

 

ﺍﻟﻤﺘﻐﻴﺮ

 

ﻗﺒﻞ

 

ﺗﻌﺮﻳﻔﺔ

.

 

#include < iostream.h>” 
main ( ){ 
int a; 
cin>>a; 
cout<<a; 

:

ﻣﺜﺎﻝ

 

ﺍﻛﺘﺐ

 

ﺑﺮﻧﺎﻣﺠﺎ

 

ﻹﺩﺧﺎﻝ

 

ﻋﻤﺮﻙ

 

ﺛﻢ

 

ﻃﺒﺎﻋﺘﻪ

 

، 

ﻭﻃﺒﺎﻋﺔ

 

ﻧﺼﻔﻪ

 

؟ﻭﺿﻌﻔﻪ

 

#include < iostream.h> 
main ( ){ 
int a; 
cin>>a; 
cout<<a; 
cout<<a/2; 
cout<<a*2; 

ﻣﺜﺎﻝ

 ﺍﻛﺘﺐ:

 

ﺑﺮﻧﺎﻣﺞ

 

ﻹﺩﺧﺎﻝ

 

ﺛﻼﺙ

 

ﺩﺭﺟﺎﺕ

 

ﻟﻄﺎﻟﺐ ﻭﻃﺒﺎﻋﺔ

 

ﻣﻌﺪﻝ

 

 ؟ﺍﻟﺪﺭﺟﺎﺕ

#include < iostream.h> 
main ( ) { 
int a,b,c; 
cin>>a>>b>>c; 
cout<<(a+b+c)/3; 


background image

 

 

) ﻣﺜﺎﻝ

1

:(

  ﺇﺫﺍ ﻛﺎﻧﺖ ﻗﻴﻤﺘﺎ ﻣﺘﻐﻴﺮﻳﻦ

x

  ﻭ

  ﻣﻦ ﻧﻮﻉ ﻋﺪﺩ ﺻﺤﻴﺢ ﻫﻲ

10

  ﻭ

15

  ﻋﻠﻰ ﺍﻟﺘﺮﺗﻴﺐ ﻓﻤﺎ

 ﻫﻲ ﻗﻴﻤﺔ ﻛﻞ ﻣﻦ

x

 ، 

y

  ﻭ

z

 :

 ﺑﻌﺪ ﺗﻨﻔﻴﺬ ﻛﻞ ﻣﻦ ﺍﻹﻳﻌﺎﺯﺍﺕ ﺍﻟﺘﺎﻟﻴﺔ

i.

  z = x++ + y++                    z=25             x=11          y = 16 

ii.

  z = ++x + y--                      z = 26           x = 11        y = 14 

iii.

  z = ( x*=2, x % ++y)          z = 4             x = 20        y = 16  

 

) ﻣﺜﺎﻝ

2

:(

 .

 ﺃﻛﺘﺐ ﺑﺮﻧﺎﻣﺞ ﻳﻘﻮﻡ ﺑﻘﺮﺍءﺓ ﺛﻼﺛﺔ ﺃﺭﻗﺎﻡ ﻭ ﻳﻜﺘﺐ ﻣﻌﺪﻟﻬﺎ ﻋﻠﻰ ﺍﻟﺸﺎﺷﺔ

#include<stdio.h> 

main( ){ 

int x,y,z; 

float av; 

scanf("%d%d%d",&x,&y,&z); 

av=(x+y+z)/3; 

printf("\n av= %f",av); 

 

) ﻣﺜﺎﻝ

3

:(

 .

 ﺃﻛﺘﺐ ﺑﺮﻧﺎﻣﺞ ﻟﺤﺴﺎﺏ ﻣﺴﺎﺣﺔ ﺩﺍﺋﺮﺓ ﻋﻨﺪ ﺇﺩﺧﺎﻝ ﻧﺼﻒ ﻗﻄﺮﻫﺎ

#include<stdio.h> 

main( ){ 

float r,a,p=3.14; 

printf("input radius:"); 

scanf("%f",&r); 

a=r*r*p; 

printf("\n the area = %f",a); 


background image

 

 

 ﺍﻟﺘﺮﺍﻛﻴﺐ ﺍﻟﺸﺮﻃﻴﺔ ﻭ ﺍﻟﺘﻜﺮﺍﺭﻳﺔ

 
 
 

:ﺍﻟﺘﺮﺍﻛﻴﺐ ﺍﻟﺸﺮﻃﻴﺔ

 

 ﺗﻮﻓﺮ ﻟﻐﺔ

++

C

  ﻣﺠﻤﻮﻋﺔ ﻣﻦ ﺍﻹﻳﻌﺎﺯﺍﺕ ﺍﻟﺸﺮﻃﻴﺔ ﺍﻟﺘﻲ ﻳﺘﻢ ﻋﻦ ﻃﺮﻳﻘﻬﺎ ﺗﻨﻔﻴﺬ ﻣﺠﻤﻮﻋﺔ ﻣﻦ

  ﻣﺨﺘﻠﻔﺔ ﻭًﻻﺎﻜﺷﺃ ﻲﻃﺮﺸﻟﺍ ﺯﺎﻌﻳﻹﺍ ﺬﺨﺘﻳﻭ .ﺔﻨﻴﻌﻣ ﻁﻭﺮﺷ ﻖﻘﺤﺗ ءﻮﺿ ﻲﻓ ﺎﻫﺮﻴﻏ ﻥﻭﺩ ﺕﺍﺯﺎﻌﻳﻻﺍ

 .

ﺍﻟﺘﻲ ﺳﻨﻮﺿﺤﻬﺎ ﻓﻲ ﺍﻟﻔﻘﺮﺍﺕ ﺃﺩﻧﺎﻩ

 

1

.

 

 ﺍﻹﻳﻌﺎﺯ ﺍﻟﺸﺮﻃﻲ

if – else

 

 :

ﻭﻳﻤﺜﻞ ﻫﺬﺍ ﺍﻟﺘﺮﻛﻴﺐ ﺑﺎﻟﺼﻴﻐﺔ ﺍﻟﻘﺎﻋﺪﻳﺔ ﺍﻟﺘﺎﻟﻴﺔ

If ( expression ) 

      Statement_1; 

else 

      statement_2; 

 

 ﺣﻴﺚ ﻳﻤﻜﻦ ﺃﻥ ﺗﻜﻮﻥ ﻛﻞ ﻣﻦ ﺍﻟﻌﺒﺎﺭﺗﻴﻦ

statement_1& statement_2

  ﻋﺒﺎﺭﺓ ﺑﺴﻴﻄﺔ

(simple statement)

  ﺃﻭ ﻣﺮﻛﺒﺔ

(compound statement)

  ﻭﺍﻟﺘﻲ ﺑﺪﻭﺭﻫﺎ ﻫﻲ ﻋﺒﺎﺭﺓ ﻋﻦ

 ﻣﺠﻤﻮﻋﺔ ﻋﺒﺎﺭﺍﺕ ﺑﺴﻴﻄﺔ ﻣﺤﺼﻮﺭﺓ ﺩﺍﺧﻞ ﺍﻟﻘﻮﺳﻴﻦ

{ }

  .  ﻭ ﻳﺴﺘﺨﺪﻡ ﻣﺼﻄﻠﺢ ﺍﻟﻌﺒﺎﺭﺓ

(statement)

  ﺑﺼﻮﺭﺓ ﻋﺎﻣﺔ ﻟﻺﺷﺎﺭﺓ ﺇﻟﻰ ﻋﺒﺎﺭﺓ ﺑﺴﻴﻄﺔ ﺃﻭ ﻋﺒﺎﺭﺓ ﻣﺮﻛﺒﺔ. ﺇﺫﺍ ﻛﺎﻧﺖ ﻗﻴﻤﺔ ﺍﻟﻤﻘﺪﺍﺭ

(expression)

  ﺳﺎﻟﺒﺔ ﺃﻭ ﻣﻮﺟﺒﺔ ﻓﺴﻴﻨﻔﺬ

statement_1

  ﺃﻣﺎ ﺇﺫﺍ ﻛﺎﻧﺖ ﺍﻟﻘﻴﻤﺔ ﺻﻔﺮ ﻓﺴﻴﻨﻔﺬ ﺍﻹﻳﻌﺎﺯ

statement_2

  . ﻻﺣﻆ ﺃﻧﻪ ﻓﻲ ﻟﻐﺔ

++

C

  ﻗﻴﻤﺔ ﺍﻟﺘﻌﺒﻴﺮ ﺇﺫﺍ ﻛﺎﻧﺖ ﺃﻱ ﻋﺪﺩ ﻏﻴﺮ ﺍﻟﺼﻔﺮ ﺗﻌﻨﻲ

 ﺍﻹﻳﺠﺎﺏ

(true)

  ﻭﻗﻴﻤﺔ ﺍﻟﺼﻔﺮ ﺗﻌﻨﻲ ﺍﻟﻨﻔﻲ

(false)

  . ﻛﻤﺎ ﺗﻢ ﺍﻹﺷﺎﺭﺓ ﺇﻟﻰ ﺫﻟﻚ ﻓﻲ ﺃﺩﻭﺍﺕ ﺍﻟﻌﻼﻗﺔ

 .

)ﺍﻟﻤﻘﺎﺭﻧﺔ( ﻭ ﺍﻷﺩﻭﺍﺕ ﺍﻟﻤﻨﻄﻘﻴﺔ

)

 ﻣﺜﺎﻝ

1

:(

 

if(x>y) 

Max=x; 

else 

Max=y; 


background image

 

 

)

 ﻣﺜﺎﻝ

2

:(

 

if(x>y){ 

Max=x; 

Min=y;} 

else{ 

Max=y; 

Min=x; 

 ﻻﺣﻆ ﻓﻲ ﻫﺬﺍ ﺍﻟﻤﺜﺎﻝ ﺍﺳﺘﺨﺪﻣﺖ ﺍﻷﻗﻮﺍﺱ

{ }

  ﻭﺫﻟﻚ ﻟﻮﺟﻮﺩ ﺃﻛﺜﺮ ﻣﻦ ﻋﺒﺎﺭﺓ ﺑﺴﻴﻄﺔ ﻭﺍﺣﺪﺓ ﻳﺠﺐ

.

ﺗﻨﻔﻴﺬﻫﺎ ﻓﻲ ﻛﻼ ﺍﻟﺤﺎﻟﺘﻴﻦ

 

)

 ﻣﺜﺎﻝ

3

:(

 :

 ﺍﻟﺒﺮﻧﺎﻣﺞ ﺍﻟﺘﺎﻟﻲ ﻳﻘﺮﺃ ﺭﻗﻢ ﺻﺤﻴﺢ ﻭ ﻳﻄﺒﻊ ﻓﻴﻤﺎ ﺇﺫﺍ ﻛﺎﻥ ﺍﻟﺮﻗﻢ ﺯﻭﺟﻲ ﺃﻡ ﻓﺮﺩﻱ

#include<iostream.h> 

main( ){ 

int number; 

cout<<"\n Enter an integer: "; 

cin>>number; 

if(number%2==0) 

cout<<"\n Number "<<number<<" is even."; 

else 

cout<<"\n Number "<<number<<" is odd."; 

 ﺍﻟﺠﺰء ﺍﻟﺜﺎﻧﻲ ﻣﻦ ﻋﺒﺎﺭﺓ

if-else

  ﻳﻤﻜﻦ ﺃﻥ ﻳﻜﻮﻥ ﺍﺧﺘﻴﺎﺭﻳﺎ ﻋﻨﺪ ﻋﺪﻡ ﺍﻟﺤﺎﺟﺔ ﺇﻟﻴﻪ ﻭﻓﻲ ﻫﺬﻩ ﺍﻟﺤﺎﻟﺔ

 :

ﺗﻜﻮﻥ ﺍﻟﺼﻴﻐﺔ ﺍﻟﻘﺎﻋﺪﻳﺔ ﻟﻺﻳﻌﺎﺯ

if ( expression ) 

    statement; 

 ﻓﻲ ﻫﺬﻩ ﺍﻟﺤﺎﻟﺔ ﺗﻨﻔﺬ ﺍﻟﻌﺒﺎﺭﺓ

statement

  ﺇﺫﺍ ﻛﺎﻧﺖ ﻗﻴﻤﺔ ﺍﻟﻤﻘﺪﺍﺭ ﺍﻟﻤﻨﻄﻘﻴﺔ ﻧﻌﻢ

(true)

  . ﺃﻣﺎ ﺇﺫﺍ ﻛﺎﻧﺖ

 ﻗﻴﻤﺔ ﺍﻟﻤﻘﺪﺍﺭ ﺍﻟﻤﻨﻄﻘﻴﺔ ﻛﻼ

(false)

  ﻓﺴﻴﺴﺘﻤﺮ ﺍﻟﺒﺮﻧﺎﻣﺞ ﺩﻭﻥ ﺗﻨﻔﻴﺬ ﺍﻟﻌﺒﺎﺭﺓ

statement

 . 

 

 


background image

 

 

2

.

 

 ﺍﻹﻳﻌﺎﺯ ﺍﻟﺸﺮﻃﻲ

if-else

:  ﺍﻟﻤﺘﺪﺍﺧﻞ

 

     ﺇﻳﻌﺎﺯ

if-else

  ﺍﻟﻤﺘﺪﺍﺧﻞ ﻳﻌﻨﻲ ﺃﻥ ﻳﻜﻮﻥ ﺍﻹﻳﻌﺎﺯ

if-else

  ﻧﻔﺴﻪ ﻛﺄﺣﺪ ﻋﺒﺎﺭﺍﺕ ﺇﻳﻌﺎﺯ

if-else

 

)

 ﺃﺧﺮ ﻛﻤﺎ ﻣﺒﻴﻦ ﻓﻲ ﺍﻟﻤﺜﺎﻝ

4

 .

( ﺃﺩﻧﺎﻩ

)

 ﻣﺜﺎﻝ

4

:(

 :

 ﺍﻟﺒﺮﻧﺎﻣﺞ ﺍﻟﺘﺎﻟﻲ ﻳﻘﺮﺃ ﺛﻼﺛﺔ ﺃﻋﺪﺍﺩ ﺻﺤﻴﺤﺔ ﻭﻳﻜﺘﺐ ﺃﻛﺒﺮﻫﺎ ﻋﻠﻰ ﺍﻟﺸﺎﺷﺔ

#include<iostream.h> 
main( ){ 
int a,b,c; 
cout<<"\n Enter three integers: "; 
cin>>a>>b>>c; 
if(a>b) 
if(a>c)cout<<"\n Max= "<<a; 
else cout<<"\n Max= "<<c; 
else 
if(b>c)cout<<"\n Max= "<<b; 
else cout<<"\n Max= "<<c; 

 ﻋﻨﺪ ﺍﺳﺘﺨﺪﺍﻡ ﺇﻳﻌﺎﺯ

if-else 

  ﺍﻟﻤﺘﺪﺍﺧﻞ ﻭﻋﻨﺪﻣﺎ ﻻ ﻳﻮﺟﺪ ﺍﻟﺠﺰء

else

  ﻟﻮﺍﺣﺪﺓ ﺃﻭ ﺃﻛﺜﺮ ﻣﻦ ﻋﺒﺎﺭﺍﺕ

if

  ﻗﺪ ﻳﻜﻮﻥ ﻫﻨﺎﻙ ﻏﻤﻮﺽ ﻟﻠﻤﺒﺮﻣﺞ ﻭﻫﻮ ﻷﻱ

if

  ﺗﺘﺒﻊ ﻛﻞ

else

  ﺍﻟﺠﻮﺍﺏ ﻫﻮ ﺃﻧﻪ ﻓﻲ ﻟﻐﺔ؟ 

++

C

 

 ﻭﻋﻨﺪ ﻋﺪﻡ ﺍﻻﺳﺘﻌﺎﻧﺔ ﺑﺎﻷﻗﻮﺍﺱ ﻟﺘﺤﺪﻳﺪ ﺍﻟﻌﺎﺋﺪﻳﺔ ﺗﺮﺗﺒﻂ ﻛﻞ

else

  ﺑﺄﻗﺮﺏ

if

 ـ ﻏﻴﺮ ﻣﺮﺗﺒﻄﺔ ﺑ

else

 . 

 :

ﻭﻳﻤﻜﻦ ﺍﺳﺘﺨﺪﺍﻡ ﺍﻷﻗﻮﺍﺱ ﻟﺘﻐﻴﻴﺮ ﻫﺬﻩ ﺍﻟﻘﺎﻋﺪﺓ ﻛﻤﺎ ﻳﻠﻲ

if (expression_1){ 

    if (expression_2) 

       statement_1; 

else 

     statement_2; 

 ﻓﻲ ﻫﺬﻩ ﺍﻟﺤﺎﻟﺔ ﺳﺘﻨﻔﺬ ﺍﻟﻌﺒﺎﺭﺓ

statement_1

  ﺇﺫﺍ ﻛﺎﻧﺖ ﻗﻴﻤﺔ ﻛﻞ ﻣﻦ ﺍﻟﻤﻘﺪﺍﺭﻳﻦ

expression_1

  ﻭ

expression_2

 . ﺃﻣﺎ ﺇﺫﺍ ﻛﺎﻧﺖ ﻗﻴﻤﺔ"ﻢﻌﻧ" 

expression_1

 

"

ﻛﻼ"

  ﻓﺴﺘﻨﻔﺬ ﺍﻟﻌﺒﺎﺭﺓ

statement_2

  . ﺃﻣﺎ ﺇﺫﺍ ﻛﺎﻧﺖ ﻗﻴﻤﺔ

expression_1

  ﻭﻗﻴﻤﺔ"ﻢﻌﻧ" 

expression_2

  ﻓﻠﻦ"ﻼﻛ" 

 .

ﻳﺤﺪﺙ ﺷﻲء

 

 

 


background image

 

 

3

.

 

 ﺍﻹﻳﻌﺎﺯ ﺍﻟﺸﺮﻃﻲ

if-else if

 

 :

ﺍﻟﺸﻜﻞ ﺍﻟﻘﻮﺍﻋﺪﻱ ﻟﻬﺬﺍ ﺍﻹﻳﻌﺎﺯ ﻫﻮ ﻛﺂﻻﺗﻲ

if (expression_1) 
    statement_1; 
else if (expression_2) 
          statement_2; 
else if (expression_3) 
       statement_3; 
…………………… 
else if (expression_n) 
           statement_n; 
else 
     statement_last; 

 

 ﻳﻘﻮﻡ ﺍﻟﻤﻌﺎﻟﺞ ﺑﺎﺣﺘﺴﺎﺏ ﺍﻟﻘﻴﻢ ﺍﻟﻤﻨﻄﻘﻴﺔ ﻟﻠﻌﺒﺎﺭﺍﺕ ﺍﻟﻤﻨﻄﻘﻴﺔ ﻣﻦ ﺍﻷﻋﻠﻰ ﺇﻟﻰ ﺍﻷﺳﻔﻞ ﻭﻳﻘﻮﻡ ﺑﺘﻨﻔﻴﺬ ﺃﻭﻝ

 ﻣﺠﻤﻮﻋﺔ ﺇﻳﻌﺎﺯﺍﺕ

(statement_i)

  ﻟﻠﺠﺰء

i

  ﺍﻟﺬﻱ ﺗﻜﻮﻥ ﻗﻴﻤﺘﻪ ﺍﻟﻤﻨﻄﻘﻴﺔ ﻟﻠﻌﺒﺎﺭﺓ

expression_i

 

  ﻭﺗﻬﻤﻞ ﺑﺎﻗﻲ ﺍﻷﺟﺰﺍء ﻭﻳﻨﺘﻘﻞ ﺍﻟﺘﻨﻔﻴﺬ ﺇﻟﻰ ﺍﻹﻳﻌﺎﺯ ﺍﻟﺬﻱ ﻳﻠﻲ ﺍﻹﻳﻌﺎﺯ ﺍﻟﺸﺮﻃﻲ"ﻢﻌﻧ"

if-else if

  . ﺃﻣﺎ

 ﺇﺫﺍ ﻛﺎﻧﺖ ﺍﻟﻘﻴﻤﺔ ﺍﻟﻤﻨﻄﻘﻴﺔ ﻟﻜﺎﻓﺔ ﺍﻟﻌﺒﺎﺭﺍﺕ

expression_i

  ﻓﻔﻲ ﻫﺬﻩ ﺍﻟﺤﺎﻟﺔ ﺗﻨﻔﺬ ﻣﺠﻤﻮﻋﺔ"ﻼﻛ" 

 ﺍﻹﻳﻌﺎﺯﺍﺕ ﺍﻷﺧﻴﺮﺓ

statement_last

  . ﺍﻟﺠﺰء ﺍﻷﺧﻴﺮ ﻣﻦ ﺍﻹﻳﻌﺎﺯ ﺍﺧﺘﻴﺎﺭﻱ. ﻓﻲ ﺣﺎﻟﺔ ﻋﺪﻡ ﻭﺟﻮﺩ

 ﻫﺬﺍ ﺍﻟﺠﺰء ﻭﻛﻮﻥ ﺍﻟﻘﻴﻤﺔ ﺍﻟﻤﻨﻄﻘﻴﺔ ﻟﻜﺎﻓﺔ ﺍﻟﻌﺒﺎﺭﺍﺕ

expression_i

  ﻓﺴﻮﻑ ﻟﻦ ﺗﻨﻔﺬ ﺃﻱ"ﻼﻛ" 

 ﺇﻳﻌﺎﺯﺍﺕ ﻭﻳﺴﺘﻤﺮ ﺍﻟﺒﺮﻧﺎﻣﺞ ﺑﺘﻨﻔﻴﺬ ﺍﻟﻌﺒﺎﺭﺍﺕ ﺍﻟﺘﻲ ﺗﻠﻲ ﺍﻹﻳﻌﺎﺯ ﺍﻟﺸﺮﻃﻲ

if-else if

 . 

 

)

 ﻣﺜﺎﻝ

5

:(

 :

 ﺍﻟﺒﺮﻧﺎﻣﺞ ﺍﻟﺘﺎﻟﻲ ﻳﻘﺮﺃ ﺛﻼﺛﺔ ﺃﻋﺪﺍﺩ ﺻﺤﻴﺤﺔ ﻭﻳﻜﺘﺐ ﺃﻛﺒﺮﻫﺎ ﻋﻠﻰ ﺍﻟﺸﺎﺷﺔ

#include <iostream.h> 
main( ){ 
int max,a,b,c; 
cout<<"\n Enter three integers: "; 
cin>>a>>b>>c; 
if((a>=b)&&(a>=c)) 
max=a; 
else if((b>=a)&&(b>=c)) 
max=b; 
else 
max=c; 
cout<<"\n Maximum number is: "<<max; 

 


background image

 

 

4

.

 

 ﺍﻹﻳﻌﺎﺯ ﺍﻟﺸﺮﻃﻲ

switch

 

 :

ﺍﻟﺸﻜﻞ ﺍﻟﻘﻮﺍﻋﺪﻱ ﻟﻬﺬﺍ ﺍﻹﻳﻌﺎﺯ ﻫﻮ

switch (integer expression) { 

        case constant_1: statements_ sequence_1; 

                                 break; 

        case constant_2: statements_ sequence_2; 

                                 break; 

        ……………………………………….. 

        case constant_n: statements_ sequence_n; 

                                 break; 

        default: statements_ sequence_last; 

}  

 

 

 ﺇﺫﺍ ﻛﺎﻧﺖ ﻗﻴﻤﺔ ﺍﻟﻤﻘﺪﺍﺭ

(integer expression)

  ﻣﺴﺎﻭﻳﺔ ﺇﻟﻰ

constant_1

  ﻓﻴﺘﻢ ﺗﻨﻔﻴﺬ ﻣﺠﻤﻮﻋﺔ

 ﺍﻟﻌﺒﺎﺭﺍﺕ

statements_ sequence_1

  ﻭﻋﻨﺪ ﺗﻨﻔﻴﺬ ﺍﻹﻳﻌﺎﺯ

break

  ﻳﻨﺘﻘﻞ ﺍﻟﺘﻨﻔﻴﺬ ﻣﺒﺎﺷﺮﺓ ﺇﻟﻰ

 ﺍﻟﻌﺒﺎﺭﺓ ﺍﻟﺘﻲ ﺗﻠﻲ ﺍﻹﻳﻌﺎﺯ

switch

  . ﺃﻣﺎ ﺇﺫﺍ ﻛﺎﻧﺖ ﻗﻴﻤﺔ ﺍﻟﻤﻘﺪﺍﺭ ﻣﺴﺎﻭﻳﺔ ﺇﻟﻰ

constant_2

  ﻓﻴﺘﻢ ﺗﻨﻔﻴﺬ

 ﻣﺠﻤﻮﻋﺔ ﺍﻟﻌﺒﺎﺭﺍﺕ

statements_ sequence_2

  ﻓﻘﻂ ﻭﻋﻨﺪ ﺗﻨﻔﻴﺬ ﺍﻹﻳﻌﺎﺯ

break

  ﻳﻨﺘﻘﻞ ﺍﻟﺘﻨﻔﻴﺬ

 ﺇﻟﻰ ﻣﺎ ﺑﻌﺪ ﺇﻳﻌﺎﺯ

switch

  ﻣﺒﺎﺷﺮﺓ ﻭﻫﻜﺬﺍ. ﺇﺫﺍ ﻟﻢ ﺗﻜﻦ ﻗﻴﻤﺔ ﺍﻟﻤﻘﺪﺍﺭ ﻣﺴﺎﻭﻳﺔ ﺇﻟﻰ ﺃﻱ ﻣﻦ ﺍﻟﺜﻮﺍﺑﺖ

constant_1, constant_2, ….

  ﻓﻌﻨﺪﺋﺬ ﺗﻨﻔﺬ ﻣﺠﻤﻮﻋﺔ ﺍﻟﻌﺒﺎﺭﺍﺕ

statements_ sequence_ 

last

  ﻓﻘﻂ. ﺍﻟﺠﺰء ﺍﻷﺧﻴﺮ ﻣﻦ ﺍﻹﻳﻌﺎﺯ

(default)

  ﺍﺧﺘﻴﺎﺭﻱ ﻭﻳﻤﻜﻦ ﺇﻫﻤﺎﻟﻪ ﻭﻓﻲ ﻫﺬﻩ ﺍﻟﺤﺎﻟﺔ ﻟﻦ ﺗﻨﻔﺬ

 .

ﺇﻟﻰ ﺃﺣﺪ ﺍﻟﺜﻮﺍﺑﺖًﺎﻳﻭﺎﺴﻣ ﺯﺎﻌﻳﻹﺍ ﺭﺍﺪﻘﻣ ﻦﻜﻳ ﻢﻟ ﺍﺫﺇ ﺓﺭﺎﺒﻋ ﻱﺃ

 ﺇﺫﺍ ﻟﻢ ﺗﻜﻦ ﻋﺒﺎﺭﺓ

break

  ﻣﻮﺟﻮﺩﺓ ﻓﻲ ﻧﻬﺎﻳﺔ ﺍﻟﻤﺠﻤﻮﻋﺔ ﺍﻟﺘﻲ ﻳﺒﺪﺃ ﻋﻨﺪﻫﺎ ﺍﻟﺘﻨﻔﻴﺬ ﻓﺴﻮﻑ ﻳﺴﺘﻤﺮ

 ﺍﻟﻤﻌﺎﻟﺞ ﺑﺘﻨﻔﻴﺬ ﻣﺠﻤﻮﻋﺔ ﺍﻟﻌﺒﺎﺭﺍﺕ ﺍﻟﻼﺣﻘﺔ ﻭﻫﻜﺬﺍ ﺇﻟﻰ ﺃﻥ ﻳﺼﺎﺩﻑ ﺍﻟﻤﻌﺎﻟﺞ ﻋﺒﺎﺭﺓ

break

  ﺃﻭ ﻳﺼﻞ

 ﺇﻟﻰ ﻧﻬﺎﻳﺔ ﺍﻹﻳﻌﺎﺯ

switch

 . 

 

 

 

 


background image

 

 

)

 ﻣﺜﺎﻝ

6

:(

 :

 ﺍﻟﺒﺮﻧﺎﻣﺞ ﺍﻟﺘﺎﻟﻲ ﻳﻘﺮﺃ ﻋﺪﺩ ﺻﺤﻴﺢ ﻭﻳﻜﺘﺐ ﺍﺳﻢ ﺍﻟﻴﻮﻡ ﺍﻟﺬﻱ ﻳﻘﺎﺑﻠﻪ

#include<iostream.h> 
main( ){ 
int number; 
cout<<"\n Enter a number in the range 1-7: "; 
cin>>number; 
switch (number) { 
case 1: cout<<"\n Saturday."; 
 

 

 break; 

case 2: cout<<"\n Sunday."; 
 

 

 break; 

case 3: cout<<"\n Monday."; 
 

 

 break; 

case 4: cout<<"\n Tuesday."; 
 

 

 break; 

case 5: cout<<"\n Wednesday."; 
 

 

 break; 

case 6: cout<<"\n Thursday."; 
 

 

 break; 

case 7:cout<<"\n Friday."; 
 

 

 break; 

default : cout<<"\n Number out of range!!"; 


 


background image

 

 

 

 ﺍﻟﺘﺮﺍﻛﻴﺐ ﺍﻟﺘﻜﺮﺍﺭﻳﺔ

Loops

 

 ﺗﻮﻓﺮ ﻟﻐﺔ

++

C

 :

 ﺛﻼﺛﺔ ﺃﻧﻮﺍﻉ ﻣﻦ ﺍﻟﺘﺮﺍﻛﻴﺐ ﺃﻭ ﺍﻹﻳﻌﺎﺯﺍﺕ ﺍﻟﺘﻜﺮﺍﺭﻳﺔ

 

 ﺍﻟﺘﺮﻛﻴﺐ ﺍﻟﺘﻜﺮﺍﺭﻱ

for

 

 

 

 ﺍﻟﺘﺮﻛﻴﺐ ﺍﻟﺘﻜﺮﺍﺭﻱ

while

 

 

 

 ﺍﻟﺘﺮﻛﻴﺐ ﺍﻟﺘﻜﺮﺍﺭﻱ

do – while 

 

 

 

1

(

 

 ﺍﻟﺘﺮﻛﻴﺐ ﺍﻟﺘﻜﺮﺍﺭﻱ

for

 

 

 :

ﺍﻟﺸﻜﻞ ﺍﻟﻘﻮﺍﻋﺪﻱ ﻟﻬﺬﺍ ﺍﻹﻳﻌﺎﺯ ﻫﻮ

for(initialization expression; expression; increment) 

statement;       /* body of the loop */ 

  ﺍﻟﻌﺒﺎﺭﺓ ﺍﻟﻤﻮﺟﻮﺩﺓ ﻓﻲ ﺍﻟﻘﺴﻢ ﺍﻷﻭﻝًﻻﻭﺃ ﺬﻔﻨﺗ :ﻲﻟﺎﺘﻟﺎﻛ ﺯﺎﻌﻳﻹﺍ ﺍﺬﻫ ﺬﻴﻔﻨﺗ ﺔﻘﻳﺮﻃ ﻒﺻﻭ ﻦﻜﻤﻳ

(initialization expression)

 ﺎﺯـــــﻌﻳﻹﺍ ﻰﻠﻋ ﺓﺮــﻄﻴﺴﻟﺍ ﺕﺍﺮﻴﻐﺘﻤﻟ ﺔـــــﻴﺋﺍﺪﺘﺑﻻﺍ ﻢﻴﻘﻟﺍ ﺪﻳﺪﺤﺘﻟ 

(loop control variables)

  . ﺛﻢ ﻳﻨﺘﻘﻞ ﺍﻟﺘﻨﻔﻴﺬ ﺇﻟﻰ ﺍﻟﻌﺒﺎﺭﺓ ﺍﻟﻤﻨﻄﻘﻴﺔ

logical expression

 

 ـ ﻳﺘﻮﻗﻒ ﺗﻨﻔﻴﺬ ﺍﻟ"ﻼﻛ" ﺔﻤﻴﻘﻟﺍ ﺖﻧﺎﻛ ﺍﺫﺈﻓ ﺎﻬﺑﺎﺴﺘﺣﺍ ﻢﺘﻳﻭ

for

  ﻭﻳﻨﺘﻘﻞ ﺍﻟﺘﻨﻔﻴﺬ ﺇﻟﻰ ﺍﻹﻳﻌﺎﺯ ﺍﻟﺬﻱ ﻳﻠﻲ

ـﺍﻟ

for

  ﻓﻴﺘﻢ ﺗﻨﻔﻴﺬ ﺍﻹﻳﻌﺎﺯ"ﻢﻌﻧ" ﺔﻴﻘﻄﻨﻤﻟﺍ ﺔﻤﻴﻘﻟﺍ ﺖﻧﺎﻛ ﺍﺫﺇ ﺎﻣﺃ .ﺓﺮﺷﺎﺒﻣ 

statement

  ﺍﻟﺬﻱ ﻗﺪ ﻳﻜﻮﻥ

  ﻭﻳﺴﻤﻰ ﺍﻟﺒﺪﻥًﺎﺒﻛﺮﻣ ﻭﺃ ًﺎﻄﻴﺴﺑ ًﺍﺯﺎﻌﻳﺇ

loop body

  . ﺑﻌﺪ ﺫﻟﻚ ﻳﻨﺘﻘﻞ ﺍﻟﺘﻨﻔﻴﺬ ﺇﻟﻰ ﺍﻟﻌﺒﺎﺭﺓ

increment

  ﻭﺍﻟﺘﻲ ﺗﺤﺪﺩ ﻓﻴﻬﺎ ﻃﺒﻴﻌﺔ ﺗﻐﻴﺮ ﻗﻴﻢ ﺍﻟﻤﺘﻐﻴﺮﺍﺕ ﺍﻟﻤﺴﻴﻄﺮﺓ ﻋﻠﻰ ﺍﻟﻌﻤﻠﻴﺔ ﺍﻟﺘﻜﺮﺍﺭﻳﺔ ﻭﻣﻦ

 ﺛﻢ ﻳﻨﺘﻘﻞ ﺍﻟﺘﻨﻔﻴﺬ ﺇﻟﻰ ﺍﻟﻌﺒﺎﺭﺓ ﺍﻟﻤﻨﻄﻘﻴﺔ ﻭﻳﺘﻢ ﺍﺣﺘﺴﺎﺑﻬﺎ ﻭﻓﻲ ﺿﻮء ﺍﻟﻘﻴﻤﺔ ﺍﻟﻤﻨﻄﻘﻴﺔ ﺍﻟﻤﺤﺘﺴﺒﺔ ﻳﻨﺘﻘﻞ

 ﺍﻟﺘﻨﻔﻴﺬ ﺃﻣﺎ ﺇﻟﻰ ﻣﺎ ﺑﻌﺪ ﺍﻹﻳﻌﺎﺯ

for

  ﺃﻭ ﺗﻨﻔﺬ ﺍﻟﻌﺒﺎﺭﺓ

statement

  ﻭﻣﻦ ﺛﻢ ﻳﻨﺘﻘﻞ ﺇﻟﻰ ﺍﻟﻌﺒﺎﺭﺓ

increment

 ."

ﻛﻼ" ﺯﺎﻌﻳﻺﻟ ﺔﻴﻘﻄﻨﻤﻟﺍ ﺔﻤﻴﻘﻟﺍ ﺢﺒﺼﺗ ﺎﻣﺪﻨﻋ ﻱﺭﺍﺮﻜﺘﻟﺍ ﺯﺎﻌﻳﻹﺍ ﻒﻗﻮﺘﻳ ﻥﺇ ﻰﻟﺇ ﺍﺬﻜﻫﻭ 

)

 ﻣﺜﺎﻝ

7

(

  ﺍﻟﺒﺮﻧﺎﻣﺞ ﺍﻟﺘﺎﻟﻲ ﻳﻄﺒﻊ ﺍﻷﻋﺪﺍﺩ ﻣﻦ:

1

  ﺇﻟﻰ

10

 :

#include <iostream.h> 

main( ){ 

int n; 

for(n=1;n<=10;++n) 

cout<<"\n "<<n; 

 


background image

 

 

)

 ﻣﺜﺎﻝ

8

(

  ﺍﻟﻤﺜﺎﻝ ﺍﻟﺘﺎﻟﻲ ﻳﻄﺒﻊ ﺍﻷﻋﺪﺍﺩ ﺍﻟﺰﻭﺟﻴﺔ ﺑﻴﻦ:

1

  ﺇﻟﻰ

10

 : 

# include <iostream.h> 

main( ){int n; 

for(n=1;n<=10;++n) 

if(n%2==0) 

cout<<"\n "<<n; 

 ﻣﻴﺰﺍﺕ ﺍﻟﺘﺮﻛﻴﺐ

for

 

 ﻳﻤﺘﻠﻚ ﺍﻟﺘﺮﻛﻴﺐ

for

 :

 ﺧﺼﺎﺋﺺ ﻏﻴﺮ ﻣﺘﻮﻓﺮﺓ ﻓﻲ ﻟﻐﺎﺕ ﺑﺮﻣﺠﻴﺔ ﺃﺧﺮﻯ ﻭﻫﺬﻩ ﺍﻟﺨﺼﺎﺋﺺ

1

.

 

 ـﺇﻫﻤﺎﻝ ﺑﻌﺾ ﺃﺟﺰﺍء ﺍﻟ

for loop

 

 

 ــﻳﻤﻜﻦ ﺇﻫﻤﺎﻝ ﻭﺍﺣﺪ ﺃﻭ ﺃﻛﺜﺮ ﻣﻦ ﻣﻜﻮﻧﺎﺕ ﺍﻟ

for

)

  ﻭﻛﻤﺎ ﻣﺒﻴﻦ ﻓﻲ ﺍﻟﻤﺜﺎﻝ

9

 :

( ﺃﺩﻧﺎﻩ

 

)

 ﻣﺜﺎﻝ

9

:(

  ﺍﻟﺒﺮﻧﺎﻣﺞ ﺍﻟﺘﺎﻟﻲ ﻳﺤﺘﻮﻱ ﻋﻠﻰ ﺗﺮﻛﻴﺐ ﺗﻜﺮﺍﺭﻱ ﻣﻦ ﻧﻮﻉ

for

 ــ ﺑﺪﻭﻥ ﺟﺰء ﺍﻟ

increment

 ــ ﻭﻳﺴﺘﻤﺮ ﺍﻟ

loop

  ﺑﺎﻟﺘﻨﻔﻴﺬ ﺇﻟﻰ ﺇﻥ ﻳﺘﻢ ﻗﺮﺍءﺓ ﺍﻟﺤﺮﻑ

'N'

  ﺃﻭ

'Y'

 : 

# include <iostream.h> 

main( ){char ch; 

for(ch='A';ch!='N' && ch!='Y';){ 

cout<<"\n Enter either Y or N:"; 

cin>>ch; 

}} 

2

.

 

 ﺍﺳﺘﺨﺪﺍﻡ ﺃﻛﺜﺮ ﻣﻦ ﻣﺘﻐﻴﺮ ﺳﻴﻄﺮﺓ ﻭﺍﺣﺪ

 

)

 ﻳﻤﻜﻦ ﺍﺳﺘﺨﺪﺍﻡ ﺃﻛﺜﺮ ﻣﻦ ﻣﺘﻐﻴﺮ ﺳﻴﻄﺮﺓ ﻭﺍﺣﺪ ﻛﻤﺎ ﻣﺒﻴﻦ ﻓﻲ ﺍﻟﻤﺜﺎﻝ

10

 :

( ﺍﻟﺘﺎﻟﻲ

 

)

 ﻣﺜﺎﻝ

10

:(

  ﺍﻟﺒﺮﻧﺎﻣﺞ ﺍﻟﺘﺎﻟﻲ ﻳﻄﺒﻊ ﺍﻷﻋﺪﺍﺩ ﻣﻦ

0

  ﺇﻟﻰ

98

 : 

# include <iostream.h> 

main( ){int x,y; 

for (x=0,y=0 ;x<50,y<50 ;++x,++y) 

cout<<" \t"<<x+y; 


background image

 

 

 

           ﻳﻼﺣﻆ ﻓﻲ ﻫﺬﺍ ﺍﻟﻤﺜﺎﻝ ﺗﻢ ﺍﺳﺘﺨﺪﺍﻡ ﻣﺘﻐﻴﺮﻳﻦ ﻟﻠﺴﻴﻄﺮﺓ ﻋﻠﻰ ﺍﻟﻌﻤﻠﻴﺔ ﺍﻟﺘﻜﺮﺍﺭﻳﺔ ﺣﻴﺚ ﺃﺳﻨﺪﺕ ﻟﻬﻤﺎ

 ــ ﺍﺑﺘﺪﺍﺋﻴﺔ ﻓﻲ ﺟﺰء ﺍﻟًﺎﻤﻴﻗ

initialization

 ( ﻟﻠﻔﺼﻞ ﺑﻴﻦ,) ﺓﺯﺭﺎﻔﻟﺍ ﻡﺍﺪﺨﺘﺳﺍ ًﺎﻀﻳﺃ ﻆﺣﻼﻳ ﺎﻤﻛ . 

 ﻣﻜﻮﻧﺎﺕ ﺍﻷﺟﺰﺍء ﺍﻟﺜﻼﺛﺔ ﻓﻲ ﺣﻴﻦ ﺗﺴﺘﺨﺪﻡ ﺍﻟﻔﺎﺭﺯﺓ ﺍﻟﻤﻨﻘﻮﻃﺔ ﻟﻠﻔﺼﻞ ﺑﻴﻦ ﺍﻷﺟﺰﺍء ﺍﻟﺜﻼﺛﺔ

 ﺍﻟﺮﺋﻴﺴﻴﺔ. ﻟﻴﺲ ﺑﺎﻟﻀﺮﻭﺭﺓ ﺃﻥ ﻳﻜﻮﻥ ﺗﻮﻗﻒ ﺍﻟﻌﻤﻠﻴﺔ ﺍﻟﺘﻜﺮﺍﺭﻳﺔ ﻋﻠﻰ ﺃﺳﺎﺱ ﺍﺧﺘﺒﺎﺭ ﻗﻴﻢ ﻣﺘﻐﻴﺮﺍﺕ

 ﺍﻟﺴﻴﻄﺮﺓ ﺿﻤﻦ ﺍﻟﺘﻌﺒﻴﺮ ﺍﻟﻤﻨﻄﻘﻲ ﻓﻴﻤﻜﻦ ﺃﻥ ﻧﺨﺘﺒﺮ ﻗﻴﻢ ﻣﺘﻐﻴﺮﺍﺕ ﺃﺧﺮﻯ ﻣﺴﺘﺨﺪﻣﺔ ﻓﻲ ﺑﺪﻥ

 .

ﺍﻹﻳﻌﺎﺯ ﺍﻟﺘﻜﺮﺍﺭﻱ

 

3

.

 

ﺍﻟﺘﻜﺮﺍﺭ ﺍﻟﻐﻴﺮ ﻣﻨﺘﻬﻲ

 

 ﻳﺒﻨﻰ ﺍﻟﺘﻜﺮﺍﺭ ﺍﻟﻐﻴﺮ ﻣﻨﺘﻬﻲ

(infinite loop)

 ﻲـــﻘﻄﻨﻤﻟﺍ ﺮــــــــــﻴﺒﻌﺘﻟﺍ ءﺰﺟ ﻙﺮــــﺘﺑ 

logical expression

)

  ﻓﺎﺭﻍ ﻛﻤﺎ ﻓﻲ ﺍﻟﻤﺜﺎﻝ

11

 :

( ﺍﻟﺘﺎﻟﻲ

)

 ﻣﺜﺎﻝ

11

:(

  ﺍﻟﺒﺮﻧﺎﻣﺞ ﺍﻟﺘﺎﻟﻲ ﻳﻘﺮﺃ ﺣﺮﻑ ﺻﻐﻴﺮ ﻭﻳﻜﺘﺐ ﺍﻟﺤﺮﻑ ﺍﻟﻜﺒﻴﺮ ﺍﻟﻤﻘﺎﺑﻞ ﻭﻳﻼﺣﻆ ﺍﻧﻪ ﻻ

 :

ﺗﻮﺟﺪ ﻭﺳﻴﻠﺔ ﻹﻳﻘﺎﻑ ﺍﻹﻳﻌﺎﺯ ﺍﻟﺘﻜﺮﺍﺭﻱ

# include <stdio.h> 

# include <ctype.h> 

main( ){char ch; 

for( ; ; ) {printf("\n Enter a small letter:"); 

scanf("\n%c",&ch); 

printf("Captital letter is %c",toupper(ch)); 

}} 

 

4

.

 

 ــﺍﺳﺘﺨﺪﺍﻡ ﺍﻟ

for loop

  ﺑﺪﻭﻥ ﺑﺪﻥ

 

 ﻳﻤﻜﻦ ﺍﺳﺘﺨﺪﺍﻡ ﺍﻟﻌﺒﺎﺭﺓ ﺍﻟﻔﺎﺭﻏﺔ

empty statement 

  ﻛﺒﺪﻥ

(body)

  ﺇﻟﻰ

for

  ﻭﻓﻲ ﻫﺬﻩ ﺍﻟﺤﺎﻟﺔ

 :

ﻳﺄﺧﺬ ﺍﻹﻳﻌﺎﺯ ﺍﻟﺸﻜﻞ ﺍﻟﺘﺎﻟﻲ

for(initialization expression; expression; increment); 

 

 .

ﻭﻳﺴﺘﺨﺪﻡ ﻣﺜﻞ ﻫﺬﺍ ﺍﻟﺘﺮﻛﻴﺐ ﻛﻮﺳﻴﻠﺔ ﻹﻳﻘﺎﻑ ﺍﻟﺒﺮﻧﺎﻣﺞ ﻟﻔﺘﺮﺓ ﻣﻌﻴﻨﺔ

 

 


background image

 

 

2

(

 

 ﺍﻟﺘﺮﻛﻴﺐ ﺍﻟﺘﻜﺮﺍﺭﻱ

while

 

 

 :

ﺍﻟﺸﻜﻞ ﺍﻟﻌﺎﻡ ﻟﻬﺬﺍ ﺍﻟﺘﺮﻛﻴﺐ ﻫﻮ

while (expression) 

          statement;      /*body of the loop*/ 

 ﺣﻴﺚ ﺃﻥ ﺍﻟﻌﺒﺎﺭﺓ

statement

  ﺗﻤﺜﻞ ﺑﺪﻥ ﺍﻹﻳﻌﺎﺯ

(loop body)

 :

 ﻭﻳﻤﻜﻦ ﺃﻥ ﺗﻜﻮﻥ

 

 ﺍﻟﻌﺒﺎﺭﺓ ﺍﻟﻔﺎﺭﻏﺔ

(empty statement)

 

 

 

 ﻋﺒﺎﺭﺓ ﺑﺴﻴﻄﺔ

(simple statement)

 

 

 

 ﻋﺒﺎﺭﺓ ﻣﺮﻛﺒﺔ

(compound statement)

 

 

 ﻳﻘﻮﻡ ﻫﺬﺍ ﺍﻹﻳﻌﺎﺯ ﺑﺘﻨﻔﻴﺬ ﺍﻟﻌﺒﺎﺭﺓ

statement

  ﺑﺼﻮﺭﺓ ﻣﺘﻜﺮﺭﺓ ﻃﺎﻟﻤﺎ ﺃﻥ ﺍﻟﻘﻴﻤﺔ ﺍﻟﻤﻨﻄﻘﻴﺔ ﻟﻠﻤﻘﺪﺍﺭ

(expression)

  ﻳﺘﻮﻗﻒ ﺗﻨﻔﻴﺬ ﺍﻟﻌﺒﺎﺭﺓ"ﻼﻛ" ﺔﻴﻘﻄﻨﻤﻟﺍ ﺔﻤﻴﻘﻟﺍ ﺢﺒﺼﺗ ﺎﻣﺪﻨﻋﻭ "ﻢﻌﻧ" ﻲﻫ 

statement

  ﻭﻳﻨﺘﻘﻞ ﺍﻟﺘﻨﻔﻴﺬ ﺇﻟﻰ ﺍﻹﻳﻌﺎﺯ ﺍﻟﺬﻱ ﻳﻠﻲ

while

 . 

)

 ﻣﺜﺎﻝ

12

:(

  ﺍﻟﺒﺮﻧﺎﻣﺞ ﺍﻟﺘﺎﻟﻲ ﻳﻜﺘﺐ ﺍﻷﻋﺪﺍﺩ ﻣﻦ

1

  ﺇﻟﻰ

10

  ﻣﻊ ﻣﺮﺑﻌﺎﺗﻬﺎ ﺑﺎﺳﺘﺨﺪﺍﻡ

while

 : 

# include <iostream.h> 

main( ){int n; 

n=1; 

while(n<=10){ 

cout<<"\n square of " <<n<<" is "<< n*n; 

++n; 

}} 

3

(

 

 ﺍﻟﺘﺮﻛﻴﺐ ﺍﻟﺘﻜﺮﺍﺭﻱ

do – while

 

 

 :

   ﺍﻟﺸﻜﻞ ﺍﻟﻌﺎﻡ ﻟﻬﺬﺍ ﺍﻟﺘﺮﻛﻴﺐ ﻫﻮ

do {  

      statement; 

      }while (expression) 

 ﺣﻴﺚ ﺃﻥ ﺍﻟﻌﺒﺎﺭﺓ

statement

  ﺑﺴﻴﻄﺔ ﺃﻭ ﻣﺮﻛﺒﺔ. ﻳﺒﺪﺃ ﻫﺬﺍ ﺍﻹﻳﻌﺎﺯ ﺑﺘﻨﻔﻴﺬ، ﺔﻏﺭﺎﻓ ﻥﻮﻜﺗ ﻥﺃ ﻦﻜﻤﻣ 

 ﺍﻟﻌﺒﺎﺭﺓ

statement

  ﻳﺴﺘﻤﺮ"ﻢﻌﻧ" ﺔﻤﻴﻘﻟﺍ ﺖﻧﺎﻛ ﺍﺫﺈﻓ ﻲﻘﻄﻨﻤﻟﺍ ﺭﺍﺪﻘﻤﻟﺍ ﺔﻤﻴﻗ ﺏﺎﺴﺘﺣﺍ ﻢﺘﻳ ﻚﻟﺫ ﺪﻌﺑ 

 ﻋﻤﻞ ﺍﻹﻳﻌﺎﺯ ﻭﺗﻨﻔﺬ ﺍﻟﻌﺒﺎﺭﺓ

statement

 "

ﻛﻼ" ﺭﺍﺪﻘﻤﻟﺍ ﺔﻤﻴﻗ ﺖﻧﺎﻛ ﺍﺫﺇ ﺎﻣﺃ .ﺍﺬﻜﻫﻭ ﻯﺮﺧﺃ ﺓﺮﻣ 

 ﻳﺘﻮﻗﻒ ﻋﻤﻞ ﺍﻹﻳﻌﺎﺯ ﻭﻳﻨﺘﻘﻞ ﺍﻟﺘﻨﻔﻴﺬ ﺇﻟﻰ ﺍﻹﻳﻌﺎﺯ ﺍﻟﺬﻱ ﻳﻠﻲ ﺇﻳﻌﺎﺯ

do-while

 .

 ﻣﺒﺎﺷﺮﺓ

 


background image

 

 

)

 ﻣﺜﺎﻝ

13

:(

  ﺍﻟﻤﺜﺎﻝ ﺍﻟﺘﺎﻟﻲ ﻳﻄﺒﻊ ﺍﻷﻋﺪﺍﺩ ﻣﻦ

1

  ﺇﻟﻰ

10

  ﻣﻊ ﻣﺮﺑﻌﺎﺗﻬﺎ ﺑﺎﺳﺘﺨﺪﺍﻡ

do-while

 : 

# include <iostream.h> 

main( ){int n; 

n=1; 

do { 

cout<<"\n square of "<<n<<" is "<< n*n; 

++n; 

} while(n<=10); 

 ﺍﻟﻌﺒﺎﺭﺓ

break;

  

 ﻳﺘﻮﻗﻒ ﺍﻹﻳﻌﺎﺯ ﺍﻟﺘﻜﺮﺍﺭﻱ

(for, while, do-while)

  ﺇﺫﺍ ﻣﺎ ﺻﺎﺩﻑ ﺍﻟﻤﻌﺎﻟﺞ ﻋﺒﺎﺭﺓ

break;

  ﺇﺛﻨﺎء

 ﺗﻨﻔﻴﺬﻩ ﻟﻠﻌﺒﺎﺭﺍﺕ ﺍﻟﻤﻮﺟﻮﺩﺓ ﻓﻲ ﺑﺪﻥ ﺍﻹﻳﻌﺎﺯ ﺍﻟﺘﻜﺮﺍﺭﻱ ﻭﻳﻨﺘﻘﻞ ﺍﻟﺘﻨﻔﻴﺬ ﺇﻟﻰ ﺍﻹﻳﻌﺎﺯ ﺍﻟﺬﻱ ﻳﻠﻲ ﺍﻹﻳﻌﺎﺯ

)

 ﺍﻟﺘﻜﺮﺍﺭﻱ ﻣﺒﺎﺷﺮﺓ ﻛﻤﺎ ﻣﻮﺿﺢ ﻓﻲ ﺍﻟﻤﺜﺎﻝ

14

 :

( ﺍﻟﺘﺎﻟﻲ

)

 ﻣﺜﺎﻝ

14

:(

)

  ﺍﻟﺒﺮﻧﺎﻣﺞ ﺍﻟﺘﺎﻟﻲ ﺗﻄﻮﻳﺮ ﻟﻠﺒﺮﻧﺎﻣﺞ ﺭﻗﻢ

11

 ( ﺣﻴﺚ ﺗﻢ ﺇﺿﺎﻓﺔ ﺇﻳﻌﺎﺯﺍﺕ ﻟﺴﺆﺍﻝ ﺍﻟﻤﺴﺘﺨﺪﻡ

 :

ﻓﻴﻤﺎ ﺇﺫﺍ ﻛﺎﻥ ﻳﺮﻏﺐ ﺑﺎﻻﺳﺘﻤﺮﺍﺭ ﺃﻭ ﺍﻟﺘﻮﻗﻒ ﻭﺇﻧﻬﺎء ﺍﻟﺒﺮﻧﺎﻣﺞ

# include <stdio.h> 

# include <ctype.h> 

main( ){char ch, answer; 

for( ; ; ) { 

printf("\n Enter a small letter:"); 

scanf("\n %c", &ch); 

printf("Captital letter is %c",toupper(ch)); 

answer ='A'; 

while(answer != 'Y' && answer != 'N'){ 

printf("\n Do you want to continue? Enter (Y/N):"); 

scanf("\n %c", &answer); } 

if(answer == 'N') 

break; 

}} 


background image

 

 

 ﺍﻟﻌﺒﺎﺭﺓ

continue;

  

 ﺇﺫﺍ ﻣﺎ ﺻﺎﺩﻑ ﺍﻟﻤﻌﺎﻟﺞ ﻋﺒﺎﺭﺓ

continue;

  ﺃﺛﻨﺎء ﺗﻨﻔﻴﺬﻩ ﻟﻠﻌﺒﺎﺭﺍﺕ ﺍﻟﻤﻮﺟﻮﺩﺓ ﻓﻲ ﺑﺪﻥ ﺃﺣﺪ ﺍﻹﻳﻌﺎﺯﺍﺕ

 ﺍﻟﺘﻜﺮﺍﺭﻳﺔ

(for, while, do-while)

  ﺗﻬﻤﻞ ﺑﻘﻴﺔ ﺍﻟﻌﺒﺎﺭﺍﺕ ﺍﻟﻤﻮﺟﻮﺩﺓ ﺑﻴﻦ ﺍﻟﻌﺒﺎﺭﺓ

continue;

 

 ﻭﻧﻬﺎﻳﺔ ﺍﻹﻳﻌﺎﺯ ﺍﻟﺘﻜﺮﺍﺭﻱ ﺍﻟﺬﻱ ﻳﺤﺘﻮﻱ ﻋﻠﻰ ﻋﺒﺎﺭﺓ

continue;

  ﻭﻳﻨﺘﻘﻞ ﺍﻟﺘﻨﻔﻴﺬ ﺇﻟﻰ ﺑﺪﺍﻳﺔ ﺍﻹﻳﻌﺎﺯ

 :

ﺍﻟﺘﻜﺮﺍﺭﻱ ﻭﺗﺒﺪﺃ ﺩﻭﺭﺓ ﺟﺪﻳﺪﺓ ﻛﻤﺎ ﻣﻮﺿﺢ ﻓﻲ ﺍﻟﻤﺜﺎﻝ ﺍﻟﺘﺎﻟﻲ

)

 ﻣﺜﺎﻝ

15

:(

  ﺍﻟﻤﺜﺎﻝ ﺍﻟﺘﺎﻟﻲ ﻳﻄﺒﻊ ﺍﻷﻋﺪﺍﺩ ﺍﻟﻔﺮﺩﻳﺔ ﺍﻟﻤﺤﺼﻮﺭﺓ ﺑﻴﻦ

1

  ﻭ

100

 : 

# include <iostream.h> 

main( ) { 

int n; 

for(n=1 ;n <=100 ; ++n) { 

if(n%2==0) 

continue; 

cout<<"\n Number "<<n<<" is odd"; 

} } 

 ﻳﻼﺣﻆ ﻓﻲ ﻫﺬﺍ ﺍﻟﻤﺜﺎﻝ ﺃﻥ ﺍﻹﻳﻌﺎﺯ

continue;

  ﻳﻨﻔﺬ ﻓﻲ ﻛﻞ ﻣﺮﺓ ﻳﻜﻮﻥ ﻓﻴﻬﺎ ﺍﻟﻌﺪﺩ

n

 .

ً ﺯﻭﺟﻴﺎ

 

 ﻋﺒﺎﺭﺓ

goto

  

 ﺗﺤﺘﺎﺝ ﻋﺒﺎﺭﺓ

goto

  ﺇﻟﻰ ﺍﺳﻢ ﺩﻻﻟﺔ

(label)

 :

  ﻳﺘﺒﻌﻪ

(colon)

  ﻟﻌﻤﻠﻬﺎ ﻭﺍﺳﻢ ﺍﻟﺪﻻﻟﺔ ﻫﺬﺍ ﻫﻮ ﻋﺒﺎﺭﺓ

 ﻋﻦ ﻣﻌﺮﻑ

(identifier)

  ﻟﻘﻮﺍﻋﺪ ﻟﻐﺔًﺎﻘﺒﻃ ﺐﺘﻜﻳ 

C

++

)

  . ﺍﻟﻤﺜﺎﻝ

16

 ( ﻳﺒﻴﻦ ﻛﻴﻔﻴﺔ ﺑﻨﺎء ﺗﺮﻛﻴﺐ

 ﺗﻜﺮﺍﺭﻱ ﺑﺎﺳﺘﺨﺪﺍﻡ ﻋﺒﺎﺭﺓ

goto

  

)

 ﻣﺜﺎﻝ

16

:(

  ﺍﻟﻤﺜﺎﻝ ﺍﻟﺘﺎﻟﻲ ﻳﺒﻴﻦ ﻛﻴﻔﻴﺔ ﺑﻨﺎء ﺇﻳﻌﺎﺯ ﺗﻜﺮﺍﺭﻱ ﻟﻜﺘﺎﺑﺔ ﺍﻷﺭﻗﺎﻡ ﻣﻦ

1

  ﺇﻟﻰ

10

 :

 ﻣﻊ ﻣﺮﺑﻌﺎﺗﻬﺎ

# include <iostream.h> 

main( ) { 

int n=1; 

loop1: 

cout<<"\n Square of "<<n<<" is "<<n*n; 

++n; 

if(n<=10) goto loop1; 


background image

 

 

 ﺍﻟﻤﺼﻔﻮﻓﺎﺕ ﻭ ﺍﻟﺮﻣﻮﺯ ﺍﻟﻨﺼﻴﺔ

 

 
 

:ﺍﻟﻤﺼﻔﻮﻓﺎﺕ

  

 ﺍﻟﻤﺼﻔﻮﻓﺔ ﻫﻲ ﻋﺒﺎﺭﺓ  ﻋﻦ ﻣﺠﻤﻮﻋﺔ ﻣﺘﻐﻴﺮﺍﺕ ﻣﻦ ﻧﻔﺲ ﺍﻟﻨﻮﻉ ﻭﻳﺸﺎﺭ ﺇﻟﻴﻬﺎ ﺑﻨﻔﺲ ﺍﻻﺳﻢ ﺗﺘﻜﻮﻥ

 ﺍﻟﻤﺼﻔﻮﻓﺔ ﻣﻦ ﻣﺠﻤﻮﻋﺔ ﻣﻦ ﺍﻟﺨﻼﻳﺎ ﺍﻟﻤﺘﺠﺎﻭﺭﺓ ﻓﻲ ﺍﻟﺬﺍﻛﺮﺓ ﺑﺤﻴﺚ ﺗﺨﺰﻥ ﻗﻴﻤﺔ ﻛﻞ ﻣﺘﻐﻴﺮ ﻓﻲ ﺍﺣﺪ

 ﻫﺬﻩ ﺍﻟﺨﻼﻳﺎ ﻭﻳﻌﺘﻤﺪ ﺣﺠﻢ ﺍﻟﺨﻠﻴﺔ ﻋﻠﻰ ﻧﻮﻉ ﺍﻟﺒﻴﺎﻧﺎﺕ ﺍﻟﺘﻲ ﺗﻤﺜﻠﻬﺎ ﺍﻟﻤﺼﻔﻮﻓﺔ. ﺍﻟﺨﻠﻴﺔ ﺍﻷﻭﻟﻰ ﻓﻲ

 ﺍﻟﻤﺼﻔﻮﻓﺔ ﺫﺍﺕ ﺍﻟﻌﻨﻮﺍﻥ ﺍﻷﺩﻧﻰ ﻓﻲ ﺍﻟﺬﺍﻛﺮﺓ ﺗﻤﺜﻞ ﺍﻟﻌﻨﺼﺮ ﺃﻭ ﺍﻟﻤﺘﻐﻴﺮ ﺍﻷﻭﻝ ﻭ ﺍﻟﺨﻠﻴﺔ ﺍﻷﺧﻴﺮﺓ ﺫﺍﺕ

 .

ﺍﻟﻌﻨﻮﺍﻥ ﺍﻷﻋﻠﻰ ﺗﻤﺜﻞ ﺍﻟﻌﻨﺼﺮ ﺃﻭ ﺍﻟﻤﺘﻐﻴﺮ ﺍﻷﺧﻴﺮ

 ﺍﻟﻤﺼﻔﻮﻓﺎﺕ ﻳﻤﻜﻦ ﺃﻥ ﺗﻜﻮﻥ ﺫﺍﺕ ﺑﻌﺪ ﻭﺍﺣﺪ

(one dimensional)

  ﺃﻭ ﺃﻛﺜﺮ. ﺍﻹﺷﺎﺭﺓ ﺇﻟﻰ ﻋﻨﺼﺮ

 ﻣﻌﻴﻦ ﻓﻲ ﺍﻟﻤﺼﻔﻮﻓﺔ ﻳﺘﻢ ﻋﻦ ﻃﺮﻳﻖ ﺍﺳﺘﺨﺪﺍﻡ ﺍﺳﻢ ﺍﻟﻤﺼﻔﻮﻓﺔ ﻭﻓﻬﺮﺱ

(Index)

  ﻭﺍﻟﺬﻱ ﻫﻮ ﻋﺪﺩ

 ﺻﺤﻴﺢ ﻳﻤﺜﻞ ﺗﺴﻠﺴﻞ ﺍﻟﻌﻨﺼﺮ ﺍﻟﻤﻌﻨﻲ ﻓﻲ ﺍﻟﻤﺼﻔﻮﻓﺔ. ﺃﻣﺎ ﺍﻟﺮﻣﻮﺯ ﺍﻟﻨﺼﻴﺔ

(strings)

  ﻓﻬﻲ ﻋﺒﺎﺭﺓ

 ﻋﻦ ﻣﺼﻔﻮﻓﺔ ﺫﺍﺕ ﺑﻌﺪ ﻭﺍﺣﺪ ﻣﻦ ﺍﻟﺮﻣﻮﺯ ﺍﻟﻤﻔﺮﺩﺓ

(characters)

 . 

 

: ﺍﻟﻤﺼﻔﻮﻓﺎﺕ ﺫﺍﺕ ﺍﻟﺒﻌﺪ ﺍﻟﻮﺍﺣﺪ

 

 ﺗﻌﺮﻑ ﺍﻟﻤﺼﻔﻮﻓﺔ ﺫﺍﺕ ﺍﻟﺒﻌﺪ ﺍﻟﻮﺍﺣﺪ

(one dimensional arrays)

 :

 ﺑﺎﻟﺼﻴﻐﺔ ﺍﻟﺘﺎﻟﻴﺔ

data_type array_name [size] ; 

 :

ﺣﻴﺚ ﺃﻥ

data_type

 .

 ﻳﺒﻴﻦ ﻧﻮﻉ ﺍﻟﺒﻴﺎﻧﺎﺕ ﺍﻟﺨﺎﺻﺔ ﺑﺎﻟﻤﺼﻔﻮﻓﺔ: 

array_name

 .

 ﺍﺳﻢ ﺍﻟﻤﺼﻔﻮﻓﺔ: 

size

 .

 ﻋﺪﺩ ﺍﻟﻌﻨﺎﺻﺮ ﺍﻟﺘﻲ ﺗﺘﻜﻮﻥ ﻣﻨﻬﺎ ﺍﻟﻤﺼﻔﻮﻓﺔ: 

 ﻟﺘﻌﺮﻳﻒ ﻣﺼﻔﻮﻓﺔ ﺍﺳﻤﻬﺎ

num

  ﻭﻳﻤﻜﻦ ﺧﺰﻥ ﺛﻤﺎﻧﻴﺔ ﻋﻨﺎﺻﺮ ﻓﻴﻬﺎ ﻛﺤﺪ ﺃﻗﺼﻰ ﻣﻦ ﻧﻮﻉ ﺍﻷﻋﺪﺍﺩ

 :

 ﻧﺴﺘﺨﺪﻡ ﺍﻟﺘﻌﺮﻳﻒ، ﺔﺤﻴﺤﺼﻟﺍ

int num[8]; 

 ﻳﺸﺎﺭ ﺇﻟﻰ ﺍﻟﻌﻨﺼﺮ ﺍﻷﻭﻝ ﻓﻲ ﻟﻐﺔ

C

  ﺑﺎﺳﺘﺨﺪﺍﻡ ﺍﻟﻔﻬﺮﺱ ﺻﻔﺮ ﻭﺍﻟﻌﻨﺼﺮ ﺍﻟﺜﺎﻧﻲ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺍﻟﻔﻬﺮﺱ

 ﻭﺍﺣﺪ ﻭﻫﻜﺬﺍ. ﺍﻟﻌﻨﺼﺮ ﺍﻷﻭﻝ ﻓﻲ ﻫﺬﻩ ﺍﻟﻤﺼﻔﻮﻓﺔ ﻫﻮ

num[0]

  ﻭﺍﻟﻌﻨﺼﺮ ﺍﻷﺧﻴﺮ

num[7]

 . 

 


background image

 

 

)

 ﻣﺜﺎﻝ

1

:(

 :

 ﺍﻟﺒﺮﻧﺎﻣﺞ ﺍﻟﺘﺎﻟﻲ ﻳﻘﺮﺃ ﻭﻳﺨﺰﻥ ﻋﺸﺮﺓ ﺃﻋﺪﺍﺩ ﺻﺤﻴﺤﺔ ﻭﻣﻦ ﺛﻢ ﻳﻄﺒﻊ ﺃﻛﺒﺮﻫﺎ

#include <iostream.h> 
main( ){ 
int i,max,num[10]; 
for(i=0 ; i<10;++i){ 
cout<<"\n Enter an integer:"; 
cin>>num[i]; 

max=num[0]; 
for(i=1;i<10;++i) 
if(num[i]>max)max=num[i]; 
cout<<"\n Maximum number is "<<max; 

)

 ﻣﺜﺎﻝ

2

:(

 :

 ﺍﻟﺒﺮﻧﺎﻣﺞ ﺍﻟﺘﺎﻟﻲ ﻳﻘﺮﺃ ﻣﺠﻤﻮﻋﺔ ﺃﺭﻗﺎﻡ ﻭﻳﻮﺟﺪ ﻣﻌﺪﻟﻬﺎ

#include <iostream.h> 
main( ){ 
int i; 
float  n[10],sum,average; 
sum = 0; 
for(i=0;i<10;++i){ 
cout<<"\n Enter a number:"; 
cin>>n[i]; 
sum + = n[i]; 

average =sum/10; 
cout<<"\n Average =  "<<average; 

)

 ﻣﺜﺎﻝ

3

:(

 :

 ﺍﻟﻤﺜﺎﻝ ﺍﻟﺘﺎﻟﻲ ﻳﻘﺮﺃ ﻣﺠﻤﻮﻋﺔ ﻣﻦ ﺍﻷﻋﺪﺍﺩ ﺍﻟﺼﺤﻴﺤﺔ ﻭﻳﻄﺒﻊ ﻋﺪﺩ ﺍﻷﻋﺪﺍﺩ ﺍﻟﺰﻭﺟﻴﺔ

# include <iostream.h> 
# define Length 100 
main( ){ 
int num[Length]; 
int i,size,count=0; 
cout<<"\n Enter size of array:"; 
cin>>size; 
for(i=0;i<size;++i){ 
cout<<"\n Enter element "<<i+1<<":"; 
cin>>num[i]; 

for(i=0;i<size;++i) 
if(num[i]%2==0)count+=1; 


background image

 

 

cout<<"\n Number of even elements: "<<count; 

 

: ﺍﻟﺮﻣﻮﺯ ﺍﻟﻨﺼﻴﺔ

  

 ﺗﺴﺘﺨﺪﻡ ﺍﻟﻤﺼﻔﻮﻓﺔ ﺫﺍﺕ ﺍﻟﺒﻌﺪ ﺍﻟﻮﺍﺣﺪ ﻓﻲ ﺗﻌﺮﻳﻒ ﺍﻟﻤﺘﻐﻴﺮﺍﺕ ﻣﻦ ﻧﻮﻉ ﺍﻟﺮﻣﺰ ﺍﻟﻨﺼﻲ

(string)

  ﺣﻴﺚ

 ﻻ ﺗﻮﻓﺮ ﻟﻐﺔ

++

C

  ﺑﻴﺎﻧﺎﺕ ﻣﻦ ﻫﺬﺍ ﺍﻟﻨﻮﻉ ﻣﺒﺎﺷﺮﺓ. ﺍﻟﺮﻣﺰ ﺍﻟﻨﺼﻲ ﻫﻮ ﻋﺒﺎﺭﺓ ﻋﻦ ﻣﺼﻔﻮﻓﺔ ﺫﺍﺕ ﺑﻌﺪ

 ﻭﺍﺣﺪ ﻣﻦ ﻧﻮﻉ ﺍﻟﺮﻣﺰ ﺍﻟﻤﻔﺮﺩ

(character)

  ﻭﺍﻟﺬﻱ ﻳﻜﻮﻥ ﺃﺧﺮ ﺭﻣﺰ ﻣﻨﻔﺮﺩ ﻓﻴﻪ ﻫﻮ ﺍﻟﺮﻣﺰ

'\0'

 

(null)

  . ﻭﻟﻬﺬﺍ ﺍﻟﺴﺒﺐ ﻳﺠﺐ ﺃﻥ ﻳﻜﻮﻥ ﻃﻮﻝ ﺍﻟﻤﺼﻔﻮﻓﺔ ﺃﻛﺒﺮ ﻣﻦ ﺍﻟﻄﻮﻝ ﺍﻟﻤﻄﻠﻮﺏ ﺑﻤﻘﺪﺍﺭ

1

 .

 ﻟﺘﻌﺮﻳﻒ ﻣﺘﻐﻴﺮ

name

 :

 ﻧﺴﺘﺨﺪﻡ ﺍﻟﺘﻌﺮﻳﻒ ﺍﻟﺘﺎﻟﻲ، ﻰﺼﻗﺃ ﺪﺤﻛ ﺓﺩﺮﻔﻣ ﺯﻮﻣﺭ ﺓﺮﺸﻋ ﺐﻋﻮﺘﺴﻳ 

char name[11]; 

 ﺍﻟﺜﻮﺍﺑﺖ ﺍﻟﻨﺼﻴﺔ ﻫﻲ ﻋﺒﺎﺭﺓ ﻋﻦ ﻣﺠﻤﻮﻋﺔ ﺭﻣﻮﺯ ﻣﻔﺮﺩﺓ ﻣﺤﺼﻮﺭﺓ ﺑﻴﻦ ﻋﻼﻣﺎﺕ ﺍﻗﺘﺒﺎﺱ. ﻭﻻ ﺗﻮﺟﺪ

 ﺣﺎﺟﺔ ﺇﻟﻰ ﺇﺿﺎﻓﺔ ﺍﻟﺮﻣﺰ ﺍﻟﻤﻔﺮﺩ

'\0'

  ﺇﻟﻰ ﻧﻬﺎﻳﺔ ﺍﻟﺮﻣﺰ ﺍﻟﻨﺼﻲ ﺣﻴﺚ ﻳﻘﻮﻡ ﺍﻟﻤﻌﺎﻟﺞ ﺃﻭﺗﻮﻣﺎﺗﻴﻜﻴﺎ

 .

ﺑﺈﺿﺎﻓﺔ ﻫﺬﺍ ﺍﻟﺮﻣﺰ ﺇﻟﻰ ﻧﻬﺎﻳﺔ ﺍﻟﺮﻣﺰ ﺍﻟﻨﺼﻲ

: ﺍﻟﺘﻌﺎﻣﻞ ﻣﻊ ﺍﻟﺮﻣﻮﺯ ﺍﻟﻨﺼﻴﺔ

 

 ﺗﻮﻓﺮ ﻟﻐﺔ

++

C

  ﻣﺠﻤﻮﻋﺔ ﻣﻦ ﺍﻟﺪﻭﺍﻝ ﻟﻤﻌﺎﻟﺠﺔ ﺍﻟﺮﻣﻮﺯ ﺍﻟﻨﺼﻴﺔ ﺗﺘﻄﻠﺐ ﻫﺬﻩ ﺍﻟﺪﻭﺍﻝ ﻭﺟﻮﺩ ﺍﻟﻤﻠﻒ

string.h

  ﺑﺎﺳﺘﺨﺪﺍﻡ ﺍﻹﻳﻌﺎﺯ

#include <string.h>

  ﻭﻓﻴﻤﺎ ﻳﻠﻲ ﺃﻫﻢ ﺍﻟﺪﻭﺍﻝ ﺍﻟﺘﻲ ﺗﺴﺘﺨﺪﻡ ﻓﻲ

 .

ﻣﻌﺎﻟﺠﺔ ﺍﻟﺮﻣﻮﺯ ﺍﻟﻨﺼﻴﺔ

1

(

 

:ﻗﺮﺍءﺓ ﺭﻣﺰ ﻧﺼﻲ

 

 ﺃﻓﻀﻞ ﻃﺮﻳﻘﺔ ﻟﻘﺮﺍءﺓ ﺭﻣﺰ ﻧﺼﻲ ﻣﻦ ﻟﻮﺣﺔ ﺍﻟﻤﻔﺎﺗﻴﺢ ﻫﻮ ﺍﺳﺘﺨﺪﺍﻡ ﺩﺍﻟﺔ ﺍﻟﻘﺮﺍءﺓ

gets( )

  ﻭﺍﻟﺘﻲ

 :

ﺗﺴﺘﺪﻋﻰ ﺑﺎﻟﺼﻴﻐﺔ ﺍﻟﺘﺎﻟﻴﺔ

gets(string_variable); 

 ﻋﻨﺪ ﺍﺳﺘﺪﻋﺎء ﻫﺬﻩ ﺍﻟﺪﺍﻟﺔ ﺗﻘﻮﻡ ﺑﻘﺮﺍءﺓ ﺍﻟﺮﻣﻮﺯ ﺍﻟﻨﺼﻴﺔ ﺍﻟﺪﺍﺧﻠﺔ ﻋﻦ ﻃﺮﻳﻖ ﻟﻮﺣﺔ ﺍﻟﻤﻔﺎﺗﻴﺢ ﺑﻌﺪ ﺃﻥ ﻳﺘﻢ

 ﺍﻟﻀﻐﻂ ﻋﻠﻰ ﻣﻔﺘﺎﺡ

enter

 . 

)

 ﻣﺜﺎﻝ

4

:(

 :

 ﺍﻟﺒﺮﻧﺎﻣﺞ ﺍﻟﺘﺎﻟﻲ ﻳﻘﻮﻡ ﺑﻘﺮﺍءﺓ ﺭﻣﺰ ﻧﺼﻲ ﻣﻦ ﻟﻮﺣﺔ ﺍﻟﻤﻔﺎﺗﻴﺢ ﻭﻣﻦ ﺛﻢ ﻳﻈﻬﺮﻩ ﻋﻠﻰ ﺍﻟﺸﺎﺷﺔ

#include <stdio.h> 
#include <iostream.h> 
main( ){ 
char text[80]; 
cout<<"\n Enter a sentence:"; 
gets(text); 
cout<<"\n Sentence is: "<<text; 


background image

 

 

 

2

(

 

: ﺍﺳﺘﻨﺴﺎﺥ ﺭﻣﺰ ﻧﺼﻲ

 

 ﻟﺘﻮﻟﻴﺪ ﻧﺴﺨﺔ ﻣﻦ ﺭﻣﺰ ﻧﺼﻲ

(string copy)

  ﺗﺴﺘﺨﺪﻡ ﺍﻟﺪﺍﻟﺔ

strcpy( )

  ﻭﺗﺴﺘﺪﻋﻰ ﺑﺎﻟﺼﻴﻐﺔ ﺍﻟﺘﺎﻟﻴﺔ

strcpy(string1,string2); 

 ﺣﻴﺚ ﺗﻘﻮﻡ ﺍﻟﺪﺍﻟﺔ ﻋﻨﺪ ﺍﺳﺘﺪﻋﺎﺋﻬﺎ ﺑﻨﻘﻞ ﻣﺤﺘﻮﻳﺎﺕ ﺍﻟﺮﻣﺰ ﺍﻟﻨﺼﻲ ﺍﻟﺜﺎﻧﻲ

string2

  ﺇﻟﻰ ﺍﻟﺮﻣﺰ ﺍﻟﻨﺼﻲ

 ﺍﻷﻭﻝ

string1

 . 

)

 ﻣﺜﺎﻝ

5

:(

  

#include <iostream.h> 
#include <string.h> 
main( ){ 
char text[40]; 
strcpy(text,"Hello,this is an example."); 
cout<<"\n Message: "<<text; 

3

(

 

:ﺩﻣﺞ ﺭﻣﺰﻳﻦ ﻧﺼﻴﻴﻦ

 

 ﺗﺴﺘﺨﺪﻡ ﺍﻟﺪﺍﻟﺔ

strcat( )

 :

 ﻟﻬﺬﺍ ﺍﻟﻐﺮﺽ ﻭﺗﺴﺘﺪﻋﻰ ﺑﺎﻟﺼﻴﻐﺔ ﺍﻟﺘﺎﻟﻴﺔ

strcat(string1,string2); 

 .

ﺗﻘﻮﻡ ﺍﻟﺪﺍﻟﺔ ﻋﻨﺪ ﺗﻨﻔﻴﺬﻫﺎ ﺑﺈﺿﺎﻓﺔ ﻣﺤﺘﻮﻳﺎﺕ ﺍﻟﺮﻣﺰ ﺍﻟﻨﺼﻲ ﺍﻟﺜﺎﻧﻲ ﺇﻟﻰ ﻧﻬﺎﻳﺔ ﺍﻟﺮﻣﺰ ﺍﻟﻨﺼﻲ ﺍﻷﻭﻝ

)

 ﻣﺜﺎﻝ

6

:(

  

#include <iostream.h> 
#include <string.h> 
main( ){ 
char first[20],second[20]; 
strcpy(first,"Enter your "); 
strcpy(second,"name:"); 
strcat(first,second); 
cout<<first; 

 :

ﻋﻨﺪ ﺗﻨﻔﻴﺬ ﻫﺬﺍ ﺍﻟﺒﺮﻧﺎﻣﺞ ﺳﺘﻈﻬﺮ ﺍﻟﻌﺒﺎﺭﺓ ﺍﻟﺘﺎﻟﻴﺔ

Enter your name: 

4

(

 

:ﻣﻘﺎﺭﻧﺔ ﺍﻟﺮﻣﻮﺯ ﺍﻟﻨﺼﻴﺔ

 

 

 ﺗﺴﺘﺨﺪﻡ ﺍﻟﺪﺍﻟﺔ

strcmp( )

 :

 ﻟﻤﻘﺎﺭﻧﺔ ﺭﻣﺰﻳﻦ ﻣﻦ ﺍﻟﻨﻮﻉ ﺍﻟﻨﺼﻲ . ﺗﺴﺘﺪﻋﻰ ﺍﻟﺪﺍﻟﺔ ﺑﺎﻟﺼﻴﻐﺔ

strcmp(string1,string2); 


background image

 

 

 ﺗﻜﻮﻥ ﻗﻴﻤﺔ ﺍﻟﺪﺍﻟﺔ ﺻﻔﺮ ﺇﺫﺍ ﻛﺎﻥ ﺍﻟﺮﻣﺰ ﺍﻟﻨﺼﻲ ﺍﻷﻭﻝ ﻣﻄﺎﺑﻖ ﻟﻠﺮﻣﺰ ﺍﻟﻨﺼﻲ ﺍﻟﺜﺎﻧﻲ ﻭﺗﻜﻮﻥ ﺍﻟﻘﻴﻤﺔ

 ﻣﻮﺟﺒﺔ ﺇﺫﺍ ﻛﺎﻥ ﺍﻟﺮﻣﺰ ﺍﻟﻨﺼﻲ ﺍﻷﻭﻝ ﺃﻛﺒﺮ ﻣﻦ ﺍﻟﺮﻣﺰ ﺍﻟﻨﺼﻲ ﺍﻟﺜﺎﻧﻲ. ﺃﻣﺎ ﺇﺫﺍ ﻛﺎﻥ ﺍﻟﺮﻣﺰ ﺍﻟﻨﺼﻲ

 .

ﺍﻷﻭﻝ ﺃﻗﻞ ﻣﻦ ﺍﻟﺮﻣﺰ ﺍﻟﻨﺼﻲ ﺍﻟﺜﺎﻧﻲ ﻓﺘﻜﻮﻥ ﺍﻟﻘﻴﻤﺔ ﺳﺎﻟﺒﺔ

)

 ﻣﺜﺎﻝ

7

:(

  ﺍﻟﺒﺮﻧﺎﻣﺞ ﺍﻟﺘﺎﻟﻲ ﻳﻘﺮﺃ ﺭﻣﺰ ﻧﺼﻲ ﻭﻳﻄﺒﻌﻪ ﺑﺼﻮﺭﺓ ﻣﺘﻜﺮﺭﺓ ﺇﻟﻰ ﺃﻥ ﻳﺘﻢ ﺇﺩﺧﺎﻝ ﺍﻟﺮﻣﺰ

 ﺍﻟﻨﺼﻲ

"quit"

 

#include<stdio.h> 
#include <iostream.h> 
#include <string.h> 
main( ){ 
char text[80]; 
for( ; ; ){ 
cout<<"\n Enter a sentence:"; 
gets(text); 
if( !strcmp(text,"quit")) break; 
cout<<"\n "<<text; 
}} 

5

(

 

: ﺍﺣﺘﺴﺎﺏ ﻃﻮﻝ ﺭﻣﺰ ﻧﺼﻲ

 

 

 :

ﻳﻜﻮﻥ ﺍﺳﺘﺪﻋﺎء ﻫﺬﻩ ﺍﻟﺪﺍﻟﺔ ﺑﺎﻟﺸﻜﻞ ﺍﻟﺘﺎﻟﻲ

strlen(string) 

 .

ﻭﺗﻜﻮﻥ ﻗﻴﻤﺔ ﺍﻟﺪﺍﻟﺔ ﻋﺪﺩ ﺍﻟﺮﻣﻮﺯ ﺍﻟﻤﻔﺮﺩﺓ ﺍﻟﺘﻲ ﻳﺘﻜﻮﻥ ﻣﻨﻬﺎ ﺍﻟﺮﻣﺰ ﺍﻟﻨﺼﻲ

)

 ﻣﺜﺎﻝ

8

:(

 

 

#include<stdio.h> 
#include <iostream.h> 
#include <string.h> 
main( ){ 
char text[80]; 
for( ; ; ){ 
cout<<"\n Enter a sentence:"; 
gets(text); 
if(!strcmp(text,"quit"))break; 
cout<<"\n Length of string "<<strlen(text); 
}} 

6

(

 

: ﺍﺳﺘﺨﺪﺍﻡ ﺭﻣﺰ ﻧﻬﺎﻳﺔ ﺍﻟﺮﻣﺰ ﺍﻟﻨﺼﻲ

 

 

 ﻳﻤﻜﻦ ﺍﻻﺳﺘﻔﺎﺩﺓ ﻣﻦ ﻭﺟﻮﺩ ﺍﻟﺮﻣﺰ

'\0'

 

(null)

  ﻓﻲ ﻧﻬﺎﻳﺔ ﻛﻞ ﺭﻣﺰ ﻧﺼﻲ ﻓﻲ ﺗﺴﻬﻴﻞ ﻋﻤﻠﻴﺔ ﻣﻌﺎﻟﺠﺔ

 ﺍﻟﻨﺼﻮﺹ ﺣﻴﺚ ﻳﺴﺘﺨﺪﻡ ﻛﺈﺷﺎﺭﺓ ﻋﻠﻰ ﺍﻧﺘﻬﺎء ﺍﻟﻨﺺ ﻭﺗﻮﻗﻒ ﺍﻟﻤﻌﺎﻟﺠﺔ ﺍﻟﺨﺎﺻﺔ ﺑﺎﻟﻨﺺ ﻛﻤﺎ ﻣﺒﻴﻦ ﻓﻲ

 :

ﺍﻟﻤﺜﺎﻝ ﺍﻟﺘﺎﻟﻲ


background image

 

 

)

 ﻣﺜﺎﻝ

9

:(

  

#include<stdio.h> 
#include <iostream.h> 
#include <ctype.h> 
main( ){ 
char text[80]; 
int n; 
cout<<"\n Enter a text:\n"; 
gets(text); 
for(n=0;text[n];++n) 
text[n]=toupper(text[n]); 
cout<<"\n "<<text; 

: ﺍﻟﻤﺼﻔﻮﻓﺎﺕ ﺫﺍﺕ ﺑﻌﺪﻳﻦ

 

 

 :

ﺗﻌﺮﻑ ﺍﻟﻤﺼﻔﻮﻓﺔ ﺫﺍﺕ ﺍﻟﺒﻌﺪﻳﻦ ﺑﺎﻟﺼﻴﻐﺔ ﺍﻟﺘﺎﻟﻴﺔ

type array_name [size1] [size2]; 

 ﺣﻴﺚ ﻳﺸﻴﺮ

size1

  ﺇﻟﻰ ﻋﺪﺩ ﺍﻷﺳﻄﺮ

(rows)

  ﻟﻠﻤﺼﻔﻮﻓﺔ ﻭ

size2

  ﺇﻟﻰ ﻋﺪﺩ ﺍﻷﻋﻤﺪﺓ

(columns)

  

)

 ﻣﺜﺎﻝ

10

:(

  ﺍﻟﺒﺮﻧﺎﻣﺞ ﺍﻟﺘﺎﻟﻲ ﻳﻌﺮﻑ ﻣﺼﻔﻮﻓﺔ ﺫﺍﺕ

3

 ﺍﺳﻄﺮ ﻭ

4

  ﺃﻋﻤﺪﺓ ﻭﻳﺨﺰﻥ ﻓﻴﻬﺎ ﺃﻋﺪﺍﺩ ﺻﺤﻴﺤﺔ

 :

ﺑﺎﺳﺘﺨﺪﺍﻡ ﻣﻌﺎﺩﻟﺔ ﻣﻌﻴﻨﺔ ﺗﺒﻴﻦ ﺗﺴﻠﺴﻞ ﻛﻞ ﺧﻠﻴﺔ ﻓﻲ ﺍﻟﻤﺼﻔﻮﻓﺔ

#include <iostream.h> 
main( ){ 
int i, j, num[3][4]; 
for(i=0;i<3;++i) 
for(j=0;j<4;++j) 
num[i][j]=(i*4)+j+1; 

 ﻳﻘﻮﻡ ﻫﺬﺍ ﺍﻟﺒﺮﻧﺎﻣﺞ ﺑﺨﺰﻥ ﺍﻟﻘﻴﻤﺔ

1

  ﻓﻲ ﺍﻟﺨﻠﻴﺔ

num[0][0]

  ﻭﺍﻟﻘﻴﻤﺔ

2

  ﻓﻲ ﺍﻟﺨﻠﻴﺔ

num[0][1]

  ﻭ

3

 

 ﻓﻲ ﺍﻟﺨﻠﻴﺔ

num[0][2]

 :

 ﻭﻫﻜﺬﺍ. ﻭﻳﻤﻜﻦ ﺗﻤﺜﻴﻞ ﻣﺤﺘﻮﻳﺎﺕ ﺍﻟﻤﺼﻔﻮﻓﺔ ﺑﺎﻟﺸﻜﻞ ﺍﻟﺘﺎﻟﻲ

 

0

 

1

 

2

 

3

 

0

 

1

 

2

 

3

 

4

 

1

 

5

 

6

 

7

 

8

 

2

 

9

 

10

 

11

 

12

 

  

 

 


background image

 

 

)

 ﻣﺜﺎﻝ

11

:(

  ﺍﻟﺒﺮﻧﺎﻣﺞ ﺍﻟﺘﺎﻟﻲ ﻳﻘﺮﺍ ﻣﺠﻤﻮﻋﺔ ﻣﻦ ﺍﻻﺭﻗﺎﻡ ﻭﻳﺨﺰﻧﻬﺎ ﻓﻲ ﻣﺼﻔﻮﻓﺔ ﻭﻣﻦ ﺛﻢ ﻳﻄﺒﻊ ﻣﻌﺪﻝ

 ﺍﻻﺭﻗﺎﻡ ﻓﻲ ﻛﻞ ﺳﻄﺮ

(row)

 : 

#include <iostream.h> 
#define rows 3 
#define columns 5 
main( ){ 
int i, j, matrix[rows][columns]; 
float sum, average; 
for(i=0;i<rows;++i){           /*Read numbers into the matrix*/ 
cout<<"\n Enter "<<columns<<" elements for row "<<i+1<<":"; 
for(j=0;j<columns;++j) 
cin>>matrix[i][j]; 
}                                     /*Compute sum & average for each row*/ 
for(i=0;i<rows;++i){ 
sum=0; 
for(j=0;j<columns;++j) 
sum+=matrix[i][j]; 
average=sum/columns; 
cout<<"\n Average row "<<i+1<<" = "<<average; 
}} 

: ﻣﺼﻔﻮﻓﺎﺕ ﺍﻟﺮﻣﻮﺯ ﺍﻟﻨﺼﻴﺔ

 

 

 ﻳﻤﻜﻦ ﺗﻌﺮﻳﻒ ﻣﺼﻔﻮﻓﺔ ﺫﺍﺕ ﺑﻌﺪ ﻭﺍﺣﺪ ﻣﻦ ﺍﻟﺮﻣﻮﺯ ﺍﻟﻨﺼﻴﺔ

(array of strings)

  ﻋﻠﻰ ﺷﻜﻞ

 ﻣﺼﻔﻮﻓﺔ ﺫﺍﺕ ﺑﻌﺪﻳﻦ ﻣﻦ ﺍﻟﺮﻣﻮﺯ ﺍﻟﻤﻔﺮﺩﺓ

(characters)

  ﻭﻓﻲ ﻫﺬﻩ ﺍﻟﺤﺎﻟﺔ ﻳﻤﺜﻞ ﺍﻟﻔﻬﺮﺱ ﺍﻷﻭﻝ ﻋﺪﺩ

 ﺍﻟﺮﻣﻮﺯ ﺍﻟﻨﺼﻴﺔ ﻭﺍﻟﻔﻬﺮﺱ ﺍﻟﺜﺎﻧﻲ ﻋﺪﺩ ﺍﻟﺮﻣﻮﺯ ﺍﻟﻤﻔﺮﺩﺓ ﺍﻟﺘﻲ ﻳﻤﻜﻦ ﺃﻥ ﻳﺴﺘﻮﻋﺒﻬﺎ ﺍﻟﺮﻣﺰ ﺍﻟﻨﺼﻲ ﻣﻦ

  ﻟﻘﺮﺍءﺓ ﻭﺧﺰﻥ ﺧﻤﺴﺔ ﺃﺳﻤﺎء ﻃﻮﻝ ﺃﻛﺒﺮﻫﺎ ﺗﺴﻌﺔ ﺭﻣﻮﺯ ﻣﻔﺮﺩﺓ ﻧﺴﺘﺨﺪﻡًﻼﺜﻤﻓ .ﺓﺩﺮﻔﻤﻟﺍ ﺯﻮﻣﺮﻟﺍ

 :

 ﺍﻟﺘﻌﺮﻳﻒ

char names [5] [9]; 

  ﻟﻘﺮﺍءﺓ ﻭﺧﺰﻥ ﺃﺳﻢ ﻓﻲ ﺍﻟﺨﻠﻴﺔًﻼﺜﻤﻓ .ﻦﻴﻌﻣ ﻲﺼﻧ ﺰﻣﺭ ﻰﻟﺇ ﺓﺭﺎﺷﻺﻟ ﻂﻘﻓ ﻝﻭﻷﺍ ﺱﺮﻬﻔﻟﺍ ﻡﺪﺨﺘﺴﻳﻭ

 :

ﺍﻟﺜﺎﻧﻴﺔ ﻧﺴﺘﺨﺪﻡ

gets(name[1]); 

)

 ﻣﺜﺎﻝ

12

:(

  ﺍﻟﺒﺮﻧﺎﻣﺞ ﺍﻟﺘﺎﻟﻲ ﻳﻘﺮﺃ ﻣﺠﻤﻮﻋﺔ ﻣﻦ ﺍﻷﺳﻤﺎء ﻭﻳﺨﺰﻧﻬﺎ ﻓﻲ ﻣﺼﻔﻮﻓﺔ ﺫﺍﺕ ﺑﻌﺪ ﻭﺍﺣﺪ ﻣﻦ

 :

ﺍﻟﺮﻣﻮﺯ ﺍﻟﻨﺼﻴﺔ ﻭﻣﻦ ﺛﻢ ﻳﻄﺒﻊ ﻫﺬﻩ ﺍﻷﺳﻤﺎء

#include<stdio.h> 
#include <iostream.h> 
main( ){ 
char name[100][20]; 


background image

 

 

int n, i; 
n =0; 
do{ 
cout<<"\n Enter name (press RETURN to stop):"; 
gets(name[n]); 
}while(name[n++][0] != '\0'); 
for(i=0;i<n;++i) 
cout<<"\n "<<name[i]; 

: ﺇﺳﻨﺎﺩ ﻗﻴﻢ ﺍﺑﺘﺪﺍﺋﻴﺔ ﻟﻠﻤﺼﻔﻮﻓﺎﺕ

 

 

 ﺗﺴﻤﺢ ﻟﻐﺔ

++

C

 :

 ﺑﺈﺳﻨﺎﺩ ﻗﻴﻢ ﺍﺑﺘﺪﺍﺋﻴﺔ ﻟﻠﻤﺼﻔﻮﻓﺎﺕ ﻭﺗﺴﺘﺨﺪﻡ ﺍﻟﺼﻴﻐﺔ ﺍﻟﺘﺎﻟﻴﺔ ﻟﺬﻟﻚ

type array_name [size1] [size2] = { list of values }; 

  ( ﻭﺗﺴﻨﺪ ﺍﻟﻘﻴﻤﺔ ﺍﻷﻭﻟﻰ ﻓﻲ ﺍﻟﻘﺎﺋﻤﺔ ﺇﻟﻰ ﺍﻟﻌﻨﺼﺮ ﺍﻷﻭﻝ ﻭﺍﻟﻘﻴﻤﺔ, ) ﺓﺯﺭﺎﻔﻟﺍ ﻢﻴﻘﻟﺍ ﻦﻴﺑ ﻞﺼﻔﺗ ﺚﻴﺣ

 .

ﺍﻟﺜﺎﻧﻴﺔ ﺇﻟﻰ ﺍﻟﻌﻨﺼﺮ ﺍﻟﺜﺎﻧﻲ ﻭﻫﻜﺬﺍ

 ﺍﻟﻌﺒﺎﺭﺓ ﺍﻟﺘﺎﻟﻴﺔ ﺗﻌﺮﻑ ﻣﺼﻔﻮﻓﺔ ﺫﺍﺕ ﺑﻌﺪ ﻭﺍﺣﺪ ﻭﻣﻜﻮﻧﺔ ﻣﻦ ﻋﺸﺮﺓ ﻋﻨﺎﺻﺮ. ﺗﻢ ﺇﺳﻨﺎﺩ ﺍﻟﻘﻴﻤﺔ

3

  ﺇﻟﻰ

 ﺍﻟﻌﻨﺼﺮ ﺍﻷﻭﻝ

number [0]

  ﻭﺍﻟﻘﻴﻤﺔ

56

  ﺇﻟﻰ ﺍﻟﻌﻨﺼﺮ ﺍﻟﺜﺎﻧﻲ

number[1]

 .

 ﻭﻫﻜﺬﺍ

int number [10] = { 3, 56, 34, 32, 89, 12, 22, 77, 57, 48 }; 

 :

ﺃﻣﺎ ﺑﺎﻟﻨﺴﺒﺔ ﺇﻟﻰ ﺍﻟﻤﺼﻔﻮﻓﺎﺕ ﻣﻦ ﺍﻟﻨﻮﻉ ﺍﻟﻨﺼﻲ ﻓﻴﻤﻜﻦ ﺇﺳﻨﺎﺩ ﺍﻟﻘﻴﻤﺔ ﺍﻻﺑﺘﺪﺍﺋﻴﺔ ﺑﺎﻟﺼﻴﻐﺔ

char array_name [size] = "string"; 

 ﺍﻟﻌﺒﺎﺭﺓ ﺍﻟﺘﺎﻟﻴﺔ ﺗﻌﺮﻑ ﺭﻣﺰ ﻧﺼﻲ ﻭﺗﺴﻨﺪ ﺇﻟﻴﻪ ﺍﻟﻨﺺ

"hello"

 : 

char text [6] = "hello"; 

 ﻻﺣﻆ ﺃﻥ ﻃﻮﻝ ﺍﻟﻤﺼﻔﻮﻓﺔ ﻫﻮ

6

  ﻓﻲ ﺣﻴﻦ ﺃﻥ ﻋﺪﺩ ﺍﻟﺤﺮﻭﻑ ﻫﻮ

5

  ﻭﺍﻟﺴﺒﺐ ﻳﻌﻮﺩ ﺇﻟﻰ ﺿﺮﻭﺭﺓ ﺗﻮﻓﻴﺮ

 ﺧﻠﻴﺔ ﻟﺮﻣﺰ ﻧﻬﺎﻳﺔ ﺍﻟﻨﺺ

'\0'

 :

 ﻓﻲ ﺍﻟﺤﻘﻴﻘﺔ ﺃﻥ ﺍﻟﻌﺒﺎﺭﺓ ﺃﻋﻼﻩ ﻫﻲ ﻣﻄﺎﺑﻘﺔ ﻟﻠﻌﺒﺎﺭﺓ ﺍﻟﺘﺎﻟﻴﺔ

char text [6] = { 'h', 'e', 'l', 'l', 'o', '\0' }; 

 ﻛﻤﺎ ﻳﻤﻜﻦ ﺇﺳﻨﺎﺩ ﻗﻴﻢ ﺍﺑﺘﺪﺍﺋﻴﺔ ﻟﻠﻤﺼﻔﻮﻓﺎﺕ ﺫﺍﺕ ﺑﻌﺪﻳﻦ ﺑﻨﻔﺲ ﺍﻟﻄﺮﻳﻘﺔ ﻭﻓﻴﻤﺎ ﻳﻠﻲ ﺗﻌﺮﻳﻒ ﻟﻤﺼﻔﻮﻓﺔ

 ﺫﺍﺕ ﺑﻌﺪﻳﻦ ﺗﻢ ﺇﺳﻨﺎﺩ ﻗﻴﻢ ﻣﻦ

1

  ﺇﻟﻰ

10

 :

 ﻭﻣﺮﺑﻌﺎﺗﻬﺎ ﺇﻟﻰ ﻋﻨﺎﺻﺮ ﺍﻟﻤﺼﻔﻮﻓﺔ

int square [10] [2] = { 1, 1, 2, 4, 3, 9, 4, 16, 5, 25, 6, 36, 7, 49, 8, 64, 9, 

                                 81, 10, 100 }; 

 .

ﻻﺣﻆ ﺃﻥ ﺍﻟﻘﻴﻢ ﺗﺴﻨﺪ ﺇﻟﻰ ﺍﻟﺴﻄﺮ ﺍﻷﻭﻝ ﻭﻣﻦ ﺛﻢ ﺇﻟﻰ ﺍﻟﺴﻄﺮ ﺍﻟﺜﺎﻧﻲ ﻭﻫﻜﺬﺍ

 


background image

 ﺃﻣﺜﻠﺔ ﻓﻲ ﺍﻟﻤﺼﻔﻮﻓﺎﺕ

 

 

)

 ﺳﺆﺍﻝ

1

:(

  ﺍﻛﺘﺐ ﺑﺮﻧﺎﻣﺞ ﻻﻳﺠﺎﺩ ﺍﻛﺒﺮ ﻋﻨﺼﺮ ﻣﻦ ﻋﻨﺎﺻﺮ ﺍﻟﻘﻄﺮ ﺍﻟﺮﺋﻴﺴﻲ ﻟﻤﺼﻔﻮﻓﺔ ﺫﺍﺕ ﺑﻌﺪﻳﻦ

 ﻋﻨﺎﺻﺮﻫﺎ ﻫﻲ

8

2

5

25

14

3

16

12

7

 ؟ ﻭﻃﺒﺎﻋﺘﻪ

#include <stdio.h> 
main( ){ 
int  i ,max; 
int x[3][3]={7, 12, 16, 3, 14, 25, 5, 2, 8}; 
max = x[0][0]; 
for(i=0;i<3;++i) 
if(x[i][i] >max)max = x[i][i]; 
printf("\n max =%d",max); 

)

 ﺳﺆﺍﻝ

2

:(

  ﺍﻛﺘﺐ ﺑﺮﻧﺎﻣﺞ ﻟﺘﺤﻮﻳﻞ ﻋﻨﺎﺻﺮ ﺍﻟﻘﻄﺮ ﺍﻟﺜﺎﻧﻮﻱ ﻓﻲ ﺍﻟﻤﺼﻔﻮﻓﺔ

[A]

  ﻣﻊ ﻋﻨﺎﺻﺮ ﺍﻟﻘﻄﺮ

 ﺍﻟﺮﺋﻴﺴﻲ ﻟﻠﻤﺼﻔﻮﻓﺔ

[B]

  ﺇﻥ ﺍﻟﻤﺼﻔﻮﻓﺘﻴﻦ ﻫﻤﺎًﺎﻤﻠﻋ 

[ ]

=

4

1

2

18

5

17

19

7

9

31

12

14

25

23

21

16

A

                   

[ ]

=

32

14

5

16

12

10

9

7

18

2

8

3

11

5

6

1

B

 

#include <stdio.h> 
main( ){ 
int i,j,c; 
int a[4][4]={16, 21, 23, 25, 14, 12, 31, 9, 7, 19, 17, 5, 18, 2, 1, 4}; 
int b[4][4]={1, 6, 5, 11, 3, 8, 2, 18, 7, 9, 10, 12, 16, 5, 14, 32}; 
for(i=0;i<4;++i) 
for(j=0;j<4;++j) 
if(i+j ==3){ 
c=a[i][j]; 
a[i][j]=b[i][i]; 
b[i][i]=c;} 
printf("\n A="); 
for(i=0;i<4;++i){ 
printf("\n"); 
for(j=0;j<4;++j) 
printf("%d \t",a[i][j]);} 
printf("\n B="); 
for(i=0;i<4;++i){ 
printf("\n"); 
for(j=0;j<4;++j) 


background image

 ﺃﻣﺜﻠﺔ ﻓﻲ ﺍﻟﻤﺼﻔﻮﻓﺎﺕ

 

 

printf("%d \t",b[i][j]);} 

 

)

 ﺳﺆﺍﻝ

3

:(

  ﺍﻛﺘﺐ ﺑﺮﻧﺎﻣﺞ ﻻﻳﺠﺎﺩ ﻣﺠﻤﻮﻋﺔ ﻋﻨﺎﺻﺮ ﺍﻟﻤﺼﻔﻮﻓﺔ

[A]

  ﺫﺍﺕ ﺍﻟﺒﻌﺪﻳﻦ ﻭﺍﻟﺘﻲ ﻗﻴﻢ

 ﻋﻨﺎﺻﺮﻫﺎ ﻫﻲ

8

3

5

12

6

4

4

2

8

 

#include < stdio.h > 
main(){ 
int i,j,a[3][3]={8, 2, 4, 4, 6, 12, 5, 3, 8}; 
int sum = 0; 
for(i=0;i<3;++i) 
for(j=0;j<3;++j) 
sum + = a[i][j]; 
printf("\n sum = %d ",sum); 

 

)

 ﺳﺆﺍﻝ

4

:(

  ﺍﻛﺘﺐ ﺑﺮﻧﺎﻣﺞ ﻟﺘﻜﻮﻳﻦ ﺍﻟﻤﺼﻔﻮﻓﺔ

[C]

  ﺍﻟﺘﻲ ﺗﻜﻮﻥ ﻗﻴﻤﺘﻬﺎ ﻧﺎﺗﺠﺔ ﻣﻦ ﺟﻤﻊ ﻗﻴﻢ ﺍﻟﻤﺼﻔﻮﻓﺔ

[B]

  ﻣﻊ ﺍﻟﻤﺼﻔﻮﻓﺔ

[A]

  ﻣﻄﺮﻭﺡ ﻣﻨﻬﺎ ﻗﻴﻢ ﺍﻟﻤﺼﻔﻮﻓﺔ

[D]

  ﺇﻥ ﻗﻴﻢ ﺍﻟﻤﺼﻔﻮﻓﺎﺕ ﻫﻲًﺎﻤﻠﻋ 

 

[ ]

=

3

9

4

5

7

8

12

6

12

A

               

[ ]

=

4

4

5

2

4

3

8

7

6

B

             

[ ]

=

3

24

16

12

5

7

13

21

9

D

 

 
 
#include < stdio.h > 
main( ){ 
int i, j, a[3][3] ={12, 6, 12, 8, 7, 5, 4, 9, 3}; 
int b[3][3]={6, 7, 8, 3, 4, 2, 5, 4, 4}; 
int c[3][3],d[3][3]={9, 21, 13, 7, 5, 12, 16, 24, 3}; 
for(i=0;i<3;++i) { 
printf("\n"); 
for(j=0;j<3;++j) { 
c[i][j] =(a[i][j] + b[i][j]) - d[i][j]; 
printf("\t %d", c[i][j]); 
}}} 

 


background image

 ﺃﻣﺜﻠﺔ ﻓﻲ ﺍﻟﻤﺼﻔﻮﻓﺎﺕ

 

 

)

 ﺳﺆﺍﻝ

5

:(

 

 ﺍﻛﺘﺐ ﺑﺮﻧﺎﻣﺞ ﻟﺘﻜﻮﻳﻦ ﺍﻟﻤﺼﻔﻮﻓﺔ

A[3][3]

  ﻭﺍﺑﺪﺍﻝ ﻋﻨﺎﺻﺮ ﺍﻟﻘﻄﺮ ﺍﻟﺮﺋﻴﺴﻲ

 ﺑﻌﻨﺎﺻﺮ ﺍﻟﺴﻄﺮ ﺍﻻﻭﻝ

#include < stdio.h > 
main( ){ 
int i, j, b, a[3][3]; 
for(i=0;i<3;++i) 
for(j=0;j<3;++j) 
scanf("%d", & a[i][j]); 
for(i=0;i<3;++i) 
for(j=0;j<3;++j) 
if(i == 0){ 
b =a[i][j]; 
a[i][j] =a[j][j]; 
a[j][j] =b; 

for(i=0;i<3;++i){ 
printf("\n"); 
for(j=0;j<3;++j) 
printf("\t %d", a[i][j]); 
}} 

 

)

 ﺳﺆﺍﻝ

6

:(

 

 ﺍﻛﺘﺐ ﺑﺮﻧﺎﻣﺞ ﻷﻳﺠﺎﺩ ﻣﻌﺪﻝ ﺍﺭﺑﻊ ﻃﻼﺏ ﻷﺭﺑﻊ ﺩﺭﺟﺎﺕ ﺑﺎﺳﺨﺪﺍﻡ

 ﺍﻟﻤﺼﻔﻮﻓﺎﺕ

#include < stdio.h > 
main( ){ 
int i, j, a[4][4]; 
float  v[4]; 
for(i=0;i<4;++i) { 
v[i]=0.0; 
for(j=0;j<4;++j) 
scanf("%d", & a[i][j]); } 
for(i=0;i<4;++i) { 
for(j=0;j<4;++j) 
v[i] += a[i][j]; 
v[i] = v[i]/4;  } 
for(i=0;i<4;++i) 
printf("\n %10.2f", v[i]); 

 


background image

 ﺃﻣﺜﻠﺔ ﻓﻲ ﺍﻟﻤﺼﻔﻮﻓﺎﺕ

 

 

)

 ﺳﺆﺍﻝ

7

:(

 

 ﺍﻛﺘﺐ ﺑﺮﻧﺎﻣﺞ ﻟﺘﺤﻮﻳﻞ ﺍﺳﻄﺮ ﺍﻟﻤﺼﻔﻮﻓﺔ

[A]

   ﺑﺎﻋﻤﺪﺗﻬﺎ ﺍﻟﻤﺼﻔﻮﻓﺔ ﻫﻲ

     

[ ]

=

17

21

12

8

11

15

31

35

13

22

21

15

7

18

22

16

A

 

#include < stdio.h > 
main( ){ 
int i, j, b; 
int a[4][4]={16, 22, 18, 7, 15, 21, 22, 13, 35, 31, 15, 11, 8, 12, 21, 17}; 
for(i=0;i<4;++i) 
for(j=0;j<4;++j) 
if(j >i){ 
B = a[i][j]; 
a[i][j] = a[j][i]; 
a[j][i] = b; } 
for(i=0;i<4;++i) { 
printf("\n"); 
for(j=0;j<4;++j) 
printf("\t  %d", a[i][j]); 
}} 

 

)

 ﺳﺆﺍﻝ

8

:(

 

 ﺍﻛﺘﺐ ﺑﺮﻧﺎﻣﺞ ﻳﻘﻮﻡ ﺑﻀﺮﺏ ﺍﻟﺴﻄﺮ ﺍﻻﻭﻝ ﻣﻦ ﺍﻟﻤﺼﻔﻮﻓﺔ

[A]

  ﻣﻊ ﺍﻟﻌﻤﻮﺩ

 ﺍﻻﻭﻝ ﻣﻦ ﺍﻟﻤﺼﻔﻮﻓﺔ

[B]

   ﻋﻠﻤﺎ ﺍﻥ ﺍﻟﻤﺼﻮﻓﺘﻴﻦ ﺛﻨﺎﺋﻴﺔ ﺍﻟﺒﻌﺪ ﻭﻫﻤﺎ ﺑﺎﻟﺸﻜﻞ ﺍﻻﺗﻲ

        

[ ]

=

7

2

4

5

3

2

A

                 

[ ]

=

1

8

5

2

7

6

9

6

2

B

 

 
#include < stdio.h > 
main( ){ 
int i, j, c=0, a[2][3]={2,3,5,4,2,7}; 
int b[3][3]={2,6,9,6,7,2,5,8,1}; 
for(i=0;i<3;++i) 
c += a[0][i]*b[i][0]; 
printf("\n %d", c); 

 


background image

 ﺃﻣﺜﻠﺔ ﻓﻲ ﺍﻟﻤﺼﻔﻮﻓﺎﺕ

 

 

)

 ﺳﺆﺍﻝ

9

:(

  ﺍﻛﺘﺐ ﺑﺮﻧﺎﻣﺞ ﻹﻳﺠﺎﺩ ﺣﺎﺻﻞ ﺿﺮﺏ ﺍﻟﻤﺼﻔﻮﻓﺘﻴﻦ

[B]*[A]

  ﺇﻥ ﻗﻴﻢ ﺍﻟﻤﺼﻔﻮﻓﺔًﺎﻤﻠﻋ 

[A]

  ﻫﻲ

3,6,7,8,12

  ﻭﻗﻴﻢ ﺍﻟﻤﺼﻔﻮﻓﺔ

[B]

  ﻫﻲ

20,6,14,9,7

  ﺇﻥ ﺍﻟﻤﺼﻔﻮﻓﺘﻴﻦ ﻫﻤﺎ ﺫﺍﺕًﺎﻤﻠﻋ 

 .

ﺑﻌﺪ ﻭﺍﺣﺪ

#include < stdio.h > 
main( ){ 
int i, a[5] = {3,6,7,8,12}, b[5] = {20,6,14,9,7}, c=0; 
for(i=0;i<5;++i) 
c += a[i]*b[i]; 
printf("\n %d",c); 

)

 ﺳﺆﺍﻝ

10

:(

  ﺍﻛﺘﺐ ﺑﺮﻧﺎﻣﺞ ﻷﺣﻼﻝ ﻋﻨﺎﺻﺮ ﺍﻟﻤﺼﻔﻮﻓﺔ

[A]

  ﻣﻜﺎﻥ ﻋﻨﺎﺻﺮ ﺍﻟﻤﺼﻔﻮﻓﺔ

[B]

 

 ﻭﺇﺣﻼﻝ ﻋﻨﺎﺻﺮ ﺍﻟﻤﺼﻔﻮﻓﺔ

[B]

  ﻣﻜﺎﻥ ﻋﻨﺎﺻﺮ ﺍﻟﻤﺼﻔﻮﻓﺔ

[A]

  ﺇﻥ ﺍﻟﻤﺼﻔﻮﻓﺘﻴﻦ ﻫﻤﺎًﺎﻤﻠﻋ 

  ﻣﺼﻔﻮﻓﺘﺎﻥ ﺍﺣﺎﺩﻳﺘﺎﻥ ﻭﻋﻨﺎﺻﺮﻫﻤﺎ ﻫﻲ

          

[ ]

=

17

6

3

A

                       

[ ]

=

4

7

15

B

 

#include < stdio.h > 
main( ){ 
int i, c, a[3] = {3,6,17}, b[3] = {15,7,4}; 
for(i=0;i<3;++i) { 
c = a[i]; 
a[i] = b[i]; 
b[i] = c; } 
for(i=0;i<3;++i) 
printf("\n %d \t %d", a[i], b[i]); 

 

)

 ﺳﺆﺍﻝ

11

:(

  ﺍﻛﺘﺐ ﺑﺮﻧﺎﻣﺞ ﻹﻳﺠﺎﺩ ﻣﻔﻜﻮﻙ ﻋﻨﺎﺻﺮ ﺍﻟﻤﺼﻔﻮﻓﺔ

[A]

  ﻭﻃﺒﺎﻋﺔ ﻗﻴﻢ ﻣﻔﻜﻮﻙ ﺍﻟﻌﻨﺎﺻﺮ

 ﻓﻲ ﻣﺼﻔﻮﻓﺔ ﺍﺧﺮﻯ ﻫﻲ

[B]

  ﺇﻥ ﻣﺼﻔﻮﻓﺔًﺎﻤﻠﻋ 

[A]

  ﻫﻲ

8

6

12

4

15

2

3

17

1

  ﻭﺍﻟﻤﺼﻔﻮﻓﺔ

[B]

  ﺫﺍﺕ

 .

ﺑﻌﺪ ﻭﺍﺣﺪ

#include < stdio.h > 
main( ){ 
int i, j, k=0, x, a[3][3]={1, 17, 3, 2, 15, 4, 12, 6, 8}; 
double b[9]; 
for(i=0;i<3;++i) 


background image

 ﺃﻣﺜﻠﺔ ﻓﻲ ﺍﻟﻤﺼﻔﻮﻓﺎﺕ

 

 

for(j=0;j<3;++j) { 
b[k] = 1; 
x = a[i][j]; 
for(x; x>=1;--x) 
b[k] *= x; 
k = k+1; } 
for(i=0;i<k;++i) 
printf("\n %10.2f", b[i]); 

)

 ﺳﺆﺍﻝ

12

:(

  ﺍﻛﺘﺐ ﺑﺮﻧﺎﻣﺞ ﻹﻳﺠﺎﺩ ﻣﺮﺑﻊ ﺍﻷﻋﺪﺍﺩ ﺍﻟﺰﻭﺟﻴﺔ ﺩﺍﺧﻞ ﺍﻟﻘﻄﺮ ﺍﻟﺜﺎﻧﻮﻱ ﻟﻠﻤﺼﻔﻮﻓﺔ

[A]

 

 ﻭﻭﺿﻊ ﻫﺬﻩ ﺍﻟﻘﻴﻢ ﺃﻱ ﻣﺮﺑﻌﺎﺕ ﺍﻷﻋﺪﺍﺩ ﺍﻟﺰﻭﺟﻴﺔ ﻓﻲ ﻣﺼﻔﻮﻓﺔ

[B]

  ﺃﻥ ﺍﻟﻤﺼﻔﻮﻓﺔًﺎﻤﻠﻋ 

[A]

  ﻫﻲ

          

7

9

18

26

17

1

12

13

8

6

14

7

15

11

8

12

 

#include < stdio.h > 
main( ){ 
int i, j, k=0, b[4]; 
int a[4][4] = {12, 8, 11, 15, 7, 14, 6, 8, 13, 12, 1, 17, 26, 18, 9, 7}; 
for(i=0;i<4;++i) 
for(j=0;j<4;++j) 
if( i+j == 3 && a[i][j]%2 == 0) { 
b[k] = a[i][j]*a[i][j]; 
k = k+1; } 
for(i=0;i<k;++i) 
printf("\n %d", b[i]); 

)

 ﺳﺆﺍﻝ

13

:(

  ﺍﻛﺘﺐ ﺑﺮﻧﺎﻣﺞ ﻹﻳﺠﺎﺩ ﺍﻛﺒﺮ ﻋﻨﺼﺮ ﻓﻲ ﺍﻟﻤﺼﻔﻮﻓﺔ

[A]

  ﻭﺛﻢ ﺍﻳﺠﺎﺩ ﺍﻛﺒﺮ ﻋﻨﺼﺮ ﻓﻲ

 ﺍﻟﻤﺼﻔﻮﻓﺔ

[B]

 :

 ﺇﻥ ﻗﻴﻢ ﺍﻟﻤﺼﻔﻮﻓﺘﻴﻦ ﻫﻲًﺎﻤﻠﻋ ﺎﻤﻬﻨﻣ ﺮﺒﻛﻻﺍ ﺔﻋﺎﺒﻃﻭ ﺎﻤﻬﺘﻧﺭﺎﻘﻣﻭ 

[ ]

=

10

15

20

30

40

A

                          

[ ]

=

6

8

12

20

45

13

65

8

9

B

 

#include < stdio.h > 
main( ) { 
int i, j, maxa, maxb, a[5] = {40, 30, 20, 15, 10}; 
int b[3][3] = {9, 8, 65, 13, 45, 20, 12, 8, 6}; 


background image

 ﺃﻣﺜﻠﺔ ﻓﻲ ﺍﻟﻤﺼﻔﻮﻓﺎﺕ

 

 

maxa = a[0]; 
for(i=0;i<5;++i) 
if(a[i] > maxa) maxa = a[i]; 
printf("\n maxa= %d", maxa); 
maxb = b[0][0]; 
for(i=0;i<3;++i) 
for(j=0;j<3;++j) 
if(b[i][j] > maxb) maxb = b[i][j]; 
printf("\n maxb= %d", maxb); 
if(maxa > maxb) printf("\n max. is maxa= %d", maxa); 
else   printf("\n max. is maxb= %d", maxb); 

)

 ﺳﺆﺍﻝ

14

:(

  ﺍﻛﺘﺐ ﺑﺮﻧﺎﻣﺞ ﻹﻳﺠﺎﺩ ﺍﻛﺒﺮ ﻋﻨﺼﺮ ﻭﺍﺻﻐﺮ ﻋﻨﺼﺮ ﻓﻲ ﺍﻟﻤﺼﻔﻮﻓﺔ

[A]

  ﻭﺿﺮﺏ

 ﺍﻟﻤﺼﻔﻮﻓﺔ

[B]

  ﺑﺎﻛﺒﺮ ﻋﻨﺼﺮ ﻟﺘﻜﻮﻳﻦ ﺍﻟﻤﺼﻔﻮﻓﺔ

[C]

  ﻭﺿﺮﺏ ﺍﻟﻤﺼﻔﻮﻓﺔ

[B]

  ﺑﺎﺻﻐﺮ ﻋﻨﺼﺮ

 ﻟﺘﻜﻮﻳﻦ ﺍﻟﻤﺼﻔﻮﻓﺔ

[D]

 .

ﺃﻥ ﺟﻤﻴﻊ ﺍﻟﻤﺼﻔﻮﻓﺎﺕ ﺫﺍﺕ ﺑﻌﺪ ﻭﺍﺣﺪ ﻭﻣﻜﻮﻧﺔ ﻣﻦ ﺳﺘﺔ ﻋﻨﺎﺻﺮًﺎﻤﻠﻋ 

 #include < stdio.h > 
main( ){ 
int i, max, min, a[6], b[6], c[6], d[6]; 
printf("input a & b matrix"); 
for(i=0;i<6;++i) 
scanf("%d  %d", &a[i], &b[i]); 
max = a[0]; 
min = a[0]; 
for(i=0;i<6;++i) { 
if(a[i] > max) max = a[i]; 
if(a[i] < min) min = a[i];} 
for(i=0;i<6;++i){ 
c[i] = max*b[i]; 
d[i] = min*b[i];  } 
printf("\n a[6] \t b[6] \t c[6] \t d[6]"); 
for(i=0;i<6;++i) 
printf("\n %d \t %d \t %d \t %d ", a[i], b[i], c[i], d[i]); 

)

 ﺳﺆﺍﻝ

15

:(

  ﺍﻛﺘﺐ ﺑﺮﻧﺎﻣﺞ ﻹﻳﺠﺎﺩ ﺍﻻﻋﺪﺍﺩ ﺍﻷﻭﻟﻴﺔ ﻓﻲ ﺍﻟﻤﺼﻔﻮﻓﺔ

[A]

  ﻭﻛﺘﺎﺑﺔ ﻛﻠﻤﺔ

(not found)

 

  ﺍﻥ ﺍﻟﻤﺼﻔﻮﻓﺔ ﻫﻲًﺎﻤﻠﻋ .ﺔﻓﻮﻔﺼﻤﻟﺍ ﻞﺧﺍﺩ ﺔﻴﻟﻭﻻﺍ ﺩﺍﺪﻋﻻﺍ ﻰﻟﺇ ﻲﻤﺘﻨﻳ ﺮﺼﻨﻋ ﻱﺍ ﺪﺠﻳ ﻢﻟ ﺍﺫﺍ

[ ]

=

9

18

6

32

41

9

3

27

5

12

7

13

A

  


background image

 ﺃﻣﺜﻠﺔ ﻓﻲ ﺍﻟﻤﺼﻔﻮﻓﺎﺕ

 

 

#include < stdio.h > 
main( ){ 
int i, j, x, k=0; 
int a[3][4] = {13, 7, 12, 5, 27, 3, 9, 41, 32, 6, 18, 9}; 
for(i=0;i <3;++i) 
for(j=0;j <4;++j) { 
for(x = 2; x <a[i][j];++x) 
if(a[i][j]%x == 0) goto stop; 
printf("\n %d", a[i][j]); 
k=k+1; 
stop: } 
if(k == 0) printf("not found"); 

 

)

 ﺳﺆﺍﻝ

16

:(

  ﺍﻛﺘﺐ ﺑﺮﻧﺎﻣﺞ ﻹﻳﺠﺎﺩ ﻛﻠﻤﺔ

(why)

  ﻣﻦ ﺑﻴﻦ ﻣﺠﻤﻮﻋﺔ ﻣﻦ ﺍﻟﻜﻠﻤﺎﺕ ﺍﻟﻤﺨﺰﻭﻧﺔ ﻓﻲ

 ﻣﺼﻔﻮﻓﺔ ﻭﻋﻨﺪ ﻭﺟﻮﺩﻫﺎ ﻳﻄﺒﻊ ﺍﻟﺒﺮﻧﺎﻣﺞ ﻛﻠﻤﺔ

(why not)

  ﻭﻋﻨﺪ ﻋﺪﻡ ﻭﺟﻮﺩﻫﺎ ﻳﻄﺒﻊ ﺍﻟﺒﺮﻧﺎﻣﺞ ﻛﻠﻤﺔ

(forget it)

 . 

#include < stdio.h > 
#include < string.h > 
main( ){ 
 int i; 
char a[5][10] = {"yes", "why", "go", "sit", "there"}; 
for(i=0;i <5;++i) 
if(strcmp(a[i],"why") == 0) { 
printf("\n %s not", a[i]); 
goto end; } 
printf("\n forget it"); 
end: 

)

 ﺳﺆﺍﻝ

17

:(

  ﻓﻲ ﻣﺼﻔﻮﻓﺔ ﺍﺧﺮﻯًﺎﻴﺴﻜﻋ ًﺎﺒﻴﺗﺮﺗ ﺎﻬﺒﻴﺗﺮﺗﻭ ﺔﻓﻮﻔﺼﻣ ﻲﻓ ﺩﺍﺪﻋﺍ ﺓءﺍﺮﻘﻟ ﺞﻣﺎﻧﺮﺑ ﺐﺘﻛﺍ 

 .

ﺇﻥ ﺍﻟﻤﺼﻔﻮﻓﺘﻴﻦ ﺫﺍﺕ ﺑﻌﺪ ﻭﺍﺣﺪًﺎﻤﻠﻋ

#include < stdio.h > 
main( ){ 
int i, x[4] = {11,8,5,6}, b[4]; 
for(i=0;i<4;++i) { 
b[i] = x[3-i]; 
printf("\n %d", b[i]); 
}} 

 


background image

 ﺃﻣﺜﻠﺔ ﻓﻲ ﺍﻟﻤﺼﻔﻮﻓﺎﺕ

 

 

)

 ﺳﺆﺍﻝ

18

:(

  ﺍﻛﺘﺐ ﺑﺮﻧﺎﻣﺞ ﻟﻘﺮﺍءﺓ ﻣﺼﻔﻮﻓﺔ

[A]

  ﺛﻢ ﻋﺰﻝ ﺍﻻﻋﺪﺍﺩ ﺍﻟﻔﺮﺩﻳﺔ ﻓﻲ ﻣﺼﻔﻮﻓﺔ

[B]

 

 ﻭﺍﻻﻋﺪﺍﺩ ﺍﻟﺰﻭﺟﻴﺔ ﻓﻲ ﻣﺼﻔﻮﻓﺔ

[C]

 .

 ﻭﻃﺒﺎﻋﺔ ﻫﺬﻩ ﺍﻟﻤﺼﻔﻮﻓﺎﺕ ﺍﻟﺜﻼﺙ

#include < stdio.h > 
main( ){ 
int i, a[6] = {5,7,8,10,12,11}; 
int b[6], c[6], j=0, k=0; 
for(i=0;i<6;++i) 
if(a[i]%2 == 0) { 
c[k] = a[i]; 
k=k+1;  } 
else  { 
b[j] = a[i]; 
j = j+1;  } 
for(i=0;i<6;++i) 
printf("%d  \t", a[i]); 
printf("\n"); 
for(i=0;i<j;++i) 
printf("%d  \t", b[i]); 
printf("\n"); 
for(i=0;i<k;++i) 
printf("%d  \t", c[i]); 

)

 ﺳﺆﺍﻝ

19

:(

  ﺍﻛﺘﺐ ﺑﺮﻧﺎﻣﺞ ﻟﺘﺮﺗﻴﺐ ﺍﻟﻤﺼﻔﻮﻓﺔ

[A]

  ﺇﻥ ﺍﻟﻤﺼﻔﻮﻓﺔًﺎﻤﻠﻋ ًﺎﻳﺪﻋﺎﺼﺗ 

[A]

  ﻫﻲ

8

3

15

11

9

 

#include < stdio.h > 
main( ){ 
int i, j, k, b; 
int a[5] = {9,11,15,3,8}; 
for(i=0;i<5;++i) 
{ k=i; 
for(j=i;j<5;++j) 
if(a[j] < a[k]) k = j; 
b = a[i]; 
a[i] = a[k]; 
a[k] = b; 
printf("\n %d", a[i]); 
}} 


background image

 ﺃﻣﺜﻠﺔ ﻓﻲ ﺍﻟﻤﺼﻔﻮﻓﺎﺕ

 

 

)

 ﺳﺆﺍﻝ

20

:(

  ﺍﻛﺘﺐ ﺑﺮﻧﺎﻣﺞ ﻟﺘﺮﺗﻴﺐ ﺍﻟﻤﺼﻔﻮﻓﺔ

[A]

  ﺃﻥ ﺍﻟﻤﺼﻔﻮﻓﺔًﺎﻤﻠﻋ ًﺎﻴﻟﺯﺎﻨﺗ 

[A]

  ﻫﻲ

20

16

31

17

15

32

21

 

#include < stdio.h > 
main( ){ 
int i, j, k, b; 
int a[7] = {21,32,15,17,31,16,20}; 
for(i=0;i<7;++i) 
{ k=i; 
for(j=i;j<7;++j) 
if(a[j] > a[k]) k=j; 
b = a[i]; 
a[i] = a[k]; 
a[k] = b; 
printf("\n %d", a[i]); 
}} 

)

 ﺳﺆﺍﻝ

21

:(

  ﺍﻛﺘﺐ ﺑﺮﻧﺎﻣﺞ ﻷﻳﺠﺎﺩ ﺍﻻﻋﺪﺍﺩ ﺍﻟﺘﻲ ﺗﻘﺒﻞ ﺍﻟﻘﺴﻤﺔ ﻋﻠﻰ

3

  ﺩﺍﺧﻞ ﺍﻟﻤﺼﻔﻮﻓﺔ

[A]

  ﺫﺍﺕ

 ﺍﻟﺒﻌﺪﻳﻦ ﻭﺍﻳﺠﺎﺩ ﻣﺠﻤﻮﻉ ﻫﺬﻩ ﺍﻻﻋﺪﺍﺩ ﻭﺍﻟﻤﺼﻔﻮﻓﺔ

[A]

  ﻫﻲ

15

7

12

8

13

5

17

21

22

 

#include < stdio.h > 
main( ) { 
int i, j, a[3][3] = {22,21,17,5,13,8,12,7,15}; 
int s = 0; 
for(i=0;i<3;++i) 
for(j=0;j<3;++j) 
if(a[i][j]%3 == 0) { 
printf("\n"); 
printf("%d \t", a[i][j]); 
s += a[i][j]; } 
printf("\n %d", s); 




رفعت المحاضرة من قبل: ضرغام العزاوي
المشاهدات: لقد قام 10 أعضاء و 277 زائراً بقراءة هذه المحاضرة








تسجيل دخول

أو
عبر الحساب الاعتيادي
الرجاء كتابة البريد الالكتروني بشكل صحيح
الرجاء كتابة كلمة المرور
لست عضواً في موقع محاضراتي؟
اضغط هنا للتسجيل