Professional Documents
Culture Documents
C Programlama 09
C Programlama 09
com
dosyalar da .h
programlara #include square.h
5.8
ayarlam
7.
bir miktar
i = rand( );
155
Bu www.elektroarge.com
RAND_MAX
rand
rand
rand fonksiyonunun prototipi
<stdlib.h> . Mod (%) rand
rand( )%6
1
2
3 #include <stdio.h>
4 #include <stdlib.h>
5
6 int main( )
7 {
8 int i;
9
10 for ( i = 1; i <= 20; i++ ) {
11 printf( "%10d", 1 + ( rand( ) % 6 ) );
12
13 if ( i % 5 == 0 )
14 printf( "\n" );
15 }
16
17 return 0;
18 }
5 5 3 5 5
2 4 2 5 5
5 3 2 2 1
5 1 4 6 4
156
Bu www.elektroarge.com
lidir.
1
2
3 #include <stdio.h>
4 #include <stdlib.h>
5
6 int main( )
7 {
8 int yuz, atis, frekans1 = 0, frekans2 = 0,
9 frekans3 = 0, frekans4= 0,
10 frekans5= 0, frekans6= 0;
11
12 for ( atis = 1; atis <= 6000; atis++ ) {
13 yuz = 1 + rand() % 6;
14
15 switch ( yuz ) {
16 case 1:
17 ++frekans1;
18 break;
19 case 2:
20 ++frekans2;
21 break;
22 case 3:
23 ++frekans3;
24 break;
25 case 4:
26 ++frekans4;
27 break;
28 case 5:
29 ++frekans5;
30 break;
31 case 6:
32 ++frekans6;
33 break;
34 }
35 }
36
37 printf( "%s%13s\
38 printf( "1%15d\n", frekans1 );
39 printf( "2%15d\n", frekans2 );
40 printf( "3%15d\n", frekans3 );
41 printf( "4%15d\n", frekans4 );
42 printf( "5%15d\n", frekans5 );
43 printf( "6%15d\n", frekans6 );
44 return 0;
45 }
157
Bu www.elektroarge.com
1 987
2 984
3 1029
4 974
5 1004
6 1022
rand fonksiyonunun
switch
default
Frekans %s
switch
5 5 3 5 5
2 4 2 5 5
5 3 2 2 1
5 1 4 6 4
? Bu tekrar, rand
srand srand
fonksiyonu, unsigned rand fonksiyonunu
158
Bu www.elektroarge.com
scanf ile unsigned srand fonksiyonunun
prototipi <stdlib.h>
1 g05_09.c
2
3 #include <stdlib.h>
4 #include <stdio.h>
5
6 int main( )
7 {
8 int i;
9 unsigned besleme;
10
11
12 scanf( "%u", &besleme );
13 srand( besleme );
14
15 for ( i = 1; i <= 10; i++ ) {
16 printf( "%10d", 1 + ( rand() % 6 ) );
17
18 if ( i % 5 == 0 )
19 printf( "\n" );
20 }
21
22 return 0;
23 }
Beslemeyi girin: 67
1 6 5 1 4
5 6 3 1 2
Beslemeyi girin: 67
1 6 5 1 4
5 6 3 1 2
diniz.
159
Bu www.elektroarge.com
kullanabiliriz:
yuz =1 + rand ( ) % 6;
n = a + rand ( ) % b;
Bu
Zarlar durduktan
atarsa kaybeder.
160
Bu www.elektroarge.com
1
2 Barbut */
3 #include <stdio.h>
4 #include <stdlib.h>
5 #include <time.h>
6
7 int zarAtma( void );
8
9 int main( )
10 {
11 int oyunDurumu, toplam, oyuncuPuani;
12
13 srand( time( NULL ) );
14 toplam = zarAtma( );
15
16 switch( toplam ) {
17
18 oyunDurumu = 1;
19 break;
20 case 2: case 3: case 12:
21 oyunDurumu = 2;
22 break;
23
24 oyunDurumu = 0;
25 oyuncuPuani= toplam;
26 \n", oyuncuPuani );
27 break;
28 }
29
30 while (oyunDurumu == 0 ) { /* zar atmaya devam et */
31 toplam= zarAtma( );
32
33 if ( toplam == oyuncuPuani) /*
34 oyunDurumu = 1;
35 else
36 if ( toplam == 7 ) /* 7 atma ile kaybetme */
37 oyunDurumu = 2;
38 }
39
40 if (oyunDurumu == 1 )
41 \n" );
42 else
43 printf( "Oyuncu kaybeder\n" );
44
45 return 0;
46 }
47
161
Bu www.elektroarge.com
48 int zarAtma( void )
49 {
50 int zar1, zar2, toplamZar;
51
52 zar1 = 1 + ( rand( ) % 6 );
53 zar2 = 1 + ( rand( ) % 6 );
54 toplamZar = zar1 + zar2;
55 \n", zar1, zar2, toplamZar );
56 return toplamZar;
57 }
Oyuncu Kaybeder
Oyuncu 5 + 4 =
Oyuncu Kaybeder
162
Bu www.elektroarge.com
ediniz. zarAtma
zarAtma
zarAtma
fonksiyonun parametre listesinde void zarAtma
,
int olarak .
oyunDurumu
oyunDurumu 1
oyunDurumu 2
Aksi takdirde, oyunDurumu 0
oyundurumu 0 while
Program if/else oyundurumu 1 Oyuncu kazan , oyunDurumu 2
Oyuncu kaybeder
main ve zarAtma
switch, while, if/else if
ve
C auto,register,extern ve static
ptir. Bir ,
Bir ,
bildirimlerle
163
Bu www.elektroarge.com
ve
. auto ve register
bildirmek bildirildikleri
bildirilenler) otomatik
auto
bildirmek bildirim double tipteki x ve y
bildirimin yer ald
auto double x, y;
auto
bildirildikleri fonksiyonun
register
164
Bu www.elektroarge.com
, program boyunc
bildirmek, bir
static
bilinmektedirler anc static
static
ifademiz say static
vermektedir.
NULL
165
Bu www.elektroarge.com
extern ve static
extern ve static
5.12 FAAL
Bir n
bildirirsek
r. Bir
ve fonksiyon
lar,
} bildirilen
bildirimleri
elir.
static olarak
Fonksiyon
prototipinde k
ismiy
166
Bu www.elektroarge.com
static
x bildirilmi
x
herhangi bir bloktan main x
bildirilmi
main x main
x
x main
x
main x
main x
x
167
Bu www.elektroarge.com
25 a( );
26 b( ); /* b s
27 c( );
28 a( );
29 b( );
30 c( ); inin korur. */
31
32 \n", x );
33 return 0;
34 }
35
36 void a( void )
37 {
38 int x = 25;
39
40 printf( "\ \n", x );
41 ++x;
42 \n", x );
43 }
44
45 void b( void )
46 {
47
48
49 printf( "\ x %d olur.\n", x );
50 ++x;
51 \n", x );
52 }
53
54 void c( void )
55 {
56 printf( "\ \n", x );
57 x *= 10;
58 \n", x );
59 }
26 olur.
168
Bu www.elektroarge.com
temel durum
ve de denir.
return
main
. Bu basit ve daha
main
169
Bu www.elektroarge.com
teknik
faktoriyel = 1;
for ( sayici = sayi; sayici >= 1; sayici-- )
faktoriyel *= sayici;
n! = n * ( n 1 )!
5!=5*4*3*2*1
5!=5*(4*3*2*1)
5!=5*(4!)
-
her yinele
5! 5!
5! = 5 *
5 * 4! 5 * 4!
4 * 3! 4 * 3!
3 * 2!
170
Bu www.elektroarge.com
3 * 2!
2 * 1!
---
171
Bu www.elektroarge.com
22 }
1! = 1
2! = 2
3! = 6
4! = 24
5! = 120
6! = 720
7! = 5040
8! = 40320
9! = 362880
10! = 3628800
double nin
,
Fibonacci serileri
0,1,1,2,3,5,8,13,21,......
172
Bu www.elektroarge.com
oran ya da
,
fibonacci(0)=0
fibonacci(1)=1
fibonacci(n)=fibonacci(n-1)+fibonacci(n-2)
Fibonacci(0) = 0
173
Bu www.elektroarge.com
Fibonacci(1) = 1
Fibonacci(2) = 1
Fibonacci(3) = 2
Fibonacci(4) = 3
Fibonacci(5) = 5
Fibonacci(6) = 8
Fibonacci(10) = 55
Fibonacci(20) = 6765
Fibonacci(30) = 832040
Fibonacci(35) = 9227465
Yinelem
main fibonacci
sonra fibonacci fibonacci her
n
, n n
fibonacci iki
fibonacci fonksiyonunun fibonacci ( 3 )
fibonacci yerine f
f ( 3 ) ; f ( 2 ) ve f ( 1 )
(+ r.
174
Bu www.elektroarge.com
f(2)
n
&&, || ,
, ) ve ?:
;
,
&& , || , ?: (,)
fibonacci n.
n
20
30
ak
f(3)
return 1
175
Bu www.elektroarge.com
return 1 return 0
fibonacci
fonksiyon inceledik.
: tekrarlama
zlemleri 5.12
Yinelemenin oldu
176
Bu www.elektroarge.com
destekler.
zordur.
Faktoriyel fonksiyonu
En
nin kuleleri
Yinelemeli main
Bir
Lineer arama
ama
Sekiz vezir
177
Bu www.elektroarge.com
a kolay idare
bilgileri (
fonksiyonun yer
{
bildirimler
ifadeler
}
void olarak
bildirilir olabilir. Parametre listesi,
bildirimlerini
178
Bu www.elektroarge.com
parametre listesi void olarak bildirilir
ifade ve bildirimlerin
return;
return deyim;
ifadesi deyimin d
bildirir (prototipleri),
bu fonksiyonlar t
.
rand fonksiyonu 0 ile RAND_MAX r ve RAND_MAX
srand
srand Bu,
Bu,
179
Bu www.elektroarge.com
n = a + rand( ) % b;
a
b
Bir
Bir faaliyet alan
Bir
bildirimlerle
Otomat bildirildikleri
Bir fonksiyonun yerel
register i, nceye
extern ve static
bildirmek
Statik r
olurlar.
static olarak
Bir
Etiketler, r.
} a erer
bildirilen
bildirimleri i
bloktaki
180
Bu www.elektroarge.com
, fonksiyon prototipinin
d
Bu yeni problem
bas
fonksiyonun bir
&&,
|| ,) ve ?:
abstraction.......................................
automatic storage............................ otomatik depolama
automatic variable..........................
auto storage class specifier............ auto
base case in recursion.................... yinelemede temel durum
block scope...................................
call by reference.........................
call by value.................................
caller...........................................
181
Bu www.elektroarge.com
calling function..........................
file scope .................................
function call.............................
function declaration................ fonksiyon bildirimi
function definition.................
function prototype................. fonksiyonun ilk hali/prototipi
global variable.....................
header file.................................
information hiding.................... bilgi saklama/gizleme
linkage....................................
local variable.......................
optimizing compiler............. derleyiciyi en iyi hale getirmek
randomize...............................
recursion................................ yineleme
return value............................
simulation..............................
5.2
(prototipi) int
5.3
5.6
5.7
5.8
5.9
5.10
5.11 int
5.14
5.15
unutmak.
182
Bu www.elektroarge.com
5.16
5.18
yinelemeli olmayan bir fonksiyona sahip olmak.
5.1
5.2 Bir programda
#include <math.h>
5.3
5.6
5.7
er.
5.8 ni
#include
#include
5.9
Derleyici bu isimleri ihmal eder.
5.10
bildirilmelidir.
5.11D
5.1
5.2 &&,||,?: (,
183
Bu www.elektroarge.com
5.1
bildirildikleri fonksiyon
5.2 register
5.4
5.5
5.6
5.1
, program
5.3
5.4
f
5.5
5.6 Program
5.7
getiriyor olabilir.
5.8
param
5.9
184
Bu www.elektroarge.com
register )
5.11 Bi bildirmek
5.12
rcih edilebilir.
5.13
5.1
a) C
b)
c) Sadece
denir.
d)
e)
f) Bir ________, o
g)
h)
i)
j) ________ fonksiyonu, rasgele bir program ras
k)
l)
m) ,
185
Bu www.elektroarge.com
r)
ederek yi i
5.2
a) main fonksiyonundaki x
b) kup fonksiyonundaki y
c) kup fonksiyonu
d) main fonksiyonu
e) kup fonksiyon prototipi
f) kup fonksiyon prototipindeki y
1 #include <stdio.h>
2 int kup(int y);
3
4 int main( )
5 {
6 int x;
7
8 for(x = 1; x <= 10; x++)
9 prinft ("%d\n", cube( x ) );
10 return 0;
11 }
12
13 int kup(int y)
14 {
15 return y * y * y;
16 }
5.3 ,
eden bir pro
5.4
d) sayi tamsayidanOndaliga
fonksiyonu.
5.5
a)
b)
c)
d)
186
Bu www.elektroarge.com
5.6 ler .
5.7
a) int g(void) {
\n");
int h(void) {
\n);
}
}
sonuc = x + y;
}
c) int toplam(int n) {
if (n == 0)
return 0;
else
n + toplam(n-1);
}
e) void carpim(void) {
int a, b, c, sonuc;
187
Bu www.elektroarge.com
5.2
5.3
2 #include <stdio.h>
3 #include <math.h>
4
5 int main()
6 {
7 \
8 \
9 printf( \
10 \
11
12
13 \ log10(1.0));
14 \
15 \
16 \
17 \
18 .1f) = %.1f\ -13.5, fabs(-13.5));
19 \
20 \ -9.8, ceil(-9.8));
21 \
22 \ -9.8, floor(-9.8));
23 printf( \
24 pow(2.0, 7.0));
25 \
26 pow(9.0, 0.5));
27 \
28 13.675, 2.333, fmod(13.675, 2.333));
29 \ 0, sin(0.0));
30 \
31 \
32 return 0;
33 }
sqrt(900.0) = 30.0
sqrt(9.0) = 3.0
188
Bu www.elektroarge.com
exp(1.0) = 2.718282
exp(2.0) = 7.389056
log(2.718282) = 1.0
log(7.389056) = 2.0
log10(1.0) = 0.0
log10(10.0) = 1.0
log10(100.0) = 2.0
fabs(13.5) = 13.5
fabs(0.0) = 0.0
fabs(-13.5) = 13.5
ceil(9.2) = 10.0
ceil(-9.8) = -9.0
floor(9.2) = 9.0
floor(-9.8) = -10.0
pow(2.0, 7.0) = 128.0
pow(9.0, 0.5) = 3.0
fmod(13.675 / 2.333) = 2.010
fsin(0.0) = 0.0
fcos(0.0) = 1.0
ftan(0.0) = 0.0
5.4
a) double hipotenus(double kenar1, double kenar2)
b) int enKucuk(int x, int y, int z)
c) void komut(void)
d) float tamsayidanOndaliga(int sayi)
5.5
a) double hipotenus(double, double);
b) int enKucuk(int, int, int);
c) void komut(void);
d) float tamsayidanOndaliga(int);
5.6
a) register int sayac = 0;
b) static float sonDeger;
c) static int sayi;
5.7
a) Hata: h fonksiyonu g
h g
b) Hata :fonksiyonun
sonuc
return x + y
konulmas
c) Hata: n + toplam(n - 1) toplam
else
189
Bu www.elektroarge.com
return n + toplam( n 1)
d) ; ve a parametresinin fonksiyon
IRMALAR
5.8
a) x = fabs(7.5)
b) x = floor(7.5)
c) x = fabs(0.0)
e) x = ceil(0.0)
f) x = ceil (-6.4)
g) x = ceil(-fabs(-8+floor(-5.5)))
5.9
edini
ucretHesapla
Araba Saat
1 1.5 2.00
2 4.0 2.50
3 24.0 10.00
TOPLAM 29.5 14.50
y = floor(x + .5);
ifadesi x y
5.11 floor
190
Bu www.elektroarge.com
x 'i y
x
a) tamsayiyayuvarla(sayi)
b) onlugayuvarla(sayi)
c) yuzlugeyuvarla(sayi)
d) binligeyuvarla(sayi)
5.12
a)
b) rand
c) Neden srand
e) -
tekniktir?
5.13
a) 1 n 2
b) 1 n 100
c) 0 n 9
d) 1000 n 1012
e) 1 n 1
f) 3 n 11
5.14
a) 2,4,6,8
b) 3,5,7,9,11
c) 6,10,14,18,22
5.15 hipotenus
double
double
1. Kenar 2.Kenar
1 3.0 4.0
2 5.0 12.0
3 8.0 15.0
191
Bu www.elektroarge.com
tabanus
, tamsayikuvveti(3,4) = 3 * 3 * 3 * 3. us
taban
for
5.17 kat
1 0
1 0
5.19 kenar
kenar, 4
****
****
****
****
5.20
icinidoldur kenar, 5 ve icinidoldur, # ise fonksiyon
#####
#####
#####
#####
#####
5.22
a) a b
b) c d
1 ile 32767
alan bir fo
4562
192
Bu www.elektroarge.com
4 5 6 2
5.24
- Fahrenheita,
2- Fahrenheit
5.25 float
5.26
,
mukemmel isminde, sayi
-
5.27
a)
b) Bu fonksiyonu kullanarak 1-
c)
Neden? P
5.28
5.29
obeb
193
Bu www.elektroarge.com
5.30 siniflandir Bu fo
- - - -69
5.32
rand fonksiyonunu kullanarak rasgele 2 adet
5.33
,
Aferin
Pes etmeyin.
5.34
5.35 -
1-
194
Bu www.elektroarge.com
iriyle cevap
versin :
yada
ikili arama
problemde bulabilirsiniz.
5.36
"Daha iyisini
yapabilirsiniz." bir tahmin
bulunabilir? -
4 kuvvet(taban,us)
tabanus
kuvvet(3,4)=3*3*3*3. Us ,
us, 1
taban1
0,1,1,2,3,5,8,13,......
fibonacci(n) fonksiyonu
195
Bu www.elektroarge.com
5.39
vard
-1 tane d
1. n -
3. n-
2. Diskl
1-
1 -> 2
3 -> 2
1 -> 3
2 -> 1
2 -> 3
1 -> 3
5.41
196
Bu www.elektroarge.com
5.42 x ve y
x ve y obeb yineleme
5.44
a) viye
b)
5.45 mesafe
float
5.46
1 /* ex05_46.c */
2 #include <stdio.h>
3
4 int main( )
5 {
6 int c;
7
8 if ( ( c = getchar( ) ) != EOF ) {
9 main( );
10 printf ("%c",c);
11 }
12
13 return 0;
14 }
5.47
1 /* ex05_47.c */
2 #include <stdio.h>
3
4 int gizem(int, int);
5
6 int main( )
197
Bu www.elektroarge.com
7 {
8 int x,y;
9
10
11 scanf("%d%d" &x, &y);
12 \n", gizem(x,y));
13 return 0;
14 }
15
16
17 pozitif olmak zorunda */
18 int gizem(int a, int b)
19 {
20 if (b == 1)
21 return a;
22 else
23 return a + gizem(a, b-1);
24 }
5.48
5.49
test eden bir program yaz
5.50
d) float y = 123.45678;
int x;
x = y;
printf ("%f\n", (float) x);
e) double kare(double sayi)
{
double sayi;
return sayi * sayi;
}
f) int toplam(int n)
{
198
Bu www.elektroarge.com
if (n == 0)
return 0;
else
return n + sum(n);
}
5.51
bakiye
bahis gi
bahis in bakiye while
bahis bahis
bahis bahis
6.2 Diziler
6.3 Dizileri bildirmek
kler
199