Bölüm 7. Deyimler ve Atama ifadeleri ISBN

Benzer belgeler
Bölüm 7. İfadeler ve atamalar ISBN

İfadeler bir programlama dilinde hesaplamaları belirtmede temel araçtır. İfadelerin değerlendirmesini anlamak için,

Bölüm 5. Adlar(Names), Bağlamalar(Binding s),tip Kontrolleri (Type Checking), ve Etki Alanları ( Scopes) ISBN

Nesne Yönelimli Programlama

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

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

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

Konular. Hafta 5 Veri Tipleri (Devam) BLG339 PROGRAMLAMA DİLLERİ KAVRAMI

Java da Program Denetimi ve Operatörler

PROGRAMLAMAYA GİRİŞ. Öğr. Gör. Ayhan KOÇ. Kaynak: Algoritma Geliştirme ve Programlamaya Giriş, Dr. Fahri VATANSEVER, Seçkin Yay.

İsimler ve Kapsam. 24 Şubat Programlama Dilleri - Pamukkale Üniversitesi 1

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

Genel Programlama II

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

BIM Bahar Programlama Dilleri

Öğr. Gör. Serkan AKSU 1

OPERATÖRLER Alıştırmalar

BÖLÜM 3 OPERAT A ÖRLER

Bölüm 8. İfade -Seviyeli Kontrol Yapıları ISBN

Bölüm 8. İfade Seviyesindeki Kontrol Yapıları ISBN

Chapter 8. Komut düzeyi kontrol yapıları ISBN

Bağlama (Binding) Kavramı

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 2

Nesne Tabanlı 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

PASCAL PROGRAMLAMA DİLİ YAPISI

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

Ruby. Prof.Dr.Timur Karaçay Başkent Üniversitesi

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

Operatörler. 6.1 Operatör Nedir?

JAVASCRIPT JAVASCRIPT DİLİ

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

Bölüm 6. Veri Türleri ISBN

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

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

İsimler ve Kapsam. Hafta 4 Ders 2 BLG339 PROGRAMLAMA DİLLERİ KAVRAMI

Bölüm 3 Yapısal Programlama

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

Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı

2 PYTHON A GIRIŞ 13 PyCharm İle Python Projesi Oluşturma 15 Projenin Çalıştırılması 18 İlk Python Programımız 19 Açıklama Satırları 21

Dr. Fatih AY Tel: fatihay@fatihay.net

Bölüm 5. İsimler, Bağlama, Tür Kontrolü ve Kapsam(Etki Alanı) ISBN

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

C++ Dersi: Nesne Tabanlı Programlama 2. Baskı

Bölüm 9. Altprogramlar ISBN

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

C++ Operatörler (Operators)

BTP 207 İNTERNET PROGRAMCILIĞI I. Ders 8

Göstericiler (Pointers)

C Programlama Dilininin Basit Yapıları

PHP, nesne-yönelimli (object-oriented) bir dil olduğu için, nesne oluşturma imkânına ve bunların kullanılmasını sağlayan metodlara da sahiptir.

Bölüm 4 C de Program Kontrolü

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

NESNEYE YÖNELİK PROGRAMLAMA

enum bolumler{elektronik, insaat, bilgisayar, makine, gida};

Nesne Tabanlı Programlama

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

BİLGİSAYAR PROGRAMLAMAYA GİRİŞ

Pointer Kavramı. Veri Yapıları

Algoritma ve Akış Diyagramları

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

Ders 6. Bölüm 6: Veri Tipleri (devam)

mikroc Dili ile Mikrodenetleyici Programlama Ders Notları

Gereksiz Kodlar. burada if deyiminin else bölümüne gerek var mı? İfade doğruysa zaten fonksiyon geri dönüyor. Bu aşağıdakiyle tamamen eşdeğerdir:

Pointers (İşaretçiler)

MTK467 Nesneye Yönelik Programlama. Hafta 4 - Döngüler Zümra Kavafoğlu

BİLİŞİM TEKNOLOJİLERİ 6. SINIF DERS NOTLARI 2

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

Programlama Dilleri 3

Operator Aşırı Yükleme (Operator OverLoading)

Mantıksal İşlemler. 7.1 true, false, nil

Nesne Yönelimli Programlama

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

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

2 ALGORİTMA VE AKIŞ DİYAGRAMLARI

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

Bilgi ve İletişim Teknolojileri (JFM 102) Ders 10. LINUX OS (Programlama) BİLGİ & İLETİŞİM TEKNOLOJİLERİ GENEL BAKIŞ

