Bölüm 9. Altprogramlar ISBN 0-321-49362-1



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

Bölüm 11. Soyut veri tipleri ve kapsülleme kavramları ISBN

Bölüm 9. Altprogramlar ISBN

Bölüm 9. Alt Programlar ISBN

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

Bölüm 5. İsimler, Bağlamalar, Tip Kontrolü, Etki Alanları ISBN

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

Bölüm 10. Altprogramları Uygulamak

Bölüm 12. Nesne yönelimli programlama desteği

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

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

Yrd. Doç. Dr. Caner ÖZCAN

Yrd. Doç. Dr. Caner ÖZCAN

Önemli noktalar. Paradigma Nesnelere Giriş Mesajlar / Ara bağlantılar Bilgi Gizleme (Information Hiding ) Sınıflar(Classes) Kalıtım/Inheritance

Bölüm1. İlk Bilgiler ISBN

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

FONKSİYONLAR. Gerçek hayattaki problemlerin çözümü için geliştirilen programlar çok büyük boyutlardadır.

ALGORİTMA VE PROGRAMLAMA II

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

Pointer Kavramı. Veri Yapıları

Bölüm 6. Veri Tipleri ISBN

11- FONKSİYONLAR (FUNCTIONS)

BLM 112- Programlama Dilleri II. Hafta 5 İşaretçiler (Pointers)

5.HAFTA. Sınıf ve Nesne Kavramı, Metot Oluşturma, Kurucu Metot, this Deyimi

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

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-12 Fonksiyonlar. Yrd. Doç. Dr. Ümit ATİLA

1 PROGRAMLAMAYA GİRİŞ

Göstericiler (Pointers)

BTEP243 Ders 3. class Yazım Kuralı:

7- Turbo Pascal Programlamada Alt Programlar (Procedure)

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

Öğr. Gör. Serkan AKSU 1

Hafta 13 Fonksiyonlar

Sunum İçeriği. Programlamaya Giriş

10/17/2007 Nesneye Yonelik Programlama 3.1

Fonksiyon nedir? <?php $deger = pow(5,3); //625 döndürür echo $deger; echo "<br>", pow(5,3);

VERİ TABANI ve YÖNETİMİ

PROGRAMLAMAYA GİRİŞ FONKSİYONLAR

NESNEYE YÖNELİK PROGRAMLAMA

ALGORİTMA VE PROGRAMLAMA I

sayi=3 harf=a reelsayi=8.72 Bellek durumu 5. İşaretç iler (pointers)

JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ

Java da Soyutlama ( Abstraction ) ve Çok-biçimlilik ( Polymorphism )

Bağlama (Binding) Kavramı

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

ALGORİTMA VE PROGRAMLAMA I

Pointers (İşaretçiler)

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

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

1 RUBY HAKINDA 1 Ruby nin Gelişim Hikayesi 1 Neden Ruby? 1 Neden Bu Kadar Popüler? 2

C Programlama Dilininin Basit Yapıları

YZM 2116 Veri Yapıları

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

Yazılım Nedir? 2. Yazılımın Tarihçesi 3. Yazılım Grupları 4 Sistem Yazılımları 4 Kullanıcı Yazılımları 5. Yazılımın Önemi 6

Dr. Fatih AY Tel: fatihay@fatihay.net

Sınıflar ve Yapılar Arasındaki Farklılıklar. Değer ve Referans Türde Olan Aktarımlar

Dr. Fatih AY Tel: fatihay@fatihay.net

BM-311 Bilgisayar Mimarisi

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

TESİ. indeks. söylenebilir?? bir ilişkidir d) Hiçbiri. veya somutlaştırılmış. düzeyidir? sağlayabilir? sına. d) Hepsi. olabilir? c) Verilerin d) Hepsi

ORACLE DA KÜRSÖRLER. Gerekli sistem değişkenleri

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

BİL-142 Bilgisayar Programlama II

ELN1001 BİLGİSAYAR PROGRAMLAMA I

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

C++ Dersi: Nesne Tabanlı Programlama

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

Bölüm 15. Fonksiyonel Programlama Dilleri ISBN

BMÜ-111 Algoritma ve Programlama. Bölüm 5. Tek Boyutlu Diziler

Fonksiyonlar istenilen deger tipinde dönüs yapabilir. INT, VARCHAR deger döndürebileceğiniz gibi bir tablo da döndürebilirsiniz.

ALT PROGRAMLAR BÖLÜM Giriş Alt Programlar Hakkında Genel Bilgiler

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

NESNEYE YÖNELİK PROGRAMLAMA

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

Javascript. 1) Notepad++ aşağıdaki kodları yazıp deneme.html olarak kaydedelim. 2) Biraz önceki sayfa sadece html kodların içeriyordu.

