C/C++ ile Programlamaya Giriş Yrd.Doç.Dr.Bülent Çobanoğlu
Algoritmadan Kodlamaya Geçiş Dr.Bülent Çobanoğlu, SAÜ, Programlama Ders Notu
C/C++ Program Yapısı C/C++ ve Java dilleri aynı gramer yapısını kullanır; Her komut satırı ; karakteri ile sonlandırılır. Büyük küçük harf ayrımına dikkat edilmelidir. (main deyimini Main şeklinde yazdığınızda program hata verir). Açıklama satırları için // ve /*..*/ joker karakterleri kullanılır. Eğer tek satırlık bir açıklama yapılacaksa // karakteri, Birden fazla satırlık açıklama yapılacaksa /*. */ karakterleri kullanılır. Her programın bir tane main isimli ana fonksiyonu (metodu) olmalıdır. C Dilinde yazılan bir programın dosya uzantısı.c C++ dilinde yazılan bir programın dosya uzantısı ise.cpp dir Her C programı aynı zamanda bir C++ programıdır ama tersi her zaman söz konusu değildir. Örnek bir C programının kalıbı Kütüphane dosyaları #include <stdio.h> #include <conio.h> Ana (main) fonksiyon { Başla { Tanımlamalar Program gövdesi int main() //Değişken(int a; gibi) tanımlamaları yapılır // printf("merhaba!"); (işlem ve hesaplamalar) // } Dur getche(); //Ekran görüntüsünü bir tuşa basıncaya kadar bekletir } Dr. Bülent ÇOBANOĞLU
PROGRAMLAMA TEMEL KAVRAMLARI Hangi programlama dilini kullanırsak kullanalım bazı temel kavramlar değişmez. Bunlar; 1. Komutlar 2. Değişkenler 3. Sabitler 4. Mesajlar 5. Operatörler Dr.Bülent Çobanoğlu, SAÜ-TEF, Programlama Ders Notu
Bilgisayarın o an ne yapacağını belirten emirlerdir. Komutlar kısaltılmış ya da tam İngilizce kelimelerden oluşur. Örneğin; Yaz SAU şeklindeki komut farklı dillerde; Basic/Visul Basic dilinde; Print SAU C/C++ dilinde; printf SAU ; Pascal dilinde; write SAU Java dilinde; System.out.println( SAU"); şeklinde ifade edilmektedir. KOMUTLAR Dr.Bülent Çobanoğlu, SAÜ-TEF, Programlama Ders Notu
Değişkenler Bilgileri saklamak üzere kullandığımız ismini ve tipini bizim belirlediğimiz bellek alanlarına verilen isimdir. Kısaca bellekte herhangi bir adresi gösteren sembolik bir addır. Kullandığımız programlama dili ne olursa olsun kendisine verdiğimiz değerleri belleğinde hangi ad ile saklayacağını biz söylüyoruz. Belleğinde nerede saklayacağını (adres bilgisini) ise bilgisayar kendisi belirler. Bilgilerin geçici olarak tutulduğu yere bellek denir. Değişkenlerde belleklerde tutulur. Değişkenleri genel olarak ikiye ayırırız; Sayısal tipteki değişkenler ki içerisinde sayıları sakladığımız değişkenlere sayısal veya nümerik değişken adını veriyoruz. int a; // şeklindeki tanımlamada a değişkeni sadece tamsayı alabilir. Alfa sayısal (Sözel) tipteki değişkenler ki içerisinde sayı haricindeki bilgileri (isim, soy isim, adres, vb.) sakladığımız değişkenlere de alfa sayısal, alfa nümerik, sözel, metinsel veya string değişken adını veriyoruz. char a; // a değişkeni sadece alfa sayısal (karakter) türünde veri alabilir. Dr.Bülent Çobanoğlu, SAÜ-TEF, Programlama Ders Notu
Değişkenlere İsim Verme Kuralları Dr.Bülent Çobanoğlu, SAÜ-TEF, Programlama Ders Notu Değişkenlerin isim ve tiplerinin programcı tarafından belirlendiğini söylemiştik. İşte değişkenleri tanımlarken dikkat edeceğimiz hususlar; 1. Bir değişkenin ilk karakteri mutlaka harf olmalıdır. 2. Değişken isimlerinin içerisinde _ karakteri hariç, boşluk veya özel karakterler bulunmamalıdır. [.,@? * : ;!, ( / - + = % & $ # Karakterleri gibi] 3. Değişken isimlerinde Türkçe karakter kullanmamaya özen gösterilmelidir. 4. Değişken isimleri kullanılan programlama diline ait komutları içeremez. O programlama diline ait komutlara ayrılmış sözcükler (reserved words) veya anahtar sözcükler (keywords) de denilmektedir. 5. Değişken isimleri, anlamlı ifadelerden oluşmalıdır. 6. C ve Java dilleri büyük-küçük harf ayrımı yapan (case sensitive) bir dildir. ( Yani Ad değişkeni ile ad değişkeni farklı değişkenler olarak kabul edilir). NOT: Değişkenlere ( aynı zamanda nesne ve sınıf isimleri gibi diğer tanımlayıcılara da) isim verirken, genellikle değişken ve içindeki her anlamlı sözcük büyük harfle başlamalıdır (Örneğin; AdSoyad, EnKucukSayi gibi)
Dr.Bülent Çobanoğlu, SAÜ-TEF, Programlama Ders Notu C/C++ diline ait komutlar ve ayrılmış kelimeler C/C++ için örnek Değişken Tanımlamaları Ali7 Geçerli Bir değişkenin ilk karakteri mutlaka harf olmalıdır. 7Ali Geçersiz Ali_Veli Geçerli Değişken isminde _ alt tire özel karakteri kullanılabilir. Ali Veli Geçersiz Değişken isminde boşluk karakteri kullanılmaz. Çömlek Geçersiz Java dilinde değişken tanımlamalarında Türkçe karakter kullanılabilirken C dilinde kullanılmaz. do Geçersiz Değişken isimleri kullanılan programlama diline ait komutları içeremez.
Değişkenlere Değer Aktarma( = ) Bir aritmetik ya da string ifadeyi değişkene aktarmak için = parametresi kullanılır. { a = 5, b = A gibi } NOT: = parametresi ile eşitliğin sağ tarafındaki ifadenin sonucu sol taraftaki değişkene aktarılırken = = parametresi ile eşit mi sorgusu yapılır. { Örneğin, A sayısı 5 e eşit mi? Sorgusu A= =5 işlemi ile sağlanır}. Dr.Bülent Çobanoğlu, SAÜ-TEF, Programlama Ders Notu
Değişkenlerin Tanımlanması Bir değişken kullanılmadan önce tanımlanır. Her değişken belirli bir veri tipine/türüne sahip olmalıdır (int, long, char gibi). Bu veri tipi, değişkenin bellekte kaplayacağı alanı ve sakladığı bilginin büyüklüğünü belirtir. Veritipi degisken_adi [= başlangıç değeri]; Burada değişkenlere tanımlama aşamasında başlangıç değeri atanması isteğe bağlı bir durumdur, zorunlu değildir. Örnek değişken tanımlamaları; int x,y ; char a; int toplam=0; // Tamsayı türünde x ve y isimli iki değişken tanımlandı. // Karakter(metin) türünde a isimli bir değişken tanımlandı. /* Tamsayı türünde toplam isimli değişkene başlangıç değeri olarak 0 atandı. */ Dr.Bülent Çobanoğlu, SAÜ-TEF, Programlama Ders Notu
C/C++ Dilinde Kullanılan Temel Veri Tipleri Not-1: unsigned ibaresi ile veri tipi değer aralığı 0 dan başlatılırken, short ifadesi ile veri tipinin değer aralığı daraltılmış olur. Not-2: C++ dili için geçerli olan bool veri tipi C dilinde geçersizdir. C dilinde bool veri tipini kullanmak için #include <stdbool.h> kütüphanesini program başına eklemek gereklidir. Not-3: void Veri Türü: Fonksiyonlarda fonksiyon geriye değer döndürmeyecekse veya kullanılacak bir değişken veri türüne sahip olmayacak ise veri türü olarak void belirlenmelidir. Dr.Bülent Çobanoğlu, SAÜ-TEF, Programlama Ders Notu
SABİTLER Program içerisinde değeri değişmeyen ifadelere sabit denir.( sayısı, 2.5, gibi). Sabit değerler sayısal ve string olmak üzere ikiye ayrılırlar. İki tırnak ( ) işareti arasında yazılan her türlü bilgi string sabittir. Sabitler özellikle bilinen değerlerin kullanımını sağlar. Kodlamayı ve kodun okunabilirliğini kolaylaştırırlar. Java dilinde değişkenleri sabit olarak tanımlamak için değişken tanımının önüne final sözcüğü getirilirken C dilinde #define komutu veya const komutu kullanılır. { const float pi=3.14; gibi} Dr.Bülent Çobanoğlu, SAÜ-TEF, Programlama Ders Notu
Mesajlar Kullanıcı ile iletişim kurmak için kullanılır. Mesajlar kullanıcıyı yönlendirmek amacıyla kullanılırlar. ( Bir sayı giriniz ) gibi kullanıcıyı program çalışırken yönlendiren ifadelere mesajlar denir. C/C++ dilinde printf() fonksiyonu mesajların ve program sonuçlarının ekranda gösterilmesini sağlayan bir komuttur. printf( format dizgisi,çıktı listesi); Dr.Bülent Çobanoğlu, SAÜ-TEF, Programlama Ders Notu
Veri çıkışı (Mesaj basma) komutu -printf Dr.Bülent Çobanoğlu, SAÜ-TEF, Programlama Ders Notu
Çıkış Karakterleri (Escape Characters) Dr.Bülent Çobanoğlu, SAÜ-TEF, Programlama Ders Notu Mesajların ekranda gösteriminde printf komutu ile birlikte bazı çıkış karakterleri kullanılır. Bunlar; Basılacak Karakter Çıkış Karakteri Örnek kod Ekran Çıktısı ' (Tek Tırnak) \' "Bade\'nin Evi" Bade nin Evi " (Çift Tırnak) \" "Bade dedi \"Selam\" " Bade dedi "Selam" \ (Backslash) \\ "C:\\" C:\ Bir alt satıra geç \n printf ("a\nb"); a b Bir tab boşluk \t "1\t2" 1 Ø 2 Backspace tuşu \b "12\b3" 13 Enter tuşuna basıldı (Satır başı) \r "Bade\rZehra" Bade Zehra Bip sesi \a PC içerisindeki hoparlorden bip (alert)sesi gelir Örnek;
printf format dizgisi Basılacak Karakter Çıkış Karakteri Açıklama Tamsayı (işaretli) %d char veya int türlerini onlu tamsayı formatında gösterir. Tamsayı (işaretsiz) %u unsigned int türünü işaretsiz onlu tamsayı formatında gösterir. Ondalıklı sayı %f float ve double türlerini onlu sistemde ondalıklı olarak gösterir. Ondalıklı sayı %g İşaretli veya üstel formatta ondalıklı sayı olarak gösterir. Ondalıklı sayı %e float ve double türlerini üstel biçimde gösterir. Karakter (Tek) %c Tek bir karakteri ekrana basar String (Karakter dizisi) %s Stringleri karakter dizisi şeklinde ekranda gösterir. Hexadecimal (Onaltılı) %x Octal ( Sekizli) %O int türünü hexadecimal- Onaltılık tamsayı (0,1,2, A,B,..F) formatında gösterir int türünün Octal-Sekizlik tamsayı (0,1,2,3,4,5,6,7) formatında gösterir. int x = 13; printf( %d, x); Çıktı: 13 Dr.Bülent Çobanoğlu, SAÜ-TEF, Programlama Ders Notu
printf komutunun kullanım örnekleri Komut Satırı printf("%s\b%s ","sau","tf?"); Ekran Çıktısı printf("%s\'\t%s ","sau","tf"); int a=9, b=12; printf("%d\t%x",a,b); float a=9; int b=12; printf("%.2f\\%o",a,b); printf ("\"Bade\"\nGeldi." ); Dr.Bülent Çobanoğlu, SAÜ-TEF, Programlama Ders Notu
Çıkış Karakterleri (Escape Characters) Mesajların ekranda gösteriminde printf komutu ile birlikte bazı çıkış karakterleri kullanılır. Bunlar; Basılacak Karakter Çıkış Karakteri Örnek kod Ekran Çıktısı ' (Tek Tırnak) \' "Bade\'nin Evi" Bade nin Evi " (Çift Tırnak) \" "Bade dedi \"Selam\" " Bade dedi "Selam" \ (Backslash) \\ "C:\\" C:\ Bir alt satıra geç \n printf ("a\nb"); Bir tab boşluk \t "1\t2" 1 Ø 2 Backspace tuşu \b "12\b3" 13 Enter tuşuna basıldı (Satır başı) \r Örnek; "Bade\rZehra" b Bade Zehra a Dr.Bülent Çobanoğlu, SAÜ, Programlama Ders Notu
printf format dizgisi Basılacak Karakter Çıkış Karakteri Açıklama Tamsayı (işaretli) %d char veya int türlerini onlu tamsayı formatında gösterir. Tamsayı (işaretsiz) %u unsigned int türünü işaretsiz onlu tamsayı formatında gösterir. Ondalıklı sayı %f float ve double türlerini onlu sistemde ondalıklı olarak gösterir. Ondalıklı sayı %g İşaretli veya üstel formatta ondalıklı sayı olarak gösterir. Ondalıklı sayı %e float ve double türlerini üstel biçimde gösterir. Karakter (Tek) %c Tek bir karakteri ekrana basar String (Karakter dizisi) %s Stringleri karakter dizisi şeklinde ekranda gösterir. Hexadecimal (Onaltılı) %x veya %X Octal ( Sekizli) %O int türünü hexadecimal- Onaltılık tamsayı (0,1,2, A,B,..F) formatında gösterir. int türünün Octal-Sekizlik tamsayı (0,1,2,3,4,5,6,7) formatında gösterir. Komut Satırı int a= 13; printf("%f", (float)a); printf("a=%d",a); printf("a=%x",a); printf( "%c",'a' ); printf("%s","bade"); Ekran Çıktısı 13.0000 a=13 a=d Dr.Bülent A Çobanoğlu, SAÜ, Programlama bade Ders Notu
Veri girişi komutları Klavyeden yâda dışardan veri girişini algoritmadaki Gir emir kipi ile ifade ettik. Aşağıdaki tablodan da görüleceği üzere klavyeden veri girişi için C dilinde scanf komutu, Java dilinde Scanner sınıfının metotları, C++ dilinde ise scanf ve cin>> komutları kullanılmaktadır. C dili int a; scanf ("%d", &a); C++ Dili int a; scanf (" %d", &a); int a; std::cin>>a; Dr.Bülent Çobanoğlu, SAÜ, Programlama Ders Notu
scanf deyimi Dışardan veri girişi için kullanılan bir C\C++ komutudur. scanf komutunun ilk parametresi (çıkış formatı) printf ile aynıdır. İkinci parametresi ise tanımlanan bir değişken ismidir ve önüne & operatörü gelmelidir. Kullanım şekli; scanf ( çıkış formatı, °isken); çıkış formatı kısmına sadece printf format dizgisi tablosundaki format karakterleri (%d, %f, %s, gibi) yazılabilir. scanf ( "%d,%d,%c", &a, &b, &c); scanf ( "%c %c %f", &c1, &c2, &sayi); scanf ( "%d-%c- %f", &s1, &c1, &s2); //Klavyeden veri girişi yaparken 3, 4, a aralarında virgül kullan //Klavyeden veri girişi yaparken a h 5.4 aralarında boşluk kullan //Klavyeden veri girişi yaparken 4-q-5.4 aralarında boşluk kullan Dr.Bülent Çobanoğlu, SAÜ, Programlama Ders Notu
C++ dilinde printf - scanf komut eşdeğerleri int r, alan; cout << "Gir Yari çapı: "; //printf yerine kullanılabilir cin >> r; //scanf yerine kullanılabilir cout << "Alanı: " << alan << endl; Not1: cout komutu iostream başlık dosyasında bulunduğundan örnek programın başında #include <iostream> komutu kullanılır. Not2: Program başında using namespace std; deyimi kullanılmalıdır. Bu bildirim cin, cout ve endl degerlerine kolay erişimi sağlar. Aksi takdirde std::cin >> r; şeklinde yazmamız gerekirdi. C standardında başlık dosyalarına.h uzantsı verilir. C++ standardında ise bazı başlık dosyalarının uzantısı bulunmayabilir. Örnekteki iostream başlık dosyası C++ ile tanımlanmış yeni baslık dosyalarına bir örnektir. Dr.Bülent Çobanoğlu, SAÜ-TEF, Programlama Ders Notu
Bir karenin alanını hesaplayan programın C ve C++ dillerine (printfcint, scanf-cout) göre kodlanması: C Dili ile yazıldım C++ Dili ile yazıldım Dr.Bülent Çobanoğlu, SAÜ-TEF, Programlama Ders Notu
OPERATÖRLER İşlem yapmamızı sağlayan işaretlere operatör (işleç) adı verilir. Genellikle; Aritmetiksel { +, -, *, /, gibi }, Mantıksal { ve, veya, değil, gibi} Karşılaştırma { <, >, =, gibi } Artırma ve azaltma { ++, --, gibi} Aritmetiksel atama { +=, *=, -=, gibi} Bitsel { <<, >>, ^, gibi} operatörleri isimleri altında sınıflandırılırlar ve her programlama dilinde farklı şekillerde gösterilebilirler. Dr. Bülent ÇOBANOĞLU
OPERATÖRLER Operatör Tipi Sembolik Gösterimi Aritmetiksel operatörler +, -, *, / ve % Artırma ve azaltma operatörleri ++ ve -- Aritmetiksel atama operatörleri =, +=, -=, *=, /=, %=, >>=, <=, >>>=, &=, ^= ve = Mantıksal operatörler &&,,! ve ^ Karşılaştırma operatörleri >, <, = =, >=, <= ve!= Bit işlem operatörleri &,, ^, >>, <<, >>> ve ~ İkili karşılaştırma operatörü?: Ayırma operatörü, (Virgül) Dr. Bülent ÇOBANOĞLU
Aritmetiksel Operatörler İŞLEMLER Aritmetik Operatör Matematiksel gösterimi JAVA dili gösterimi C/C++ dili gösterimi Toplama + X+Y X + Y X + Y Çıkartma - X-Y X Y X Y Çarpma * (XY),(X.Y), (X*Y) X * Y X * Y Bölme / X/Y ve X / Y X / Y Üs alma Yoktur 3 2 3*3 3*3 Math.pow(3,2); pow(3,2); Karekök alma Yoktur 3 Math.sqrt(3); sqrt(3); Mod Alma (Kalanı Alma) % X Mod Y X % Y X % Y String Birleştirme + BadeSare Bade + Sare Bade + Sare Eksi (Negatif) - Y Y Y X Y Dr. Bülent ÇOBANOĞLU
2 3 1 Aritmetiksel Operatörler Matematiksel ifade Java dili kodlaması C/C++ dili kodlaması ( a*a +b*c ) / ( 2*a*b) ( a*a +b*c ) / ( 2*a*b) Matematiksel ifade Java dili kodlaması C/C++ dili kodlaması y=pr q +w/x-z y = p * Math.pow(r, q) + w /x-z; y = p * pow(r, q) + w /x-z; Matematiksel ifade Java dili kodlaması C/C++ dili kodlaması c=math.sqrt(a)+b*b; c= sqrt(a) + b*b; İşlem önceliği Matematiksel ifade Java dili kodlaması C/C++ dili kodlaması z= - (5*Math.pow(a,(2/3)) / (Math.sqrt(x*x-y*y))); z= - (5* pow(a,(2/3)) / (sqrt(x*x-y*y))); Dr. Bülent ÇOBANOĞLU
SoruA: matematiksel işlemini C dilinde kodlayınız. {z= - (5*pow(a,(3/2)) / 4); } SoruB: 9 için C Dilinde kodlayınız; #include <stdio.h> //printf için lazım #include <conio.h> //getche() için lazım #include <math.h> //pow için lazım int main () { double z; int a = 9; float b= (float) 3/2; z = -(5 * pow(a, b) / 4); printf("z = %g", z); getche(); } //return 0 da kullanılabilir Dr. Bülent ÇOBANOĞLU
Artırma ve Azaltma Operatörleri İşlem Operatör Kullanılışı (Örnek) Açıklama Ön Artırma ++ ++Degisken (A=++B) Önce değişken değerini 1 artır, sonra kullan. (B=B+1; A=B ;) Önce değişken değerini al, Son Artırma ++ Degisken++ (A=B++) Ön Çıkarma -- --Degisken (A=--B) Son Çıkarma -- Degisken-- (A=B--) kullan sonra 1 artır. (A=B;B=B+1) Önce değişken değerini 1 azalt, sonra kullan. (B=B-1;A=B;) Önce değişken değerini al, kullan sonra 1 azalt. (A=B; B=B-1) x=30; y=10; z=x*y++; Burada çarpma işleminden sonra y değeri artırılmış dolayısı ile z=300 değerini alır. x=30; y=10; z=x*++y; Burada ise önce y değeri artırılmış sonra ise çarpma işlemi gerçekleşmiştir. Dolayısı ile z=330 değerini alır. Dr. Bülent ÇOBANOĞLU
Karşılaştırma Operatörleri Verilerin birbiriyle karşılaştırılmasında kullanılır. Sonuç doğru ise 1 ya da true, yanlış ise 0 ya da false değerini üretir İşlem Operatör C/C++/Java Eşdeğeri Örnek gösterim Büyük > > A < B Küçük < < A > B Büyük Eşit >= A <= B Küçük Eşit <= A >= B Eşit mi? = == A == B Eşit değil!= A!= B (Koşul)? (işlem1) : (işlem2) İkili karşılaştırma?: {Koşul doğru ise <işlem1> değilse <işlem2> gerçekleşir.} Dr. Bülent ÇOBANOĞLU
Aşağıda verilen F fonksiyonunu hesaplayan matematiksel ifadenin algoritmasını oluşturup, akış şemasını çiziniz ve bilgisayar ortamında kodlamasını yapınız. F= x 0, x 2 +1 x 1, x 0<x<1, x Algoritması Akış şeması C/C++ Dili Kodlaması Java Dili Kodlaması 1.Başla 2. Gir X değerini; 3. Eğer X 0 ise F=X 2 +1; 4. Eğer X 1 ise F=X; 5. Eğer 0<X<1 ise F= X; 6. Yaz X değerini 7. Dur #include <stdio.h> #include <conio.h> #include <math.h> int main() { float X,f; printf("gir bir sayı :"); scanf("%g", &X); } if (X<=0) {f=pow(x,2)+1;} if (X>=1) {f=x;} if (X>0 && X<1) {f=sqrt(x);} printf ("f= %g", f); getche(); public static void main(string[] args) { System.out.println("Bir sayı giriniz"); Scanner gir = new Scanner (System.in); int X=gir.nextInt(); double f = 0; if (X<=0) {f=math.pow(x,2)+1;} if (X>=1) {f=x;} if (X>0 && X<1){f=Math.sqrt(X);} System.out.printf ("f= %g", f); } Dr. Bülent ÇOBANOĞLU
Bir sayının negatif mi pozitif mi olduğunu bulan programın akış şemasını çiziniz ve bilgisayar ortamında kodlamasını yapınız. Akış Şeması C/C++ Dilinde Kodlaması #include <stdio.h> #include <conio.h> int main() { int A; printf("gir bir sayı :"); scanf("%d", &A); printf((a>=0)? "poz." : "neg."); getche(); } Dr. Bülent ÇOBANOĞLU
Mantıksal Operatörler İŞLEM OPERATÖR KARŞILAŞTIRMA C/C++/JAVA NOTASYONU NOTASYONU Mantıksal VE (AND) && A VE B A && B Mantıksal VEYA (OR) A VEYA B A B Değil (NOT)! A DEĞĠL B A! B Özel VEYA (XOR) ^ A ÖZELVEYA B A ^ B X Y! X! Y X && Y X Y X ^ Y (Değil X) (Değil Y) (X VE Y) (X VEYA Y) (X ÖZELVEYA Y) true true 0 0 1 1 0 true false 0 1 0 1 1 false true 1 0 0 1 1 false false 1 1 0 0 0 Dr. Bülent ÇOBANOĞLU
BİT İŞLEM OPERATÖRLERİ İşlem Operatör Karşılaştırma C/C++/Java Notasyonu Notasyonu Örnek Sonuç Bit düzeyinde VE & A VE B A & B 3 & 5; 1 Bit düzeyinde VEYA A VEYA B A B 3 5 7 Bit düzeyinde Özel VEYA ^ A Özel VEYA B A ^ B 3 ^ 5 6 Değil veya 1 e tümleyen ~ Değil A ~ A ~3-4 Sola kaydır << A << basamak A << değer 3 << 2 12 Sağa kaydır >> A >> basamak A >> değer 9 >> 2 2 A B A B A&B A^B ~A 0 0 0 0 0 1 1 0 1 0 1 0 0 1 1 0 1 1 1 1 1 1 0 0 Dr. Bülent ÇOBANOĞLU
Aritmetiksel Atama Operatörleri Toplam +=5; Toplam=Toplam + 5; Toplam += i++; Toplam=Toplam + i; i=i+1; İşlem Operatör C/C++/Java Gösterimi Eşdeğeri /Açılımı Aktar = A = B A = B Topla ve aktar += A += B A = A + B Çıkar ve aktar -= A -= B A = A - B Çarp ve aktar *= A *= B A = A * B Böl ve aktar /= A /= B A = A / B Kalanı al ve aktar %= A %= B A = A % B Sola kaydır ve aktar* <<= A<<=B A=A<<B Sağa kaydır ve aktar* >>= A>>=B A=A>>B VE le ve aktar* &= A&=B A=A&B VEYA la ve aktar* = A =B A=A B Özel VEYA la ve aktar* ^= A^=B A=A^B Değilini Al ve aktar* ~= A~=B A=A~B * Bu konutlar bit düzeyinde (sayının ikili/binary karşılığını alarak) işlem yapar Dr. Bülent ÇOBANOĞLU
Operatörlerin Öncelik Sıraları Öncelik İşlem önceliği İşlemler İşlem Simgesi Sırası Parantez içi ( ) Soldan sağa 1 Son artırma/azaltma < > ++, < > -- Matematiksel fonksiyonlar pow,sqrt,sin, Dizi işlemleri [ ] 2 Ön Artırma/Azaltma ++< >, --< > Sağdan sola Pozitif, negatif yapma + - Değil (NOT) ~< >,!< > 3 Çarpma, Bölme veya Kalan *, /, % Soldan sağa 4 Toplama veya Çıkarma + veya - 5 Kaydırma << veya >>, >>> 6 Karşılaştırma <,<=,>,>= 7 Karşılaştırma = =,!= 8 Bit düzeyinde VE (AND) & 9 Bit düzeyinde Özel VEYA (XOR) ^ 10 Bit düzeyinde VEYA (OR) &, ^, 11 Mantıksal VE (AND) && 12 Mantıksal VEYA (OR) 13 İkili koşullu karşılaştırma?: Sağdan sola 14 Atama =,+=,-=,*=,/=, %= 15 Bitsel Atama >>=, <<=, &=, ^=, = Dr. Bülent ÇOBANOĞLU
Aşağıdaki program parçasının çalışmasından sonra k değeri ne olur? int a=3,m=10,k; k=!( (a<5)!= (m>3) ); k=!( (a<5)!= (m>3) ); k=!( true!= true) k=! false k=true Not: Sonuç değeri k değişkeninde Java dilinde true olarak saklanırken C/C++ dilinde 1 olarak saklanır. Dr. Bülent ÇOBANOĞLU
Aşağıdaki örnek programın çalıştırılmasından sonra d,e,f,g ve h değişkenlerinin değeri ne olur? int b=1, c=2; int d=b & c; int e=b c; int f=b ^ c; int g=c >>1; int h=c <<2; // C Programı #include <stdio.h> #include <conio.h> #include <math.h> int main() { int b=1,c=2; printf ("d= %d\n", b&c); printf ("e= %d\n", b c); printf ("f= %d\n", b^c); printf ("g= %d\n", c>>1); printf ("h= %d\n", c<<2); } getche(); Dr. Bülent ÇOBANOĞLU
Sayı Sistemleri Dönüşümü On lu sayıların İkili sayılara dönüştürülmesi { sayi 10 =k n k n-1 k n-2. k 0 } Sayı Bölüm Kalan Sonuç (3):2 1 =k 1 1=k 0 11 (6):2 3:2 (9):2 4:2 2:2 3 1 =k 2 4 2 1 =k 3 0 =k 0 1 =k 1 1 =k 0 0 =k 1 0 =k 2 İkili sayıların Onlu sayılara dönüştürülmesi { İkiliSayı*2 BasamakDeğeri + } (1101) 2 = 1*2 0 +0*2 1 +1*2 2 +1*2 3 =1+0+4+8=13 (0011) 2 =1*2 0 +1*2 1 +0*2 2 +0*2 3 = 1+2+0+0=3 110 1001 Ödev. Verilen 10 tabanındaki herhangi bir sayıyı ikilik tabana (ikilik sayı sistemine) çeviren programın algoritmasını (akış şemasını) oluşturup, programlama dilleri ile kodlamasını yazınız. Dr. Bülent ÇOBANOĞLU
Basit Giriş-Çıkış İşlem Örnekleri Örnek. Klavyeden girilen iki sayının farkını alan programı yazınız. Algoritması Akış şeması C/C++ dili kodlaması 1.Başla 2.Gir iki sayı (A,B); 3.Hesapla Farkını (Fark=A-B); 4.Göster Farkı (Fark); 5.Dur #include <stdio.h> #include <conio.h> int main() { int A, B, Fark; printf ("Gir, İki Sayi\n"); scanf("%d" "%d",&a, &B); Fark=A-B; printf("fark..:%d", Fark); getche(); } Dr. Bülent ÇOBANOĞLU
Basit Giriş-Çıkış İşlem Örnekleri Örnek. Klavyeden girilen A ve B gibi iki sayının ortalamasını alan programı kodlayınız. Algoritması Akış Şeması C/C++ dili kodlaması 1.Başla 2.Gir iki sayı (A,B); 3.Hesapla Ortalamayı (ortalama=(a+b)/2); 4.Yaz ortalamayı (ortalama); 5.Dur #include <stdio.h> #include <conio.h> int main() { int A, B; float ortalama; printf ("Gir İki Sayi..:\n"); scanf("%d" "%d",&a, &B); ortalama=(float)(a+b)/2; printf("ortalama..:%f", ortalama); getche(); } Dr. Bülent ÇOBANOĞLU
Basit Giriş-Çıkış İşlem Örnekleri Örnek. Klavyeden girilen quiz1, quiz2, odev, vize ve final notlarına göre bir derse ait başarı notunuzu hesaplayan programı kodlayınız. Kriter: Yilici=quiz1%10+quiz2%10+odev%10+vize%70 Başarı Notu: Yilici%50+Final%50 Algoritması Akış Şeması C/C++ dili kodlaması 1.Başla 2.Gir notları (q1,q2,od,v,f); 3.Hesapla Başarı Notunu ( Yilici=q1*0.1+q2*0.1+od*0.1+v*0.7; No=Yilici*0.5+f*0.5 ; ) 4. Eğer (Not>50) ise Yaz "gectiniz"; else Yaz "kaldınız"; Başla q1,q2,od,v,f Yilici=q1*0.1+q2*0.1+od*0.1+v*0.7; Not=Yilici*0.5+f*0.5; "kaldınız" Not >50 "gectiniz" #include<stdio.h> #include<conio.h> #include<math.h> int main() { unsigned int q1,q2,odev,vize,fin; float yilici, sonuc; printf ("Gir, q1-q2-odev-vize-final notlarını\n"); scanf("%d %d %d %d %d", &q1,&q2,&odev,&vize,&fin); yilici=q1*0.1+q2*0.1+odev*0.1+vize*0.7; sonuc= (float) yilici*0.5+fin*0.5; printf("basari Notunuz..:%g\n", round(sonuc)); printf ( (sonuc>=50)? "gectiniz": "kaldiniz"); getche(); } 5.Dur Dur Dr. Bülent ÇOBANOĞLU