Professional Documents
Culture Documents
0
İNTERNET PROGRAMCILIĞI - I Özcan
İÇİNDEKİLER:
1
İNTERNET PROGRAMCILIĞI - I Özcan
2
İNTERNET PROGRAMCILIĞI - I Özcan
Bölüm 6 Döngüler
6.1 Giriş ............... ........... ............... ............... ............... .......................... 66
6.2 do-while döngüsü............... ............... ............... ............... ................... 67
6.3 while döngüsü............... ............... ............... ............... ............... ........ 68
6.4 while ile do-while arasındaki fark............ ............... ............... .............. 70
6.5 for döngüsü............... ............... ............ ............... ............... ............... 70
6.6 for döngüsünde boş ifadelerin kullanılması............... ............... ........... 74
6.7 break ve continue ifadeleri............................ ............... ........................ 75
6.7.1 break ifadesi............... ............... ............... ............... ............... .......... 75
6.7.2 continue ifadesi............... ............................ ............... ......................... 76
6.8 Fonksiyonlar............... ............... ........... ............... ............... .............. 77
6.8.1 Altprogramlar ............... ........... ............... ............... ............................ 78
6.9 Math.h’da verilmiş matematiksel fonksiyonlar............... ....................... 79
6.9.1 Trigonometrik fonksiyonlar............... ............... ............... ..................... 79
6.9.2 Ters trigonometrik fonksiyonlar............................ ............... ................. 80
6.9.3 Diğer fonksiyonlar............... ............... ............... ............... .................. 80
6.10 Rastgele sayı üretim fonksiyonları............... ............... ............... ......... 81
6.11 Turbo C’de bulunmayan matematiksel fonksiyonlar............... .............. 82
6.11.1 Bir sayının karesinin alınması............... ............... ............... ................ 82
6.11.2 Ters hiperbolik fonksiyonlar............... ............ ............... ............... ...... 83
6.11.3 Kotanjant fonksiyonları............... ........... ............... ............... .............. 84
6.11.4 Herhangi bir tabana göre logaritma alınması............... ............... ......... 84
3
İNTERNET PROGRAMCILIĞI - I
BÖLÜM 1 Özcan
C’nin kısa öyküsü işe şöyledir.: C dili 1970’li yıllarda AT&T Bell labaratuarında,
Dennis M. Ritchie tarafından yaratıldı. Dilin C olarak adlandırılmasının sebebi
kendinden önceki B dili üzerine kurulu bir yapı olmasıdır. Unix işletim sisteminin
yazımı amacı ile yaratılan C dili, ilk başlarda adece Bell labaratuarında kullanıldı.
Daha sonraları labatuvardan dışarı çıkarak akademik düzeydeki çalışmalarda ve
büyük askeri projelerde kullanılmaya başlandı. Programcılar tarafından kullanılmaya
başlanması ise yavaş yavaş oldu. C dilinin tanınmasının en önemli adımı 1978’de
Dennis M. Ritche ve Brain W. Kernighan tarafından “C Programming Language” adlı
kitabın yayımlanması olmuştur. Bundan sonra C dilinin gelişmesi ve popülerliği gün
geçtikçe artmıştır. Piyasada bulunan C derleyicilerinin çokluğu bunun bir kanıtıdır. C
derleyicileri, sahip olduğu geniş fonksiyon kütüphaneleri ve özellikle bu
kütüphanelere grafik komutları eklenmesi ile günümüzde programcıların seçimlerinde
önemli rol oynamaktadır.
Küçük harfler: a b c d e f g h i j k l m n o p q r s t u v w x y z
Büyük harfler: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
Rakamlar: 0 1 2 3 4 5 6 7 8 9
4
İNTERNET PROGRAMCILIĞI - I Özcan
Altçizgi (underscore): _
Özel karakterler:
‘ ‘ boşluk , virgül ! ünlem . nokta ; noktalı virgül
: iki nokta üstüste ‘ tırnak “ çift tırnak (sol parantez ) sağ parantez
[ sol köşeli par. ] sağ köşeli par. { sol küme } sağ küme | duvar
/ slaş \ ters slaş ~ tilda + artı # diyez
% yüzde & ve ^ üst ok * askteriks (yıldız) - eksi
= eşit < küçük > büyük
(* Standart isimler.)
(**Sadece Microsoft C de geçerlidir. )
(‘_’ ile başlayan isimler Merkezi işlem birimi-Cpu değişkenleridir.)
5
İNTERNET PROGRAMCILIĞI - I Özcan
1.4 TAMSAYILAR
Tamsayılar belli bir alt limitten bir üst limite kadar olan sayıları bire bir ifade eden
sayılardır. Bu sayıların yazılmasında nokta kullanılmadığı için noktasız sayılar olarak
anılır. C’de tamsayılar desimal (onluk), oktal (sekizlik) ve hexadesimal (onaltılık) sayı
sistemlerinde kodlanabilirler.
En küçük bilgi birimi olan bayt’ın son biti sayının işaretini belirlemek için ayrılırsa, -
128 den +127 ye kadar olan tamsayıları belirtmek mümkün olur.
7 6 5 4 3 2 1 0
Burada bütün bitler sıfır yapılırsa sayı sıfırdır. İşaret biti pozitif sayılar için 0 negatif
sayılar için 1 değerini alır. Örneğin 43 için bilgi alanının kodlanışı şöyledir: işaret biti 0
yapılır. Çünkü 43 pozitifdir. 43 tamsayısının ikili sayı sisteminde yazılışı 101101 sayı
alanına yerleştirilir ve bütün bilgi alanı
0 0 1 0 1 1 0 1
şeklinde olur. Negatif bir sayının kodlanması ise pozitif sayıların kodlanmasından
daha farklıdır. Negatif sayıların kodlanması şu şekilde yapılır.
6
İNTERNET PROGRAMCILIĞI - I Özcan
00101101(43 sayısı)
11010010(43’ün tersi)
+ 1
11010011= -43
Dikkat edilirse yedinci bit (işaret biti) kendiliğinden 1 değerin, alarak sayının negatif
olduğunu belirtmiştik. Kontrol açısından 43 ile –43 ü toplarsak
00101101 43
+ 11010011 -43
1 00000000 0
Taşma değeri (1) göz önüne alınmadığından sonuç 0 dır. Böyle bir bilgi tipinin bir
değişken için belirtilmesi C programlama dilinde char kelimesi ile yapılır. Char
kelimesinden sonra bu tipte olmasını istediğimiz bütün değişken adları araya virgül
konarak yazılır ve tanımlama noktalı virgül (;) ile son bulur.
Ör: char i ;
Ör: char i, j,k ;
Bir çok özelliği ile char veri tipine benzemekle birlikte, int veri tipi 2 baytlık bir
uzunluğa sahiptir. Dolayısıyla –32768 den +32767’e kadar olan tamsayıları temsil
edebilir.
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
2.bayt 1.bayt
bu tip görüldüğü gibi char’a benzemektedir. Tek fark işlemlerin 8 bit üzerinden
değilde 16 bit üzerinden yapılmasıdır. Bilgi 2 bayt’tan oluştuğu için hafızateki
konumlarında önce ikinci bayt ardından da birinci bayt yer alır.
7
İNTERNET PROGRAMCILIĞI - I Özcan
0 0 1 1 0 0 0 0 1 1 0 1 0 1 0 0
2.bayt 1.bayt
işaret
biti
C dilinde int sayı tipini kullanmak için int sayı tipinde olması istenilen değişken isimleri
int kelimesinden sonra char’da olduğu gibi sıralanır.
0 0e00
5 5e00
1.5 1.5e00
8.9567 89567e-04
C’de temel iki gerçel sayı tipinden biridir. Hafızada 4 baytlık yer kaplar.
31 30 23 22 0
Bu sayı tipi ile oluşturulabilen mutlak değerce en büyük sayı 3,4E38 dir. Ve
oluşturulabilen mutlak değerce en küçük sayı ise 3,4E-38 dir. Bu sayılar float sayı
8
İNTERNET PROGRAMCILIĞI - I Özcan
tipinin duyarlığını belirler. C dilinde float sayı tipini kullanmak için float kelimesinden
sonra değişken isimlerini sıralamak yeterlidir.
Bu gerçel sayı tipi ise hafızate 8 baytlık bir alan işgal eder. Bit düzeni aşağıdaki
gibidir:
63 62 52 51 0
Double sayı tipinin ifade edebileceği mutlak değerce en büyük sayı 1,7E+308 ve en
küçük sayı 1.7E-308 dür. Double sayı tipi değer float sayı tipli değere göre çok daha
duyarlıdır ve daha büyük bir üst sınıra sahiptir. Double tip tanımlaması ise diğerlerine
benzer olarak
Doble x, a, A, b, c;
Double term, Sonuc;
şeklinde yapılır. Double ile float sayı tipi tanımlamalarının tercihi programcıya ait
olmakla birlikte, daha büyük üst sınır veya hassasiyetin tercih edildiği yerlerde
double sayı tipi tercih edilmelidir.
Bu iki belirteç sayının işaret bitinin bulunup bulunmaması veya diğer bir deyişle
sayının negatif değerlere sahip olup olmayacağının belirtilmesini sağlar. Unsigned
tanımlaması sayının işaret bitinin olamaması sağlar. Fakat bu fiziksel anlamda bitin
olmaması anlamında değil sadece işaret bitinin diğer normal bitler gibi işleme
alınmaması anlamındadır. Signed tanımlaması ise sayının işaret bitinin olmasını
sağlar. Bu tanımlamaya genelde tip tanımlamasında gerek yoktur. Çünkü yukarıda
belirtilen bütün tipler (char, int, float, ve double) işaret bitine sahiptir.
9
İNTERNET PROGRAMCILIĞI - I Özcan
Short belirticisi sadece int tipi ile birlikte kullanılır, fakat 16 bitlik bilgisayarlarda
herhangi bir etkisi yoktur. Short int veya signed short int tanımlaması int tanımlaması
ile aynıdır. Ve kısaca short veya signed short olarak da anılır.
32 bitlik bilgisayarlarda int tipi 4 baytlık bir alanı kapsadığından; short tamlayıcısı 32
bit bilgisayarlarda 16 bitlik bilgilerin elde edilmesini sağlar. Unsigned short 16 bitlik
işaretsiz tamsayı, signed short veya short 16 bitlik işaretli tamsayı elde edilmesini
sağlar. Long belirticisi gerçel sayılar için kullanılırsa; örneğin, long float tanımlaması
yapılırsa, bu double tanımlamasına denktir. Fakat long double tanımlaması yapıldığı
zaman uzunluğun 10 bayt olması sağlanır. Sayı sınırı:
− 4932
± 3 . 4 x 10 den ± 1 . 1 x 10 4932
kadar olur.
Değişkenin bilgi depolayan bir hafıza birimi olduğunu söylemiş ve numerik verileri
incelemiştik. Nümerik veriler için değişkenlerin alabileceği değerler belirli idi. Fakat
10
İNTERNET PROGRAMCILIĞI - I Özcan
hayatımızdaki bütün veriler nümerik değildir. Örneğin, bir kimlik formundaki sorular ve
cevaplar şöyle olabilir.
Burada her bir sorunun cevabının saklanacağı bir değişken düşünelim. Bu değişken
hangi cevap için hangi değeri alacaktır? Bu seçim tamamen programcıya aittir.
Burada her bir cevaba bir sayısal değer verip bu değeri kontrol ederek sorunun
cevabını bulmak mümkündür. Örnekteki bütün soruların cevapları için birer tamsayı
değişken tanımlayıp, bu değişkenin alacağı değere göre cevap belirlenir.
gibi ve cinsiyet, 0 ise Kız 1 ise Erkek; medeni_hal 0 ise bekar, 1 ise evli, -1 ise dul
olduğu kabul edilebilir. Bu yaklaşım doğru olmakla beraber karmaşıklığa yol açar.
Kbunun için C programcılara enum (bire bir sayma) değişken tipini sunmaktadır. Bu
olanakla örnekteki tanımlamalar.
Görüldüğü gibi eşit işareti ile nümerik değer vermek mümkün olmaktadır. Yalnız eşit
işareti atama görevinden çok sayaç değiştirme işlemine yarar. Şöyle ki, sonbahar=2
ifadesi sonbahar terimine 2 değerinin atamaktan başka aksi belirtmedikçe
kendisinden sonraki elemanların 3,4,5... sırası ile devam etmesini sağlar. Bu yüzden
kis elemanı 3 değerine sahiptir. Yaz ise yeni değeri 1 ile işleme başladığından 1
değerine sahiptir.
11
İNTERNET PROGRAMCILIĞI - I Özcan
Burada ilk satırda alabileceği değerler Kız ve Erkek olan cinsiyet tipi
tanımlanmaktadır. İkinci satırda ise cinsiyet tipindeki a ve b değişkenleri
tanımlamaktadır. Bu iki satır tek satır halinde
şeklinde de yazılabilir.
12