ANA SAYFA   ÖDEV EKLE   İLETİŞİM   EN YENİLER   DERS SİTESİ   TOP 100   YGS Puan Hesaplama   KIZ OYUNLARI   Şimdi 39 Kişi Ödevde
 
 
          Ödev Ara                    
 
Oyunlar
C++ Dili.
Hit: 696      Tarih: 2009-05-15       Ekleyen: blackprens
odevindir

C++ Dili.

C DİLİ KULLANARAK
BİLGİSAYAR PROGRAMLAMA








Hüseyin PEKTAŞ



Bu doküman KOÜ Elektronik ve Haberleşme Mühendisliği BÖlümündeki Bilgisayar ve Yazılım I-II derslerine ait notlarını içerir. DÖkümanda büyük oranda anlatım eksikliği vardır. Nu nedenle tek başına bi kaynak olarak kullanılamaz. Ancak programlamayı Öğrenmek isteyenlerin konu/deyimleri hangi sırada takip etmelerini sÖyler.
Tüm hakları yazara aittir. Üzerinde değişiklik yapmamak ve alınan tüm kopyalarda bu sayfayı bulundurmak koşuluyla bu dÖküman izinsiz olarak kullanılabilir.



Sürümler : Ekim 1996, Ekim 1998





GiRiŞ

Bilgisayar, verileri saklayan , bunlar üzerinde çok hızlı işlem yapan ve istenen verileri sunan bir aygıttır.
Donanım (hardware) ve yazılım(software) diye iki bÖlüme ayrlır. Donanım bilgisayarın fiziksel bileşenleridir. Yazılım ise donanımı oluşturan bileşenlerin çalışmasını ve işlevlerini yerine getirmesini sağlayan programlardır.

İşlemci


Denetim Aritmetik Girdi
Birimi Mantık Çıktı
Birimi Ana Bellek
Yan Bellek


Girdi birimleri : Veri ve program girilmesini sağlar. Klavye, fare, kart okuyucu ...
Çıktı birimleri : İstenen verilerin kullanıcıya sunulduğu ortam. Ekran, yazıcı...
Ana Bellek : Programların ve işlenen verilerin geçici olarak saklandığı birim.
Yan bellek : Bilgilerin (veri, program) kalıcı olarak saklandığı ortamlar. Disket, disk, manyetik şerit.

Bilgisayar broşuründe olan kavramlar, bit, byte, ... RAM, ROM...

Bu günkü anlamda ilk bilgisayar ENIAC
30 ton, kablolar ile programlama
1842, Charles Babbag , analitik makine tasarlıyor. Programlanabilir bir cihaz Öncesi Hesap Makinesi. Ada Agusta programcısı.


Bilgisayarlar :
Kusak 39 - 58 Vakum tüp ile çalışıyor
Kusak 58 - 64 TransistÖr
Kusak 64 - 75 Entegre
Kusak 75 - --- Yüksek Ölçekli entegre



Micro computer ( PC ) ( bu gün 50 - MIPS)
Workstation
Mini Computer
Main Frame (50 lerde 50 IPS)
Super Computer
Bilgisayarın yapısı
Bellek (...., birimi byte bit)
CPU ( Bilgiyi işleyen kısım bellekten okur - yazar)
Denetim Birimi ( Hangi işlem, ne zaman yapılacak, belirler (gerekli işaretleri üretir))
Giriş/Çıkış : klavye (veya benzer)
: ekran (veya benzer)
İkincil ( yardımcı ) bellek (Kütük olarak saklı bilgiler.)
Hardware - Software

Bilgisayarlar kendisine sorulan sorulara hemen cevap veren, bir sürü problemi çÖzen bir aygıt değildir. Bilgisayarda yapılan her tür iş, ilk Önce insan aklının süzgecinden geçiyor, insanlar tarafından etraflıca tasarlanıyor, planlanıp programlanıyor .

ilk yapılan bilgisayarın karşına geçip hemen
en eski soruyu sormuşlar "Tanrı var mı".
Bilgisayar kısa bir düşünmeden sonra "Evet artık var".

Bu nedenle, Önce bilgisayara problemin çÖzümü Öğretilmelidir. Fakat bunun için bizim problemi çÖzmemiz gerekir. Ve daha sonra bir programlama dili ile bu çÖzüm bilgisayara aktarılmalıdır.