Mühendislik Fakültesi Elektrik-Elektronik Mühendisliği C Programlama 7. Bölüm Metot Tanımlama ve Kullanma

C++ Dersi: Nesne Tabanlı Programlama

OMÜ HAVACILIK VE UZAY BİLİMLERİ FAKÜLTESİ METEOROLOJİ MÜHENDİSLİĞİ BÖLÜMÜ MET103 BİLGİSAYAR PROGRAMLAMA I BÜTÜNLEME SINAVI

İlk Konsol Uygulamamız 2 İlk Windows Uygulamamız 9.Net Framework Yapısı 18 Neler Öğrendik 19. Veri Tipleri 24 Tanımlı Veri Tipleri 27 Basit Tipler 28

JAVADA METOTLAR. BMÜ-111 Algoritma ve Programlama. Yrd. Doç. Dr. İlhan AYDIN

Timer İle arka plan renk değişimi

Nesne tabanlı programlama nesneleri kullanan programlamayı içerir. Bir nesne farklı olarak tanımlanabilen gerçek dünyadaki bir varlıktır.

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

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

String Sınıfını Yönetmek

Doğu Akdeniz Üniversitesi Bilgisayar Mühendisliği Bölümü. BLGM 318 Ara Sınavı Đlkbahar Dönemi 13 Nisan Ad, Soyad Öğrenci No.

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

BMH-303 Nesneye Yönelik Programlama

KULLANICI TANIMLI FONKSİYONLAR (Devam)

Nesneye Dayalı Programlama

Metotlar. d e f metot_adı [ ( [ arg [= d e f a u l t ] ]... [, arg [, &expr ] ] ) ] deyim ( l e r ) end

Genel Programlama II

C++ Dersi: Nesne Tabanlı Programlama

HSancak Nesne Tabanlı Programlama I Ders Notları

Zeki Gülen Marmara Üniversitesi Sosyal Bilimler Enstitüsü, Gazetecilik Ana Bilim Dalı, Bilişim

BLM210 HAFTA 10 SUBPROGRAMS (ALTPROGRAMLAR)

Nesne Tabanlı Programlama

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

BLG 1306 Temel Bilgisayar Programlama

C# nedir,.net Framework nedir?

Transkript:

Bölüm 9 Altprogramlar ISBN 0-321-49362-1

9. Bölüm konuları Giriş Altprogram temelleri Yerel atıf ortamları (local referencing environments) Parametre geçme yöntemleri Altprogram olan parametreler Çok anlamlı (overloaded) altprogramlar Jenerik altrpogramlar Kullanıcı-tanımlı çok anlamlı operatörler Korutinler (coroutines) Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-2

Giriş İki temel soyutlama Süreç soyutlama (process abstraction) İlk zamanlardan beri var Veri soyutlama (data abstraction) 1980lerden beri var Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-3

Altprogram temelleri Her altprogramın tek giriş noktası var Çağıran program, çağrılan program çalışırken askıya alınır Çağrılanın çalışması bittiğinde, kontrol her zaman onu çağırana geri döner. Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-4

Temel tanımlar Altprogram tanımı altprogramın arayüzünü ve yaptığı işleri tanımlar Altprogram çağrılması altprogramın çalısması isteğidir Altprogram başlığı tanımın ilk kısmıdır. Altprogramın adını, ne tür altprogram olduğunu (prosedür/fonksiyon) ve formel parametrelerini içerir Altprogramın parametre profili (imzası) parametrelerin sayısı, sırası ve tiplerinden oluşur Altprogramın protokolü altprogramın profilidir. Altprogram eğer bir fonksiyon ise, o zaman profile fonksiyonun dönüş tipi de dahil olur. Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-5

Temel tanımlar Altprogram deklarasyonu altprogramın protokolünü içerir (gövde yok). C ve C++ dillerinde fonksiyon deklarasyonunun adı: prototip Formel parametre (formal parameter) altprogam başlığında olup gövdede kullanılan bir kukla değişkendir (dummy variable) Asıl parametre (actual parameter) altprogram çağrılmasında kullanılan bir değer veya adrestir Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-6

Asıl/formel parametre ilişkilendirmesi Konuma bağlı Birinci asıl birinci formele, ikinci asıl ikinci formele vs. bağlanır Anahtar kelime Asıl parametrenin hangi formel parametreye bağlanacağını çağırma anında belirtiriz. Avantajları: Parametreleri istediğimiz sırada verebiliriz Parametre eşleştirme hataları olmaz Dezavantajı: Formel parametre isimlerinin billinmesi gerekir Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-7

Formel parametre varsayılan değerleri Bazı dillerde (ör: C++, Python, Ruby, Ada, PHP), formel parametrelerin varsayılan değerleri olabilir. C++ dilinde parametreler sıralı olduğundan varsayılan değerler en sona konur Değişen sayıda parametre - C# metodlarının ayni tipte olamaları koşulu ile değişen sayıda parametreleri olabilir Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-8

