C Programlama Dili ve Programlama Mantığı İzmir Ekonomi Üniversitesi Bilgisayar Topluluğu Ders Notları Daha bitmemiş halidir!

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

Download "C Programlama Dili ve Programlama Mantığı İzmir Ekonomi Üniversitesi Bilgisayar Topluluğu Ders Notları Daha bitmemiş halidir!"

Transkript

1 C Programlama Dili ve Programlama Mantığı İzmir Ekonomi Üniversitesi Bilgisayar Topluluğu Ders Notları Daha bitmemiş halidir! 1. Giriş Programlama, genel olarak, kullanıcının girdiği bilgiler ve istekler doğrultusunda belli komutların çalıştırılmasıdır. Bilgisayarlar her ne kadar hızlı olsalarda, yaptıkları iş konusunda fazla bilgiye sahip değillerdir. Onlar sadece verilen işleri sıkılmadan saatlerce yapabilen ağır işçilerdir. Bize düşen bu makinaların gideceği yolu çizmek, onlara yol göstermektir. Programlamayı, daha detaylı olarak, yapılacak işleri daha küçük parçalara ayırma işlemi olarak tanımlayabiliriz. Bize çok basit gelen işlemlerde bile bilgisayara adım adım bunları söylemek gerekmektedir. Örnek vermek gerekirse; bizden bir dizi kelimeyi alfabetik sıraya sokmamız isteniyor. metin, abajur, zemin, kalem, kitap Burada önceden alfabeyi bilmeniz gerekiyor. Alfabe bilgimize göre kolayca ilk olarak a ile başlayan kelimelere bakabiliriz. Bir tane olunca, onu aklımızda ilk sıraya yerleştiririz. Sonra en yakın K ile başlayanlar var. K ile başlayan iki tane olunca, ikinci harflerine göre sıralarız. Onlarda aynıysa üçüncü harfe göre... Bu işlemleri bilgisayara yaptırırkende, tıpkı bizim izlediğimiz yola benzer bir yol izleyeceğiz. Ama her adımı teker teker bilgisayara yaptırmamız lazım. Karmaşık ve uzun işlemlerde de bilgisayarın hızına ve sabrına güveneceğiz. Tıpkı bizim beynimizde konuşmak, yazmak, araba kullanmak gibi hazır işlevler varsa, programlarında bu tip hazır işlevleri vardır. Bunları kullanarak temel matematik işlemleri gibi bazı işlevlere ulaşabiliriz. Bilgisayar üzerinde problem çözmek, diğer problemleri çözmekten farklıdır. Burada amaç bilgisayara problemin nasıl çözdürüleceğidir. Diğer bir deyişle, problemi çözdürecek tarifi yazmaktır. Bunun için zaten problemin nasıl çözüleceğini bilmelisiniz. Bildiğiniz her şeyi bilgisayara, onun anlayacağı dilde söylemek ise programlama oluyor. Bir tür tercümanlıkta diyebilirsiniz. Tercümanlık, ne yazık ki, dünyanın en zor işlerinden biridir. Çünkü karşınızdakine, cümlenin anlamını bozmadan ve kaybetmeden, fikri verebilmelisiniz. Burada da işiniz, bu yönden biraz zor olacaktır. Bu kadar çok programlamadan bahsettikten sonra, kullanacağımız dil olan C'nin temellerini, genel öğelerini inceleyip, hızlı bir şekilde programlarımızı yazacağız. Yazdıkça ve deneyim kazandıkça ve dolayısıyla bilgisayarın dilinden giderek daha çok anlamaya başladıkça daha hızlı ve verimli çözümler bulabileceğiz. Programlamayı zevkli bir uğraş haline getiren de zaten budur. C ve Programlama Mantığı 1 / 25 IEU Bilgisayar Topluluğu

2 C'nin Temelleri Değişkenler Bütün programlama dillerinde en temel bileşenlerden biri değişkenlerdir. Bir çok yerde size tarif edilmişlerdir ve büyük ihtimalle doğru bir şekilde anlamışsınızdır. Değişkenler farklı değerler alabilen kaplardır. Buna sinema koltukları veya araba park yerleri gibi örnekler verilebilir. Bugün K sırasındaki 12 numaralı koltuğa siz otururken, yarın bir başkası oturacaktır. Tıpkı park ettiğiniz yere bir başkasının park etmesi gibi. Ama arabayı bir sinema koltuğuna koyamazsınız. Değişkenlerin de bu şekilde içeriğine ne alacağının bilinmesi gerekir. Sinema koltuğu, bilet alan müşterileri tutarken, park yeri arabaları tutmaktadır. Elma ve armutu toplayamayacağınız gibi bu ikisini de toplayamazsınız. Değişkenlerin içine alacakları türler, genelde temel tiplerdir; tamsayı, karakter, ondalık vs. gibi. C'de bunlara değişken tipleri diyoruz. Temel C değişken tipleri; int: char: float: double: void: Tamsayıları tutan değişken tipidir. Tek karakter tutan değişken tipidir. Ondalık sayıları tutan değişken tipidir. Daha hassas ondalık sayıları tutan değişken tipidir Boş tipi olmayan değişkenler içindir. Örneğin; int tamsayi; tamsayi = 1; char karakter = 'k'; Değişken tanımlamalarını programınızın başında yapmalısınız. Değişken isimlerinde İngiliz alfabesini kullanmalısınız. ı,i,ş,ğ,ü,ö gibi harfleri kesinlikle kullanmayınız. Değişken isimleri sayı ile başlayamaz. Değişken isimlendirmelerinde iki tür yöntem vardır. Birincisi, deve tipi denilen tamsayi gibi birleşik kelimenin ikincisinin büyük yazılması şekli, diğeride tam_sayi gibi, alt çizgi ile değişken adını oluşturmaktır. Değişken isimleri genelde küçük harflerde tutulur ve tamsayi, tamsayi, TAMSAYI farklı değişkenlerdir. İfadeler İfadeler, C programınızda verdiğiniz komutlara denir. İstisna koşullar dışında noktalı virgül ile biterler (;). Örnek vermek gerekirse; int tamsayi = 5; int digersayi = 6; int sonuc; sonuc = tamsayi + digersayi; printf( Sonuç %d, sonuc); Burada, üç değişken yaratılıp, sonuç, ekrana yazdırılmıştır. Burada her satırda bir ifade yer almaktadır. İlk iki satırda, iki tam sayı değişkeni tanımlanıp, değerleri yazılıyor. sonuc değişkeni ise, bu iki tamsayının toplamına eşitleniyor. En son, kitaplık fonksiyonlarından printf çağırılıyor. Bu noktadan sonra kitaplıklara değinmek iyi olur. C ve Programlama Mantığı 2 / 25 IEU Bilgisayar Topluluğu

3 Önişl emci (Preprocessor) ve Kitaplıklar (Library) Programı yazdıktan sonra, onu çalıştırılabilir yapmak için derlemeniz, makina diline çevirmeniz gerekmektedir. Bunu yapan programlara derleyici denir. Ama program derleyiciye gönderilmeden önce Önişlemci denen bir program ile incelenir. Bu önişlemci programı, yorum satırlarını kaldırmak, kitaplıkları dosyaya eklemek gibi, derleyiciye gönderilmeden önce yapılacak işleri yapar. Kitaplıklar, bizi bir çok yoğun ve yorucu işten kurtaran, başkaları tarafından yazılmış hazır fonksiyonlar topluluğudur. Bu kitaplıklar sayesinde daha hızlı program yazılması sağlanır. Bir çok kez kullanılmış ve test edilmiş bu kitaplık fonksiyonları hata payını azaltır, zamandan da kazanılır. İlk programlarımızda en çok kullanacağımız stdio.h (standard input output) gibi kitaplıklar bizlere, adından da anlaşılacağı gibi, giriş ve çıkış işlemleri (klavyeden bilgi alma, ekrana bilgi yazdırma gibi) için fonksiyonlar sunar. Diğer bir kitaplık olan math.h ise değişik matematiksel fonksiyonlar (trigonometri gibi) içerir. Genel C ya da programlama için STL (Standard Template Library) vardır. Burada bir çok yapının şablonları ve fonksiyonları hazır bulunmaktadır. İleriki konularda STL sık sık kullanılacaktır. Fonksiyonlar Bir programı, bir bütün olarak tek parça halinde arka arkaya sıralanmış kod satırları olarak hazırlamak hem çözüme ulaşmayı güçleştirir, hem de çözümün anlaşılırlığını azaltır. Ayrıca her seferinde farklı programlarda aynı işlem parçacıklarını oluşturmak için, aynı kod parçalarını tekrar tekrar yazmayı gerektirir. Daha pratik ve programlama mantığı açısından daha verimli olan yöntem, problemin mantıklı bir şekilde alt parçalara ayrılıp her bir alt parçanın kendi içinde çözümünün oluşturulması ve gerektiğinde ana bir parça tarafından kullanılarak istenen çözüme gidilmesidir. İşte bu metotla oluşturulan parçacıklar belli bir amaca yönelik fonksiyonlardır. C programlama dilinde her bir fonksiyonun kendisini tanımlayan bir imzası vardır ve bu imza o fonksiyonun ismini, fonksiyona alınan parametrelerin tiplerini ve fonksiyonun dönüş tipini belirtir. Aynı imza ile iki farklı fonksiyon olamaz. Bu mantıkla, alt parçacıkları çağırıp kullanan ana bir fonksiyon vardır, bu fonksiyon C programlama dilinde main fonksiyonudur ve her bir program, ilk olarak main fonksiyonundan başlanarak çalıştırılır. Bir fonksiyon, kod olarak gerçeklenirken yapacağı iş içine kod halinde yazılır, bu bölüm fonksiyonun gövdesidir. Örnek bir fonksiyon prototipi: void Fonksiyonismi(int, int) İki adet integer tipinde parametre bekleyen yukarıdaki Fonksiyonismi isimli fonksiyonun dönüş değeri boş olduğundan dolayı void gösterilmiştir. Bir başka örnek: int benimfonksiyonum(int, char) Yukarıdaki benimfomksiyonum isimli fonksiyon da biri tamsayı, biri de karakter olmak üzere iki adet parametre beklemektedir ve dönüş tipi tamsayıdır. Fonksiyonlar, tanımlandıkları prototiplerinden farklı olarak kullanılmaya çalışılırsa, derleyici hata verecektir. C ve Programlama Mantığı 3 / 25 IEU Bilgisayar Topluluğu

