Astronomide Bilgisayar Programlama (C Dili Genel Bilgi) Öğr. Gör. Murat Gezer

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

C PROGRAMLAMA D İ L İ

Temel Giriş/Çıkış Fonksiyonları

Fonksiyonlar (Altprogram)

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

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

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

Programlamaya Giriş. Program : Belirli bir problemi çözmek için bir bilgisayar dili kullanılarak yazılmış deyimler dizisi.

C Programlama printf() Fonksiyonu

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

MAK 1005 Bilgisayar Programlamaya Giriş C DİLİNE GİRİŞ. Prof. Dr. Necmettin Kaya

Dr. Fatih AY Tel:

EBG101 PROGRAMLAMA TEMELLERİ VE ALGORİTMA

C PROGRAMLAMA D İ L İ

Sınav tarihi : Süre : 60 dak.

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

BLM 111 ALGORİTMA VE PROGRAMLAMA I

Değişken nedir? Tanımı nasıl yapılır?

Program Akış Kontrol Yapıları

Dr. Fatih AY Tel: fatihay@fatihay.net

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

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

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

Döngü ve Koşul Deyimleri

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.

Genel Programlama II

PROGRAMLAMAYA GİRİŞ DERS 2

2) /* Kullanıcıdan alınan iki sayının obebini alt fonksiyon yardımı ile hesaplayan C programı*/

Programlama Dilleri Laboratuvarı

PROGRAMLAMAYA GİRİŞ VE ALGORİTMA «YTÜROK» EĞİTMEN:REHA ÖZGÜR ŞİMŞEK

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

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

PROGRAMLAMA DİLLERİ I

BİL1001 Bilgisayar Bilimlerine Giriş 1

Hafta 8 C Dilinde Değişken Tipleri ve Temel Giriş/Çıkış İşlemleri

C PROGRAMLAMA D İ L İ

C Programlama Dilininin Basit Yapıları

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

Eln 1001 Bilgisayar Programlama I

Ders 6: Karşılaştırma Deyimleri

BASİT C PROGRAMLARI Öğr.Gör.Dr. Mahmut YALÇIN

Algoritma ve Programlamaya Giriş

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

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

Ders 4: Temel Giriş/Çıkış Fonksiyonları

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

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

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

C PROGRAMLAMA D İ L İ

Pascal Programlama Dili

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

BÖLÜM 1b: C++ PROGRAMLAMANIN YAPISI. C++, hard diskte TC, BIN, INCLUDE, LIB gibi alt dizinlere yüklenir.

Ders 2: Veri Tipleri, Değişkenler ve Sabitler

NOT: Bu kodlar çeşitli internet siteleri, üniversite siteleri ve ders kitaplarından derlenerek hazırlanmıştır.

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

ÖDEV (Vize Dönemi) CEVAPLAR. 1. Ekrana Merhaba Dünya! yazdıran algoritmanın akış diyagramını çiziniz ve sözde kod olarak yazınız.

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

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

Program AkıĢ Kontrol Yapıları

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

2 ALGORİTMA VE AKIŞ DİYAGRAMLARI

Programlama Dilleri 1. Ders 4: Diziler

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

C++ Operatörler (Operators)

BLM 111 ALGORİTMA VE PROGRAMLAMA I

KOCAELİ ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ. BİLGİSAYAR LABORATUVARI II FİNAL SINAVI SORU ve CEVAPLARI(I. ogr)

Döngü komutları komutların bir çok kez yeniden yürülmesini. sağlayan, programlamada kullandığımız önemli yapılardan biridir.

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

Kodlanacak programlama dilinin kaynaklarından faydalanılarak kod yazımı yapılır.

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

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

BIL1202 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ

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

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

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

Veri Tanımları ve Mantıksal İşlemler

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

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

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

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.

BÖLÜM 4: DEĞİŞKENLER, SABİTLER VE OPERATÖRLER

Karşılaştırma Komutları (Switch ve? Operatörü)

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

HSancak Nesne Tabanlı Programlama I Ders Notları

Kodlanacak programlama dilinin kaynaklarından faydalanılarak kod yazımı yapılır.

2. Dereceden Denklemin Köklerini Bulan Program

Programlama Dilleri. C Dili. Programlama Dilleri-ders02/ 1

Olimpiyat Soruları. sonuçları tekrar fonksiyonda yerine koyup çıkan tüm sonuçları toplayan program (iterasyon sayısı girilecek)

BÖLÜM 4 FONKSİYONLAR. Fonksiyonlar programların etkinliğini, kolay yazılmasını, anlaşılmasını ve bellekte daha az yer kaplamasını sağlayan bloklardır.

Kocaeli Üniversitesi C Bilgisayar Programlama Ara Sınavı Test Soruları

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

BIL1202 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ (Algoritma Geliştirmek, Satır Kod)

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

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

İçerik. Java da İşleçler, İşleçler. Aritmetik İşleçler - 1. Aritmetik İşleçler - 2. Geçen ders: Bu ders: BS-515 Nesneye Yönelik Programlama

İnternet Programcılığı Dersi 2.Dönem Ders Notu

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-8 Değişken Tipleri ve Temel Giriş/Çıkış İşlemleri

// Aşağıdaki programın çıktısı nedir?

PROGRAMLAMA TEMELLER. C Program Yap s

Transkript:

Astronomide Bilgisayar Programlama (C Dili Genel Bilgi) Öğr. Gör. Murat Gezer

Basit Bir C programı 1) /* İlk C programı */ 2) // Ekrana Merhaba Dünya yazan Program yazınız 3) #include <stdio.h> 4) int main(){ 5) printf("merhaba Dunya"); 6) system("pause"); 7) return 0; 8) }

