BİLGİSAYAR TEMELLERİ VE PROGRAMLAMAYA GİRİŞ

Benzer belgeler
Program AkıĢ Kontrol Yapıları

Program Akış Kontrol Yapıları

Döngüler - Loops 4/9/2010. ENF-102 Jeoloji Giriş. Sayaç kontrollü bir döngüdeki temel öğeler. Sayaç (counter) Kontrollü Döngüler.

Döngüler - Loops 4/13/2011. ENF-102 Jeoloji Sayaç kontrollü bir döngüdeki temel öğeler. Sayaç (counter) Kontrollü Döngüler.

Mühendislik Fakültesi Elektrik-Elektronik Mühendisliği C Programlama 5. Bölüm Karar ve Çevrim Kontrol Yapıları

if (ad == "Sabri") Console.WriteLine("Merhaba Sabri. Ne zamandır gözükmüyodun...");

ALGORİTMA VE PROGRAMLAMA I

HSancak Nesne Tabanlı Programlama I Ders Notları

Akış Kontrol Mekanizmaları

BÖLÜM 6: KARŞILAŞTIRMALI KONTROL YAPILARI

Bölüm 4 C de Program Kontrolü

Internet Programming II

Algoritma ve Programlama: Karar Yapıları ve Döngüler

ESM-361 Mikroişlemciler. 3. Hafta Ders Öğretim Üyesi Dr.Öğr.Üyesi Ayşe DEMİRHAN

BMT 101 Algoritma ve Programlama I 7. Hafta. Yük. Müh. Köksal Gündoğdu 1

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Bölüm 3 Yapısal Programlama

DÖNGÜLER (LOOPS) while(), do-while(), for(), foreach()

Nesne Yönelimli Programlama

Temel Bilgisayar Bilimleri Ders Notu #4-1. kısım

BİL-142 Bilgisayar Programlama II

while(), do-while(), for() M.İLKUÇAR 2010 MAKU-MYO

PROGRAMLAMA DİLLERİ I

C dilinde if-else yapısı

/ C Bilgisayar Programlama Final Sınavı Test Soruları. Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : , 60 dak.

BİLGİSAYAR MÜHENDİSLİĞİ ALGORİTMA VE PROGRAMLAMA II 2.HAFTA SWİTCH (CASE), SAYAÇLAR, DÖNGÜLER,

BBS515 Nesneye Yönelik Programlama. Ders 3 Zümra Kavafoğlu

BMT 101 Algoritma ve Programlama I 8. Hafta. Yük. Müh. Köksal GÜNDOĞDU 1

BİLGİSAYAR PROGRAMLAMA. Algoritma ve Akış Şemaları

Hafta 9 C Dilinde Kontrol ve Döngü Yapıları

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-4 Döngü Yapıları. Yrd. Doç. Dr. Ümit ATİLA

YUVARLAMA FONKSİYONLARI

MTK467 Nesneye Yönelik Programlama. Hafta 4 - Döngüler Zümra Kavafoğlu

IF / ELSE IF / ELSE. Bu deyimler, koşullu işlem yapan deyimlerdir ve daima if deyimi ile başlar, else if veya else ile devam eder.

for döngüsü for (başlangıç değeri; şart; artım) ifade; for (başlangıç değeri; şart; artım) { ifadeler; }

Döngü ve Koşul Deyimleri

PROGRAMLAMAYA GİRİŞ DERS 2

8. Bölüm DİZİLER. tip dizi_ismi[eleman_sayısı]; Bütün diziler 0 ile baţlar.

BÖLÜM 7: DÖNGÜ KONTROL YAPILARI

Sınav tarihi : Süre : 60 dak. a) strstr b) strchr c) strcat d) strcpy e) strlen. a) b) d) e) 0

BİLGİSAYAR PROGRAMLAMA DERSİ

Programlamaya Giriş Karar Yapıları, Tekrarlı İfadeler(Döngüler)

HSancak Nesne Tabanlı Programlama I Ders Notları

BMÜ-111 ALGORİTMA VE PROGRAMLAMA AKIŞ KONTROLÜ YRD. DOÇ. DR. İLHAN AYDIN