4 Fonksiyonları, matematikteki fonksiyonlara da benzetebilirsiniz. Matematikte bir sinüs fonksiyonu, derece olarak bir değer alır ve bu değere ait ondalık sayıyı bize verir. float sin(int derece) Fonksiyonlar, aldıkları değişkenler ile işlemler yapıp bize yeni bir değişken gönderen küçük alt programcıklardır. Program Program, bir makinaya, bir uygulama yaptırtabilmek için gerekli olan, o makinaya has bir dizi komuttur. Tıpkı Türkçe bilmeyen bir insana Türkçe birşeyler söylendiğinde anlamayacağı gibi, makina da kendi dilinde istekler bekleyecektir. Dolayısıyla makinanın işleyeceği program, o makina dilindeki bir program kodu olmalıdır. Programlar, standartlar doğrultusunda geliştirilmiş olan çeşitli programlama dillerinde yazıldıktan sonra, derleyiciler vasıtasıyla makina koduna dönüştürülürler ki bu kod o makinanin anlayabileceği dildir, yani 1'ler ve 0'lardan oluşmaktadır. C dilinde örnek bir program aşağıda verilmiştir ve derlendikten sonra makine dilindeki kod içeriğinden bir bölüm text editörü ile incelenmeye çalışıldığında bizler için anlamsız ifadeler olduğu gösterilmiştir.: Örnek: #include <stdio.h> int main() printf("c ile yazilmis bir ornek..."); derlenmiş halinden bir bölüm: EL F D4L4 (44 Ô ¼ ¼ ¼ ¼` X X /usr/lib/ld.so.1."+%'#*(-,!$&) Ôè$ Ø üd d 2. Program Akışı > < C ve Programlama Mantığı 4 / 25 IEU Bilgisayar Topluluğu

5 3. Fonksiyonlar Eğer bir dizi işlemi, farklı değişkenler ile birden çok kez yapacaksak, bu işlemleri bir fonksiyon içinde yaptırmamız iyi bir fikir olabilir. Fonksiyonların matematikteki adaşları, bir ya da birden fazla değişkeni alıp, yeni değerler üretebilirler. Programlamada fonksiyonlar biraz daha güçlüdür. Her zaman bir değişken almak zorunda değildirler. Her zaman bir sonuçta üretmek zorunda değildirler. İlk olarak matematikteki fonksiyonlara bakalım. f(x) = x 2 + 3x + 6 f(x) fonksiyonunda x'e 1 değerini verirseniz, o size, 10 değerini verecektir. Programlamadaki fonksiyonlar biraz daha karışık olsada kesinlikle daha zor değildir. Aynı f(x) fonksiyonunu şimdi program olarak yazmak isteyelim. int f(int x) return (x*x) + (3*x) + 6; Bu örnekle başlayarak fonksiyonları inceleyelim. Dö ndüreceği Değer (Return Value): Her fonksiyon bir değer döndürmek zorundadır. Döndüreceği değer, fonksiyonun tipini de belirler. Fonksiyon tipleri, değişken tipleri ile aynıdır. Eğer bir değer dönmeyecekse, fonksiyon void tipinde olmalıdır. void merhabadunya() printf ( Merhaba!\n ); merhabadunya() fonksiyonu, sadece ekrana bir yazı yazdırmaktadır. Bu yüzden döndüreceği bir şeyde yoktur. Ama yukarıdaki f fonksiyonumuz, bize yeni bir değer vereceği için tam sayı tipindedir. Fonksiyonun döndürdüğü değeri, bir şekilde yakalamanız gerekmektedir. Eğer f(x) fonksiyonunu programın herhangi bir yerinde, tek satırda f(3) olarak çağırırsam, bu hiç bir anlam ifade etmez. f(3)'ün sonucu benim için önemliyse, onu bir değişkenin içine atabilir, int k = f(3); ya da, doğrudan ekrana yazdırabilirim, printf( Sonuç : %d\n, f(3)); Parametreler: Parametreler, fonksiyonun dışarıdan alacağı değişkenler için kullanılır. Örneğin, yine ilk yazdığımız f(x) fonksiyonunda, x değeri dışarıdan alınacağı ve her x C ve Programlama Mantığı 5 / 25 IEU Bilgisayar Topluluğu

6 değişkeni için farklı sonuç çıkacağı için bir parametredir. Fonksiyonların birden fazla parametresi olabilir. Ya da, merhabadunya() fonksiyonu gibi parametresiz olabilir. Başka bir örnek ile birden fazla parametreye bakalım. int toplama (int ilksayi, int ikincisayi, int ucuncusayi) return ilksayi + ikincisayi + ucuncusayi; Fonksiyona dışarıdan farklı değerleri ilksayi, ikincisayi ve ucuncusayi değişkenleri ile verebiliriz. Fonksiyonu çağırmak için bütün bu değişkenlerin yazılması gereklidir. int sonuc; sonuc = toplama(3,5,6); Eğer, hepsi yazılmazsa, derleyici fonksiyonu bulamaz ve hata verir. Recursive (kendini ça ğıran fonksiyon): Bütün fonksiyonlar zaten main fonksiyonu içinden çağırılmaktadır. Fonksiyon çağırıldığında, program o yönde akmaya başlar, ta ki fonksiyon bir şekilde sonlanana kadar. Bu süre içinde fonksiyon tekrar kendini çağırabilir. Fonksiyonun kendini çağırması, kendi içindeki komutları tekrar yerine getirmesi anlamına gelmektedir. Tekrar çağırılan bir fonksiyon aynı satırda kendini bir kez daha çağıracağı için tıpkı for gibi sonsuz döngü olayına girebilir. Bu yüzden recursive fonksiyonları dikkatli kullanmak, bir noktada durdurmak gereklidir. Bu işlem, en güzel ve net olarak bir örnek üzerinde açıklanabilir. Bu örneklerin en ünlüsüde, Fibonacci sayılarıdır. Fibonacci sayıları, 1, 1, 2, 3, 5, 8, 13, şeklinde ilerleyen, kendinden önceki iki sayının toplamı alınarak belirlenen bir dizi sayıdır. Örneğin beşinci fibonacci sayısını bulmak istersek, önce 3 ve 4.cüyü bilmemiz gerekir. 4. içinse 2 ve 3.yü... Bu işlem en başa kadar devam eder. Fonksiyonu yazmamız gerekirse, int fibonacci (int sayi) if (sayi == 0) if (sayi == 1) return 1; return (fibonacci(sayi-1) + fibonacci(sayi-2)); Bu fonksiyon, return ifadesinde kendini iki kez tekrar çağıracaktır. Diyelimki fonksiyona sayi değişkeni olarak 4 gönderildi. Aşağıdaki grafiksel gösterimde de görebildiğiniz gibi, ilk fonksiyon fibonacci (3) ve fibonacci(2)'yi çağırdı. Onlarda yine alttakileri çağırdılar. En son fibonacci(1) ve fibonacci(0) çağırıldığında, 0 ve 1 değerlerini onlara return ettikçe, değerler toplandı ve en son 4. fibonacci sayısının 3 olduğu ortaya çıktı... Fonksiyona 24 gönderirseniz, 46368, 40 gönderirseniz bir süre bekledikten sonra C ve Programlama Mantığı 6 / 25 IEU Bilgisayar Topluluğu

7 gibi bir değer alırsınız. Fibonacci sayıları çok hızlı büyür, o yüzden girdiğiniz sayı büyüdükçe bekleme süreniz artacaktır. Fibonacci fonksiyonunda da gördüğünüz gibi, fonksiyon bir yerde son bulmalı, yoksa sonsuza kadar ilerlemeye devam eder. Burada, bildiğimiz ilk iki değer olan fibonacci(0) ve fibonacci (1) değerlerini kullandık. Recursive fonksiyonları bir şekilde belli bir noktada durdurma koşulunu unutmamak gerekir. 0 ve 1 değerlerinde, fonksiyon bir kez daha kendini tekrar etmeden sonlanmaktadır. Değişken Sahaları (Scope): Değişkenler tanımlı oldukları alanlar içinde geçerlidirler. Örneğin, main fonksiyonu içindeki aşağıdaki satırlara bakalım: int x = 1; int y = 2; int x = 3; printf( blok içindeki x ve y: %d - %d\n, x, y); printf ( blok disindaki x ve y : %d - %d\n, x, y); Programın çıktısına bakarsak: blok icindeki x ve y : 3-2 blok disindaki x ve y : 1-2 Buradaki süslü parantezler arasındaki blok, sadece farklı bir sahayı göstermek için kullanışmıştır. Bu blok, bir for ya da while döngüsü olabilir, ama isim vermeden de bu tip bir blok ayırıp, farklı işlemler yaptırabiliriz. Blok içinde yeni bir x tanımlanmıştır, ekranada oradaki x yazdırılmıştır. C ve Programlama Mantığı 7 / 25 IEU Bilgisayar Topluluğu