C dilinin Yazım Kuralları -1 Açıklama operatörü olarak C++ tarzı iki-bölü (//) de kullanılmaktadır. Günümüzde birçok C derleyicisi // operatörünü desteklemektedir. Bu operatörü kullanmadan önce derleyicinizin bu operatörü desteklediğinden emin olun. /* Bu satırlar derleyici tarafından değerlendirilmez. Ayrıca programın çalışma hızını da değiştirmez. */ C tarzı // Bu satırlar derleyici tarafından // değerlendirilmez. Ayrıca programın C++ tarzı // çalışma hızını da değiştirmez.

C dilinin Yazım Kuralları -2 Her işletilebilir ifade ; (noktalı virgül, semicolon) ile biter. Bir satıra birden fazla ifade yazılabilir Sadece önişlemci direktifleri her satırda bir tane olabilir. Bütün anahtar kelimeler ve komutlar küçük harfle yazılır. #define önişlemci direktifleri büyük küçük yazılabilir. C büyük küçük harf duyarlıdır.

İşleçler (operatör) Matematiksel İşleçler Matematikteki C dilindeki İşlem. X veya hiçbir şey * Çarpma Mod % Modüler bölüm / / Bölme + + Toplama - - Çıkartma +1 ++ 1 Artırma (unary increment) -1 -- 1 Eksiltme (unary decrement)

İşleçler (operatör) Mantıksal İşleçler Matematikteki C dilindeki İşlem > > Büyük < < Küçük <= Küçük veya eşit >= Büyük veya eşit = == Eşit (Karşılaştırma)!= Eşit değil && Ve (and) Veya (Or)! Değil

Atama (Assign) İşleçleri = Atama += Toplayarak atama -= Eksilterek atama *= Çarparak atama /= Bölerek atama %= Mod alarak atama

Bit düzeyinde işlem yapan operatörler Operator Açıklama Ornek Sonucu & ve veya ^ özel veya 10 & 25 (00001010 & 00011001) 10 25 (00001010 00011001) 10 ^ 25 (00001010 ^ 00011001) 8 (00001000) 27 (00011011) 19 (00010011) ~ değil ~10 (00001010) 245 (11110101) >> sağa kaydırma << sola kaydırma 12 >> 3 (00001100 >> 3) 12 << 3 (00001100 << 3) 1 (00000001) 96 (01100000)

Değişken (Variable) Program içersinde kullanılan değişken isimleri programcı tarafından verilir. Uyulması gereken kuralları Değişken isimlerinde c dilinin kendine ayırdığı anahtar sözcükler kullanılamaz. Değişken isimleri içersinde a-z ve A-Z arası ingiliz alfabesinde bulunan harfler 0-9 arası rakamlar ve _ kullanılabilir. Değişken isimleri rakam ile başlayamaz Değişken isimlerinin uzunlukları istenildiği gibi olabilir. Ama C derleyicisi için ilk 32 karakter belirleyicidir. İyi Programcılar genelde... İçersindeki değere göre isim verir. Çok fazla uzun çok kısa olmamasına dikkat eder İki kelimeden oluşan kelimelerde arasına _ yada ikinci kelimenin baş harfi büyük olmasına dikkat eder.

C Dilindeki Sözcükler

Değişken (Variable) Bir C programı aşağıda verilen özellikleri mutlaka taşımalıdır. Yazılımda kullanılacak olan her fonksiyon için ilgili başlık dosyası programın başına ilave edilmedlidir. Her C programı main() fonksiyonunu içermelidir. Program içinde kullanılacak olan değişkenler ve sabitler mutlaka başlangıçta tanımlanmalıdır. Satırın sonuna ; işareti konmalıdır. Her bloğun ve fonksiyonun başlangıcı ve bitişi sırasıyla { ve } sembolleridir. C dilinde yazılan kodlarda küçük-büyük harf ayrımı vardır (case sensitive). Örneğin Personel ile personel derleyici tarafından farklı değerlendirilir. Açıklama operatörü /* */ yada // sembolleridir.

Değişken Türleri Temel Veri türleri char, int, float double dır. char: Bir harf, bir rakam veya özel bir simgeyi gösterir. Char tipindeki bilgi tek tırnak arasına yazılır. int: -32768 ile 32767 orası tam sayı değerleri float: ondalıklı olarak verilen sayıları ifade etmek amacıyla kullanılır. double: iki kat daha fazla duyarlılığa sahip olan float türü değişkenlerdir.

Değişken Türleri Değişken türü Açıklama char tek bir karakter için 1 int tamsayı için 2 yada 4 float double tek duyarlı gerçel sayı için (6 basamak hassasiyet) çift duyarlı gerçel sayı için (12 basamak hassasiyet) Bellekte işgal ettiği boyut (byte) 2 yada 4 4 yada 8

Değişken Türleri 1) /* sizeof operatörünün kullanımı */ 2) #include <stdio.h> 3) #include <stdlib.h> 4) int main() 5) { 6) printf( "\nchar : %d byte", sizeof( char )); 7) printf( "\nint : %d byte", sizeof( int )); 8) printf( "\nshort : %d byte", sizeof( short )); 9) printf( "\nlong : %d byte", sizeof( long )); 10) printf( "\nunsigned char : %d byte", sizeof( unsigned char )); 11) printf( "\nunsigned int : %d byte", sizeof( unsigned int )); 12) printf( "\nunsigned short : %d byte", sizeof( unsigned short )); 13) printf( "\nunsigned long : %d byte", sizeof( unsigned long )); 14) printf( "\nfloat : %d byte", sizeof( float )); 15) printf( "\ndouble : %d byte", sizeof( double )); 16) printf( "\nlong double : %d byte\n", sizeof( long double )); 17) system("pause"); 18) return 0; 19) }

Değişkenlerin Bildirimi Değişkenler ve Sabitler programın başında bulunmalıdır. Bazı uygulamalarda değişkenin bir başlangıç değerinin olması istenir. Böyle durumlarda değişken bildirilirken başlangıç değeri verilebilir. Örneğin: char isim='x', z; int sayi=0, n=10; float toplam=0.0, sonuc=22.14;

Değişkenlerin Bildirimi Sabit bildirimi, başlangıç değeri verilen değişken bildirimi gibi yapılır. Ancak; veri tipinin önüne const anahtar sözcüğü koyulmalıdır. Örneğin: const float PI = 3.142857; const double NOT= 12345.8596235489; const int EOF= -1; const char[] = "devam etmek için bir tuşa basın...";

C dilinde temel çıktı İşlemi printf fonksiyonu Standart C kütüphanesinin bir parçası olan printf() fonksiyonu, değişkenlerin içeriğini veya bit mesajı ekrana bir düzenle(formatla) standart çıkışa(stdout) yazmak için belki de en çok kullanılan fonksiyondur. Kullanımı: printf("karakter dizisi formatı",değişkenler); Şeklindedir.

