Kaynak kitaplar C How to Program C++ How to Program C by Example The C Programing Language C Programlama Dili, Standart C Programlama Dili

Ebat: px
Şu sayfadan göstermeyi başlat:

Download "Kaynak kitaplar C How to Program C++ How to Program C by Example The C Programing Language C Programlama Dili, Standart C Programlama Dili"

Transkript

1 C Programlama 1

2 2 İşlenecek konular Değişken Tipleri, Operatörler, giriş/çıkış ve önişlemci konularının kısaca tekrarlanması Yapılı Programlama ve Program Kontrol Fonksiyonlar Diziler İşaretçiler(göstergeler) Karakter ve Karakter katarları fonksiyonları Yapılar (Structures), Unions, Bit manipülasyonları Dosya işlemleri (file processing) İleri C konuları Uygulama

3 3 Kaynak kitaplar C How to Program, H.M. Deitel and P.J. Deitel, 3rd Edition, Prentice Hall, C++ How to Program, H.M. Deitel and P.J. Deitel, 2nd Edition, Prentice Hall, C by Example, Greg Perry, Que, The C Programing Language, Brian W. Kernigham and Denis M. Ritchie (Türkçesi: Sistem yayıncılık, C Programlama Dili, Rıfat Çölkesen, Papatya Yayıncılık Eğitim, ( Standart C Programlama Dili, C How to Program kitabının slide ları (bu slide lar aynı zaman da slide şeklinde hazırlanan ders notlarının temelini oluşturacaktır. Orjinal slide lar web sitesinden temin edilebilirler)

4 4 Bilgiler ve istekler Dersin resmi web sayfası Ders notları ve dersle ilgili diğer bilgilere bu web sayfasından erişilebilir İki haftada bir ödev verilecek ve ödevler yıl içi notunu etkileyecektir En son ödev öğrenilen tüm bilgileri içerecek şekilde geniş olacaktır Herkes bir adresi alacak ve mümkünse ödevler e- mail ile gönderilecek (text olarak, No Attachment!) Mail adresim: Ders sırasında cep telefonları kapatılacak

5 5 Kullanılacak derleyiciler Visual C++ 5 ve Turbo C derleyicileri kullanılacak Bazı bilgisayarların networkları bozuk olduğundan Visual C++ tüm bilgisayarlara yüklenemedi Turbo C DOS versiyonu community.borland.com web sitesinden üçretsiz olarak temin edilebilir (search for antique Turbo C!!!) (veya google dan turbo C yazın!)

6 6 Visual C++ da Yeni Dosya Açma Visual C++ başlatın Visual C++ sın File menusunden New ı seçin. (File menusunu kullanın, toolbardaki New File (yeni dosya) iconunu kulanmayınız. Toolbardaki iconun dezavantajı dosyayı saklamayana kadar C terimlerinin değişik renkte gözükmemesidir. New dialog penceresi göründüğünde Files opsiyonuna tıklayınız. C++ Source File opsiyonuna tıklayınız File name kutusuna dosyanıza vereceğiniz ismi girin Location kutusuna dosyanızı kaydetmek istediğiniz klasörü girin. Boş bir dosya açılacaktır. Yazmak istediğiniz programı yazın.

7 7 Visual C++ da Yeni Dosya Açma Program bittikten sonar Compile ediniz Visual C++ bir pencere açar ve default projects workspace açmak isteyip istemediğinizi sorar. Buna evet deyin. Programda olan hatalari (eğer varsa) ve uyarıları Status çubuğudan (pencerenin alt kısmında) kontrol edebilirsiniz. Hata var ise bu hatalari gideriniz ve yeniden Compile ediniz. Eğer hata yok ise programı Execute ediniz. Exe dosyasını oluşturmak istiyormusunuz kutusu geldiğinde evet deyin. Programın çıktısı MSDOS penceresinde görünür

8 8 Visual C++ derleyicisinde ilk program /* Visual C++ taki ilk proram Ekrana kendi ismini yazma */ #include <stdio.h> // #include <iostream.h> int main() { printf( isim soyad ); // cout << isim soyad \n ; return 0 }

9 1 C ye Giriş Değişkenler ve Sabitler Tipler İşlemler Giriş ve Çıkışlar Önişlemci Direktifleri

10 2 Değişkenler Kullanılmadan önce tüm değişkenler tanımlanmalıdır. Her değikenin bir adı olmalı Her değişkenin bir tipi olmalı Her değişken sakladığı bir değere sahiptir Değişkenlerin ismi 1 harften 31 harfe kadar olabilir. İsim bir harfle başlamalıdır; sayı ve _ alt çizgi içerebilirler. Boşluk içeremezler. Eğer değişken fonksiyondan önce tanımlanmış ise global değişken olur. Örnek: int main() { int i, j; char c; float x; // programın geri kalan kısmı }

11 Değişken tipleri 3 C`deki bazı değişken tipleri Tanımlama adı char unsigned char signed char int unsigned int signed int short int unsigned short int signed short int long long int signed long int unsigned long int float double long double Tip Karakter İşaretsiz Karakter İşaretli Karakter Tam sayı İşaretsiz tamsayı İşaretli tamsayı Kısa tamsayı İşaretsiz kısa tamsayı İşaretli kısa tamsayı Uzun tamsayı Uzun tamsayı (long la aynı) İşaretli uzun tamsayı (long int la aynı) İşaretsiz uzun tamsayı Gerçel (real) sayı Çift real sayı Uzun real çift sayı

12 4 Değişkenler Diğer programlama dilerinden farklı olarak C karakter katarları değişkenlerine sahip değildir. Karakter değişkenlerine bir karakterden fazla karakter atanamaz. Tabloda gösterilen değerler tipik değerlerdir. Fakat bunlar bilgisayardan bilgisayara ve derleyiciden derleyiciye farklılıklar gösterebilirler Tanımlama adı Değer aralığı char -128 to 127 unsigned char 0 to 255 signed char -128 to 127 int to unsigned int 0 to signed int to short int to unsigned short int 0 to signed short int to long int to signed long int to float -3.4E+38 to 3.4E+38 double -1.7E+308 to 1.7E+308 long double -1.7E+308 to 1.7E+308

13 5 Karakter katarları Sabitleri Karakter katarları (birden fazla karakter) sabitleri her zaman iki tırnak işareti arasında gösterilirler. Örneğin: C programlama Tüm karakter katarları sabitleri sıfır ile biter. Fakat siz bu sıfırı görmezsiniz. C programlama hafızada şöyle saklanır C p r o g r a m l a m a 0 Sıfır olmadan C, karakter katarlarının nerde bitiğini göremez. Burdaki sıfır (ASCII null), ASCII 48 0 sıfırından farklıdır

14 6 Karakter sabitleri Tüm karakter sabitleri tek tırnak arasında gösterilmelidir ( R ) R ve R C de çok farklıdır. \ (ters bölü) den sonra gelen karakterlere kontrol karakterleri denir. Özel bazı karakterleri yazdırmak için kullanılırlar. Örnek: \xa0 á \a terminal zili (Alarm) \b Bulunduğu satırda bir basamak geri gitme (Backspace) \f Satır besleme (Form feed) \n Yeni satır (Newline) \r Bulunduğu satırın başına gider (Carriage return) \t tab \v Dikey tab (Vertical tab)

15 İşlemler 7 C Matematiksel işlemleri C işlemi İşlem sırası Aritmetik işlem Algebrik yazılım C yazılımı Toplama + f + 7 f + 7 Çıkarma - p c p - c Çarpma * bm b * m Bölme / x / y x / y Mod % r mod s r % s İşlem(ler) işlemler(ler) Hesaplama sırası (precedence) () parantez Ilk önce parantez işlemi yapılır. İç içe bir kaçtane varsa en içteki önce yapılır. *, /, veya % Çarpma, Bölme, Mod İkinci olarak hesaplanırlar. Eğer birkaçtane varsa soldan sağa doğru gidilir + veya - Toplama Çıkarma Enson işlem yapılır. doğru gidilir Eğer birkaçtane varsa soldan sağa

16 8 Eşitleme işlemleri Eşitleme-tayin etme işlemleri eşitleme cümlesini kısaltmak için kullanılır c = c + 3; c += 3; şeklinde ifade edilebilirler Diğer eşitleme işlemleri: d -= 4 (d = d - 4) e *= 5 (e = e * 5) f /= 3 (f = f / 3) g %= 9 (g = g % 9)

17 9 Artırma ve Azaltma işlemleri Artırma işlemi (++) c+=1 yerine kulanılabilir Azaltma işlemi (--) c-=1 yerine kulanılabilir ön artırma işlem değişkenden önce kullanılır (++c veya --c) Değişken bulunduğu cümle hesaplanmadan önce değişir sondan artırma işlem değişkenden sonra kullanılır (c++ or c--) Cümle, değişken değişmeden once hesaplanır

18 10 Artırma ve Azaltma işlemleri Eğer c=5 ise, printf( "%d", ++c ); sonuç 6 printf( "%d", c++ ); Sonuç 5 Her iki durumdada c nin değeri şimdi 6 dır Değişken hesaplamanın içinde değil ise Ön artırma ve sondan artırma aynı sonucu verir ++c; printf( %d, c ); ile c++; printf( %d, c ); aynidır

19 11 Karşılaştırma işlemleri Dataları karşılaştırma için kullanılırlar = = Eşittir > Büyüktür < Küçüktür >= Büyüktür veya eşittir <= Küçüktür veya eşittir!= Eşit değildir

20 12 Mantık işlemleri Birden fazla karşılaştırma işleminin sonucunu karşılaştırma için kullanılırlar && Ve Veya! Değil

21 13 Giriş ve Çıkış printf() standart çıktı aletine ki bu genelde ekrandır data gönderir. printf(kontrol_katarı, bir veya birden fazla değer); Karakter katarı print etme printf( Malatya bu yil çok karlı ) printf() te kullanılan çevirim karakterleri : %s karakter katarı veya karakter çıktısı için kulanılır printf( %s, C Zevklidir!\n ); %c -karakter çıktısı için kulanılır printf( %c %c, A, B );

22 Giriş ve Çıkış 14 Çevirim karakterleri : %d tam sayı çıktısı için kulanılır printf( Adım Ahmet, universite %d öğrencisiyim, 3); %f real sayılar çıktısı için kulanılır printf( %f, ); %e exponential real sayılar çıktısı için kulanılır printf( %e, 2345); %g %f veya %e kısasını kullanır %u işaretsiz tam sayılar çıktısı için kulanılır %o oktal tam sayılar çıktısı için kulanılır %x hexadecimel tam sayılar çıktısı için kulanılır %% %işaretini print eder

23 15 Giriş için scanf() kullanılması scanf() program kullanıcısının klavyeden data girişini sağlar scanf() ile printf() birbirine benzer. Kontrol_katarı hangi tip datanın klavyeden geleceğini belirtir. scanf() hemen hemen printf() ile aynı çevirim karakterlerini kullanır. Değişken adlarından önce her zaman & işareti kullanılmalıdır. Dizi (array) için kullanılmaz. scanf( "%d", &integer1 );

24 16 Ön işlemci direktifleri Ön işleme Program derlenmeden önce işleme konurlar Diğer dosyaların programa eklenmesi Sembolik sabit ve makroların tanımlanması Program parçasının şartlı derlenmesi Ön işlemci direktiflerin şartlı hesaplanması Ön işlemci komutların formatları satır # ile başlar sütun da genelde # başlar, yalnızca boşluk olabilir.

25 #include ön işlemci komutu 17 #include Belirtilen dosyanın kopyası ön işlemci komutunun yerine konur #include <dosya_adı> Dosyayı standart kütüphanesinde arar standart kütüphanesindeki dosyalar için kullanılır #include dosya_adı" Önce dosyayı programın derlendiği klasörde, sonra standart kütüphanede Kullanıcının (programcının) tanımladığı dosyalar için kullanılır kullanış: Birçok program dosyasından oluşan programların birlikte derlenmesi başlık dosyası ortak deklerasyon ve tanımlar içeren dosyalarda (yapılar, fonksiyon protitipleri) #include tüm dosyalarda

26 18 #define ön işlemci komutu : sembolik sabitler #define Bu ön işlemci komutu sembolik sabit ve makroları oluşturmak için kullanılır Sembolik sabitler Program derlendiği zaman, sembolik sabitlerin geçtiği kısımlar tanımlanan metin ile değiştirilir (tip tanımlamaya gerek kalmaz) Format #define tanımlanan yeralacak-metin örnek: #define PI Tanımlananın sağındaki herşey yer-alacak-metin olarak algılanır #define PI = PI yerine "= alır Bir defa oluşturulan sembolik sabitler tekrar tanımlanamazlar (programın içerisinde)

27 19 #define ön işlemci komutu : makrolar Makro #define de tanımlanan operasyondur Değişkensiz makro sembolik sabit gibi işlem görür Değişkenli makronun değişkeni yer-alacak-metinde kullanılır Yer-alacak-metin işlem görür, data tipi kontrol edilmez makro #define CIRCLE_AREA( x ) ( PI * ( x ) * ( x ) ) tanımı area = CIRCLE_AREA( 4 ); komutunun area = ( * ( 4 ) * ( 4 ) ); yapar

28 20 #define ön işlemci komutu : makrolar Birçok değişkenli makro #define RECTANGLE_AREA( x, y ) ( ( x ) * ( y ) ) tanımı rectarea = RECTANGLE_AREA( a + 4, b + 7 ); komutunun rectarea = ( ( a + 4 ) * ( b + 7 ) ); #undef Tanımlanan sembolik sabit veya makro yu tanımsız hale getirir Eğer sembolik sabit veya makro tanımsız yapılmış ise daha sonra yeniden tanımlanabilirler

29 Şartlı Derleme Şartlı derleme Ön işlemci komutlarını ve derlemeyi kontrol eder sizeof ön işlemci komutlarında hesaplanamaz Yapıları if gibidir #if!defined( NULL ) #define NULL 0 #endif Sembolik sabit NULL ın tanıplanıp tanımlanmadığını bakar Eğer NULL tanımlanmış ise, defined( NULL ) 1 değerini alır Eğer NULL tanımlanmamış ise, bu fonksiyon NULL değerini sıfır (0) olarak tanımlar Her #if, #endif ile bitmeli #ifdef #if defined( name ) #ifndef #if!defined( name ) 21

30 22 Şartlı Derleme Diğer tanımlar #elif if yapısındaki else if gibi #else if yapısındaki else gibi Programın bir kısmını yok sayma Programdaki bir kısım yazılım kullanılmak istenmezse ve program eski stil açıklama (comment) içeriyorsa, /*... */ kullanılamaz Onun yerine #if 0 Programdan çıkarılan kısım #endif Yazılım parçasını tekrar kullanmak için, 0 ı 1 e çevirmek yeterli

31 Formatlı çıktı 23 Çıktının boyutu çevirim karakterinin önüne yazılacak bir işaretsiz tamsayı ile kontrol edilebilir. Tamsayı gerekli en az boyutu belirtir. Eğer bilginin uzunluğu belirtilenden kısa ise önüne belirtilen boyutu tamamlayacak kadar boşluk bırakılır. Eğer bilginin uzunluğu belirtilenden uzun ise bilginin hepsi gösterilecek kadar yer ayrılır.

32 Formatlı çıktı 24 #include <stdio.h> int main() { int i=12345; float x= ; printf("%3d %5d %8d\n\n", i, i,i); printf("%f %10f %13f\n\n",x,x,x); return 0; }

33 25 Formatlı çıktı Real sayıların ondalık kısmının uzunluğuda kontrol edilebilir. printf("%f %.1f %.3f\n\n",x,x,x); Çevirim karakterinin önüne yazılan tamsayının önüne (-) konulması boşluğun önde değil bilgiden sonra olacağını belirtir printf("%3d %-5d %-8d\n\n", i, i,i);

34 Örnek program /* borcun faizinin hesaplanmasi */ #include <stdio.h> int main() { int gunler=45; // borcun uzerinden gecen gun sayisi float borc = ; // alinan borc float faiz_orani=0.155; // yillik faiz float gunluk_faiz; // gunluk faiz 26 } gunluk_faiz=faiz_orani/365; // floating-point degeri hesapla // gunler int oldugundan, float a cevrilir gunluk_faiz = borc * gunluk_faiz * gunler; borc+=gunluk_faiz; // faizlerle birlikte yeni borcu hesapla printf( Toplam borc %.2f", borc); return 0;

35 1 Yapısal Programlama ve Seçmeli Yapı Kontrol Yapısı If Komutlu yapı If/Else Komutlu yapı Çoktan Seçmeli switch yapısı örnekler

36 2 Kontrol Yapısı Sırasal hesaplama Komutlar yazıldıkları sıraya göre bir biri ardına hesaplanır Kontrolun aktarılması Hesaplanan komutun bir sonraki komut olmaması goto komutunun aşırı kullanılması birçok probleme sebep olmuştur, iyi programlama tekniğinde kullanılması tercih edilmez Bütün programlar 3 değişik kontrol yapısı ile yazılabilir (Bohm ve Jacopini) Sırasal yapı: C nin doğal ozelliği. Programlar sırasıyla hesaplanır Seçmeli yapı: C de 3 tip vardır: if, if/else, ve switch Tekrarlamalı yapı : C de 3 tip vardır: while, do/while ve for

37 3 if Seçmeli Yapı Seçmeli yapı: Alternatif komutlar arasinda seçim yapmak için kullanılır. Algoritma: Eğer öğrencinin notu > 60 Print Gecti Eğer karşılaştırma doğru ise Print komutu işleme konur ve sonraki komuta geçer Eğer yanlış ise, Print komutu işleme konmaz ve sonraki komuta geçer Yanlış 0, doğru ise sıfırdan farklı herhangi bir değerdir C cümlesi: if ( not >= 60 ) printf( Gecti\n" );

38 if Seçmeli Yapı 4 if yapısı tek-giriş/tek-çıkış yapılıdır not >= 60 doğru print Gecti yanlış

39 5 if/else Seçmeli Yapı if Yalnızca karşılaştırma doğru olduğunda işlem yapar if/else Belirli bir işlemin, sonucun doğru veya yanlış olmasına bağlı olarak yapılmasını sağlar Algoritma: Eğer öğrencinin notu >= 60 Print Gecti Değilse Print Kaldi

40 6 if/else Seçmeli Yapı C kodlama: if ( not >= 60 ) else printf( Gecti\n"); printf( Kaldi\n"); Durum operatorü (?:) Üç tane arguments alır (şart, sonuç eger doğru ise, sonuç eğer yanlış ise) Yukarıdaki kodlama C de şöyle yazılabilir: not >= 60? printf( gecti\n ) : printf( kaldi\n );

41 if/else Seçmeli Yapı 7 if/else seçmeli yapının akış diagramı yanlış not >= 60 doğru print kaldi print gecti

42 8 if/else Seçmeli Yapı Birçok cümleli yapıya örnek: if ( not >= 60 ) printf( gecti.\n" ); else { } printf( kaldi.\n" ); printf( bu dersi yeniden almalisiniz.\n" ); Parantez olmadan else ten sonraki cümle printf( " bu dersi yeniden almalisiniz.\n" ); Otamatik olarak işlenir

43 switch -Çoktan Şeçmeli Yapı 9 switch Değişkenin alabileceği muhtemel değerler test ediliyorsa ve sonuca göre değişik işlem uygulanıyorsa switch kullanılabilir Format Bir dizi case etiketi ve seçmeli default etiketi switch ( değer ){ case '1': işlemler; case '2': işlemler; default: işlemler; } break; yapıdan çıkmayı sağlar

44 switch -Çoktan Şeçmeli Yapı 10 switch yapısının akış diagramı doğru case a işlem(ler) break yalnış doğru case b işlem(ler) break yanlış... doğru case z işlem(ler) break yanlış default işlem(ler)

45 switch -Çoktan Şeçmeli Yapı 11 switch yapısının break kullanılmayan akış diagramı case a yalnış doğru işlem(ler) case b yanlış doğru işlem(ler) case z yanlış doğru işlem(ler) default işlem(ler)

46 /* harfli notları sayma */ #include <stdio.h> 12 int main() { char not; int asay = 0, bsay = 0, csay = 0, dsay = 0, fsay = 0; printf( Notun harfini girin.\n"); scanf( %c,&not); switch ( not ) { /* döngü kullanılmadığından switch bir defa yapılır*/ case 'A': case 'a': /* girilen not A */ ++asay; /* veya a */ break; case 'B': case 'b': // girilen not B ++bsay; // veya b break;

47 13 case 'C': case 'c': /* girilen not C */ ++csay; /* veya c */ break; } } case 'D': case 'd': /* girilen not D */ ++dsay; /* veya d */ break; case 'F': case 'f': /* girilen not F */ ++fsay; /* veya f */ break; case '\n': case' ': // bu girişleri işleme koyma break; default: // diğer tüm karakterleri için printf( Yanlis not harfi girildi." ); printf( " Yeni notu girin.\n" ); break;

48 14 printf( "\nher harf notu icin toplamlar:\n" ); printf( "A: %d\n", asay ); printf( "B: %d\n", bsay ); printf( "C: %d\n", csay ); printf( "D: %d\n", dsay ); printf( "F: %d\n", fsay ); return 0; }

49 /* girilen iki sayının karşılaştırılması */ 15 #include <stdio.h> int main() { int x, y; printf( iki sayi giriniz ); scanf( %d %d, &x,&y); if( x == y ) printf( \ngirilen iki sayi bir birine esittir\n ); if( x < y ) printf( ilk sayi ikincisinden kucuktur\n ); if( x > y ) printf( ilk sayi ikincisinden buyuktur\n ); return 0; }

50 /* girilen iki sayının karşılaştırılması-ic ice if ler */ 16 #include <stdio.h> int main() { int x, y; printf( iki sayi giriniz ); scanf( %d %d, &x,&y); if( x == y ) printf( \ngirilen iki sayi bir birine esittir\n ); else if( x < y ) printf( ilk sayi ikincisinden kucuktur\n ); else if( x > y ) printf( ilk sayi ikincisinden buyuktur\n ); return 0; }

51 /* hafizadaki sayiyi tahmin etme */ 17 #include <stdio.h> int main() { int x; printf( sayiyi tahmin ediniz ); scanf( %d, &x); if( x == 26 ) printf( \ntebrikler sayiyibildiniz!!!\n ); else if( x < 26) printf( Sayidan kucuk deger girdiniz\n ); else if( x > 26 ) printf( Sayidan buyuk deger girdiniz \n ); return 0; }

52 /* Daire veya kare alanini hesaplama */ #include <stdio.h> int main() { char secim; float r; printf( \ndaire alani hesaplamak icin D\n ); printf( \nkare alani hesaplamak icin K\n ); scanf( %c, &secim); if( (secim == D ) (secim == d ) ){ printf( dairenin yaricapini giriniz scanf( %f,%r); printf( dairenin alani=%f\n,3.14*r*r); } if( (secim == K ) (secim == k ) ){ printf( karenin kenarini giriniz\n ) scanf( %f,%r); printf( Karenin alani=%f\n,r*r); } if( (secim!= D ) (secim!= d ) (secim!= K ) (secim!= k ) ) printf( yanlis secim girdiniz\n ); return 0; } 18

53 Program Kontrol 1 Giriş Tekrarlamanın önemi Kontrollü Saymalı Tekrarlama for tekrarlamalı yapı for yapısı: Notlar for yapısı ile ilgili örnek çoktan seçmeli switch yapısı do/while tekrarlama yapısı break ve continue komutları özet-yapılı programlama

54 2 Giriş Bu kısımda işlenecekler Kontrollu tekrarlama yapıları For while do/while break komutu Belirli bir kontrol yapısından anında ve hızlı bir şekilde çıkışı sağlar continue komutu Tekrarlama yapısının kalan kısmını atlamayı ve döngünün geri kalan kısmından devam eder

55 3 Tekrarlamanın önemi Döngü Bilgisayarın bazı şartların doğru olduğu sürece tekrarladığı komutlar grubu Programcı belirli bazı işlemlerin (hesaplamalarin) bazı değerlerin (veya bir değerin) doğru olmasına bağlı olarak tekrarlamasını ister Kontrollü saymalı tekrarlama Belli sayıda tekrarlama: döngünün kaç defa tekrarlanacağı bilinir Tekrarlamanın sayılması için Kontrol değişkeni kullanılır Bilgi sonunu belirten kontrollü tekrarlama Tekrarlama sayısı bilinmeyen durumlarda kullanılır Bilgi sonunu belirten değer döngü sonunu belirtmek için kullanılır

56 4 Tekrarlama Kontrollü saymalı tekrarlama için gerekenler Kontrol değişkeninin adı (döngü sayıcısı) Kontrol değişkenin ilk değeri Son değeri kontrol eden şart (döngü devam etmelimi etmemelimi) Kontrol değişkeninin değerini döngüde değiştirmek için Artırma (veya azaltma)

57 5 for Tekrarlama Yapısı for döngüsü koşulu önceden belirlenen tekrarlamalarda kullanılır for dögüsünün formatı for ( ilkdeğer; döngüdevamtesti; artırma ) komut(lar); örneğin: for( sayici = 1; sayici <= 10; sayici++ ) printf( "%d\n", sayici ); 1 den 10 a kadar olan tamsayilari print eder Noktalı virgül (;) olmamasına dikkat ediniz

58 6 for Tekrarlama Yapısı İlkdeğer ve artırma Virgül ile ayrılmış değerler olabilirler örneğin: for (int i = 0, j = 0; j + i <= 10; j++, i++) printf( "%d\n", j + i );

59 7 for Yapısı: Notlar Aritmetik ifadeler İldeğer(başlama), döngü-devam testi, ve artma aritmetik ifade içerebilir. Eğer x 2 ye ve y 10 a eşit ise for ( j = x; j <= 4 * x * y; j += y / x ) şartı Notlar: for ( j = 2; j <= 80; j += 5 ) artırma" negatif (azaltma) olabilir Eğer devam şartı başlangıçta yanlış ise for yapısı hesaplanmaz (işleme konmaz) Kontrol for yapısından sonraki komuta geçer Kontrol değişkenleri şartına eşittir Sıklıkla print edilir veya döngü içinde kullanılırlar, fakat şart değildir.

60 8 /* for yapisi ile çift sayıların toplamı */ #include <stdio.h> int main() { int toplam = 0, sayi; for ( sayi = 2; sayi <= 100; sayi += 2 ) toplam += sayi; printf( Toplam %d dir\n ", toplam ); } return 0;

61 9 while Tekrarlama Yapısı Tekrarlama yapısı for döngüsü while dongusu ile yapılabilir Algoritma: While alış-veriş listemde alınacak malzemeler daha var ise bir sonraki malzemeyi al ve listeden sil while döngüsü durum yanlış olana kadar devam eder

62 10 while Tekrarlama Yapısı örnek: int kati = 2; while ( kati <= 1000 ) kati = 2 * kati; kati <= 1000 doğru kati = 2 * kati yanlış

63 11 Örnek problem örnek: 10 öğrencisi olan sınıfta quiz yapılıyor. Sınıfın ortalamsını bulunuz. Algoritma: A1: Toplam, not_sayicisi, Not, ortalama tanimla A2: Toplam 0, not_sayicisi 1 A3: not_sayıcısı <=10 olduğu sürece bir sonraki notu giriniz Toplam Toplam + Not not_sayicisi not_sayicisi + 1 A4: ortalama (Toplam/10) A5: ortalama yaz A6: bitir

64 /* 10 tane ogrencinin not ortalamasini 12 bulan program */ #include <stdio.h> int main() { int not_sayicisi, not, toplam, ortalama; /* baslama degerleri */ toplam = 0; not_sayicisi = 1; /* hesaplama kismi */ while (not_sayicisi <= 10 ) { printf( Notu giriniz: " ); scanf( "%d", &not ); toplam = toplam + not; not_sayicisi = not_sayicisi + 1; } /* bitirme kismi */ ortalama = toplam / 10; printf( sinif ortalamasi %d\n", ortalama ); return 0; /* program basari ile bitmistir */ }

65 13 Öğrenci sayısı belli olmayan örnek A1: toplam, not_sayicisi, not, ortalama tanimla A2: toplam 0, not_sayicisi 0 A3: İlk not u giriniz (bitirmek için çıkış_sayisi giriniz)) A4: kullanıcı çıkış_sayisi girmediği sürece toplam toplam + not not_sayicisi not_sayicisi + 1 bir sonraki not u giriniz (bitirmek için çıkış_sayisi giriniz) A5: Eğer not_sayicis sıfıra eşit değil ise Değilse A6: Bitir ortalama toplamın / not_sayicisi ortalama yaz hiç bir not girilmedi yaz

66 14 /* ogrenci sayisi bastan bilinmeyen dersin ortalamasi */ #include <stdio.h> int main() { float ortalama; int not_sayici, not, toplam; /* baslama degerleri */ toplam = 0; not_sayicisi = 0; /* hesaplama kismi */ printf( Notu giriniz, bitirmek icin -1 giriniz: " ); scanf( "%d", &not ); while ( not!= -1 ) { toplam += not; not_sayici++; printf( Notu giriniz, bitirmek icin -1 giriniz: " ); scanf("%d", &not); }

67 15 /* bitirme kismi */ if ( not_sayici!= 0 ) { ortalama = ( float ) toplam / not_sayici; printf( Sinif ortalamasi %.2f", ortalama ); } else printf( Herhangi bir not girilmedi\n" ); } return 0; /* program basari ile bitmistir */

68 /* while ve switch kullanilarak harfli notları sayma */ #include <stdio.h> 16 int main() { int not; int asay = 0, bsay = 0, csay = 0, dsay = 0, fsay = 0; printf( Notun harfini girin.\n" ); printf( Notlarin girisini bitirmek icin 1 girin.\n" ); while ( ( not = getchar() )!= `1` ) { switch ( not ) { /* while içinde switch*/ case 'A': case 'a': /* girilen not A */ ++asay; /* veya a */ break; case 'B': case 'b': // girilen not B ++bsay; // veya b break;

69 case 'C': case 'c': /* girilen not C */ ++csay; /* veya c */ break; 17 case 'D': case 'd': /* girilen not D */ ++dsay; /* veya d */ break; case 'F': case 'f': /* girilen not F */ ++fsay; /* veya f */ break; case '\n': case' ': // bu girişleri işleme break; } } default: // diğer tüm karakterleri için printf( Yanlis not harfi girildi." ); printf( " Yeni notu girin.\n" ); break;

70 18 printf( "\nher harf notu icin toplamlar:\n" ); printf( "A: %d\n", asay ); printf( "B: %d\n", bsay ); printf( "C: %d\n", csay ); printf( "D: %d\n", dsay ); printf( "F: %d\n", fsay ); return 0; }

71 19 do/while Tekrarlama Yapısı do/while tekrarlama yapısı while yapısına benzer Şartlı kısım döngü bir defa yapıldıktan sonra test edilir Format: do { Bütün işlemler en az bir defa yapılır işlemler(komutlar); } while ( şart ); örnek (say = 1 ise): do { printf( "%d ", say ); } while (++say <= 10); 1 den 10 a kadar print eder

72 do/while Tekrarlama Yapısı 20 do/while tekrarlama yapısının akış diagramı işlem(ler) şart doğru yanlış

73 21 /* do/while tekrarlama yapisinin kullanilmasi */ #include <stdio.h> int main() { int sayici = 1; do { printf( "%d ", sayici ); } while ( ++sayici <= 10 ); } return 0;

74 22 break ve continue komutu break while, for, do/while veya switch yapılarından ani çıkışı sağlar Program işlemlerine, yapıdan sonraki ilk işlemle devam eder break cümlesinin genel kullanımı Döngüden erken kurtulma switch yapısının geri kalan kısmını pas geçmek

75 23 break ve continue komutu continue while, for veya do/while yapılarında döngü içinde geri kalan kısımları pas geçer Döngüdeki diğer şarta geçer while ve do/while for Döngü devam testi continue işleme konur konmaz test edilir Artırma ifadesi işleme konur, sonra döngü devam testi yapılır

76 /* continue komutunun for yapisinda kullanilmasi */ #include <stdio.h> 24 int main() { int x; for ( x = 1; x <= 10; x++ ) { } if ( x == 5 ) continue; /* dongudeki diger kodlari eger x == 5 ise pas gec */ printf( "%d ", x ); } printf( "\n5 i print etmemek icin continue kullanilmasi\n" ); return 0;

77 25 Özet-Yapılı Programlama Yapılı programlama Yapısız programa göre test etmesi, derlemesi ve değiştirilmesi daha kolay Yapılı programlama için kurallar 1. En basit akış diagramı ile başlayın 2. Herhangi bir dikdörtgen (işlem grubu) iki dikdörtgen (işlemler grubu) ile değiştirilebilir. 3. Herhangi bir dikdörtgen (işlem grubu) herhangi bir kontrol yapısı ile değiştirilebilir (sıralı, if, if/else, switch, while, do/while veya for) 4. Kural 2 ve Kural 3 herhangi bir sıra şeklinde ve birçok defa uygulanabilir

78 Özet-Yapılı Programlama 26 Kural 1 en basit akış diagramıyla başlayın Kural 2 herhangi bir dikdörtgen iki dikdörtgenle değiştirilebilir Kural 2 Kural 2 Kural 2...

79 Özet-Yapılı Programlama 27 Kural 3 Kontrol yapısı herhangi bir Dikdörtgenin yerini alabilir Kural 3 Kural 3 Kural 3

80 28 Özet-Yapılı Programlama Bütün programlar 3 tane kontrole ayrışabilirler Sıralı (Ardışık) derleyici tarafından otomatik olarak yapılır Seçme if, if/else veya switch Tekrarlama while, do/while veya for İki yolla birleştirilebilirler İç içe gömme (Kural 3) küme (Kural 2) Herhangi bir seçme if ile yeniden yazılabilir, ve herhangi bir tekrarlama while ile yeniden yazılabilir

81 1 Fonksiyonlar Giriş C de Program Modülleri Fonksiyonlar Fonksiyon tanımlanması Fonksiyon prototipi Fonksiyonun Çağrılması: Değer ile çağrılması ve Adres (Referans) ile çağrılması Rasgele (Random) sayı üretilmesi Değişkenlerin Faaliyet Alanı Global ve Yerel (Lokal) Değişkenler Saklama sınıfları Faaliyet alanı kuralları Döngü ve özyineleme (recursion) karşılaştırılması

82 2 Giriş Küçük parçalara bölmek Programı küçük parçalardan veya elemanlardan oluşturun Bu küçük parçalar modül alarak adlandırılır Parçaları kontrol etmek değiştirmek orjinal programdan daha kolaydır C de main() ana fonksiyonunun altında çalışan kendi fonksiyonlarının yazma ihtiyacı main() fonksiyonun asıl amacı içindeki modüllerin hesaplanmasının kontrolu Fonksiyona gitme ve geri dönmek

83 3 C de Program Modülleri Fonksiyonlar C de Modüller fonksiyonlar olarak adlandırılır Programlar kulanıcı tanımlı fonksiyonları C kütüphanesindeki fonksiyonlarla birleştirir (ortak kullanım) C standart kütüphanesi geniş değişik fonksiyonlara sahiptir Fonksiyonun çağrılması (fonksiyona gitme) Fonksiyonun adı ve parametrelerinin sağlanması Fonksiyonlar yapılması istenen işlemi yapar Fonksiyon sonuçlari getirir Fonksiyonun çağrılmasınin kıyaslanması: Öğretmen öğrencilerden verilen problemleri çözmelerini ister Öğrenciler çözüm yollarını araştır, problemleri çözer, sonuçları getirirler Detayların saklanması: öğretmen detayları bilmez

84 Fonksiyonlar 4 Fonksiyonlar Programı modüller haline getirmek Fonksiyon içinde tanımlanan tüm değişkenler yereldir Sadece tanımlandıkları fonksiyon tarafından bilinirler Parametreler Fonksiyonlar arasında haberleşmeyi sağlarlar Yerel değişkenler Fonksiyonun yararları Böl ve yönet Hakim olunabilecek program geliştirmek Yazılımın tekrar kulanılması Hazır fonksiyonlarin yeni programları yazmak için kullanılması Detayların saklanması(kütüphane fonksiyonları gibi) Yazılım tekrarından kaçınılması (Tekerleği yeniden icat etmeme!)

85 5 Fonksiyon tanımlanması Fonksiyon tanımlama formatı Gerigelen-değer-tipi fonksiyon-adı( parametre-listesi ) { değişkenlerin tanımlanması ve komutlar } Fonksiyon-adı: fonksiyon adı tanımlanırken değişkenlerin adlandırılmasındaki kurallar uygulanır Gerigelen-değer-tipi: sonuçun data tipi (belirtilmediği zaman tamsayı (int) varsayılır) void fonksiyonun her hangi bir bilgi geri göndermediğini belirtir Parametre-listesi: virgül ile ayrilmış liste, kullanılan parametreler tanımlanır Her parametre için tip açıkça belirtilmelidir (int tipi hariç, belirtilmese olur)

86 6 Fonksiyon tanımlanması Değişkenlerin tanımlanması ve komutlar: Fonksiyon bloku Değişkenler blok içinde tanımlanabilirler Fonksiyonun içinde başka fonksiyonlar tanımlanamaz Dönüş kontrolu Herhangi bir sonuç geri dönmuyor ise return; veya, fonksiyon blok parantezi sonuna ulaştığında Eğer sonuç geri dönüyor ise return işlem(veya değişken);

87 örnek /* girilen 3 sayinin enbüyüğünün bulunmasi */ #include <stdio.h> 7 int enbuyuk( int, int, int ); /* fonksiyon prototipi */ int main() { int a, b, c; printf( Uc tane sayi giriniz: " ); scanf( "%d%d%d", &a, &b, &c ); printf( Sayıların enbüyüğü : %d\n", enbuyuk( a, b, c ) ); } return 0; /* Enbuyuk fonksiyonunun tanimi */ int enbuyuk( int x, int y, int z ) { int max = x; if ( y > max ) max = y; if ( z > max ) max = z; } return max;

88 Fonksiyon Prototipi 8 Fonksiyon prototipi Fonksiyon adı Parametreler fonksiyonun aldığı (kulandığı) değişkenler Dönüş tipi fonksiyonun gönderdiği data tipi (varsayılan int) Fonksiyonların doğru kullanıp kullanmadıklarını kontrol için kullanılır Prototip eğer fonksiyon programda kullanıldıktan sonra tanımlanmış ise gereklidir örneğin int maximum( int, int, int ); 3 tane tama sayı Dönen data tamsayı Çevirme Datalarin daha düşük tipe çevrilmesi, hatalı sonuç verebilir

89 9 Fonksiyon Prototipi Fonksiyon prototipini her zaman tanımlamanız gerekmez ama iyi bir programlama tekniği olarak önerilmektedir Fonksiyon prototipi programlama hatası yapmanızı engeller C çok güçlü bir derleyeciye sahip olmasına rağmen fonksiyon prototipi olmadan yanlış data gondermenize engel olmaz Sonuç: tüm fonksiyonlarınızı prototipleyiniz

90 Fonksiyonun Çağrılması: Değer ile çağrılması ve Adres (Referans) ile çağrılması 10 Fonksiyona gidildiğinde kullanılırlar Değer ile çağırma Değişkenlerin kopyası fonksiyona gönderilir Fonksiyondaki deşiklikler orjinallerini etkilemez Fonksiyon, gönderilen değişkenler üzerinde değişiklik yapmayacak ise kullanılır Yanlışlıkla yapılacak değişikliklerden kaçınılır Adres ile çağırma Değişkenlerin adresleri (Orjinalleri) gönderilir Fonksiyondaki değişiklikler orjinallerini etkiler Sadece güvenilen fonksiyonlarda kullanılır Biz şimdilik değer ile çağırma yöntemini kullanacagız.

91 11 Rasgele Sayi Üretilmesi rand fonksiyonu <stdlib.h> başlık dosyasını yükletin 0 ve RAND_MAX (en az 32767) arasında herhangi bir "rasgele" sayısına döner i = rand(); 0 ve RAND_MAX arasında her sayının gelme şansı eşittir ölçeklemek 1 ve n arasında rasgele sayı elde etmek 1 + ( rand() % n ) rand() % n sonucu 0 ve n 1 arasındaki sayıdır 1 ile 6 arasındaki sayıları elde etmek için 1 + ( rand() % 6)

92 12 Rasgele Sayi Üretilmesi srand fonksiyonu <stdlib.h> Tam sayı alır ve rand fonksiyonu için bir başlangıç noktası ayarlar srand( tam_sayı ); srand( time( NULL ) ); //<time.h> dosyasını programınıza ekleyiniz time( NULL ) Programın çalıştığı sıradaki saniye cinsinden zamanı gösterir Başlama noktasını tamamen rasgele eder

93 /* zarın rasgele atıldığı program */ #include <stdlib.h> #include <stdio.h> 13 int main() { int i; unsigned baslama_yeri; printf( Baslama yerini girin: " ); scanf( "%u", &baslama_yeri ); srand( baslama_yeri ); for ( i = 1; i <= 10; i++ ) { printf( "%10d", 1 + ( rand() % 6 ) ); } if ( i % 5 == 0 ) printf( "\n" ); } return 0;

94 14 Örnek: Şans oyunu Craps oyununun simulasiyonu Kurallar İki zar atılır İlk atışta 7 veya 11, oyuncu kazanır İlk atışta 2, 3, veya 12 (craps denir), oyuncu kaybeder 4, 5, 6, 8, 9, 10 değer oyuncunun sayısı olur Oyuncu kazanmak için 7 den önce sayısı nı atmak zorundadır

95 /* Craps programi*/ #include <stdio.h> #include <stdlib.h> #include <time.h> 15 int zarat( void ); int main() { int oyundurumu, toplam, oyuncusayisi; srand( time( NULL ) ); toplam = zarat( ); /* zarin ilk atisi */ switch( toplam ) { case 7: case 11: /* ilk atista kazanir */ oyundurumu = 1; break; case 2: case 3: case 12: /* ilk atista kaybeder */ oyundurumu = 2; break; default: /* sayiyi hatirla */ oyundurumu = 0; oyuncusayisi = toplam; printf( Oyuncunun sayisi %d\n", oyuncusayisi ); break; }

96 while (oyundurumu == 0 ) { /* zar atmaya devam */ toplam = zarat( ); if ( toplam == oyuncusayisi ) /* oyuncu sayisini bul kazan */ oyundurumu = 1; else if ( toplam == 7 ) /*toplam 7 ye esit ise kaybeder */ oyundurumu = 2; } 16 if (oyundurumu == 1 ) printf( Oyuncu kazanir\n" ); else printf( Oyuncu kaybeder\n" ); } return 0; int zarat( void ) { int zar1, zar2, atmatoplam; } zar1 = 1 + ( rand() % 6 ); zar2 = 1 + ( rand() % 6 ); atmatoplam = zar1 + zar2; printf( oyuncunun attigi %d + %d = %d\n", zar1, zar2, atmatoplam ); return atmatoplam;

97 oyuncunun attigi = 8 Oyuncunun sayisi 8 oyuncunun attigi = 7 Oyuncu kaybeder oyuncunun attigi = 8 Oyuncunun sayisi 8 oyuncunun attigi = 4 oyuncunun attigi = 6 oyuncunun attigi = 5 oyuncunun attigi = 5 oyuncunun attigi = 11 oyuncunun attigi = 9 oyuncunun attigi = 4 oyuncunun attigi = 5 oyuncunun attigi = 3 oyuncunun attigi = 5 oyuncunun attigi = 4 oyuncunun attigi = 3 oyuncunun attigi = 7 Oyuncu kaybeder oyuncunun attigi = 7 Oyuncu kazanir Program çıktıları 17

98 18 Değişkenlerin Faaliyet Alanı Değişkenlerin faaliyet alanı (Variable Scope) fonksiyon yazarken çok önemlidir Değişkenlerin faaliyet alanı hangi fonksiyonun hangi değişkeni tanıyabileceğini belirler Değişkenlerin faaliyet alanı değişkenleri bir fonksiyonda korurken diğer fonksiyonların değiştirme ihtimalini engeller. Eğer fonksiyonun bir değişkene erişme ihtiyacı yok ise, bu fonksiyonun o değişkeni görmemesi lazımdır

99 19 Global ve Yerel Değişkenler Global değişkenler programın her yerinde tanınan değişkenlerdir Global değişkenleri kullanmak tehlikeli olabilir, programın bir kısmı değiştirmemesi gereken değişkeni değiştirebilir Global değişkenler genelde programın en başında tanımlanırlar, herhangi iki fonksiyon arasında tanımlanabilirler ama en başta tanımlanmaları programcı veya kullanıcı tarafından daha çabuk görülmesini sağlar Global değişkenleri fonksiyona parametre olarak göndermek C de karışıklık yaratır, değişken eğer global tanımlanmış ise parametre olarak göndermek gerekmez Yerel değişkenler sadece tanımlandıkları fonksiyon tarafından görünür ve değiştirilebilirler Yerel olarak tanımlanan değişkenlerin faaliyet alanları korunmuş olur Başka fonksiyonlar tarafından görünemezler ve değiştirilemezler Yerel değişkenler blokları sona erdiğinde tanımlarını kaybederler

100 Global ve Yerel Değişkenler /* global ve yerel değişkenlerin tanimlanmasi */ 20 int toplam; // global değişken #include <stdio.h> float ortalama; //global değişken int main() { int sayi; //yerel değişken char g; //yerel değişken //programin diger kismi... return 0; }

101 21 Saklama Sınıfları Saklama Sınıf belirleyicileri Saklama sınıfı hafızada değişkenin saklama süresi-4 adet Faaliyet alanı (Scope) değişkenlerin program içinde nerede tanınabileceğini belirtir, bazıları tüm programda bazıları ise programın bir kısmında tanınabilirler ( global ve yerel değişkenler) Bağlantı(Linkage) belirleyicinin(tanımlayıcının) hangi dosyalarda bilindigini belirtir (birden fazla program birleştirildiği zaman) Otomatik saklama Değişken kendi bloğu içinde tanımlanır ve blok bitiğinde yok edilirler auto: yerel değişkenler için varsayılır auto double x, y; register: değişkenleri yüksek hızdaki kaydedicinin içine koymaya çalışır Sadece otomatik değişkenler için kullanılabilir register int counter = 1;

102 22 Saklama Sınıfları Statik saklama Değişkenler program süresi boyunca korunurlar İlk değerleri otomatik olarak sıfır varsayılır static: fonksiyon içinde tanımlanan yerel değişkenler static olabilirler Değişkenin değeri fonksiyon sona erdiğinde korunur Sadece tanımlandıkları fonksiyon tarafından bilinirler static int say = 1; extern: global değişkenler ve fonksiyonlar için otomatik varsayım Herhangi bir fonksiyonda bilinirler

103 23 Faaliyet Alanı Kuralları Dosya faaliyet alanı (File scope ) Fonksiyon dışında tanımlanan belirliyici, tüm fonksiyonlar tarafından bilinirler Global değişkenler, fonksiyon tanımları, fonksiyon prototipileri için kullanılır Fonksiyon faaliyet alanı (Function scope) Yalnızca fonksiyonun yapısı içinde kullanılabilirler Sadece etiketlerde kullanılırlar (örneğin start:, case:,..vb)

104 24 Faaliyet Alanı Kuralları Blok faaliyet alanı (Block scope) Bloğun içinde deklere edilen belirleyici Blok faaliyet alanı tanımlamadan sonra başlar, sağ } parantezi ile biter Değişkenler, fonksiyon parametreleri(fonksiyonun yerel değişkenleri) için kullanılır Eğer iç blokta aynı isimde bir değişken var ise, Dış blok iç bloktan saklanır Fonksiyon prototipi faaliyet alanı (Function prototype scope) Parametre listesindeki belirleyiciler için kullanılır

105 /* Faaliyet alanı(scoping) örneği */ #include <stdio.h> void a( void ); /* fonksiyon prototipi */ void b( void ); /* fonksiyon prototipi */ void c( void ); /* fonksiyon prototipi */ int x = 1; /* global değişken */ int main() { int x = 5; /* main içinde yerel değişken */ printf( mainin dis faaliyet alanindaki yerel x degeri %d\n, x ); 25 { /* yeni faaliyet alani baslat */ int x = 7; printf( mainin ic faaliyet alanindaki x degeri %d\n", x ); } /* yeni faaliyet alaninin sonu */ } printf( main in dis faaliyet alanindaki yerel x degeri %d\n", x ); a(); /* a fonksiyonun otomatik yerel x degeri var */ b(); /* b fonksiyonun statik yerel x degeri var */ c(); /* c fonksiyonu global x kullaniyor*/ a(); /* a fonksiyonu otomatik yerel x degerine yeniden ilk */ /* deger atıyor */ b(); /* static yerel x daha onceki degerini koruyor */ c(); /* global x de daha onceki degerini korur */ printf( main icindeki yerel x degeri %d\n", x ); return 0;

106 void a( void ) { int x = 25; /* a fonksiyonu her cagrildiginda ilk deger atanir */ 26 } printf( "\na fonk girildikten sonra yerel x degeri %d\n", x ); ++x; printf( a fonk dan cikmadan once yerel x degeri %d \n", x ); void b( void ) { static int x = 50; /* b fonksiyonu ilk cagrildiginda */ /* ilk deger atanmasi */ printf( "\nb fonk. girildiginde yerel static x degeri %d \n", x ); ++x; printf( b fonk. Ayrilir iken yerel static x degeri %d \n", x ); } void c( void ) { printf( "\nc fonk. Girildiginde global x degeri %d \n", x ); x *= 10; printf( b fonk. Ayrilir iken global x degeri %d \n", x ); }

107 mainin dis faaliyet alanindaki yerel x degeri 5 mainin ic faaliyet alanindaki x degeri 7 mainin dis faaliyet alanindaki yerel x degeri 5 Program çıktısı 27 a fonk girildeikten sonra yerel x degeri 25 a fonk dan cikmadan once yerel x degeri 26 b fonk. girildiginde yerel static x degeri 50 b fonk. Ayrilir iken yerel static x degeri 51 c fonk. Girildiginde global x degeri 1 b fonk. Ayrilir iken global x degeri 10 a fonk girildeikten sonra yerel x degeri 25 a fonk dan cikmadan once yerel x degeri 26 b fonk. girildiginde yerel static x degeri 51 b fonk. Ayrilir iken yerel static x degeri 52 c fonk. Girildiginde global x degeri 10 b fonk. Ayrilir iken global x degeri 100 main icindeki yerel x degeri 5

108 28 Tekrarlama-kendi kendini çağırma (Recursion) Tekrarlama fonksiyonları Kendi kendini çağıran fonksiyonlardır Yalnızca temel problemi çözebilirler Problemi böl Ne yapabilir Ne yapmayabilir Yapamadığı kısım orjinal problemi andırır Yapamadığı kısım için fonksiyon kendi yeni kopyasini çağırır (tekrarlama basamağı) Sonunda temel promlem çözülmüş olur

109 29 Tekrarlama- kendi kendini çağırma (Recursion) örnek: faktöriyel 5! = 5 * 4 * 3 * 2 * 1 Şuna dikkat edin 5! = 5 * 4! 4! = 4 * 3!... Faktöriyel tekrarlama ile çözülebilir Temel kısmı çöz (1! = 0! = 1) sonra 2! = 2 * 1! = 2 * 1 = 2; 3! = 3 * 2! = 3 * 2 = 6;

110 /* bir tamsayının faktörünün hesaplanması */ #include <stdio.h> 30 long faktor( int ); int main() { int sayi; long sonuc; printf( bir tam sayi giriniz: " ); scanf( "%d", &sayi ); result = faktor( sayi ); printf( %d faktoriyeli = %ld\n", sayi, sonuc ); return 0; } /* tekrarlama faktor fonksiyonu tanimi*/ long faktor( int n ) { if ( n <= 1 ) return 1; else return ( n * faktor( n - 1 ); }

111 31 Örnek: Fibonacci serisi Fibonacci serisi: 0, 1, 1, 2, 3, 5, 8... Her sayı kendinden önceki iki sayının toplamına eşittir Tekrarlama ile çözülebilir: fib( n ) = fib( n - 1 ) + fib( n 2 ) fibonacci fonksiyonu: long fibonacci( long n ) { if (n == 0 n == 1) // temel kısım return n; else return fibonacci( n - 1) + fibonacci( n 2 ); }

112 Örnek: Fibonacci serisi 32 fibonacci fonksiyonu için tekrarlama setleri f( 3 ) return f( 2 ) + f( 1 ) return f( 1 ) + f( 0 ) return 1 return 1 return 0

113 /* tekrarlama fibonacci fonksiyonu */ #include <stdio.h> 33 long fibonacci( long ); int main() { long sonuc, sayi; } printf( bir tam sayi giriniz: " ); scanf( "%ld", &sayi ); result = fibonacci( sayi ); printf( "Fibonacci( %ld ) = %ld\n", sayi, sonuc ); return 0; /* tekrarlama fibonacci fonksiyonu tanimi*/ long fibonacci( long n ) { if ( n == 0 n == 1 ) return n; else return fibonacci( n - 1 ) + fibonacci( n - 2 ); }

114 Özyineleme (Recursion) ile Döngünün karşılaştırılması Tekrarlama Döngü: Açık döngü Özyineleme (Recursion): tekrarlanan fonksiyon çağrımı Çıkış Döngü: döngü şartı sona erdiğinde Kendi kendini çağırma(recursion): temel kısım görüldüğünde Her ikiside sonsuz döngü olabilir Denge Performans (döngü) ve iyi yazılım mühendisliği (özyineleme) arasında seçiminizi yapınız Performasın gerektiği yerde kendi kendini çağırma (recursion) kullanmaktan kaçının! Daha fazla zaman ve extra hafıza alır 34

115 Örnekler 35 Anaprogramda girilen bir sayının faktöriyelini altprogramda (fonksiyon) hesaplayan ve sonucu anaprogramda ekranda gösteren bir program yazınız. Anaprogramda girilen iki sayının ortak bölenlerinin en büyüğünü altprogramda (fonksiyon) hesaplayan ve sonucu anaprogramda ekranda gösteren bir program yazınız. İlk 50 asal sayıyı hesaplayan ve ekrana yazan bir fonksiyon yazınız. Anaprogramda girilen N kadar sayinin altprogramda (fonksiyon) okuyan ve sayilarin ortalamasini hesaplayan ve sonucu anaprogramda ekranda gösteren bir program yazınız.

116 36 Örnekler Newton-Raphson metodu ile f(x)=0 denklemini çözen bir program yazınız. Notlar: x n+1 =x n -f(x n )/f`(x n ) belirli şartlar altında köke yaklaşır Hasasiyet (x n+1 x n )/ x n+1 <10-5 kontrol edilebilir Adım sayısı sınırlanmalıdır (örneğin 200)

117 1 Diziler (Matrisler) Giriş Diziler Dizileri Tanımlama Örnek: Dizileri Kullanma Dizileri Fonksiyona Gönderme Dizi Elemanlarını Sıralama Dizi İçinde Araştırma Çoklu satır ve sutunlu Diziler

118 2 Giriş Diziler Bir biriyle ilgili dataları içerirler Statik yapıya sahiptirler ve program boyunca bunu korurlar Bütün data tipleri için tanımlanabilirler Dizilerle işlem yapmayı öğrenmek, programlarınızı daha verimli ve güçlü kılar C deki Diziler işaretçiler (pointerlar) ile yakın ilgilidir

119 Dizi Diziler Arka arkaya gelen hafıza yerleri grubu Hafızadaki bu yerler aynı ad ve tipdedir Bir elemana erişmek için, Dizi adı belirtilmeli Pozisiyon numarası belirtilmeli Format: DiziAdı[ pozisiyon numarasi ] İlk elemanı 0 pozisiyonundadır n elemanlı c Dizi: c[ 0 ], c[ 1 ]...c[ n 1 ] Dizi Adı (tüm elemanların aynı adı taşıdığına dikkat ediniz c[0] c[1] c[2] c[3] c[4] c[5] c[6] c[7] c[8] c[9] c[10] c[11] Dizi içindeki elemanın pozisiyon numarası

120 4 Diziler Dizi elemanları normal değişkenler gibidir c[ 0 ] = 3; printf( "%d", c[ 0 ] ); Eleman numarasında işlem yapılabilir. Eğer x 3 e eşit ise c[ 5-2 ] == c[ 3 ] == c[ x ]

121 5 Dizileri Tanımlama Diziler tanımlanırken Adı Dizi tipi Eleman sayısı belirtilmelidir DiziTipi DiziAdı[ elemansayısı ]; Örnek: int c[ 10 ]; float kayit[ 3284 ]; Aynı tip dizilerin tanımlanması Formatı birçok değişken tanımlama gibidir Örnek: int b[ 100 ], x[ 27 ];

122 6 Dizilerin Bazı Özellikleri İlk değer atama int n[ 5 ] = { 1, 2, 3, 4, 5 }; Eğer yeterince değer atanmamış ise (küme işareti içindeki elemanlar yeterli değil ise), en sağdaki elemanlar 0 olur int n[ 5 ] = { 0 } Tüm elemanlar 0 Eğer eleman sayısından fazla değer atanmaya çalışılır ise hata verir C Dizilerinde sınır (Dizi sonu) kontrol etme yoktur Eğer eleman sayısı unutulmuş ise, ilk değer atama eleman sayısını belirler int n[ ] = { 1, 2, 3, 4, 5 }; 5 ilkdeğer, böylece 5 elemanlı dizi

123 /* Histogram print eden program */ #include <stdio.h> #define ELEMANSAYISI 10 7 int main() { int n[ ELEMANSAYISI ] = { 19, 3, 15, 7, 11, 9, 13, 5, 17, 1 }; int i, j; printf( "%s%13s%17s\n", "Eleman", Deger", "Histogram" ); for ( i = 0; i <= ELEMANSAYISI - 1; i++ ) { printf( "%7d%13d ", i, n[ i ]) ; for ( j = 1; j <= n[ i ]; j++ ) /* bir çubuğu print et */ printf( "%c", '*' ); } printf( "\n" ); } return 0;

124 8 Program Çıktısı Eleman Deger Histogram 0 19 ******************* 1 3 *** 2 15 *************** 3 7 ******* 4 11 *********** 5 9 ********* 6 13 ************* 7 5 ***** 8 17 ***************** 9 1 *

125 Karakter dizileri 9 C de tüm data tiplerine karşılık gelen değişken tipleri vardır, fakat karakter katarları (cümleleri) için bir değişken tipi yoktur Karakter dizileri Karakter-katarı bahar gerçekte bir statik karakterler dizisidir Karakter dizileri karakter katarı kullanılarak ilk değer tanımları yapılabilir char katar1[] = bahar"; Null karakteri '\0' karakter katarını bitirir katar1 gerçekte 6 elemana sahiptir Yukarıdaki tanım aşağıdaki tanıma eşittir char katar1[] = { b', a', h', a', r', '\0' }; Tek karaktere erişmek mümkündür katar1[ 2 ] karakter h dir

126 10 Karakter Dizileri Dizi adı dizi adresidir, böylece & işareti scanf için gerekmez scanf( "%s", katar2 ); Karakterleri boşluk girilene kadar okur Dikkat edin dizi sonunu aşan bilgi yazılabilir!!! Bir karakter katarı karakter dizisi içine ilkdeğer atama hariç direk olarak eşitleme ile atanamaz. char adi[]= Servet ; //ilkdeğer atama adi= Servet ; //gecerli değil

127 /* Karakter dizilerin kullanilmasi */ #include <stdio.h> 11 int main() { char dizi1[ 20 ], dizi2[] = Cumle kelime"; int i; printf(" cumleyi giriniz: "); scanf( "%s", dizi1 ); printf( dizi1: %s\ndizi2: %s\n" dizi1 karakter bosluklari ile:\n", dizi1, dizi2 ); for ( i = 0; dizi1[ i ]!= '\0'; i++ ) printf( "%c ", dizi1[ i ] ); } printf( "\n" ); return 0; cumleyi giriniz: merhaba nasilsiniz dizi1: merhaba dizi2: Cumle kelime dizi1 karakter bosluklari ile: m e r h a b a

128 12 Dizileri Fonksiyona Gönderme Dizileri gönderme Dizideki değişkenleri fonksiyona göndermek için, fonksiyon parametrelerinde dizi adını köşeli parantezsiz belirtin int addizi[ 24 ]; //dizi tanimlama kayitfonksiyonu( addizi, 24 ); //fonksiyona gönderme dizi büyüklüğü genelde fonksiyona gönderilir Diziler adres gönderme yöntemiyle fonksiyona gönderilir Dizi adi ilk elemanin adresidir Fonksiyon dizinin nerede saklandığını bilir dizi üzerindeki değişiklikler hafızadaki orjinallerini değiştirir

129 13 Dizileri Fonksiyona Gönderme Dizi elemanlarının gönderilmesi (fonksiyon çağrılması) Elemanların gönderilmesi değer ile çağırmaya girer, yani kopyası gönderilir kayitfonksiyonu(addizi[ 3 ]) Fonksiyon prototipi void soyad( int b[], int elemansayisi ); Parametre(dizi) adlari prototipte yazilmayabilir int b[] int [] şeklinde yazılabilir int elemansayisi basitçe int yazılabilir Yukaradaki prototip şöyle yazılabilir void soyad( int [], int );

130 /* dizi ve dizi elemanlarının fonksiyona gönderilmesi */ #include <stdio.h> #define N 5 void dizidegis( int [], int ); /* prototipe dikkat! */ void elemandegis( int ); int main() { int a[ N ] = { 0, 1, 2, 3, 4 }, i; printf( tum dizinin fonksiyona gonderilmesi-adres ile cagirma:\n" "\ndizi orijinal elemanlari:\n" ); 14 for ( i = 0; i <= N - 1; i++ ) printf( "%3d", a[ i ] ); printf( "\n" ); dizidegis( a, N ); /* adres ile cagirma */ printf( dizinin degisen elemanlari:\n" ); for ( i = 0; i <= N - 1; i++ ) printf( "%3d", a[ i ] ); } printf( "\n\n\ndizi elemaninin gonderilmesi-deger ile cagirma:\n" "\n a[3] degeri %d\n", a[ 3 ] ); elemandegis( a[ 3 ] ); /* deger ile cagirma */ printf( a[ 3 ] yeni degeri %d\n", a[ 3 ] ); return 0;

131 void dizidegis( int b[], int n ) { int j; 15 } for ( j = 0; j <= n - 1; j++ ) b[ j ] *= 2; void elemandegis( int e ) { printf( fonksiyondaki deger %d\n", e *= 2 ); } tum dizinin fonksiyona gonderilmesi-adres ile cagirma: dizi orijinal elemanlari: dizinin degisen elemanlari: dizi elemaninin gonderilmesi-deger ile cagirma: a[3] degeri 6 fonksiyondaki deger 12 a[ 3 ] yeni degeri 6

132 16 Dizi Elemanlarını Sıralama Dataları sıralama Önemli bir bilgisayar uygulamasıdır Hemen hemen bütün organizasyonlar bir takım dataları sıralama ihtiyacı duyar Kabarma (baloncuk (Bubble)) sıralama (çökme (sinking) sıralama) Diziden birçok geçme (tarama) Yan yana iki eleman karşılaştırılır Eğer eleman artıyorsa (veya benzer ise), değişim yok Eğer azalıyorsa, elemanlar yer değiştirilir İşlemi tekrarla örneğin: orjinal: tarama: tarama: Küçük elemanlar üste kabarır (bubble)

PROGRAMLAMAYA GİRİŞ DERS 2

PROGRAMLAMAYA GİRİŞ DERS 2 PROGRAMLAMAYA GİRİŞ DERS 2 Program editörde oluşturulur ve diske kaydedilir Tipik Bir C Programı Geliştirme Ortamının Temelleri 1. Edit 2. Preprocess 3. Compile 4. Link 5. Load 6. Execute Önişlemci programı

Detaylı

BLM-112 PROGRAMLAMA DİLLERİ II. Ders-1 Kapsama Kuralları & Rasgele Sayı Üretimi & Rekürsif (Özyinelemeli) Fonksiyonlar

BLM-112 PROGRAMLAMA DİLLERİ II. Ders-1 Kapsama Kuralları & Rasgele Sayı Üretimi & Rekürsif (Özyinelemeli) Fonksiyonlar BLM-112 PROGRAMLAMA DİLLERİ II Ders-1 Kapsama Kuralları & Rasgele Sayı Üretimi & Rekürsif (Özyinelemeli) Fonksiyonlar Yrd. Doç. Dr. Ümit ATİLA umitatila@karabuk.edu.tr http://web.karabuk.edu.tr/umitatilla/

Detaylı

Yrd. Doç. Dr. Caner ÖZCAN

Yrd. Doç. Dr. Caner ÖZCAN Yrd. Doç. Dr. Caner ÖZCAN Derse Giriş Ders Web Sitesi: www.canerozcan.net Ofis Saatleri: Salı 11:00-13:00 Perşembe 15:30-17:30 ya da email ile randevu alınız: canerozcan@karabuk.edu.tr Kaynak Kitaplar:

Detaylı

Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü

Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü C ++ Ders 9 C ++ Ön İşlemciler Prof. Dr. M. Serdar ÇELEBİ, İTÜ C ++ Önişlemciler Giriş #include Önişlemci Direktifi #define Önişlemci Direktifi: Sembolik Sabitler #define Önişlemci Direktifi : Makrolar

Detaylı

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

Bölüm 2 - C ile Programlamaya Giriş 1 Bölüm 2 - C ile Programlamaya Giriş Başlıklar 2.1 Giriş 2.2 Basit C Programları: Bir Metni Yazdırmak 2.3 Basit C Programları: İki Tam Sayıyı Toplamak 2.4 Hafıza Konuları 2.5 C de Aritmetik 2.6 Karar

Detaylı

Dr. Fatih AY Tel: 0 388 225 22 55 fatihay@fatihay.net www.fatihay.net

Dr. Fatih AY Tel: 0 388 225 22 55 fatihay@fatihay.net www.fatihay.net Bilgisayar Programlama Ders 6 Dr. Fatih AY Tel: 0 388 225 22 55 fatihay@fatihay.net www.fatihay.net Fonksiyon Prototipleri Fonksiyon Prototipleri Derleyici, fonksiyonların ilk hallerini (prototiplerini)

Detaylı

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-12 Fonksiyonlar. Yrd. Doç. Dr. Ümit ATİLA

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-12 Fonksiyonlar. Yrd. Doç. Dr. Ümit ATİLA BLM-111 PROGRAMLAMA DİLLERİ I Ders-12 Fonksiyonlar Yrd. Doç. Dr. Ümit ATİLA umitatila@karabuk.edu.tr http://web.karabuk.edu.tr/umitatilla/ Fonksiyonlar Fonksiyonlar C de modüller Programlar kullanıcı tanımlı

Detaylı

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

Döngü Komutları. Komutu. while Komutu Diğer Operatörler Bileşik Komut for Komutu. İçiçe Döngüler break ve continue Komutları Döngüler Döngü Komutları while Komutu Diğer Operatörler Bileşik Komut for Komutu do-while Komutu İçiçe Döngüler break ve continue Komutları while Komutu Döngü komutları komutların bir çok kez yeniden yürülmesini

Detaylı

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

Fonksiyonlar. C++ ve NESNEYE DAYALI PROGRAMLAMA 51. /* Fonksiyon: kup Bir tamsayının küpünü hesaplar */ long int kup(int x) { Fonksiyonlar Kendi içinde bağımsız olarak çalışabilen ve belli bir işlevi yerine getiren program modülleridir. C programları bu modüllerden (fonksiyonlar) oluşurlar. Fonksiyonların yazılmasındaki temel

Detaylı

BİL-142 Bilgisayar Programlama II

BİL-142 Bilgisayar Programlama II BİL-142 Bilgisayar Programlama II (C/C++) Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü Konular Giriş math Kütüphane Fonksiyonları Çok Parametreyle Fonksiyon Tanımı Fonksiyon

Detaylı

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

Algoritma ve Programlama: Karar Yapıları ve Döngüler Algoritma ve Programlama: Karar Yapıları ve Döngüler Bir algoritma, herhangi bir programlama dili (C, C++, Pascal, Visual Basic, Java gibi) ile kodlandığında program haline gelir. Algoritmada yer alan

Detaylı

Bölüm 4 C de Program Kontrolü

Bölüm 4 C de Program Kontrolü 1 Bölüm 4 C de Program Kontrolü Outline 4.1 Giriş 4.2 Döngülerin Temelleri 4.3 Sayıcı Kontrollü Döngüler 4.4 for Döngü Yapısı 4.5 for Döngü Yapısıyla İlgili Notlar ve Gözlemler 4.6 for Yapısıyla İlgili

Detaylı

Hafta 13 Fonksiyonlar

Hafta 13 Fonksiyonlar BLM111 Programlama Dilleri I Hafta 13 Fonksiyonlar Yrd. Doç. Dr. Caner ÖZCAN Fonksiyonlar Fonksiyonlar C de modüller Programlar kullanıcı tanımlı fonksiyonları ve kütüphane fonksiyonlarını birlikte kullanırlar.

Detaylı

DİZİLER-KATARLAR ALGORİTMA VE PROGRAMLAMA II

DİZİLER-KATARLAR ALGORİTMA VE PROGRAMLAMA II DİZİLER-KATARLAR ALGORİTMA VE PROGRAMLAMA II DİZİLER Dizi, aynı tipteki verilere tek bir isimle erişmek için kullanılan bir kümedir. Bir dizi bildirildikten sonra, dizinin bütün elemanları bellekte peşpeşe

Detaylı

Yrd. Doç. Dr. Caner ÖZCAN

Yrd. Doç. Dr. Caner ÖZCAN Yrd. Doç. Dr. Caner ÖZCAN Derse Giriş Ders Web Sitesi: www.canerozcan.net Ofis Saatleri: Salı 11:00-13:00 Perşembe 15:30-17:30 ya da email ile randevu alınız: canerozcan@karabuk.edu.tr Kaynak Kitaplar:

Detaylı

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

B02.6 Karar Verme, Eşitlik ve Bağıntı Operatörleri B02.6 Karar Verme, Eşitlik ve Bağıntı Operatörleri 49 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B02) Çalıştırılabilir C ifadeleri ya bir işlem gerçekleştirir ( girilen verilerin toplanması

Detaylı

C Programlama Dilininin Basit Yapıları

C Programlama Dilininin Basit Yapıları Bölüm 2 C Programlama Dilininin Basit Yapıları İçindekiler 2.1 Sabitler ve Değişkenler......................... 13 2.2 Açıklamalar (Expresions)........................ 14 2.3 İfadeler (Statements) ve İfade

Detaylı

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

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 Veri Tanımları ve Mantıksal Đşlemler Tekrar -- Değişken Tanımlamaları (Definition) ve Veri Türleri (Data Type) Kullanılacak bütün değişkenlerin kullanılmadan önce C derleyicisine bildirilmeleri gerekir.

Detaylı

Temel Giriş/Çıkış Fonksiyonları

Temel Giriş/Çıkış Fonksiyonları Temel Giriş/Çıkış Fonksiyonları Temel giriş/çıkış fonksiyonları, bütün programla dillerinde mevcuttur. Bu tür fonksiyonlar, kullanıcıya ekrana veya yazıcıya bilgi yazdırmasına, ve bilgisayara klavyeden

Detaylı

EBG101 PROGRAMLAMA TEMELLERİ VE ALGORİTMA

EBG101 PROGRAMLAMA TEMELLERİ VE ALGORİTMA 6. HAFTA EBG101 PROGRAMLAMA TEMELLERİ VE ALGORİTMA Öğr. Gör. S. M. Fatih APAYDIN apaydin@beun.edu.tr EMYO Bülent Ecevit Üniversitesi Kdz. Ereğli Meslek Yüksekokulu ALGORİTMA ÖRNEK1: İki sayının toplamı

Detaylı

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

Temel Bilgisayar Bilimleri Ders Notu #4-2. kısım Nisan 2009 9031150 - Temel Bilgisayar Bilimleri Ders Notu #4-2. kısım Referans: Bugün: 1. Ders Notları. Ders #4.1 Tekrar Dowhile ve for döngüleri Diziler Göstergeler 1. Tekrar for döngüleri Genel yazılımı

Detaylı

Örnek: İki fonksiyondan oluşan bir program. Fonksiyon Tanımı

Örnek: İki fonksiyondan oluşan bir program. Fonksiyon Tanımı Fonksiyonlar Fonksiyon Tanımı Değer Döndürmeyen Fonksiyonlar Değer Döndüren Fonksiyonlar Çok Parametreli Fonksiyonlar Değişken Kapsamları Çok Fonksiyonlu Programlar Fonksiyon Tanımı Karmaşıkveuzunprogramları,

Detaylı

ELN1001 BİLGİSAYAR PROGRAMLAMA I

ELN1001 BİLGİSAYAR PROGRAMLAMA I ELN1001 BİLGİSAYAR PROGRAMLAMA I DEPOLAMA SINIFLARI DEĞİŞKEN MENZİLLERİ YİNELEMELİ FONKSİYONLAR Depolama Sınıfları Tanıtıcılar için şu ana kadar görülmüş olan özellikler: Ad Tip Boyut Değer Bunlara ilave

Detaylı

BİL1001 Bilgisayar Bilimlerine Giriş 1

BİL1001 Bilgisayar Bilimlerine Giriş 1 DEÜ Bilgisayar Bilimleri Bölümü BİL1001 Bilgisayar Bilimlerine Giriş 1 Öğr. Gör. Dr. Alper VAHAPLAR 2017 Yaz Okulu Tekrarlı Yapılar Algoritmanın belirli bir kısmının, belirli kere ya da belirli durumlar

Detaylı

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

/ C Bilgisayar Programlama Final Sınavı Test Soruları. Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : , 60 dak. Selçuk Üniversitesi Mühendislik Fakültesi Harita Mühendisliği Bölümü Final Sınavı Test Soruları dı soyadı :... Öğrenci no :... İmza :... Tarih, Süre :09.01.2013, 60 dak. Dikkat!!! Soru kitapçığında ve

Detaylı

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

BASİT C PROGRAMLARI Öğr.Gör.Dr. Mahmut YALÇIN BASİT C PROGRAMLARI Öğr.Gör.Dr. Mahmut YALÇIN Basit C Programları: Bir Metni Yazdırmak #include /* program çalışmaya main fonksiyonundan başlar*/ int main() { printf( "C diline hoşgeldiniz!\n"

Detaylı

2 ALGORİTMA VE AKIŞ DİYAGRAMLARI

2 ALGORİTMA VE AKIŞ DİYAGRAMLARI İÇİNDEKİLER IX İÇİNDEKİLER 1 GİRİŞ 1 Kitabın Amacı 1 Algoritmanın Önemi 2 Bilgisayarın Doğuşu ve Kullanım Amaçları 3 Programlama Dili Nedir? 3 Entegre Geliştirme Ortamı (IDE) Nedir? 4 2 ALGORİTMA VE AKIŞ

Detaylı

ENF102 TEMEL BİLGİSAYAR BİLİMLERİ VE C/ C++ PROGRAMLAMA DİLİ. Gazi Üniversitesi Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü

ENF102 TEMEL BİLGİSAYAR BİLİMLERİ VE C/ C++ PROGRAMLAMA DİLİ. Gazi Üniversitesi Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü ENF102 TEMEL BİLGİSAYAR BİLİMLERİ VE C/ C++ PROGRAMLAMA DİLİ Gazi Üniversitesi Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü Konular Giriş math Kütüphane Fonksiyonları Çok Parametreyle Fonksiyon

Detaylı

Diziler (Arrays) Çok Boyutlu Diziler

Diziler (Arrays) Çok Boyutlu Diziler Diziler (Arrays) Çok Boyutlu Diziler ÇOK BOYUTLU DİZİLER Birden fazla indis numarası ile elemanlarına ulaşılan dizilere çok boyutlu diziler denir. Bunlardan en sık kullanılanı çift boyutlu dizilerdir.

Detaylı

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

Diziler. Yrd.Doç.Dr.Bülent ÇOBANOĞLU Diziler Yrd.Doç.Dr.Bülent ÇOBANOĞLU Dizi (Array) Nedir? Bellekte sürekli yer kaplayan artarda sıralanmış aynı türden verilerin oluşturduğu kümeye dizi (array) denir. Dizi, çok fazla miktardaki tek tip

Detaylı

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

BİLGİSAYAR TEMELLERİ VE PROGRAMLAMAYA GİRİŞ 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

Detaylı

Pointer Kavramı. Veri Yapıları

Pointer Kavramı. Veri Yapıları Pointer Kavramı Veri Yapıları Pointer Kavramı- Pointer Nedir? Göstericiler, işaretçiler ya da pointer adı da verilmektedir. Gösterici (pointer); içerisinde bellek adresi tutan değişkenlerdir. Şu ana kadar

Detaylı

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

Sınav tarihi : Süre : 60 dak. a) ABCDE b) BCDE c) ABCD d) kod hatalı e) BCD Selçuk Üniversitesi, Mühendislik Fakültesi, Harita Mühendisliği Bölümü Yıliçi Sınavı Test Soruları Adı soyadı : Öğrenci no : Sınav tarihi : 13.04.2015 Süre : 60 dak. 1. Hangisi gerçek sayı değişmezi değildir?

Detaylı

Programlama Dilleri 1. Ders 4: Diziler

Programlama Dilleri 1. Ders 4: Diziler Programlama Dilleri 1 Ders 4: Diziler Genel Bakış Tanım Dizilerin tanımlanması Dizilere ilk değer verilmesi Yerel ve Global diziler Dizilerin birbirine atanması Diziler ile ilgili örnekler Çalışma soruları

Detaylı

Genel Programlama II

Genel Programlama II Genel Programlama II 15.02.2011 1 Genel Programlama Tekrar 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

Detaylı

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

Programlamaya Giriş. Program : Belirli bir problemi çözmek için bir bilgisayar dili kullanılarak yazılmış deyimler dizisi. Programlamaya Giriş Program : Belirli bir problemi çözmek için bir bilgisayar dili kullanılarak yazılmış deyimler dizisi. Programın Yazımında İzleyeceğimiz Adımlar Problemi anla. İhtiyaçları belirle. Problemin

Detaylı

2. Dereceden Denklemin Köklerini Bulan Program

2. Dereceden Denklemin Köklerini Bulan Program 2. Dereceden Denklemin Köklerini Bulan Program [crayon-5bb74e5b18b15225541464/] C++ 2.dereceden denklemin köklerini bulan program [crayon-5bb74e5b18b25989362529/] ÇIKTI; C++ 2. dereceden denklemin köklerini

Detaylı

Değişkenler. Geçerli değişken isimleri : baslamazamani, ad_soyad, x5 Geçersiz değişken isimleri : 3x, while

Değişkenler. Geçerli değişken isimleri : baslamazamani, ad_soyad, x5 Geçersiz değişken isimleri : 3x, while Değişkenler Değişkenler bir bilginin bellekteki konumunu temsil eden sembolik isimlerdir. Bilgisayarda hemen hemen tüm işlemler bellekte yapılır. Program çalıştırıldığında değişken ve bu değişkenin türüne

Detaylı

Değişkenler tanımlanırken onlara ne tür veriler atanabileceği de belirtilir. Temel veri türleri oldukça azdır:

Değişkenler tanımlanırken onlara ne tür veriler atanabileceği de belirtilir. Temel veri türleri oldukça azdır: C VERİ TÜRLERİ BASİT VERİ TÜRLERİ Değişkenler, program içinde üzerinde işlem yapılan, veri saklanan ve durumlarına göre programın akışı sağlanan nesnelerdir. C de bir değişken kullanılmadan önce tanımlanmalıdır.

Detaylı

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

Bil101 Bilgisayar Yazılımı I. M. Erdem ÇORAPÇIOĞLU Bilgisayar Yüksek Mühendisi Bil101 Bilgisayar Yazılımı I Bilgisayar Yüksek Mühendisi Editör Disk 1)Kaynak kodlar editör aracılığı ile oluşturulur. (.c) Kaynak dosya Önişleyici Disk 2)Önişleyici kodlar içerisindeki ilk işleme işini

Detaylı

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

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-8 Değişken Tipleri ve Temel Giriş/Çıkış İşlemleri BLM-111 PROGRAMLAMA DİLLERİ I Ders-8 Değişken Tipleri ve Temel Giriş/Çıkış İşlemleri Yrd. Doç. Dr. Ümit ATİLA umitatila@karabuk.edu.tr http://web.karabuk.edu.tr/umitatilla/ Temel Veri Tipleri C dilinde

Detaylı

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

YAPILAR BİRLİKLER SAYMA SABİTLERİ/KÜMELERİ. 3. Hafta YAPILAR BİRLİKLER SAYMA SABİTLERİ/KÜMELERİ 3. Hafta YAPILAR Farklı veri tipindeki bilgilerin bir araya gelerek oluşturdukları topluluklara yapı (structure) denir. Yani yapılar, birbiriyle ilişkili değişkenlerin

Detaylı

HSancak Nesne Tabanlı Programlama I Ders Notları

HSancak Nesne Tabanlı Programlama I Ders Notları DİZİLER Bellekte ard arda yer alan aynı türden nesneler kümesine dizi (array) denilir. Bir dizi içerisindeki bütün elemanlara aynı isimle ulaşılır. Yani dizideki bütün elemanların isimleri ortaktır. Elemanlar

Detaylı

Göstericiler (Pointers)

Göstericiler (Pointers) C PROGRAMLAMA Göstericiler (Pointers) C programlama dilinin en güçlü özelliklerinden biridir. Göstericiler, işaretçiler yada pointer adı da verilmektedir. Gösterici (pointer); içerisinde bellek adresi

Detaylı

BLM 112- Programlama Dilleri II. Hafta 2 C Programlarının Bellek Düzeni ve Rekürsif (Özyinelemeli) Fonksiyonlar

BLM 112- Programlama Dilleri II. Hafta 2 C Programlarının Bellek Düzeni ve Rekürsif (Özyinelemeli) Fonksiyonlar 1 BLM 112- Programlama Dilleri II Hafta 2 C Programlarının Bellek Düzeni ve Rekürsif (Özyinelemeli) Fonksiyonlar Dr. Öğr. Üyesi Caner Özcan Kendi yolculuğumuzu yapmak için buradayız; bu yolculukta kendimiz

Detaylı

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

Döngü (Loop) Deyimleri / Veri Belirleyicileri / Matematiksel Fonksiyonlar Bölüm 5 Döngü (Loop) Deyimleri / Veri Belirleyicileri / Matematiksel Fonksiyonlar İçindekiler 5.1 Formatlı Yazdırma............................ 34 5.2 Döngü Deyimleri............................. 34 5.2.1

Detaylı

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

Uzaktan Eğitim Uygulama ve Araştırma Merkezi JAVA PROGRAMLAMA Öğr. Gör. Utku SOBUTAY İÇERİK 2 Java Veri Tipleri ve Özelilkleri Değişken Tanımlama Kuralları Değişken Veri Tipi Değiştirme (Type Casting) Örnek Kodlar Java Veri Tipleri ve Özelilkleri

Detaylı

Fonksiyonlar (Altprogram)

Fonksiyonlar (Altprogram) Fonksiyonlar (Altprogram) C Programlama Dili fonksiyon olarak adlandırılan alt programların birleştirilmesi kavramına dayanır. Bir C programı bir ya da daha çok fonksiyonun bir araya gelmesi ile oluşur.

Detaylı

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

Programlama Dilleri. C Dili. Programlama Dilleri-ders02/ 1 Programlama Dilleri C Dili Programlama Dilleri-ders02/ 1 Değişkenler, Sabitler ve Operatörler Değişkenler (variables) bellekte bilginin saklandığı gözlere verilen simgesel isimlerdir. Sabitler (constants)

Detaylı

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

Sınav tarihi : Süre : 60 dak. a) strstr b) strchr c) strcat d) strcpy e) strlen. a) b) d) e) 0 Selçuk Üniversitesi, Mühendislik Fakültesi, Harita Mühendisliği Bölümü Bitirme Sınavı Test Soruları Adı soyadı : Öğrenci no : Sınav tarihi : 01.06.2017 Süre : 60 dak. 1. t değişkeni hakkında aşağıdakilerden