8 4. Arrayler Giriş: Diyelim ki bütün sınıfın notlarını bilgisayara girmek, en yüksek, en düşük notları bulmak, sınıf ortalamasını almak istiyorsunuz. Sınıftada 60 kişi var. Her kişinin notlarını ayrı bir değişkende tutmanız için 60 farklı değişkene ihtiyacınız var. Üstelik bunları toplamak, çıkarmak, ortalama almak içinde her birini teker teker toplatmanız lazım. Onlarıda bir şekilde yaptınız diyelim, en büyük ve en küçüğünü nasıl bulacaksınız? Onun içinde bir çok if koşulu ile uğraşmanız gerekmektedir. İşte, can kurtaranınız arrayler (diziler) burada sahneye giriyor. Yine matematikten örnek vermek gerekirse, ikinci dereceden bir denklemin köklerini bulmak istediğinizde iki tane kök olduğunu bilirsiniz. Örneğin x 2-5x + 6 ikinci dereceden fonksiyonunun kökleri 2 ve 3'tür. Bunlarıda hep x 1 = 2, x 2 = 3 şeklinde x'in altına 1 ve 2 yazarak, indisleyerek, belirtirsiniz. İkiside x'tir, ama biri x 1 diğeri x 2... Arraylerde aynı mantıkla çalışır. İşin önemli yanı, indisleri matematiksel işlemlerle gezebilirsiniz. Örneğin sınıftaki 60 kişi için 60 farklı değişken yerine (ki bu değişkenlere isim bulmakta tam bir kabus olurdu) not[60] yazarak kurtulacaksınız. Üstelik, bu 60'lık not değişkeni içinde gezmek, arama yapmak sadece bir döngü ile bitecektir. Arraylerin tek dikkat etmeniz gereken noktası, matematikteki gibi 1'den değil 0'dan başladıklarıdır. Yani 60'lık arrayde, ilk indis not[0] sonuncusuda not[59]'dur. Bu ince noktaya dikkat ettikten sonra kodlamaya başlayabiliriz. İş Başında: Şimdi, yukarıdaki isteklerimizin hepsini array ile çözecek bir program yazalım. Ama 60 kişinin notlarını elle girmek yerine notları rasgele değerler ile verelim. Bunun için rand() fonksiyonunu kullanacağız. rand() rasgele sayı üreten (random) bir fonksiyondur. #include <stdio.h> int main() srand(time(null)); int not[60]; int i, enbuyuk, enkucuk; float ortalama = 0; for (i=0;i<60;i++) not[i] = rand()%101; ortalama += not[i]; printf ("\nortalama : %.2f\n", ortalama/60); enbuyuk = enkucuk = not[0]; C ve Programlama Mantığı 8 / 25 IEU Bilgisayar Topluluğu

9 for (i=0;i<60;i++) if (not[i]>enbuyuk) enbuyuk = not[i]; if (not[i]<enkucuk) enkucuk = not[i]; printf ("En yuksek not : %d\nen dusuk not: %d\n",enbuyuk,enkucuk); Programı satır satır inceleyelim. main()'in içindeki ilk satırda srand() fonksiyonu rasgele sayı üreten rand() fonksiyonunu tohumlar (seed). srand() içine yazılabilecek en iyi değerde o anki zamandır. Bu yüzdende time(null) fonksiyonu kullanılmıştır. Bu komut konusunda çok fazla bilmenize şimdilik gerek yoktur. Bunu sadece rasgele notların çeşitliliği için yaptığımızı düşünebilirsiniz. Sonra 60'lık bir array açtık. i döngüde kullanacağımız değişkendir. enbuyuk ve enkucuk ise, notlar arasındaki en yüksek ve en düşük değerleri tutacağımız değişkenlerdir. ortalama değişkeni, ondalıklı olacağı için float olarak belirlenmiştir. Şimdi bütün notları elle girmek yerine, rasgele sayılar vererek, 60 kişinin notlarını girmekten, en azından bu program için, kurtulacağız. Eğer, rasgele sayı vermek istemeseydik, döngü içinde her not değişkeni için scanf ile değer almalıydık. Döngü içinde not[i]'nin her seferinde i değişkeninin artması ile bütün array içinde nasıl gezdiğine dikkat edin. Bir yandan da ortalama değerinin bulunması için bu değerler oraya ekleniyor. Ayrıca, döngünün 0'dan başladığını ve i<60 ile 59'a kadar ilerleyeceğini unutmayın. Döngü tamamlandığında elimizde 60'lık bir arrayin doldurulmuş hali ve bütün o değerlerin toplamı var. Şimdi yapmamız gereken, bu toplamı 60'a bölerek sınıf ortalamasını bulmak. Bunuda printf'in içinde yapıyoruz. Sonra, işin zevkli kısımlarından biri olan en yüksek ve en düşük notları bulmak geliyor. Karşınıza, yan yana yazılmış 60 sayıdan en yükseğini nasıl bulursunuz? Örneğin gözünüze bir 89 çarptı, tamam bu olabilir derken, 92 gördünüz bir tane. Artık en yüksek 92'dir derken sonralara doğru 95 ile en büyük konusundaki fikriniz güncellenmiş oldu. En küçük içinde aynı yöntemi izlersiniz farkında olmadan. Bunun nedeni bunu bir çok kez yapmış olduğunuz veya size basit geldiği için birden bire çözümü bulmanızdan kaynaklanıyor. Bilgisayarada aynı yöntemi izletiyoruz. En küçük ve en büyük sayı olarak array'in başındakini veriyoruz. Sonra arraydeki her elemanla karşılaştırıyoruz. Eğer bizim elimizdeki enbuyuk değerinden daha büyükse en büyük olarak onu güncelliyoruz. Aynı işlemi, enkucuk değişkeni içinde yapıyoruz. Bütün 60 not bitince, elimizde en büyük ve en küçük sayılar kalıyor. Yapmamız gereken onlarıda ekrana bastırmak... Fonksiyonlara Arrayleri Geçi rmek: Elinizde bir array olunca, onunla yapacağınız işlemleri bir fonksiyon üzerinden de yapmak daha verimli olabilir. Örneğin birden fazla sınıfın ortalaması lazımsa, bunları teker teker yerine bir fonksiyona gönderip orada hesaplatmak iyi C ve Programlama Mantığı 9 / 25 IEU Bilgisayar Topluluğu

10 bir fikir olabilir. Fonksiyonlara parametre olarak arrayleri nasıl göndereceğiz? Diyelimki yukarıdaki not arrayimizi bir fonksiyona göndermek istiyoruz, #include <stdio.h> float ortalamahesapla(int not[], int notsize); int main() srand(time(null)); int i; int not[60]; for (i=0;i<60;i++) not[i] = rand()%+101; printf( ortalama %.2f\n, ortalamahesapla(not, 60)); float ortalamahesapla(int not[], int notsize) float toplam = 0; int i; for (i=0;i<notsize;i++) toplam += not[i]; return toplam/notsize; float ortalamahesapla (int not[], int notsize) şeklinde, hemen arkasından arrayin boyunu göndererek fonksiyonumuzda array'i kullanabiliriz. Bu şekilde, fonksiyonlu olarak, bir arrayin en büyük ve en küçük değerlerini return eden bir fonksiyon yazmanız yararınıza olacaktır. Arama Yapmak: Arrayler içinde arama yapmak için, önce bir aranan değere ihtiyacınız vardır. Öncelikle kendimizin nasıl yapacağına bakalım. Arama yapmanın yolu, eğer sıralı değilse, hepsine teker teker bakmaktır. Bir yığın çalışma kağıdı arasından aradığınızı bulmak için hızlı hızlı sayfalara göz gezdirmekten başka ne şansınız yoktur. Tıpkı bunun gibi, arraylerde de, eğer belli bir düzende ilerlemiyorlarsa, bu notlar gibi rasgele ilerleyen bir sıra varsa, teker teker bakıp karşılaştırmaktan başka çare yoktur. Eğer, belli bir düzende ilerleseydi, tıpkı bir ofisteki dosyaların baş harflere göre dizilmesi gibi, o zaman sadece ilk harfin uyduğu sırada arama yapmak yeterli olurdu. Şimdi, programa geçelim. #include <stdio.h> int main() int i, aranan; int not[60]; for (i=0;i<60;i++) not[i] = rand()%101; printf ("Aradiginiz degeri yazin: "); scanf ("%d", &aranan); for (i=0;i<60;i++) if (aranan == not[i]) C ve Programlama Mantığı 10 / 25 IEU Bilgisayar Topluluğu

11 printf("aradiginiz deger sira %d'de bulundu!\n", i); Ekran çıktısına bakarsak: Aradiginiz degeri yazin: 12 Aradiginiz deger sira 3'de bulundu! Aranan değerin, arrayin hangi sırasında olduğunuda yazdırdık. Bunu bir fonksiyona dökerek yapmayı alıştırma olarak yapabilirsiniz. Arrayleri Sıralamak (Sorting): Notlar üzerinde çalışmalarımıza bir ara verip, boy konusunu ele alalım. Yine 60 kişilik sınıfımızı boy sırasına sokmak istersek, önce boylarını bir arraye atar, arkasından sıralama yaparız. Ama nasıl sıralayacağız? Öncelikle kendimizin nasıl yaptığını düşünelim. Lisedeki beden eğitimi derslerinde sıraya geçmemiz söylendiğinde hepimiz, önümüzdekinin bizden uzun, arkamızdakininde bizden kısa olmasına dikkat ederdik. Diyelimki önümüzdeki arkadaştan uzunsak, onunla yer değiştirip konumumuza tekrar bakarız. Bu yeni yerimizdeki önümüzdeki arkadaş yine bizden kısaysa, tekrar bir yer değiştirme ile devam ederdik, ta ki, eğer en uzun sizseniz, sıranın en başına varana kadar. Sayıların arka ve önlerine bakması söz konusu olmadığı için, biz arrayin içinden geçip, her geçişte yan yana ikisini karşılaştırarak sıraya sokacağız. Geçeceğimiz tur sayısı, arrayin içindeki elemanlar kadar olmalı. Yani 60'lık sınıfımızda, 60 kere sıradan geçip, ikili olarak yerlerini değiştirerek ilerleyeceğiz. Bu yöntem, bubble sort olarakta geçer. #include <stdio.h> int main() srand(time(null)); int i, j, k, temp; int not[60]; for (i=0;i<60;i++) not[i] = rand()%31+160; for (j=0;j<60;j++) for (k=0;k<60;k++) if ( not[k] > not[k+1] ) temp = not[k]; not[k] = not[k+1]; not[k+1] = temp; for (i=0;i<60;i++) printf("%d - ", not[i]); C ve Programlama Mantığı 11 / 25 IEU Bilgisayar Topluluğu