printf fonksiyonu Burada, birinci parametre karakter dizisi formatı, değişkenler kısmı ise ikinci parametredir. karakter dizisi formatı üç kısımdan oluşmaktadır: Düz metin(literal string): yazdırılmak istenen ileti. Konrol karakterleri(escape squence): değişkenlerin ve sabitlerin nasıl yazılacağını belirtmek ve imlecin alt satıra geçirilmesi gibi bazı basit işlemlerin gerçekleştirilmesi için kullanılır. Tip belirleyici(conversion specifier): % işaretinden oluşur(%d gibi). Ekrana yazdırılmak istenen değişkenin tipi, % işaretinden sonra belirtilir.yani % işaretinin hemen ardına yazılan bir veya bir kaç karakter, ilgili değişken ve sabitin nasıl yazılacağını düzenleme bilgisidir.

Kontrol karakterleri Karakter Anlamı \a Ses üretir(alert) \b imleci bir sola kaydır(backspace) \f Sayfa atla. Bir sonraki sayfanın başına geç(formfeed) \n Bir alt satıra geç(newline) \r Satır başı yap(carriage return) \t Yatay TAB(Horizontal TAB) \v Dikey TAB(vertical TAB) \" Çift tırnak karakterini ekrana yaz \' Tek tırnak karakterini ekrana yaz \\ \ karakterini ekrana yaz %% % karakterini ekrana yaz

Tip karakterleri Tip Karakteri Anlamı Tip %c tek bir karakter char %d işaretli ondalık tamsayı int, short %ld uzun işaretli ondalık tamsayı %u işaretsiz ondalık tamsayı long unsigned int, unsigned short %f Gerçel sayı float, double %s karakter dizisi (string) char %lu işaretsiz uzun tamsayı unsigned long

Soru 1 Yarıçapı 6 cm olan dairenin alanını hesaplayıp ekrana yazdıran c programını yazınız (Pi=3.14)

Soru 2 12 ve 8 olan iki adet tamsayının harmonik ortalamasını hesaplayan ekrana yazdıran c programını yazınız (Harmonik ortalama=2ab/(a+b))

Soru 3 İki uç noktasının koordinatları (7,9) ve (12,8) şeklinde verilen doğru parçasının orta noktasını hesaplayıp ekrana yazdıran c programını yazınız. A(x1,y1) ve B(x2,y2) ise nokta c(x0,y0) x0=(x1+x2)/2 ve y0=(y1+y2)/2

Scanf fonksiyonu Değişkenlerin içersine klavyeden değer atamak için kullanılır. Genel kullanım formatı scanf("girdi formatı",değişkenler); şeklindedir. Örnek: Scanf("%d%f",&yas,&kilo);

Format karakterleri Tip Karakteri Anlamı Tip %c tek bir karakter char %d işaretli ondalık tamsayı int, short %ld uzun işaretli ondalık tamsayı %u işaretsiz ondalık tamsayı long unsigned int, unsigned short %f,%lf Gerçel sayı float, double %s karakter dizisi (string) char %lu işaretsiz uzun tamsayı unsigned long %E,%e Gerçel Sayı üstsel olarak gösterimde Float,double

Soru 4 Klavyeden girilen doğum yılı ve şu anki yılı girerek yaşı hesaplayan ve ekrana yazdıran C programı yazınız.

Soru 5 Klavyeden girilen km başına harcanan yakıt miktarı, yakıtın litre fiyatı ve aracın yaptığı toplam km miktarına göre aracın toplam yakıt maliyetini bulan program yazınız.

Soru 6 Klavyeden girilen iki ayrı kesirli ifadenin pay ve paydası veriliyor. Bu kesirli ifadelerin toplamını ve çarpımını ekrana yazdıran program yazınız.

Soru 7 Klavyeden inç cinsinden girilen uzunluğu cm ve mm ye ceviren c programını kodlayınız. (1 inç 2.54 cm)

Soru 8 Klavyeden girilen 4 haneli tamsayıyı aşağıdaki gibi çözümleyen C programını yazınız. Örnek Çalışma Çözümlenecek sayı(maksimum 4 haneli)= 1234 Verilen 1234 sayısında: 1 tane binlik 2 tane yüzlük 3 tane onluk 4 tane de birlik vardır

Soru 9 Klavyeden girilen ilk gösterge ve son gösterge değerlerine göre su fatura bedelini hesaplayan ve %50 atıksu medeli hesaplayan bir programı C programını yazınız. (Su metreküp fiyatı 0,89928 TL)

Formatlı Çıktı %nd printf( %4d, 33); 33 %nc printf( %3c, M ); M %ns printf( %10s, Merhaba ); Merhaba %n.mf printf( %f, 12.236); 12.236000 %n.me printf( %10.3e, -0.0536); -5.350e-02