BÖLÜM. İşleçler ve İfadeler. 3.2 İşleçler İşleç Nedir? Bölümün İçindekileri

BİLGİSAYAR PROGRAMLAMA MATLAB

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

JAVA DEĞİŞKEN VE OPERATÖRLER. M.İLKUÇAR - 1

10 LU SAYISAL SİSTEMİ İLE 2 Lİ SAYISAL SİSTEMİ ARASINDA ÇEVİRİM UYGULAMASI

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

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

EGE ÜNİVERSİTESİ EGE MYO MEKATRONİK PROGRAMI

5. PROGRAMLA DİLLERİ. 5.1 Giriş

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

Günümüz bilgi toplumunda bilgisayar, her alanda kendine yer edinmiş ve insana, bir çok işlemde yardımcı olarak büyük kolaylık sağlamaktadır.

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

Veri Yapıları ve Algoritmalar

PROGRAMLAMAYA GİRİŞ DERS 2

8. İŞARETCİLER (POINTERS)

BASİT C PROGRAMLARI Öğr.Gör.Dr. Mahmut YALÇIN

Bilgisayar Programlama MATLAB

Bilgisayarda Programlama. Temel Kavramlar

Bölüm 10. Altprogramların gerçeklenmesi ISBN

BIL1202 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ (Algoritma Geliştirmek, Satır Kod)

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

Çoktan Seçmeli Değerlendirme Soruları Akış Şemaları İle Algoritma Geliştirme Örnekleri Giriş 39 1.Gündelik Hayattan Algoritma Örnekleri 39 2.Say

Transkript:

Bölüm 7 Deyimler ve Atama ifadeleri ISBN 0-321-49362-1

Bölüm 7 Konuları Giriş Aritmetik deyimler Aşırı yüklenmiş operatörler Tip dönüşümleri İlişkisel ve mantıksal deyimler Kısa devre hesaplamalar(short-circuit Evaluation) Atama İfadeleri Karışık kip atamalar(mixed-mode) Wesley. All rights reserved. 1-2

Giriş Programlama dilinde hesaplamanın yapıldığı temel yapılar deyimlerdir. Deyimin nasıl hesaplandığını anlamak için, operatörlerin sırasını ve nasıl işlediğini bilmeye ihtiyaç vardır. Emirsel dillerin özü atama ifadelerinin baskın olmasıdır. Wesley. All rights reserved. 1-3

Aritmetik Deyimler Aritmetik hesaplama işlemi ilk programlama dillerinin temel amaçlarından biriydi. Aritmetik deyimler operatörler(işleç), işlenenler(operands),parantez ve fonksiyon çağrılarından oluşur. Wesley. All rights reserved. 1-4

Aritmetik Deyimler: Tasarım Konuları Aritmetik deyimler için tasarım konuları İşleç öncelik kuralları İşleçlerin birleşme kuralları İşleç hesaplamada sıra İşleç hesaplamadaki yan etkiler İşleç aşırı yükleme Kip birleştirme deyimleri(mode mixing expressions) Wesley. All rights reserved. 1-5

Aritmetik Deyimler: İşleçler(Operators) Birli işleçte(operator) tek işlenen olur Bir ikili işleçte iki işlenen olur Üçlü işleçte üç işlenen olur Wesley. All rights reserved. 1-6

Aritmetik Deyimler: İşleç Öncelik Kuralları İşleç öncelik kuralları komşu işleçlerden hangisinin önce hesaplamada kullanılacağını belirtir. Tipik öncelik seviyeleri parantezler Birli işleçler ** (dil destekliyorsa) *, / +, - Wesley. All rights reserved. 1-7

Aritmetik Deyimler: İşleç Birleşme Kuralları İşleç birleşme kuralları aynı seviyedeki işleçlerin hesaplamada kullanım sırasını belirtir. Tipik birleşme kuralları Soldan sağa, ** hariç, bu sağdan sola Bazen birli işleçler sağdan sola birleşime uğrarlar (örn, FORTRAN da) APL farklıdır; tüm işleçler eşit önceliğe sahiptir ve sağdan sola işlenirler. Öncelik ve birleşme kuralları parantezler kullanılarak değiştirilebilir. Wesley. All rights reserved. 1-8

