Bölüm 9. Altprogramlar ISBN

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

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

Bölüm 9. Altprogramlar ISBN

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

7- Turbo Pascal Programlamada Alt Programlar (Procedure)

Bölüm 10. Altprogramları Uygulamak

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

PROGRAMLAMAYA GİRİŞ FONKSİYONLAR

ALGORİTMA VE PROGRAMLAMA I

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

ALGORİTMA VE PROGRAMLAMA I

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

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

ALGORİTMA VE PROGRAMLAMA II

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

Yrd. Doç. Dr. Caner ÖZCAN

Yrd. Doç. Dr. Caner ÖZCAN

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

Pointer Kavramı. Veri Yapıları

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

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

11- FONKSİYONLAR (FUNCTIONS)

Göstericiler (Pointers)

Hafta 13 Fonksiyonlar

HSancak Nesne Tabanlı Programlama I Ders Notları

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

ELN1001 BİLGİSAYAR PROGRAMLAMA I

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

PROGRAMLAMAYA GİRİŞ DERS 2

Sunum İçeriği. Programlamaya Giriş

JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ

BİLG Dr. Mustafa T. Babagil 1

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 2

ANA SINIF TÜRETİLEN BİRİNCİ SINIF TÜRETİLEN İKİNCİ SINIF

NESNEYE YÖNELİK PROGRAMLAMA

BİL-142 Bilgisayar Programlama II

Fonksiyonlar (Altprogram)

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

Alt programlar- Deyim Fonksiyonları

BM102 BİLGİSAYAR PROGRAMLAMA II LABORATUVAR UYGULAMALARI. 3Hafta

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

ALGORİTMA VE PROGRAMLAMA II

Fonksiyonlar -Genel Test- A

C++ Dersi: Nesne Tabanlı Programlama

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

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

C++ Dersi: Nesne Tabanlı Programlama

ÜNİTE. NESNE TABANLI PROGRAMLAMA I Okt. Mustafa AKBUĞA İÇİNDEKİLER HEDEFLER METOTLAR

C++ Dersi: Nesne Tabanlı Programlama

Bir C programı C fonksiyonlarından oluşur. Bunlar arasında main() adı verilen ana fonksiyon daima olmalıdır. C fonksiyonları programı oluşturan

1 PROGRAMLAMAYA GİRİŞ

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

NESNEYE YÖNELİK PROGRAMLAMA

Özyineleme (Recursion)

10/17/2007 Nesneye Yonelik Programlama 3.1

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

Sorgudan elde edilen değerin değişkenlere aktarılmasını sağlar. Sorgudan tek satır dönmesi gerekir. Çok satır dönerse hata verir.

VERİ TABANI ve YÖNETİMİ

Öğr. Gör. Serkan AKSU 1

C Programlama Dilininin Basit Yapıları

program uc_hata implicit none integer : x(5),i

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

C++ Dersi: Nesne Tabanlı Programlama

Dr. Fatih AY Tel:

C# Metotlar ve Metot Tanımlama

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

Fonksiyonlar. Yrd.Doç.Dr.Bülent Çobanoğlu

Nesne Yönelimli Programlama

Dr. Fatih AY Tel: fatihay@fatihay.net

Üst düzey dillerden biri ile yazılmış olan bir programı, makine diline çeviren programa derleyici denir. C++ da böyle bir derleyicidir.

Algoritma ve Akış Diyagramları

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

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

Programlama Dilleri 1. Ders 5: Göstericiler

Lambda İfadeleri (Lambda Expressions)

C++ Dersi: Nesne Tabanlı Programlama

BİLDİRİM, TANIMLAMA, DEĞİŞMEZLER ve İŞLEVLER

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

Programlama Dili Prensipleri. Lab Notları 8 ve 9

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

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

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

Pointers (İşaretçiler)

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

C PROGRAMLAMA D İ L İ

C de Detaylı Üs Alma Programı. C# Dilinde Metot Tanımlama ve Yazdırma

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

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

