BTEP243 - Ders 1. \n veya endl

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

C++ Dersi: Nesne Tabanlı Programlama

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

C++ Dersi: Nesne Tabanlı Programlama

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

Hafta 13 Fonksiyonlar

C++ Dersi: Nesne Tabanlı Programlama

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

C++ Dersi: Nesne Tabanlı Programlama

Pointer Kavramı. Veri Yapıları

ALGORİTMA VE PROGRAMLAMA I

C++ Dersi: Nesne Tabanlı Programlama

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

1 PROGRAMLAMAYA GİRİŞ

ALGORİTMA VE PROGRAMLAMA I

BİL-142 Bilgisayar Programlama II

C++ Dersi: Nesne Tabanlı Programlama

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

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

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

Dr. Fatih AY Tel:

PROGRAMLAMAYA GİRİŞ FONKSİYONLAR

Göstericiler (Pointers)

Fonksiyonlar (Altprogram)

C++ Dersi: Nesne Tabanlı Programlama

Diziler (Arrays) Çok Boyutlu Diziler

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

Yrd. Doç. Dr. Caner ÖZCAN

NESNEYE YÖNELİK PROGRAMLAMA SINIFLAR

Lambda İfadeleri (Lambda Expressions)

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

PROGRAMLAMAYA GİRİŞ DERS 2

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ü

Pointers (İşaretçiler)

Yrd. Doç. Dr. Caner ÖZCAN

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

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

Fonksiyonlar -Genel Test- A

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

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

BLM 111 ALGORİTMA VE PROGRAMLAMA I

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

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

NESNEYE YÖNELİK PROGRAMLAMA

ALGORİTMA VE PROGRAMLAMA II

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

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.

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

C++ Operatörler (Operators)

Bölüm 9. Altprogramlar ISBN

BİLG Dr. Mustafa T. Babagil 1

C++ Dersi: Nesne Tabanlı Programlama

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

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

Nesneye Yönelik Programlama (OOP) 7.Hafta

NESNEYE YÖNELİK PROGRAMLAMA

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

C PROGRAMLAMA D İ L İ

Programlama Dilleri 1. Ders 5: Göstericiler

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

ELN1001 BİLGİSAYAR PROGRAMLAMA I

8. İŞARETCİLER (POINTERS)

Dr. Fatih AY Tel: fatihay@fatihay.net

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

BTEP243 Ders 3. class Yazım Kuralı:

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

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

HSancak Nesne Tabanlı Programlama I Ders Notları

NESNEYE YÖNELİK PROGRAMLAMA

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

Temel Giriş/Çıkış Fonksiyonları

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

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

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

HSancak Nesne Tabanlı Programlama I Ders Notları

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

DERSİN WEB SİTESİ:

NESNE TABANLI PROGRAMLAMA Final Sınavı Cevapları

11- FONKSİYONLAR (FUNCTIONS)

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

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

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

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

C Programlama Dilininin Basit Yapıları

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

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

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

C# Metotlar ve Metot Tanımlama

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

Nesne Yönelimli Programlama

ALGORİTMA VE PROGRAMLAMA I

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

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

Programlama Dillerinde Kullanılan Veri Tipleri

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

DİZİLER-KATARLAR ALGORİTMA VE PROGRAMLAMA II

Genel Programlama II

C PROGRAMLAMA D İ L İ

Yrd. Doç. Dr. Caner ÖZCAN

Bigisayar Programlama

Transkript:

BTEP243 - Ders 1 C ve C++ arasındaki farklar: C #include <stdio.h> printf( ); scanf( %...,& ); Yeni satır \n Varsayılan geri dönüş türü void C++ #include <iostream> cout<<. ; cin>> \n veya endl integer #include <iostream> C++ ve C, giriş/çıkış sistemlerinde ortak özellik olan kanalları kullanırlar. C de kullanılan tüm kanallar C++ ta da aynen kullanılabilir. C++ kanal sınıfları <iostream> adındaki bir başlık dosyası içinde toplanmıştır ve C ++ standart giriş/çıkış kütüphanesi bildirimlerini içerir. using namespace std Aduzayları (namespace) bir kapsamı belirli bir etkinlik alanını tanımlar. Bir aduzayı içinde tanımlanmış tüm değişkenler aynı alana ait olurlar. std aduzayı, tüm sınıfları, nesneleri ve standart C++ kütüphanesinin fonksiyonlarını içerir. Modüler Programlama: Programı modül denen küçük parçalara ayırma ve bu parçacıkları birleştirme. BÖL ve Yönet yöntemi: Fonksiyonlar Kendi içinde bağımsız olarak çalışabilen ve belli bir işlevi yerine getiren program modülüne fonksiyon denir. C programları fonksiyonlardan oluşur. Fonksiyonların yazılmasındaki temel amaç, büyük boyutlardaki programların daha kolay yazılabilen ve test edilebilen küçük parçalar halinde oluşturulabilmesidir. Fonksiyonların Özellikleri: Her fonksiyonun bir adı vardır. Fonksiyon isimlerinin verilmesinde değişken isimlerinde uygulanan kurallar geçerlidir. Foksiyonlar programın diğer parçalarından etkilenmeden bağımsız bir işlem yapabilirler. Belli bir işlevi yerine getirirler. Örneğin, ortalama hesaplamak, ekrana bir veri yazmak, bir dizideki en büyük elemanı bulmak gibi. Kendilerini çağıran programdan parametre olarak veri alabilirler. Gerektiği durumlarda ürettikleri sonuçları kendilerini çağıran programa parametre olarak geri gönderirler. Fonksiyonların sağladığı faydalar: Program yazma süreci kısalır ve kolaylaşır. Programların sürdürülebilirliği ve yaşatılabiliriği artar. Karmaşık problemler daha küçük parçalara bölünebilir. Her parça ayrı ayrı fonksiyonlar şeklinde çözülerek sonradan ana programda birleştirilebilir. Grup çalışmaları için uygun bir ortam hazırlar. Grup elemanları bağımsız fonksiyonları ayrı ayrı tasarlarlar. Son aşamada bu fonksiyonlar ana programda birleştirilir. Daha önceden yazılmış fonksiyonlar arşivlerinden alınarak kullanılabilir. Aynı program parçasının tekrar yazılmasına gerek kalmaz. Programın içinde sık sık tekrar edilen bölümler fonksiyon olarak yazılabilir. Böylece aynı program parçasının defalarca tekrar edilmesine gerek kalmaz.

Fonksiyonun Tanımı Örnek: // Bir sayının küpünü bulup geri döndüren fonsiyon Parametre listesi int kup( int x) int y; y=x*x*x; return y; Fonksiyon İsmi Fonksiyon İçeriği void main ( ) int sayi; cout<< Bir sayı giriniz: ; cin>>sayi; cout<<"girdiğiniz sayının ( <<sayi<< ) küpü:"<<kup(sayi)<<endl; Fonksiyon tanımı aşağıdakileri içerir: İsim: Fonksiyonun ismi. Değişken isimlerinde kullanılan kurallar, fonksiyon isimleri için de geçerlidir. Parametre listesi: Fonksiyona gönderilen değerleri tutan değişkenlerdir. Fonksiyon içeriği : Fonksiyonun gerçekleştirdiği işlemler topluluğudur. Dödürdüğü değerin türü: Fonksiyonun geri döndürdüğü değerin türü. (örnek: void, int...) Eğer fonksiyon herhangi bir değer döndürürse, türü mutlaka belirtilmelidir. int kup(int x) Ancak fonksiyon geriye değer döndürmeyecekse geri dönüş değerinin tipi void olarak tanımlanır. Bu durumda fonksiyondan çıkışı sağlayan return sözcüğünün fonksiyonda kullanılmasına gerek yoktur. void kup(int x) Fonksiyonların çağrılması Fonksiyonlar, isimleri yazılarak ve parantez içinde gerekli sayıda argüman gönderilerek çağırılır. Eğer fonsiyon geriye bir değer döndürüyorsa, bu değer bir değişkene atanabilir, başka bir fonksiyona argüman olarak verilebilir, bir ifadenin içinde kullanılabilir. Fonksiyonu çağırırken, ismini, () (parantez) ve ; (noktalı virgül) kullanırız. Fonksiyon çağırıldığında, program fonksiyonun içeriğini çalıştırır. Fonksiyon sonlandığında ise program kaldığı yerden çalışmaya devam eder. Program çalışmaya başladığında, main( ) otomatik olarak çağırılır. main( ) birçok fonksiyon çağırabilir. Fonksiyonlar diğer fonksiyonları çağırabilir.