Detaylı

BLM 111 ALGORİTMA VE PROGRAMLAMA I

BLM 111 ALGORİTMA VE PROGRAMLAMA I 1 BLM 111 ALGORİTMA VE PROGRAMLAMA I KONTROL YAPILARI TEKRARLAMA DEYİMLERİ = DÖNGÜLER (while, for, do-while) Şimdiye kadar, sıralı deyimleri ve seçim deyimlerini gördük. Ama, geldiğimiz aşamada, aşağıdaki

Detaylı

Giriş. ENF102 Jeoloji

Giriş. ENF102 Jeoloji DİZİLER Arrays Giriş Aynı isim altında, aynı türde birden fazla değer tutmak için kullanılan veri yapılarıdır (Data Structure). Dizi bir kümedir; aynı türde verilere tek bir isimle erişmek için kullanılır.

Detaylı

Temel Bilgisayar Programlama Final Sınavı Çalışma Notları

Temel Bilgisayar Programlama Final Sınavı Çalışma Notları Diziler Temel Bilgisayar Programlama Final Sınavı Çalışma Notları (Dr. Övünç ÖZTÜRK, Dr. Tahir Emre KALAYCI) (İnşaat Mühendisliği ve Gıda Mühendisliği Grupları İçin) Diziler aynı türden bilgileri saklamak