12 Burada, biraz açıklama yapmak yararlı olabilir. İlk olarak, rand()%30+160'ı ne için kullandık? Boyları sıraya sokacağımız için, en kısa boyun 160 cm, en uzununda 190 cm olmasını istedik. Boyları el ile girmeyip, rasgele belirlediğimiz için genel ortalama olarak bu civarda seyretmesini göz önüne alarak bunu yaptım. rand() herhangi bir sayı verir. Onu rand()%31 ile 0 ile 30 arasında bir sayıya indirgiyorum. Çünkü 31'den kalan en fazla 30 olabilir. Sonra onu en kısa boy olan 160'a ekliyorum. Böylece, en kısa, 31'e bölüm 0 çıktığında 160 cm, en uzunda 190 olacak... Şimdi gelelim bubble sort'a... Arrayin eleman sayısı kadar döneceğiz dedik. Her seferinde bütün elemanları bir yanındakiyle karşılaştıracağız. Burada, bir çok yerde karşınıza çıkacak yer değiştirme (swap) fonksiyonuna ilk adımı yaptık sayılır. Yer değiştirirken, ilk olarak yer değiştireceklerden birini başka bir yere alırız (kopyalarız, burada temp değişkenine). Onun kalktığı yere diğerini koyarız (not[k] = not[k+1]). Son olarak, temp'te oturanı da az önce not[k]'nın oturduğu yere koyarız. İşte! Şimdi yerleri değişmiş oldu. Bunuda eğer not[k], bir sonrakinden, yani not[k+1]'den büyükse bunu yapacağız. Arraylerin indislerinde aritmetik işlemleri yapabilmenin işlerimizi tekrar kolaylaştırdığını görüyorsunuz. Program hepsini sıraladıktan sonra, ekrana bastıracak; kişilik Beden Eğitimi dersiniz, boy sırasına göre hazırdır. Çoklu indisli arrayler: Şu ana kadar yaptıklarımız tek boyuttaydı. İşe ikinci bir boyut ekleme zamanı geldi. İlk olarak iki boyutu denemekte fayda var. Bunun için gözünüzün önüne herhangi bir tablo getirebilirsiniz. Örneğin ders programınız, pazartesiden cumaya, sabah 9'dan akşam 5'e kadar dersleriniz var. Haftalık ders programınızıda yazarken soldan sağa günleri, yukarıdan aşağıyada saatleri yazarsınız (veya tam tersi). İşte bu şekilde 9x5 = 45 tane kareniz olur. Bu kareleri de array ile gezebiliriz. Örnek olarak, ders programı yerine, üzerinde ortalama vb. işlemlerde yapabileceğimiz bir not çizelge tablosu düşünelim. 60 kişilik sınıfımızdaki her öğrencinin aldığı 1. vize, 2. vize ve final notlarının tutulacağı ve sınav ağırlıklarının vizelerde %30, finalde de %40 olduğu bir senaryoda öğrencilerin dönem notlarını hesaplayıp en yüksek ve en düşüğü ekrana yazdıralım. Yine, 60 kişinin 3er sınav notunu elle girmek yerine, random olarak sınav notlarını hesaplatalım. 1. vize 2. vize final 1. öğrenci öğrenci öğrenci C ve Programlama Mantığı 12 / 25 IEU Bilgisayar Topluluğu

13 Öğrencileri yukarıdan aşağıya bir array olarak düşünürseniz, her öğrencininde aynı zamanda sağa doğru notlarının olduğu bir arrayi olduğunu göreceksiniz. Bu durumda not[60] arrayinin ikinci boyutuna geçip, not[60][3] yapacağız. Bu, her not değişkeninin ayrıca bir array daha olduğunu gösterir. Peki bunun içinde nasıl gezeceğiz? Döngüleri iç içe kullanarak, istediğimiz yapabiliriz. int i,j; for (i=0;i<60;i++) for (j=0;j<3;j++) not[i][j] = rand()%101; 60lık arrayimizin i değişkeni ile gezerken, 3lük olanı da j değişkeni ile geziyoruz. Bu kısa örnekten sonra, programımızı yazmaya başlayabiliriz. #include <stdio.h> int main() srand(time(null)); int i,j; int notlar[60][3]; float donemnotu[60]; float enbuyuk, enkucuk; for (i=0;i<60;i++) for (j=0;j<3;j++) notlar[i][j] = rand()%101; donemnotu[i] = (notlar[i][0] * 0.30) + (notlar[i][1] * 0.30) + (notlar[i][2] * 0.40); enbuyuk = enkucuk = donemnotu[0]; for (i=0;i<60;i++) if (donemnotu[i] > enbuyuk) enbuyuk = donemnotu[i]; if (donemnotu[i] < enkucuk) enkucuk = donemnotu[i]; printf("en yuksek ortalama : %.2f\n", enbuyuk); printf("en dusuk ortalama : %.2f\n", enkucuk); C ve Programlama Mantığı 13 / 25 IEU Bilgisayar Topluluğu

14 Önemli noktalardan biri, ilk notları rasgele verirken, aynı zamanda donemnotu değişkenini aradan çıkarmak. Orada, sınavların ağırlık oranlarına göre ayrı bir arrayde tutuluyorlar. En son, yine ilk 60'lık not örneğimizde olduğu gibi, ortalamanın en yüksek ve en düşük olanlarını buluyor ve ekrana yazdırıyoruz. Burada dikkat edilmesi gereken diğer nokta ise ortalamaların float olarak alınması gibi değerlerle çarparken hassasiyetten değer kaybına uğramamak için float alınması gerekir. Programı, bu değişkenleri int olarak yapın ve farkı görmeye çalışın. Sıra geldi üçüncü boyuta. Bunun için, en güzel örnek, uzaydaki koordinatlar olabilir. Sizden üç boyutlu bir array içinde işlem yapmanız istenebilir. Hepsinin işleyişi ikiliye benzer. Burada ise tek yapmanız gereken arrayin içindekileri gezmek için en içe bir döngü daha yeterli olacaktır. 5. Pointerlar 6. Dosya İşlemleri Giriş Yazdığımız bütün programlarda kaydettiğimiz veriler, bilgisayarın geçici hafızasında saklanıyor ve program bitincede bellekten siliniyorlardı. Aynı bilgilere tekrar ulaşma imkanı sunmayan bu yaklaşım, gerçek problemlerde büyük bir sorun olarak karşımıza çıkıyor. Bunun için, bu bilgilerin kalıcı olan dosyalara yazılması gerekiyor. Dosyalardan okuma ve dosyaya yazma, tıpkı klavyeden bilgi girme veya ekrana yazı bastırma gibi düşünülebilir. Bilgiler klavyeden girilmesi gerekirken, dosyadan okunmakta, ekrana yazdırılması gerekirkende dosyaya yazdırılmaktadırlar. Programcının genel olarak dikkat etmesi, dosyadan okuyarak bilgi alırken bilgilerin ona nasıl geleceğini ayarlamasıdır. Dosya formatı, bu yüzden önem kazanmaktadır. Dosyadan Okumak Dosya okuma ve yazma işleri, printf ve scanf fonksiyonlarının akrabaları sayılabilecek fprintf ve fscanf fonksiyonları ile yapılmaktadır. printf ve scanf, sadece stdin (standart girdi) ve stdout (standart çıktı) ile uğraşırken, fprintf ve fscanf'in nereye yazacakları ve okuyacakları belli değildir. Bu yüzden, parametre olarak, bir dosyaya pointer alırlar. İlk okuma örneğiyle daha iyi anlaşılacaktır. Alışkanlık olduğu üzere, yine, sınıf notlarını bu sefer dosyadan okuyarak yapalım. Okuyacağımız dosyanın adı dosya01.dat, içinde de alt alta sınıfın aldığı notlar bulunmaktadır. Kaç kişi ya da kaç not olduğunu bilmiyoruz. Dosyanın sonuna kadar toplama yapacağız. Daha önce belirtildiği gibi, dosyanın formatı (biçimi) burada önem kazanıyor, çünkü programımız notları dosyadan alt alta gelmesini bekliyor... C ve Programlama Mantığı 14 / 25 IEU Bilgisayar Topluluğu

