OPERATÖRLER. Bir işleme yol açan, işlem sonucunda belirli bir değer üretilmesini sağlayan atomlara operatör denir.

Benzer belgeler
B tekrarlama kontrol komutları 7. do-while döngüsü 8. while döngüsü 9. for döngüsü

scanf () Fonksiyonu Klavyeden veri okumak için kullanılır. Yapı olarak printf () fonksiyonu aynıdır. Kullanım biçimi:

scanf () Fonksiyonu Klavyeden veri okumak için kullanılır. Yapı olarak printf () fonksiyonu aynıdır. Kullanım biçimi:

Döngü ve Koşul Deyimleri

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

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

PROGRAMLAMAYA GİRİŞ DERS 2

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

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

3/7/2011. ENF-102 Jeoloji 1. Tekrar -- Değişken Tanımlamaları (Definition) ve Veri Türleri (Data Type) Veri Tanımları ve Mantıksal Đşlemler

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

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

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

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

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

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

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

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

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

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

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

8. İŞARETCİLER (POINTERS)

C++ Operatörler (Operators)

Programlama Dilleri 3

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

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

Sınav tarihi : Süre : 60 dak. c) En başta #include<stdio.h> yazılmamıştır. c) zt d) Pi e) X0

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

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-2 Değişken Kavramı ve Temel Operatörler

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

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

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 2

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

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

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

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

BİLİNİRLİK ALANI ve ÖMÜR, KONTROL DEYİMLERİ

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

C PROGRAMLAMA D İ L İ

Java da İşleçler, Ders #3 (4 Kasım 2009)

BİL1001 Bilgisayar Bilimlerine Giriş 1

Genel Programlama II

Nesne Yönelimli Programlama

C PROGRAMLAMA D İ L İ

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

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

Java da Program Denetimi ve Operatörler

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

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

Program Akış Kontrol Yapıları

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

Programlama Dilleri 1. Ders 4: Diziler

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

NESNEYE YÖNELİK PROGRAMLAMA C++ a Giriş

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

C Programlama Dilininin Basit Yapıları

Pointers (İşaretçiler)

İŞLEVLER ve İŞLEÇLER. İstanbul Üniversitesi Elektrik Elektronik Mühendisliği. Kaynak: C ve Sistem Programcıları Derneği Kurs notu

Bil Hafta Çalışma Soruları (Yanıtlar)

IF / ELSE IF / ELSE. Bu deyimler, koşullu işlem yapan deyimlerdir ve daima if deyimi ile başlar, else if veya else ile devam eder.

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

C PROGRAMLAMA D İ L İ

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

işlemler bittikten sonra dosyaların kapatılması uygun olacaktır. Bunun için, fclose(fin);

Fonksiyonlar (Altprogram)

BĠLGĠSAYAR PROGRAMLAMA II C++ Programlamaya GiriĢ Published by Juan Soulié

Bilgisayar Teknolojileri Bölümü Bilgisayar Programcılığı Programı. Öğr. Gör. Cansu AYVAZ GÜVEN

KARAR YAPILARI. Acaba hangi yöne gitmeliyim? Oturduğun yerden kalkıp, kapıya varana kadar kaç kez karar verdiniz biliyor musunuz?

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

Pointer Kavramı. Veri Yapıları

C PROGRAMLAMA D İ L İ

Deney 7: Fonksiyon Tanımlama ve Parametre Aktarım Yöntemleri

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

Programlama Dilleri Laboratuvarı

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

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

Programlama Dilleri 1. Ders 5: Göstericiler

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

8- PROGRAM YAPISAL KOMUTLARI ve. M.ilkucar MAKU MYO 1

1 PROGRAMLAMAYA GİRİŞ

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

C NASIL BİR DİL?.. PROGRAMIN ÇALIŞMASI

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

Göstericiler (Pointers)

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

BÖLÜM 11: YAPISAL VERİ TİPLERİ

ALGORİTMA VE PROGRAMLAMA I

HSancak Nesne Tabanlı Programlama I Ders Notları

BÖLÜM 2 C PROGRAMLAMADA AKIŞ KONTROLÜ. GOTO: C programında programın herhangi bir yerinden bir yerine şartsız olarak atlanmasını sağlayan komuttur.

4.Hafta BİL Soruların Çözümleri

mikroc Dili ile Mikrodenetleyici Programlama Ders Notları

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

Adım Adım C-II. Eksik kalmış konular

YZM 2105 Nesneye Yönelik Programlama

Görsel Programlama DERS 03. Görsel Programlama - Ders03/ 1

Önişlemci Komutları, switch ve goto deyimleri

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

int printf (const char *format [, argument,...]);

Dr. Fatih AY Tel: fatihay@fatihay.net

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

Transkript:

OPERATÖRLER Bir işleme yol açan, işlem sonucunda belirli bir değer üretilmesini sağlayan atomlara operatör denir.