Prosedürler ve fonksiyonlar İki tür altprogram var Prosedürler : parametresi olabilen komutlar topluluğu Fonksiyonlar prosedür gibi, ancak geri verdikleri değer (return value) var. Prensipte yan etkileri olmamalı Pratikte yan etkileri var Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-9

Lokal atıf ortamları (referencing environments) Lokal değişkenler yığıt-dinamik olabilir - Avantajları Özyinelemeyi destekler Alt programlar yığıt üzerinde ayni yeri kullanabilir Dezavantajları Yer alma-yer bırakma (allocation/de-allocation), ilkleme zamanı Dolaylı adresleme Altprogramlar tarihçeye duyarlı değil Lokal değişkenler statik olabilir Avantajları ve dezavantajları yığıt-dinamiğin tersi Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-10

Parametre geçmenin semantik modelleri Gir modu (in mode) Çık modu (out mode) Girçık modu (inout mode) Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-11

Parametre geçmenin semantik modelleri... Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-12

Değer ile geçiş (Gir modu) (Pass by value) Asıl parametrenin değeri formel parametreyi ilklemek için kullanılır Normalde kopyalama yönemi ile yapılır Fonksiyon gövdesinde formel parametre bir lokal değişken gibi görev yapar Kopyalamanın dezavantajları: Ek hafıza gerektirir Kopyalama zaman alabilir (büyük nesneler için) Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-13

Netice ile geçiş (Çık modu) Asıl parametre bir değişken olmalıdır. Altprograma bir değer verilmez. Formel parametre yerel değişken gibi görev yapar. Kontrol çağırana dönmeden hemen önce, formel parametrenin son değeri asıl parametrenin içine kopyalanır. Fazladan deplama ve zaman ihtiyacı Olası sorun: sub(p1, p1); en son hangi formel parametre kopyalanırsa, o değer p1 içindeki değer olur. Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-14

Değer-netice ile geçiş (girçık modu) Değer ve netice ile geçişin birleşimi Formel parametrelerin hafızada yeri var Altprogram çağrıldığında asıl parametreyi formel parametreye kopyala Altprogram geri dönerken formel parametreyi asıl parametreye geri kopyala Dezavantajları Iki kere kopyala İki kere sakla Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-15

Referans ile geçiş (girçık modu) Asıl parametrenin adresini geç Formel parametreye yapılan herhangi bir değişiklik anında asıl parametreye yansır Advantage: Verimlilik (kopyalama ve çifte yer ayırma yok) Dezavantajı Ayni yere birden çok şekilde erişim (aliasing) Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-16

İsim ile geçiş (girçık modu) Metinsel yerike koyma Makro gibi Örnek: i 1 den n e kadar olacak şekilde (x i i) toplamını bul. Bu işi yapabilecek, Sum(i, 1, n, x[i]*i) diye çağrılabilecek bir altprogam yazalım. Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-17

İsim ile geçiş (girçık modu)... real procedure Sum(j, lo, hi, Ej); value lo, hi; integer j, lo, hi; real Ej; begin real S; S := 0; for j := lo step 1 until hi do S := S + Ej; Sum := S end; Çağırma: Sum(i, 1, n, x[i]*i) Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-18

İsim ile geçiş problemi procedure swap (a, b); integer a, b, temp; begin temp := a; a := b; b:= temp end; swap(i, x[i]) olarak çağrılmanın etkisi: temp := i; i := x[i]; x[i] := temp Doğru çalışmaz! Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-19

Parametre geçme yöntemleri gerçeklenmesi Çoğu dilde sistem çalışma-zamanı yığıtı aracılığı ile Referans ile geçiş en kolay: yığıt üzerine adres koy Referans ve değer-netice yöntemlerinde olası hata: asıl parametrenin değişken yerine bir değer olması Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-20

Bazı ana dillerin parametre geçme yöntemleri C Değer ile geçiş C++ Değer ile geçiş + Reference tipi aracılığı ile referans ile geçiş (ör: int f(int & x){.} ) Java Tüm parametreler değer ile geçilir Nesne parametreler gerçekte nesne işaretçisidirler, onun için işaretçi değer ile geçilir Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-21

Parametrelerin tip kontrolü Güvenirlik için önemli FORTRAN 77 ve orijinal C: yok Pascal, FORTRAN 90, Java, ve Ada: her zaman yapılır ANSI C ve C++: kullanıcı tercihine kalmış Prototipler Yenice dillerde (Perl, JavaScript, PHP) yok Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-22

Altporgram ismi olan parametreler: referans ortamı Sığ bağlama: Parametre olarak geçilen altprogramın çağrıldığı yerdeki ortam - Dinamik etki alanlı diller için uygun Derin bağlama: Parametre olarak geçilen altprogramın tanımladığı yerdeki ortam - Statik etki alanlı diller için uygun Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-23

