ALGORİTMA VE PROGRAMLAMA II -...
Transcript of ALGORİTMA VE PROGRAMLAMA II -...
ALGORİTMA VE PROGRAMLAMA II
HAFTA#13
Celal Bayar Üniversitesi Hasan Ferdi Turgutlu
Teknoloji FakültesiYZM 1106
• Hazır Fonksiyonlar
• Standart Kütüphane Fonksiyonları (stdlib.h)
• Matematik Kütüphanesi Fonksiyonları (math.h)
• Tarih/Saat Fonksiyonları (time.h)
Genel Bakış…2
YZM 1102 – Algoritma ve Programlama II
Standart Kütüphane Fonksiyonları
(stdlib.h)4
• Temel Fonksiyon Türleri
• Veri dönüşümü
• Bazı matematiksel işlemler
• Program sonlandırma
• Diğer işlemler
YZM 1102 – Algoritma ve Programlama II
Standart Kütüphane Fonksiyonları
(stdlib.h) - atox()5
• Katarların(string) Farklı Türlere Dönüşümü
YZM 1102 – Algoritma ve Programlama II
Prototip Açıklama
int atoi(*char); Bir katarı tam sayıya çeviri
float atof(*char); Bir katarı reel sayıya çevirir
long atol(*char); Bir katarı uzun tam sayıya çevirir
double atod(*char); Bir katarı reel sayıya çevirir
Standart Kütüphane Fonksiyonları
(stdlib.h) - rand()7
• rand() fonksiyonu rasgele sayı üretmek için kullanılır.
• Rasgele sayı üretimi genelde simülasyonlarda ve
istatiksel hesaplamalarda kullanılır.
• Sembolik sabit RAND_MAX, stdlib.h içinde
tanımlanmıştır ve değeri 215-1 dir.
YZM 1102 – Algoritma ve Programlama II
Prototip Açıklama
int rand(void); Sıfırdan int genişliğine kadar (32767) sayı üreten
bir fonksiyondur. Moduler aritmetik ile belirli bir
aralıkta tam sayı verebilir.
Standart Kütüphane Fonksiyonları
(stdlib.h) – rand() ve srand()9
• rand() fonksiyonu rasgele sayı üretmeye bir başlangıç
değeri ile başlanır buna seed value (tohum değeri) denir.
• rand() fonksiyonu her çağırıldığında aynı seed
değerinden başlayacağı için aynı sayı zinciri elde edilir.
• srand() fonksiyonu ise bu seed değerini değiştirmeye
yarar.
YZM 1102 – Algoritma ve Programlama II
Prototip Açıklama
void srand(unsigned seed); Sıfırdan int genişliğine kadar (32767) sayı
üreten bir fonksiyondur. Moduler aritmetik
ile belirli bir aralıkta tam sayı verebilir.
Standart Kütüphane Fonksiyonları
(stdlib.h) – rand() ve srand()10
• Bir programın her çalışmasında farklı bir sayı zincirinin
elde edilmesi için srand() fonksiyonunun rasgele sayı
üreticisinin seed değerini programın her çalışmasında
farklı bir değer yapması gerekir.
• Bunun için çoğu zaman standard time() fonksiyonundan
faydalanılır.
• Aşağıdaki ifade ile program her defasında farklı bir sayı
üretecektir.
srand(time(0));
YZM 1102 – Algoritma ve Programlama II
Standart Kütüphane Fonksiyonları
(stdlib.h) – rand() ve srand()12
• Örnekler:
• İki sayı arasında random sayı üretmek
• Örn: 20-100 arasında…
• Zar atma: Atılan her zar sonrası değerini bulan program
• Barbut oyunu: Oyuncu sayısı girilerek her kişi için atılan
zar değerini yazan program
• Sayısal Loto: Müşteri için otomatik sayısal loto dolduran
program
YZM 1102 – Algoritma ve Programlama II
Standart Kütüphane Fonksiyonları
(stdlib.h) – Program Sonlandırma 13
• Normal şartlarda main() fonksiyonu içerisinde alt
programlar ve/veya fonksiyonlar çağırılır ve main
programda return satırına ulaşıldığında veya “}”
karakteri ile karşılaşıldığında uygulama sonlandırılır.
• Standart kütüphane bize üç farklı fonksiyon ile program
sonlandırma imkanı verir:
• exit();
• abort();
• atexit();
YZM 1102 – Algoritma ve Programlama II
Standart Kütüphane Fonksiyonları
(stdlib.h) – Program Sonlandırma 14
• exit(0);
• Programın normal biçimde sonlandırılmasını sağlar.
• Fonksiyon girdi olarak 0 parametresi alarak
kullanıldığında programın başarılı sonlandığını, farklı bir
parametre alarak kullanıldığında ise başarısız sonlandığını
işletim sistemine bildirir.
• abort();
• Programın beklenmedik bir şekilde sonlandırılması
durumlarında kullanılır.
• POSIX sinyal olan SIGABRT gönderir.YZM 1102 – Algoritma ve Programlama II
Standart Kütüphane Fonksiyonları
(stdlib.h) – Program Sonlandırma 15
• atexit(0);
• Esasında programı sonlandıran bir komut değildir.
• Fakat ana program sonlandığında işletilecek programı
verir.
• 32 adet programı sıralar ve en son girilen program ilk
önce çalışır.
YZM 1102 – Algoritma ve Programlama II
Matematik Kütüphanesi Fonksiyonları
(math.h)17
• Matematiksel Fonksiyon Türleri
• Yuvarlama Fonksiyonları
• Mutlak Değer Fonksiyonları
• Logaritmik Fonksiyonlar
• Trigonometrik Fonksiyonlar
• Ters Trigonometrik Fonksiyonlar
YZM 1102 – Algoritma ve Programlama II
Matematik Kütüphanesi Fonksiyonları
(math.h) – Yuvarlama Fonksiyonları18
YZM 1102 – Algoritma ve Programlama II
Prototip Açıklama
double floor(double x); x reel sayısını kendisinden küçük ya da eşit
tamsayıya yuvarlar.
double ceil(double x); x reel sayısını kendisinden büyük ya da eşit
tamsayıya yuvarlar.
Matematik Kütüphanesi Fonksiyonları
(math.h) – Mutlak Değer Fonksiyonları20
YZM 1102 – Algoritma ve Programlama II
Prototip Açıklama
int abs(int x); x tamsayısının mutlak değerini hesaplar
double fabs(double x); x reel sayısını kendisinden büyük ya da eşit
tamsayıya yuvarlar.
long labs(long x); long tipindeki x tamsayısının mutlak değerini
hesaplar
Örnek:
abs(-456) 456
fabs(-145.3) 145.3
Matematik Kütüphanesi Fonksiyonları
(math.h) – Logaritmik Fonksiyonlar21
YZM 1102 – Algoritma ve Programlama II
Prototip Açıklama
double log(double x); Verilen x değerinin e tabanına göre doğal
logaritmasını hesaplar. Matematikte ln(x)
olarak bilinir ve logaritması alınan değerler
sıfır ve sıfırdan küçük olamaz.
double log10(double x); Verilen x değerinin 10 tabanına göre
logaritmasını hesaplar. Yine bu fonksiyonun x
değerleri sıfır ve sıfırdan küçük olamaz.
Örnek:
log(4.0) 1.386294
log10(4.0) 0.602060
Matematik Kütüphanesi Fonksiyonları
(math.h) – Trigonometrik Fonksiyonlar22
YZM 1102 – Algoritma ve Programlama II
Prototip Açıklama
double sin(double x); radyan cinsinden girilien x sayısının sinüs
değerini hesaplar
double cos(double x); radyan cinsinden girilien x sayısının kosinüs
değerini hesaplar
double tan(double x); radyan cinsinden girilien x sayısının tanjant
değerini hesaplar
Örnek:sin(3.14) 0.001593
cos(3.14) 0.999999
tan(3.14) 0.001593
Matematik Kütüphanesi Fonksiyonları
(math.h) – Ters Trigonometrik Fonksiyonlar24
YZM 1102 – Algoritma ve Programlama II
Prototip Açıklama
double asin(double x); sinüs değeri x olan açıyı gönderir. Açı -pi/2 ile
pi/2 arasındadır.
double acos(double x); kosinüs değeri x olan açıyı gönderir. Açı -pi/2
ile pi/2 arasındadır.
double atan(double x); tanjant değeri x olan açıyı gönderir. Açı -pi/2
ile pi/2 arasındadır
Örnek:asin(0.5) 0.523599
acos(0.5) 1.047198
atan(0.5) 0.463648
Tarih/Saat Fonksiyonları (time.h)
25
• Yazılım uygulamaları içerisinde tarih ve saatle ilgili
işlemleri sıkça yaparız.
• C dilinde, tarih ve saat fonksiyonlarının bildirimleri,
sembolik sabitler ve standart yapılar <time.h> başlık
dosyasında tanımlanmıştır.
• Bu fonksiyonlar üç temel işlevi yerine getirir:
• Takvim (Tarih) bilgileri
• Yerel Saat
• Saat Dilimleri
YZM 1102 – Algoritma ve Programlama II
Tarih/Saat Fonksiyonları (time.h) –
time() Fonksiyonu 26
• time() fonksiyonu 01/01/1970 tarihinden, programın
çalıştığı tarihe ve saate kadar geçen sürenin saniye cinsinden
değerini gönderir. Genel bildirimi aşağıdaki gibidir:
time_t time(time_t *zaman);
• time_t sayısal bir tip (genellikle long int) olup zaman
bilgisini temsil eder.
• zaman tarih bilgisini tutan işaretçi tipinde bir değişkendir.
YZM 1102 – Algoritma ve Programlama II
Tarih/Saat Fonksiyonları (time.h) –
asctime(), ctime(), localtime() Fonks.28
YZM 1102 – Algoritma ve Programlama II
Prototip Açıklama
char *asctime (const struct tm
*zmn_g);
zmn_g işaretçisinin işaret ettiği veriyi, daha
anlaşılabilir bir formatla katar bilgisine çevirir.
zmn_g işaretçisi, gmtime() ve localtime()
fonksiyonlarının döndürdüğü, tm yapısını gösterir.
Geri döndürelen katarın genel formatı:
Www Mmm dd hh:mm:ss yyyy
şeklindedir. Www haftanın günü, Mmm ay, dd ayın
günü hh:mm:ss saat bilgisini ve yyyy yıl bilgisidir.
char *ctime (const time_t
*zaman);
Geriye anlaşılır formatta yerel zamanı tutan bir katar
döndürür. zaman, time_t tipinde bir uzun tamsayıdır.
Katarın formatı: Www Mmm dd hh:mm:ss yyyy
şeklindedir.
struct tm *localtime (const
time_t *zaman);
zaman'ı tm yapısına (yerel saat cinsinden) çevirir.
zaman genellikle time() fonksiyonu ile döndürülür.
Tarih/Saat Fonksiyonları (time.h) –
asctime(), ctime(), localtime() Fonks.29
YZM 1102 – Algoritma ve Programlama II
• Fonksiyonlarda kullanılan tm yapısı aşağıdaki gibidir:
struct tm {
int tm_sec; /* saniye, (0 - 59) */
int tm_min; /* dakika, (0 - 59) */
int tm_hour; /* saat, (0 - 23) */
int tm_mday; /* ayın günü, (1 - 31) */
int tm_mon; /* ay, (0 - 11), 0 = Ocak */
int tm_year; /* yıl - 1900 */
int tm_wday; /* haftanın günü, (0 - 6), 0 = Pazar */
int tm_yday; /* yılın günü,(0 - 365) */
int tm_isdst; /* gündüz (-1/0/1) */
};
30
Örnek 8: asctime() ve localtime()
Fonksiyonları ile Tarih Yazdırma
YZM 1102 – Algoritma ve Programlama II
Tarih/Saat Fonksiyonları (time.h) –
clock() Fonksiyonu32
YZM 1102 – Algoritma ve Programlama II
Prototip Açıklama
clock_t clock(void); Zaman tik-tak bilgisini döndürür.
CLK_TCK (clock ticks per second) makro sabit. Zaman
tik-takları ve zamanın saniye cinsinden
karşılığı arasında ilişkiyi tanımlar.
clock_t clock() fonksiyonunun kullandığı veri tipidir.
typedef long clock_t
Tarih/Saat Fonksiyonları (time.h) –
difftime() Fonksiyonu34
YZM 1102 – Algoritma ve Programlama II
Prototip Açıklama
double difftime (time_t
zaman1, time_t zaman2);
zaman2 - zaman1 farkını saniye
cinsinden hesaplar.
36
KAYNAKLAR
• N. Ercil Çağıltay ve ark., C DERSİ PROGRAMLAMAYA
GİRİŞ, Ada Matbaacılık, ANKARA; 2009.
• Milli Eğitim Bakanlığı "Programlamaya Giriş ve
Algoritmalar Ders Notları", 2007
• C Programlama Dili, Şerafettin ARIKAN
• Problem Solving and Program Design in C, Hanly, Koffman
• http://www.AlgoritmaveProgramlama.com
YZM 1102 – Algoritma ve Programlama II