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

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

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

Bölüm 6. Veri Tipleri ISBN

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

Bağlama (Binding) Kavramı

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

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

Bölüm 6. Veri Tipleri ISBN

Yrd. Doç. Dr. Caner ÖZCAN

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

Yrd. Doç. Dr. Caner ÖZCAN

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

Pointer Kavramı. Veri Yapıları

Göstericiler (Pointers)

BLM-112 PROGRAMLAMA DİLLERİ II. Ders-3 İşaretçiler (Pointer) (Kısım-2)

HSancak Nesne Tabanlı Programlama I Ders Notları

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

Bölüm 10. Altprogramları Uygulamak

Değişkenler, içerisinde tek bir değer tutabilen yapılardır. Örneğin haftanın günlerini değişkenlerde tutmak istersek, her bir gün adı için bir

YZM 2116 Veri Yapıları

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

Ders 4: Diziler (Arrays( Arrays) barisgokce.com

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

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

Çoktan Seçmeli Değerlendirme Soruları Akış Şemaları İle Algoritma Geliştirme Örnekleri Giriş 39 1.Gündelik Hayattan Algoritma Örnekleri 39 2.Say

Aynı tipten çok sayıda değişken topluluğudur. X Y Score1 Score2 (0) (1) (2)...

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

JAVADA DİZİ İŞLEMLERİ

ALGORİTMA VE PROGRAMLAMA I

1 PROGRAMLAMAYA GİRİŞ

Genel Programlama II

ALGORİTMA VE PROGRAMLAMA I DERS NOTU#8

BİL1001 Bilgisayar Bilimlerine Giriş 1

Diziler İndisli Değişkenler

C++ Dersi: Nesne Tabanlı Programlama

Görsel Programlama DERS 04. Görsel Programlama - Ders04/ 1

PASCAL PROGRAMLAMA DİLİ YAPISI

Bölüm 6. Diziler (arrays) Temel kavramlar Tek boyutlu diziler Çok boyutlu diziler

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

Dizi ( Array ) ve Dizgi ( String )

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

ALGORİTMA VE PROGRAMLAMA II

Diziler (Arrays) Çok Boyutlu Diziler

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

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

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

BLM 111 ALGORİTMA VE PROGRAMLAMA I

Öğr. Gör. Musa AYDIN Fatih Sultan Mehmet Vakıf Üniversitesi

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

Veri Yapıları Laboratuvarı

Programlama Dilleri 3

Pointers (İşaretçiler)

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

Yrd. Doç. Dr. Caner ÖZCAN

ALGORİTMA VE PROGRAMLAMA II

Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı

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

Temel Bilgisayar Programlama Final Sınavı Çalışma Notları

Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı

Özyineleme (Recursion)

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

Görsel Programlama DERS 03. Görsel Programlama - Ders03/ 1

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

VERİ YAPILARI LİSTELER. Yrd. Doç. Dr. Murat GÖK Bilgisayar Mühendisliği Bölümü YALOVA ÜNİVERSİTESİ

Yrd. Doç. Dr. Caner ÖZCAN

Ardışık Veri Tipleri. Prof.Dr. Bahadır AKTUĞ JFM212 Python ile Mühendislik Uygulamaları. *Kaynakça bölümünde verilen kaynaklardan derlenmiştir.

VERİ YAPILARI DERS NOTLARI BÖLÜM 1 GİRİŞ. Yard. Doç. Dr. Deniz KILINÇ

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

Bilgisayar Teknolojileri Bölümü Bilgisayar Programcılığı Programı. Öğr. Gör. Cansu AYVAZ GÜVEN

Algoritma Geliştirme ve Veri Yapıları 7 Liste ve Bağlantılı Liste. Mustafa Kemal Üniversitesi

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

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

C PROGRAMLAMA D İ L İ

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

Yrd. Doç. Dr. Caner ÖZCAN

Giriş. ENF102 Jeoloji

Hafta 13 Fonksiyonlar

PROGRAMLAMAYA GİRİŞ DERS 2

Bilgisayar Programcılığı. Ögr. Gör. Cansu AYVAZ GÜVEN

R ile Programlamaya Giriş ve Uygulamalar

2. HAFTA KBT204 İNTERNET PROGRAMCILIĞI II. Öğr.Gör. Hakan YILMAZ.

ALGORİTMA VE PROGRAMLAMA I

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

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

ALGORİTMA VE PROGRAMLAMA I

C Programlama Dilininin Basit Yapıları

Algoritma Geliştirme ve Veri Yapıları 9 Ağaç Veri Modeli ve Uygulaması. Mustafa Kemal Üniversitesi

Operator Aşırı Yükleme (Operator OverLoading)

Yrd. Doç. Dr. Caner ÖZCAN

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

Genel Programlama II

Temel Veri Yapıları. (Veri Yapıları 1. Bölüm)

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

Mühendislik Fakültesi Elektrik-Elektronik Mühendisliği C Programlama 3. Bölüm Veri Tipleri ve Değişkenler

Yrd. Doç. Dr. Caner ÖZCAN

Bölüm 7. Deyimler ve Atama ifadeleri ISBN

Dizi elemanları yukarıdaki gibi tek tek tanımlanabileceği gibi matematiksel ifadelerdeki diziler gibi de tanımlanabilir.

YZM 2105 Nesneye Yönelik Programlama

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

ALGORİTMA VE PROGRAMLAMA I

Transkript:

BLG339 PROGRAMLAMA DİLLERİ KAVRAMI Hafta 5 Veri Tipleri (Devam) Yrd. Doç. Dr. Melike Şah Direkoğlu Konular Dizi Tipleri Kayıt Tipleri Birleşik Tipler Küme Tipleri İşaretçi ve Referans Tipleri Alındığı kaynak: Addison-Wesley s Programming Language Concepts slaytları ve Prof. Dr. Tuğrul Yılmaz ın ders notlarından faydalanarak hazırlanmıştır. 1

Dizi (Array) Veri Tipi Bir dizi aynı tipli veri elemanlarının bir kolleksiyonudur. İçindeki her bir elemana, ilk elemana göre olan pozisyonuna göre index değeri ile erişilir. Örnek: C: int aa[4][3][7]; toplam += aa[i][j][k]; Dizi Tasarım Konuları İndexler için hangi tipler uygundur? İndex elemanlarının değerlerinde sınır kontrolü yapılacak mı? İndex aralağı ne zaman sınırlandırılacak? İndexler için maksimum değer nedir? Bellekte yer ayırma işlemi ne zaman yapılacak? Diziye başlangıç değerleri atanabilir mi? Diziden herhangi bir tür parça alma mümkün müdür (dilimleme)? 2

Dizi İndexleme İndexleme, index elemanları ile dizi elemanlarını birbirlerine eşler. dizi adı, indeks değeri bir eleman İndeks söz dizim (syntax) Bütün dillerde genel bir kabul görmüş yapı vardır. Önce dizinin adı sonra parantezler veya köşeli parantezler gelir, bunların arasında da index bulunur. FORTRAN, PL/I, Ada parantez kullanır. Diğer dillerin çoğu köşeli parantez kullanır. Dizi Index Tipleri ve Aralık Kontrolü Index Tipleri FORTRAN, C, Java sadece integer Pascal Her türlü sıralı tip (integer, boolean, char, enum) Ada - integer veya enum (boolean ve char dahil) Indexler C tabanlı dillerde 0 dan başlar. Fortran da 1 dir. Bazı dillerde ise tamamen programcı tarafından belirlenir. Aralık kontrolü C, C++, Perl, ve Fortran aralık kontrolünü belirtmez. Java, ML, C# aralık kontrolünü belirtir. 3

İndex Bağlama ve Dizi Kategorileri 1. Statik (Durağan)- index limitlerinin bağlanmaları ve dizinin bellekteki bağlanmaları statiktir. FORTRAN 77, Ada da bazı diziler. C ve C++ dizilerinde static ifadesi varsa statiktir. Avantaj: Yürütme verimi (bellekten yer alma, geri verme yok) İndex Bağlama ve Dizi Kategorileri 2. Sabit Yığıt Dinamik (fixed stack dynamic) - index aralığı statik olarak stack ta (yığıtta) sınırlandırılır, fakat dizinin bellekteki bağlanması (yer ayırma işlemi) tanımlama zamanında dinamik olarak yapılır. C ve C++ dizilerinde static ifadesi yoksa sabit stack (yığıt)-dinamiktir. Avantaj: Bellek verimi 4

İndex Bağlama ve Dizi Kategorileri 3. Yığıt dinamik (stack dynamic) - index aralığı ve dizinin bellekten yer tahsisi çalışma zamanında yapılır. Ada dizileri stack dinamik olabilir. Avantaj: Esneklik - dizinin boyutu kullanılıncaya kadar bilinmek zorunda değildir. İndex Bağlama ve Dizi Kategorileri 4. Sabit Yığın Dinamik (Fixed Heap dynamic) - index bağlanmaları ve dizinin bellekteki bağlanmaları dinamik, fakat bir kez belirlendikten sonra sabit. Bellek geri verilebilir. FORTRAN 90 C, C++: malloc, free... C++: new, delete. Java da bütün diziler sabit yığın dinamikdir. C# da sabit yığın dinamiği destekler (ArrayList). 5

İndex Bağlama ve Dizi Kategorileri 5. Yığın dinamik (heap dynamic) - index aralığı ve dizinin bellekten yer ayrılması dinamiktir ve istenilen zamanda değiştirilebilir. Avantaj: Esneklik - diziler program çalışması sırasında büyüyebilir veya küçülebilir. APL, Perl ve JavaScript de diziler isteğe göre büyüyebilir veya küçülebilir. Perl örneği: @list = (1, 3, 7, 10); push(@list, 13, 17); // (1, 3, 7, 10 13, 17) @list = (); // belleği boşaltır ve iade eder. Dizi Başlangıç Değerleri Genellikle sırayla yazılmış başlangıç değerleri listeleri şeklinde verilir. Bazı diller ilklemeye izin verir: C, C++, Java, C# Dizi başlangıç örnekleri : C ve C++ - Kıvrık parantezler içinde, derleyici elemanları sayar ve buna göre yer ayarlar: int sayilar [] = {2, 4, 6, 8}; char isim[] = tugrul ; // karakter string char *isimler[] = { ali, veli } //String dizi (array) Java String[] isimler = [ ali, veli ]; //String nesneleri 6

Ada Dizi İşlemleri Atama; Sağ tarafta birden çok değer veya diziler olabilir. Birleştirme; bütün tek boyutlu diziler için. İlişkisel operatörler (sadece = ve /=) FORTRAN 90 Derleyici kütüphanesinden altprogramlarla birçok dizi işlemi; örneğin matris toplamı, çarpımı, vektör iç çarpımı gibi. Dizi Dilimleri (Slices) Dilimler, dizilerin alt parçalarıdır. Belli bölgelere erişmek için kullanılabilecek yöntemlerden biridir. Dizi işlemleri olan dillerde faydalıdır. Dilim örnekleri: 1. FORTRAN 90 INTEGER MAT (1:3, 1:3) MAT(1:3, 1) birinci sütun MAT(2, 1:3) ikinci satır 2. FORTRAN 95 Integer, Dimension (3, 3, 4) :: Cube 7

Fortran Örnekleri Dizilerin Gerçekleştirimi Dizilere erişimin geçekleştirilmesi Erişim fonksiyonu indexleri hesaplayarak dizinin içindeki hücrenin bellekte durduğu adrese ulaşır. Bunu yaparken Sütün öncelikli (Fortran) veya Satır öncelikli (Diğer diller) yöntemini kullanır. 8

Derleme Zamanı Tanımlamaları İlişkili Diziler (Associative Arrays) * Altsimge, index demektir. Bir ilişkili dizi kendisiyle aynı sayıdaki anahtar denilen değerlerle indekslenmiş rasgele verilerdir. Anahtar değerlerinden bir kıyım (hash) algoritması ile değerler bulunur. Tasarım sorunları: 1. Dizilim elemanlarına olan referans şekli nedir? 2. Boyut statik mi yoksa dinamik mi? 9

Perl de ilişkisel Diziler Değişken isimleri % ile başlar. Değişken boyu değişkendir. Değerler parantezler arasına yazılır: %YuksekSicakliklar = ( Pazartesi => 45, Salı => 49, ); Indexleme parantezler ve anahtar verilerle yapılır: $YuksekSicakliklar{ Çarşamba } = 42; Elemanlar delete ile silinebilir: delete $ YuksekSicakliklar{ Salı }; Diziyi tamamen boşaltmak için: @YuksekSıcakliklar = (); Kayıt Tipleri (Records) Bir kayıt (record) heterojen yapıdaki verilerin birleştirilmiş halidir. Her elemanın kendi tipi ve adı vardır. Tasarım Kavramları: Alanlara erişim sözdizimsel olarak nasıl yapılacak? 10

COBOL da Kayıtların Tanımlanması Ada da Kayıtların Tanımlanması Seviye numaraları 11

C Dillerinde Kayıtların Tanımlanması Kayıt Alanlarına Referans 1. COBOL seviye numaralarını (level numbers) kullanır field_name OF record_name_1 OF... OF record_name_n 2. Diğerleri diller nokta notasyonu (dot notation) kullanır. record_name_1.record_name_2.... record_name_n.field_name Örnekler: 1. ORTA OF ISCI-ADI OF ISCI-KAYDI (COBOL) 2. 12

Kayıtlar Üzerindeki İşlemler 1. Atama Pascal, Ada ve C: tipler aynıysa izin verilir. Ada: Sağ taraf sabitler topağı (aggregate constant) olabilir. 2. Başlangıç Ada da sabitler topağı (aggregate constant) ile. 3. Karşılaştırma Ada da = ve /=; biri sabitler topağı olabilir. 4. MOVE CORRESPONDING COBOL da aynı isimli alanları kopyalar. Kayıt Tiplerinin Gerçekleştirimi Her kayıt alanı için, kayıtın başlangıcına göre offset adresleri ilişkilendirilir. Kayıt 13

Birleşik Tipler (Unions Types) union tipi: programın yürütülmesi sırasında değişik zamanlarda değişik tip değerler alabilen değişkenlerdir. Tasarım problemleri: 1. Bir tip kontrolü yapılacaksa, nasıl bir kontrol yapılacak? Bu kontrolün dinamik olması zorunlu mu? 2. Union tipler kayıt tiplerinde kullanılacak mıdır? Ada Union Tipleri 14

Ada Union Tipi Union ların Değerlendirilmesi Potansiyel olarak güvensiz yapılardır. Tip kontrolüne izin vermezler. Java and C# union ları desteklemez. Artık programlama dillerinde güvenlik önemlidir. 15