Aritmetik Deyimler: Şartlı deyimler(conditional expressions) Şartlı deyimler C-temelli diller(örn., C, C++) örnek: average = (count == 0)? 0 : sum / count Aşağıdaki şekilde yazılmış gibi hesaplanır if (count == 0) average = 0 else average = sum /count Wesley. All rights reserved. 1-9

Aritmetik Deyimler: işleç hesaplanma sırası İşleç hesaplanma sırası 1. Değişkenler: bellek bölgesindeki değeri alır. 2. Sabitler: bazen bellek bölgesi değeri alır; bazen sabit makine dili komutu olabilir 3. Parantezlenmiş deyimler: tüm işleç ve işlenenleri önce yapılır. Wesley. All rights reserved. 1-10

Aritmetik Deyimler: Potansiyel yan etkiler Fonksiyonel yan etkiler: Fonksiyon bir çift taraflı parametreyi değiştirdiğinde yada yerel olmayan bir değişkeni değiştirdiğinde Fonksiyonel yan etkilerdeki problem Deyimde başvurulan fonksiyon işleçlerden birini değiştirdiğinde a = 10; /* fun parametresini değiştirsin varsayalım*/ b = a + fun(a); Wesley. All rights reserved. 1-11

Fonksiyonel yan etkiler İki mümkün çözüm 1. Dil tanımını yan etkileri yapmayacak şekilde yazmak Fonksiyonlarda çift taraflı parametreye izin verilmez Fonksiyonlarda yerel dışı değişkene izin verilmez. Avantaj: Bu çalışır! Dezavantaj: çift yönlü parametre ve yerel dışı değişken kullanımı esnekliğinin ortadan kalkması 1. Dil tanımını işleç işlenme sırasının sabit şekilde yapacak şekilde yazmak. Dezavantaj: bazı derleyici optimizasyonlarının sınırlar. Wesley. All rights reserved. 1-12

Aşırı yüklenmiş operatörler(işleçler) Bir işleci birden fazla amaç için kullanmaya operatör(işleç) aşırı yüklemesi denilir( operator overloading). Bazıları yaygındır(örn., int ve float için + ) Bazıları potansiyel hatadır(örn., C ve C++ daki *) Derleyicinin hata denetimini kaybetmesi Okunabilirliğin azalması Yeni sembol eklenerek sakınılabilir(örn.,pascal daki div integer bölmede kullanılır.) Wesley. All rights reserved. 1-13

Aşırı yüklenmiş operatörler(işleçler) C++ ve Ada kullanıcı tanımlı işleç aşırı yüklemeye izin verir. Potansiyel problemler: Kullanıcılar anlamsız işleçler tanımlayabilir. İşleçler anlamlı olsalar dahi okunabilirlik gidebilir. Wesley. All rights reserved. 1-14

Tip Dönüşümleri(Type Conversions) Daraltma dönüşümü(narrowing conversion) bir nesneyi asıl halinin sığmadığı daha dar bir kalıba koyma,örn float u int e dönüştürme Genişletme dönüşümü (widening conversion) nesneyiş kendisinin tamamen sığabildiği daha büyük bir kalıba koyma örn., int -> float Wesley. All rights reserved. 1-15

Tip Dönüşümleri: Karışık Kip(Mixed Mode) Birkarışık kip deyimi(mixed-mode expression) farklı tiplerin işleçlerini(operator) içerir. Bir zorlama(coercion) dolaylı yapılan tip dönüşümüdür. Zorlamanın dezavantajları: Derleyicinin tip hatası tespiti yeteneğini azaltır. Birçok dilde, tüm sayısal tipler ifadelerde zorlamalara tabi tutulurlar, genelde genişleme dönüşümleri yapılır. Ada da, ifadelerde neredeyse hiç zorlama yoktur. Wesley. All rights reserved. 1-16

Açık Tip Dönüşümleri Açık tip dönüşümleri C gibi dillerde (Kalıba dökme)casting adlanır. Örnek C: (int) angle Ada: Float (sum) Ada nın sözdizimi fonksiyon çağrımına benzer. Wesley. All rights reserved. 1-17

Tip dönüşümleri: Deyimlerdeki hatalar Neden oldukları Aritmetikte doğal sınırlamalar örn., sıfıra bölme Bilgisayar aritmetiğinde sınırlamalar.örn. taşma(overflow) Çalışma zamanı sistemlerde sıklıkla ihmal edilirler. Wesley. All rights reserved. 1-18

