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

Benzer belgeler
Pointers (İşaretçiler)

C++ Dersi: Nesne Tabanlı Programlama

BİLG Dr. Mustafa T. Babagil 1

C++ Dersi: Nesne Tabanlı Programlama

BTEP243 Ders 3. class Yazım Kuralı:

C++ Dersi: Nesne Tabanlı Programlama

NESNEYE YÖNELİK PROGRAMLAMA

ALGORİTMA VE PROGRAMLAMA II

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

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

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

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

YZM 2105 Nesneye Yönelik Programlama

Özyineleme (Recursion)

Veri Yapıları. Amaçlar: Temel Veri Yapılarını Tanımlamalı Veri Yapılarını Veri Modeli ve Türlerini Öğreneceksiniz. İçindekiler:

C++ Dersi: Nesne Tabanlı Programlama

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

Pointer Kavramı. Veri Yapıları

Fall Object-Oriented Programming Laboratory 02 - Structures

Programlama Dilleri 1. Ders 5: Göstericiler

C++ Dersi: Nesne Tabanlı Programlama

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

Veri Yapıları Lab Notları 1

BLM 111 ALGORİTMA VE PROGRAMLAMA I

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

Statik veri üyeleri sınıf dosyası içerisinde, ancak sınıf bildirimi dışında başlatılmalıdır. Statik üye fonksiyonları

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

Yrd. Doç. Dr. Caner ÖZCAN