15 #include <stdio.h> int main() int sayac = 0; float nottoplam = 0; int temp; FILE *fptr; if ( (fptr = fopen("dosya01.dat","r") ) == NULL) printf("dosya acilamadi\n"); else while (!feof(fptr)) fscanf(fptr, "%d", &temp); nottoplam += temp; sayac++; fclose(fptr); printf("sinif ortalamasi : %.2f\n", (nottoplam/sayac)); dosya01.dat dosyası, programla aynı dizinde olmalıdır. Bunu belirttikten sonra programı açıklamaya girişebiliriz. İlk olarak, dosyada kaç tane not olduğunu bilmediğimiz için bir sayaç tamsayı değişkeni tanımladık. Arkasından, notların ortalamasını hesaplamamıza yardımcı olacak nottoplam değişkenini belirledik. Ondalıklı olacağı için, float tipindedir. Son olarak, temp denen, geçici bir değişkenimiz daha var. Bu da dosyadan her notu alıp, onu nottoplam değişkenine eklerken kullandığımız geçici bir değişkendir. Dosyaya pointer yapmak için FILE * fptr ifadesi yeterli olmaktadır. Artık fptr ifadesi bir dosyayı gösterecektir. Bunuda fopen ile yapıyoruz. fopen, bize bir dosya pointer'ı gönderiyor, onu fptr'a eşitledik. Ama bu işlemin gerçekleştiğinden emin olmak için bir koşul ifadesi içinde test ettik. Böylece dosya herhangi bir nedenle açılamazsa program dosyadan okumaya kalkışmayacaktır. Dosyaları açarken, amacımızı belirtmek zorundayız. Burada, dosyadan sadece okuma yapacağımız için fopen fonksiyonu içinde r diye bir parametre kullandık. Bu bir dosyayı sadece okumak için açar. Yeri gelmişken, burada girebileceğimiz açma tipi parametrelerini irdeleyelim. C ve Programlama Mantığı 15 / 25 IEU Bilgisayar Topluluğu

16 'r' 'w' 'a' 'r+' 'w+' 'a+' Sadece okumak için açar. Sadece yazmak için açar. Eğer dosya varsa içindekiler silinir. Dosya yoksa yaratılır. Ekleme (append) için açar. Ekleme yazma işlemi gibidir, sadece dosyanın içindekiler silinmez, yeniler dosyanın sonuna yazılır. Dosya yoksa, yaratılır. Varolan bir dosyayı okuma ve yazma için açar. Dosya içeriği değiştirilmez ama eklenenler dosya pozisyonu dosyanın başındadır. Okuma ve yazma için bir dosya açar. Dosya varsa, içindekiler silinir. Okuma ve yazma için bir dosya açar veya yaratır. Eğer dosya varsa, içindekiler silinmez, dosya pozisyonu yazma için dosyanın sonuna, okuma için dosyanın başındadır. Örneğimizde dosyayı sadece okumak için açtık. Eğer başarılı olursa, dosya sonu gelene kadar dosyadan notları okuyacağız. Dosya sonunun geldiğini feof (file end of file) fonksiyonu ile bakıyoruz. Dosya sırayla okunurken, dosyanın neresinde bulunulduğunu dosya pozisyonu belirler. fscanf() fonksiyonu ile fptr'ın gösterdiği dosyadan verileri teker teker alıyoruz. Buradaki benzerlik, dosyadan her satırı okurken sanki klavyeden girilmiş ve enter'a basılmış olarak düşünülebilir. Dosya ile işimiz bittikten sonra dosyayı fclose() ile kapatıyoruz. Bu unutmamız gereken bir adımdır. Dosyaya Yazmak Tıpkı okuma işlemi gibi, yazma işlemide aynı mantıkla işliyor. Eğer bir programda okuma ve yazma işlemlerini siz yapıyorsanız, yazdırdığınız dosyaları sonra okuyacağınız için formatına dikkat etmelisiniz. Burada notları dosyaya yazdıracağız ve yukarıdaki örnekteki programın beklediği gibi notları alt alta yazacağız. Böylece, notları yazdıktan sonra yukarıdaki programla ortalamasını alabilirsiniz. #include <stdio.h> int main() int not[60]; int i; FILE *fptr; if ( (fptr = fopen("yeninotdosyasi.dat", "w")) == NULL) printf("dosya acilamadi!\n"); else for (i=0;i<60;i++) not[i] = rand()%101; fprintf(fptr,"%d\n",not[i]); C ve Programlama Mantığı 16 / 25 IEU Bilgisayar Topluluğu

17 fclose(fptr); fprintf fonksiyonu, aynı fscanf gibi, dosyaya bir pointer aldı ve ekrana yazdırır gibi bütün arrayi teker teker dosyaya yazdı. Bu iki programıda, dosya isimlerini kullanıcıdan alarak daha etkili ve kullanışlı bir hale getirebiliriz. #include <stdio.h> void printerror() printf("bir hata olustu...\n"); int main() int not[60]; char dosyaadi[40]; int choice; int i; float toplam = 0; FILE *ac; FILE *yaz; do printf("1- Dosyadan oku\n"); printf("2- Dosyaya yaz\n"); printf("3- Cikis\n"); printf("\n\nseciminiz : "); scanf("%d", &choice); switch(choice) case 1: printf("dosya adini giriniz : "); scanf("%s",dosyaadi); if ( (ac=fopen(dosyaadi,"r")) == NULL) printerror(); else for(i=0;i<60;i++) fscanf(ac,"%d",&not[i]); C ve Programlama Mantığı 17 / 25 IEU Bilgisayar Topluluğu

18 toplam += not[i]; printf("ortalama : %.2f\n", (toplam/60)); fclose(ac); break; case 2: printf("yazilacak dosya adini giriniz : "); scanf("%s",dosyaadi); if( (yaz=fopen(dosyaadi,"a")) == NULL ) printerror(); else for(i=0;i<60;i++) fprintf(yaz,"%d\n",not[i]); printf("dosyaya yazildi\n"); fclose(yaz); break; case 3: printf("\n\ncikis\n\n"); break; default: printf("\n\nhatali Secim\n\n"); break; while(choice!= 3); 7. Structures (Yapılar) Structures (yapılar), veri yapılarına (data structures) bir giriş niteliği taşıdığı için, önemli, bir çok konuyu bir arada içerdiği içinde zor olarak kabul edilebilir. Ama ilerisi için çok yararlı olacaktır. Bu ana kadar gördüğümüz bütün değişkenler belli tiplerdeydi. Tamsayı, karakter vs. Her ne kadar bunlar işimizi görsede, gerçek hayatta işler bu şekilde değildir. Örneğin bir kişinin birden çok özelliği vardır. İsmini bir karakter dizesine atabilirken, yaşını bir tamsayıda tutabiliriz. Bunlar farklı değişkenler olmalarına rağmen hepsinin bir ortak noktası vardır. Hepsi aynı kişiye aittirler. Peki, birbiriyle alakalı olan bu değişkenleri bir arada toplamanın bir yolu var mı? Yapılar, bu iş için düzenlenmiş değişken topluluklarıdır. Bu değişken toplulukları, yeni bir C ve Programlama Mantığı 18 / 25 IEU Bilgisayar Topluluğu

19 değişken tipi yaratırlar. Artık bu yeni katlı değişken tipini de diğer temel değişkenler gibi kullanabiliriz. Örnek verelim; struct ogrenci int not; char *ogrenciadi; int yas; int boy; ; ogrenci yapısı, bir öğrencinin notunu, boyunu, adını ve yaşını tutmaktadır. Daha önceki örneklerimizde yer alan not ve boy ortalamalarını artık ogrenci değişkeni altında yapabiliriz. student tipinde yarattığımız değişkenleri arraylerde kullanabilir, o tipe pointer yaratabiliriz. Peki, bu nesnenin içindeki değişkenlere nasıl erişeceğiz. Burada, nokta (.) ile alt değişkenleri düzenleyebiliriz. #include <stdio.h> int main() struct ogrenci int not; int boy; int yas; char *ogrenciadi; ; struct ogrenci Osman; Osman.not = 77; Osman.ogrenciAdi = "Osman Kara"; Osman.yas = 25; Osman.boy = 182; printf ("ogrenci bilgileri : \n"); printf ("adi : %s\n", Osman.ogrenciAdi); printf ("yasi: %d\nboyu: %d\n",osman.yas, Osman.boy); printf ("notu: %d\n", Osman.not); Gördüğünüz gibi, yapının üzerinde işlem yapmak, temel tipteki değişkenlerle işlem yapmak gibidir. Değişkenleri toplu bir biçimde düşünmek hem düzen açısından hemde değişkenlerin bağlı olduğu değer açısından bize yarar sağlamaktadır. ogrenci yapısının içinde olabilecekleri arttırıp azaltmak yine bize kalmış bir durumdur. Ama gün gelirde yukarıdaki değişkenlerin yanına birde doğum tarihi eklemek istersek, bunu sadece yapının içinde tanımlamamız yeterli olacaktır. Yapıları genelde main fonksiyonunun dışında tanımlamak, yani programın en başında tanımlamak, onların diğer fonksiyonlar tarafından da kullanılmasını sağlar. C ve Programlama Mantığı 19 / 25 IEU Bilgisayar Topluluğu

20 Yapıların değişkenlerden işlem olarak farkları yoktur. Eğer istersek, bu yapıdan bir array oluşturabilir, struct ogrenci butunsinif[60]; ya da ona bir pointer yaratabilirdik, struct ogrenci *ogrenciptr; Union: Union, yapı gibi birden fazla değişken tipi içermesine rağmen aynı anda bu değişken tiplerinden sadece birinin değerini saklayabilir. Bu durumda unionın boyutu, içindeki en geniş değişkenin boyu kadardır. Örneğin bir float ve bir int içeren bir union, bir float genişliğinde olacaktır. Kullanıldığı anda hangi değişkenin dolu olduğunu bilmek programcının sorumluluğundadır. #include <stdio.h> int main() union mytype int tamsayi; float ondalik; char budakarakter; ; union mytype ornek; ornek.tamsayi = 1; printf("tamsayi (1): %d\n", ornek.tamsayi); ornek.budakarakter = 'k'; printf("karakter (1): %c\n", ornek.budakarakter); ornek.ondalik = 1.2; printf("ondalik (1): %f\n", ornek.ondalik); printf("tamsayi (2): %d\n", ornek.tamsayi); printf("karakter (2): %c\n", ornek.budakarakter); printf("ondalik (2): %f\n", ornek.ondalik); Çıktısına bakarsak; tamsayi (1): 1 karakter (1): k ondalik (1): tamsayi (2): karakter (2): š ondalik (2): Union'ın yapısı içerisinde bulunan int, char ve float değerleri, yeni değerlerini aldıkça önceki C ve Programlama Mantığı 20 / 25 IEU Bilgisayar Topluluğu