Veri Tipi Dönüşümü Değişkenlerin değerlerinin veya sabitlerin veri tiplerinin başka veri tiplerine dönüştürülmesi veri tipi dönüşümü olarak adlandırılır. Otomatik Veri Tipi Dönüşümü 1.double r=0.5, p=5.2,s; 2.int i=15, q=10, w; 3.char ch; 4.s = i/q; /*s 1.0 değerini alır. */ 5.w = r * p; /*w 2 değerini alır. * / 6.ch=5*i; /*ch 75 değerini alır * /

Veri Tipi Dönüşümü Tanımlanan Veri Tipi Dönüşümü Kullanış şekli. (istenilen_ veri_tipi) değişken_ismi Örnek: 1. int sayi1,sayi2; 2. double bolum; 3. sayi1=2; 4. sayi2=4; 5. bolum=sayi1/sayi2; //bolum 0.0 değerini alır 6. bolum=(double)sayi1/(double)sayi2; 7. //bolum 0.5 değerini alır 8. sayi1=(int) 3.6; //sayi1 3 değerini alır

ÖZET GiRDİ -ÇIKTI TİP DEKLARASYON printf( ); scanf( ); Min Max Byte Karakter char degisken; printf("%c",degisken); scanf("%c",&degisken); -128 127 1 Kısa Tam Sayı short degisken; printf("%d",degisken); scanf("%d",&degisken); -32768 32767 2 Tamsayı int degisken; printf("%d",degisken); scanf("%d",&degisken); -32768 32767 2 Uzun Tamsayı long int degisken; printf("%ld",degisken); scanf("%ld",&degisken); - 2147483 648 2147483647 4 İşaretsiz Tamsayı İşaretsiz Uzun Tamsayı unsigned int degisken; long unsigned degisken; printf("%u",degisken); scanf("%u",&degisken); 0 65535 2 printf("%lu",degisken); scanf("%lu",&degisken); 0 4294967295 4 Virgüllü Sayı float degisken; printf("%f",degisken); scanf("%f",&degisken); 1,17549 e-38 3,40282e+38 4 Uzun Virgüllü Sayı double degisken; printf("%lf",degisken); scanf("%lf",&degisken); 2,22504 e-308 1,79769e+308 8

Program Akış Kontrol Yapıları Normal koşullarda program içersinde çalıştırılan satırlardaki (statement) yazılmış oldukları sıra ile ilerler. Ancak bazı durumlarda koşullara bağlı olarak bu sıranın yapılacak işin adımları değişebilir. Bu tarz yapılara akış kontrol yapıları adını veriyoruz. Üç tarz akış kontrol yapısını sıklıkla kullanmaktayız. 1. if Deyimi 2.?: Üçlü Şart Operatörü (Ternary Conditional) 3. Switch Çoklu Seçim Deyimi (Multiple Selection Statement)

Örnek Birbirinden farklı olarak verilen iki adet tam sayıdan, büyük olanı bulup gösteren algoritma ve akış diyagramını tasarlayınız. Algoritma: Girdiler: Birinci Sayı İkinci Sayı Çıktılar: Büyük Sayı İlişki: Birinci Sayı > İkinci sayı => Birinci sayı İkinci Sayı > Birinci sayı => İkinci sayı

Başla Sayi1, Sayi2 Sayi1>Sayi2 Evet Sayi1 Hayır Sayi2 Dur

if yapısı İf yapısı devam etmeden önce iki adet karardan birini gerçekleştirip devam etmeye yarar. Aynı zamanda if yapısı ile devam etmeden önce bir kararı uygulayıp uygulamayacağı konusunda karar verir. J-39

if deyimi Verilen Durum ya da koşulla göre istenilen işlem ya da işlemleri gerçekleştirmek için kullanılır. En basit kullanım biçimi if (koşul) komut; Örnek: if (sayi1>sayi2) printf( sayi1 sayiden büyüktür ); Koşulla yada duruma bağlı olarak çalışması gereken komut birden fazla ise blok içerisine alınır. if (koşul) { Komut1; Komut2; Komut N; }

Soru 10 Verilen bir sayının pozitif, negatif yada 0 olup olmadığını bulan program yazınız.

Soru 11 Verilen ara sınav (vize) ve yarıyıl sonu sınavı (final) notlarına öğrencinin dersten geçip geçmediğini bulan algoritma ve kodu yazınız. (Bir öğrencinin dersten geçip geçmediğini belirlyen koşıl Vizenin %40 ve Finalin %50 sinin toplamının 60 puan üstü olmasıdır.)

Soru 12 Girilen bir sayının çift sayı olup olmadığını bulan program yazınız.

Soru 14 Klavyeden girilen 3 tam sayıdan büyük olanı bulan programı yazınız.

Soru 15 Vize ve Final notlarını girdikten sonra öğrencinin harf notunu aşağıdaki tabloya göre veren program yazınız. Başarı Ortalaması=Vize nin %40 + Finalin %60 ı 50 den Küçük olanlar F 50-59 arası D 60-69 arası C 70-79 arası B 80 ve üstü A

if-else yapısı 1. #include <stdio.h> 2. #include<stdlib.h> 3. int main(void){ 4. int magic ;// sihirli sayı 5. int guess ;// Kullanıcının tahmini 6. magic=rand(); //Sihirli sayı üret 7. printf("sihirli sayıyı Tahmin et"); 8. scanf("%d",&guess); 9. if(guess==magic) printf("*** Bildiniz ***"); 10. else printf("*** Bilemediniz ***"); 11. system("pause"); 12. return 0; 13. }

if-else yapısı Girdi Doğru Koşul Yanlış İşlem 1 İşlem 2 Çıktı

if-else yapısı if (koşul) { Komut1; } else { Komut2; } Yada?: Üçlü Şart Operatörü (Ternary Conditional) (Koşul)? Komut1 : Komut2 ; Kullanılabilir.

İç içe if-else yapısı 1. #include <stdio.h> 2. #include<stdlib.h> 3. int main(void){ 4. int magic ;// sihirli sayı 5. int guess ;// Kullanıcının tahmini 6. magic=rand(); //Sihirli sayı üret 7. printf("sihirli sayiyi Tahmin et"); 8. scanf("%d",&guess); 9. if(guess==magic) { 10. printf("*** Bildiniz ***"); 11. printf("tebrikler %d idi",magic); } 12. else { 13. printf("*** Bilemediniz ***"); 14. if (guess>magic) printf("yuksek Sayi Verdiniz. Asil Sayi %d idi\n",magic); 15. else printf("düşük Sayı Verdiniz. Asil Sayi %d idi\n",magic); 16. } 17. system("pause"); 18. return 0; 19. }

Soru 16 Bir yıl, "artık yıl" ise değeri 4 ile tam bölünebilir. Fakat 100 ile tam bölünüp 400 ile tam bölünmüyorsa artık yıl sayılmaz. Klavyeden girilen bir yıl değerinin artık yıl olup olmadığını belirleyen bir C programı yazınız. Bir yıl içinde, Şubat ayı 29 gün olursa o yıl artık yıl olarak adlandırılır. Artık yıl peryodik olarak 4 yılda bir gelir. Genel kanı "bir yıl 4 ile tam bölünebirse o yıl artık yıldır" şeklindedir. Fakat 1996 artık yıl iken 1800 artık yıl değildir. Genel sorgulama söyle olmalıdır: Eğer bir yıl 4 ile tam bölünüyorsa VE 100'e tam bölünmüyorsa VEYA 400 'e tam bölünüryorsa o yıl artık yıldır.

Soru 17 Bir uçak 15 dk boyunca düzgün hızlanarak hızı 480 km\s oluyor. Sonra 20 dak. Sabit hızla gidiyor ve 15 dk. boyunca düzgün yavaşlayarak hızı sıfır oluyor. Herhangi bir t anında hızı veren algoritma ve program. Çözüm yöntemi: t = 0-15 için, hız = t * 32 t = 15-35 için, hız = 480 t = 35-50 için, hız = 480 (t - 35) * 32

Soru 18 Klavyeden girilen 3 farklı sayıdan: a. En büyük sayıyı bulan programı, b. En küçük sayıyı bulan programı, c. Ortanca sayıyı bulan programı yazınız. Büyük sayı, küçük sayı ve ortanca sayı için ayrı ayrı programlar yazınız.

Soru 19 Dört basamaklı sayılardan ilk iki basamağı ile son iki basamağının toplamının karesi, sayının kendisine eşit olan sayılara orijinal sayı denir. Girilen bir sayının orijinal olup olmadığını saptayan algoritma ve program. Örnek veriler: (9801, 3025, 2025)

Soru 20 Klavyeden alınan saat ve dakika bilgileriyle yelkovan ile akrep arasındaki açıyı bulan programı yazınız. Not: Aşağıdaki örnek değerler kullanılabilir. 6:00 ve 18:00 için 180 derece 9:00, 3:00 için 45 derece

Soru 21 Klavyeden aynı anda girilen 2 sayıdan, küçük sayının büyük sayının tam böleni olup olmadığını bulan program. Öncelikle girilen sayılardan hangisinin daha büyük hangisinin daha küçük olduğu tespit edilmelidir.

Soru 22 İç açıları verilen bir üçgenin türünü belirleyen program (çeşitkenar, ikizkenar, eşkenar)

Soru 23 Bir futbol takımı yeni transfer ettiği oyuncu için 3 yıllık sözleşme karşılığı N lira ödeme yapacaktır. Ödemenin yüzde olarak Y1 oranındaki miktarı ilk yıl, Y2 oranındaki miktarı ikinci yıl ve kalanı üçüncü yıl yapılacaktır. Futbolcuya her yıl ödenecek para miktarını hesaplayan bir program yazınız.

Soru 24 Kullanıcıdan alınan sayı çift ise 3 katının 1 eksiği, tek ise 3 e bölümünün 2 fazlasını veren program yazdırılması isteniliyor.

Soru 25 Kullanıcıdan alınan karaktere göre çevre, alan, hacim ve yüzey alanı hesaplayan programın yazdırılması istenmiştir. d değeri girildiyse kullanıcıdan alınan yarıçap değerine göre dairenin çevresi, u değeri girildiyse kullanıcıdan yükseklik ve taban değerlerini alarak üçgen alanı hesaplayan, s değeri girildiyse kullanıcıdan alınacak yarıçap ve yükseklik değerlerine göre silindirin hacmini hesaplayan k girildiyse kullanıcıdan alınacak kenar değerine göre yüzey alanı hesaplanacak ve ekrana yazdırılacaktır.

Soru 26 Kullanıcıdan K karakteri girildiğinde 5*5 şeklinde bir kare, D karakteri girildiğinde ise 5*3 şeklinde bir dikdörtgen çizilmesi istenilmiştir. Not: Döngü kullanılmayacaktır. - Yanlış harf girişi yapıldığında uyarı verilecektir.

Soru 27 Deprem Enstitüsünden alınan Richter ölçüsü deprem büyüklüğüne göre deprem karakteristiğini görüntüleyen C programını yazınız. Richter Ölçüsü N<5.0 5.0 N<5.5 5.5 N<6.5 6.5 N<7.5 Daha yüksek Karakteristiği Ufak ve Hasarsız Az Hasarlı Ciddi hasar:çatlamalar ve çökmeler olabilir Felaket:Evler ve binalar çökebilir Facia

Math.h kütüphanesi sqrt(x): x in karekökünü alır. Örn. sqrt(900.0) 30.0 değerini verir exp(x): üstel fonksiyonu Örn. exp(2.0) 7.389056 değerini verir log(x): x in e tabanına göre logaritması Örn. log(2.728252) 1.0 değerini verir log10(x): x in 10 tabanına göre logaritması Örn.log(100.0) 2.0 değerini verir. fabs(x): x in mutlak değerini verir Örn. x>0 ise x değerini, x=0 ise 0.0 değerini, x<0 ise x değerini verir. ceil(x): x i kendinden büyük ilk tamsayıya yuvarlar. Örn.ceil(-9.8) ise -9.0 değerini döndürür. floor(x): x i kendinden küçük ilk tamsayıya yuvarlar. Örn. floor(-9.2) ise -10.0 döndürür. pow(x,y): x üzeri y değerini bulur Örn pow(9.0,0.5) 3.0 değerini döndürür. Powl ise long double argumanlar için fmod(x,y): x in y ye göre modunu döndürür Örn fmod(5.0,3.0) ise 2.0 değerini döndürür. sin(x): x açısının sinüs değerini bulur(x radyan olmalı) Örn sin(0.0) ise 0.0 değerini verir. cos(x): x açısının cosinus değerini bulur(x radyan olmalı) Örn cos(0.0) ise 1.0 tan(x): x açısının tanjantını hesaplar(x radyan olmalı) Örn tan(0.0) ise 0.0 değerini verir. x ve y değişkenleri double tipinde girdi alır ve çıktı verir

Soru 28 Bir yıldız için Uzaklık Modülü mv ile Mv arasındaki ilişkiyi mv - Mv = - 5 + 5 log10( d ) şeklinde göstermektedir. Burada d parsec birimindedir. Bu bilgi ışığında kullanıcıdan alınan iki yıldız için mv ile Mv değerleri için arasındaki uzaklığı hesaplayıp hangi yıldızın dünyaya yakın hangisinin uzak olduğunu ekrana bastıran program yazınız. (math.h kütüphanesini kullanınız)

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 deyimi switch() { case seçenek1 : Deyim; break; case seçenek2 : Deyim; break;... default : Deyim; }

Switch-Case Örnek 1. #include<stdio.h> 2. int main( void ) { 3. int not; 4. printf("lütfen notu giriniz> "); 5. scanf("%d",&not); 6. switch( not / 10 ) { 7. case 10: case 9: printf("not: A\n"); break; 8. case 8: printf("not: B\n"); break; 9. case 7: printf("not: C\n"); break; 10. case 6: printf("not: D\n"); break; 11. case 5: case 4: case 3: case 2: case 1: case 0: printf("not: F\n"); break; 12. default: printf("hata: Bilinmeyen bir değer girdiniz!\n"); } 13. return 0; 14. }

DÖNGÜLER Bu tip deyimler bir kümenin belli bir koşul altında yinelenmesi için kullanılır. while, do...while ve for olmak üzere üç tip döngü deyimi vardır. C de diğer programlama dillerinde olduğu gibi, bu deyimlerle istenildiği kadar iç-içe döngü yapısı kullanılabilir.

while Tekrarlama deyimidir. Bir küme ya da deyim while kullanılarak bir çok kez yinelenebilir. Yinelenmesi için koşul sınaması çevrim başında yapılır. Koşul olumlu olduğu sürece çevrim yinelenir. İki veya daha çok koşul mantıksal operatörler birleştirilerek verilebilir. Genel yazım biçimi: while(koşul) {... döngüdeki deyimler; [küme]... }

while örnek 1. /* while kullanımı */ 2. #include <stdio.h> 3. 4. int main(void) { 5. int x=0; 6. while(x <= 10) 7. printf("%d\n",x++); 8. return 0; 9. }

