BTEP243 Ders 2. Derleyici, fonksiyon çağrıldığında, gerekli olan veri tiplerini (türlerini) işlemek için kod üretir.

Benzer belgeler
TEMPLATES. Binnur Kurt Bilgisayar Mühendisliği Bölümü İstanbul Teknik Üniversitesi. C++ ile Nesneye Dayalı Programlama 1

C++ Dersi: Nesne Tabanlı Programlama

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

Örnek1: #include <iostream> #include <string> using namespace std;

C++ Dersi: Nesne Tabanlı Programlama

C++ Operatörler (Operators)

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

C++ Dersi: Nesne Tabanlı Programlama

C++ Dersi: Nesne Tabanlı Programlama

C++ Dersi: Nesne Tabanlı Programlama

NESNEYE YÖNELİK PROGRAMLAMA

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

DERSİN WEB SİTESİ:

11- FONKSİYONLAR (FUNCTIONS)

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

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

10/17/2007 Nesneye Yonelik Programlama 3.1

Fall Object-Oriented Programming Laboratory 02 - Structures

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

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

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

C++ Dersi: Nesne Tabanlı Programlama

Dizi nin Önemi. Telefon rehberindeki numaralar, haftanın günleri gibi v.b.

BİLG Dr. Mustafa T. Babagil 1

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

TEMPLATES. Kalıp-Parametrik Çok Şekillilik Nedir? Fonksiyon Kalıbı Tanımlamak. Örnek

C++0x - Sağ Taraf Değerine Bağlanan Referanslar (Rvalue References)

#ifndef COMPLEX_H #define COMPLEX_H

C++ Dersi: Nesne Tabanlı Programlama

Biçem Belirteçleri (Format Specifiers)

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

C++ Giriş Ders 5 MSGSU Fizik Bölümü Ferhat ÖZOK

Fonksiyon Türleri. Bildiğiniz gibi, C++'da iki fonksiyon türü ile karşılaşıyoruz. C++'nın kullanıma sunduğu hazır fonksiyonlar.

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

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

NESNEYE YÖNELİK PROGRAMLAMA THIS İŞARETÇİSİ, KOPYA YAPICI FONKSİYON, STATİK ELEMANLAR, ARKADAŞ SINIF VE FONKSİYONLAR,NESNE DİZİLERİ

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

Object-Oriented Programming Laboratuvar 11

SAKARYA ÜNİVERSİTESİ BİLGİSAYAR VE BİLİŞİM BİLİMLERİ FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ GÜZ DÖNEMİ PROGRAMLAMAYA GİRİŞ DERSİ

Diziler (Arrays) Çok Boyutlu Diziler

Ad Soyad: İmza: Object-Oriented Programming Quiz 4 60dk. Kapalı kitap. Kapalı defter. Kapalı cep telefonu. Hesap makinesi yok.

Pros and Cons of Pointers. Pointers. Avantajlar. Dezavantajlar

String ve Karakter Dizileri. Yrd. Doç. Dr. Fehim KÖYLÜ Erciyes Üniversitesi Bilgisayar Mühendisliği Bölümü

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

PROGRAMLAMAYA GİRİŞ FONKSİYONLAR

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

1 PROGRAMLAMAYA GİRİŞ

2 ALGORİTMA VE AKIŞ DİYAGRAMLARI

KOCAELİ ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ

NESNEYE YÖNELİK PROGRAMLAMA

ALGORİTMA VE PROGRAMLAMA I

Operatörlere İşlev Yükleme

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

BİLG Dr. Mustafa T. Babagil 1

Programlamaya Giriş Karar Yapıları, Tekrarlı İfadeler(Döngüler)

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

5. BÖLÜM (10ncu ve 11nci hafta)

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

Fonksiyonlar (Altprogram)

#ifndef VEKTOR_H #define VEKTOR_H. struct vektor_s { double x; double y; double z; }; typedef struct vektor_s vektor_t;

const objects & const member functions

Nesneye Dayalı Programlama Laboratuvarı

HSancak Nesne Tabanlı Programlama I Ders Notları