21 değişkenlerin değerleri kaybedilir. Üç değişken, aynı anda değer alamamaktadır. Değişkenlerin ikinci değerleri basılırken tamsayi ve karakter değişkenlerinin içerikleri değişmiştir. Yapıları Fonksiyonlara Geç irmek: Fonksiyonlara yapıları geçirmek, herhangi bir değişkeni parametre olarak geçirmekle aynıdır. Yapıları, programın en başında tanımlamak, bu yeni değişken tipini diğer fonksiyonlarından kullanabilmesini sağlayacaktır. Detaylı bir örnekle incelemeye başlayalım. #include <stdio.h> struct ogrenci int grade; int boy; int yas; ; /* fonksiyon prototipleri */ float ortalamahesapla(struct ogrenci sinif[], int size); void displayogrenci(struct ogrenci student); void enuzunolanibul(struct ogrenci sinif[], int size); int main() int i; struct ogrenci sinif[60]; srand(time(null)); /* Sinif, rasgele degerler ile turetiliyor */ for (i=0;i<60;i++) sinif[i].grade = rand()%101; sinif[i].boy = rand()% ; sinif[i].yas = rand()%6 + 18; /* sinif ortalamasi fonksiyonu */ printf("sinif ortalamasi : %.2f\n", ortalamahesapla(sinif, 60)); /* en uzunu bulma fonksiyonu */ enuzunolanibul(sinif,60); float ortalamahesapla(struct ogrenci sinif[], int size) /* ortalama hesab ı sonucunda float deger cikacak */ float toplam = 0; int i; for (i=0;i<size;i++) C ve Programlama Mantığı 21 / 25 IEU Bilgisayar Topluluğu

22 toplam += sinif[i].grade; return toplam/size; void enuzunolanibul(struct ogrenci sinif[], int size) int uzun = sinif[0].boy; int uzunolan = 0; int i; for (i=0;i<size;i++) if (uzun<sinif[i].boy) uzun = sinif[i].boy; uzunolan = i; displayogrenci(sinif[uzunolan]); return; void displayogrenci(struct ogrenci student) printf("ogrenci bilgileri:\n"); printf("ogrenci notu: %d\n", student.grade); printf("ogrenci boyu: %d\n", student.boy); printf("ogrenci yasi: %d\n", student.yas); Program, daha önce sınıf üzerinde teker teker yaptığımız uygulamaları, yapı ile bir kerede çözmeyi amaçlıyor. ogrenci yapısı altında yer alan grade, yas ve boy, bizim için rasgele değerlerle türetiliyor. Sonra sınıfın ortalaması ve en uzun olan kişinin bilgileri ekrana bastırılıyor. Burada dikkat edilmesi gereken noktalardan ilki, ogrenci yapısının programın hemen en başında tanımlanmış olması. Arkasından gelen fonksiyon prototipleri bu yapıyı içeren parametreler içermektedirler. Bu yüzden yapı en yukarıda tanımlanmalıdır. Arkasından, main fonksiyonu içinde, rasgele değerlerle sınıfımızı türetiyoruz. 60 kişilik sınıfımıza boy, yaş ve not değerleri biçiyoruz. Notlar 0'dan 100'e, boylar 160'tan 190'a, yaşlarda 18'den 23'e kadar değişik farklı değerler alıyorlar. En yukarıdaki üç fonksiyon prototipinin iki tanesinde, parametre olarak yapı arrayi gönderilmektedir. En sondaki displayogrenci fonksiyonu ise doğrudan bir ogrenci yapısı almaktadır. Görüldüğü üzere temel değişkenleri göndermekten farkı yoktur. displayogrenci fonksiyonu, sadece enuzunolanibul fonksiyonu içinde, en uzunu göstermek için kullanılıyor. En uzun dışında, en genç ve en yüksek notu bulan fonksiyonların içinde de kullanma şansımız var. Bu sayılan diğer fonksiyonları okuyucunun kendi yazması güzel bir C ve Programlama Mantığı 22 / 25 IEU Bilgisayar Topluluğu

23 alıştırma olacaktır. Yapı Pointerları: Bir yapı pointerı ile yapının alt değişkenlerine ulaşmak istersek, nokta (.) yerine > işaretini kullanabiliriz. #include <stdio.h> struct ogrenci int yas; int boy; ; void swap(struct ogrenci* bir, struct ogrenci* iki) struct ogrenci temp; temp.yas = bir->yas; temp.boy = bir->boy; bir->yas = iki->yas; bir->boy = iki->boy; iki->yas = temp.yas; iki->boy = temp.boy; void printogrenci(struct ogrenci o) printf("ogrenci bilgileri : \n"); printf("yasi : %d\n", o.yas); printf("boyu : %d\n", o.boy); int main() struct ogrenci std1; struct ogrenci std2; struct ogrenci* std1ptr = &std1; struct ogrenci* std2ptr = &std2; std1.yas = 18; std1.boy = 181; std2.yas = 20; std2.yas = 170; printf("swaptan once : \n"); printogrenci(std1); printogrenci(std2); swap(std1ptr, std2ptr); printf("swaptan sonra : \n"); C ve Programlama Mantığı 23 / 25 IEU Bilgisayar Topluluğu

24 printogrenci(std1); printogrenci(std2); Böylece, swap'a bir örnek daha vermiş olduk Veri Yapıları? Giriş C ve Programlama Mantığı 24 / 25 IEU Bilgisayar Topluluğu

25 Kaynaklar Hazırlayanlar: Gö rkem Paç acı / İlker Korkmaz / Kaya Oğuz İzmir Ekonomi Üniversitesi Bilgisayar Topluluğu, bu eğitimleri sadece öğrencilere yardımcı olması amacıyla hazırlamaktadır. Herhangi bir ticari/maddi amaç yoktur. Notları kopyalama, çoğaltma ve paylaşma yazarların isimleri korunduğu sürece serbesttir. Bu notlar parayla satılamaz. Notlar herhangi bir garanti içermemektedir, yararlı olması amacıyla hazırlanmıştır. (c) C ve Programlama Mantığı 25 / 25 IEU Bilgisayar Topluluğu

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ı

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ı

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ı

ş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ı

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ı

Metin Dosyaları. Metin Dosyaları Dosya Açma ve Kapama Dosya Okuma ve Yazma Rastgele Erişim Standart Girdi/Çıktı Hata Kontrolü

Metin Dosyaları. Metin Dosyaları Dosya Açma ve Kapama Dosya Okuma ve Yazma Rastgele Erişim Standart Girdi/Çıktı Hata Kontrolü Metin Dosyaları Metin Dosyaları Dosya Açma ve Kapama Dosya Okuma ve Yazma Rastgele Erişim Standart Girdi/Çıktı Hata Kontrolü Metin Dosyaları Metin dosyaları, verileri bir kere hazırlayıp, ikincil saklama

Detaylı

Genel Programlama II

Genel Programlama II Genel Programlama II 22.03.2011 1 Yapılar ( Structures ) Yapılar ( structures ); tam sayı, karakter vb. veri tiplerini gruplayıp, tek bir çatı altında toplar. Bu gruplandırma içinde aynı ya da farklı veri

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ı

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ı

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ı

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ı

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ı

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ı

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ı

İstanbul Teknik Üniversitesi IEEE Öğrenci Kolu DİZİLER

İstanbul Teknik Üniversitesi IEEE Öğrenci Kolu DİZİLER DİZİLER Dizi Nedir? Aynı türden nesnelerin oluşturduğu, bellekte bitişik bir biçimde bulunan veri yapısına dizi denir.mesela alfabe diye bir dizi tanımlarız, harfleri a,b,c,d... diye sıralarız.dizinin

Detaylı

ALGORİTMA VE PROGRAMLAMA I DERS NOTU#8

ALGORİTMA VE PROGRAMLAMA I DERS NOTU#8 ALGORİTMA VE PROGRAMLAMA I DERS NOTU#8 YZM 1105 Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi 6. BÖLÜM 2 Çok Boyutlu Diziler Çok Boyutlu Dizi 3 Bir dizi aşağıdaki gibi bildirildiğinde

Detaylı

ALGORİTMA VE PROGRAMLAMA I

ALGORİTMA VE PROGRAMLAMA I ALGORİTMA VE PROGRAMLAMA I Yrd. Doç. Dr. Deniz KILINÇ deniz.kilinc@cbu.edu.tr YZM 1101 Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Genel Bakış 2 Diziler Dizi Nedir? Dizilerin Bildirimi

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ı

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ı

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ı

ALGORİTMA VE PROGRAMLAMA II

ALGORİTMA VE PROGRAMLAMA II ALGORİTMA VE PROGRAMLAMA II Yrd. Doç. Dr. Deniz KILINÇ deniz.kilinc@cbu.edu.tr YZM 1102 Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Genel Bakış 2 İşaretçiler ve Diziler Fonksiyon

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ı

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ı

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ı

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

Javascript. 1) Notepad++ aşağıdaki kodları yazıp deneme.html olarak kaydedelim. 2) Biraz önceki sayfa sadece html kodların içeriyordu. Javascript Html sayfalarının içine yazılarak, sayfayı daha etkileşimli hale getirir. click olayları, uyarı mesajları gibi hareketlerle sayfayı daha dinamik hale getirir. Javascript olmadan yazılan html

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ı