while örnek 1. /* Ekrana 10 kere "Merhaba Dünya" yazan program */ 2. #include<stdio.h> 3. int main( void ) { 4. int i = 0; 5. while( i++ < 10 ) { 6. printf("%2d: Merhaba Dünya\n",i); } 7. return 0; 8. }

Soru 29 şeklinde bir matematik işlemi verilmektedir. Bu işlemin sonucunu kullanıcıdan alacağınız bir i değerine göre hesaplayan program yazınız.

Gözcü Kontrollü Döngüler (Sentinel Controlled Loops) Çalıştırılması gereken bilinmediği durumlarda kullanılan yapılardır. Örnek : Klavyeden Not değeri -1 girilene kadar verilen notların ortalamasını bulan program yazınız.

Soru 30 Klavyeden girilen 10 pozitif sayıdan tek olanların ortalamasını bulup ekrana yazdıran program yazınız.

Soru 31 Klavyeden girilen adet değerine göre girilen pozitif ve negatif olanların adedini bulup yazan program yazınız.

Soru 32 Klavyeden değeri -1 girilene kadar verilen pozitif sayıların en büyüğünü ve en küçüğünü bulan ve ekrana yazdıran program yazınız.

PROJE ÖDEVİ 23 Aralık 2013 tarihine kadar. 5 tane astronomi formülü için bir hesap makinası gerçekleştirmenizi istemekteyim. Bu hesap makinasının algoritması ve kullandığınız değişken isimleri ve programda kullanılacak olan her fonksiyon dökümanlandırılıp kaynak kodları calıştırılabilen kod ile bir dosya halinde bana getirilecektir.

