TEMEL C PROGRAMLAMA DERSİ - 1 HAZIRLAYAN GÖKHAN YALINIZ HUNROBOTX2012
PROGRAMLAMA DİLLERİ Makine dili :Binary numaraların taban olarak kullanıdıgı program dilidir.(Örn;10011101 bir veriyi başka bir yere taşımak için kullanılır.) Assembly dili: Makine dili sayı odaklı olduğu için insanlar daha anlaşılır bir dile ihtiyac duymuştur.Binary numaralardan oluşan makine dilindeki kodlara yaptığı görevle bağlantılı olarak isim verilmiştir.(Örn;10011101’e karşılık olarak İngilizcedeki move kelimesine ithafen MOV terimi kullanılmıştır.) Yüksek seviye diller:İnsan diline bir adım daha yaklaşabilmek için matematiksel ve sembolik ifadeleri İngilizce anlamlarıyla harmanlandığı programlama dilidir. Yüksek seviye dillere örnek olarak Fortran , Cobol, C, Prolog, Pascal,J ava verilebilir. HUNROBOTX2012
NEDEN YÜKSEK SEVİYE DİLLER(C) Yazılışı ve anlaşılırlığı kolaydır. Kullanılan derleyici yazılan programı makine diline çevirir. Günümüzde birçok şirket programlama dili olarak yüksek seviye dilleri kullanır.Özellikle C dili temel olarak alınır. Program direk olarak yönetilebilir hale gelmez.Bunun için birkaç adım gerekir,bu da size yazdığınız programda hata bulurken kolaylık sağlar. Birçok bilgisayar tarafından derlenebilir. Mikroişlemcileri programlarken en çok kullanılan dil C dilidir. HUNROBOTX2012
SAYI SİSTEMLERİ 10luk (Decimal) taban :Günlük hayatta kullandığımız sayı tabanıdır.(0,1,2,3,4,5,6,7,8,9 ) (13245)10=1x10^4 + 3x10^3+2x10^2+4x10^1+5x10^0 2lik(Binary) taban:Bilgisayar sistemlerinde en çok kullanılan sayı tabanıdır.(0,1) (11011)2=1x2^4 + 1x2^3+0x2^2+1x2^1+1x2^0 HUNROBOTX2012
(132AB) ₁₆=1x16^4 + 3x16^3+2x16^2+10x16^1+11x16^0 8lik(Octal) taban:Bu sayı sistemi binary arasında kolay dönüşüm sağladığından tercih edilir.(0,1,2,3,4,5,6,7) (13245)₈=1x8^4 + 3x8^3+2x8^2+4x8^1+5x8^0 16lık(Hex) taban:Bu sayı sistemi binary arasında kolay dönüşüm sağladığından tercih edilir.Pic programlamada genelde hex sayı sistemi tercih edilir.0,1,2,3,4,5,6,7,8,9,A(10),B(11),C(12),D(13),E(14),F(5) (132AB) ₁₆=1x16^4 + 3x16^3+2x16^2+10x16^1+11x16^0 HUNROBOTX2012
87 / 2 = 43 (kalan 1) Sayının 0. biti 1 87 = 101 0111 Decimal Sayı Sisteminden Binary Sayı Sistemine Dönüşüm Octal Sayı Sisteminden Binary Sayi Sistemine Dönüsüm. (1 4 6)₈ 1 100 110 (1 100 110)₂ (2 C)₁₆ 0010 1100 ( 0010 1100 )₂ Hex Sayı Sisteminden Binary Sayı Sistemine Dönüşüm HUNROBOTX2012
Binary Sayı Sisteminden Decimal Sayı Sistemine Dönüşüm ( 1 0 1 0 1 0 1 )₂ 2^6 2^5 2^4 2^3 2^2 2^1 2^0 64 16 4 1 85 (85)10 Binary Sayı Sisteminden Decimal Sayı Sistemine Dönüşüm Binary Sayı Sisteminden Octal Sayi Sistemine Dönüsüm. (11 101 111 )₂ 3 5 7 ( 357)₈ E A (1110 1010)₂ Binary Sayı Sisteminden Hex Sayı Sistemine Dönüşüm (E A)₁₆ HUNROBOTX2012
BİNARYDE 4 İŞLEM 2 lik sistemde toplama 2 lik sistemde toplama (10110)2 + (01010)2 (100000)2 (10110)2 - (01010)2 (01100)2 2 lik sistemde çarpma 2 lik sistemde bölme (110011)2 / (11)2 = (?)2 (110101)2 * (111)2 = (?)2 (110101)2 x (101)2 (110101)2 (000000)2 + (110101)2 (100001001)2 110111 |11___ -11____|10010 011 - 11 001 HUNROBOTX2012
C Dilinde Program Yazarken İzlenen Adımlar Kod derleyiciye yazılır.(Source code) Derleyici yazımsal olarak hata olup olmadığına bakar(Compile) Program önceden yazılmış hazır kodlar ile yazılan kodları birleştirir.(Linker) Birleştirilen program kaydedilir(Loader) HUNROBOTX2012
Yazılım Geliştirme Metodu Verilen problem tam olarak anlaşılmalıdır.(Problem) Problem analiz edilir giriş çıkış ve ek bilgiler öğrenilir.(Analyse) Problemin algoritması oluşturulur.(Design) Yazılan program test edilir(Test) Yazılan program kaydedilir(Maintanance) HUNROBOTX2012
Basit Bir C Örneği //Kütüphaneler #include <stdio.h> //Bu kütüphane temelde printf-scanf // kullanımı için eklenir. //Standard Input Output #include <stdlib.h> //Bu kütüphanede temelde system statement'ını //kullanmak için eklenir. int main () { // Ana program:Her Programda kesinlikle //bir ana-main fonksiyon olmak zorundadır printf("C programlama\n"); //Algoritmik kodların C diline aktarıldığı kısım system("pause"); return(0); } HUNROBOTX2012
C Dili Elementleri Önişlemci komutları Yorum Ana fonksiyon Degişken tanımları ve veri tipleri Yönetilebilir komutlar Degişmez tanımları Tanımlayıcılar HUNROBOTX2012
Önişlemci Komutları Temel olarak #include ve #define olarak ikiye ayırabiliriz. #include Daha önceden yazılmış programları(kütüphane) eklemek için kullanılır. (Örn: #include <stdio.h>) #define Program tarafından sürekli kullanılan sabit sayı veya sayıların yerine programa anlaşılırlık katabilecek bir isim verilir. (Örn:#define PI 3.14 ) HUNROBOTX2012
Yorum Yazılan programın daha sonra tekrar kullanıldığında veya başka bir kişi tarafından incelendiğinde, daha kolay ve hızlı anlaşılması için kullanılır.Program hiçbir şekilde yorumları işlemeyecektir. // bu işaretten sonra tek bir satıra yorum yazılabilir. /* */ Bu işaretler arasına istenildigi kadar satıra yorum yazılabilir. HUNROBOTX2012
Ana Fonksiyon C de her programın bir ana fonksiyonu olmak zorundadır.Programın baslangıcı ve bitişi bu fonksiyon içinde olacaktır. int main(void) { } seklindedir. HUNROBOTX2012
Değişken Tanımları ve Veri Tipleri Değisken:Bilgisayarın hafızasında program için hücre ayırılan kısımdır. Değişken tanımlarken küçük harf kullanılır,sayı ile başlamaz,ve işaret olarak yalnızca altçizgi(_) kullanılır. Degişken tanımı “veri tipi degişken ismi” şeklinde yapılır. (Örn: double sayi;) Veri tipleri int : Veri tipi tamsayı olması halinde kullanılır. double:Veri tipi kesirli sayı olması halinde kullanılır. char:Veri tipi karakter olması halinde kullanılır. (Örn int numara; double sayi; char harf; ) HUNROBOTX2012
Yönetilebilir Komutlar Algoritma için kullanılan komutlardır.Temel olarak 3’e ayırılır. Giriş Çıkış fonksiyonları ve diğer Fonksiyonlar Giriş fonksiyonu(scanf);Dışardan alınacak veriler için kullanılır. scanf(“%d”,&numara); Çıkış fonksiyonu(printf);Dışarı ile iletişim saglamak bilgi vermek icin kullanılır. printf(“Girdiğiniz değer %d”,sayi); Diğer fonksiyonlar;Diger kütüphanelerde tanımlı veya özgün olarak yazılmış fonksiyonlardır. system(“cls”); Atama Komutları; Kullanılan değiskene veri tipine uygun olarak değer atanır int x=5; return komutu HUNROBOTX2012
Değişmezler C diline has anlamları olan kelimelerdir. Başka bir amaç için kullanlmaz. return if else while do int double …….. HUNROBOTX2012
Tanımlayıcılar Değişken ve fonksiyonlara verilen isimler olabilir. Standart tanımlayıcılar olabilir. Bu tanıtıcılar C kütüphanelerinde daha önceden belirlenmiştir.(printf,scanf….)Değiştirebilirsiniz fakat önerilmez. Örneğin printf yerine yaz isimini verebilirsiniz.Ancak sizin dışınızda birinin anlaması için güçlük çıkaracaktır. HUNROBOTX2012
Soru Vakti HUNROBOTX2012