ALGORİTMA VE PROGRAMLAMA I

ALGORİTMA VE PROGRAMLAMA I ALGORİTMA VE PROGRAMLAMA I YZM 1101 Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Genel Bakış 2 Diziler Dizi Nedir? Dizilerin Bildirimi Dizilere Başlangıç Değeri Verme Dizilerde Arama

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ı

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ı

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ı

ALGORİTMA VE PROGRAMLAMA II

ALGORİTMA VE PROGRAMLAMA II ALGORİTMA VE PROGRAMLAMA II Yrd. Doç. Dr. Deniz KILINÇ deniz.kilinc@cbu.edu.tr YZM 1102 Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Genel Bakış 2 Veri Hiyerarşisi Dosyalara Giriş

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ı

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ı

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ı

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ı

BİLGİSAYAR BİLİMİ DERSİ (KUR 1) PYTHON PROGRAMLAMA DİLİ ÇALIŞMA KÂĞIDI - 1

BİLGİSAYAR BİLİMİ DERSİ (KUR 1) PYTHON PROGRAMLAMA DİLİ ÇALIŞMA KÂĞIDI - 1 BİLGİSAYAR BİLİMİ DERSİ (KUR 1) PYTHON PROGRAMLAMA DİLİ ÇALIŞMA KÂĞIDI - 1 Ekrana Metin Yazdırmak Ekranda metin yazdırmak istendiğinde print komutu kullanılır. Kullanımı aşağıda verilmiştir. Parantez içinde

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ı

Ö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ı

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ı

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

ELN1002 BİLGİSAYAR PROGRAMLAMA 2 ELN1002 BİLGİSAYAR PROGRAMLAMA 2 DOSYALAMA Sunu Planı Veri Hiyerarşisi Dosyalar ve Akımlar(streams) Sıralı Erişim (Sequential Access) dosyalarının oluşturulması Sıralı Erişim Dosyalarından Veri Okuma Rasgele

Detaylı

İstanbul Teknik Üniversitesi IEEE Öğrenci Kolu

İstanbul Teknik Üniversitesi IEEE Öğrenci Kolu PROGRAM AKIŞ DENETİMİ Program akış denetimi konusu temel olarak 2 e ayrılır. Bunlar; 1)Koşul Deyimleri 2)Döngü Deyimleri KOŞUL DEYİMLERİ Koşul deyimleri temel olarak programı kontrol etmeye yararlar. Bunlara

Detaylı

BLM-112 PROGRAMLAMA DİLLERİ II. Ders-8 Dosya İşlemleri-1. Yrd. Doç. Dr. Ümit ATİLA

BLM-112 PROGRAMLAMA DİLLERİ II. Ders-8 Dosya İşlemleri-1. Yrd. Doç. Dr. Ümit ATİLA BLM-112 PROGRAMLAMA DİLLERİ II Ders-8 Dosya İşlemleri-1 Yrd. Doç. Dr. Ümit ATİLA umitatila@karabuk.edu.tr http://web.karabuk.edu.tr/umitatilla/ Giriş Değişken ve dizilerde tutulan değerler programın çalışması

Detaylı

İnternet Programcılığı Öğr. Gör. Serkan AKSU PHP de Dizi-Değişkenler, Nesneler. Dizi Oluşturma. Tek Boyutlu Diziler

İnternet Programcılığı Öğr. Gör. Serkan AKSU  PHP de Dizi-Değişkenler, Nesneler. Dizi Oluşturma. Tek Boyutlu Diziler PHP de Dizi-Değişkenler, Nesneler Dizilerle ilgili örneklere geçmeden önce aşağıdaki tabloyu inceleyelim. Tabloda dizi kavramının mantığı açıklanmaktadır. Tablonun tamamını bir dizi olarak düşünün ve bu

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ı

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ı

Yrd. Doç. Dr. Caner ÖZCAN

Yrd. Doç. Dr. Caner ÖZCAN Yrd. Doç. Dr. Caner ÖZCAN GİRİŞ Değişken ve dizilerde tutulan değerler programın çalışması esnasında değerlerini korurlarken programın çalışması sona erdiğinde veri kaybolur. Dosyalar verinin kalıcı olarak

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ı

BMB1002 Bilgisayar Programlamaya Giriş. Dosyalar. Prof. Dr. Necmettin Kaya

BMB1002 Bilgisayar Programlamaya Giriş. Dosyalar. Prof. Dr. Necmettin Kaya BMB1002 Bilgisayar Programlamaya Giriş Dosyalar Prof. Dr. Necmettin Kaya Dosyalar, verilen saklanması ve daha sonra okunması için bilgi içeren ve kalıcı olarak saklanabilen ortamlardır. Dosya işlemleri,

Detaylı

DOSYA İŞLEMLERİ Programlama dilleri hafta -

DOSYA İŞLEMLERİ Programlama dilleri hafta - BİLECİK ŞEYH EDEBALİ ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ DOSYA İŞLEMLERİ Programlama dilleri 1-10. hafta - Araş. Gör. Nesibe YALÇIN Dosya İşlemleri Programın çalışma esnasında

Detaylı

Sunum İçeriği. Programlamaya Giriş 22.03.2011

Sunum İçeriği. Programlamaya Giriş 22.03.2011 Programlamaya Giriş Nesne Tabanlı Programlamaya Giriş ve FONKSİYONLAR Sunum İçeriği Nesne Tabanlı Programlama Kavramı Fonksiyon tanımlama ve kullanma Formal Parametre nedir? Gerçel Parametre nedir? Fonksiyon

Detaylı

NESNEYE YÖNELİK PROGRAMLAMA

NESNEYE YÖNELİK PROGRAMLAMA NESNEYE YÖNELİK PROGRAMLAMA Metotlar Şu ana kadar yaptığımız örneklerde hep önceden hazırlanmış ReadLine(), WriteLine() vb. gibi metotları kullandık. Artık kendi metotlarımızı yapmanın zamanı geldi. Bilmem

Detaylı

10. DOSYA GİRİŞ ÇIKIŞ FONKSİYONLARI

10. DOSYA GİRİŞ ÇIKIŞ FONKSİYONLARI 10. DOSYA GİRİŞ ÇIKIŞ FONKSİYONLARI İkincil bellekte tanımlanmış bölgelere dosya denir. Her dosyanın bir ismi vardır. Ancak dosyaların isimlendirme kuralları sistemden sisteme göre değişebilmektedir. Dosya

Detaylı

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

MAK 1005 Bilgisayar Programlamaya Giriş. Fonksiyonlar. Prof. Dr. Necmettin Kaya MAK 1005 Bilgisayar Programlamaya Giriş Fonksiyonlar Prof. Dr. Necmettin Kaya 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

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ı

ALGORİTMA VE PROGRAMLAMA I

ALGORİTMA VE PROGRAMLAMA I ALGORİTMA VE PROGRAMLAMA I YZM 1101 Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Genel Bakış 2 Karakter Dizileri Karakter Dizilerini Okumak ve Yazmak Karakter Dizilerinin Uzunluğunu

Detaylı

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

C# Programlama Dili. İlk programımız Tür dönüşümü Yorum ekleme Operatörler C# Programlama Dili İlk programımız Tür dönüşümü Yorum ekleme Operatörler 1 İlk Programımız Bu program konsol ekranına Merhaba dünya! yazıp kapanır. Programı geçen derste anlatıldığı gibi derleyin, sonra

Detaylı

BM102 BİLGİSAYAR PROGRAMLAMA II LABORATUVAR UYGULAMALARI. 3Hafta

BM102 BİLGİSAYAR PROGRAMLAMA II LABORATUVAR UYGULAMALARI. 3Hafta Ön bilgi: Özyineli fonksiyon tanımlanabilmeli. Dizilerin fonksiyon parametresi veya geri dönüş değeri olarak kullanımı bilinmeli. 1. Klavyeden girilen sayı n olmak üzere [1..n] aralığındaki sayıların toplamı

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ı

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

Eastern Mediterranean University Faculty of Arts & Sciences -- Department Of Mathematics BİLG213 BİLGİSAYAR PROGRAMLAMAYA GİRİŞ Eastern Mediterranean University Faculty of Arts & Sciences -- Department Of Mathematics BİLG213 BİLGİSAYAR PROGRAMLAMAYA GİRİŞ DÖNEM SONU SINAVI GÜZ 2009-2010 13 Ocak 2010, Sınav Süresi: 120 dakika. İsim

Detaylı

ALGORİTMA VE PROGRAMLAMA I

ALGORİTMA VE PROGRAMLAMA I ALGORİTMA VE PROGRAMLAMA I Yrd. Doç. Dr. Deniz KILINÇ deniz.kilinc@cbu.edu.tr YZM 1101 Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Genel Bakış 2 Karakter Dizileri Karakter Dizilerini

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ı

Temel Dosya İşlemleri. Kütük Organizasyonu 1

Temel Dosya İşlemleri. Kütük Organizasyonu 1 Temel Dosya İşlemleri Kütük Organizasyonu 1 Dosyaların Temel İşlemleri Bilgiler dosyada belirli bir düzen içerisinde yer alırlar Örn: ALAN THARP 100 100 100 JOHN BISHOP 70 80 75 PAUL AUSTER Bir satırda

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ı

BİLG214. 20.10.2009 Dr. Mustafa T. Babagil 1

BİLG214. 20.10.2009 Dr. Mustafa T. Babagil 1 BİLG214 20.10.2009 Dr. Mustafa T. Babagil 1 Yapısal bilgi türlerinin tanımlanması. (C++ daki struct yapısı. ) Daha önce öğrenmiş olduğumuz bilgi tipleri char, int ve float v.b. değişkenler ile dizi (array)

Detaylı