OPERATÖRLERİN SINIFLANDIRILMASI 1-İşlevlerine göre a. Aritmetik operatörler(+,*,/...) b. İlişkisel operatörler(<,>,<=,...) c.mantıksal operatörler(and,or,not,xor,..) d. Bit operaörleri(belli bir sayının kaçıncı bitinin kaç olduğu hakkında bilgi verir) e. Gösterici operatörleri f. Özel amaçlı operatörler 2-Operand sayılarına göre a. İki operand alanlar (binary) b. tek operand alanlar (unary) c. Üç opernd alanlar (ternary) 3-Operatörün konumuna göre yapılan sınıflandırma a. Ara ek operatörler (infix) b. Ön ek operatörle (prefix) c. Son ek operatörleri (postfix) C'nin bütün iki operand alan operatörleri infix'tir. Bir operatörün teknik olarak tanımlanması için bütün bu gruplardaki yerinin belirtilmesi gerekir. Örneğin 4 binary infix aritmetik operatördür.

ARİTMETİK OPEARATÖRLER % OPEARÖRÜ +, -, *, / binary, infix Binary infix bir operatördür. Bölüm işlemindeki kalanı hesaplar. ++ VE -- OPERATÖRLERİ ++ arttırma -- eksiltme operatörüdür. İkisi de unary operatörlerdir. Postfix ve prefix olarak kullanılabilir. Postfix ve prefiz kullanımda fark vardır. ++a => a = a + 1; Bu operatörler başka hiçbir operatör olmadan tek başlarına kullanılmışsa aralarında fark olmaz.

a) İkili Operatörler + Toplama operatörü - Fark operatörü * Çarpma operatörü / Bölme operatörü -- Bir azaltma ++ Bir arttırma % Mod operatörü: bölme sonucundan kalanı verir. (k=(20%6)=2 olur)

örnek #include<stdio.h> #include<conio.h> void main() { int x,y,z; x=14;y=3; z=x+y;printf("toplama=%d\n",z); z=x-y;printf("çıkarma=%d\n",z); z=x/y;printf("bölme=%d\n",z); z=x*y;printf("çarpma=%d\n",z); z=x%y;printf("mod=%d",z); getche();

SORU : En fazla dört basamak olabilen sayının basamak değerlerini yazdır. % ve / işlemlerinin kullanımı.

ÇÖZÜM #include <stdio.h> main() { int i,y; y=1985; i= y / 1000; printf("%d",i); y= y-i*1000; i= y / 100; printf(" %d",i); y = y-i*100; i= y / 10; printf(" %d",i); y = y-i*10; printf(" %d\n",y); i = 1928; // Yöntem 2 printf("%d ",i / 1000); printf("%d ",(i / 100) % 10); printf("%d ",(i / 10) % 10); printf("%d\n",i % 10);

C++ da özel kullanımlar. x+=5; x=x+5; x*=5; x=x*5; x-=y+5; x=x-y+5; x%=5; x=x%5;

b)tekli (Unary) Operatörler C de 4 adet tekli operatör kullanılır: Tam ve gerçel sayılarda kullanılır. - Herhangi bir sayının 1 ile çarpımıdır. + Bu operatör etkisizdir. -- Değişkenin değerini 1 eksiltir. ++ Değişkenin değerini 1 arttırır. -- ve ++ operatörleri değişken sağ ve sol tarafına göre farklı işlevleri vardır. x++ x=x+1; //(eşitle ve sonra arttır) ++x x+1=x; //(arttır ve eşitle ) x-- x=x-1; //(eşitle ve sonra azalt) --x x-1=x; //(azalt ve sonra eşitle)

#include <stdio.h> #include <conio.h> main() { int a,b,sonuc; a=10; // scanf("%i", &a); a+=5; printf("\n a sayısı=%d, a); a=10; sonuc=a++; printf("\n sonuc sayısı=%d, sonuc); b=5; sonuc=a%b; printf("\n sonuc sayısı=%d, sonuc); a=10; örnek sonuc=++a+b; printf("\n sonuc sayısı=%d, sonuc); sonuc=a-(--b); printf("\n sonuc sayısı=%d, sonuc); getch ();

ÇÖZÜM

Örnek: Üç sayının ortalamasının bulunması

#include stdio.h void main() { float a,b,c,ort; printf( a sayısını giriniz ); scanf( %f, &a); printf( b sayısını giriniz ); scanf( %f, &b); printf( c sayısını giriniz ); scanf( %f, &c); ort = (a+b+c)/3.0; printf( Ortalaması = &f\n, ort);

Örnek: Para ödeme algoritması ve programının oluşturulması (Hangi paradan kaç tane olabiliyor)

Adım1 Başla Adım2 Oku (x) /*Toplam ödenecek miktar*/ Adım3 a = x / 100 /* a: Ödenecek 100 lük kağıt para sayısı*/ Adım4 b = (x-100*a) / 50 /* b: Ödenecek 50 lik kağıt para sayısı*/ Adım5 c = (x-100*a-50*b) / 20 /* c: Ödenecek 20 lik kağıt para sayısı*/ Adım6 d = (x-100*a-50*b-20*c) / 10 /* d: Ödenecek 10 luk kağıt para sayısı*/ Adım7 e = (x-100*a-50*b-20*c-10*d) / 5 /* e: Ödenecek 5 lik kağıt para sayısı*/ Adım8 f = (x-100*a-50*b-20*c-10*d-5*e) / 1 /* f: Ödenecek 1 lik madeni para sayısı*/ Adım 9 Dur