Fonksiyonlar - Functions. Örnek. Örneğin. C dilinde 5/13/2011. ENF-102 Jeoloji

Nesne Yönelimli Programlama

SAKLI YORDAM (Stored Procedure) Sibel Somyürek

Ders 8: Metotlar. barisgokce.com

10.DERS Yazılım Gerçekleştirme

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

ENF102 TEMEL BİLGİSAYAR BİLİMLERİ VE C/ C++ PROGRAMLAMA DİLİ. Gazi Üniversitesi Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü

Linux Assembly Programlamaya Giriş

STORED PROCEDURE LER (Saklı Yordamlar)

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

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

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

Transkript:

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

Giriş Bu bölümde, programlarda sıkça kullanılan işlemlerin bir araya gruplanması ile oluşturulan altprogramlar incelenecektir. Altprogramlar sayesinde bir programda birden çok kez gereksinim duyulan kod bölümleri programda bir kez yer alır ve gerekince yeniden kullanılır. Bölüm tamamlandığında, Altprogramların Genel Özellikleri, Parametre Aktarım Yöntemleri, Etkinlik Kayıtları ve Çeşitli Programlama Dillerinde Uygulanan Yaklaşımlar öğrenilmiş olacaktır.

Altprogram Nedir? Programlama dillerinde her bir modülün (alt parça) bağımsız olarak ele alınmasını sağlayan ve alt program adı verilen birimler tanımlanır. Altprogramlar büyük ve karmaşık problemin çözümünde yapısal programlamanın etkin kullanımı için gerekli temel taşlarındandır. Altprogramlar bir kere yazılır ve program içerisinde bir yada daha çok yerde çağrılarak kullanılır. Altprogramlar ile işlev soyutlaması amaçlanır.

Neden Altprogram? Program kodlarının gereksiz yere uzaması önlenir. Programın tasarlanmasını kolaylaştırır ve okunulabilirliğini artırır. Büyük bir programın, daha küçük ve yazılması daha kolay fonksiyonel parçalara bölünür. Ekip çalışması Altprogramlar birden çok uygulama arasında paylaşılabilir.

Altprogram Yapısı Ana Program kodu Altprogram çağrım deyimi Ana Program kodu Program kodu call prog1 (a,b,c) Altprogram Başlığı Altprogram ismini, parametreler listesini (formal parametreler) ve varsa altprogramın döndürdüğü değertipini bildirir. Lokal değişkenler Altprogramda geçerli değişkenler Deyimler Altprogramda tanımlı deyimler Altprogram sonu Altprogramın çalışması bittikten sonra kontrol çağrıldığı noktaya geçer. call:çağrım deyimi prog1:altprogram ismi a,b,c: gerçek parametre

Altprogram Çağırma Bir altprogram çağrımı gerçekleşince, etkin olan program birimindeki komutların çalışması durdurulur ve altprogram etkin duruma geçer. Altprogram gövdesindeki komutlar çalıştırıldıktan sonra etkinlik, yeniden çağrımın yapıldığı program birimine geçirilir ve altprogram çağrım deyimini izleyen ilk deyim etkin olur

Altprogram Yapısı (devam)

Altprogram Yapısı (devam) Bir altprogram bir fonksiyon ise, parametre profiline ek olarak fonksiyonun sonuç değerinin dönüş tipini de içerir ve bu bilgiye altprogram protokolü adı verilir. C programlama dilinde, altprogramların tanımlandığı deyimler yer alır. Bu deyimlerde altprogramların parametre tipleri belirtilir ve bu deyimlere prototip (prototype) adı verilir. Bir altprogram, bir yordam veya bir fonksiyon olabilir İki altprogram türü arasındaki fark, fonksiyonların çağıran program birimine bir sonuç değeri döndürmelerinin şart olmasıdır.