Detaylı

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

MAK 1005 Bilgisayar Programlamaya Giriş C DİLİNE GİRİŞ. Prof. Dr. Necmettin Kaya MAK 1005 Bilgisayar Programlamaya Giriş C DİLİNE GİRİŞ Prof. Dr. Necmettin Kaya C PROGRAMLAMA DİLİ ÖZELLİKLERİ C programlama dili, 1972 yılında Bell Labortuvarı nda Dennis Ritchie tarafından geliştirilmiştir.

Detaylı

PROGRAMLAMAYA GİRİŞ FONKSİYONLAR

PROGRAMLAMAYA GİRİŞ FONKSİYONLAR PROGRAMLAMAYA GİRİŞ FONKSİYONLAR Fonksiyonlar C programlama dili fonksiyon olarak adlandırılan alt programların birleştirilmesi kavramına dayanır. Bir C programı bir ya da daha çok fonksiyonun bir araya

Detaylı

Eln 1001 Bilgisayar Programlama I

Eln 1001 Bilgisayar Programlama I Eln 1001 Bilgisayar Programlama I GiriŞ / ǹk¹Ş Fonksiyonlar¹ Ne ÖĆreneceĆiz? Temel Giriş/Çıkış Yapısı Giriş Fonksiyonları Karakterler için giriş fonksiyonları Scanf fonksiyonu Formatlı giriş Çıkış Fonksiyonları

