ALGORİTMA VE PROGRAMLAMA II -...

37
ALGORİTMA VE PROGRAMLAMA II HAFTA#13 Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi YZM 1106

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

9. BÖLÜM

C Programlama

Hazır Fonksiyonlar

3

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

6

Örnek 1: atox() Dönüşüm Fonksiyonları

YZM 1102 – Algoritma ve Programlama II

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.

8

Örnek 2: rand() Fonksiyonu

YZM 1102 – Algoritma ve Programlama II

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

11

Örnek 3: rand() ve srand() Fonksiyonu

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

16

Örnek 4: atexit() Fonksiyonu

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.

19

Örnek 5: Yuvarlama Fonksiyonları

YZM 1102 – Algoritma ve Programlama II

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

23

Örnek 6: Trigonometrik Fonksiyonlar

YZM 1102 – Algoritma ve Programlama II

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

27

Örnek 7: time() Fonksiyonu

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

31

Örnek 9: ctime() Fonksiyonu 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

33

Örnek 10: clock() Fonksiyonu

YZM 1102 – Algoritma ve Programlama II

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.

35

Örnek 11: difftime() Fonksiyonu

YZM 1102 – Algoritma ve Programlama II

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

37

İYİ ÇALIŞMALAR…

YZM 1102 – Algoritma ve Programlama II