C Programlama printf() Fonksiyonu

C Programlama Dilininin Basit Yapıları

Metin Dosyaları. Metin Dosyaları Dosya Açma ve Kapama Dosya Okuma ve Yazma Rastgele Erişim Standart Girdi/Çıktı Hata Kontrolü

BİLGİSAYAR PROGRAMLAMA

Object-Oriented Programming Lab 4. - Sıcaklık değeri, Kelvin biriminde saklansın. Varsayılan sıcaklık değeri K olsun.

ALGORİTMA VE PROGRAMLAMA I

NESNEYE YÖNELİK PROGRAMLAMA SINIFLAR

Jval tipi. Genel veri yapılarını kullanacağımız zaman Jval den faydalanırız.önemli olanlar aşağıda mevcuttur:

Operatörlere Yeni İşlevler Yüklenmesi (Operator Overloading)

Çok Şekillilik (Polymorphism)

Yrd. Doç. Dr. Caner ÖZCAN

Final Sınavı Soruları Güz, Süre: 90 Dakika

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.

NESNEYE YÖNELİK PROGRAMLAMA

Python ile Programlamaya Giriş DERS 9: FONKSİYONLAR DR. HÜSEYİN BAHTİYAR

Veri Yapıları Lab Notları 1

İNÖNÜ ÜNİVERSİTESİ MÜH. FAK. BİLGİSAYAR MÜH. BÖL. ALGORİTMA VE PROGRAMLAMA 1 DERSİ LAB. ÖDEVİ

BTEP243 Ders 3. class Yazım Kuralı:

PROGRAMLAMAYA GİRİŞ DERS 2

Lambda İfadeleri (Lambda Expressions)

Fall Object-Oriented Programming Laboratory 03

ALGORİTMA VE PROGRAMLAMA II

Pointers (İşaretçiler)

Yrd. Doç. Dr. Caner ÖZCAN

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

1. Aşağıdaki program parçacığını çalıştırdığınızda result ve param değişkenlerinin aldığı en son değerleri ve programın çıktısını yazınız.

Karma C/C + + Kodlama

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

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

BPR152-Algoritma ve Programlama II Uygulama -12

C++ Dersi: Nesne Tabanlı Programlama

Standard Template Library

Object-Oriented Programming Lab Shape, TwoDShape, ThreeDShape, Disk, Square, Sphere, Cube class hiyerarşisi.

NESNEYE YÖNELİK PROGRAMLAMA

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

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

Transkript:

BTEP243 Ders 2 FONKSİYON ŞABLONLARI Fonksiyon şablonu, farklı veri türleri ile çalışabilen "genel" fonksiyondur. Programcı, fonksiyonun teknik özelliklerini tanımlarken, veri tiplerinin yerine temsili türü kullanır. Derleyici, fonksiyon çağrıldığında, gerekli olan veri tiplerini (türlerini) işlemek için kod üretir. Aşağıdaki aşırı yüklenmiş fonksiyonlara bir gözatalım: int square (int number) double square (double number) Bu iki fonksiyon arasındaki tek fark, geri dönüş değerlerinin veri tipleri ve parametreleridir. Eğer şablon fonksiyonu yazarsak bu durum için daha uygun olacaktır. Şablon fonksiyonları, kullanılan her veri türü için ayrı bir fonksiyon yazma zorunluluğunu ortadan kaldırır, ve birçok farklı veri türüyle çalışan tek bir fonksiyon tanımı yazmamıza olanak tanır. Bir şablon fonksiyonu yazarken, parametreler, geri dönüş değeri veya yerel değişkenler için gerçek tipler belirtmeniz gerekmez. Program her veri tipi için fonksiyonu çağırdığında, derleyici her veri tipi için arkaplanda ayrı fonskyionlar üretir. Şablon Fonksiyon Yazım Kuralı: template <class GenelVeriTipi> Geri_döndürme_veri_türü FonksiyonAdi (arguman listesi) // fonksyion içeriği; 1