Altporgram ismi olan parametreler: referans ortamı Özel amaçlı (ad hoc) bağlama: Parametre olarak geçilen altprogramın parametre olarak geçildiği yerdeki ortam Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-24

Çok amaçlı (overloaded) altprogram Ayni referans ortamında ayni isimde birden çok altprogram Her versiyonun protrokolü farklı olmalı C++, Java, C#, ve Ada dillerinde önceden tanımlı çok amaçlı altprogramlar var Ada dilinde, fonksiyonların geri dönüş tipleri fornkiyonları ayırt etmek için kullanılabilirler, böylece iki çok amaçlı fonksiyonun parametre tipleri ayni olabilir. Ada, Java, C++, ve C# kullanıcı-tanımlı çok amaçlı altprogramlara izin verirler. Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-25

Jenerik altprogramlar Jenerik (polimorfik) altrpogramlar her çağrıldıklarında değişik tipte parametreler alabilirler Çok amaçlı (overloaded) altprogramlar ihtiyaca göre polimorfizm sağlarlar (ad hoc polymorphism) Bir altprogramda altprogramın parametrelerinin tipini tanımlayan tip ifadelerinde kullanılan ve yine altrpograma parametre olarak verilen bir tip değişkeni varsa, buna parametrik polimorfizm denir. - Dinamik tip bağlamanın derleme zamanı versiyonu Ada dilinde, jenerik altprogramların tipleri açık olarak belirtilir C++ dilinde kullanıldığı ortmabdan tipler belli olur Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-26

Jenerik altprogramlar... Java 5.0 Jenerik parametreler sınıf olmalı Jenerik paramtrele olarak geçilebilecek sınıflar üzerine sınırlamalar konulabilir Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-27

Parametrik polimorfizm örneği: C++ template <class Type> Type max(type first, Type second) { return first > second? first : second; } Yukarıdaki kalıp, > operatörünün tanımlı olduğu her tip için geçerlidir. Örneğin, aşağıdaki tanım otomatik olarak yapılır. int max (int first, int second) { return first > second? first : second; } Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-28

Fonksiyonlar için tasarım problemleri Yan etkilere izin var mı? Yan etkileri azaltmak için, parametreler herzaman gir modunda almalı (Ada daki gibi) Hangi tip geri dönüş tipine izin var? Birçok komutlu dil geri dönüş tipini sınırlar C dili, dizi ve fonksiyon haricindekilere izin verir C++ C gibidir, ama kullanıcı-tanımlı tiplere de izin verir Ada altprogramları, her türlü tipi döndürebilir (altprogramlar tip değildir, dolayısı ile döndürülemezler) Java ve C# methodları her türlü tipi döndürebilir (metodlar tip değildir, dolayısı ile döndürülemezler) Python ve Ruby de metodlar birinci sınıf varlıklar olduklarından, döndürülebilirler Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-29

Kullanıcı-tanımlı çok amaçlı operatötler Ada, C++, Python, ve Ruby dillerinde operatörler çok amaçlı (overloaded) olacak şekilde yüklenebilirler. Ada örneği function "*" (A,B: in Vec_Type): return Integer is Sum: Integer := 0; begin for Index in A'range loop Sum := Sum + A(Index) * B(Index) end loop return sum; end "*"; c = a * b; -- a, b, c Vec_Type tipinde Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-30

Korutinler Çok giriş noktası olan ve bu giriş noktalarını kendi kontrol eden altprogram Ayni zamanda simetrik kontrol olarak bilinir. Çağıran ve çağrılan oldukça eşit Korutin çağrılmasına tekrar-başla (resume) denir İlk tekrar-başla korutinin başından onu başlatır. Daha sonrakiler kaldığı yerden devam ettirir. Korutinle birbirlerini tekrar-başlatırlar (sonsuza kadar da olabilir) Koruntinler program ünitelerinin yalancı-paralel (quasi-concurrent ) şekilde çağrılmalarını sağlar. Çalışmaları dönüşümlüdür ama örtüşmez. Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-31

Korutin görseli: olası çalışma kontrolü Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-32

Korutin görseli: olası çalışma kontrolü Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-33

Korutin görseli: olası çalışma kontrolü (döngülü) Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-34

Özet Altprogram tanımı, altprogram tarafından temsil edilen faaliyetleri anlatır Altprogramlar fonksiyon veya prosedür olabilir. Lokal değişkenler yığıt-dinamik veya statik olabilir Parametre geçmenin üç kipi (mode): gir, çık, girçık Bazı dillerde oparatörler çok amaçlı olabilir (overloaded) Altprogramlar jenerik olabilir Korutin, çok giriş noktası olabilen bir altprogram türüdür. Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-35