do while Döngüsü while döngülerinde, döngü içersindeki işlem yapılmadan önce, sunulan koşul kontrol edilir. Şayet koşul sağlanmıyorsa, o while döngüsünün hiç çalışmama ihtimali de bulunmaktadır. do while döngülerindeyse, durum böyle değildir. İlk çalışmada koşul kontrolü yapılmaz. Dolayısıyla, her ne şartta olursa olsun, döngünüz -en azından bir kereçalışacaktır do { komut(lar) } while( koşul );

do while Döngüsü 1. #include<stdio.h> 2. #include<stdlib.h> 3. int main( void ) 4. { 5. int sayi_1, sayi_2; 6. char devam_mi; 7. do { 8. printf("birinci sayıyı giriniz> "); 9. scanf("%d",&sayi_1); 10. printf("ikinci sayıyı giriniz> "); 11. scanf("%d",&sayi_2); 12. printf("%d + %d = %d\n", sayi_1, sayi_2, sayi_1 + sayi_2); 13. printf("devam etmek ister misiniz? (e/e) "); 14. //C'de tek karakter okuma işlemi biraz sıkıntılı 15. //olduğundan, burada da bir do while kullandık. 16. do { 17. scanf("%c",&devam_mi); 18. }while( devam_mi == '\n' ); 19. printf("\n"); 20. } while( devam_mi == 'E' devam_mi == 'e' ); 21. system("pause"); 22. return 0; 23. }

break Komutu Bir C programında, bir işlem gerçekleştirilirken, işlemin sona erdirilmesi bu deyim ile yapılır. Örneğin, döngü deyimleri içindekiler yürütülürken, çevrimin, koşuldan bağımsız kesin olarak sonlanması gerektiğinde bu deyim kullanılır.

break Komutu 1. /* 2. 0 ile 99 arasında tesadüfi sayılar üreten 3. bir programın, kaçıncı seferde 61 sayısını 4. bulacağını yazan program aşağıdadır. 5. */ 6. #include<stdio.h> 7. int main( void ) 8. { 9. int i,tesadufi_sayi; 10. int deneme_sayisi = 0; 11. //while içinde 1 olduğundan sonsuza kadar döngü çalışır. 12. while( 1 ){ 13. //tesadufi_sayi değişkenine, 0 ile 99 arasında 14. //her seferinde farklı bir sayı atanır. 15. //rand( ) fonksiyonu tesadüfi sayı atamaya yarar. 16. //mod 100 işlemiyse, atanacak sayının 0 ile 99 17. //arasında olmasını garantiler. 18. tesadufi_sayi = rand() % 100; 19. deneme_sayisi++; 20. if( tesadufi_sayi == 61 ) break; 21. } 22. printf("toplam deneme sayısı: %d\n",deneme_sayisi); 23. system("pause"); 24. return 0; 25. }

continue Komutu break komutunun, döngüyü kırmak için olduğundan bahsetmiştik. Bunun dışında işlem yapmadan döngüyü devam ettirmek gibi durumlara da ihtiyacımız vardır. Bunun içinde continue ( Türkçe: devam ) komutunu kullanırız.

continue Komutu 1. /* 2. Sadece tek sayıları yazdıran bir 3. program 4. */ 5. #include<stdio.h> 6. #include<stdlib.h> 7. int main( void ) 8. { 9. int i; 10. for( i = 0; i < 10; i++ ) { 11. //i değişkeninin 2'ye göre modu 12. //0 sonucunu veriyorsa, bu onun 13. //bir çift sayı olduğunu gösterir. 14. //Bu durumda ekrana yazdırılmaması 15. //için döngü bir sonraki adıma geçer. 16. if( i%2 == 0 ) continue; 17. printf("%2d\n",i); 18. } 19. system("pause"); 20. return 0; 21. }