BÖLÜM 2 C PROGRAMLAMADA AKIŞ KONTROLÜ. GOTO: C programında programın herhangi bir yerinden bir yerine şartsız olarak atlanmasını sağlayan komuttur.

5. Atlama, Karar ve Çevrim Kontrol Deyimleri

Hafta 4 Döngü Yapıları

JAVA DÖNGÜ DEYİMLERİ. For Döngüsü

Bu amaçla, if ve switch gibi karar verme deyimleri, for, while, do..while gibi döngü deyimleri kullanılır.

B02.6 Karar Verme, Eşitlik ve Bağıntı Operatörleri

Değişkenler, içerisinde tek bir değer tutabilen yapılardır. Örneğin haftanın günlerini değişkenlerde tutmak istersek, her bir gün adı için bir

Giris {\} /\ Suhap SAHIN Onur GÖK

BİLİŞİM TEKNOLOJİLERİ 6. SINIF DERS NOTLARI 2

disp VEYA fprintf KOMUTLARIYLA EKRANA MESAJ YAZDIRMA

MATLAB de. Programlama. Kontrol Yapıları. Döngü Yapıları. Doç. Dr. İrfan KAYMAZ Matlab Ders Notları

3/7/2011. ENF-102 Jeoloji 1. Tekrar -- Değişken Tanımlamaları (Definition) ve Veri Türleri (Data Type) Veri Tanımları ve Mantıksal Đşlemler

BIL1202 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ

Karakter katarları ile ilgili fonksiyonlar içerir Yerel kayan noktalı sayılar tanımlanır

Programlama Dilleri 3

Java da Program Denetimi ve Operatörler

Python Programlama Dili

DÖNGÜLER BMÜ-111 ALGORİTMA VE PROGRAMLAMA-I YRD. DOÇ. DR. İLHAN AYDIN

Dersin Sorumlusu: Yrd. Doç. Dr. Birol SOYSAL. Sunumları Hazırlayan: Doç. Dr. Bülent ÇAKMAK

Karşılaştırma İşlemleri ve Koşullu İfadeler

C# Yazım Kuralları ERCİYES. Ü. BİLGİSAYAR M. COMPUTER PROGRAMMING II 1 FEHİM KÖYLÜ

Gereksiz Kodlar. burada if deyiminin else bölümüne gerek var mı? İfade doğruysa zaten fonksiyon geri dönüyor. Bu aşağıdakiyle tamamen eşdeğerdir:

/ C Bilgisayar Programlama Yıliçi Sınavı Test Soruları. Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : , 60 dak.

Temel Bilgisayar Programlama

Programlama Dili Prensipleri. Lab Notları 4

Fonksiyonlar. C++ ve NESNEYE DAYALI PROGRAMLAMA 51. /* Fonksiyon: kup Bir tamsayının küpünü hesaplar */ long int kup(int x) {

Sınav tarihi : Süre : 60 dak. a) ABCDE b) BCDE c) ABCD d) kod hatalı e) BCD

BİLGİSAYAR PROGRAMLAMA

KONTROL YAPILARI JAVADA UC TURLU KONTROL YAPISI VARDIR BUNLAR İF ELSE İF ELSE İF SWİTCH YAPILARIDIR. IF ELSE YAPISI if (deger) { }else {

Bil101 Bilgisayar Yazılımı I. M. Erdem ÇORAPÇIOĞLU Bilgisayar Yüksek Mühendisi

Diziler. Yrd.Doç.Dr.Bülent ÇOBANOĞLU

YAPILAR BİRLİKLER SAYMA SABİTLERİ/KÜMELERİ. 3. Hafta

ALGORİTMA VE PROGRAMLAMA I

Döngü (Loop) Deyimleri / Veri Belirleyicileri / Matematiksel Fonksiyonlar

Javascript. 1) Notepad++ aşağıdaki kodları yazıp deneme.html olarak kaydedelim. 2) Biraz önceki sayfa sadece html kodların içeriyordu.

Ders 7: Döngüler. Giriş. 7.1 while Döngüsü

Nesne Tabanlı Programlama

BİLGİSAYAR PROGRAMLAMAYA GİRİŞ

Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : dak.

EBG101 PROGRAMLAMA TEMELLERİ VE ALGORİTMA