Örnek: int kup( int x) int y; y=x*x*x; return y; int sayi, sonuc;... sonuc=kup(sayi); veya cout<<"girdiğiniz sayının ( <<sayi<< ) küpü:"<<kup(sayi)<<endl; Fonksiyon Prototipleri Derleyici (compiler) fonksiyon çağırılmadan önce aşağıdakileri bilmek zorundadır. İsmini Geri döndürdüğü değerin türünü Parametre sayısını Her paramtrenin veri türünü Fonksiyon prototiplerinin kullanımı: Prototipleri programın en başına listeleyiniz. Program, fonksiyonların prototiplerini veya full tanımlarını, çağırmadan önce (main den önce) mutlaka belirtmeliyiz, aksi takdirde derleyici hata verecektir. Başlık: int kup(int x) Prototip: int kup(int); Yerel Değişken / Global Değişken Fonksiyon bloklarının (gövde) içerisinde tanımlanan değişkenler sadece o fonksiyonda kullanılabilen yerel değişkenlerdir. İlgili fonksiyon sonlandıktan sonra yerel değişkenler bellekten kaldırılır. Fonksiyon bloklarının dışında tanımlanan değişkenler ise global değişkenlerdir. Bu tür değişkenler bütün fonksiyonlar tarafından yazılıp okunabilirler ve programın çalışması süresince geçerlidirler. Bazı olumsuz yönlerinden dolayı global değişken kullanımından kaçınmak gerekmektedir. Örneğin; Global değişkenler bütün fonksiyonlar tarafından değiştirilebildiği için programdaki hataların ayıklanması zorlaşır. Grup elemanları arasındaki bağımlılık artar. Hangi global değişkenin ne işlevi olacağına, ismine ve kimin tarafından ne şekilde değiştirileceğine önceden karar vermek gerekir.

Örnek: int a; //global değişken int kup(int x) int y; //yerel değişken y=x*x*x; return y; a=kup(5); cout<<a<<endl; INLINE (SATIR İÇİ) FONKSİYONLAR Programlarımızı yazarken fonksiyon oluşturmak yararlıdır. Ancak fonksiyonlar ne kadar çok olursa program çalıştırıldığında, fonksiyon çağrıları da o kadar çok olacaktır. İşte bu noktada satır içi (inline) fonksiyonlar devreye giriyor ve fonksiyon çağrılarının programa ek olarak getirdiği yükü azaltıyor.tek dezavantajı, çalışma zamanını azaltırken programın boyutunu arttırmasıdır. Örnek: inline int dikdortgen(int sayi1, int sayi2) return sayi1*sayi2; int sayi1, sayi2; cout<< Kisa kenar: ; cin>>sayi1; cout<< Uzun kenar: ; cin>>sayi2; cout<< Dikdortgenin Alani: <<dikdortgen(sayi1,sayi2)<<endl; system( pause );

Fonksiyonların çağırlamasında kullanılabilecek yöntemler: 1. Değer-ile-çağırma: Fonksiyon çağırılırken, argüman olarak ilgili değer fonksiyona gönderilir. Orjinal değer herhangi bir değişikliğe uğramaz. 2. Referans-ile-çağırma: Fonksiyon çağırılırken, argüman olarak ilgili değer fonksiyona gönderilir. Ancak burada gönerilen argüman, fonksiyon içerisinde yapılan tüm değişikliklerin ilgili adresteki değerin değişmesini sağlar. Fonksiyon tanımlanırken, (&) referans operatörü kullanılır. 3. Adres-ile-çağırma: Fonksiyon çağırılırken, argüman değişkeni yerine argüman değişkenin adresinin gönderilmesini sağlar. Argümanı bir adres olduğundan, fonksiyonda kullanılan parametre bir gösterici (pointer) olmalıdır. Fonksiyon çağrılırken ise işaretçi yerine referenas (&) operatörü kullanılmalıdır ki ilgili adresteki değer değişimi sağlanabilsin. Örnekler 1) int toplam(int, int); //fonksiyonun prototipi int carp(int, int); void fonksiyon1(); fonksiyon1(); int a,b; cout<<"iki sayi giriniz:"; cin>>a>>b; cout<<a<<"+"<<b<<"="<<toplam(a,b)<<endl; cout<<a<<"*"<<b<<"="<<carp(a,b)<<endl; int toplam(int s1, int s2) return s1+s2; int carp(int s1, int s2) return s1*s2; void fonksiyon1() cout<<"deneme Programi..."<<endl;

