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

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

C dilinde if-else yapısı

C PROGRAMLAMA D İ L İ

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

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.

Program Akış Kontrol Yapıları

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 2

PROGRAMLAMAYA GİRİŞ DERS 2

ALGORİTMA VE PROGRAMLAMA I

İç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

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

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

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

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

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

Nesne Yönelimli Programlama

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

PROGRAMLAMA DİLLERİ I

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

Java da Program Denetimi ve Operatörler

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

Döngü ve Koşul Deyimleri

C++ Operatörler (Operators)

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

Eln 1001 Bilgisayar Programlama I

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

Karşılaştırma Komutları (Switch ve? Operatörü)

Genel Programlama II

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

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

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

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

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

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

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

Arasınav Sınavı Soruları Güz 2017 Süre: 90 Dakika

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

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

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

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

WEB TASARIM I. Öğr. Gör. M. Mutlu YAPICI. Ankara Üniversitesi Elmadağ Meslek Yüksekokulu

BLM 111 ALGORİTMA VE PROGRAMLAMA I

C PROGRAMLAMA D İ L İ

C PROGRAMLAMA D İ L İ

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

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.

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

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

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

BTP 207 İNTERNET PROGRAMCILIĞI I. Ders 8

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

C PROGRAMLAMA D İ L İ

HSancak Nesne Tabanlı Programlama I Ders Notları

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

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

Dr. Fatih AY Tel: fatihay@fatihay.net

Java da Dizi Tanımlama

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

Temel Giriş/Çıkış Fonksiyonları

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

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

Bölüm 4 C de Program Kontrolü

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

C PROGRAMLAMA D İ L İ

C Programlama Dilininin Basit Yapıları

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

YZM 2105 Nesneye Yönelik Programlama

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

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

Programlama Dilleri 3

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

mikroc Dili ile Mikrodenetleyici Programlama Ders Notları

J A V A D A P R O G R A M D E N E T İ M İ V E O P E R A T Ö R L E R

Karşılaştırma İşlemleri ve Koşullu İfadeler

Bit, Byte ve Integer. BIL-304: Bilgisayar Mimarisi. Dersi veren öğretim üyesi: Dr. Öğr. Üyesi Fatih Gökçe

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

C ile Uygulamalar 2 - Cevaplar

BBS515 Nesneye Yönelik Programlama. Ders 3 Zümra Kavafoğlu

Ders 4: Temel Giriş/Çıkış Fonksiyonları

while(), do-while(), for() M.İLKUÇAR 2010 MAKU-MYO

Hafta 9 C Dilinde Kontrol ve Döngü Yapıları

EBG101 PROGRAMLAMA TEMELLERİ VE ALGORİTMA

İnternet Programcılığı Dersi 2.Dönem Ders Notu

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

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

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

BİL1001 Bilgisayar Bilimlerine Giriş 1

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

DÖNGÜLER (LOOPS) while(), do-while(), for(), foreach()

BİL-142 Bilgisayar Programlama II

Programlama Dilleri Laboratuvarı

Java da Program Denetimi ve Operatörler. Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 2 1

BLM 111 ALGORİTMA VE PROGRAMLAMA I

Nesne Yönelimli Programlama

BİL1001 Bilgisayar Bilimlerine Giriş 1

Akış Kontrol Mekanizmaları

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

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

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

