Problem

1/10

Diziler (listeler). giriiş

Theory Click to read/hide

Veri depolama

Diyelim ki oyuncuların karmaşık ve dostça olmayan bir bilgisayar arayüzüne karşı yarıştığı "User Hostile" adlı bir bilgisayar oyunu geliştirdiniz. Şimdi bu oyunun beş yıllık periyotta aylık satışlarını takip eden bir program yazmanız gerekiyor. Ya da Hacker Hero Koleksiyon Kartlarının envanterini çıkarmanız gerektiğini varsayalım.
Çok yakında, bilgileri depolamak ve işlemek için basit temel veri türlerinden daha fazlasına ihtiyacınız olduğu sonucuna varacaksınız.
 

Diziler (listeler). Giriş

Büyük miktarda veri ile çalışmayı kolaylaştırmak için bir grup hücreye ortak bir ad verilir. Böyle bir hücre grubuna dizi denir
Dizi – aynı türden, yan yana yerleştirilmiş ve ortak bir isme sahip bir grup hafıza hücresidir. Gruptaki her hücrenin benzersiz bir numarası vardır.

Dizilerle çalışırken üç görevi nasıl çözeceğinizi öğrenmeniz gerekir:
X bir dizi için gerekli boyutta bellek ayırın
X istenen hücreye veri yaz
X hücreden veri oku


Pascal'da Diziler


Geleneksel olarak Pascal,

gibi statik diziler kullanır.
var a: tamsayı dizisi [1..10];

Bir dizinin sınırları sabitlerle ayarlanmalıdır ve programın çalışması sırasında dizinin boyutunu değiştiremezsiniz. Ancak, yalnızca bir tam sayıdan değil, aynı zamanda örneğin bir karakterden veya numaralandırılmış türden bir dizin oluşturabilirsiniz. Örneğin, her harfin tekrarını saymak için bir dizi kullanabilirsiniz

var LettersCount: tamsayı dizisi ['a'..'z'];

ve onunla dilediğiniz gibi çalışın:

HarfSayı['z'] := 1;
HarfSayı['d'] := HarfSayı['d'] + 1;

Bu tür dizilerin dezavantajları bilinmektedir: Kaç öğenin kullanılması gerektiği önceden bilinmiyorsa, dizi için maksimum bellek boyutu ayrılır. Sonuç olarak, çoğu durumda "gelecek için stok yaparız" ve bazen bu "rezerv" yetmediği ortaya çıkıyor. Bu tür dizilere  statik denmesinin nedeni budur: boyutları statiktir ve program derleme aşamasında ayarlanmalıdır. Bununla birlikte, Pascal   boyutu yalnızca ayarlanamayan, aynı zamanda programın akışı içinde değiştirilebilen  dinamik diziler vardır. Daha ayrıntılı olarak ele alınacak olan, bu diziler ve bunları kullanmanın avantajlarıdır.

Bir dizi oluşturma

Bir dizi oluştururken, bellekte yer ayrılır (belirli sayıda hücre)
1) Diziler şunlar olabilir: öğeleri basitçe listeleyerek oluşturulur:
var a: tamsayı dizisi;
Uzunluğu Ayarla(a, 3);
a[0] := 1;
a[1] := 2;
a[2] := 3;

2) Diziler herhangi bir türden veriden oluşabilir - tamsayı veya gerçek sayılar, karakter dizileri 
var a: char dizisi;
Uzunluğu Ayarla(a, 3);
a[0] := 'a';
a[1] := 'b';
a[2] := 'c';
3) Bir dizi her zaman "bilir" senin bedenin  uzunluk işlevi, bir dizinin boyutunu belirlemek için kullanılır. Genellikle dizinin boyutu ayrı bir değişkende saklanır, böylece program farklı bir dizi boyutuyla çalışacak şekilde kolayca değiştirilebilir. Örnek:
N := 10; // N değişkeninde dizinin boyutunu saklıyoruz
Uzunluğu Ayarla(a, N); // diziyi ve N boyutunu ayarla
writeln(uzunluk(a)); // dizinin boyutunu göster
Bir dizinin boyutu klavyeden ayarlanabilir.

Problem

Programı, beşinci satırda N değişkeninin değeri klavyeden girilecek ve altıncı satırda N boyutunda bir dizi oluşturulacak şekilde değiştirin (dizi öğelerinin değerleri herhangi biri olabilir)