#include<stdio.h> #include<stdlib.h> int main() { int x,a,b,c,d,e,f; printf("para miktarini giriniz:"); scanf("%d",&x); a=x/100; b=(x-a*100)/50; c=(x-a*100-b*50)/20; d=(x-a*100-b*50-c*20)/10; e=(x-a*100-b*50-c*20-d*10)/5; f=(x-a*100-b*50-c*20-d*10-e*5)/1; printf("odenecek miktar: \n %d tane 100\n %d tane 50\n %d tane 20\n %d tane 10\n %d tane 5\n %d tane 1 liradir.\n",a,b,c,d,e,f); system("pause"); return 0;

ŞÜPHELİ KODLAR ++ veya -- operatörlerinin bilinçsizce ve kötü kullanımları derleyiciler arasında yorum farklııklarına yol açarak taşınabilirliği bozar.böyle kodlardan kaçınmak gerekir. 1-Üç tane + operatörü boşluk olmaksızın yanyana getirilmemelidir.(+++) 2-Bir değişken ++ veya -- ile kullanılmışsa bir daha aynı ifade içerisinde ++ veya -- operatörleriyle gözükmemelidir.(hata: b = ++a + ++a;) 3- int multiply(int a, int b) {return a * b; void main(void) { int a, b = 10; a = multiply(b, ++b);/*hata:derleyicinin parametreleri ne sırayla aktardığı derleyiciye göre değişir.*/ printf("%d\n", a); Bir fonksiyon çağırılırken parametrelerden birinde ++ veya -- kullanılmışsa diğer parametrelerde aynı değişken kullanılmamalı, çünkü parametre aktarım sayısı her sistemde aynı olmayabilir. fonk(++a);/*doğru:önce a arttırılır sonra yeni a değeriyle fonk çağırılır*/ fonk(a++);/*doğru:önce fonk çagırılır sonra a arttırılır*/

OPERATÖRLER ARASI ÖNCELİK İLİŞKİSİ Bir operatörün diğerine göre bir öncelik sırası vardır. Bu sıra operatörlerin öncelik tablosu denilen bir tabloyla belirtilir. Tabloda üstteki satırda bulunanlar attakilerden daha önceliklidir. Aynı satırda bulunanlar eşit önceliklidir. Aynı öncelikli operatörlerle soldan sağa ya da sağdan sola işlem yapılır.

OPERATÖRLER OPERATÖRLERİN ÖNCELİKLERİ AYNI BAĞINTIDA KULLANILDIĞINDA ( ) [ ] ->. SOLDAN SAĞA! ~ ++ -- + - * & (type) sizeof SAĞDAN SOLA * / % SOLDAN SAĞA + - SOLDAN SAĞA << >> SOLDAN SAĞA < <= > >= SOLDAN SAĞA ==!= SOLDAN SAĞA & SOLDAN SAĞA ^ SOLDAN SAĞA SOLDAN SAĞA && SOLDAN SAĞA SOLDAN SAĞA?: SAĞDAN SOLA = += -= *= /= %= &= ^= = <<= >>= SAĞDAN SOLA, SOLDAN SAĞA

İLİŞKİSEL OPERATÖRLER < > <= >= ==!= C'de 6 ilişkisel operatör vardır.hepsi binary infix operatörlerdir. Aritmetik operatörlerden daha düşük önceliklilerdir. İlişkisel operatörlerin ürettiği değer önerme doğruysa 1 yanlışsa 0'dır main() { int a; a =10 > 5; printf("a=%d\n", a);/*a=1*/

MANTIKSAL OPERATÖRLER(&&) C'de 3 tane mantıksal operatör vardır. AND && OR NOT! (VE) (VEYA) (DEĞİL)

AND OPERATÖRÜ A B A&&B 0 0 0 1 0 0 0 1 0 1 1 1 Mantıksal operatörlerin hepsi önce operandlarını doğru ya da yanlış olarak yorumlar, eğer sonuç doğruysa 1, yanlışsa 0 sayısal değerini üretir. Yorumlamada kural:eğer operand 0 dışı bir değerse doğru olarak, 0 ise yanlış olarak yorumlanır.uygulama da ilişkisel operatörlerle birlikte kullanılırlar. && operatörünün önce sol tarafı tam olarak bitirilir.d aha sonra sağ tarafı yapılır ve bitirilir.eğer sol tarafın sayısal değeri 0 ise sağ tarafın yapılmasına gerek kalmaz. Örneğin x > 10 && fonk() burada x 10'dan küçükse fonk hiç çağırılmayacaktır.

OR OPERATÖRÜ( ) OR işlemi iki operand da yanlışsa yanlış,operandlardan en az birisi doğruysa doğru sonucunu üretir. a b a b 0 0 0 0 1 1 1 0 1 1 1 1 Bu operatör de 1 ya da 0 tamsayı değerini üretir. void main(void) { int x,y; scanf("%d",&y); x = y < 10 y > 50; printf("%d\n",x); OR operatörünün önce sol tarafı yapılır.eğer sol taraf değeri 0 dışı bir değerse sağ tarafın yapılmasına gerek kalmaz.

NOT OPERATÖR(!) Bu operatör unary prefixtir.zaten öncelik tablosunun ikinci düzeyi tamamen unary operatörlere ayrılmıştır. a!a 0 1 1 0 Yani bu operatör operand 0 ise 1, 0 dışı herhangibir değerse 0 yapar. void main(void) { int x,a = 10; x =!!a; printf("%d\n", x); /*a = 10,!a = 0,!(!a) = 1, ekrana 1 basılır*/

ATAMA OPERATÖRÜ(=) Bu operatçr binary, infix bir operatördür.atama operatörünün sol tarafındaki operandın nesne olması gerekir. Buradan hareketle ++ ve -- operatörlerinin operandlarının da nesne olması gerekir. Atama operatöründe elde edilen değer sağ taraftaki operandın sayısal değeridir. void fonk(int n) { printf("%d\n", n); void main (void) { int x = 10, y; fonk(y = x); z = y = x = 10; ifadesi doğru olduğu gibi, z = (y = 10) + 2; ifadesi de doğru ve geçerlidir.

BİTLER ÜZERİNDE İŞLEM YAPAN OPERATÖRLER Bitler üzerinde işlem yapmak, bir tamsayı yada karakter değişkenin (short,int,long ve char) bir bütün olarak sayısal değeri üzerinde değil de doğrudan bitlerini sınamak, değiştirmek ve öteleme yapmak anlamına gelmektedir. Örneğin, bilgisayarın iletişim kanalından alınan bir kısa tamsayının ikinci bitinin ne olduğu öğrenilmek isteniyorsa, bu operatörleri kullanmaya gerek vardır. Bu operatörler, kullanıcıya işlemcinin birleştirici dili düzeyinde( assembly), bitler üzerinde çalışma olanağı verir. Bit üzerinde işlem yapan altı operatör vardır. Bunlar: & bit düzeyinde VE (bitwise AND) l bit düzeyinde VEYA (bitwise OR) ^ bit düzeyinde YA DA (bitwise XOR) ~ bir e tümleme (one s complement) << sola öteleme (left shift) >> sağa öteleme (right shift)

VE OPERATÖRÜ(&): Genelde bir değişkenin bazı bitlerini sıfırlama için kullanılır. VEYA OPERATÖRÜ( ): Bir sayısal değişkenin bazı bitlerini birlemek için kullanılır. YA DA OPERATÖRÜ (^): Karşılaştırılan bitlerin değeri birbirinden farklı ise 1, aynı ise 0 üretir. Bir değişkenin kendisi ile YA DA lanması sayısal değerini sıfırlar. Çünkü bütün karşılıklı bitler aynı olacağından, bütün bitler sıfırlanacaktır. Değer 1 Değer 2 Çıktı cevabı 0 0 0 0 1 1 1 0 1 1 1 0

a : 00000000000000000000000010000000 ~a : 11111111111111111111111101111111 a : 00000000000000000000000010000000 b : 00000000000000000000000011001011 ------------------------------------- a&b : 00000000000000000000000010000000 a b : 00000000000000000000000011001011 a^b : 00000000000000000000000001001011 a<<1 : 00000000000000000000000100000000 b>>2 : 00000000000000000000000000110010 a>>>3: 00000000000000000000000000010000

#include <iostream> using namespace std; main() { unsigned int x, y, z; x = 0xA0; y = 0x50; cout<<x<<endl; cout<<y<<endl; z = ( x << 3 ) + ( y >> 3 ); cout<<z; x >> y x / 2 y x << y x * 2 y

#include <iostream> using namespace std; int main() { unsigned short a = 0xFFFF; // pattern 1111... unsigned short b = 0xAAAA; // pattern 1010... cout << hex << ( a & b ) << endl; // prints "aaaa", pattern 1010...

Bütün operatörler basit atama operatörü ile birlikte kullanılmaz; geçerli olan bitişik atama operatörleri aşağıdaki çizelgede verilmiştir: Operatör tanımı += ekleyerek,atama -= çıkararak atama *= çarparak atama /= bölerek atama %= bölüp,kalanını atama <<= sola öteleyerek,atama >>= sağa öteleyerek,atama &= bit düzeyinde VE leyerek atama l= bit düzeyinde VEYA layarak atama ^= bit düzeyinde YADA layarak atama =~ bit düzeyinde tümleme ve atama X*= y+1; ifadesi ile x=x*(y+1); aynıdır

& ve * İŞARETÇİ OPERATÖRLERİ İşaretçi (pointer), bir değişkenin bellekteki adresidir. İşaretçi değişken bu adresin saklanacağı özel bir değişkendir. Bu tip değişkenlere yalnızca adresler veya diğer işaretçi değişkenler atanabilir.

* KARAKTERİ : Bu işaret iki amaçla kullanılır.ilki, işaretçilerin bildiriminde, ikincisi bir işaretçi değişkenin işaret ettiği bellek gözüne erişmekte. & KARAKTERİ: Daha önce bit üzerinde VE işlemi yapan operatör olarak kullanılmıştı.ancak işaretçi operatör olarak bir değişkenin önüne koyularak ta kullanılır. Bu değişkenin değeri ile değil de bellekte bulunduğu adresi ile ilgileniyor anlamına gelir. SIZEOF OPERATÖRÜ: Bir değişkenin veya veri tipinin bellekte kaç sekizli yer kapladığını verir. Farklı tipte değişkenler kullanılan bir bağıntının sonucunun kaç sekizli yer kaplayacağını öğrenmek için de kullanılabilir. Sizeof nesne ve sizeof(tip) olarak iki farklı şekilde kullanılabilir.

# include<iostream> # include<string.h> using namespace std; int main(){ int *a = new int[5]; a[0] = 12; a[1] = 5; a[2] = 43; a[3] = -12; a[4] = 100; cout<<sizeof(a); return 0;

PROGRAM KONTROL KOMUTLARI A karşılaştırma kontrol komutları 1. if koşulu 2. if else koşulu 3. if - else if koşulu 4. (? :) üçlü koşul 5. goto deyimi 6. switch deyimi B tekrarlama kontrol komutları 7. do-while döngüsü 8. while döngüsü 9. for döngüsü

KARŞILAŞTIRMA KOMUTLARINDA OPERATÖR KULLANIMI Burada kullanılan operatörler ilişki operatörleri ve sayısal değerleri veya karakterleri karşılaştırmak için kullanılırlar. C dilinde karşılaştırma operatörleri karakter katarları( strings) için kullanılmazlar. Bunların karşılaştırılması için standart kütüphanede strcmp( ) ve buna benzer birçok fonksiyon vardır.

Karşılaştırma (ilişkilendirme) operatörlerinin if içerisinde anlamı: > büyük mü? >= büyük veya eşit mi? < küçük mü? <= küçük veya eşit mi? == eşit mi?!= farklı mı?

Genelde karşılaştırma ve döngü deyimlerinde koşulun sınanması için kullanılırlar. Karşılaştırma sonucu doğru( true ) ya da yanlış ( false ) çıkar. Koşul doğruysa olumlu varsayılarak, koşul sonunda istenenler yerine getirilir. Yanlış ise olumsuz varsayılır ve istenenler atlanır.

BOOLEAN SINAMA ÖRNEK #include<iostream> main() { bool a; //int a; a=2<3; std::cout<<a;

if (Eğer) Karşılaştırması

İf koşulu if (şart) ifade; if (x>y) pirintf ("x büyüktür"); if (şart) { ifade 1; ifade 2;...... if (x>y) { printf ("x büyüktür"); printf ("y küçüktür");

if-else koşulu if (şart ) ifade 1; else ifade 2; if (x>y) printf ( x büyüktür ) else printf ( y büyüktür veya eşittir ) if (şart) { ifade 1; ifade2; else { ifade 4; ifade 5;

İf else if koşulu if (şart 1) ifade 1; else if (şart 2) ifade 2; else if (şart 3) ifade 3;... else ifade 4; if (x>y) printf ("x>y"); else if (x=y) printf ("x=y"); else printf ("x<y");

Örnek: Girilen bir tamsayının char tip sınırlarında olup olmadığını denetleyen program: char 1 Byte -128 den +127 e kadar

#include<stdio.h> #include<cstdlib> #include "locale.h" main() { system("cls"); int x; char y; setlocale(lc_all,"turkish"); printf("bir tamsayi giriniz:"); scanf("%d",&x); printf("\n"); y=x; if(x>=-128 && x<=127) printf("girdiğiniz sayı char tipine uygundur.\nsayı=%d dir\n",x); else printf("girdiğiniz sayı char tipine uygun değildir=%d\n",y); system("pause");

Örnek: Hava sıcaklığını size sorup sıcaklık değerine göre normal, sıcak yada soğuk bir gün diye cevap veren program. 20-30 derece Normal bir gün >30 derece Sıcak bir gün 20> derece Soğuk bir gün

#include<stdio.h> #include<cstdlib> #include "locale.h" main() { setlocale(lc_all,"turkish"); int temp,k; printf("sıcaklık değerini giriniz\n"); scanf("%d",&temp); system("cls"); if(temp<30 && temp>20) printf("normal bir gün (Hava sıcaklığı=%d derece)\n",temp); else if(temp>30) printf("sıcak bir gün (Hava sıcaklığı=%d derece)\n",temp); else printf("soğuk bir gün (Hava sıcaklığı=%d derece)\n",temp); system("pause");

Girilen tarihteki günün adını veren programı yazınız.

#include <studio.h> main ( ) { int gun, ay, yıl ; long gt ; printf( Tarihi gir ) ; scanf ( %d %d %d,&gun) /* oncekı yıllardakı gun sayısını hesapla */ gt=( yıl*1)*365 + yıl/4; /* bu yildaki aylardaki gunleri ekle */ if (ay==2) gt = gt + 31 ; else if (ay ==3) gt = gt + 31 + 28 ; else if (ay ==4) gt = gt + 31 + 28 +31; else if (ay ==5) gt = gt + 31 + 28 +31+ 30 ; else if (ay ==6) gt = gt + 31 + 28 +31+ 30 +31; else if (ay ==7) gt = gt + 31 + 28 +31+ 30 +31+ 30 ; else if (ay ==8) gt = gt + 31 + 28 +31+ 30 +31+ 30 + 31 ; else if (ay ==9) gt = gt + 31 + 28 +31+ 30 +31+ 30 + 31+30 ; else if (ay ==10) gt = gt + 31 + 28 +31+ 30 +31+ 30 + 31+30 + 31; else if (ay ==11) gt = gt + 31 + 28 +31+ 30 +31+ 30 + 31+30 + 31+ 30 ; else if (ay ==12) gt = gt + 31 + 28 +31+ 30 +31+ 30 + 31+30 + 31+ 30 +31; /*Bu ayı ekle */ gt = gt+ gun; if(yıl%4==0 && ay>2) gt =gt+1; gt=gt %7, if(gt==1) printf( Pazar ); else if(gt==2) printf( Pazartesi ); else if(gt==3) printf( Salı ); else if(gt==4) printf( Carsamba ); else if(gt==5) printf( Persembe ); else if(gt==6) printf( Cuma ); else if(gt==7) printf( Cumartesi );

#include <stdio.h> main ( ) { long int gun, ay, yil ; long gt ; printf("gün Ay Yıl olarak Tarihi giriniz\n") ; scanf ( "%ld%ld%ld",&gun,&ay,&yil) ; gt=( yil)*365 + yil/4; if (ay==2) gt = gt + 31 ; else if (ay ==3) gt = gt + 59 ; else if (ay ==4) gt = gt + 90; else if (ay ==5) gt = gt + 120 ; else if (ay ==6) gt = gt + 151; else if (ay ==7) gt = gt + 181 ; else if (ay ==8) gt = gt + 212 ; else if (ay ==9) gt = gt + 242 ; else if (ay ==10) gt = gt + 273; else if (ay ==11) gt = gt + 303 ; else if (ay ==12) gt = gt + 334; gt = gt+ gun;/*girlen ayın günlerini ekleme */ if(yil%4==0 && ay>2) gt=gt+1; gt=gt%7; if(gt==2) printf("pazar"); if(gt==3) printf("pazartesi"); if(gt==4) printf("salı"); if(gt==5) printf("carsamba"); if(gt==6) printf("persembe"); if(gt==0) printf("cuma"); if(gt==1) printf("cumartesi");

FONKSİYONLAR [geri dönüş değeri] <fonksiyon ismi>([paramatre]) { ANABLOK Her fonksiyon ard arda tanımlanır. İç içe fonksiyon tanımlanamaz... Yanlış fonksiyon kullanımına örnek: main() { fonk() { Olması gereken: main() { fonk() {

Hiçbir fonksiyon 1'den fazla tanımlanamaz. En azından aynı isme sahip olmaz. #include <stdio.h> int fonk1(); int fonk2(); int fonk3(); main() { printf("ben main'im\n"); fonk1(); fonk2(); int fonk1() { printf("ben 1.fonksiyonum\n"); int fonk2() { printf("ben 2. fonksiyonum\n"); fonk3(); int fonk3() { printf("ben 3. fonksiyonum\n");

FONKSİYONLARIN GERİ DÖNÜŞ DEĞERLERİ(RETURN VALUE) int x; x = fonk(); Bir fonksiyonun çalışması bittikten sonra onu çağıran fonksiyona gönderdii değere geri dönüş değeri denir. Fonksiyonların geri dönüş değerleri aritmetik işlemlere sokulabilir. x = fonk() + a; gibi..

GERİ DÖNÜŞ DEĞERİ OLUŞTURULMASI VE return ANAHTAR SÖZCÜĞÜ #include <stdio.h> int fonk() { printf("ben fonk'um\n"); return 100; main() { int a; a = fonk(); printf("fonk'un geri dönüş değeri=%d\n",a); return anahtar sözcüğünün iki işlevi vardır: 1-Fonksiyonun çalışmasını bitirir. Bu durumda akış, onu çalıştıran fonksiyonda devam edecektir. 2-Geri dönüş değeri oluşturur. Kullanım biçimi => return [ifade]

return İFADESİ NASIL OLUŞTURULUR? return'ün yanındaki ifade önce derleyici yarafından programcının erişemediği geçici bir bölgeye alınır,oradan kullanılır.örneğin a = fonk(); işleminde şunlar yapılır: temp = fonk(); a = temp; Bu işlem bize aksettirilmez. Fonksiyonun geri dönüş türü aslında geçici bölgenin türünü gösterir.return ifadesinin oluşturulması da geçici bölgeye yapılan gizli bir atamadır. long fonk() { printf("ben fonk'um\"); return 123000L; main() { long a; a = fonk(); printf("%ld\n",a);

return anahtar sözcüğü kullanılmışsa fonksiyon ana bloğu bittiğinde sonlanır. Fonksiyonda return ile belirli bir değer verilmemişse rastgele bir geri dönüş değeri verilecektir. Bir fonksiyonun geri dönüş değerine sahip olması kullanılmasını gerektirmez. Fonksiyon başında void yazılırsa foksiyonun geri dönüş değerinin olmadığı analtılır. void fonk() { Böyle fonksiyonlarda return anahtar sözcüğü fonksiyonu sonlandırmak için kullanılır. void bir fonksiyonun geri dönüş değeri olmadığı için geri dönüş değeri kullanılmaya çalışılmamalıdır. void fonk() { printf("selam\n"); return; main() { int a; a = fonk();/*bu kullanım tamamen yanlış*/ printf("%d\n",a);/*bu kullanım tamamen yanlış*/

void FONKSİYONA NEDEN İHTİYAÇ VARDIR? 1-void anahtar sözcüğü okunabilirliği arttırır. 2-Geri dönüş değerine sahip olmayan fonksiyonları void olarak tanımlarsak yeni derleyicilerin vereceği uyarılardan kurtuluruz. Parametre yerine void koyarsak fonksiyonun parametre almadığını gösteririz. main fonksiyonunun da bir geri dönüş değeri vardır. main'e geri dönüş değeri çıkış kodu olarak(exit code) gönderilir. Bu değer işletim sisteminden daha sonra istenebilir. Ancak böyle bir bilgiye seyrek olarak ihtiyaç duyulur.

NESNELERİN FAALİYET ALANLARI VE ÖMÜRLERİ Faaliyet alanları: Bir nesnenin derleyici tarafından tanınabildiği program aralığını gösterir. 3 tür faaliyet alanı vardı. 1-Blok faaliyet alanı:yalnızca bir blokta tanınır. 2-Fonksiyon faaliyet alanı:bir fonksiyonun her yerinde tanınır. 3-Dosya faaliyet alanı:programın her tarafında tanınır.

NESNELERİN FAALİYET ALANLARINA GÖRE SINIFLANDIRILMASI 1-Yerel değişkenler: Blokların başlarında tanımlanmış değişkenler yerel değişkenlerdir. Bunlar tanımlandıkları blokta kullanılırlar.(blok faaliyet alanı) void main(void) { int a; { int b; Burda a main fonksiyonunun tamamında b ise sadeec içteki blok'ta geçerlidir.farklı faaliyet alanlarına sahip değişkenler aynı ada sahip olabilir.

2-Global değişkenler Tüm blokların dışında tanımlanan değişkenlere global değişkenler denir. Dosya faaliyet alanı kuralına uyar. Kaynak kodun her yerinde tanınır. #include <stdio.h> int a; void fonk(void) { a = 20; main() { a = 10; fonk(); printf("%d\n", a);/*ekrana 20 değeri basılır*/

3-Parametre değişkenleri Bir fonksiyon parametre alabilir. Bunun için parametre değişkenlerinin tanımlanması gerekir. İki ayrı yöntemsel parametre bildirimi yapılır. a.eski biçim: void fonk(a,b) int a; long b; { b.yeni biçim void fonk(int a,long b) { Bu biçimde parametre değişkenler aralarına virgül konularak tanımlanır. void fonk(int a,b)/*yanliş TANIMLAMA*/ Bu değişkenler fonksiyon faaliyet alanı kuralına uyarlar. Parametre değişkenine sahip bir fonksiyon aynı sayıda değişkenle çağırılmalıdır.

PARAMETRE AKTARIM KURALI Parametreli bir fonksiyon çağırıldığında derleyici önce parametrelerden parametre deüerlerine karşılık atama yapar, daha sonra programın akışı fonksiyona geçirilir. #include <stdio.h> int add(int a,int b) { return a + b; main() { int x = 10, y = 20, z; z = add(x, y); printf("%d\n", z); Fonksiyonlar sabitlerle de çağırılabilrler. fonk(10, 20); gibi..

NESNELERİN ÖMÜRLERİ Ömür: Nesnenin bellekte yer kapladığı zaman aralığına ömür denir. Nesnelerin ömürleri 2 gruba ayrılır. 1-Statik ömürlü nesneler: Bu nesneler programın belleğe yüklenmesiyle yaratılırlar. Program bitince hafızadan atılır. 2-Dinamik ömürlü nesneler: Programın belli bir aşamasında yaratılırlar, belirli bir süre faaliyet gösterdikten sonra kaybedilirler. YEREL DEĞİŞKENLERİN ÖMÜRLERİ Dinamik ömürlüdürler. Programın akışı bloğa girdiğinde yaratılırlar, bloğun çalışması bittiğinde bellekten çıkarılırlar. GLOBAL DEĞİŞKENLERİN ÖMÜRLERİ Statik ömürlüdürler. Programın başından sonuna kadar bellekte kalırlar.

PARAMETRE DEĞİŞKENLERİNİN ÖMÜRLERİ Dinamik ömürlüdürler. Fonksiyon çağırıldığında yaratılırlar, fonksiyon çalışması bittiğinde bellekten silinirler. Parametreli bir fonksiyonun çağırılmasında şunlar olmaktadır. 1-Parametre değişkeni yaratılır. 2-Değer ataması yapılır 3-Programın akışı fonksiyona yönledirilir. Ömürle faaliyet alanı arasındaki ilişki programın faaliyet alanına girdiğinde değişken yaratılır, faaliyet alanından çıktığında değişken sonlandırılır. İçerisine değer verilmemiş yerel değişkenlerin içinde rastgele değerler vardır. Bir değer atanmamış global değişkenlerin içerisinde ise 0 değeri vardır. Parametre değişkenlerine değer atanmaması söz konusu değildir.

?: KARŞILAŞTIRMA OPERATÖRÜ C dilinde if-else karşılaştırma deyiminin yaptığı işi sınırlı olarak yapan bir operatördür. Genel yazım biçimi: (koşul deyimi)? deyim1 : deyim2; İlk önce koşul deyimi sınanır;olumluysa deyim1, aksi durumda deyim2 değerlendirilir. Deyim1 ve deyim2 de atama işlemi yapılamaz,ancak koşul deyiminde atama işlemi de yapılabilir.

(şart)? (E1) : (E2); şart doğru (1) ise E1 işlem görür. şart yanlış (0) ise E2 işlem görür. x=10 y=5 ise z=(x>y)? 20:15; (z=20) z= (x>y)? x:y; (z=x=10)

İki sayının karşılaştırılmasında? İşareti ile karşılaştırma

#include<stdio.h> #include<conio.h> #include <stdlib.h> #include<locale.h> main() { int x,y,c; setlocale(lc_all,"turkish"); printf("1.sayıyı giriniz: "); scanf(" %d",&x); printf("\n"); printf("2.sayıyı giriniz: "); scanf("%d",&y); printf("\n"); c=(x<y)? x:y; system("cls"); printf("küçük olan sayı=%d dir\n",c); getche();

switch Deyimi switch(<seçici>) { case seçenek1 : Deyim; case seçenek2 : Deyim;... default : Deyim; Seçicinin aldığı değere eşit seçeneğin olup olmadığına bakar. Var ise o noktadan sonraki deyimler yürütülür. switch deyiminin sonuna gelindiğinde veya break deyimi ile karşılaşıldığında yürütme işlemi durur ve programın akışı switch deyimini izleyen deyim ile devam eder.

switch(i) { case 1 : printf("bir"); case 2 : printf("iki"); default : printf("hiçbiri"); i=1 ise çıkış BirİkiHiçbiri i=2 ise çıkış İkiHiçbiri Sorunu ortadan kaldırma için her durum için break deyimi eklenmeli.. Seçici Ordinal tiplerden biri olmalıdır (Ordinal tip: tüm değerleri listelenebilinen veri tipleri - integer, char).. Seçici ile seçenekler aynı tipte olmalıdır.. default kısmı seçimliktir. Seçeneklerin hiçbiri uygun değil ise yürütülür.

#include <stdio.h> main() { char islem; int s1, s2, s3; printf("önce işlemi sonra sayıları girin "); scanf("%c%d%d",&islem, &s1, &s2); switch (islem) { case '+' : s3 = s1 + s2; break; case '-' : s3 = s1 - s2; break; case '*' : s3 = s1 * s2; break; case '/' : s3 = s1 / s2; break; default : printf ("Hatalı işlem"); printf("\nsonuç = %d",s3);

1-12 arasında girilen sayıya göre mevsimlerin ismini veren programı yapınız

scanf("%d", &ay); switch (ay) { case 3: case 4: case 5: printf("ilkbahar"); break; case 6: case 7: case 8: printf("yaz"); break; case 9: case 10: case 11: printf("sonbahar"); break; case 12: case 1: case 2: printf("kış"); break;

YAPILMASI İSTENENLER 1: Sınav notunu harfe dönüştüren programı yazınız. ( >=90 :AA, 85-89:BA, 80-84:BB, 75-79:CB, 70-74:CC, 60-69:D, <60 :F ) 2: Belirtilen tarihin hangi güne denk geldiğini bulan programı yazınız. else if yapısı ve switch kullanarak 3: Girilen bir sayının tek veya çift sayi olduğunu bulan program. 4: Kullanıcıdan iki sayi girmesini isteyen ve sayıların büyüklüğünü if ile karşılaştıran program. 5: Yaşı girilen bir kişinin seçimlerde oy verme yeterliliği olup olmadığını test eden program. 6: Klavyeden alınan iki sayının toplamının 100'den küçük olup olmadığını test eden program