Soru 33 1 ile 20 arasında girilen değere kenar uzunluğunu asterisk(*) karakterleri ile içi dolu ters bir ikiz kenar üçgeni aşağıdaki örnek e benzer olacak programı yazınız. Örnek Görüntü Bir kenar uzunluğunu giriniz: 5 --------------------------------------- * * * * * * * * * * * * * * *

Soru 34 Bir firma kar ve zararını hesaplayan bir program yazdırmak istiyor. Program klavyeden aldığı alış ve satış fiyatına göre gün sonunda kaç TL kar yada zarar etdiğini hem miktar hemde oran olarak görüntülemek istiyor. Çıkış için alış fiyatına -1 yazması ve sonunda kar/zarar miktarı ile oranı görüntülesin.

For döngüsü while ve do while dışında, üçüncü bir döngü tipi olarak, for yapısı bulunmaktadır. Diğer iki döngüden farklı olarak, for yapısı, yenilemelitekrarlamalı (İngilizce iterative) yapılarda kullanıma daha uygundur. for( ilk_deger_atama; koşul; arttırma/azaltma ){ komut(lar) }

Soru 35 Kullanıcıdan alınan değere göre ekrana * işareti bastıran bir program yazınız.

Soru 36 Kullanıcıdan alınan değere göre karakterler ile ekrana içi dolu kare çizen program yazınız.

Soru 37 Kullanıcıdan alınan değere göre dik üçgen çizen program yazınız. Örnek: Bir Sayı giriniz:5 * ** *** **** *****

Soru 38 5x5 lik bir çarpım tablosunu ekrana yazdırınız.

DİZİ (ARRAY) Dizi bir kümedir. Aynı tipte verilere tek bir isimle erişmek için kullanılır. Bir dizinin bütün elemanları bellekte peşpeşe saklanır. Tek boyutlu diziler tip ad[eleman_sayısı] int veri[10]; İki boyutlu diziler tip ad[satir_say][sutun_say] float mat[5][4]; Çok boyutlu diziler tip ad[boyut_1][boyut_2][boyut_3]...[ boyut_n] double x[2][4][2];

DİZİ (ARRAY) Diziler 0. elemandan başlar, (n-1). elemana kadar int dizi[10] = {45,90,72,22,92,83,14,21,2,25}; 0 1 2 3 4 5 6 7 8 9 45 90 72 22 92 83 14 21 2 25 double sayilar[] = {-3.4, 12.5, 27.0, 1.1, 25.33}; -3.4 12.5 27.0 1.1 25.33 93

Dizi Örnek 1. #include<stdio.h> 2. int main( void ) 3. { 4. 5. int dizi[ ] = { 15, 54, 1, 44, 55,40, 60, 4, 77, 45 }; 6. int i, max, min; 7. min = dizi[ 0 ]; 8. max = dizi[ 0 ]; 9. for( i = 1; i < 10; i++ ) { 10. if( min > dizi[i] ) 11. min = dizi[i]; 12. if( max < dizi[i] ) 13. max = dizi[i]; 14. } 15. printf( "En Küçük Değer: %d\n", min ); 16. printf( "En Büyük Değer: %d\n", max ); 17. return 0; 18. }

Soru 39 Klavyeden girilen 10 adet tam sınav notuna göre ortalamanın üstünde olan notları ekrana yazan C programını kodlayınız

Soru 40 İsimleri 1 ile 5 arasındaki numaralar ile gösterilen 5 partinin almış olduğu oyları girdikten sonra 550 Kişilik bir mecliste her bir partinin kaç vekil ile temsil edileceğini oy yüzdelerine göre bulan ve yüzde ve vekil sayısını ekrana bastıran program yazınız. (Not:Yüksek oy alan partinin vekil sayısı yuvarlamada önceliklidir)

Soru 41 Başlangıçta istenilen soru adetine göre rastgele +,-,* ve / işlemi iki haneli sorusu üreten ve bunu soran aldığı cevaba göre sonunda doğru yanlışları gösteren bir matematik oyunu tasarlayın.

Sıralama (Sorting) Bazı uygulamalarda bir grup sayının büyükten küçüğe, veya küçükten büyüğe, doğru sıralanması gerekebilir. Bu tip sıralama problemleri için çeşitli algoritmalar geliştirilmiştir. Sıralama mantığını anlamadan önce bir dizinin en büyük (veya en küçük) elemanının nasıl bulunduğunu inceleyelim.

En buyuk eleman 1. #include <stdio.h> 2. #include <stdlib.h> 3. int main(void) 4. { 5. int a[10] = {34, -420, 42, 12,530, 921, 612, 450, 347, 700}; 6. int k, enbuyukeleman; 7. /* ilk eleman en büyük kabul ediliyor */ 8. enbuyukeleman = a[0]; 9. for(k=1; k<10; k++) 10. if( a[k]>enbuyukeleman ) enbuyukeleman = a[k]; 11. printf("en buyuk eleman = %d\n",enbuyukeleman); 12. system("pause"); 13. return 0; 14. }

Seçerek Sıralama (Selection Sort): 1. #include <stdio.h> 2. #include <stdlib.h> 3. #define n 10 4. int main(void) 5. { 6. int a[n] = {100, -250, 400, 125,550, 900, 689, 450, 347, 700}; 7. int i, j, k, eb; 8. printf("once : "); 9. for(k=0;k<n;k++) printf("%5d ",a[k]); 10. /* Sırala */ 11. for(k=0; k<n; k++){ 12. eb = a[k]; 13. i = k; 14. for(j=k+1; j<n; j++) 15. if( a[j]>eb ){ 16. eb = a[j]; 17. i = j; } 18. a[i] = a[k]; 19. a[k] = eb; } 20. /* Sıralama bitti */ 21. printf("\nsonra: "); 22. for(k=0; k<n; k++) 23. printf("%5d ",a[k]); 24. system("pause"); 25. return 0; 26. }

Soru 42: 4x3 lük bir matrisi kullanıcıdan alıp ekrana matris formunda ekrana bastıran program yazınız.

Soru 43 4x3 lük bir matrisi kullanıcıdan alıp ekrana her bir sütunun toplamını ekrana bastıran program yazınız.