Örnek1: T square (T number) main( ) int y, x=4; y=square(x); double y, d=6.2; y=square(d); int square(int number) double square(double number) Örnek2: Bu örnekte, program, her veri türü için değerleri değiştiren 3 adet swap () fonksiyonuna ve değerleri ekrana yazdıran 3 print () fonksiyonuna sahiptir. Tüm swap () işlevlerinin mantığı aynıdır. #include <iostream> using namespace std; void swap(int& a, int& b) int temp; temp=a; void swap(float& a, float& b) float temp; temp=a; void swap(char& a, char& b) void print(int a, int b) cout<<a<<"\t"<<b<<endl; void print(float a, float b) cout<<a<<"\t"<<b<<endl; void print(char a, char b) cout<<a<<"\t"<<b<<endl; char temp; temp=a; 2

void main() int x=5, y=10; float p=1.45, q=3.56; char ch1='a', ch2='b'; cout<<"before swap:\n"; print(x,y); print(p,q); print(ch1,ch2); swap(x,y); swap(p,q); swap(ch1,ch2); cout<<"after swap\n"; print(x,y); print(p,q); print(ch1,ch2); Yukarıdaki fonksiyonlar için Şablon Fonksiyonu kullanalım; #include <iostream> using namespace std; template<class T> void swap(t& a, T& b) T temp; temp=a; template<class W> void print(w a, W b) cout<<a<<"\t"<<b<<endl; void main() int x=5, y=10; float p=1.45, q=3.56; char ch1='a', ch2='b'; cout<<"before swap:\n"; print(x,y); print(p,q); print(ch1,ch2); swap(x,y); swap(p,q); swap(ch1,ch2); cout<<"after swap\n"; print(x,y); print(p,q); print(ch1,ch2); 3

Örnek3: Üç farklı türde sayının toplamını bulan ve sonucu ekrana yazdıran bir şablon fonskiyon yazınız. #include<iostream> template<class T, class P,class Q> void sum(t num1, P num2, Q num3) cout<<num1+num2+num3<<"\n"; void main() int a=3,b=4,c=5; float x=2.3, y=3.7,z=5.8; sum(a,b,c); //call sum(), sended int,int,int values sum(a,x,y); //send int,float,float values sum(x,b,y); //float,int,float values sum(x,y,z); //float float float values sum(x,z,c); float,float,int values sum() fonksiyonu çağrıldığında, derleyici aşağıdaki fonksiyonları oluşturur: sum(int num1, int num2, int num3) cout<<num1+num2+num3<<"\n"; sum(int num1, float num2, float num3) cout<<num1+num2+num3<<"\n"; sum(float num1, int num2, float num3) cout<<num1+num2+num3<<"\n"; sum(float num1, float num2, float num3) cout<<num1+num2+num3<<"\n"; sum(float num1, float num2, float num3) cout<<num1+num2+num3<<"\n"; Örnek4 Bir dizideki (array) en küçük sayıyı bulan bir şablon fonksiyon yazınız. T minimum(t arr[ ], int size) T smallest=arr[0]; for( int k=1; k<size; k++) if(arr[k]<smallest) smallest=arr[k]; return smallest; 4

void main( ) int arr1[ ]=40,20,35; double arr2[ ]=40.25,28.13,18.21,50.10; cout<< The minimum value of arr1: <<minimum(arr1,3); cout<< The minimum value of arr2: <<minimum(arr2,4); Örnek5: T sum(t val1, T val2) return val1+val2; T sum(t val1, T val2, T val3) return val1+val2+val3; void main( ) double num1, num2, num3; cout<< Enter 2 values: ; cin>>num1>>num2; cout<< Sum: <<sum(num1,num2); cout<< Enter 3 values: ; cin>>num1>>num2>>num3; cout<< Sum: <<sum(num1,num2,num3); Örnek6: // function template #include <iostream> using namespace std; T GetMax (T a, T b) T result; result = (a>b)? a : b; return (result); int main () int i=5, j=6, k; 5

long l=10, m=5, n; k=getmax<int>(i,j); n=getmax<long>(l,m); cout << k << endl; cout << n << endl; return 0; 6