ALGORTMA ve PROGRAMLAMA - II (C# Sürümü) DERS NOTLARI

8. İŞARETCİLER (POINTERS)

Diziler (Arrays) Çok Boyutlu Diziler

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

Yrd. Doç. Dr. Caner ÖZCAN

Programlama Dilleri 3

Yrd. Doç. Dr. Caner ÖZCAN

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

D İ Z İ L E R A R R A Y S

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

Görsel Programlama 1

Dr. Fatih AY Tel: fatihay@fatihay.net

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

Giriş. ENF102 Jeoloji

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

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

Kurucu Fonksiyonlar (Constructors)

C++ Operatörler (Operators)

AHMET YESEVİ ÜNİVERSİTESİ BİLİŞİM SİSTEMLERİ VE MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ LİSANS DÖNEM ÖDEVİ

Değişkenler. Geçerli değişken isimleri : baslamazamani, ad_soyad, x5 Geçersiz değişken isimleri : 3x, while

JAVADA DİZİ İŞLEMLERİ

NESNE MODELLERİ : SINIFLAR

BİLG Dr. Mustafa T. Babagil 1

C++ Dersi: Nesne Tabanlı Programlama

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

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

Yrd. Doç. Dr. Caner ÖZCAN

C ile Uygulamalar 2 - Cevaplar

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

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

11- FONKSİYONLAR (FUNCTIONS)

Dizi ( Array ) ve Dizgi ( String )

NESNEYE YÖNELİK PROGRAMLAMA

ELN1001 BİLGİSAYAR PROGRAMLAMA I

Programlama Dilleri 1. Ders 4: Diziler

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

C Programlama Dilininin Basit Yapıları

Nesne İşaretçileri. Binnur Kurt Bilgisayar Mühendisliği Bölümü İstanbul Teknik Üniversitesi. Sınıf Yapısı. Kalıtım Çok Şekillilik

BMH-303 Nesneye Yönelik Programlama

Nesneye Yönelmek. veya sadece formülleri bilgisayarın anlayacağı dile çevirmeyi bilen birinin C++ kullanma yöntemleri. Gökhan Ünel

Biçem Belirteçleri (Format Specifiers)

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

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

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.

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

1 PROGRAMLAMAYA GİRİŞ

Veri Yapıları Lab Notları 2. Bellek Yönetimi ve Göstericiler

DİZİLER 5/4/2010. ENF-102 Jeoloji Giriş. Tek Boyutlu Diziler. Tek Boyutlu Diziler. Örnek. Örnek

DERSİN WEB SİTESİ:

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

C++ ile Nesneye Dayalı Programlama

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

Bir dizinin boyutları sabittir ve kullanılmadan önce belirlenmelidir. Dizi boyutunu belirlemek için başka bir değişkende kullanabilirsiniz.

C++ Giriş. C++ Programlama Dili

HSancak Nesne Tabanlı Programlama I Ders Notları

PROGRAMLAMA TEMELLERİ DERSİ ÖZETİ

Örnek 4: Örnek Özyinelemeli fonksiyon örneği Bölüm 9. C++ programlama dilinde Nesne ve sınıf

Bölüm 8, Yrd. Doç. Dr. A. Kadir YALDIR PAÜ Bilgisayar Mühendisliği Bölümü BÖLÜM 8: DİZİLER

Lab7 DOĞU AKDENİZ ÜNİVERSİTESİ BİLGİSAYAR VE TEKNOLOJİ YÜKSEKOKULU BİLGİSAYAR PROGRAMCILIĞI. BTEP212 Java. Uygulama1: package javaapplication58;

#ifndef FATURA_H #define FATURA_H

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

C PROGRAMLAMA D İ L İ

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

mod ile açılacak olan dosyanın ne amaçla açılacağı belirlenir. Bunlar:

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

Nesneye Yönelik Programlama (OOP) 7.Hafta

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

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

Java Programlama Dilinde Veri Tipleri. Yrd. Doç. Dr. Aybars UĞUR

YZM 2116 Veri Yapıları

Struct VE GÖSTERİCİLER FONKSİYONLARDA STRUCT KULLANIMI Programlama dilleri hafta -

Transkript:

BTEP243 Ders 5 Nesne İşaretçileri İşaretçiler, bildiğiniz gibi bir değişkenin bellekte tutuldukları yerin adresini tutarlar. Nesne işareçtileri konusundaki işaretçiler, nesnelerin bellek üzerinde bulundukları yerin adresini tutarlar. NOT: Eğer nesnelerin üyelerine ulaşmak istiyorsak -> işaretini kullanmalıyız. Kullanım şekli: SınıfAdı *gösterge_ismi; Örnek1: #include <string> class Takim string isim; string mevki; int no; Takim(string,string,int); //parametreli yapıcı void listele(); Takim::Takim(string i,string m,int n) isim=i; mevki=m; no=n; void Takim::listele() cout<<"futbolcu ismi:"<<isim<<endl; cout<<"oynadigi mevki:"<<mevki<<endl; cout<<"numarasi:"<<no<<endl; cout<<"--------------------------------------"<<endl; Takim Turkiye[4]=Takim("Volkan Demirel","Kaleci",1),Takim("ArdaTuran","Orta Saha",10), Takim("Burak Yilmaz","Forvet",9),Takim("Gokhan Gonul","Defans",7) Takim *A=Turkiye; for(int i=0; i<4; i++) A->listele(); A++; Örnek2: #include <string>

class Takim string isim,mevki; int no; Takim(); void listele(); Takim::Takim() //Parametresiz yapıcı. Veriler klavyeden alınıyor... cout<<"futbolcu ismi:"; cin.ignore(); getline(cin,isim); cout<<"mevki ismi:"; cin.ignore(); getline(cin,mevki); cout<<"numarasi:"; cin>>no; void Takim::listele() cout<<"futbolcu ismi:"<<isim<<endl; cout<<"mevki ismi:"<<mevki<<endl; cout<<"numarasi:"<<no<<endl; cout<<"--------------------------------------"<<endl; Takim Turkiye[4]; Takim *A=Turkiye; for(int i=0; i<4; i++) A->listele(); A++; Dinamik Bellek Yönetimi Şu ana kadar küçük boyutta değişkenler kullandık ancak eğer belleğin daha büyük boyuttaki değişkenler için kullanımı gerekecekse dinamik bellek yönetimini kullanmak daha pratik olacaktır. Bu nedenle new ve delete operatörlerini kullanacağız. NEW Operatörü Bellekten yer ayırmak istendiği zaman new operatörü kullanılır. Bir tamsayı gösteren işaretçi için bir tamsayılık yer aşağıdaki şekilde bellekte kendisine yer edinir. int *sayi; sayi=new int; Eğer değişkene başlangıç değeri de vermek istiyorsak;

Sayi=new int(10); //sayi değişkenine 10 değerini atamış oluruz. Eğer bellekte bir dizi oluşturacak şekilde yer ayırmak istiyorsak: int *dizi; dizi=new int[3]; //bellekte 3 elemanlı bir dizi için yer ayırır ve bellekte bu dizinin bulunduğu yerin başlangıç adresini dizi işaretçisine atar. Ancak dizilerdeki elemanlara başlangıç adresi veremeyiz. DELETE Operatörü new operatörü ile bir değişken için yer ayırdığımızı varsayalım. Ayırdığımız bu yeri geri vermek istiyorsak delete operatörünü kullanırız. int *sayi; sayi=new int; int *dizi; dizi=new int[3]; delete sayi Delete [ ] dizi; Örnek1: int *p; p=new int; *p=1000; cout<<"pdeki tamsayi:"<<*p<<endl; delete p; Örnek2: int *p = new int (5) ; long *longptr; longptr=new long(100000); cout<<longptr<<" "<<*longptr; *longptr *= 2; cout<<endl<<longptr<<" "<<*longptr; cout<<endl<<p<<" "<<*p; *p *=2;

cout<<endl<<p<<" "<<*p; Çıktı: 00494468 100000 00494468 200000 00494420 5 00494420 10 Örnek3: class dinamik int x,y; void ata(int sayi1,int sayi2) x=sayi1; y=sayi2; int carp() return x*y; dinamik *p; p=new dinamik; p->ata(5,6); cout<<"carpimlari:"<<p->carp()<<endl; delete p; Örnek4: //1 float,long va char için yer ayır. Bunlara sırayla deger ver ve delete ile ekranda //gosterdikten sonra alanı bosalt #include<iostream> float *f; long *l; char *c; f=new float; l=new long;

c=new char; *f=10.2; *l=10000; *c='a'; cout<<*f<<endl<<*l<<endl<<*c<<endl; delete f; delete l; delete c; Örnek5: //kisi ismi ve telefon numarasını sınıf yaratarak parametre olarak al. //bellekten nesne için yer ayır sonra isim ve noyu goster. #include<iostream> class telefon char isim[20]; char numara[20]; void ata(char *is, char *no) strcpy(isim,is); strcpy(numara,no); void goster() cout<<isim<<":"<<numara<<endl; telefon *p; p=new telefon; p->ata("sebnem","03926301677"); p->goster(); delete p;

Örnek6: //kisi ismi ve telefon numarasını sınıf yaratarak parametre olarak al. //bellekten nesne için yer ayır sonra isim ve noyu goster. #include<iostream> class telefon char isim[20]; char numara[20]; void ata() cout<<"isim gir:"; cin>>isim; cout<<"telefon no gir:"; cin>>numara; void goster() cout<<isim<<":"<<numara<<endl; telefon *p; p=new telefon[5]; for(int i=0;i<5;i++) p[i].ata(); for(int i=0;i<5;i++) p[i].goster(); delete []p; Örnek7: class nokta double x, y; nokta() x=1;y=2; void goster () cout<<"("<<x<<","<<y<<")"<<endl; void ata ( double u, double v) x = u ; y = v ; ~nokta() cout<<"\nobjenin değerleri: "<<x<<" "<<y<<" silindi";

nokta *a; cout<<a<<endl; a=new nokta[4]; int k; for (k=0;k<4;k++) a[k].goster(); delete [] a;