Soru 44 4x4 lük A ve B matrislerini kullanıcıdan alıp ekrana her bir her iki matrisi yazıp ve toplamlarını C matrisine aktaran program yazınız.

Soru 45 3x3 lük bir tamsayı matrisi içersine rastgele 1-100 arası sayı yerleştiren ve ekrana bastıran. Daha sonra köşegenlerinin toplamını ekrana basan program yazınız.

Fonksiyonlar Fonksiyon, belirli sayıda verileri kullanarak bunları işleyen ve bir sonuç üreten komut grubudur. Her fonksiyonun bir adı ve fonksiyona gelen değerleri gösteren argumanları (bağımsız değişkenleri) vardır. Genel olarak bir fonksiyon Şekil 'deki gibi bir kutu ile temsil edilir:

Fonksiyonlar int topla(int x,int y) { int sonuc; sonuc = x + y; return sonuc; }

Fonksiyon Bildirimi Bir fonksiyonun bildirimi iki türlü yapılır: Ana programdan önce:... int topla(int x,int y) /* fonksiyon */ {... } main() {... } Ana programdan sonra: Bu durumda fonksiyon örneği (function prototype) ana programdan önce bildirilmelidir... int topla(int x, int y); /* fonksiyon örneği */ main() {... } int topla(int x, int y) /* fonksiyon */ {... }

Fonksiyon1.c /* iki sayiyi toplar ve sonucu ekranda gösterir */ #include <stdio.h> #include <stdlib.h> int topla(int, int); /*** fonksiyon prototipi ***/ int main() { int toplam,a,b; printf("iki sayi girin : "); scanf("%d %d",&a,&b); /* fonksiyon çagirilip, a ve b degerleri parametre olarak aktariliyor. topla(a,b) = a + b degeri toplam degiskenine atanmasi */ toplam = topla(a,b); printf("%d ve %d nin toplami %d dir.\n", a,b,toplam); system("pause"); return 0; } /*** fonksiyon tanimlanmasi ***/ /* Bu fonksiyon iki tamsayiyi toplar */ int topla( int x, int y ) { int sonuc; sonuc = x + y; return sonuc; }

Fonksiyon2.c 1. /* Basit bankamatik simulasyonu. 2. Istenen para miktarini 20, 10 ve 5'lik birimlere böler 3. ve sonucu ekrana gösterir. */ 4. #include <stdio.h> 5. #include <stdlib.h> 6. void bankamatik(int para) 7. { 8. int a,yirmilik,onluk,beslik; 9. a = para; 10. if(a%5==0) 11. { 12. yirmilik = a/20; 13. a -= yirmilik*20; 14. onluk = a/10; 15. a -= onluk*10; 16. beslik = a/5; 17. a -= beslik*5; 18. printf("\nyirmilik = %d",yirmilik); 19. printf("\nonluk = %d",onluk); 20. printf("\nbeslik = %d\n",beslik); 21. } 22. else 23. printf("girilen miktar 5 YTL ve katlari olmali!\a\n"); 24. /* return deyimi yok!*/ 25. } 26. int main() 27. { 28. int miktar; 29. printf("cekilecek para miktari (YTL) = "); 30. scanf("%d",&miktar); 31. bankamatik(miktar); /* fonksiyon bir degiskene atanmamis! */ 32. system("pause"); 33. return 0; 34. }

Soru 46 En ve boy parametrelerine göre, '*' simgeleriyle dikdörtgen çizen bir fonksiyon yazınız. // Verilen olculere gore, dortgen cizer void dortgen_ciz( int en, int boy ) { int i, j; for( i = 0; i < boy; i++) { for( j = 0; j < en; j++ ) { printf("*"); } printf("\n"); } }

Soru 47 Kendisine argüman olarak verilen bir tamsayıyı tersine çevirip, sonucu ekrana yazacak bir fonksiyon yazınız. // Verilen sayinin tersini ekrana yazar. void sayi_tersini_bul( int sayi ) { while( sayi>0 ) { printf( "%d", sayi%10 ); sayi /= 10; } printf("\n"); }

Soru 48 Kendisine verilen iki sayının OBEB (Ortak Bölenlerin En Büyüğü) değerini hesaplayıp, geriye döndüren fonksiyonu yazınız. 1. // Verilen iki sayinin OBEB'ini bulan fonksiyon 2. int obeb_bul( int sayi_1, int sayi_2 ) 3. { 4. int obeb = 1; 5. int bolen = 2; 6. while( sayi_1 > 1 sayi_2 > 1 ) { 7. // Sayilardan her ikiside, bolen 8. // degiskenine bolundugu takdirde, 9. // obeb hesabina katilir. 10. if( sayi_1 % bolen == 0 && 11. sayi_2 % bolen == 0 ) { 12. obeb *= bolen; 13. sayi_1 /= bolen; 14. sayi_2 /= bolen; 15. } 16. else if( sayi_1 % bolen == 0 ) { 17. sayi_1 /= bolen; 18. } 19. else if( sayi_2 % bolen == 0 ) { 20. sayi_2 /= bolen; 21. } 22. else { 23. bolen++; 24. } 25. } 26. return obeb; 27. }

Soru 49 Ödev Kendisine verilen iki sayının OKEK (Ortak Katların En Küçüğü) değerini hesaplayıp, geriye döndüren fonksiyonu yazınız.

Soru 50 Kendisine parametre olarak gelen bir diziyi, yine parametre olarak bir başka diziye ters çevirip atayacak bir fonksiyon yazınız. 1. #include<stdio.h> 2. void diziyi_ters_cevir( int[], int[], int ); 3. int main( void ) 4. { int i; 5. int liste_1[] = { 6, 7, 8, 9, 10 }; 6. int liste_2[5]; 7. diziyi_ters_cevir( liste_1, liste_2, 5 ); 8. for( i = 0; i < 5; i++ ) { 9. printf("%d ", liste_2[i]);} 10. printf("\n");} 11. void diziyi_ters_cevir( int dizi_1[], int dizi_2[], int boyut ) 12. { int i, k; 13. for( i = 0, k = boyut - 1; i < boyut; i++, k-- ) 14. dizi_2[k] = dizi_1[i];}

Kaynaklar http://www.cagataycebi.com/ http://www1.gantep.edu.tr/~bingul/c/index.php C The Complete Reference Herbert Schildt