Çeşitli Dillerde Altprogramlar Yordamlar, Pascal ve Ada'da procedure anahtar kelimesi ile belirtilirler. C'de yordamların belirtilmesi için özel bir anahtar kelime kullanılmaz. Çoğu popüler imperative dilde hem fonksiyonlar hem de yordamlar bulunur. C ve C++'da sadece fonksiyonlar yer alırsa da, bu fonksiyonlar yordamların işlevlerini gerçekleştirebilirler. FORTRAN'da genel özellikleri diğer dillerdeki yordamlara benzer olmakla birlikte, yordamlara SUBROUTINE ismi verilir.

Parametre İlişkilendirme Gerçek parametreler ile resmi parametrelerin ilişkilendirilmesi için kullanılan iki yöntem: konumsal ve anahtar kelime parametre yöntemleridir. Çağrım deyiminde, altprogramın ismine ek olarak, yordamın resmi parametreleriyle eşleştirilecek gerçek (actual) parametreler de yer alır.

Konumsal Parametre İlişkilendirme Eğer bir yordam çağrımında gerçek parametreler ile resmi parametreler arasındaki bağlama, parametrelerin çağrım deyimindeki ve yordam başlığındaki konumuna göre yapılıyorsa, bu parametrelere konumsal (positional) parametre adı verilir. Birçok programlama dilinde uygulanan bu yöntem, parametre sayısı az olduğu zaman kullanışlıdır.

Konumsal Parametre İlişkilendirme Aşağıda görüldüğü gibi bir çağrım deyimi ile etkin duruma geçen ortalama yordamında, c resmi parametresi, a gerçek parametresi ile; d resmi parametresi, b gerçek parametresi ile bağlanıyorsa, konumsal parametreler yaklaşımı uygulanmıştır.

Anahtar Parametre İlişkilendirme Gerçek ve resmi parametreler arasındaki bağlamayı konuma göre belirlemek yerine, her iki parametrenin de ismini belirterek gösterme, anahtar kelime parametre yöntemi olarak adlandırılır. Bu durumda çağırım deyiminde, hem resmi, hem de gerçek parametrelerin isimleri belirtilir. Anahtar kelime parametre yöntemi, parametre sayısının çok olduğu durumda yararlı bir yöntemdir. Ada ve FORTRAN 90'da hem anahtar kelime hem de konumsal parametreler yöntemi kullanılabilmektedir Call (toplam alttoplam, liste dizi, gelir kazanc);

Fonksiyon Örnekleri

Parametre Aktarımı Bir yordam etkin duruma getirilirken, çağrım deyimindeki gerçek parametreler ile yordamın resmi parametrelerine farklı değerler aktarılabilir. Gerçek parametreler yordamlara aktarılacak değerleri gösterdikleri için, değişken, sabit veya ifade olabilir. Resmi parametreler ise bu değerleri tutacak bellek yerlerini gösterdikleri için değişken olmak durumundadır. Altprogramlarda yer alan parametreler üç modda bulunabilir: in mod out mod in-out mod

Parametre Aktarımı

Parametre Aktarım Yöntemleri Programlama dilleri tarafından kullanılan beş farklı parametre aktarım yöntemi vardır: Değer ile çağırma (Call by value) Sonuç ile çağırma (Call by result) Değer ve sonuç ile çağırma (Call by value-result) Başvuru ile çağırma (Call by reference) İsim ile çağırma (Call by name) Değer ile çağırma, sonuç ile çağırma, değer ve sonuç ile çağırma yöntemlerinde, gerçek ve resmi parametreler arasındaki veri fiziksel olarak kopyalanarak, başvuru ile çağırma yönteminde ise veri yerine verinin adresi aktarılmaktadır.

Değer ile Çağırma Bu yöntemde formal parametre, gerçek parametrenin değeriyle ilklendikten sonra, altprogramda yerel bir değişken olarak değerlendirilir Sadece gerçek parametreden formal parametreye değer geçişi olduğu için en güvenilir parametre aktarım yöntemidir void f(int n) { n++;} int main() { int x = 2; f(x); cout << x; } //sonuç 2