1- Problem ÇÖzme ve Algoritmalar
1.1 Problem ÇÖzme
Problem çÖzmede, soruna hemen girişmek yerine, dikkatli ve sistematik yaklaşım ilke olmalıdır. Problem iyice anlaşılmalı ve mümkün olduğu kadar küçük parçalara ayırılmaladır.
Descartes tarafından "Discourse on Method" isimli kitabında anlatılan problem çÖzme teknikleri;

1. Doğruluğu kesin olarak kanıtlanmadıkça, hiçbir şeyi doğru olarak kabul etmeyin; tahmin ve Önyargılardan kaçının.
2. Karşılaştığınız her güçlüğü mümkün olduğu kadar çok parçaya bÖlün.
3. Düzenli bir biçimde düşünün; anlaşılması en kolay olan şeylerle başlayıp yavaş yavaş daha zor ve karmaşık olanlara doğru ilerleyiniz.
4. Olaya bakışınız çok genel, hazırladığınız ayrıntılı liste ise hiçbir şeyi dışarıda bırakmayacak kadar kusursuz ve eksiksiz olsun.

1.2 Algoritmalar
Belirli bir gÖrevi yerine getiren sonlu sayıdaki işlemler dizisidir.
İ.S. 9.yy da İranlı Musaoğlu Horzumlu Mehmet
(Alharezmi adını araplar takmıştır) problemlerin çÖzümü için genel kurallar oluşturdu. Algoritma Alharezmi'nin Latince okunuşu.
Her algoritma aşağıdaki kriterleri sağlamalıdır.
1. Girdi: Sıfır veya daha fazla değer dışarıdan verilmeli.
2. Çıktı: En azından bir değer üretilmeli.
3. Açıklık: Her işlem (komut) açık olmalı ve farklı anlamlar içermemeli.
4. Sonluluk: Her türlü olasılık için algoritma sonlu adımda bitmeli.
5. Etkinlik: Her komut kişinin kalem ve kağıt ile yürütebileceği kadar basit olmalıdır.
Not: Bir program için 4. Özellik geçerli değil. işletim sistemleri gibi program sonsuza dek çalışırlar .

Örnek 1.2.1 : 1'den 100'e kadar olan sayıların toplamını veren algoritma.
1. Toplam T, sayılar da i diye çağırılsın.
2. Başlangıçta T'nin değeri 0 ve i'nin değeri 1 olsun.
3. i'nin değerini T'ye ekle.
4. i'nin değerini 1 arttır.
5. Eğer i'nin değeri 100'den büyük değil ise 3. adıma git.
6. T'nin değerini yaz.
Algoritmaların yazım dili değişik olabilir. Günlük konuşma diline yakın bir dil olabileceği gibi simgelere dayalı da olabilir. Akış şeması eskiden beri kullanıla gelen bir yapıdır. Algoritmayı yazarken farklı anlamlar taşıyan değişik şekildeki kutulardan yararlanılır. Yine aynı amaç için kullanılan programlama diline yakın bir (sÖzde kod = pseudo code) dil , bu kendimize Özgü de olabilir, kullanılabilir.

Aynı algoritmayı aşağıdaki gibi yazabiliriz.
1. T=0 ve i=0
2. i'nin değerini T'ye ekle.
3. i'yi 1 arttır.
4. i EB = Ni
i = i + 1

EB yi yaz.
Dur



Örnek 1.2.10 : Programın C dili ile yazılıp çalışır hale getirilmesi.


Programı bilgisayara gir
Kaynak dosya olarak kaydet
Kaynak dosyayı derle ( compile)
Derleme sonucunda hata var ise
Hataları düzelt
3. Adıma git
Oluşan amaç dosyasına diğer dosyaları bağla (link)
Bağlama sonucunda hata var ise
Hataları düzelt
Hatalar kaynak dosya ile ilgili ise 2. adıma aksi halde 5. adıma git
Program çalıştırılmaya hazır
2- Programlamaya Giriş

Program : Belirli bir problemi çÖzmek için bir bilgisayar dili kullanılarak yazılmış deyimler dizisi.
Önceki bÖlümde bir problemin çÖzümü ile ilgili teknikler sunmuştuk. Bir problemi bilgisayar ile çÖzmek için geliştireceğimiz programın yazımında izleyeceğimiz adımlar:

i) Problemin ne olduğunu kavra. ÇÖzüm için gereksinimleri belirle.
ii) Problemin girdilerini, çıktılarını ve diğer kısıtlama ve gereksinimleri belirle ( bilgilerin giriş ve çıkış biçimlerinin nasıl olacağına kadar).
iii) Problemin çÖzümünü veren algoritmayı yaz.
iv) Algoritmayı bir programla dili ile yaz.
v) Programın doğru çalışıp çalışmadığını test et. Bu testi değişik veriler (girdiler) için tekrarla.


2.1 İlk Program Örneği
#include Kullanılan işlevler ile ilgili başlık dosyası
main()

int i ; Değişken tanımı
scanf("%d",&i); Programın gÖvdesi
i:=i*i;
printf("%d",i);


BCPL à B (1967 Ken Thompson) à C (Denis Ritchie unix i yazmak için)

az sayıda saklı sÖzcük
kısa ve etkin program
çok sayıda işleç
assembler e yakın kod
taşınabilir kod kullanıcıya bırakılan kontroller (dizinin boyutu gibi )
düşük okunabilirlik

source -----> compiler -----> object -----> link
kaynak derleyeci amaç bağlama
kaynak kod : C dili ile yazılmış olan program.
derleyeci : Kaynak kodu makina koduna çevirir
amaç kodu : Kaynak kodun makina dilindeki karşılığı
bağlama : Birden fazla amaç kodu dosyasının tek dosyada birleştirilmesi
2.2 Veri Tipleri

Veri tiplerini vermeden Önce yazılan bir programın geçtiği aşamalara gÖz atalım.

2.2.1 Int Tip
Integer = Tamsayı
Tamsayıları içerir. Bellekte 2 Byte tutar.
5 , -19 , 25000 gibi
Minimum : -231 = -32768
Maksimum : 231-1 = 32767

2.2.2 Gerçel Tipler (Float, Double)
Gerçel sayıları içerirler.
float : Bellekte 4 Byte yer tutar. 3.4E-38 ile 3.4E+38 aralığında değer alır. Hassasiyet 7-8 basamaktır.
double : Bellekte 8 Byte ter tutar. 1.7E-308 ile 1.7E308 aralığında değer alır. Hassasiyet 15-16 basamaktır.

218.1 , -5.2 , 4.0

Bilimsel gÖsterim biçimi 2.5*103 = 2.5E3 2.5*10-3 = 2.5E-3

2.2.3 Char Tip
Char : Karakter : Alfanumerik karakterleri içerir.
'5' , '*' , 'K'

2.3 Sabitler (CONST)

#include
main()