2) C/C++ C/C++ sadece C++ //deger ile cagirma (call-byvalue) - Fonksiyondaki değişiklik orjinal değeri etkilemez. //referans ile cagirma (call-byreference) - Fonksiyondaki değişiklik orjinal değeri değiştirir. void degistir(int, int); int a,b; cout<<"iki sayi giriniz:"; cin>>a>>b; cout<< Degisiklikten once: ; void degistir(int&,int&); int a,b; cout<<"iki sayi giriniz:"; cin>>a>>b; cout<< Degisiklikten once: ; //adres ile cagirma (call-byaddress) - Fonksiyondaki değişiklik orjinal değeri değiştirir. void degistir(int*,int*); int a,b; cout<<"iki sayi giriniz:"; cin>>a>>b; cout<< Degisiklikten once: ; degistir(a,b); degistir(a,b); degistir(&a,&b); cout<< Degisiklikten sonra: ; cout<< Degisiklikten sonra: ; cout<< Degisiklikten sonra: ; void degistir(int s1, int s2) int g; g=s1; s1=s2; s2=g; Ekran Çıktısı: İki sayi giriniz: 5 3 Degisiklikten once: 5 3 Degisiklikten sonra 5 3 Press any key to continue... void degistir(int&s1,int&s2) int g; g=s1; s1=s2; s2=g; Ekran Çıktısı: İki sayi giriniz: 5 3 Degisiklikten once 5 3 Degisiklikten sonra 3 5 Press any key to continue... void degistir(int*s1,int*s2) int g; g=*s1; *s1=*s2; *s2=g; Ekran Çıktısı: İki sayi giriniz: 5 3 Degisiklikten once 5 3 Degisiklikten sonra 3 5 Press any key to continue...

3) //deger-ile-cagirma //referans-ile-cagirma //adres-ile-cagirma int kare_deger(int); void kare_ref(int&); void kare_adres(int*); int a; cout<<"bir tam sayi giriniz:"; cin>>a; cout<<"girdiginiz sayinin karesi(deger-ilecagirma):"<<kare_deger(a)<<endl; int kare_deger(int x) return x*x; void kare_ref(int&x) x=x*x; void kare_adres(int *x) *x=(*x)*(*x); kare_ref(a); cout<<"girdiginiz sayinin karesi(referans-ilecagirma):"<<a<<endl; int b; cout<<"bir tam sayi giriniz:"; cin>>b; kare_adres(&b); cout<<"girdiginiz sayinin karesi(adres-ilecagirma):"<<b<<endl; 4) //varsayilan degeri olan fonksiyonlar void fonk(int =10, int =20); int a=3, b=5; fonk(a,b); fonk(a); fonk(b); fonk(); void fonk(int x, int y) cout<<x<<" "<<y<<endl;

5) int fonk(int=3); int a=5, b=7; cout<<fonk(a)<<endl; cout<<fonk(b)<<endl; cout<<fonk()<<endl; int fonk(int x) int k=10; k=k+x; return k; 6) int fonk(int=3); int a=5, b=7; cout<<fonk(a)<<endl; cout<<fonk(b)<<endl; cout<<fonk()<<endl; int fonk(int x) static int k=10; k=k+x; return k; 7) //varsayilan degeri olan fonksiyonlar void fonk(int, int =20); int a=3, b=5; fonk(a,b); fonk(a); fonk(b); //fonk();hata!!! En az bir tane deger gondermemiz gerekiyor void fonk(int x, int y) cout<<x<<" "<<y<<endl;

8) //varsayilan degeriler mutlaka son parametrelere eklenir void fonk(int =10, int ); int a=3, b=5; fonk(a,b); /* fonk(a); fonk(b); fonk();hata!!! En az iki tane deger gondermemiz gerekiyor*/ void fonk(int x, int y) cout<<x<<" "<<y<<endl; 9) void fonk(); void fonk(int,int); void fonk(int); float fonk(float,float); fonk(); int a=4, b=5; fonk(a,b); fonk(b); float d=3.2, e=5.3; cout<<fonk(d,e)<<endl; void fonk() cout<<"test PROGRAMI"<<endl; void fonk(int x,int y) x=y+5; y=x+2; cout<<x<<" "<<y<<endl; void fonk(int z) static int s=5; s=s*z; cout<<s<<endl; float fonk(float f,float g) cout<<f<<" "<<g<<endl; return f+g;