Sonuç ile Çağırma Bu yöntemde çağırım deyimi ile altprograma bir değer aktarılmazken, gerçek bir parametreye karşı gelen formal parametrenin değeri, altprogram sonunda, denetim yeniden çağıran programa geçmeden önce, gerçek parametreyi gösteren değişkene aktarılır. (gerçek parametre değişken olmalı). Gerçek parametreye karşı gelen resmi parametre, altprogramın çalışması süresince yerel değişkendir. procedure sub1(y: out Integer; z: out Integer) is...; sub1(x, x);

Değer ve Sonuç ile Çağırma Değer ile çağırma ve sonuç ile çağırma yöntemlerinin birleşimidir. Gerçek parametrenin değeri ile karşı gelen formal parametrenin değeri ilklenir ve sonra resmi parametre, altprogramın çalışması süresince yerel değişken gibi davranır ve altprogram sona erdiğinde formal parametrenin değeri gerçek parametreye aktarılır. int x=0; int main() { f(x); } void f(int a) { x=3; a++;} x in son değeri değer-sonuç aktarımına göre 1 olacaktır. Parametreler için birden çok bellek yeri gerekir ve değer kopyalama işlemleri zaman alır

Başvuru ile Çağırma Başvuru ile çağırma yönteminde gerçek ve resmi parametreler arasında iki yönlü veri aktarımı vardır. Altprograma verinin adresi aktarılır. Bu adres aracılığıyla altprogram, çağıran program ile aynı bellek yerine erişebilir ve gerçek parametre, çağıran program ve altprogram arasında ortak olarak kullanılır. Formal parametrelere erişim için bir dolaylı erişim gerekir. Sadece çağıran programdan altprograma değer aktarılması isteniyorsa, bu yöntemde gerçek parametrenin bellekteki yerine altprogram tarafından ulaşılabildiği için, değerinde istenmeyen değişiklikler oluşabilir.

Başvuru ile Çağırma int x=0; int main() { f(x); } void f(int a) { x=3; a++;} x in son değeri başvuru ile aktarıma göre 4 olacaktır. Hem yer hem de zaman açısından etkindir. Fiziksel kopyalama yoktur.

İsim ile Çağırma Altprogramda gerçek parametreye karşı gelen formal parametrenin bulunduğu her yere metinsel olarak gerçek parametre yerleştirilir. Eğer gerçek parametre bir sabit değerse, isim ile çağırma yöntemi, değer ile çağırma yöntemi ile aynı şekilde gerçekleşir. Eğer gerçek parametre bir değişkense, isim ile çağırma yöntemi başvuru ile çağırma yöntemi ile aynı şekilde gerçekleşir. İsim ile çağırma yönteminin gerçekleştirilmesi güçtür ve kullanıldığı programların hem yazılmasını hem de okunmasını karmaşıklaştırabilir. Bu nedenle ALGOL 60 ile tanıtılan isim ile çağırma yöntemi, günümüzde popüler olan programlama dillerinde uygulanmamaktadır.

İsim ile Çağırma

Dillerde Kullanılan Aktarım Yönt. Dil Değer Sonuç Değer-Sonuç Referans İsim FORTRAN IV X Fortran 77 X ALGOL 60 seçimlik X ALGOL W X C++ X X PASCAL, X seçimlik Modula2 ADA X X X X Java X X

Genel Örnek begin; integer n; procedure p(k:integer); begin; n:=n+1; k:=k+4; print(n); end; n:=0 p(n); print(n); end; Değerle çağırma 1 1 Değer-sonuç il e ça 1 4 Başvuru ile çağırma 5 5

Değer ile Çağırma Örnek int fonksiyon(int x){ return x*x; } int main() { int sonuc, y=5; sonuc=fonksiyon(y); return 0; } Sonuc:25

Referans ile Çağırma Örnek void fonksiyon(int *x){ } *x*=2; int main() { int y=5; printf("ilk yazılan: %d \n",y); fonksiyon(&y); printf ("ikinci yazılan: %d \n",y); return 0; } İlk yazılan: 5 İkinci yazılan:10