Eastern Mediterranean University Faculty of Arts & Sciences -- Department Of Mathematics BİLG213 BİLGİSAYAR PROGRAMLAMAYA GİRİŞ

Bölüm 2 - C ile Programlamaya Giriş

Pointer Kavramı. Veri Yapıları

Algoritma ve Programlamaya Giriş

Length: metin uzunluğunu yada diğer bir deyişle dizi elaman sayısını döndürür.

Algoritma ve Programlamaya Giriş II JAVA İLE PROGRAMLAMA. Muhammet BAYKARA

MAK 1005 Bilgisayar Programlamaya Giriş. Fonksiyonlar. Prof. Dr. Necmettin Kaya

BİL1001 Bilgisayar Bilimlerine Giriş 1

Döngü Komutları. Komutu. while Komutu Diğer Operatörler Bileşik Komut for Komutu. İçiçe Döngüler break ve continue Komutları

BLM 111 ALGORİTMA VE PROGRAMLAMA I

Algoritma ve Akış Şemaları

İNÖNÜ ÜNİVERSİTESİ MÜH. FAK. BİLGİSAYAR MÜH. BÖL. ALGORİTMA VE PROGRAMLAMA 1 DERSİ LAB. ÖDEVİ

C PROGRAMLAMA DİLİNE GİRİŞ

Bigisayar Programlama

C# Programlama Dili. İlk programımız Tür dönüşümü Yorum ekleme Operatörler

Transkript:

BİLGİSAYAR TEMELLERİ VE PROGRAMLAMAYA GİRİŞ Yrd.Doç.Dr. Emel ARSLAN earslan@istanbul.edu.tr

C Program Akış Kontrol Yapıları

Kontrol Komutları Normal şartlarda C dilinde bir programın çalışması, komutların yukarıdan aşağıya doğru ve sırasıyla işletilerek gerçekleştirilir. Ancak bazen problemin çözümü, bir yada birden fazla koşula bağlı olarak, yapılacak iş yada işlem adımlarına karar vermek suretiyle gerçekleştirilebilir. Bu amaçla C dilinde kullanılan kontrol komutları şunlardır: if deyimi? : üçlü şart operatörü (ternary conditional) switch çoklu seçim deyimi (multiple selection statement)

if deyimi Verilen durum yada koşula göre istenilen işlem yada işlemleri gerçekleştirmek için kullanılır. Değişik kullanım biçimleri vardır. Tek Alternatifli if Bu durumda koşulun sonucu DOĞRU (true), başka bir deyişle EVET ise; koşuldan hemen sonra gelen komut1 satırı veya satırları çalışır. Koşulun sonucu YANLIŞ (false), yani HAYIR ise; IF komutundan sonra gelen komut2 satırı çalıştırılır. Koşul doğru olduğunda birden fazla komut satırı çalışacaksa bu komutlar blok { - } içinde yazılmalıdır.

if deyimi İki Alternatifli if Bu durumda koşul doğru ise komut1 satırı veya satırları yanlış ise komut2 satırı veya satırları çalışacaktır. Birden fazla komut satırları için blok işareti { - } kullanılmalıdır.

if deyimi Örnek

? : Üçlü Şart operatörü Bu operatör üç adet operand alır. C diline özgü bir operatördür. Genel kullanım biçimi şu şekildedir: operand1? operand2 : operand3 operand1 ifadesinin sonucu doğru (true) ise operand2, yanlış (false) ise operand3 çalıştırılır. ortalama >= 60? printf( Geçti ) : printf( Kaldı );

Önemli bir nokta!!! Mantıksal işlemleri gerçekletirirken dikkat edilmesi gereken önemli bir nokta vardır. Bu da, mantıksal işlemlerde 0 (sıfır) YANLIŞ ı (FALSE) ifade eder, sıfırdan farklı herhangi bir değer DOĞRU yu (TRUE) ifade etmesidir. Bu durumda aşağıdaki kodun çıktısı ne olur?

switch çoklu seçim deyimi Bu deyim verilen ifadenin değerine göre verilen komut yada komut satırlarını çalıştırır. Verilen ifadenin değerinin sıralı giden (ordinal) olması gerekir. Bu ifade için kullanılacak değişken tipleri int ve char olabilir, float yada double gibi ondalık değerler olamaz. switch sözcüğünün yanındaki ifadenin değeri, blok içindeki case sözcüklerinin yanında verilen değerlerden hangisine uyuyorsa o satırdaki komut yada komutlar çalıştırılır.

