Professional Documents
Culture Documents
@SHARIF - IE برنامه نویسی جلالی
@SHARIF - IE برنامه نویسی جلالی
ﺑﺮﻧﺎﻣﻪ ﻧﻧﻮﻳﺴﻲ
آﻣﻮزش ﻧﺎ ﻪ
آ زش
C
C++
C++ Programming
T t i l
Tutorial
ﮔﺮدآورﻧﺪه :ﻋﺒﺎس ﻋﺰﻳﺰ ﺟﻼﻟﻲ
C++ Tutorial azizjalali@iust.ac.ir 1
داﻧﺸﮕﺎه ﻋﻠﻢ و ﺻﻨﻌﺖ اﻳﺮان – داﻧﺸﻜﺪه ﻣﻬﻨﺪﺳﻲ ﻛﺎﻣﭙﻴﻮﺗﺮ
ﻞا ل
اول ﻓﻓﺼﻞ
آﺷﻨﺎﺋﻲ ﺑﺎ
C++
و ﻣﺤﻴﻂ ﻛﺎﻣﭙﺎﻳﻠﺮ
C++ Tutorial azizjalali@iust.ac.ir 2
داﻧﺸﮕﺎه ﻋﻠﻢ و ﺻﻨﻌﺖ اﻳﺮان – داﻧﺸﻜﺪه ﻣﻬﻨﺪﺳﻲ ﻛﺎﻣﭙﻴﻮﺗﺮ
: C ﻳﻚ ﺑﺮﻧﺎﻣﻪ ﺑﻪ زﺑﺎن
/* P1.1 First Program */
#include <stdio.h>
main()
{
int a, b;
scanf( %d %d”
scanf(“%d %d , &a,
&a &b);
printf(“\n%d”, a + b);
}
Running program:
12 36
48
C++ Tutorial azizjalali@iust.ac.ir 3
داﻧﺸﮕﺎه ﻋﻠﻢ و ﺻﻨﻌﺖ اﻳﺮان – داﻧﺸﻜﺪه ﻣﻬﻨﺪﺳﻲ ﻛﺎﻣﭙﻴﻮﺗﺮ
: C ﻳﻚ ﺑﺮﻧﺎﻣﻪ ﺑﻪ زﺑﺎن
/* P1.1 First Program */
Comment
#
#include <stdio.h> Use of Library Function
scanf( %d %d”
scanf(“%d %d , &a,
&a &b); C Executable Statement
printf(“\n%d”, a + b);
} End of program End of each statement
Running program:
12 36
48 .ﻴﺢ اﺳﺖ
ﻣﻴﺸﻮد ﻳﻳﻚ ﻋﺪد ﺻﺤﻴﺢ
پ ﻴ ﻮﭼﺎپ
ﺧﻮاﻧﺪه و ﻳﻳﺎ ﭼ
آﻧﭽﻪ ﻛﻪ ﻮ
ن اﺳﺖ ﻛﻪ ﭽ ﻧﺸﺎن%
ن دﻫﻨﺪه آن %d اﻟﮕﻮي
ﻮي.ﻴﻢﻣﻴﻨﺎﻣﻴﻢ
ﭘﻴﻤﺎﻳﺶ ﻴ ررا اﻟﮕﻮي%
ﻮي ﭘﻴﻤ ﻳﺶ %d %
%d ررﺷﺘﻪ
#include <stdio.h>
main()
{
int a=12, b=36;
/ scanf( %d %d”
/*scanf(“%d %d , &a,
&a &b);*/
&b); /
printf(“\n%d”, a + b);
}
Running program:
12 36
48
ﻓﺼﻞ دوم
ﻓ ﻞ
آﺷﻨﺎﺋﻲ ﺑﺎ
داده ﻫﺎ و اﻧﻮاع آن ﻫﺎ
-1ﻛﺎراﻛﺘﺮﻫﺎ :
ﮔﻮﺋﻴﻢ.
ﻛﺎراﻛﺘﺮ ﻣﻲ ﮔ ﺋ
روﻧﺪ ،ﻛﺎ اﻛﺘ
ﻛﺎر ﻣﻲ ﻧ
زﺑﺎن ﺑﻪ ﻛﺎ
ﻫﺎﺋﻲ ﻛﻛﻪ در ﺎ
ﻧﺸﺎﻧﻪ ﺎﺋ
ﻳﻚ ااز ﻧﺸﺎﻧ
ﺑﻪ ﻫﺮ ﻚ
اﻳﻦ ﻛﺎراﻛﺘﺮﻫﺎ ﻋﺒﺎرﺗﻨﺪ از :
-5ﻣﺘﻐﻴﺮﻫﺎ :
ﻫﺎﺋﻲ از ﺣﺎﻓﻈﻪ ﻫﺴﺘﻨﺪ ﻛﻪ آن ﻫﺎ را ﺑﺮاي ﻧﮕﻬﺪاري داده ﻫﺎ ﺑﻜﺎر ﻣﻣﻲ ﻣﺘﻐﻴﺮﻫﺎ ﻣﻜﺎن ﻫﺎﺋ
ﺑﺮﻳﻢ .اﻳﻦ ﻣﺤﻞ ﻫﺎ را از آن رو ﻣﺘﻐﻴﺮ ﻣﻲ ﻧﺎﻣﻴﻢ ﻛﻪ داده ﻫﺎي آﻧﻬﺎ ﻣﻲ ﺗﻮاﻧﻨﺪ ﺗﻐﻴﻴﺮ
ﻢ ﻛﻪ درر ﺣﻘﻴﻘﺖ ﻧﺸﺎن
ن ﻗﺮارر ﻣﻴﺪﻫﻴﻢ
ﻲ ﺮن ﻧﺎﻣﻲ
ﺑﺮاي آن
ﻣﺘﻐﻴﺮ ،ﺮ
ﺮ ﻣﺮاﺟﻌﻪ ﺑﻪ ﻫﺮﺮ ﻧﻤﺎﻳﻨﺪ .ﺮ
ﺑﺮاي ﺮ
دﻫﻨﺪه ﻣﺤﺘﻮﻳﺎت آن ﻣﺘﻐﻴﺮ اﺳﺖ .ﺑﺮ اي ﺗﻌﺮﻳﻒ ﻣﺘﻐﻴﺮﻫﺎ ،اﻟﮕﻮي زﻳﺮ را ﺑﻜﺎر ﻣﻴﺒﺮﻳﻢ:
;char a
;int i , cont
, ;/ single
*float first,second;/ g precision */
p /
double sum; /* double precision */
: 2 ﻣﺜﺎل
/* P2.1 Second Program */
#include <stdio.h>
main()
{
int number;
float sum;
char ch;
Running program:
12 2.5 x
12 2.500000 x
)(main
{
]char name[20
;]name[20], tel[10
;)“ printf(“Enter name and tel# :
;)scanf(“%s %s” , &name , &tel
;)printf(“%s %s\n”, name, tel
}
Running program:
Enter name and tel# : Ebrahim 6688007
Ebrahim 6688007
ﻣﺜﺎل :ﺑﺮﻧﺎﻣﻪ اي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﻧﺎم و ﭼﻬﺎر ﻧﻤﺮه داﻧﺸﺠﻮﺋﻲ را ﺑﺨﻮاﻧﺪ ،ﻧﺎم ،ﻧﻤﺮه ﻫﺎ و ﻣﻴﺎﻧﮕﻴﻦ آن ﻫﺎ را ﭼﺎپ ﻧﻤﺎﻳﺪ.
Running program:
Enter name : Ebrahim.Azari
Enter 4 marks : 18 19 17.5 20
ﺜﺎل :
ﻣﺜﺎل
;"cout << "Hello, " << "I am " << "a C++ statement
اﻳﻦ ﻋﺒﺎرت ﻣﻮﺟﺐ ﻣﻴﮕﺮدد ﺗﺎ ﻋﺒﺎرت زﻳﺮ روي ﺻﻔﺤﻪ ﻣﺎﻧﻴﺘﻮر ﻧﻤﺎﻳﺶ داده ﺷﻮد:
Hello, I am a C++ statement
ﻣﺜﺎل :
cout << "Hello,
;Hello, I am " << age << " years old and my zipcode is " << zipcode
ﺪار zipcodeداراي
اراي ﻣﻣﻘﺪار ﺪار 24ﺑﺑﺎﺷﺪﺪ و pcodeﻮاي ageﻣﻣﻘﺪار
ﻴﻢ ﻛﻪ ﻣﻣﺤﺘﻮاي ﺮض ﻛﻨﻴﻢ
ااﮔﺮﺮ ﻓﺮض
90046اﺳﺖ ،آﻧﮕﺎه ﭘﻴﺎم زﻳﺮ را روي ﺻﻔﺤﻪ ﻣﺎﻧﻴﺘﻮر ﺧﻮاﻫﻴﻢ داﺷﺖ:
Hello I am 24 years old and my zipcode is 90064
Hello,
ﻣﺜﺎل :
cout << “This
This is a sentence
;;”sentence.
”cout << “This is another sentence.
ﻧﻜﺘﻪ :ﺑﺎ اﺳﺘﻔﺎده از ،cinﺗﻨﻬﺎ ﺗﺎ اوﻟﻴﻦ ﻛﺎراﻛﺘﺮ ﺑﻼﻧﻚ ﻣﻘﺪار ورودي ﺧﻮاﻧﺪه ﻣﻴﺸﻮد.
string.hررا داﺷﺘﻪ ﺑ ﻴ
ﺑﺎﺷﻴﺪ. ﻳﻞ ﻫﺪرر g
ﺷﺮط آﻧﻜﻪ ﻓﺎﻳﻞ
ﻧﻜﺘﻪ :ﺑﺑﻪ ﺮ
دﻫﻴﺪ:
اﻧﺠﺎمم ﻴ
ﻴﺰ ﺠﺑﺼﻮرت زﻳﺮ ﻧﻴﺰ
ﻴﺮ ﺑ ﻮر
ﺗﻌﺮﻳﻒ ﻣﺘﻐﻴﺮ
ﻳﻦ ﻛﺎرر ررا ﺑﺑﺎ ﺮﻳ
ﻤﺮﻳﻦ :اﻳﻦ
ﺗﻤﺮﻳﻦ
;]char mystr[30
ﻓﺼﻞ ﺳﻮم
ﻋﺒﺎرت ﻫﺎ
ﻋﺎت
و
ﻋﻤﻠﮕﺮﻫﺎ
-3ﻋﻤﻠﮕﺮﻫﺎ
اﻧﻮاع ﻋ ﻠﮕ ﻫﺎ
ﻋﻤﻠﮕﺮﻫﺎ -3-1اﻧ اع
.1ﺣﺴﺎﺑﻲ
راﺑﻄﻪ ااي
.2ا ﻄ
.3ﻣﻨﻄﻘﻲ
ﺑﻴﺘﻲ
.4ﺘ
.5ﺟﺎﺑﻪ ﺟﺎﺋﻲ
ﻳﮕﺎﻧﻲ
.6ﮕﺎﻧ
.7واﮔﺬاري
ﺷﺮﻃﻲ
.8ﺷﺮﻃ
C++ Tutorial azizjalali@iust.ac.ir 40
داﻧﺸﮕﺎه ﻋﻠﻢ و ﺻﻨﻌﺖ اﻳﺮان – داﻧﺸﻜﺪه ﻣﻬﻨﺪﺳﻲ ﻛﺎﻣﭙﻴﻮﺗﺮ
-1ﻋﻤﻠﮕﺮﻫﺎي ﺣﺴﺎﺑﻲ
-3ﻋﻤﻠﮕﺮﻫﺎي ﻣﻨﻄﻘﻲ
-4ﻋﻤﻠﮕﺮﻫﺎي ﺑﻴﺘﻲ
ﻣﻌﻨﺎي ﻋﻤﻠﮕﺮ ﻋﻤﻠﮕﺮ
وي ﺑﻴﺘﻲ )(AND &
ﻳﺎي ﺑﻴﺘﻲ )(OR |
ﻳﺎي اﻧﺤﺼﺎري ﺑﻴﺘﻲ )(Exclusive OR ^
ﻧﻘﻴﺾ ﺑﻴﺘﻲ ~
ﺟﺎﺑﺠﺎﺋﻲ ﺑﻪ راﺳﺖ )(Shift Right >>
ﺟﺎﺑﺠﺎﺋﻲ ﺑﺑﻪ ﭼﭗ )(Shift Left
ﺟ ﺑﺠ ﻲ <<
C++ Tutorial azizjalali@iust.ac.ir 48
داﻧﺸﮕﺎه ﻋﻠﻢ و ﺻﻨﻌﺖ اﻳﺮان – داﻧﺸﻜﺪه ﻣﻬﻨﺪﺳﻲ ﻛﺎﻣﭙﻴﻮﺗﺮ
-5ﻋﻤﻠﮕﺮﻫﺎي ﺟﺎﺑﺠﺎﺋﻲ
ﻋﻤﻠﮕﺮﻫﺎي ﺟﺎﺑﺠﺎﺋﻲ را ﺑﺮاي ﺟﺎﺑﺠﺎﻛﺮدن ﺑﻴﺖ ﻫﺎي ﻳﻚ ﻛﺎراﻛﺘﺮ و ﻳﺎ ﻳﻚ ﻋﺪد ﺻﺤﻴﺢ
ﺑﻪ ﻛﺎر ﻣﻲ ﺑﺮﻳﻢ .ﻣﺜﺎل :
‘a’ >> 1
‘E’ << 4
آراﻳﺶ ﺑﻴﺘﻲ ﻛﺎراﻛﺘﺮ 0110 0001 a
ﻛﺎراﻛﺘﺮ 0100 0101 E آراﻳﺶ ﺑﻴﺘﻲ ﻛﺎ اﻛ
آا
‘a’ = 0 1 1 0 0 0 0 1
’0 0 1 1 0 0 0 0 = ‘0 0 :: ASCII = 48
‘E’ = 0 1 0 0 0 1 0 1
’0 1 0 1 0 0 0 0 = ‘P ? = P :: ASCII
C++ Tutorial azizjalali@iust.ac.ir 50
داﻧﺸﮕﺎه ﻋﻠﻢ و ﺻﻨﻌﺖ اﻳﺮان – داﻧﺸﻜﺪه ﻣﻬﻨﺪﺳﻲ ﻛﺎﻣﭙﻴﻮﺗﺮ
-6ﻋﻤﻠﮕﺮﻫﺎي ﻳﮕﺎﻧﻲ
ﻣﻌﻨﺎي ﻋﻤﻠﮕﺮ ﻋﻤﻠﮕﺮ
ﻣﺜﺒﺖ +
ﻣﻨﻔﻲ -
اﻓﺰاﻳﺶ ++
ﻛﺎﻫﺶ --
ﺗﺒﺪﻳﻞ ﻧﻮع )ﻧﻮع(
اﻧﺪازه sizeof
ﻧﺸﺎﻧﻲ
ﻲ &
C++ Tutorial azizjalali@iust.ac.ir
ﻧﺸﺎﻧﮕﺮ * 55
داﻧﺸﮕﺎه ﻋﻠﻢ و ﺻﻨﻌﺖ اﻳﺮان – داﻧﺸﻜﺪه ﻣﻬﻨﺪﺳﻲ ﻛﺎﻣﭙﻴﻮﺗﺮ
-7ﻋﻤﻠﮕﺮﻫﺎي واﮔﺬاري
ﻋﻤﻠﮕﺮﻫﺎﺋﻲ ﻫﺴﺘﻨﺪ ﻛﻪ ﺑﺮاي واﮔﺬار ﻛﺮدن ﻣﻘﺪار ﻳﻚ ﻋﺒﺎرت ﺑﻪ ﻳﻚ ﻣﺘﻐﻴﺮ ﺑﻪ ﻛﺎر
ﻣﻴﺮوﻧﺪ .ﻣﺜﺎل:
;a = b + 2
ﻣﻲ ﺗﻮاﻧﻴﻢ ﻋﻤﻠﮕﺮﻫﺎي دودوﺋﻲ ﺣﺴﺎﺑﻲ را ﺑﺎ ﻋﻤﻠﮕﺮﻫﺎي واﮔﺬاري ﺗﺮﻛﻴﺐ ﻧﻤﺎﺋﻴﻢ .اﻳﻦ
ﻋﻤﻠﮕﺮﻫﺎ ﻋﺒﺎرﺗﻨﺪ از :
=+= -= *= /= %
;x = x + 3; ::: x += 3
دﻳﮕﺮ ﻛﻛﻤﺘﺮ ااﺳﺖ .ﺧﻮد ااﻳﻦ ﻠﮕ ﺎ
ﻋﻤﻠﮕﺮﻫﺎ ﻋﻤﻠﮕﺮﻫﺎي ﮕ
واﮔﺬاري ااز ﻫﻤﻪ ﻠﮕ ﺎ
ﻋﻤﻠﮕﺮﻫﺎي اﮔﺬا
اوﻟﻮﻳﺖ ﻠﮕ ﺎ اﻟ
داراي اوﻟﻮﻳﺖ ﻳﻜﺴﺎﻧﻨﺪ و در ﺻﻮرت داﺷﺘﻦ ﭼﻨﺪ ﻋﻤﻠﮕﺮ واﮔﺬاري در ﻳﻚ ﻋﺒﺎرت،
اوﻟﻮﻳﺖ آن ﻫﺎ از راﺳﺖ ﺑﻪ ﭼﭗ ﻣﻲ ﺑﺎﺷﺪ.
C++ Tutorial azizjalali@iust.ac.ir 57
داﻧﺸﮕﺎه ﻋﻠﻢ و ﺻﻨﻌﺖ اﻳﺮان – داﻧﺸﻜﺪه ﻣﻬﻨﺪﺳﻲ ﻛﺎﻣﭙﻴﻮﺗﺮ
-8ﻋﻤﻠﮕﺮ ﺷﺮﻃﻲ
ﺑﺮﻗﺮار ﺑﻮدن و ﺎﻳﺎ ﻧﺒﻮدن ﺷﺮﻃﻲ ) ،(?:ﻠﮕ
ﻋﻤﻠﮕﺮي ااﺳﺖ ﻛﻛﻪ ﺑﺴﺘﻪ ﺑﻪ ﻗ ا ﻋﻤﻠﮕﺮ ﺷ ﻃ
ﻠﮕ
ﻳﻚ ﺷﺮط ،ﻣﻘﺪار ﻳﻜﻲ از دو ﻋﺒﺎرت ﭘﺲ از ﺧﻮد را ﺑﺮﻣﻲ ﮔﺰﻳﻨﺪ .اﻟﮕﻮي ﺑﻪ
اﺳﺖ:
ﺻﻮرت زﻳﺮ ا ﺖ
ﻋﻤﻠﮕﺮ ﺑﻪ ت ﺑﺴﺘﻦ ااﻳﻦ ﻠﮕ
ﻛﺎر ﺘﻛﺎ
ﻋﺒﺎرت : 2ﻋﺒﺎرت ? 1ﺷﺮط
ﻣﻘﺪار اﻳﻦ ﻋﺒﺎر در ﺻﻮرت ﺑﺮﻗﺮاي ﺷﺮط ﻋﺒﺎرت 1و در ﻏﻴﺮ اﻳﻦ ﺻﻮرت
ﻋﺒﺎرت 2ﺧﻮاﻫﺪ ﺷﺪ.
;x = n > 0 ? n : -n
Running Program
Enter a number : 100
Absolute value of 100 : is 100
Running Program
Enter a number : -100
Absolute value of -100 : is 100
ﻓﺼﻞ ﭼﻬﺎرم
دﺳﺘﻮ ﻫﺎ
دﺳﺘﻮرﻫﺎ
)(C Statements
#include <stdio.h>
main()
{
i t a, b
int b;
Running program:
Enter 2 Integer No. : 12 9
a – b = 3
>#include <stdio.h
)(main
{
;int a, b, c
;)“ printf(“Enter 2 Integer No. :
scanf(“%d
(scanf ”%d %d
%d , &a,
;)&a &b
)if (a>b
;)printf(“a – b = %d\n”, a – b
{ else
;)“ printf(“Enter third No. :
;)scanf(“%d”, &c
;)printf(“a + b + c = %d\n”, a + b + c }
}
Running program:
Enter 2 Integer No. : 20 32
Enter third No. : 8
a + b + c = 60
>#include <stdio.h
)(main
{
int a
a, b
;b, c
;)“ printf(“Enter 2 Integer No. :
;)scanf(“%d %d” , &a, &b
)if (a>b
;)printf(“a – b = %d\n”, a – b
)else if (a < b
;)printf(“a + b = %d\n “, a + b
else
;) printf(“a * b = %d\n”, a * b
}
Running program:
Enter 2 Integer No. : 20 20
a * b = 400
#include
#i l d <stdio.h>
tdi h
main()
{
int n;
printf(“Enter
p ( a number (
(1 – 3)
) : “);
)
scanf(“%d” , &n);
switch (n) {
case 1 : printf(“One\n”);
case 2 : printf(“Two\n”);
case 3 : printf(“Three\n”);
default : printf(“Other\n”); }
}
Running program:
Enter a number (1 – 3) : 2
Two
Three
Other
#include <stdio.h>
main()
{
int n;
printf(“Enter
p t ( te a number
u be ((1 – 3)
) : “);
);
scanf(“%d” , &n);
switch (n) {
case 1 :
printf(“One\n”);
break;
case 2 :
printf(“Two\n”);
break;
case 3 :
printf(“Three\n”);
break;
default : printf(“Other\n”); }
}
Running program:
Enter a number (
(1 – 3)
) : 2
Two
while { )(condition
;statement1
;statement2
……
}
#include <stdio.h>
main()
{
int n=0;
while (n < 10) {
printf (“%d\n”,
( %d\n , n);
++n;
}
}
Running program
0
1
2
3
4
5
6
7
8
9
#include <stdio.h>
main()
{
int n=0;
do {
printf (“%d\n”,
( %d\n , n);
++n;
} while (n < 10);
}
Running program
0
1
2
3
4
5
6
7
8
9
ﻋﺒﺎرت ،1ﻋﺒﺎرﺗﻲ اﺳﺖ ﻛﻪ در آﻏﺎز ﻛﺎر )ﻳﻌﻨﻲ در اوﻟﻴﻦ ﻣﺮﺗﺒﻪ ﻛﻪ دﺳﺘﻮر forاﺟﺮا ﻣﻲ ﺷﻮد( اﺟﺮا ﻣﻲ ﺷﻮد .اﻳﻦ دﺳﺘﻮر
را ﻣﻌﻤﻮﻻ ﺑﺮاي ﻣﻘﺪاردﻫﻲ اوﻟﻴﻪ ﺑﻪ ﻣﺘﻐﻴﺮ ﺷﻤﺎرﻧﺪه ﺑﻜﺎر ﻣﻲ ﺑﺮﻳﻢ .ﺷﺮط ﻳﺎ ، conditionﻋﺒﺎرﺗﻲ اﺳﺖ ﻣﻨﻄﻘﻲ ﻛﻪ اﮔﺮ
،loop_statementﻛﻪ آآن را ﺑﺪﻧﻪ ﺣﻠﻘﻪ ﻣﻲ ﻧﺎﻣﻴﻢ ،اﺟﺮا ﻣﻲ ﺷﻮد .ﻫﻨﮕﺎﻣﻲ ﻛﻪ ﻋﺒﺎرت
l t t درﺳﺖ ﺑﺎﺷﺪ ،ﻋﺒﺎرت t
ﻧﺎدرﺳﺖ ﺷﻮد ،اﺟﺮاي دﺳﺘﻮر ﭘﺎﻳﺎن ﻣﻲ ﻳﺎﺑﺪ .ﻋﺒﺎرت ،2ﻣﻌﻤﻮﻻ ﺑﺮاي ﺗﻐﻴﻴﺮ ﻣﻘﺪار ﺷﻤﺎرﻧﺪه ﺑﻪ ﻛﺎر ﻣﻲ رود .اﻳﻦ ﻋﺒﺎرت،
ﻫﺮ ﺑﺎر ﻛﻪ ﺣﻠﻘﻪ ﺗﻜﺮار ﺷﻮد ،ﭘﺲ از آﺧﺮﻳﻦ دﺳﺘﻮر ﺣﻠﻘﻪ ،اﺟﺮا ﻣﻲ ﺷﻮد.
ﻣﺜﺎل:
…… ) for ( n = 0 ; n < 10 ; ++n
>#include <stdio.h
)(main
{
;int n
for ( n = 0 ; n < 10 ; ) ++n
printf (“%d\n”,
;)( %d\n , n
}
Running program
0
1
2
3
4
5
6
7
8
9
ﺑﻨﻮﻳﺴﻴﺪ.
ﻴﻦ ررا ﺑ ﻮﻳ ﻴ
ﺷﻤﺎرش ﻣﻌﻴﻦ
رش ﻫﺎي ﺑﺑﺎ
ﺷﺮط و ﺣﻠﻘﻪ ي
ﻫﺎي ﭘﻴﺶ ﺮ
ي ﺣﻠﻘﻪ ي
ﺑﺮاي
ل ﺑﺮ
ي ﻣﻌﺎدل
دﺳﺘﻮرﻫﺎي
ﻮر ﺗﻤﺮﻳﻦ :
ﺮﻳﻦ
; statement1
{ ) while ( condition
; ]loop_statement[s
; statement2
}
در اﻳﻦ ﻣﺜﺎل ،ﻧﺨﺴﺖ ﻋﺪدﻫﺎي ﺻﻔﺮ و ﻧﻪ ﺑﻪ ﻣﺘﻐﻴﺮﻫﺎي nو mواﮔﺬار ﻣﻲ ﺷﻮﻧﺪ .ﺳﭙﺲ ﺗﺎ زﻣﺎﻧﻲ
ﻞ ﺣﻠﻘﻪ ،ﺑﺑﻪ n
ﻋﺒﺎرات داﺧﻞ
ي ﺒر اﺟﺮاي
ن ﺟﺮﭘﺎﻳﺎن
ﺷﻮد .ﭘﺲ ازز ﭘ ﻳ
ﻲ ﻮﺗﻜﺮارر ﻣﻲ ﻛﻪ nﻮﭼ
ﻛﻮﭼﻜﺘﺮﺮ ازز 10اﺳﺖ ﺣﻠﻘﻪ ﺮ
ﻳﻜﻲ اﺿﺎﻓﻪ و از mﻳﻜﻲ ﻛﻢ ﻣﻲ ﺷﻮد.
>#include <stdio.h
)(main
{
; int n, m
) for ( n = 0 , m = 9 ; n < 10 ; ++n , --m
printf (“n
( n = %d m = %d\n”,
;)%d\n , n , m
}
Running program
n = 0 m = 9
n = 1 m = 8
n = 2 m = 7
n = 3 m = 6
n = 4 m = 5
n = 5 m = 4
n = 6 m = 3
n = 7 m = 2
n = 8 m = 1
n = 9 m = 0
ﺑﻨﻮﻳﺴﻴﺪ.
ﻴﻦ ررا ﺑ ﻮﻳ ﻴ
ﺷﻤﺎرش ﻣﻌﻴﻦ
رش ﻫﺎي ﺑﺑﺎ
ﺷﺮط و ﺣﻠﻘﻪ ي
ﻫﺎي ﭘﻴﺶ ﺮ
ي ﺣﻠﻘﻪ ي
ﺑﺮاي
ل ﺑﺮ
ي ﻣﻌﺎدل
دﺳﺘﻮرﻫﺎي
ﻮر ﺗﻤﺮﻳﻦ :
ﺮﻳﻦ
f
for ( i = 0 ; i <= 10 ; ++i
) i
) for ( j = 0 ; j <= 10 ; ++j
……..
ن دﻫﺪ.
ﻳﺶ ﻧﺸﺎن
ﺮب ررا روي ﺻﻔﺤﻪ ﻧﻤﺎﻳﺶ
ول ﺿﺮب
ﺟﺪول
ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﺟ
اي ﺑ ﻮﻳ ﻴ
ﺑﺮﻧﺎﻣﻪ ي
ﺮﻳﻦ :ﺑﺮ
ﺗﻤﺮﻳﻦ
-5دﺳﺘﻮرﻫﺎي ﭘﺮش
ﺑﺮﻧﺎﻣﻪ ررا ﺑﻲ
اﺟﺮاي ﺑﺮ
ﻴﺮ ﺟﺮ ي
ﻲ ﻫﺴﺘﻨﺪ ﻛﻪ ﻣﺴﻴﺮ
ﻋﺒﺎراﺗﻲ
دﺳﺘﻮرﻫﺎ /ﺒ ر
ﭘﺮش ،ﻮردﺳﺘﻮرﻫﺎي ﭘﺮش
ﻮر ي
ﻫﻴﭻ ﺷﺮﻃﻲ ﺗﻐﻴﻴﺮ ﻣﻲ دﻫﻨﺪ .اﻳﻦ ﻋﺒﺎرات ﺑﻪ ﺷﺮح زﻳﺮ ﻣﻲ ﺑﺎﺷﻨﺪ.
دﺳﺘﻮر ﺟﻬﺶ ).((goto -1د ﺘ
-2دﺳﺘﻮر ﺑﺮش/ﻗﻄﻊ ).(break
.(continuei -3دﺳﺘﻮر اداﻣﻪ )
-4دﺳﺘﻮر ﺑﺎزﮔﺸﺖ ).(return
*
***
*****
********
ﻓﺼﻞ ﭘﻨﺠﻢ
ﺗﻮاﺑﻊ
)(Functions
ﺗﻌﺮﻳﻒ ﺗﺎﺑﻊ :ﺗﺎﺑﻊ ،ﺑﺮﻧﺎﻣﻪ ﻫﺎي ﻛﻮﭼﻜﻲ ﻫﺴﺘﻨﺪ ﻛﻪ ﺑﺮاي اﻧﺠﺎم ﻛﺎري وﻳﮋه ﻧﻮﺷﺘﻪ ﻣﻲ ﺷﻮﻧﺪ.
ﻳﻚ ﺗﺎﺑﻊ ﻣﻴﺘﻮاﻧﺪ ﭼﻨﺪ ﻣﻘﺪار وروردي در زﻣﺎن ﻓﺮاﺧﻮاﻧﻲ داﺷﺘﻪ و ﻧﻴﺰ ﻣﻴﺘﻮاﻧﺪ ﻳﻚ ﻣﻘﺪار را در
ﻫﺎ ﺑﺮ دو ﻧﻮع ﻫﺴﺘﻨﺪ :
داﺷﺘﻪ ﺎﺑﺎﺷﺪ .ﺎﺗﺎﺑﻊ ﺎ
ﭘﺎﻳﺎن در ﺧﺮوﺟﻲ ا
ﻫﻨﮕﺎم ﺎ ﺎ
ﮕﺎ
-1ﺗﻮاﺑﻊ ﻛﺘﺎﺑﺨﺎﻧﻪ اي :ﻛﻪ از ﭘﻴﺶ آﻣﺎده ﺷﺪه اﻧﺪ .اﻳﻦ ﺗﺎﺑﻊ ﻫﺎ ﺗﻮﺳﻂ ﺗﻮﻟﻴﺪ ﻛﻨﻨﺪﮔﺎن ﻣﺘﺮﺟﻢ cو
ﻳﺎ ﻧﺮم اﻓﺰار ﻧﻮﻳﺴﺎن دﻳﮕﺮ ﻧﻮﺷﺘﻪ و ﺗﻮﻟﻴﺪ ﻣﻲ ﮔﺮدد .از ﺟﻤﻠﻪ ﺗﻮاﺑﻊ ﻛﺘﺎﺑﺨﺎﻧﻪ اي ﻣﻴﺘﻮاﻧﻴﻢ ،scanf
sqrt ،getche ،printfو از اﻳﻦ دﺳﺖ را ﻧﺎم ﺑﺮد.
-2ﺗﻮاﺑﻊ ﻧﻮﺷﺘﻪ ﺷﺪه ﺗﻮﺳﻂ ﻛﺎرﺑﺮ :اﻳﻦ ﺗﻮاﺑﻊ ﺗﻮﺳﻂ ﻛﺎرﺑﺮان ﺑﺮاي اﻧﺠﺎم ﻛﺎرﻫﺎي ﺧﺎص ﺧﻮد،
ﻧﻮﺷﺘﻪ ﻣﻲ ﺷﻮﻧﺪ.
: ﻓﺮﻣﺖ ﺗﺎﺑﻊ
return_type Function_Name ([argument_type argument][,…])
{
statements;
}
: ﻣﺜﺎل
ﺗﺬﻛﺮ :
اﮔﺮ ﺗﺎﺑﻊ ﺑﻌﺪ از ﺗﺎﺑﻊ mainﺗﻌﺮﻳﻒ ﺷﻮد ،ﺑﺎﻳﺴﺘﻲ ﻳﻚ
) Prototypeدر واﻗﻊ ﺧﻂ اول ﺗﺎﺑﻊ( را ﺑﻌﺪ از includeدر ﻣﺘﻦ
ﻴﻢ.
ﻗﺮارر دﻫﻴﻢ
ﺑﺮﻧﺎﻣﻪ ﺮ
ﺑﺮ
ﻧﻮﺷﺘﻦ
ﻧﻴﺎزي ﺑﻪ ﻧ ﺷ
ﺷﻮد ،ﻧ ﺎ ﺗﺎﺑﻊ mainﻧ ﺷ
ﻧﻮﺷﺘﻪ ﺷ ﻗﺒﻞ ااز ﺗﺎ
ﺗﺎﺑﻊ ﻗ ﻞ
اﮔﺮ ﺗﺎ
اﮔ
) Prototypeدر واﻗﻊ ﺧﻂ اول ﺗﺎﺑﻊ( در ﻣﺘﻦ ﺑﺮﻧﺎﻣﻪ ﻧﺪارﻳﻢ.
main()
{
int a, b;
do {
printf(“\nEnter a & b : “);
scanf(“%d %d”, &a, &b);
printf(“a + b = %d\n”, sum(a, b));
} while (a);
}
Enter a & b : 0 5
a + b = 5
main()
{
int a, b;
do {
printf(“\nEnter a & b : “);
scanf(“%d
scanf( %d %d”
%d , &a,
&a &b);
sum (a , b);
} while (a);
}
Enter a & b : 0 2
a + b = 2
int main()
{
int p=100;
p 100;
fun (int q)
{
printf (“p2 = %d\n” , q);
q = 333;
printf(“p3 = %d\n”, q);
}
ﺗﻤﺮﻳﻦ : 1ﺗﺎﺑﻌﻲ ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﻳﻚ ﻛﺎراﻛﺘﺮ را ﮔﺮﻓﺘﻪ ،در ﺻﻮرﺗﻲ ﻛﻪ ﻛﺎراﻛﺘﺮ ﮔﺮﻓﺘﻪ ﺷﺪه ﻳﻚ ﺣﺮف ﺑﺰرگ A
ﺗﺎ Zﺑﺎﺷﺪ ،ﻣﻌﺪل ﻛﻮﭼﻚ آن را ﺑﺮﮔﺮداﻧﺪه و در ﻏﻴﺮ اﻳﻦ ﺻﻮرت ﺧﻮد ﻛﺎراﻛﺘﺮ را ﺑﺮﮔﺮداﻧﺪ.
ﺗﻤﺮﻳﻦ : 2ﺗﺎﺑﻌﻲ ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﻳﻚ ﻛﺎراﻛﺘﺮ را ﮔﺮﻓﺘﻪ ،در ﺻﻮرﺗﻲ ﻛﻪ ﻛﺎراﻛﺘﺮ ﮔﺮﻓﺘﻪ ﺷﺪه رﻗﻢ ﺑﺎﺷﺪ ،ﻣﻘﺪار
ﺑﺮﮔﺮداﻧﺪ.
ﻣﻘﺪار Falseﺑ ﮔ داﻧﺪﺻﻮرت ﻣﻘﺪا
Trueو ددر ﻏﻏﻴﺮ اﻳﻦ ﺻﻮ ت
ﻊ mainﺮ
ﺗﻌﺮﻳﻒ ﺷﺪه اﺳﺖ. ﻗﺒﻞ ازز ﺗﺎﺑﻊ
ﺗﺎﺑﻊ ﻞ
ﻣﺜﺎل ﺑﻌﺪ ،ﻊ
در ل • ﺗﺬﻛﺮﺮ :ر
C++ Tutorial azizjalali@iust.ac.ir 101
داﻧﺸﮕﺎه ﻋﻠﻢ و ﺻﻨﻌﺖ اﻳﺮان – داﻧﺸﻜﺪه ﻣﻬﻨﺪﺳﻲ ﻛﺎﻣﭙﻴﻮﺗﺮ
• #include<stdio.h>
• main()
• {
• int x=100, y = 200;
• printf("x = %d y = %d\n",x , y);
• swap(x , y);
• printf("x = %d y = %d\n",x , y);
• }
int main()
{
int num = 1;
while (num) {
printf(“\nEnter a number < 0 for quit > : “);
scanf(%d”, &num);
printf(“%d! = %.0f\n”, num, fact(num)); }
return
t 0
0;
}
ﺑﺎزﮔﺸﺘﻲ
ﻣﻘﺪار ﺎ ﮔﺸ
ﻘ ا ﭘﺎراﻣﺘﺮ
ﻣﻘﺪار ﺎ ا
ﻘ ا ﻓﺮاﺧﻮاﻧﻲ
ﺷﻤﺎره ﻓ اﺧ اﻧ
ﺷ ﺎ
)4 * fact(3 4 1
)3 * fact(2 3 2
)2 * fact(1 2 3
1 1 4
ﺗﻤﺮﻳﻦ در ﻛﻼس :ﺗﺎﺑﻌﻲ ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﻳﻚ ﻋﺪد ﺻﺤﻴﺢ را ﮔﺮﻓﺘﻪ و ﺑﺪون اﺳﺘﻔﺎده از
آراﻳﻪ ،ﻣﻘﺪار دودوﺋﻲ آن را ﭼﺎپ ﻧﻤﺎﻳﺪ .اﻳﻦ ﺗﺎﺑﻊ را ﺑﺼﻮرت ﺑﺎزﮔﺸﺘﻲ ﺑﻨﻮﻳﺴﻴﺪ.ﺑﺮﻧﺎﻣﻪ
زﻳﺮﺑﺎ DevC++ﺗﺴﺖ ﺷﺪه اﺳﺖ.
اﻳﻦ ﺑﺮﻧﺎﻣﻪ ﺑﺎ. ﺗﺎﺑﻌﻲ ﺑﺎزﮔﺸﺘﻲ ﻛﻪ ﻳﻚ ﻋﺪد ﺻﺤﻴﺢ را ﺑﻪ ﻣﺒﻨﺎي دو ﻣﻲ ﺑﺮد: ﺗﻤﺮﻳﻦ
. اﻳﻦ ﺑﺮﻧﺎﻣﻪ ﺗﻮﺳﻂ داﻧﺸﺠﻮﻳﺎن ﻧﻮﺷﺘﻪ ﺷﻮد. ﺗﺴﺖ ﺷﺪه اﺳﺖDev-C++
#include<stdio.h>
#include<conio.h>
main()
{
int n;
printf("Enter an integer no : ");
scanf("%d" , &n);
printf("Base of %d is %d",n , mabna2(n));
getch(); }
ﻓﺼﻞ ﺷﺸﻢ
آ اﻳﻪ
آراﻳﻪ
)(Array
ﺗﻌﺮﻳﻒ آراﻳﻪ:
ﺑﻪ ﻣﺠﻤﻮﻋﻪ اي از داده ﻫﺎي ﻫﻢ ﻧﻮع ﻛﻪ زﻳﺮ ﻳﻚ ﻧﺎم ﮔﺮد آﻣﺪه ﺑﺎﺷﻨﺪ ،آراﻳﻪ ﮔﻔﺘﻪ ﻣﻲ ﺷﻮد.
ﺑﺮاي ﻣﺜﺎل ﺑﻪ ﻣﺠﻤﻮﻋﻪ ﻋﻨﺎﺻﺮ زﻳﺮ ،ﻣﺠﻤﻮﻋﻪ ﻣﺘﻐﻴﺮﻫﺎي آراﻳﻪ arﮔﻔﺘﻪ ﻣﻲ ﺷﻮد.
] [ar
] [ar
] [ar
] [ar
] [ar
ﻫﺮ ﻋﻨﺼﺮ آراﻳﻪ ﻣﺎﻧﻨﺪ ﻳﻚ ﻣﺘﻐﻴﺮ ﻣﻌﻤﻮﻟﻲ اﺳﺖ .ﺑﻨﺎﺑﺮاﻳﻦ ﺗﻤﺎم ﻗﻮاﻧﻴﻦ
ﻣﺮﺑﻮط ﺑﻪ ﻣﺘﻐﻴﺮﻫﺎ ،در ﻣﻮرد ﻋﻨﺎﺻﺮ آراﻳﻪ ﻧﻴﺰ ﺻﺎدق اﺳﺖ.
ﺑﻨﺎﺑﺮاﻳﻦ :
;ar[0] = 25
;]b = ar[0
;ar[1] = ar[0] * 2
;]ar[4] = ar[0] + ar[1
ﻣﻲ ﺗﻮاﻧﻴﻢ در ﻫﻤﺎن ﺑﺨﺶ ﺗﻌﺮﻳﻒ ،ﺑﻪ ﻋﻨﺎﺻﺮ آراﻳﻪ ﻣﻘﺪاردﻫﻲ ﻛﻨﻴﻢ.
;}int ar[6] = { 5, 3, 9, 12, 4, 3
void main()
{
int b, a[6] = {5, 3, 9, 12, 4, 3};
printf(“a[3]
printf( a[3] = %d\n”
%d\n , a[3]);
printf(“a[5] = %d\n”, a[5]);
b = a[3];
a[5] = 100;
printf(“b
printf( b = %d\n”
%d\n , b);
printf(“a[5] = %d\n”, a[5]);
}
Running Program:
a[3] = 12
a[5] = 3
b = 12
a[5] = 100
)(void main
{
;}int i, a[6] = {5, 3, 9, 12, 4, 3
)for (i = 0 ; i <= 5 ; ++i
;)]printf(“a[%d] = %d\n”, i , a[i
}
Running Program:
a[0] = 5
a[1] = 3
a[2] = 9
a[3] = 12
a[4] = 4
[5] = 100
]a[5
)(void main
{
;}int i, sum=0, a[] = {5, 3, 9, 12, 4, 3
)for (i = 0 ; i <= 5 ; ++i
{
;]sum += a[i
;)]printf(“a[%d] = %d\n”, i , a[i
}
printf(“\nSum
(printf ”\nSum = %d\n
;)%d\n , sum
;)printf(“Average = %f\n”, sum / i
}
ﻲ ﻛﻨﺪ؟
پ ﻣﻲ
ﭼﺎپ
درﺳﺖ ررا ﭼ
ﻧﻈﺮ و ر
ﻣﻮرد ﺮ
ﻧﺘﻴﺠﻪ ﻮر
ﺑﺮﻧﺎﻣﻪ ﺑﺑﺎﻻ ﻴﺠ
آﻳﺎ ﺑﺮ
ﻳ
void main()
{
int i, sum=0, a[] = {5, 3, 9, 12, 4, 3};
for (i = 0 ; i <= 5 ; ++i) {
sum +=
+ a[i];
printf(“a[%d] = %d\n”, i , a[i]); }
printf(“Sum = %d\n”, sum);
printf(“Average = %.2f\n”, (float)sum / i);
}
Running Program:
a[0] = 5
a[1] = 3
a[2] = 9
a[3] = 12
a[4] = 4
a[5] = 100
Sum = 36
Average = 6.00
6 00
void main()
{
int i, num[10];
for (i = 0 ; i <= 9 ; ++i) {
printf(“num[%d]
printf( num[%d] = ”,
, i);
scanf(“%d”, &num[i]); }
printf(“\n”);
12 9 6 7 11 15 43 80 1 5
5 1 80 43 15 11 7 6 9 12
main()
{
int i , ar[6] = {8,90,34,-75,55,2,};
/*for
/ for (i=0; i<=6 ; ++i)
{
printf("\n%dth No : ",i);
scanf("%d",&ar[i]);
}*/
for (i=0; i<=5 ; ++i)
{
printf("\nAr[%d] = %d",i,ar[i]);
/*printf("\n2 Vahed addition is = %d", fun1(ar[i],2));*/
}
}
int fun1(int x, int y)
{
printf("Input No = %d %d",x , y);
return
t x + y;
}
C++ Tutorial azizjalali@iust.ac.ir 125
}
ﺑﺮﻧﺎﻣﻪ ﻣﺮﺗﺐ ﻛﺮدن ﻣﻘﺎدﻳﺮ ﻳﻚ آراﻳﻪ ﺑﺎ اﺳﺘﻔﺎده از ارﺳﺎل ﻳﻚ آراﻳﻪ ﺑﻪ ﺗﺎﺑﻊ ﺑﻪ روش
(ﺷﻮد
ﻧﻮﺷﺘﻪ ﻮ ن ﻮ
داﻧﺸﺠﻮﻳﺎن
ﺠﻮﻳ ﺗﻮﺳﻂﺑﺮﻧﺎﻣﻪ ﻮ ) ﻳﻦBubble Sort
اﻳﻦ ﺑﺮ
#include<stdio.h>
#include<conio.h>
int bubble(int no[ ])
{ int k , j;
for (k=9 ; k>0 ; k--)
for (j=0 ; j<k ; j++)
if (no[j] > no[j+1]) {
int temp = no[j];
no[j] = no [j+ 1];
no[j+1] = temp;
} }
main()
{ int i;
int num[10];
for (i=0 ; i <= 9 ; ++i) {
printf("Enter an integer no for num[%d] : ", i);
scanf("%d"
scanf( %d , &num[i]); }
bubble(num);
for (i=0 ; i <=9 ; i++)
printf("\nnum[%d] = %d", i , num[i]);
getch();
}
آراﻳﻪ ﻛﺎراﻛﺘﺮي:
آراﻳﻪ ﻛﺎراﻛﺘﺮي آراﻳﻪ اي ﻫﺴﺘﻨﺪ ﻛﻪ ﻋﻨﺎﺻﺮ آراﻳﻪ داراي داده ﻫﺎي ﻛﺎراﻛﺘﺮي ﻣﻲ ﺑﺎﺷﻨﺪ .در زﺑﺎن ،C
اﻳﻦ آراﻳﻪ ﻫﺎ را ﺑﻪ ﺟﺎي رﺷﺘﻪ ﺑﻪ ﻛﺎر ﻣﻲ ﺑﺮﻳﻢ .در اﻳﻦ ﺣﺎﻟﺖ ،ﻫﺮ ﻛﺎراﻛﺘﺮ در ﻳﻚ ﻋﻨﺼﺮ آراﻳﻪ ﺟﺎي
ﻣﻲ ﮔﻴﺮد .ﻣﺜﺎل :
;]char ar[7
;} ’char ar[7] = {‘A’ , ‘l’ , ‘i
void main()
()
{
char i, num[10] = {‘F’ , ‘e’ , ‘r’ , ‘d’ , ‘o’ , ‘w’ , ‘s’ , ‘i’ } ;
for (i = 0 ; i <= 9 ; ++i)
printf(“%c = %d\n”, name[i] , name[i]);
printf(“\nName = %s\n”, name);
}
Running Program
F = 70
e = 101
r = 114
d = 100
o = 111
w = 119
s = 115
i = 105
= 0
= 0
Name = Ferdowsi
آراﻳﻪ دو ﺑﻌﺪي:
ﺗﻌﺪاي ﺳﻄﺮﺮ و
ي ي داراي
ﮔﺮﻓﺖ ﻛﻪ ر
ﻧﻈﺮ ﺮ
در ﺮ
ﺟﺪوﻟﻲ ر
ﻫﻤﭽﻮن و ﻲ
ﺗﻮان ﭽﻮن
ﻣﻲ ﻮ ن
ﺑﻌﺪي ررا ﻲ
دو ي آراﻳﻪ و
ر
ﺗﻌﺪادي ﺳﺘﻮن ﺑﺎﺷﺪ.
]ar[1][0 ]ar[1][2
]ar[2][0 ]ar[2][2
]ar[2][1
]ar[3][0 ]ar[3][2
]ar[1][0
9 17 2 ]ar[1][2
]ar[2][0
4 5 4 ]ar[2][2
]ar[2][1
]ar[3][0
10 11 12 ]ar[3][2
]ar[1][0
9 17 2 ]ar[1][2
]ar[2][0
4 5 4 ]ar[2][2
]ar[2][1
]ar[3][0
10 11 12 ]ar[3][2
ﻓﺼﻞ ﻫﻔﺘﻢ
ﺗﻮاﺑﻊ ﺳﻴﻨﻮس
-ﺗ ا
sin(d)Æ d
sinh(d) Æ d
ﺳﻴﻨﻮس ﭘﺎراﻣﺘﺮ را ﺑﺮﻣﻲ ﮔﺮداﻧﺪ .ﺷﻜﻞ دوم ﺗﺎﺑﻊ ﺑﺮاي ﻣﺤﺎﺳﺒﻪ ﺳﻴﻨﻮس ﻫﺬﻟﻮﻟﻴﺎﺋﻲ
رود.
ﻣﻲ رو
ﺑﻜﺎر ﻲ
ﺑ ر
C++ Tutorial azizjalali@iust.ac.ir 142
داﻧﺸﮕﺎه ﻋﻠﻢ و ﺻﻨﻌﺖ اﻳﺮان – داﻧﺸﻜﺪه ﻣﻬﻨﺪﺳﻲ ﻛﺎﻣﭙﻴﻮﺗﺮ
-ﺗﺎﺗﺎﺑﻊ ﺣﺪ ﺎﻻ
ﺑﺎﻻ
ceil(d)Æ d
دﻗﺘﻲ
ﻛﺮده ،آن راا ﺑﻪ ﻋﺪدي دو دﻗﺘ
ﭘﻴﺪا ﻛ ده
ﭘﺎراﻣﺘﺮ ارا ﭘ ﺪا
ﺑﺰرﮔﺘﺮ از ﭘﺎ اﻣﺘ
ﺻﺤﻴﺢ ﺑﺰ ﮔﺘ
ﻛﻮﭼﻜﺘﺮﻳﻦ ﻋﺪد ﺻﺤ ﺢ
ﻛﻮﭼﻜﺘ ﻳﻦ
ﺗﺒﺪﻳﻞ و ﺑﺮﻣﻲ ﮔﺮداﻧﺪ .ﻣﺜﺎل:
ceil(2 3) Æ 3
)ceil(2.3
C++ Tutorial azizjalali@iust.ac.ir 143
داﻧﺸﮕﺎه ﻋﻠﻢ و ﺻﻨﻌﺖ اﻳﺮان – داﻧﺸﻜﺪه ﻣﻬﻨﺪﺳﻲ ﻛﺎﻣﭙﻴﻮﺗﺮ
-ﺗﻮاﺑﻊ ﺗﺎﻧﮋاﻧﺖ
tan(d) Æ d
tanh(d) Æ d
ﺗﺎﻧﮋاﻧﺖ ﭘﺎراﻣﺘﺮ را ﻣﺤﺎﺳﺒﻪ ﻣﻲ ﻛﻨﺪ .ﺗﺎﺑﻊ دوم ﺑﺮاي ﻣﺤﺎﺳﺒﻪ ﺗﺎﻧﮋاﻧﺖ
زواﻳﺎ ﺑﺮﺣﺴﺐ
ﺗﻮاﺑﻊ رﻳﺎﺿﻲ ،اﻫﺬﻟﻮﻟﻴﺎﺋﻲ ﺑﻜﺎر ﻣﻲ رود .ﭼﻨﺎن ﻛﻪ ﮔﮔﻔﺘﻴﻢ ،در ا
رادﻳﺎن ﻣﻲ ﺑﺎﺷﺪ .ﺑﺮاي ﺗﺒﺪﻳﻞ درﺟﻪ ﺑﻪ رادﻳﺎن ،ﻓﺮﻣﻮل زﻳﺮ را ﺑﻜﺎر ﻣﻴﺒﺮﻳﻢ.
r = d * pi / 180
در اﻳﻦ ﻓﺮﻣﻮل r ،زاوﻳﻪ ﺑﺮﺣﺴﺐ رادﻳﺎن d ،زاوﻳﻪ ﺑﺮﺣﺴﺐ درﺟﻪ و piﺛﺎﺑﺖ
ﭘﻲ ﻣﻲ ﺑﺎﺷﺪ pii .ﺑﻪ ﺻﻮرت ﺛﺎﺑﺖ ﻧﻤﺎدﻳﻦ ﺗﻌﺮﻳﻒ ﺷﺪه اﺳﺖ .از اﻳﻦ رو
ﻧﻴﺎزي ﺑﻪ ﺗﻌﺮﻳﻒ دوﺑﺎره آن ﻧﻴﺴﺖ.
-ﺗﺎﺑﻊ ﺣﺪ ﭘﺎﺋﻴﻦ
floor(d)Æ d
ﺑﺰرﮔﺘﺮﻳﻦ ﻋﺪد ﺻﺤﻴﺢ ﻛﻮﭼﻜﺘﺮ از ﭘﺎراﻣﺘﺮ را ﭘﻴﺪا ﻛﺮده ،آن را ﺑﻪ ﻋﺪدي دو
ﻣﺜﺎل:
ﮔﺮداﻧﺪ .ﺜﺎل
ﺗﺒﺪﻳﻞ و ﺑﺮﻣﻲ ﮔ اﻧ
دﻗﺘﻲ ﺗ ﻞ
ﻗ
ceil(2.3) Æ 2.0
C++ Tutorial azizjalali@iust.ac.ir 145
داﻧﺸﮕﺎه ﻋﻠﻢ و ﺻﻨﻌﺖ اﻳﺮان – داﻧﺸﻜﺪه ﻣﻬﻨﺪﺳﻲ ﻛﺎﻣﭙﻴﻮﺗﺮ
-ﺗﺎﺑﻊ ﺗﻮان
(d1 d2) Æ d
)pow(d1,d2
d1را ﺑﻪ ﺗﻮان d2رﺳﺎﻧﺪه ،ﻧﺘﻴﺠﻪ را ﺑﺮﻣﻴﮕﺮداﻧﺪ .اﮔﺮ d1ﺑﺮاﺑﺮ ﺻﻔﺮ ﺑﺎﺷﺪ،
d2ﺑﺎﻳﺪ ﻋﺪدي ﻣﺜﺒﺖ ﺑﺎﺷﺪ ،و اﮔﺮ d1ﻣﻨﻔﻲ ﺑﺎﺷﺪ d2 ،ﺑﺎﻳﺪ ﻋﺪدي
ﺻﺤﻴﺢ ﺑﺎﺷﺪ.
-ﺗﺎﺑﻊ ﻧﻤﺎﺋﻲ
exp(d)Æ d
ﻋﺪد ﻧﭙﺮ ) ( e = 2.718282را ﺑﻪ ﺗﻮان ﭘﺎراﻣﺘﺮ رﺳﺎﻧﺪه ،ﻧﺘﻴﺠﻪ را
ﺷﻮد e ) .ﺎﭘﺎﻳﻪ
ﻣﺤﺎﺳﺒﻪ ﻣﻲ ﺷ
ﭘﺎراﻣﺘﺮ ﺎ
اﮔﺎرﻳﺘﻢ ﺎ ا
ﻛﺎر آآﻧﺘﻲ اﮔﺎ
ﺑﺮﻣﻴﮕﺮداﻧﺪ .ﺎﺑﺎ ااﻳﻦ ﻛﺎ
ﮕ ا
ﻟﮕﺎرﻳﺘﻢ ﻃﺒﻴﻌﻲ اﺳﺖ(.
رﺷﺘﻪ
ﺑﺮداري ااز ﺷ
ﺗﻮاﺑﻊ ﻛﻛﭙﻲ ا
-ﺗ ا
strcpy(s1,s2) Æ p
strncpy(s1 s2 i) Æ p
)strncpy(s1,s2,i
در ﺗﺎﺑﻊ اول ،از رﺷﺘﻪ s2در s1ﻛﭙﻲ ﺑﺮداري ﺷﺪه ،ﻧﺸﺎﻧﮕﺮ ﻧﺸﺎﻧﻲ s1را ﻧﺸﺎن ﻣﻲ
دﻫﺪ ..در ﺷﻜﻞ دوم ﺗﺎﺑﻊ i ،ﻛﺎراﻛﺘﺮ از s2ﺑﻪ s1ﻣﻨﺘﻘﻞ ﻣﻲ ﺷﻮد.
ﺗﺎﺑﻊ ﺗﺼﺎدﻓﻲ
rand() Æ i
ﻫﺮ ﺑﺎر ﻛﻪ ﺗﺎﺑﻊ را ﻓﺮاﺧﻮاﻧﻴﻢ ،ﻋﺪدي ﺗﺼﺎدﻓﻲ را ﻛﻪ ﻣﻘﺪار آن ﺻﺤﻴﺢ و ﻏﻴﺮ
ﮔﺮداﻧﺪ.
اﺳﺖ ،ﺑﺑﺮﻣﻲ ﮔ داﻧﺪ
ﻣﻨﻔﻲ ا ﺖﻨﻔ
ﺑﻪ ﺷﺘﻪ
رﺷﺘﻪ زﻣﺎن ﻪ
ﻞز ﺎﺗﺒﺪﻳﻞ
-ﺗﺎﺗﺎﺑﻊ ﺗ ﺪ
ctime(p) Æ s
ﻦ ﻛﺎرر
ﻲ ﻛﻨﺪ .ﺑﺎ اﻳﻦ
ﻞ ﻣﻲ
ﺦ و ﺳﺎﻋﺖ ﺗﺒﺪﻳﻞﺗﺎرﻳﺦ
دارد ازز ﺛﺎﻧﻴﻪ ﺑﻪ ر
ﻗﺮارر ر
ن درر ﻧﺸﺎﻧﮕﺮﺮ ﺮ
ﻲ آن
ﻲ ررا ﻛﻪ ﻧﺸﺎﻧﻲ
ززﻣﺎﻧﻲ
ﺗﺎرﻳﺦ روز و ﺳﺎﻋﺖ ﺑﻪ ﺻﻮرت رﺷﺘﻪ اي ﻫﻤﺎﻧﻨﺪ رﺷﺘﻪ زﻳﺮ ﺑﻪ دﺳﺖ ﻣﻲ آﻳﺪ.
Sun Jan 01 11:37:13 1995
ﺳﺎل . 1995
ﺛﺎﻧﻴﻪ ﺎل
ﻘﻪ و 13ﺛﺎﻧ ﻪ
دﻗﻴﻘﻪ
ﺳﺎﻋﺖ 11و 37دﻗ
ژاﻧﻮﻳﻪ ،ﺎ ﺖ
ﻳﻜﺸﻨﺒﻪ 1ژاﻧ ﻪ
ﻳﻌﻨﻲ :ﻜﺸﻨ ﻪﻨ
C++ Tutorial azizjalali@iust.ac.ir 158
داﻧﺸﮕﺎه ﻋﻠﻢ و ﺻﻨﻌﺖ اﻳﺮان – داﻧﺸﻜﺪه ﻣﻬﻨﺪﺳﻲ ﻛﺎﻣﭙﻴﻮﺗﺮ
ﻓﺼﻞ ﻫﺸﺘﻢ
ﻧﺸﺎﻧﮕﺮ
ﻧﺸﺎﻧﮕ
Pointer
ﻣﺜﺎل :
;x = *p
در اﻳﻦ ﻣﺜﺎل ﺧﻮاﺳﺘﻪ اﻳﻢ داده اي را ﻛﻪ ﻧﺸﺎﻧﻲ آن در pﻗﺮار دادرد ﺑﻪ xواﮔﺬار ﻧﻤﺎﺋﻴﻢ.
ﻣﺜﺎل:
;int a , *p
;p
;a = 100
;p = &a
&
اﻛﻨﻮن در ﻫﻤﻪ ﺟﺎ ﻣﻲ ﺗﻮاﻧﻴﻢ *pرا ﺑﻪ ﺟﺎي aﺑﻪ ﻛﺎر ﺑﺮﻳﻢ.
;x = a
;y = *p
;p
ﺑﺎ دو دﺳﺘﻮر ﻓﻮق ،ﻫﻢ xو ﻫﻢ yﺑﺮاﺑﺮ 100ﻣﻲ ﺷﻮﻧﺪ.
در ﺷﻜﻞ زﻳﺮ ﻓﺮض ﻛﺮده اﻳﻢ ﻛﻪ ﻣﺘﻐﻴﺮ pدر آدرس 65520و ﻣﺘﻐﻴﺮ a
دارد. رس 65522ﺮ
ﻗﺮارر ر درر آدرس
65520 65522
65522 100
p a
Running Program
address of a = 65522
value of a = 100
address of p = 65520
value of p = 65522
Running Program
x = 100
y = 100
a = 100
a = 101
در ﻣﺜﺎل ﻗﺒﻞ ﺗﻮﺟﻪ ﻧﻤﺎﺋﻴﺪ ﻛﻪ دﺳﺘﻮر ،++*pﻋﺪد 1را ﺑﻪ aاﻓﺰوده اﺳﺖ.
اﮔﺮ ﺑﺨﻮاﻫﻴﻢ ﻋﻤﻠﮕﺮ اﻓﺰاﻳﺶ و ﻳﺎ ﻛﺎﻫﺶ را ﭘﺲ از ﻧﺸﺎﻧﮕﺮ ﺑﻪ ﻛﺎر ﺑﺮﻳﻢ ،ﺑﺎﻳﺪ
ﻧﺸﺎﻧﮕﺮ را درون ﭘﺮاﻧﺘﺰ ﻗﺮار دﻫﻴﻢ.
(*p)++
( p)++
(*p)--
ﻋﻤﻠﮕﺮﻫﺎي ++
اوﻟﻮﻳﺖ ﻠﮕ ﺎ اوﻟﻮﻳﺖ ﻫﺎﺎ ﺻﺤﺒﺖ ﻧﻧﻤﻮدﻳﻢ ،ا ﻟ ﻫﻤﺎﻧﮕﻮﻧﻪ ﻛﻛﻪ در ﻣﻮرد ا ﻟ
ﺎﻧﮕ ﻧ
و --از * ﺑﻴﺸﺘﺮ اﺳﺖ .ﺑﻨﺎﺑﺮاﻳﻦ اﮔﺮ از ﭘﺮاﻧﺘﺰ ﺑﺮاي ﺗﻐﻴﻴﺮ اوﻟﻮﻳﺖ ﻋﻤﻠﮕﺮﻫﺎ
ﻳﺎﻓﺘﻪ )ﺑﻪ ﺎ ت
ﻋﺒﺎرت ﺶ ﺎﻓﺘ
ﻛﺎﻫﺶ اﻓﺰاﻳﺶ و ﻳﺎﺎ ﻛﺎ
ﻧﺸﺎﻧﮕﺮ اﻓ ا ﺶ
ﻣﻘﺪار ﻧﺸﺎﻧﮕ
ﻧﺨﺴﺖ ﻘ ا
ﻧﻜﻨﻴﻢ ،ﻧﺨ ﺖ اﺳﺘﻔﺎده ﻧﻜ
ا ﺘﻔﺎ
دﻳﮕﺮ ،ﻧﺸﺎﻧﻲ ﺗﻐﻴﻴﺮ ﻣﻲ ﻛﻨﺪ( ،ﺳﭙﺲ ﺑﻪ ﻣﺤﺘﻮﻳﺎت ﻧﺸﺎﻧﻲ ﻣﺮاﺟﻌﻪ ﻣﻴﮕﺮدد.
Running Program
address of a = 65520
address of b = 65522
a = 11 p = 65520
a = 11 p = 65522
b = 21 p = 65522
ﻫﻨﮕﺎﻣﻲ ﻛﻪ ﺑﻪ ﻳﻚ ﻧﺸﺎﻧﮕﺮ ﻋﺪد nرا ﻣﻲ اﻓﺰاﺋﻴﻢ ،ﺑﺴﺘﻪ ﺑﻪ ﻧﻮع ﻧﺸﺎﻧﮕﺮ n ،ﻳﺎ 2nو ﻳﺎ
.....ﺑﻪ آن اﻓﺰوده ﻣﻲ ﺷﻮد .ﻣﺜﻼ اﮔﺮ ﻧﺸﺎﻧﮕﺮ از ﻧﻮع ﻛﺎراﻛﺘﺮي ،ﺻﺤﻴﺢ ،اﻋﺸﺎري ،دو
دﻗﺘﻲ و ....ﺑﺎﺷﺪ ،ﻣﻘﺪار اﻓﺰاﻳﺶ ﺑﻪ ﺗﺮﺗﻴﺐ ﺑﺮاﺑﺮ 8n ،4n ،2n ،nو ...ﻣﻲ ﺷﻮد .ﺑﻌﺪ
ﻧﮕﻬﺪاري ﻛﻛﻨﺪ.
ﻫﺎ راا ﻫﻢ ﮕ ا
ﺳﺎﺧﺘﺎرﻫﺎ و ااﻧﺠﻤﻦ ﺎ
ﺗﻮاﻧﺪ آآدرس ﺎﺧ ﺎ ﺎ ﻧﺸﺎﻧﮕﺮ ﻣﻲ ا
ﺧﻮاﻫﻴﻢ دﻳﺪ ﻛﻛﻪ ﺎ ﮕ
ﺧا
p += 10;
printf(“c = %c p = %u\n” , *p, p);
p -= 10;
printf(“c
i tf(“ = %
%c p = %
%u\n”
\ ” , *
*p, p);
)
}
Running Program
c = * p = 65523
c = p = 65533
c = * p = 65523
Running Program
10 9 8 7 6 5 4 3 2 1
1 2 3 4 5 6 7 8 9 10
Running Program
a[0]
[ ] = 1 *(a
( + 0)
) = 1
a[1] = 2 *(a + 1) = 2
a[2] = 3 *(a + 2) = 3
a[3] = 4 *(a + 3) = 4
a[4] = 5 *(a + 4) = 5
a[5] = 6 *(a + 5) = 6
a[6] = 7 *(a + 6) = 7
a[7] = 8 *(a + 7) = 8
a[8] = 9 *(a + 8) = 9
a[9] = 10 *(a + 9) = 10
Running Program
a[0] = 1 p[0] = 1
a[1] = 2 p[1] = 2
a[2] = 3 p[2] = 3
a[3] = 4 p[3] = 4
a[4] = 5 p[4] = 5
a[5] = 6 p[5] = 6
a[6]
[ ] = 7 p[6]
p[ ] = 7
a[7] = 8 p[7] = 8
a[8] = 9 p[8] = 9
a[9] = 10 p[9] = 10
Running Program
a[0] = 1 p[0] = 1
a[1] = 2 p[1] = 2
a[2] = 3 p[2] = 3
a[3] = 4 p[3] = 4
a[4] = 5 p[4] = 5
a[5]
[5] = 6 p[5]
[5] = 6
a[6] = 7 p[6] = 7
a[7] = 8 p[7] = 8
a[8] = 9 p[8] = 9
a[9] = 10 p[9] = 10
Running Program
Anahita
Anahita
Running Program
Farshad
Running Program
Farshad
Running Program
Five Great Cities
-----------------
Tehran
Mashad
Esfahan
Tabriz
Shiraz
آراﻳﻪ ﻧﺸﺎﻧﮕﺮي:
آراﻳﻪ ﻧﺸﺎﻧﮕﺮي ﻣﻲ ﺗﻮاﻧﺪ ﺑﻴﺶ از ﻳﻚ ﺑﻌﺪ داﺷﺘﻪ ﺑﺎﺷﺪ .در ﺑﺮﻧﺎﻣﻪ ﺻﻔﺤﻪ ﺑﻌﺪ ،آراﻳﻪ دو
ﺑﻌﺪي و ﻧﺸﺎﻧﮕﺮي ﺑﻪ ﻧﺎم ﻓﺮﻫﻨﮓ ﺗﻌﺮﻳﻒ ﻛﺮده اﻳﻢ ﻛﻪ در آن ،ﭼﻨﺪ واژه اﻧﮕﻠﻴﺴﻲ را ﻫﻤﺮاه
ﺑﺎ ﻣﻌﺎدل ﻫﺎي ﻓﺎرﺳﻲ آن ﻫﺎ ﻧﻮﺷﺘﻪ اﻳﻢ.
Running Program
English Persian
-----------------
Flower Gol
Apple Sib
Peach Holu
int main()
{
int a
a=100,
100, *p
p = &a;
Running Program
n = 10
m = 20.5
ﻓﺼﻞ ﻧﻬﻢ
ﻓﺎﻳﻞ ﻫﺎ
Files
ﻓﺎﻳﻞ ﻫﺎي ﻣﺘﻨﻲ ،ﻓﺎﻳﻞ ﻫﺎﺋﻲ ﻫﺴﺘﻨﺪ ﻛﻪ از ﺗﻌﺪادي ﺳﻄﺮ ﺗﺸﻜﻴﻞ ﺷﺪه اﻧﺪ و
اﻧﺪازه ﻫﺮ ﺳﻄﺮ ﻣﻲ ﺗﻮاﻧﺪ ﻣﺘﻔﺎوت ﺑﺎﺷﺪ .ﺑﺮاي ﻛﺎر ﺑﺎ ﻓﺎﻳﻞ ﻫﺎي ﻣﺘﻨﻲ ،ﻣﻌﻤﻮﻻ
ﻳﻚ ﺳﻄﺮ از ﻓﺎﻳﻞ را ﻣﻲ ﺧﻮاﻧﻴﻢ و ﻳﺎ داﺧﻞ ﻓﺎﻳﻞ ﻣﻲ ﻧﻮﻳﺴﻴﻢ .در اﻳﻦ ﻓﺎﻳﻞ ﻫﺎ،
ﺳﻄﺮﻫﺎ در ﻫﻨﮕﺎم ذﺧﻴﺮه ﺷﺪن ﺑﻪ دﻧﺒﺎل ﻫﻢ ﻗﺮار ﻣﻲ ﮔﻴﺮﻧﺪ و ﺳﻄﺮﻫﺎ ﺑﺎ
ﻛﺎراﻛﺘﺮ ) Line Feedﺎﺑﺎ ﻛﺪ 1
(10از ﻛﺎراﻛﺘﺮ ) CRﺎﺑﺎ ﻛﺪ (13و ﻛﺎ اﻛﺘ
اﺳﺘﻔﺎده از ددو ﻛﺎ اﻛﺘ
ا ﺘﻔﺎد
ﻳﻜﺪﻳﮕﺮ ﺟﺪا ﻣﻲ ﺷﻮﻧﺪ.
ﺧﻮاﻧﺪن/ﭘ ﺎﻳﺶ
ﭘﻴﻤﺎﻳﺶ ﻣﺘﻨﻲ از ﺗﺎﺑﻊ fprintfو ﺑ اي
ﺑﺮاي ﺧ اﻧﺪن ﭘﺮوﻧﺪه ﻫﺎي ﺘﻨ
ﻧﻮﺷﺘﻦ ددر ﭘ وﻧﺪه
ﺑﺮاي ﻧ ﺷﺘﻦ
ﺑ اي
از ﭘﺮوﻧﺪه ﻫﺎي ﻣﺘﻨﻲ از ﺗﺎﺑﻊ fscanfاﺳﺘﻔﺎده ﻣﻲ ﻛﻨﻴﻢ.
-1ﺗﺮﺗﻴﺒﻲ )(Sequential
ﺗﺼﺎدﻓﻲ )(Random
ﻣﺴﺘﻘﻴﻢ /ﺗ ﺎ ﻓ
ﻘ -2
-1ﻧﻮﺷﺘﻦ
ﺧﻮاﻧﺪن
ن -2ﻮا
-3اﻟﺤﺎق ﻛﺮدن/ﭘﻴﻮﺳﺖ ﻛﺮدن
-4ﺑﻪ روز ﻛﺮدن /اﺻﻼح ﻛﺮدن
اﻧﺠﺎم
ﻛﺘﺎﺑﺨﺎﻧﻪ ااي اﻧ ﺎ
ﺗﺎﺑﻊ ﻛﺘﺎ ﺨﺎﻧ
ﺗﻌﺪادي ﺗﺎ
ﻛﻤﻚ ﺗ ا
ﭘﺮوﻧﺪه ﻫﺎ ﺑﻪ ﻛ ﻚ
ﻧ ازش
ﭘﺮدازش
ﻣﻴﺸﻮﻧﺪ ﻛﻪ در ﻓﺎﻳﻞ ورودي = ﺧﺮوﺟﻲ اﺳﺘﺎﻧﺪار )(stdlib.h
وﺟﻮد دارﻧﺪ.
C++ Tutorial azizjalali@iust.ac.ir 199
داﻧﺸﮕﺎه ﻋﻠﻢ و ﺻﻨﻌﺖ اﻳﺮان – داﻧﺸﻜﺪه ﻣﻬﻨﺪﺳﻲ ﻛﺎﻣﭙﻴﻮﺗﺮ
Name : Ahmad
Mark : 18
Name : Mehdi
Mark : 16.5
Name : end
-دﺳﺘﻮر TYPE؟
اﻟﮕﻮي ][ ،%را ﺑﺮاي ﺧﻮاﻧﺪن رﺷﺘﻪ ﻫﺎ ﺑﻪ ﻛﺎر ﻣﻲ ﺑﺮﻳﻢ .ﻛﺎراﻛﺘﺮﻫﺎﺋﻲ را ﻛﻪ
رﺷﺘﻪ ﺑﺎﻳﺪ ﺗﻨﻬﺎ از آن ﻫﺎ ﺳﺎﺧﺘﻪ ﺷﻮﻧﺪ را در ﻣﻴﺎن دو ﻛﺎراﻛﺘﺮ ] و [ ﻗﺮار ﻣﻲ
دﻫﻴﻢ.
: %[abc] -ﻧﺸﺎن دﻫﻨﺪه آن اﺳﺖ ﻛﻪ رﺷﺘﻪ ﺑﺎﻳﺴﺘﻲ از ﻛﺎراﻛﺘﺮﻫﺎي aو b
ﻛﺎر
ﺑﺎﺷﺪ ،ﻛﺎ
ﻛﺎراﻛﺘﺮي ﺟﺰ ااﻳﻦ ﺎﺷ
داراي ﻛﺎ اﻛ
رﺷﺘﻪ ا ا
اﮔﺮ ﺷ ﺑﺎﺷﺪ .اﮔ
ﺷﺪه ﺎﺷ و cﺎﺧ
ﺳﺎﺧﺘﻪ ﺷ
ﺧﻮاﻧﺪن رﺷﺘﻪ ﺑﻪ ﭘﺎﻳﺎن رﺳﻴﺪه و ﺧﻮاﻧﺪن داده ﺑﻌﺪي ﺷﺮوع ﻣﻲ ﺷﻮد.
ﺑﺎﺷﺪ.
ﺷﺪه ﺎﺷﺪ ﻛﺎراﻛﺘﺮﻫﺎي aﺗﺎ kﺳﺎﺧﺘﻪ
ﺎﺧﺘﻪ ﺷﺪ ﺪ از ﻛﺎ اﻛﺘ ﻫﺎ
رﺷﺘﻪ ﺎﺑﺎﻳﺪ
ﻳﻌﻨﻲ ﺷﺘﻪ ] : %[a-kﻨ
%[a k] -
: %[^ijk] -ﻳﻌﻨﻲ رﺷﺘﻪ ﻣﻲ ﺗﻮاﻧﺪ از ﻫﺮ ﻛﺎراﻛﺘﺮي ﺟﺰ ﻛﺎراﻛﺘﺮﻫﺎي iو jو k
ﺗﺸﻜﻴﻞ ﺷﺪه ﺑﺎﺷﺪ.
ﺗﺸﻜ ﻞ
while (!feof(in)) {
fscanf(in , “%s %f\n” , name , &mark);
printf(“%-20s %6.2f\n”, name , mark);
}
}
ﺧﻮاﻧﺪه
ﻛﺎراﻛﺘﺮ ﺧ اﻧ
ﻣﺘﻐﻴﺮي ااﺳﺖ ﻛﻛﻪ ﻛﺎ اﻛ
variableﻐ
ﻋﺒﺎرتi bl ، در ااﻳﻦ ﺎ
ﺷﺪه در آن ﻗﺮار ﻣﻲ ﮔﻴﺮد .اﮔﺮ در ﺧﻮاﻧﺪن ﻓﺎﻳﻞ اﺷﻜﺎﻟﻲ ﭘﻴﺶ آﻳﺪ
ﭘﺎﻳﺎن
ﺖ ﺎﺎﺛﺎﺑﺖ
ﻣﻘﺪار ﺛﺎ
ﺑﺮاﺑﺮ ﺑﺎﺎ ﻘﺪا
ﻣﺘﻐﻴﺮ ا
ﻣﻘﺪار ﺘﻐ
ﺑﺮﺳﺪ ،ﻘﺪا
ﭘﺎﻳﺎن ﺪ
ﺑﻪ ﺎ ﺎ
ﻓﺎﻳﻞ ﻪ
ﻳﺎ ﻓﺎ ﻞ
و ﺎ
ﭘﺮوﻧﺪه ) (EOFﻣﻲ ﺷﻮد.
ﺗﺬﻛﺮ :ﭘﺮوﻧﺪه ﺑﺎﻳﺴﺘﻲ ﺑﺮاي ﺧﻮاﻧﺪن و ﻳﺎ ﺑﻪ روز ﺷﺪن ﺑﺎز ﺷﺪه
ﺑﺎﺷﺪ.
C++ Tutorial azizjalali@iust.ac.ir 217
داﻧﺸﮕﺎه ﻋﻠﻢ و ﺻﻨﻌﺖ اﻳﺮان – داﻧﺸﻜﺪه ﻣﻬﻨﺪﺳﻲ ﻛﺎﻣﭙﻴﻮﺗﺮ
اﻳﺠﺎد ﺷﺪnotepad ﺧﻮاﻧﺪن اﻃﻼﻋﺎت ﻓﺎﻳﻠﻲ ﻛﻪ ﺑﺎ، ﺧﻮاﻧﺪن ﻧﺎم ﻓﺎﻳﻞ از ورودي: ﻣﺜﺎل
( )ﺑﺮﻧﺎﻣﻪ اﺟﺮا ﺷﺪه ﻛﭙﻲ ﺷﺪ.و ﻧﻤﺎﻳﺶ آن روي ﺻﻔﺤﻪ ﻣﺎﻧﻴﺘﻮر
#include<stdio.h>
i t main()
int i ()
{
int ch;
char fname[20];
FILE *t
*tele;
l
printf("\nFile Name : ");
gets(fname);
puts("------------------");
tele = fopen(fname , "rb")
"rb");
if (tele==NULL) {
puts("Cannot open Input File !!!");
return 0;
}
while ((ch=fgetc(tele)) != EOF)
putchar(ch);
}
• Parameters
stream Pointer to a FILE object that identifies the stream.
offset Number of bytes to offset from origin.
origin Position from where offset is added.
It is specified by one of the following constants defined in <cstdio>:
#include <stdio.h>
i t fseek
int f k (FILE **stream,
t llong offset,
ff t int
i t whence)
h )
long ftell (FILE *stream)
void rewind (FILE *stream)
i t fgetpos
int f t (FILE * restrict
t i t stream,
t f
fpos_t t * restrict
t i t pos))
int fsetpos (FILE *stream, const fpos_t *pos)
ﻓﺼﻞ ده
ﺳﺎﺧﺘﺎر
ﺳﺎﺧﺘﺎ
Structure
struct [ struct
]struct_code
{ ]code
;data_type1 element1
;data type2 element2
data_type2
…….
} struct
;struct_name
;name
C++ Tutorial azizjalali@iust.ac.ir 235
داﻧﺸﮕﺎه ﻋﻠﻢ و ﺻﻨﻌﺖ اﻳﺮان – داﻧﺸﻜﺪه ﻣﻬﻨﺪﺳﻲ ﻛﺎﻣﭙﻴﻮﺗﺮ
ﻣﺜﺎل :
{ struct
;int stno
;]char name[20 ] [
;float avg
;} student ;
در اﻳﻦ ﻣﺜﺎل ﺳﺎﺧﺘﺎري ﺑﺎ ﻧﺎم studentﺗﻌﺮﻳﻒ ﻛﺮدﻳﻢ ﻛﻪ ﺷﺎﻣﻞ ﻋﻨﺎﺻﺮ:
ﺻﺤﻴﺢ..
-ﺷﻤﺎره داﻧﺸﺠﻮﺋﻲ ﺑﺎ ﻧﻮع داده اي ﺻﺤﻴﺢ
-ﻧﺎم داﻧﺸﺠﻮ ،ﻛﻪ ﻣﻤﺘﻐﻴﺮي 20ﻛﺎراﻛﺘﺮي ﻣﻲ ﺑﺎﺷﺪ.
-ﻣﻴﺎﻧﮕﻴﻦ ،ﻛﻪ از ﻧﻮع اﻋﺸﺎري اﺳﺖ.
C++ Tutorial azizjalali@iust.ac.ir 236
داﻧﺸﮕﺎه ﻋﻠﻢ و ﺻﻨﻌﺖ اﻳﺮان – داﻧﺸﻜﺪه ﻣﻬﻨﺪﺳﻲ ﻛﺎﻣﭙﻴﻮﺗﺮ
student
stno
t name avg
Running Program
7318 Ali Mousavi 18.25
Running Program
7318 Ali Mousavi 18.25
18 25
Running
i Program
Enter Num Name Average : 7318 Ali.Mousavi 18.25
7318 Ali.Mousavi 18.25
.ﻧﻤﺎﺋﻴﺪ
ﺗﻮﺟﻪ ﻴﻲ ﻮﺟ
ﺧﺎﻧﻮادﮔﻲ
ﻧﺎم ﻮﻧﺎم و م
ﻛﺎراﻛﺘﺮ ﻧﻘﻄﻪ ﺑﻴﻦ م
ﺑﺑﻪ ر ﺮ: ﺗﺬﻛﺮﺮ
Reza 238071
Ahmad 452201
Reza 238071
Ahmad 452201
ﺳﺎﺧﺘﺎر و آراﻳﻪ از اﻳﻦ ﻧﻈﺮ ﻛﻪ ﻫﺮ دو ﻣﺠﻤﻮﻋﻪ اي از داده ﻫﺎ ﻫﺴﺘﻨﺪ ﻛﻪ زﻳﺮ ﻳﻚ ﻧﺎم ﮔﺮد آﻣﺪه اﻧﺪ ،ﺑﺎ ﻫﻢ
ﻫﻤﺎﻧﻨﺪ ﻫﺴﺘﻨﺪ ،وﻟﻲ در ﻣﻴﺎن آن ﻫﺎ ﺗﻔﺎوت ﻫﺎﺋﻲ وﺟﻮد دارد ﻛﻪ در زﻳﺮ ﺑﻪ آن ﻫﺎ اﺷﺎره ﺷﺪه اﺳﺖ:
-1ﻫﻢ ﻧﻮع ﺑﻮدن ﻋﻨﺎﺻﺮ آراﻳﻪ ،و ﻧﺎ ﻫﻢ ﻧﻮع ﺑﻮدن ﻋﻨﺎﺻﺮ ﺳﺎﺧﺘﺎر.
-2اﻧﺪﻳﺲ دار ﺑﻮدن ﻋﻨﺎﺻﺮ آراﻳﻪ ،و ﻧﺎم داﺷﺘﻦ ﻋﻨﺎﺻﺮ ﺳﺎﺧﺘﺎر.
ﺳﺎﺧﺘﺎر.
ﺑﻮدن ﻧﺎﻧﺎم ﺎﺧﺘﺎ
ﻣﻌﻤﻮﻟﻲ دن
ﻟ آراﻳﻪ ،و
ﺑﻮدن ﻧﺎﻧﺎم آ ا ﻪ
اﺷﺎره ﮔﮔﺮ دن
-3اﺷﺎ ه
-4ﻧﺸﺪﻧﻲ ﺑﻮدن واﮔﺬاري دو آراﻳﻪ ﺑﻪ ﻫﻢ ،و ﺷﺪﻧﻲ ﺑﻮدن واﮔﺬاري دو ﺳﺎﺧﺘﺎر ﺑﻪ ﻫﻢ.
ﺑﺎ درﻫﻢ آﻣﻴﺨﺘﻦ ﺳﺎﺧﺘﺎر و آراﻳﻪ ،ﺗﺮﻛﻴﺐ ﻫﺎي زﻳﺮ ﺑﺪﺳﺖ ﻣﻲ آﻳﺪ:
-1آراﻳﻪ ﺳﺎﺧﺘﺎري.
ي.
آراﻳﻪ اي
ﺳﺎﺧﺘﺎر ر ﻳ
ر -2
/ P10.6
/* P10 6 Structure & Array */ /
#include <stdio.h>
#include<string.h>
void main() {
struct {
char name[20];
char num[12];
} tel[100];
int i = 0,
0 n;
puts(“\nEnter ‘end’ for quit”);
puts(“----------------------”);
do {
printf(“Enter
printf( Enter Name : “);
);
scanf(“%s”, tel[i].name);
if (!strcmp(tel[i].name,”end”)) break;
printf(“Enter tel# : “);
scanf(“%s”,tel[i]
scanf( %s ,tel[i].num);
num); puts(“
puts( “);
);
} while (++i);
puts(“\n\n Name Tel # “);
puts(“-----------------------------------”);
for (n=0
(n 0 ; n < i; ++n)
printf(“\n%-20s %-12s\n\n, tel.name, tel.num); }
C++ Tutorial azizjalali@iust.ac.ir 254
داﻧﺸﮕﺎه ﻋﻠﻢ و ﺻﻨﻌﺖ اﻳﺮان – داﻧﺸﻜﺪه ﻣﻬﻨﺪﺳﻲ ﻛﺎﻣﭙﻴﻮﺗﺮ
: اﺟﺮاي ﺑﺮﻧﺎﻣﻪ ﻣﺜﺎل ﻗﺒﻞ
Enter ‘end’ for quit
--------------------
Enter Name : Reza
Enter tel# : 238071
Name Tel #
----------------------------
Reza 238071
Ahmad 452201
Mahdi 761132
/ P10.7
/* P10 7 Structure & Array */ /
#include <stdio.h>
#include<string.h>
void main() {
struct {
char name[15];
char Ketab[10][30];
} author;
int i;
puts(“\nEnter ‘end’ for quit”);
puts(“----------------------”);
do {
printf(“Enter
printf( Enter Name : “);
);
scanf(“%s”, author.name);
if (!strcmp(author.name,”end”)) break;
i = 0;
do {
printf(“ book %d : “, i + 1);
scanf(“%s” , author.ketab[i]);
if (!strcmp(author.ketab[i],”end”)) break;
++i
} while(1); / C
C++ Tutorial azizjalali@iust.ac.ir 257
داﻧﺸﮕﺎه ﻋﻠﻢ و ﺻﻨﻌﺖ اﻳﺮان – داﻧﺸﻜﺪه ﻣﻬﻨﺪﺳﻲ ﻛﺎﻣﭙﻴﻮﺗﺮ
Name Book(s)
-----------------------
Molavi Masnavi
Divane.e.Shams
Three values are passed to cout on line 7, and each value is separated by the insertion
operator. The first value is the string "Here is 5: ". Note the space after the colon. The
space is part of the string. Next, the value 5 is passed to the insertion operator and the
newline character (always in double quotes or single quotes). This causes the line
Here is 5: 5 to be printed to the screen. Because there is no newline character after the first
string, the next value is printed immediately afterwards. This is called concatenating the two
values.
On line 8, an informative message is printed, and then the manipulator endl is used. The
purpose of endl is to write a new line to the screen. (Other uses for endl are discussed on Day
16.)
On line 9, a new formatting character, \t, is introduced. This inserts a tab character and is
used on lines 8-12 to line up the output. Line 9 shows that not only integers, but long
integers as well can be printed. Line 10 demonstrates that cout will do simple addition. The
value of 8+5 is passed to cout, but 13 is printed.
On line 11, the value 5/8 is inserted into cout. The term (float) tells cout that you want this
value evaluated as a decimal equivalent, and so a fraction is printed. On line 12 the value
7000 * 7000 is given to cout, and the term (double) is used to tell cout that you want this to
be printed using scientific notation. All of this will be explained on Day 3, "Variables and
Constants," when data types are discussed.
On line 14, you substituted your name, and the output confirmed that you are indeed a C++
programmer. It must be true, because the computer said so!
C++ Tutorial azizjalali@iust.ac.ir 263
داﻧﺸﮕﺎه ﻋﻠﻢ و ﺻﻨﻌﺖ اﻳﺮان – داﻧﺸﻜﺪه ﻣﻬﻨﺪﺳﻲ ﻛﺎﻣﭙﻴﻮﺗﺮ
– اﻳﻦ ﺑﺮﻧﺎﻣﻪ اﺟﺮا و ﺑﻪ ﺧﺮوﺟﻲ ﺗﻮﺟﻪ ﺷﻮدstrncmp و ﺗﺎﺑﻊstrcmp ﻣﺜﺎﻟﻲ از ﻛﺎر ﺑﺎ ﺗﺎﺑﻊ
#include <iostream.h>
#include <string.h>
void main()
{
char *s1 = "Happy New Year";
char *s2 = "Happy New Year";
char *s3 = "Happy Holidays";
cout << "s1 = " << s1 << "\ns2 = " << s2 << "\ns3 = " <<
s3 << "\n\nstrcmp(s1,
\ \ p( , s2) ) = " << " " << strcmp( p( s1, , s2 )
<< "\nstrcmp(s1, s3) = " << " " << strcmp( s1, s3 ) <<
"\nstrcmp(s3, s1) = " << " " << strcmp( s3, s1 );
ﺳﺎﺧﺘﺎر ﺑﺎزﮔﺸﺘﻲ
ﭘﺎراﻣﺘﺮ ﺳﺎﺧﺘﺎري