Bir dizinin boyutları sabittir ve kullanılmadan önce belirlenmelidir. Dizi boyutunu belirlemek için başka bir değişkende kullanabilirsiniz.

Bir dizinin boyutları sabittir ve kullanılmadan önce belirlenmelidir. Dizi boyutunu belirlemek için başka bir değişkende kullanabilirsiniz. C# da Diziler Diziler için aynı tipteki verilerin tutulduğu bir koleksiyon diyebiliriz. Örneğin integer verinin bir yığın şeklinde tutulması için dizileri kullanırız. C# da diziler referans tipinde değişkenlerdendir.

Detaylı

Algoritma Geliştirme ve Veri Yapıları 9 Ağaç Veri Modeli ve Uygulaması. Mustafa Kemal Üniversitesi

Algoritma Geliştirme ve Veri Yapıları 9 Ağaç Veri Modeli ve Uygulaması. Mustafa Kemal Üniversitesi Algoritma Geliştirme ve Veri Yapıları 9 Ağaç Veri Modeli ve Uygulaması Ağaç, verilerin birbirine sanki bir ağaç yapısı oluşturuyormuş gibi sanal olarak bağlanmasıyla elde edilen hiyararşik yapıya sahip

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ı

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ı

Dizi elemanları yukarıdaki gibi tek tek tanımlanabileceği gibi matematiksel ifadelerdeki diziler gibi de tanımlanabilir.

Dizi elemanları yukarıdaki gibi tek tek tanımlanabileceği gibi matematiksel ifadelerdeki diziler gibi de tanımlanabilir. DİZİLER/ARRAY: Dizi yi çeşitli şekillerde tanımlamak mümkün. Dizi içlerinde birden fazla değer saklayabilen veri kümeleridir diye tanımlarsak uygun olur sanırım. Diziler yan yana dizilmiş kutucuklar olarak

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 9 Dr. Fatih AY Tel: 0 388 225 22 55 fatihay@fatihay.net www.fatihay.net Dizileri Fonksiyonlara Dizileri Fonksiyonlara Bir dizi argümanını fonksiyon içinde bir değer olarak kullanabilmek

Detaylı

1. 100 elemanlı bir dizide bir sinyalin 1 er saniye aralıklarla ölçülen gerilim değerleri tutulmaktadır. Bu sinyalin tepeden tepeye genliğini,

1. 100 elemanlı bir dizide bir sinyalin 1 er saniye aralıklarla ölçülen gerilim değerleri tutulmaktadır. Bu sinyalin tepeden tepeye genliğini, 1. 100 elemanlı bir dizide bir sinyalin 1 er saniye aralıklarla ölçülen gerilim değerleri tutulmaktadır. Bu sinyalin tepeden tepeye genliğini, pozitif tepe genliğini, negatif tepe genliğini ve ortalamasını

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ı

mod ile açılacak olan dosyanın ne amaçla açılacağı belirlenir. Bunlar:

mod ile açılacak olan dosyanın ne amaçla açılacağı belirlenir. Bunlar: Dosyalama Çoğu programda, bazı verilerin disk üzerinde saklanmasına gerek duyulur. C programlama dilinde, disk dosyasına erişme (okuma ve yazma için) iki farklı yöntemle yapılır. Bunlar üst düzey ve alt

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ı

BİLG Dr. Mustafa T. Babagil 1

BİLG Dr. Mustafa T. Babagil 1 BİLG214 20.10.2009 Dr. Mustafa T. Babagil 1 Yapısal bilgi türlerinin tanımlanması. (C++ daki struct yapısı. ) Daha önce öğrenmiş olduğumuz bilgi tipleri char, int ve float v.b. değişkenler ile dizi (array)

Detaylı

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

for döngüsü for (başlangıç değeri; şart; artım) ifade; for (başlangıç değeri; şart; artım) { ifadeler; } for döngüsü for (başlangıç değeri; şart; artım) ifade; for (başlangıç değeri; şart; artım) ifadeler; Başlangıç değeri; koşul içinde tanımladığımız değişkene ilk değerin atanmasını sağlar. Koşul: Döngünün

Detaylı

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

BÖLÜM 6: KARŞILAŞTIRMALI KONTROL YAPILARI BÖLÜM 6: KARŞILAŞTIRMALI KONTROL YAPILARI C programlama dilinde, diğer programlama dillerinde olduğu gibi, işlemler, ilk satırdan başlamak üzere sırayla çalışır. Program kontrol yapıları ise, programın

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ı

Matlab da Dizi ve Matrisler. Mustafa Coşar

Matlab da Dizi ve Matrisler. Mustafa Coşar Matlab da Dizi ve Matrisler Mustafa Coşar MATLAB Değişkenleri Matlab da değişkenler; skaler, dizi(vektör), matris veya metin (string) türünde olabilirler. Örnek olarak: a=1; b=-3.2e3; c=22/5; metin= mustafa

Detaylı

Rasgele Sayılar. 1.1 Bilgisayar Rasgele Sayı Üretemez! 1.2 rand() fonksiyonu

Rasgele Sayılar. 1.1 Bilgisayar Rasgele Sayı Üretemez! 1.2 rand() fonksiyonu 1 Rasgele Sayılar 1.1 Bilgisayar Rasgele Sayı Üretemez! Bilgisayar uygulamalarında sık sık rasgele sayı üretimi ile karşılaşırız. Hemen her oyunda ve kriptografide karşımıza aynı soru çıkar. Bilgisayarda

Detaylı

C#(Sharp) Programlama Dili

C#(Sharp) Programlama Dili Değişkenler C#(Sharp) Programlama Dili Program yazarken her zaman sabit verilerle çalışmayız, çoğu zaman programımızda bir verinin kullanıcının davranışına göre değişmesi gerekir. Kullanıcıdan bir metin

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ı

YAPILAR (STRUCTURES)

YAPILAR (STRUCTURES) YAPILAR (STRUCTURES) Yapılar, dizilere benzeyen ancak farklı tipten verileri bir arada tutan bütün olarak tanımlanabilir. Yapıların kullanılmasının esas sebebi de budur. Yapı tipi aslında yeni bir tip

Detaylı

Dr. Fatih AY Tel:

Dr. Fatih AY Tel: Bilgisayar Programlama Ders 5 Dr. Fatih AY Tel: 0 388 225 22 55 fatihay@fatihay.net www.fatihay.net Fonksiyonlar Fonksiyonlar Büyük programlar geliştirmenin en iyi yolu, onu orijinal programdan daha kolay

Detaylı

1. Her marka için 3 aylık satış toplamı nedir? (Tablodaki satır toplamları)

1. Her marka için 3 aylık satış toplamı nedir? (Tablodaki satır toplamları) Çok Boyutlu Diziler gelecegiyazanlar.turkcell.com.tr/konu/android/egitim/android-101/cok-boyutlu-diziler Kategori : Mobil Lisans : Creative Commons (by-nc-sa) En son 28.04.2016 tarihinde güncellendi Yazar

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++ Dilinde Bazı Temel Algoritmalar

C++ Dilinde Bazı Temel Algoritmalar C++ Dilinde Bazı Temel Algoritmalar Bazı eşyalar için her eve lazım derler. Az sonra bahsedeceğimiz algoritmalar da her kodcuya lazım cinsten. Sayının tek mi çift mi olduğuna karar veren programdan, çarpım

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ı

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ı

Toplama işlemi için bir ikili operatör olan artı işareti aynı zamanda tekli operatör olarak da kullanılabilir.

Toplama işlemi için bir ikili operatör olan artı işareti aynı zamanda tekli operatör olarak da kullanılabilir. www.csharpturk.net Türkiye nin C# Okulu Yazar Yunus Özen Eposta yunus@yunus.gen.tr Tarih 08.04.2006 Web http://www.yunusgen.tr ARİTMETİK OPERATÖRLER VE KULLANIM ŞEKİLLERİ Bilgisayarlar yapıları gereği,

Detaylı

Yrd. Doç. Dr. Caner ÖZCAN

Yrd. Doç. Dr. Caner ÖZCAN Yrd. Doç. Dr. Caner ÖZCAN GİRİŞ Değişken ve dizilerde tutulan değerler programın çalışması esnasında değerlerini korurlarken programın çalışması sona erdiğinde veri kaybolur. Dosyalar verinin kalıcı olarak

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ı

NESNE TABANLI PROGRAMLAMA Final Sınavı Cevapları

NESNE TABANLI PROGRAMLAMA Final Sınavı Cevapları Sayfa1 NESNE TABANLI PROGRAMLAMA 25.01.2011 Final Sınavı Cevapları CEVAPLAR 1. A ve C 3x3 boyutlu kare matrislerdir. Bu matrisler için, iken, işlemini gerçekleştirerek C matrisini oluşturan bir C++ programı

Detaylı

Klavyeden Basit Giriş/Çıkış İşlemleri

Klavyeden Basit Giriş/Çıkış İşlemleri Klavyeden Basit Giriş/Çıkış İşlemleri Klavyeden veri girilmesi, girilen verilere çeşitli işlemler uygulandıktan sonra ekrana yazdırılması ya da herhangi bir yazıcıdan çıktı alınması gibi işlemlerdir. Javada

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ı

Diziler. Dizi Tanımı Dizi Elemanlarına Değer Atama Diziler ve Göstergeler 2-Boyutlu Diziler

Diziler. Dizi Tanımı Dizi Elemanlarına Değer Atama Diziler ve Göstergeler 2-Boyutlu Diziler Diziler Dizi Tanımı Dizi Elemanlarına Değer Atama Diziler ve Göstergeler 2-Boyutlu Diziler Dizi Tanımı Değişkenler aynı anda tek bir değer tutabilen temel değişkenler ve birden fazla değer saklayabilen

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ı

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ı