const float PI=3.14; Tanımlama kısmı
float r, Alan;
scanf("%f",r);
alan := PI*r*r;
printf(('Alan = %f', alan);

CONST (sabit) : Değeri programın çalışması boyunca değiştirilemez. Kullanım biçimi
const tip Belirleyici=değeri;
const float PI=3.14;
Tip belirtilmez ise tamsayı kabul edilir.

2.4 Değişkenler
Değeri programın çalışması boyunca değiştirilekir. Kullanım biçimi:
Tip Belirleyici ;
int i;
float alan;

2.5 Belirleyiciler (Identifier)
Bileşenlere isim verme. (Sabit, değişken, altprogram, etiket, tipler (kullanıcı tanımlı)).

2.5.1 Kısıtlamalar
. İlk karakteri rakam olamaz
. Sadece harfler, rakamlar ve _ (underscore) karakterinin birleşiminden oluşabilir.
. C diline ait saklı (reserved) sÖzcükler kullanılamaz.
. En fazla 31 karakter olabilir.
. Küçük - büyük harf ayırımı vardır.

2.5.2 isimlerin Seçimi
. Belirleyicinin kullanım amacına uygun anlamlı isim seçin. (Hungarian notation)
. Ne fazla kısa ne de fazla uzun olsun. 3 - 10 karakter uzunluğunda olmasını alışkanlı edinin.
2.6 Matematiksel ifadeler
Matematiksel ifadeleri günlük hayattaki biçimde bilgisayarda yazamadığımız için belli bir kurallar uymamız gerekir. Kullandığımız matematiksel işlemler ve anlamları şÖyledir:
+ , - , * , / toplama, çıkarma, çarpma, bÖlme
% tamsayı bÖlme sonucundaki kalanı verir (modulus)
7. / 2 ---> 3.5 (nokta sayının gerçel yorumlanmasını sağlar)
7 / 2 ---> 3 (sayılar int kabul edilip sonuçta int tipine dÖnüştürülür)
7 % 2 ---> 1
2 % 7 ---> 2
2 / 7 ---> 0
Matematiksel ifadeler hesaplanırken izlenen adımlar:
1. Önce parantez içindeki ifadeler hesaplanır. İçiçe parantezler var ise hesaplamaya en içteki parantezden başlanır.
2. ilk Önce * , / ve % işlemleri daha sonra + ve - işlemleri yapılır.
Öncelik sırası aynı olan işlemlerde hesaplama soldan sağa doğru yapılır. 5./2*3 --> 7.5


Bir C Programının Genel Yapısı

başlık dosyaları. Kullanılan deyimler ile ilgili
main()

sabitler ; sabitlerin tanımlama bÖlümü
değişkenler; değişkenleri tanımlama bÖlümü
deyimler; Program gÖvdesi


2.7 Atama Deyimi (Assignment)
Bir değişkene bir değer(sabit, değişken, ifade) vermek.
DeğişkenAdı = değer;
x = 8 ;
y = x + 15 ;
y = (8 - x) / (2 - x) ;


Örnek 2.7.1: 5x2+2 fonksiyonunun x=4.8 noktasındaki değerini
main()

float x, y ;
x = 4.8;
y = 5 * x * x + 2;

Örnek 2.7.2: Vize ve final notlarınından geçme notu
main()

float vize, final, ort;
vize = 50;
final = 60;
ort = vize * 0.4 + final * 0.6;

Örnek 2.7.3: 1998 yılına kadar geçen gün sayısı
main()

float gun;
int yil = 1996;
gun = 365 * (yil - 1);
gun = gun + (yil -1 ) / 4;



2.8 printf işlevi
Program içinde istenen değerleri çıktı birimlerine gÖndermek için kullanılır. Normal kullanımında çıktı birimi olarak ekran kabul edilir. Kullanım biçimi:

prinf( kontrol, )
ile belirtilen bilgiye gÖre parametreleri yazar. Kontrol metini iki kısımdan oluşur.
o sıradan karakterler: doğrudan yazılırlar.
o dÖnüşüm/biçim belirleyici karakterler: Değerlerin nasıl yazılacağı bildirilir.

printf(" sonuç = %d", k);
--- integer değer yazılacaktır
--------- ekrana aynen aktarılır

DÖnüşüm belirlemek için Önce % karakteri ve ardından dÖnüşümün nasıl
olacağını belirten karakter verilir. Bu karakterlerden bazıları:

d : decimal (integer)
u : unsigned decimal
c : char (tek karakter)
s : string
e : float/double sayıyı bilimsel gÖsterimde yaz
f : float/double sayıyı mmm.nnnnn biçiminde yaz
ld : long integer
lu : unsigned long integer
Le,Lf : long double

ESC dizileri : \n : satır başı, \a : zil , \t : tab, \b : bir karakter geri


program parçası ekranda gÖrünen / imleçin konumu
i = 5 ;
printf("%d",i) ; 5
printf("'i=%d",i) ; i=5
printf("i=") ;
printf("%d",i) ; i=5 -

printf("i=\n") ; i=
printf("%d",i) ; 5 alt satıra geçer

printf('i=%d\n",i) ; i=5 alt satıra geçer

printf("%d - %d",i, 5*i); 5 - 25



Biçimli yazdırma
% karakteri ile dÖnüşüm karakteri arasına aşağıdaki karakterler de kullanılabilir.

- : sola dayalı yaz
m : yazılacak değer için ayırılan alan
n : değerin kaç karekteri yazılacağı

s = "ABCDEF"
printf("%10s ",s); . . . . A B C D E F

printf("%10.3s ",s); . . . . . . . A B C

x = 128.5 ;
printf("%7.2f",x) ; # 128.50

x = 85.47 ;
printf("%6.3f",x) ; 85.470

printf("%6.1f",x) ; ## 85.5

Örnek 2.8.1 : Yarıçapı belli dairenin alanını hesaplayan programı yazınız. (ilk yazılan program)
#include
main()

const float PI=3.14;
float r, alan;
r = 7;
alan := PI*r*r;
printf(('Alan = %f', alan);


Örnek 2.8.2 : En fazla dÖrt basamak olabilen sayının basamak değerlerini yazdır. % ve / işlemlerinin kullanımı.
#include
main()

int i,y;

y=1985;
i= y / 1000;
printf("%d",i);
y= y-i*1000;
i= y / 100;
printf(" %d",i);
y = y-i*100;
i= y / 10;
printf(" %d",i);
y = y-i*10;
printf(" %d\n",y);
i = 1985;
printf("%d ",i / 1000);
printf("%d ",(i / 100) % 10);
printf("%d ",(i / 10) % 10);
printf("%d\n",i % 10);


Örnek 2.8.3: ax2+bx+c=0 tipi bir denklemin kÖklerini veren programı yazınız.
Girdi : a, b ve c katsayıları
Çıktı : denklemim kÖkleri
Algoritma :
1. a, b ve c katsayılarını oku.
2. Delta= değerini hesapla.
3. x1 ve x2 değerlerini hesapla.
4. KÖkleri yaz.

Programın kodlanması:

#include /* printf işlevi için */
#include /* sqrt işlevi için */
main()

float a, b, c;
float x1, x2;
float d;

a = 1;
b = -3;
c = 2;
d = b * b - 4 * a * c;
x1 = (-b + sqrt(d)) / (2 * a);
x2 = (-b - sqrt(d)) / (2 * a);

printf("KÖkler = %f , %f",x1, x2);

C dilinde karekÖk almak için bir deyim yoktur. Örnekte bunu yerine getiren C diline eklenmiş olan sqrt() fonksiyonu kullanılmştır. Aşağıda buna benzer artık C derleyecilerinde standart olmuş bazı fonksiyonlar verilmiştir. Bu işlevler math.h başlık dosyasında tanımlıdır.
Fonksiyon x ,y Sonuç
abs(x) int int x'in mutlak değeri
fabs(x) double double x'in mutlak değeri
pow(x, y) double double xy
sqrt(x) double double x'in karekÖkü
exp(x) double double ex değeri
log(x) double double ln(x) değeri
log10(x) double double log10(x) değeri
ceil(x) double double x ten büyük ilk tamsayı
floor(x) double double x ten küçük ilk tamsayı


Örnekler:
ceil(5) 5
ceil(5.2) 6
ceil(-5.2) -5
floor(5) 5
floor(5.2) 5
floor(-5.2) -6

2.9 scanf İşlevi
Klavyeden veri okumak için kullanılır. Yapı olarak printf işlevi ile hemen hemen aynıdır. Kullanım biçimi:

scanf( kontrol, )

Girilen karakterler metininde belirtilen biçimlere gÖre değişkenlere aktarılır.
Değişkenler işaretçi tipinde olmalıdır. Yani parametre olarak değişkenin adresi gÖnderilmelidir.
Ayırıcılar boşluk, tab, enter

scanf("%f %f %f ", &a, &b, &c);

scanf işlevinin değeri
0 ise hiçbir değişkene değer atanmamış
>0 ise başarılı bir şekilde değer atanan değişken sayısı
int a,b,c;
float m,n;
scanf("%d", &a); Klavyeden tamsayı okur. Girilen değer a değişkenine aktarılır.
scanf("%d %d",&a,&b) Klavyeden girilen ilk değer a değişkenine, ikinci değer b değişkenine aktarılır.
scanf("%f %d", &m, &a); Klavyeden ilki gerçel, ikincisi tamsayı olmak üzere iki değer okur.

İkinci dereceden denklem çÖzümünün yapıldığı Örnekte katsayıları klavyeden okutmak istersek

scanf("%f %f %f ", &a, &b, &c);

Farklı kullanıcı arayüzünde yazarsak

printf(´Katsayıları sırasıyla giriniz (a b c) :´ ); scanf("%f %f %f ", &a, &b, &c);

printf(´a katsayısını giriniz : ´); scanf(´%f´, &a);
printf(´b katsayısını giriniz : ´); scanf(´%f´, &b);
printf(´c katsayısını giriniz : ´); scanf(´%f´, &c);

Örnek 2.9.1: Vize ve final notlarınından ortalamayı hesaplayan programda değerlerin klavyeden okunmuş hali.
main()

float vize, final, ort;
printf(´Vize notunu giriniz ´); scanf(´%f´, &vize);
printf(´Final notunu giriniz ´); scanf(´%f´, &final);
ort = vize * 0.4 + final * 0.6;
printf(´Ortalaması = &f\n´, ort);


2.10 Mantıksal ifadeler
Sonucu Doğru veya Yanlış olan ifadelerdir. Sonuç sıfır ise yanlış aksi halde doğru kabul edilir.
İlişkisel işleçler(operatÖr) : iki değer arasındaki ilişkiyi test etmek için kullanılır.
işleç anlamı
> büyük
>= büyük - eşit
== eşit
< küçük
y Doğru
x < y Yanlış
x !=y Doğru

Mantıksal işleçler : İki mantıksal ifade arasındaki ilişki üzerindeki ilişkide kullanılır.
! DEĞİL (NOT)
&& VE (AND)
|| VEYA (OR)

(X>0) && (X>Y)
(X>0) || (Y>0)

İfadelerde işleçlerin yürütülme sırası
işleç Önceliği
( ) en yüksek (ilk yürütülür)
!
*, /, %
+, -

==, !=
&&, ||
= en düşük (son yürütülür)
= işleci sağdan sola, diğerleri soldan sağa doğru yürütülür.
GÖrüldüğü gibi ifadelerde matematiksel ve mantıksal işlemler bittikten sonra ilişki test edilir.
X=50, Y=80, Z=45 için
( ( X / 4 + Y / 4 + Z / 2 ) >= 50 ) && ( Z >= 50 )








3 - DÖngü ve Koşul Deyimleri

Programlar (algoritmalar) üç temel blok kullanılarak gerçekleştirilebilirler. Bunlar; ardarda, bir koşula bağlı olarak ve sonlu sayıda yineleme (dÖngü) dir.

3.1 Koşul Deyimleri

Birkaç seçenekten birini seçmek veya bir deyimin bir koşula bağlı olarak işlemek için kulanılır.


3.1.1 if-then-else Deyimi

if ()
blok_doğru;
else
blok_yanlış;

Mantıksal ifade doğru ise blok_doğru, yanlış ise else sÖzcüğünden sonraki blok_yanlış yürütülür. else kısmı seçimlidir, gerekmiyorsa kullanılmayabilir.


Örnek 3.1. 1.1 Girilen sayının tek/çift olduğunu yazan program
#include
main()

int i;
scanf("%d", &i);
if ( i % 2 == 1)
printf("Tek");
else
printf("Çift");


Bileşik (Compound) Deyimler

ve karakterleri ile sınırlandırılmış bir dizi deyimden oluşur.

i = 5;
j = i/2;
k = i+1;


Eğer bloklarda birden fazla deyim kullanmak gerektiğinde bileşik deyim kullanılır.

if (yil % 4 == 0)
subat =29;
gunyil = 366;

else
subat =28;
gunyil = 365;

Örnek 3.1.1.2 : İkinci dereceden denklemin kÖklerinin bulunması.

if (delta='0') && (c, 0)
c = c + a;
b = b - 1;

printf(´Sonuç = &d\n´, c);



Örnek 3.2.1.3: Girilen sayının faktoriyelini hesaplayan programı yazınız.

1. n değerini oku
2. F=1
3. n >1 olduğu sürece tekrarla
.3.1. F=F*n
3.2. n= n-1
4. F değerini yaz
main()

int n;
long f;
printf (´sayıyı giriniz ´); scanf(´%d´, &n);
f = 1;
while (n > 1)
f = f * n;
n = n - 1;

printf(´Sonuç = &d\n´, f);


Örnek 3.2.1.4: Klavyeden girilen sayıları oku. Sayıların toplamı 21'den büyük veya eşit olduğu zaman dur.
main()

int i, j = 0;
while (jr / (mükemmel sayı = tam bÖlenlerin toplamı sayının kendisine eşit)br / br / Örnek 3.2.1.7 : Girilen tamsayının kaç basamaktan oluıştuğunu sÖyleyen programı yazınız.br / br / Örnek 3.2.1.8 : Girilen tamsayı içerisinde kaç tane 1 olduğunu sÖyleyen programı yazınız.br / br / Örnek 3.2.1.9: Girilen tamsayının son üç basamağını yuvarlayan programı yazınız.br / son üç basamağı >=500 > 1000 e, = 0)
not_top = not_top + not;
ogr_say = ogr_say + 1;
printf´Sıradaki Öğrencinin notu = ´); scanf(´%d´, ¬);



3.2.2 For Deyimi

for (ifade1 ; ifade2 ; ifade3 )
ifade;

ifade2 doğru ( veya farklı 0) olduğu sürece ifade yürütülür (bitiş koşulu).
DÖngünün ilk adımından Önce ifade1 yürütülür ( başlangıç adımı).
DÖngünün her adımında ifade3 yürütülür (artış miktarı).

for (i = 1; i < 5; i++)
printf("%d ",i);


ifade1, ifade2 ve ifade3 seçimliktir. ifade2 belirtilmez ise herzaman
doğru olduğu ( == 1 ) kabul edilir. Yani sonsuz dÖngü oluşur.

for (i = 1; ; i++)
printf("%d ",i);


Örnek 3.2.2.1: 1'den 100'e kadar olan sayıların toplamı.

j =0;
for (i=1; ihata);

printf ("Sonuç = %f\n", x);
printf ("f(x) = %f\n", fn(x));


double fn(double x) /* işlevin değeri */

return x*x-2;


double fnt(double x) /* işlevin türevinin değeri */

return 2*x;



Örnek :4.11: İki sayının ortak katlarının en küçüğünü veren işlevi yazınız.

#include
long okek(long, long);
main()

long i, j;
clrscr();
printf("İki tamsayı giriniz :");
scanf("%ld%ld", &i, &j);
printf("sayıların okeki = %ld \n" okek(i, j));



long okek(long p, long q)
/* p < q olmali. Degil ise yerlerini değiştir. */

long i, k;
if (p>q)
i=p;
p=q;
q=i;


/* p nin Öyle bir katını bul ki q sayısına tam bÖlünsün
2 sayısından itibaren taranmaya başlanabilir fakat
p/q yeterli
*/

i = q / p;
do
k = p*i;
i = i+1;
while ( k % q != 0);
return k;


Örnek :4.12: İstenen sayıdaki asal sayıyı listeleyen programı yazınız.

#include

int asal(int);
main()

int i ; /* asal olup olmadığı sınanacak sayılar */
int kac; /* ilk kaç asal sayının listeleneceği bilgisi */
int j; /* listelenen asal sayıların adetini tutar */

clrscr();
printf("ilk kaç asal sayı listelenecek : ");
scanf("%d", &kac);


/* for deyiminde ifade3 kısmında dÖngü değişkeni yerine
farklı bir değişkenin değeri değiştiriliyor. DÖngü değişkeni
ide incelenen sayı asal ise arttırılıyor
*/

i = 2;
for (j = 1; j karakteri yaz/yazma */
char *s;

clrscr();
gets(s);
yaz = 1;
for (i = 0; i çaldı zil Ali

İki Dizginin Karşılaştırılması

C dilinde diziler doğrudan karşılaştırılamazlar. Her bir elemanını ayrı ayrı karşılaştırılmalıdır. Küçüklük-büyüklük bilgisi ASCII tabloda Önce-sonra bulunma bilgisine Özdeştir. Karşılaştırma amacıyla strcmp(dizgi1, dizgi2)
işlevi kullanılır. İşlev üç değer alır.
0 ise dizgi1 > dizgi2

Örnek 6.1.5:
int main()
char *s1 = "aaa", *s2 = "aba;
int i;
i = strcmp(s1, s2);
if (i > 0)
printf("s1 büyük \n");
else if (i/ Enumerated (Sıralı, Numaralandırılmış) Tiplerbr / br / Programın okunabilirliğini arttırmak için değerlerin sıralı bir küme olarak tanımlanması.br / br / enum sabit adı ,... ;br / br / değer : sabite otomatik atanan değer. Belirtilmez ise 0'dan başlar. Sıradaki sabit Öncesinin bir fazlasına eşittir.br / br / Belirtilen tipte tanımlı bir değişken ancak listedeki değerleri alır.br / br / enum renk BEYAZ, SARI, SIYAH;br / br / tanımlaması ile oluşan enum renk tipinde BEYAZ 0, SARI 1 ve SIYAH 2 değerlerine eşit sabitlerdir.br / Listedeki sabitler belirkeyici olmalıdır. Sayısal, karakter ve string bilgi yazılamaz.br / enum renk = "Beyaz", "Sari"; X br / enum renk = 0, 1, 2; Xbr / br / . İlişkisel işleçler tanımlıdır. Beyaz < Siyah, Sari > Beyaz

Bu tip değişkenler switch ve for deyimlerinde kontrol değişkeni olarak kullanılabilir.

Bu tipte bir değişken bilinen yapıda tanımlanır.

enum renk BEYAZ, SARI, SIYAH;
enum renk a;

a değişkeni BEYAZ, SARI ve SIYAH değerlerinden birini alabilir.

Örnek 7.2.1: enum kullanımı.
main()


enum gunler PAZAR,PAZARTESI,SALI,CARSAMBA,PERSEMBE,CUMA,CUMAR TESI ;
enum gunler gun;

clrscr();

for (gun = PAZAR; gun > 4;
printf("/%4d", i+1970);




Örnek 8.1.7
unsigned swap(unsigned) : gÖnderilen tamsayının düşük ile yüksek sekizlisinin yerini değiştirilmişini verir
unsigned max(unsigned) : gÖnderilen tamsayının düşük sekizlisi ile yüksek sekizlisinden büyüğünü verir

main()

unsigned i, j;

i = 0xAA11;
clrscr();
printf("%x %x %x\n", i, swap(i), max(i));

getch();


unsigned swap(unsigned a)

return (a>>8) | (a 8;
m = (lo>hi) lo:hi;
return m;



Örnek 8.1.8: Aşağıdaki işlevlerin gerçekleştirilmesi.

void binary_yaz(unsigned x); x tamsayısının 2li düzendeki karşılığını yazar
unsigned copybits(x, b, n) x sayısının sağdan b. bitinden itibaren n bitini verir
unsigned ters(x, b, n): x sayısının sağdan b. bitinden itibaren n bitini tersini alır
unsigned rdon(x, n): x sayısını n bit sağa dÖndürür


/* Programın başlangıcı */
typedef unsigned int word; /* kolaylık i.in */

void binary_yaz(word);
word copybits(word x, word b, word n);
word ters(word x, word b, word n);
word rdon(word x, word n);
word sdon(word x, word n);

main()

word i, j;

clrscr();

for (i=16; i>0; i--)
printf("%x", i-1);
printf("\n");

i = 0xee;
binary_yaz(i); printf("\n");
j = copybits(i, 5, 4); binary_yaz(j); printf(" copybits(i, 5, 4) \n");

j = ters(i, 5, 4); binary_yaz(j); printf(" ters(i, 5, 4)\n");

j = rdon(i, 4); binary_yaz(j); printf(" rdon(i, 4)\n");

getch();


word copybits(word x, word b, word n)
/* x sayısının sağdan b. bitinden itibaren n bitini verir. */
/* ilk bitin numarası 0 */

word i;

i = x >> (b + 1 - n); /* ilgili bit bloğunun sağa dayalı olacak */
/* biçimde kaydır. */

i = i - ~(~(0) adi);
printf("Adresi : "); puts(z->adres1);
printf(" : "); puts(z->adres2);
printf("Telefonu : "); puts(z->tel);
printf("Borcu : "); printf("%.0f\n", z->borc);


9.6 Dinamik bellek kullanımı


Üç boyutlu dizi tanımı ve kullanımı.

Üç boyut --> Gerilim - Akım - Zaman

Örnek 9.6.1: Tek boyutlu diziyi üç boyutlu gibi kullanma.

/* Üç boyutlu dinamik dizi kullanımı. Her boyut farklı uzunlukta
Dizi tek boyutlu gÖzüküyor. Ancak indis, hesaplanarak bulunuyor

Yani

*(a + i*y*z + j*z +k)
^ ^
^ ^ 3. boyutun uzunluğu
^2. boyutun uzunluğu

şeklinde kullanılabilir.
*/

#define x 4
#define y 5
#define z 9
void matris_yaz(int *);
main()

int *a;
int i, j, k;

a=(int *) malloc(x * y * z * sizeof(int)); /* eleman sayisi kadar yer ac */

clrscr();

for (i=0; i
İlişkili Etiketler

»Cizgilerin-dili-nedir-ne-anlama-gelir3 / »Cizgilerin-dili-nedir-ne-anlama-gelir / »Eski-sinif-turk-dili-ve-edebiyati-og / »Turk-dili-ve-edebiyati-dersi-gunluk-planlar /
odevindir Ana Sayfam Yap Sık kullanılanlara ekle C++ Dili. Paylaş

Odevindir