switch - Örnek Program Görüldüğü üzere bu kodda bir problem var?

switch - Örnek Program Bir önceki kodda break sözcüğü yazılmadığı için program, uygun case sözcüğündeki komutu çalıştırdıktan sonra, sırayla geri kalan tüm komutları da çalıştırmıştı. Burda ise her bir case sözcüğüne break ifadesini ekledik. Bu sayede program uygun case sözcüğündeki komutu çalıştırdı ve switch bloğu sonlandı.

Döngüler (Loops) Bir programda bir komut parçasının belli koşullar gerçekleştikçe veya gerçekleşinceye kadar defalarca icra etmesi gerekebilir. Bu defalarca çalışmayı sağlayan komutlarına döngü (çevrim) yapıları denir. Döngü yapıları genelde karşımıza iki tür olarak çıkar. Çalışma sayısının belli olduğu durumlarda sayaç kontrollü döngüler, döngü sayısının değişken olduğu durumlarda ise koşullu döngüler kullanılır. C programlama dilinde sayaç kontrollü döngü yapısına for döngüsü, koşullu döngü yapısına while ve do-while döngüleri örnek olarak verilebilir.

goto komutu goto komutu programın akışının etiket ile gösterilen yere gitmesini sağlar. Fonksiyon veya döngü içerisinde kullanılabilir. Bunlar arasında kullanılmaz. if ve goto kullanılarak döngü oluşturulabilir. goto komutu programın yapısallığını ve okunabilirliğini azalttığı için programlamada pek tavsiye edilmez.

Sayaç kontrollü döngüler Eğer tekrar edecek işlemler birden fazla defa belli sayıda tekrar ediyorsa sayaç kontrollü döngü yapısı kullanılır. Sayaç aslında tekrar edilme işleminin ne kadar yapıldığını tutan bir değişkendir. Böyle sayaç kontrollü bir döngüde olması gereken temel öğeler şunlardır. Döngüde bir sayaç değişkeni olmalıdır. Bu değiken döngü sayacı olarak bilinir. Döngü sayacına bir atama ifadesiyle ilk değer verilir. Döngü sayacının değerinin sınır değere gelip gelmediği kontrol edilir. Döngünün gövdesinin her çalışmasından sonra, sayacın değeri bir artırma yada eksiltme işlemi ile değiştirilir.

Sayaç kontrollü döngüler Şimdi ekrana 10 kez kelime yazdıran programı döngülerle tekrar gerçekleştirelim. Görüldüğü gibi döngüler sayesinde printf() fonksiyonunu bir sefer kullanarak ekrana 10 kez kelime yazdırabildik. Artık bu işlemi 100 kerede tekrarlasak 1000 kerede tekrarlasak mevcut kod satırı sayısında bir değişiklik olmayacak.

Sayaç kontrollü döngüler Sayaç kontrollü döngü yapısının akış şeması ile gösterimi yandaki gibidir;

for döngüsü C programlama dilinde sayaç kontrollü döngü yapısı olarak for döngüsü kullanılmaktadır. Kullanımı aşağıdaki gibidir; C for (ilk_değer; devam_şartları; ara_işlemler) { Döngü_Bloğu } ilk_değer : Döngüye ilk defa girildiğinde burada belirttiğimiz komutlar icra edilir. Döngünün diğer icralarında bu işlem tekrarlanmaz. devam_şartları : Döngünün bir kere daha icra ettirileceği veya döngünün icrasına son verileceği buradaki koşul ifadeleri değerlendirilerek yapılır. Buradaki ifade doğru sonuç verdikçe döngü yenilenir. ara_işlemler : Döngünün her icrası sonunda uygulanacak işlemler burada belirtilir. For döngüsü altında tek bir satırlık kod yazıldığında blok parantezleri { } kullanmak zorunluluğu yoktur, ancak döngü için birden fazla komut yazılacaksa blok parantezleri { } kullanılmalıdır.