Transkript:

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 ele alarak isleme sokarlar. Bit operatörlerin aldığı değişkenlerin (operand'larin) türü tamsayı türlerinden olması gerekir (char, short, int, long), "float" ya da "double" türleri bu operatörlerle isleme sokulamaz.

Bit Değil (~) Operatörü Bit değil operatörü 1 e tümleme işlemi yapar. Yani 1 olan bit leri 0; 0 olan bit'leri 1'e dönüştürür. Örnek: unsigned int x = 0x1834; //işaretsiz tamsayı olarak x tanımlanıyor, 0x heksadesimal anlamında unsigned int y; // işaretsiz tamsayı tipi olarak y tanımlanıyor y = ~x ; // x'in bit düzeyinde değilim alınıp y değişkenine aktarılıyor Önce x içerisinde heksadesimal sistemde verilen sayıyı binary sisteme (bit düzeyine) dönüştürelim. x = 0001 1000 0011 0100 (1) (8) (3) (4) Simdi x'in bit olarak değimlini alalım. Bu işlem için 1'leri 0; 0'lari 1 yap maliyiz. ~x = 1110 0111 1100 1011 (E) (7) (C) (B) sonucu elde edilir.

Bit VE (&) Operatörü Karşılıklı bit'leri VE işlemine tabi tutar. Bit VE islemi mantıksal çarpma yapar. Örnek: x = 0xBB; Y = 0x1C; z = x &y; // x ve y değişkeni VE işlemine tabi tutulunca z değişkenin değeri soruluyor x ve y degiskenlerini binary (ikilik) sisteme çevirerek bit durumlarini inceleyelim. x = 1011 1000 Y = 0001 1100 (B) (8) (1) (C) Kars ilikli bit'ler üzerinde VE islemi yapılırsa; 1011 1000 x 0001 1100 y 0001 1000 x & y

Bit VEYA ( ) Operatörü Kars ilikli bit'ler üzerinde VEYA işlemini uygular. Bit VEYA mantıksal toplama islemi yapar. x = 0001 1111 1100 0000 (1FC0) y = 0001 0101 0011 1010 (153A) z = x y = 0001 1111 1111 1010 olur.

Bit ÖZEL VEYA (^) Operatörü Bu operand iki operandın karşılıklı bitleri aynı ise 0, farklı ise 1 değerini üretir. 0001 0101 1100 0100 a 0001 0010 1100 0101 b 0000 0111 0000 0001 a ^ b

Sola Öteleme (<<) Operatörü Sola öteleme operatörünün sol tarafındaki operand öteleme işleminin yapılacağı değişkeni ya da sabiti, sağ tarafındaki operand ise öteleme sayısını göstermektedir. degisken«öteleme sayısı Sola öteleme işleminde bütün bit'ler öteleme sayısı kadar sola kaydırılır. Kaydırma islemi sonunda en sağdaki bit sürekli sıfırla beslenir, en soldaki bit ise menzil dışına çıktığı için kaybolur. Örnek: a = 0xC9 b = a < < 1; // binary olarak 1100 1001 değerine eşittir. // a'nin 1 kere sola öteleneceğini belirtir. b=0x92 olur.

Sağa Öteleme (>>) Operatörü Sağa ötelemenin sola ötelemeden farkı yönünün ters olmasıdır. Sağa ötelemede sayi içerisindeki bütün bit'ler sağa kaydırılır. Örnek: a=0xc9 >> 1 Yeni deger a=0x64 olur.

Unary Operatörler C programlama dilinde diğer dillerde bulunmayan iki tane unary operatör vardır. Bunlar ++ ve -- dir. ++ operatörü, değişkenin tuttuğu sayıya 1 ekler. -- operatörü ise, değişkenin tuttuğu sayıdan 1 çıkarır. x++ x=x+1 x-- x=x-1 Unary operatörün iki kullanım sekli vardır. ++ ve -- operatörleri değişkenin önüne veya sonrasına koyulabilir. x=10; y=x++; y değişkeninin değeri y=10 olur. Çünkü program ilk önce x değerini y değişkenine aktarır daha sonra x değerinin 1 artırır. x=10; y=++x; y değişkeninin değeri y=11 olur. Çünkü program ilk önce x değerini 1 artırır daha sonra y değişkenine aktarır. Not: Ayni öncelik sırasına sahip operatörlerde program soldan sağa doğru sırayla işlem yapar.

Operatörlerin öncelik sırası (1) Operatör () []. -> ++ ++ +! ~ (type) * & sizeof Tanımı Fonksiyon Parantezleri Dizi Parantezleri Yapı elemanı Yapı elemanı Sondan arttırma ve azaltma (postfix) Önden arttırma ve azaltma (prefix) Tekil (unary) Toplama çıkarma Mantıksal Olumsuz, İkil (bitwise) olumsuz Tip değiştirme (Type casting) Gösterici değeri (reference) Adres değeri Boyut fonksiyonu Birleştirme Özelliği Soldan Sağa Sağdan sola * / % Çarpma Bölme Kalan Soldan Sağa + Toplama Çıkarma Soldan Sağa << >> İkil sola kaydırma, İkil Sağa kaydırma Soldan Sağa

Operatörlerin öncelik sırası (2) Operatör Tanımı Birleştirme Özelliği < <= Küçük, Küçük Eşit Soldan Sağa > >= Büyük, Büyük Eşit ==!= Eşit mi? Eşit Değiş mi? Soldan Sağa & İkil VE Soldan Sağa ^ Yahut (İkil Özel Veya (XOR)) Soldan Sağa İkil Veya Soldan Sağa && Mantıksal Ve Soldan Sağa Mantıksal Veya Soldan Sağa?: Üçlü Koşul Soldan Sağa = += -= *= /= %= &= ^= = <<= >>= Atama Toplama / Çıkarma ataması Çarpma / Bölme ataması Kalan / İkil ataması İkil / Mantıksal veya ataması İkil sola / sağa kaydırma ataması Soldan Sağa, Virgül (işlemleri ayırır) Soldan Sağa

Karşılaştırma Deyimleri C Programlama Dilinde bir koşulun doğru ya da yanlış olması ihtimallerine göre farklı kod veya kodların çalışmasını isteyebiliriz. Bu durumlarda karşılaştırma deyimleri kullanılır. Bu karşılaştırma deyimlerini 3 farklı yapıda kullanılabilir. if, if-else, iç içe if-else? Karşılaştırma Operatörü ile switch case yapısı ile

if, if-else Yapıları Bu yapılar, koşullu işlem yapan kontrol yapılarıdırlar. if ve else tek bir karşılaştırma deyimi olup else kullanımı isteğe bağlıdır. Eğer bir koşul olumlu ise if den sonraki bölüm yürütülür ve else den sonraki bölüm atlanır. Koşul olumsuz ise if den sonraki satırlar atlanır ve eğer varsa, else den sonraki işlemler gerçekleştirilir. if yapısının genel biçimi: if(koşul) {... işlem satırı;

if, if-else Yapıları if ile başlayan komut satırında if'den sonra yer alan parantezler içindeki koşul doğru ise (koşul sonucu 0'dan farklı ise) aynı satırda if yapısından sonra yer alan işlem satırı çalışır. Eğer koşul yanlış ise (ifade sonucu 0'a eşit ise) if yapısından sonra yer alan işlem satırı devre dışı kalır. Programımız o işlem satırı hiç yazılmamış gibi bir sonraki işlem satırından çalışmaya devam eder. Örnek: #include<stdio.h> int main() { int s1; //girilen sayimiz// printf("lütfen bir tam sayı giriniz: "); scanf("%d",&s1); if( s1 > 100 ) printf("girilen sayı 100'den büyüktür\n"); return 0;

if, if-else Yapıları if yapısının else ile genel biçimi : if(koşul) {... işlem satırı; (ifade1)... else {... işlem satırı; (ifade2)... else yapısı tek başına değil sadece if arkasından kullanılabilir. if satırında yer alan koşulun sonucu doğru ise, program if satırındaki işlem satırının gereğini yerine getirir, else satırını dikkate almaz. Eğer if satırında yer alan koşul yanlış ise, program if satırını dikkate almaz, else satırındaki işlem satırı devreye girer.

if, if-else Yapıları Örnek if else kullanımı : #include<stdio.h> int main() { int s1; printf("lütfen bir tam sayı giriniz: "); scanf("%d",&s1); if( s1 > 100 ) printf("girilen sayı 100'den büyüktür\n"); else printf("girilen sayı 100'den küçüktür\n"); return 0; Bir koşulun doğruluğunun if ile kontrolünü yaptırıp koşul karşılanıyorsa bir sonraki komut satırı devreye giriyor ve "Girilen sayı 100'den büyüktür" ekrana yazdırılıyor. Şayet verilen koşul yanlışsa, o zaman else satırı dikkate alınıyor ve ekrana "Girilen sayı 100'den küçüktür" yazdırılıyor. Ancak ikisini de yapması gibi bir durum söz konusu değildir.

if, if-else Yapıları if komut işlem satırındaki koşul doğru sonuç veriyorsa, program aynı satırda yer alan tek bir işlem satırını devreye almaktadır. Ancak iki veya daha fazla koşul kullanımında if komut işlem satırındaki koşul doğru sonuç verdiği zaman, program if yapısının hemen devamında gelen ({ ) işaretleri arasında bulunan komut işlem satırlarından oluşan kod bloğunun gereğini yerine getirir. Eğer koşul yanlış sonuç veriyorsa, program bu kez else yapısının hemen devamında bulunan ({ ) işaretleri arasındaki komut işlem satırlarından oluşan kod bloğunun gereğini yerine getirir. Yani if ve else deyimleri tek bir işlem satırının çalışmasını sağlayabilecekleri gibi aynı anda birden fazla işlem satırının da çalışmasını sağlayabilirler.

if, if-else Yapıları #include "stdio.h" int main() { int s1; printf("bir integer deger giriniz: "); scanf("%d", &s1); if(s1%2) { printf("girilen sayi tek bir sayidir\n"); printf("sayinin 3 kati : %d", 3 * s1); Örnekte integer bir değer girmemiz isteniyor. Girilen değer s1 değişkenine atanıyor. if satırında s1 değişken değerinin tek sayı olup olmadığı kontrolü yapılır. Tek bir sayı ise if koşuluna bağlı olarak tanımlanmış kod bloğu içindeki karakter dizisini ve değişken değerinin 3 katını hesaplayarak ekrana yazar. Sayı çift ise else satırına bağlı olarak tanımlanmış kod bloğu içindeki karakter dizisini ve değişken değerinin 2 katını hesaplayarak ekrana yazar. else { printf("girilen sayi cift bir sayidir\n"); printf("sayinin 2 kati : %d", 2 * s1); return 0;

if, if-else Yapıları Üç tamsayıyı okuyan ve bu üç tamsayının en küçüğünü bulup ekrana yazdıran bir C Programı yazınız #include <stdio.h>; int main () { int s1,s2,s3; int minvalue; printf("lutfen birinci tamsayiyi giriniz: "); scanf("%d", &s1); printf("lutfen ikinci tamsayiyi giriniz: "); scanf("%d", &s2); printf("lutfen ucuncu tamsayiyi giriniz: "); scanf("%d", &s3); if (s1<s2) minvalue = s1; else minvalue = s2; if (s3<minvalue) minvalue = s3; printf("en kucuk deger: %d \n", minvalue); return 0;

if, if-else Yapıları Klavyeden girilen harfin sesli harf olup olmadığını kontrol eden bir C Programı yazınız #include <stdio.h> #include <conio.h> int main() { char H = ' '; printf("\n Sesli Harf Kontrolu..."); printf("\n ==========================="); printf("\n Bir Harf giriniz :"); scanf("%c",&h); fflush(stdin); if( H == 'A' H == 'E' H == 'I' H == 'O' H == 'U' ) printf("\n %c Bir SESLI Harftir.",H); else printf("\n %c Bir SESLI harf Degildir.",H); return 0;

if, if-else Yapıları Bir yılın artık yıl olup olmadığını bulan bir C Programı yazınız #include <stdio.h> int main() { int y1; printf("bir yil girin: "); scanf("%d",&y1); if( y1 % 4 == 0 && y1 % 100!= 0 y1 % 400 == 0 ) printf("%d Artik Yil\n",y1); else printf("%d Artik Yil Degil\n",y1); return(0);

«switch case» Yapısı Bu yapı bir değişkenin içeriğine bakarak, programın akışını bir çok seçenekten birine yönlendirir. Switch deyiminden sonra kullanılan değişken veya ifadenin değeri, case ifadesinden sonraki değerlerden hangisine eşit ise oradaki komut veya komutlar işlem görür. Switch deyiminden sonra verilen ifade hiçbir case sabitine eşit olmazsa default seçeneği altındaki kodlar çalıştırılır. Her case ifadesi işlendikten sonra switch komutundan çıkmak için break fonksiyonundan faydalanılır. Switch komutundan sonra parantez içinde verilen değişken veya sabit «char» ya da «integer» tipi bir değer olabilir. «string» veya «float» olamaz. Aynı kural case ifadesinden sonra kullanılan sabit için de geçerlidir. case komutundan sonra sadece sabit bir değer kullanılabilir case (b-1) gibi bir ifade hatalıdır.

«switch case» Yapısı switch-case yapısı switch( degisken ) { case sabit1: komut(lar); break; case sabit2: komut(lar); break;... case sabitn: komut(lar) break; default: komut(lar);

«switch case» Yapısı

«switch case» Yapısı #include <stdio.h> int main() { int s1 =0; printf("lutfen bir sayi giriniz:"); scanf("%d", &s1); Örnekte girilen integer değer sayının 1 veya 2'ye eşit olup olmadığının kontrolü yapılmaktadır. Programa 1 veya 2 dışında bir değer girildiğinde ekran "Girilen sayi değeri geçersiz" ifadesi yazdırılmaktadır. switch (s1){ case 1: printf("girilen sayi değeri: 1\n"); break; case 2: printf("girilen sayi değeri: 2\n"); break; default: printf("girilen sayi değeri gecersiz \n"); break; return 0;

«switch case» Yapısı #include <stdio.h> int main() { char karakter; printf("lutfen bir karakter giriniz:\n"); karakter = getchar(); switch (karakter) { case 'a': printf("a karakterini girdiniz\n"); break; case 'b': printf("b karakterini girdiniz\n"); break; default: printf("a veya b karakterlerinden birisini girmediniz\n"); break; return 0;

«switch case» Yapısı #include <stdio.h> int main() { char takim; printf("lutfen bir karakter (b, f, g) giriniz:\n"); takim= getchar(); switch (takim) { case 'f': printf("fenerbahce\n"); break; case 'b': printf("besiktas\n"); break; case 'g': printf("galatasaray\n"); break; default: printf("b,f,g karakterlerinden birisini girmediniz\n"); break; return 0;