İlişkisel ve Mantıksal Deyimler(Relational and Boolean Expressions) İlişkisel Deyimler Farklı tipler için ilişkisel işleç ve işlenenleri kullanma Bazı mantıksal temsillerin hesaplanması Farklı dillerde farklı semboller kullanılır.(!=, /=,.NE., <>, #) Wesley. All rights reserved. 1-19

İlişkisel ve Mantıksal Deyimler Mantıksal Deyimler İşleçler mantıksal sonuçta mantıksaldır. Örnek işleçler FORTRAN 77 FORTRAN 90 C Ada.AND. and && and.or. or or.not. not! not xor Wesley. All rights reserved. 1-20

İlişkisel ve Mantıksal Deyimler: C de mantıksal tip yoktur C de mantıksal(boolean) tip yoktur yanlış(false) için int 0 değerini kullanır ve sıfır olmayan tüm sayılar doğru(true) kabul edilir. C deyimlerindeki gariplik yasaldır: a < b < c fakat sonuç beklediğiniz gibi değildir. Sol işleç işlenir, 0 yada 1 üretir. Hesaplama sonucu dağa sonra sağdakiyle karşılaştırılır.(örn., c) Wesley. All rights reserved. 1-21

İlişkisel ve Mantıksal Deyimler: İşleç Önceliği C-temelli işleçlerdeki öncelik prefix ++, -- unary +, -, prefix ++, --,! *,/,% binary +, - <, >, <=, >= =,!= && Wesley. All rights reserved. 1-22

Kısa devre hesaplama(short Circuit Evaluation) Tüm işleçler hesaplanmadan sonucun belirlenebildiği deyimlerdir. örnek: (13*a) * (b/13 1) eğer a sınıfrsa,(b/13-1) hesaplamaya gerek yoktur. Kısa devre olmayan hesaplamadaki sorun index = 1; while (index <= length) && (LIST[index]!= value) index++; index=length olduğunda, LIST [index] indeksleme sorunu oluşturur ( LIST de length -1 eleman olduğunu varsayıyoruz) Wesley. All rights reserved. 1-23

Kısa devre hesaplama C, C++, ve Java: Mantıksal işleçler(boolean operators) (&& ve ) için kısa devre hesaplama kullanır, ayrıca kısa devre hesaplamanın yapılmadığı bitsel işleçlerede olanak verirler. (& ve ) Ada: programcılar kısa devre hesaplama yapılıp yapılmayacağına izin verebilir(kısa devre and then ile belirtilebilir veya or else) Kısa devre hesaplama deyimlerde yan etkilere yol açabilir. örn. (a > b) (b++ / 3) Wesley. All rights reserved. 1-24

Atama İfadeleri Genel sözdizimi <target_var> <assign_operator> <expression> Atama işleci = FORTRAN, BASIC, PL/I, C, C++, Java := ALGOLs, Pascal, Ada = işleci aşırı yüklenirse problem olabilir. Wesley. All rights reserved. 1-25

Atama ifadeleri: Şartlı hedefler Şartlı hedefler (C, C++, and Java) (flag)? total : subtotal = 0 bu aşağıdakiyle eşleniktir. if (flag) total = 0 else subtotal = 0 Wesley. All rights reserved. 1-26

Atama İfadeleri: Bileşik İşleçler(compound operators) Sıklıkla ihtiyaç duyulan bir deyim yerine kısa yoldur. ALGOL ile geldi; C tarafından benimsendi Örnek a = a + b şöyle yazılır a += b Wesley. All rights reserved. 1-27

Atama ifadeleri: tekil atama işleçleri C temelli dillerde tekil arttırma ve azaltma işleçleri atamalar ile kullanılabilir. Örnekler sum = ++count sum = count++ count++ -count++ Wesley. All rights reserved. 1-28

Deyim olarak atama C, C++, ve Java, da atama ifadesi bir sonuç üretir ve işlenen(operand) gibi kullanılabilir. Örnek: while ((ch = getchar())!= EOF){ } ch = getchar() yapılır; sonuç (ch ye atanır) while ifadeyi için karşılaştırma koşulu olarak kullanılır. Wesley. All rights reserved. 1-29

Karışık kipli atama Atama ifadeleri karışık kipli olabilir örneğin int a, b; float c; c = a / b; Pascal da, integer değişkenler real değişkenlere atanır, fakat real değişkenler integer lara atanmaz Java da, sadece genişletme zorlaması atamalarda yapılır. Ada da, atamada zorlama yoktur. Wesley. All rights reserved. 1-30