Detaylı

BLM 111 ALGORİTMA VE PROGRAMLAMA I

BLM 111 ALGORİTMA VE PROGRAMLAMA I 1 BLM 111 ALGORİTMA VE PROGRAMLAMA I DİZİLER (ARRAYS) Kullanıcıdan N tane tamsayı, xi, alalım ve 1. Bu sayıların ortalamasını hesaplamak isteyelim ort = 0; for (i=0; i

Detaylı

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

ESM-361 Mikroişlemciler. 3. Hafta Ders Öğretim Üyesi Dr.Öğr.Üyesi Ayşe DEMİRHAN ESM-361 Mikroişlemciler 3. Hafta Ders Öğretim Üyesi Dr.Öğr.Üyesi Ayşe DEMİRHAN Bit operatörleri Bit operatörleri bit düzeyinde işlem yapan operatörlerdir; yani sayıları bir bütün olarak değil, bit bit

Detaylı

Hafta 12 Karakter Tutan Diziler

Hafta 12 Karakter Tutan Diziler BLM111 Programlama Dilleri I Hafta 12 Karakter Tutan Diziler Yrd. Doç. Dr. Caner ÖZCAN Katar (String) Tanımlama Dizileri ve çok boyutlu dizileri gördük. Katar dediğimiz şey de aslında bir dizidir. Değişken

Detaylı

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

Sınav tarihi : Süre : 60 dak. Selçuk Üniversitesi, Mühendislik Fakültesi, Harita Mühendisliği Bölümü Final Sınavı Test Soruları Adı soyadı : Öğrenci no : Sınav tarihi : 31.05.2016 Süre : 60 dak. 1. Ekranda ne görüntülenir? int i =

Detaylı

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

C# Yazım Kuralları ERCİYES. Ü. BİLGİSAYAR M. COMPUTER PROGRAMMING II 1 FEHİM KÖYLÜ C# Yazım Kuralları 1 İçindekiler C# Yazım Kuralları Veritipleri Değişkenler Operatörler Sınıflar Nesneler, Özellik, Metot ve Olay Bileşenler 2 C# yazım kuralları Deyimlerde büyük küçük harf yazıma uyulmalı

Detaylı

1 PROGRAMLAMAYA GİRİŞ

1 PROGRAMLAMAYA GİRİŞ İÇİNDEKİLER IX İÇİNDEKİLER 1 PROGRAMLAMAYA GİRİŞ 1 Problem Çözme 1 Algoritma 1 Algoritmada Olması Gereken Özellikler 2 Programlama Dilleri 6 Programlama Dillerinin Tarihçesi 6 Fortran (Formula Translator)

Detaylı

BĠLGĠSAYAR PROGRAMLAMA II C++ Programlamaya GiriĢ http://www.cplusplus.com/doc/tutorial/ Published by Juan Soulié

BĠLGĠSAYAR PROGRAMLAMA II C++ Programlamaya GiriĢ http://www.cplusplus.com/doc/tutorial/ Published by Juan Soulié BĠLGĠSAYAR PROGRAMLAMA II C++ Programlamaya GiriĢ http://www.cplusplus.com/doc/tutorial/ Published by Juan Soulié DERSİN WEB SİTESİ: http://nucleus.istanbul.edu.tr/~bilprog2/ DeğiĢkenler ve Data Türleri

Detaylı

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

Karakter katarları ile ilgili fonksiyonlar içerir Yerel kayan noktalı sayılar tanımlanır stringh floath Karakter katarları ile ilgili fonksiyonlar içerir Yerel kayan noktalı sayılar tanımlanır 32 Sorgulama İfadesi - if Deyimi (5 Hafta) Bu deyim sorgulamanın tek basamakta yapılacağı yerlerde

Detaylı

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

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 DİZİLER (ARRAYS) 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 değişken tanımlamak gereklidir. string gun1,

Detaylı

Bölüm 3 Yapısal Programlama

Bölüm 3 Yapısal Programlama 1 Bölüm 3 Yapısal Programlama Konular 3.1 Giriş 3.2 Algoritmalar 3.3 Pseudocode (Sahte kodlar) 3.4 Kontrol yapıları 3.5 If Seçim yapısı 3.6 If Else Seçim yapısı 3.7 While Döngü yapısı 3.8 Algoritmaları

Detaylı

Çoktan Seçmeli Değerlendirme Soruları Akış Şemaları İle Algoritma Geliştirme Örnekleri Giriş 39 1.Gündelik Hayattan Algoritma Örnekleri 39 2.Say

Çoktan Seçmeli Değerlendirme Soruları Akış Şemaları İle Algoritma Geliştirme Örnekleri Giriş 39 1.Gündelik Hayattan Algoritma Örnekleri 39 2.Say İÇİNDEKİLER 1. Bilgisayarın Yapısı Ve Programlama Dilleri Giriş 1 Bilgisayar ve Programlamanın Kısa Bir Tarihçesi 2 Donanım ve Yazılım Kavramları 3 Bilgisayarın Donanımsal yapısı 4 Giriş Birimi (Input

Detaylı

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

Temel Bilgisayar Bilimleri Ders Notu #4-1. kısım Nisan 2009 9031150 - Temel Bilgisayar Bilimleri Ders Notu #4-1. kısım Referans: Bugün: 1. Ders Notları. Ders #3 Tekrar Do while ve for döngüleri 1. Tekrar Geçen ders while döngüsü ve seçme kontrol teknikleri

Detaylı

Algoritma ve Programlamaya Giriş

Algoritma ve Programlamaya Giriş Algoritma ve Programlamaya Giriş Algoritma Bir sorunu çözebilmek için gerekli olan sıralı ve mantıksal adımların tümüne Algoritma denir. Doğal dil ile yazılabilir. Fazlaca formal değildir. Bir algoritmada

Detaylı

C Konsol Giriş Çıkış Fonksiyonları

C Konsol Giriş Çıkış Fonksiyonları C Konsol Giriş Çıkış Fonksiyonları Öğr. Gör. M. Ozan AKI Rev 1.0 Stringlerde Özel Karakterler \n : Bir sonraki satırın ilk sütununa git \b : Backspace (önceki karakteri sil) \a : Bip sesi \\ : Ters bölü

Detaylı

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

BMT 101 Algoritma ve Programlama I 11. Hafta. Yük. Müh. Köksal Gündoğdu 1 BMT 101 Algoritma ve Programlama I 11. Hafta Yük. Müh. Köksal Gündoğdu 1 C++ Fonksiyonlar Yük. Müh. Köksal Gündoğdu 2 C++ Hazır Fonksiyonlar Yük. Müh. Köksal Gündoğdu 3 C++ Hazır Fonksiyonlar 1. Matematiksel

Detaylı

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

8. Bölüm DİZİLER. tip dizi_ismi[eleman_sayısı]; Bütün diziler 0 ile baţlar. DİZİLER 8. Bölüm Dizi aynı ad altında toplanmış ve aynı tipte olan değişkenlerin sıralı bir listesidir. C de bir dizi için bildirim yapılırken kullanılan genel kural şudur. tip dizi_ismi[eleman_sayısı];

Detaylı

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

Hafta 8 C Dilinde Değişken Tipleri ve Temel Giriş/Çıkış İşlemleri BLM111 Programlama Dilleri I Hafta 8 C Dilinde Değişken Tipleri ve Temel Giriş/Çıkış İşlemleri Yrd. Doç. Dr. Caner ÖZCAN C Dilinde Temel Veri Tipleri C dilinde kullanılacak değişkenler ve veri tipleri

Detaylı

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

BİLGİSAYAR MÜHENDİSLİĞİ ALGORİTMA VE PROGRAMLAMA II 2.HAFTA SWİTCH (CASE), SAYAÇLAR, DÖNGÜLER, BİLGİSAYAR MÜHENDİSLİĞİ ALGORİTMA VE PROGRAMLAMA II 2.HAFTA SWİTCH (CASE), SAYAÇLAR, DÖNGÜLER, C++ İÇİN UFAK HATIRLATMALAR Değişken adları bir harf ile başlamalıdır. (a-z, A-Z). Değişken adı numara içerebilir.

Detaylı

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

BMÜ-111 ALGORİTMA VE PROGRAMLAMA AKIŞ KONTROLÜ YRD. DOÇ. DR. İLHAN AYDIN BMÜ-111 ALGORİTMA VE PROGRAMLAMA AKIŞ KONTROLÜ YRD. DOÇ. DR. İLHAN AYDIN TEMEL AMAÇLAR Bir dairenin yarıçapını kullanıcıdan alarak dairenin alanını hesaplamak istediğimizi düşünelim. Eğer girilen değer

Detaylı

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

BMT 101 Algoritma ve Programlama I 6. Hafta. Yük. Müh. Köksal Gündoğdu 1 BMT 101 Algoritma ve Programlama I 6. Hafta Yük. Müh. Köksal Gündoğdu 1 C++ Veri Tipleri Yük. Müh. Köksal Gündoğdu 2 Veri Tipleri Tam sayı ve Ondalık sayı veri tipleri Veri Tipi Alt Sınıf Üst Sınıf Duyarlı

Detaylı

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

BİLGİSAYAR TEMELLERİ VE PROGRAMLAMAYA GİRİŞ BİLGİSAYAR TEMELLERİ VE PROGRAMLAMAYA GİRİŞ Yrd.Doç.Dr. Emel ARSLAN earslan@istanbul.edu.tr C DİLİNDE FONKSİYONLAR C DİLİNDE FONKSİYONLAR C programlama dili fonksiyon olarak adlandırılan alt programların

Detaylı

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

C PROGRAMLAMA DİLİNE GİRİŞ C PROGRAMLAMA DİLİNE GİRİŞ C Dilinin Tarihçesi 1972 de Dennis Ritchie tarafından AT&T Bell Laboratuarlarında B dilinden geliştirildi. C dili konusundaki ilk kitap 1978 de Dennis Ritchie ve Brain Kernighan

Detaylı

BİLGİSAYAR PROGRAMLAMA DERSİ

BİLGİSAYAR PROGRAMLAMA DERSİ BİLGİSAYAR PROGRAMLAMA DERSİ Yrd. Doç. Dr. Fatih TOSUNOĞLU Erzurum Teknik Üniversitesi Mühendislik Fakültesi İnşaat Mühendisliği Bölümü DERS NOTU 3 KONU: M-dosya yapısı ve Kontrol Yapıları M-Dosya Yapısı

Detaylı

Eln 1002 Bilgisayar Programlama II

Eln 1002 Bilgisayar Programlama II Eln 1002 Bilgisayar Programlama II C»de Dosya ğşleme : S¹ral¹ EriŞim Ne ÖĆreneceĆiz? Dosyalar ve Streamler Sequential (sıralı) erişim dosyaların yaratılması Sıralı Erişim Dosyalarından Veri Okuma Sıralı

Detaylı

10/17/2007 Nesneye Yonelik Programlama 3.1

10/17/2007 Nesneye Yonelik Programlama 3.1 Procedure-Based Programming in C++ Çoğu gerçek dünya problemleri binlerce kod satırı gerektirir ( MS Windows NT 5.0 25 million dan fazla kod satırından oluşmaktadır). Yazılımın tasarımı, kodlanması ve

Detaylı

C PROGRAMLAMA D İ L İ

C PROGRAMLAMA D İ L İ C PROGRAMLAMA DİLİ C Programlama Dilinin Temelleri C Programlama Dili'ni popüler kılan önemli nedenler aşağıda listelenmiştir: C, güçlü ve esnek bir dildir. C ile işletim sistemi veya derleyici yazabilir,

Detaylı

DİZİLER 5/4/2010. ENF-102 Jeoloji Giriş. Tek Boyutlu Diziler. Tek Boyutlu Diziler. Örnek. Örnek

DİZİLER 5/4/2010. ENF-102 Jeoloji Giriş. Tek Boyutlu Diziler. Tek Boyutlu Diziler. Örnek. Örnek Giriş DİZİLER Arrays Aynı isim altında, aynı türde birden fazla değer tutmak için kullanılan veri yapılarıdır (Data Structure). Dizi bir kümedir; aynı türde verilere tek bir isimle erişmek için kullanılır.

Detaylı

BİLGİSAYAR PROGRAMLAMA DERSİ

BİLGİSAYAR PROGRAMLAMA DERSİ BİLGİSAYAR PROGRAMLAMA DERSİ 4. DERS NOTU Konu: M-dosya yapısı ve Kontrol Yapıları Hazırlayan: Yrd. Doç. Dr. Ahmet DUMLU 1 M-Dosya Yapısı Bir senaryo dosyası (script file) özel bir görevi yerine getirmek

Detaylı

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

Döngü komutları komutların bir çok kez yeniden yürülmesini. sağlayan, programlamada kullandığımız önemli yapılardan biridir. Bölüm 5 Döngü Komutları while Komutu Diğer Operatörler Bileşik Komut for Komutu do-while Komutu İçiçe Döngüler break ve continue Komutları while Komutu Döngü komutları komutların bir çok kez yeniden yürülmesini

Detaylı

FONKSİYONLAR. Gerçek hayattaki problemlerin çözümü için geliştirilen programlar çok büyük boyutlardadır.

FONKSİYONLAR. Gerçek hayattaki problemlerin çözümü için geliştirilen programlar çok büyük boyutlardadır. C PROGRAMLAMA FONKSİYONLAR Gerçek hayattaki problemlerin çözümü için geliştirilen programlar çok büyük boyutlardadır. Daha büyük programlar yazmanın en kolay yolu onları küçük parçalar halinde yazıp sonra

Detaylı

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

Uzaktan Eğitim Uygulama ve Araştırma Merkezi JAVA PROGRAMLAMA Öğr. Gör. Utku SOBUTAY İÇERİK 2 Java da Fonksiyon Tanımlamak Java da Döngüler Java da Şart İfadeleri Uygulamalar Java da Fonksiyon Tanımlamak JAVA DA FONKSİYON TANIMLAMAK 4 Fonksiyonlar;

Detaylı

C Programlama printf() Fonksiyonu

C Programlama printf() Fonksiyonu C Programlama printf() Fonksiyonu Standart C kütüphanesinin bir parçası olan printf() C Programlama Dili'nin genel amaçlı çıktı alma fonksiyonudur. Girdi ve çıktı deyimleri gerçekte C dilinin bir parçası

Detaylı

şeklinde tanımlanmıştır. O halde, dosyaları daha önceki bilgilerimizi kullanarak FILE *Dosya1, *Dosya2;

şeklinde tanımlanmıştır. O halde, dosyaları daha önceki bilgilerimizi kullanarak FILE *Dosya1, *Dosya2; Dosya İşlemleri Nedir? Programlarınızı girdi (input) olarak aldığı verileri bir text dosyasında yada word dosyasında vb. saklamasıdır. Artık C programınızın yaratıp içine veriler koyacağı text dosyasını

Detaylı

BLM 111 Algoritma ve Programlama I Güz 2018

BLM 111 Algoritma ve Programlama I Güz 2018 BLM 111 Algoritma ve Programlama I Güz 2018 Eğitmen: Dr. Umut Konur konur@beun.edu.tr 2618 Asistanlar: Batuhan Cem Öğe, Murat Varul, Ersin Kılıç Ders kitabı: Deitel & Deitel, C ve C++, Prentice Hall Başvuru

Detaylı

C PROGRAMLAMA D İ L İ

C PROGRAMLAMA D İ L İ C PROGRAMLAMA DİLİ Diziler Dizi bir kümedir. Aynı tipteki verilere tek bir isimle erişmek için kullanılır. Bir dizi bildirildikten sonra, dizinin bütün elemanları bellekte peşpeşe saklanır. Bu yüzden dizilere

Detaylı

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

BMT 101 Algoritma ve Programlama I 7. Hafta. Yük. Müh. Köksal Gündoğdu 1 BMT 101 Algoritma ve Programlama I 7. Hafta Yük. Müh. Köksal Gündoğdu 1 C++ Program Denetimi Yük. Müh. Köksal Gündoğdu 2 Program Denetimi Bir program, belirli deyim satırlarından oluşur ve genellikle bu

Detaylı

Programlama Dilleri Laboratuvarı

Programlama Dilleri Laboratuvarı 2014 2015 Programlama Dilleri Laboratuvarı Ders Sorumlusu: Yrd. Doç. Dr. İsmail KURNAZ Laboratuvar Sorumluları: İÇİNDEKİLER Deney 1: Bilgisayar Kavramları, Algoritma Geliştirme ve Çözümü, Programlamaya

Detaylı

Özyineleme (Recursion)

Özyineleme (Recursion) C PROGRAMLAMA Özyineleme (Recursion) Bir fonksiyonun kendisini çağırarak çözüme gitmesine özyineleme (recursion), böyle çalışan fonksiyonlara da özyinelemeli (recursive) fonksiyonlar denilir. Özyineleme,

Detaylı

C++ Giriş Ders 1 MSGSU Fizik Bölümü Ferhat ÖZOK Kullanılacak kaynak: Published by Juan Soulié

C++ Giriş Ders 1 MSGSU Fizik Bölümü Ferhat ÖZOK Kullanılacak kaynak:  Published by Juan Soulié Kullanılacak kaynak: http://www.cplusplus.com/doc/tutorial/ Published by Juan Soulié C++ Nedir? Arttırılmış C demektir ve C dilinin geliştirilmiş halini yansıtır. C++ öğrenmeden önce herhangi bir programlama

Detaylı

BMÜ-111 Algoritma ve Programlama. Bölüm 5. Tek Boyutlu Diziler

BMÜ-111 Algoritma ve Programlama. Bölüm 5. Tek Boyutlu Diziler BMÜ-111 Algoritma ve Programlama Bölüm 5 Tek Boyutlu Diziler Yrd. Doç. Dr. İlhan AYDIN 1 Problem 100 adet sayı okumak istediğimizi düşünelim. Bu sayıların ortalaması hesaplanacak ve sayıların kaç tanesinin

Detaylı

Temel Bilgisayar Programlama

Temel Bilgisayar Programlama BÖLÜM 11: : Birçok programda, bazı verilerin disk üzerinde saklanmasına gerek duyulur. Bütün programlama dillerinde, sabit disk sürücüsü (Hard Disk Drive, HDD) üzerindeki verileri okumak veya diske veri

Detaylı

Bigisayar Programlama

Bigisayar Programlama Bigisayar Programlama (GÜZ 2015) DERS-02: C de Programlamaya Giriş Yrd. Doç Dr. Yakup EMÜL Cumhuriyet Üniv., Teknoloji Fakültesi Yazılım Mühendisliği Bölümü yakupemul@cumhuriyet.edu.tr Ofis Saatleri :

Detaylı

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

Kodlanacak programlama dilinin kaynaklarından faydalanılarak kod yazımı yapılır. GİRİŞ Algoritması tasarlanmış (metin olarak yazılmış, sözde kodlarla kodlanmış veya akış diyagramı çizilmiş) bir problemi/işlemi, bilgisayar programlama dillerinden birisiyle kodlamak son derece kolaydır.

Detaylı