for döngüsü Örnek - 1 100 kişinin ismini sormamız gereken bir durumda 100 satırlık kod yazmak yerine bir döngü kullanarak aynı iş daha az satırda yapılabilir. Böyle bir durumda icra sayısı belli olduğu için sayaçlı döngü yapısı kullanmak daha uygundur. C char ad[100][20];... printf("1. kişinin adı :"); scanf("%s", ad[0]); printf("2. kişinin adı :"); scanf("%s", ad[1]); printf("3. kişinin adı :"); scanf("%s", ad[2]);...... printf("100. kişinin adı :"); scanf("%s", ad[99]); Döngüler olmasaydı, böyle bir durumda 100 satır yazmamız gerekirdi. char ad[100][20]; int i;... for (i=0; i<100; i++) { printf("%d. kişinin adı :", i+1); scanf("%s", ad[i]); } Döngüler kullanarak aynı işi daha az satırda yapabiliriz.

for döngüsü Örnek - 2 12'den 54'e kadar olan çift sayıların toplamını hesaplayan programı C programlama dilinde for döngüsünü kullanarak kodlayınız. include <stdio.h> int i, sonuc; main() { } sonuc = 0; for (i=12; i<54; i=i+2) { sonuc = sonuc + i; } printf("12'den 54'e kadar çift sayıların toplamı :%d", sonuc); Ekran Çıktısı : 12'den 54'e kadar çift sayıların toplamı :672

Koşullu döngüler Eğer program içerisinde belirtilen bloklar belli bir koşula göre tekrar edecekse koşullu döngü yapısı kullanılır. Koşulun döngü bloğundan önce veya sonra kontrolüne göre koşullu döngü yapıları ikiye ayrılır. Verilen koşul ifadesi doğru olduğu sürece, döngü bloğun tekrar icra görmesini sağlayan döngü yapısının akış şeması şeklindeki gösterimi yandaki gibidir;

while döngüsü C programlama dilinde ön kontrollü koşullu döngü yapısı olarak while döngüsü kullanılmaktadır. Kullanımı aşağıdaki gibidir; C while (devam_şartları) { Döngü_Bloğu } devam_şartları : Döngünün bir kere daha icra ettirileceği veya döngünün icrasına son verileceği buradaki koşul ifadeleri değerlendirilerek yapılır. Buradaki ifade doğru sonuç verdikçe döngü yenilenir. While döngüsü altında tek bir satırlık kod yazıldığında blok parantezleri { } kullanmak zorunluluğu yoktur, ancak döngü için birden fazla komut yazılacaksa blok parantezleri { } kullanılmalıdır.

while döngüsü Örnek 5 sayısının faktöriyelini hesaplayan programı C Programlama dilinde while döngüsü kullanarak kodlayınız. #include <stdio.h> main() { Ekran Çıktısı : 5 sayısının faktöriyeli = 120 } int i, sonuc; i = 5; sonuc = 1; printf("%d sayısının faktöriyeli = ", i); while (i>1) { sonuc = sonuc * i; i--; } printf("%d", sonuc);

do-while döngüsü Koşullu döngü yapısının diğer bir çeşididir. Do-While döngüsü, döngü bloğunun tekrar icrası verilen koşul ifadesi gerçekleştiği sürece gerçekleşen döngü yapısıdır. While döngüsü ile arasındaki fark döngü bloğunun her durumda en az bir kere çalışmasıdır. Akış şeması yandaki gibidir;

do-while döngüsü C programlama dilinde do-while döngüsünün kullanımı aşağıdaki gibidir; C do { Döngü_Bloğu } while (devam_şartları); Do-While döngüsü içindeki döngü bloğu her durumda en az bir kere çalışır. Tekrar çalışıp çalışmayacağını ise şart belirler. devam_şartları : Döngünün bir kere daha icra ettirileceği veya döngünün icrasına son verileceği buradaki koşul ifadeleri değerlendirilerek yapılır. Döngü sonuna gelindiğinde buradaki ifade doğru sonuç verdikçe döngü yenilenir.

do-while döngüsü Örnek Aşağıdaki örnek, dışarıdan girilen karakter 'e' veya 'E' olduğu sürece, döngü bloğunun sürekli çalışmasını sağlamaktadır; #include <stdio.h> #include <conio.h> main() { } char ch; do {... printf("devam Edilsin mi? (e/h) :"); ch = getche(); } while (ch=='e' ch=='e');

Gözcü kontrollü döngüler (sentinel controlled loops) Çalıştırılması gereken adımların tekrar sayısının bilinmediği problemlerde program, kullanıcının dışarıdan belli bir değer veya değer gurubundan birini girdi olarak vermesiyle ya da program içerisinde üretilen belli bir değere göre sonlandırılır. Bu değer yada değerlere gözcü değeri (sentinel value) adı verilir.

Gözcü kontrollü döngüler Örnek Burada kaç adet not girileceği belirtilmemiştir. Kullanıcı isterse 4 nottan sonra -1, isterse de 100 nottan sonra -1 girebilir. Bu amaçla girilen not değeri, gözcü değeri ile kontrol edilir. Bu çözümde sınav notu olamayacak bir değer olan -1, kontrol değeri olarak seçilmiştir.

Döngü Kontrol İfadeleri Döngü içerisinde bazı durumların oluşması sonucu döngüden çıkmak veya döngüyü bir sonraki değeri için çalıştırmak gerekebilir. C'de bu işlemleri gerçekleştirmek üzere iki komut mevcuttur; break continue

break komutu Break komutu, programın icrasını döngü dışına taşır ve programın icrası döngünün bittiği yerden devam eder. Break komutunu içeren en içteki blok terk edilir. Genellikle bazı koşulların oluşması sonucunda döngünün diğer deyimlerinin icra edilmemesi gereken veya edilmesinin gereksiz olduğu durumlarda kullanılır. Switch-case, for, while veya do-while komutları ile oluşan bloklar içinde yer alabilir. Genellikle, switch-case yapısında herbir case satırının sonunda break kullanılır. Aksi takdirde, herhangi bir satırda break komutuna rastlanıncaya kadar sonraki case değerleri ile karşılaştırma yapılmadan o satırlara ait olan tüm komutlar icra edilir.

break komutu Örnek Aşağıdaki örnekte 1000 elemanlı bir dizide istenen eleman (Murat) bulunduktan sonra break komutu kullanılarak diğer elemanların kontrol edilmemesi sağlanmaktadır; #include <stdio.h> #include <string.h> main() { int i; char *isim[1000]; for (i=0; i<1000; i++) { if (!strcmpi(isim[i], "Murat")) break; } } if (i<100) printf("aranan kişi %d. elaman", i); else printf("aranan kişi bulunamadı.");

continue komutu Continue komutu, döngü bloğuna ait diğer komutların atlanmasını ve programın icrasının döngünün bir sonraki çevriminden devam etmesini sağlar. Genellikle bazı koşulların oluşması sonucunda döngünün diğer deyimlerinin icra edilmemesi gereken veya edilmesinin gereksiz olduğu ve döngünün tekrar icrasının gerçekleştiği (kontrol ifadesine bağlı olarak) durumlarda kullanılır. For, while veya do-while komutları ile oluşan bloklar içinde yer alabilir.

continue komutu Örnek Aşağıdaki örnek 1'den 100'e kadar olan çift sayıların toplamını hesaplamaktadır; #include <stdio.h> main() { int i, sonuc; sonuc = 0; for (i=1; i<100; i++) { if (i % 2) continue; sonuc = sonuc + i; } printf("1'den 100'e kadar çift sayıların toplamı :%d", sonuc); } Ekran Çıktısı : 1'den 100'e kadar çift sayıların toplamı :2450

İç-içe Döngüler (Nested Loops) Bir döngü içerisinde başka bir döngü bulunuyorsa, bu tür yapılara iç-içe döngüler denir. Bu durumda içteki döngü dıştaki döngünün her adımında yeniden çalıştırılacaktır. int n, i, j; n=0; for (i=1;i<=4;i++) for(j=1;j<=3;j++) n = n + 1; Dıştaki döngü 4 kere tekrarlanacaktır. İçteki döngü de dıştaki döngünün her tekrar edilişinde 3 kere tekrar edilecektir. Böylece içteki döngünün gövdesini oluşturan atama ifadesi 12 kere tekrar edilmiş olacaktır. Dıştaki for döngüsünden çıkıldığında, n değişkeni içerisindeki değer 12 olacaktır.