Ada Programlama Dili Temelleri

Bölüm 3

Standard Pakette Tanımlanan Öntanımlı Veri Tipleri

Character ve String Veri Tipleri

Bölüm 3 Sayfa 10

3.4 - Character Veri Tipi

Character veri tipi, Standard pakette tanımlanmış olan sayılabilir bir veri tipidir. Bu veri tipi, karakter verilerine erişim sağlamak amacı ile oluşturulmuştur. Karakter verileri, literal olarak tek tırnak içinde 'u' şeklinde gösterilirler. Literal olarak "u" şeklinde girilen karakterler, karakter verisi olarak değil, tek elemanlı bir karakter dizisi (String) olarak algılanır.

Ada 2012 spesifikasyonu Annex A , Standard pakette, tanımlanmış olan Character veri tipi aşağıda görülmektedir.

      --  The declaration of type Character is based on  the standard ISO 8859-1 character set.

      -- There are no  character literals corresponding to the positions for control  characters.
      -- They are indicated in  italics in this definition. See 3.5.2.

   type Character is
     (nul,      soh,   stx,    etx,       eot,   enq,     ack,   bel,    --0 (16#00#) .. 7 (16#07#)
      bs,       ht,    lf,     vt,        ff,    cr,      so,    si,     --8 (16#08#) .. 15 (16#0F#)

      dle,      dc1,   dc2,    dc3,       dc4,   nak,     syn,   etb,    --16 (16#10#) .. 23 (16#17#)
      can,      em,    sub,    esc,       fs,    gs,      rs,    us,     --24 (16#18#) .. 31 (16#1F#)

      ' ',     '!',   '"',    '#',      '$',   '%',    '&',   ''',   --32 (16#20#) .. 39 (16#27#)
      '(',     ')',   '*',    '+',      ',',   '-',    '.',   '/',   --40 (16#28#) .. 47 (16#2F#)

      '0',     '1',   '2',    '3',      '4',   '5',    '6',   '7',   --48 (16#30#) .. 55 (16#37#)
      '8',     '9',   ':',    ';',      '<',   '=',    '>',   '?',   --56 (16#38#) .. 63 (16#3F#)

      '@',     'A',   'B',    'C',      'D',   'E',    'F',   'G',   --64 (16#40#) .. 71 (16#47#)
      'H',     'I',   'J',    'K',      'L',   'M',    'N',   'O',   --72 (16#48#) .. 79 (16#4F#)

      'P',     'Q',   'R',    'S',      'T',   'U',    'V',   'W',   --80 (16#50#) .. 87 (16#57#)
      'X',     'Y',   'Z',    '[',      '\',   ']',    '^',   '_',   --88 (16#58#) .. 95 (16#5F#)

      '`',     'a',   'b',    'c',      'd',   'e',    'f',   'g',   --96 (16#60#) .. 103 (16#67#)
      'h',     'i',   'j',    'k',      'l',   'm',    'n',   'o',   --104 (16#68#) .. 111 (16#6F#)

      'p',     'q',   'r',    's',      't',   'u',    'v',   'w',   --112 (16#70#) .. 119 (16#77#)
      'x',     'y',   'z',    '{',      '|',   '}',    '~',   del,   --120 (16#78#) .. 127 (16#7F#)

      reserved_128,   reserved_129,     bph,   nbh,                  --128 (16#80#) .. 131 (16#83#)
      reserved_132,   nel,    ssa,      esa,                         --132 (16#84#) .. 135 (16#87#)
      hts,     htj,   vts,    pld,      plu,   ri,     ss2,   ss3,   --136 (16#88#) .. 143 (16#8F#)

      dcs,     pu1,   pu2,    sts,      cch,   mw,     spa,   epa,   --144 (16#90#) .. 151 (16#97#)
      sos,     reserved_153,  sci,      csi,                         --152 (16#98#) .. 155 (16#9B#)
      st,      osc,   pm,     apc,                                   --156 (16#9C#) .. 159 (16#9F#)

      ' ',     '¡',   '¢',    '£',      '¤',   '¥',    '¦',   '§',   --160 (16#A0#) .. 167 (16#A7#)
      '¨',     '©',   'ª',    '«',      '¬',   soft_hyphen,   '®',   '¯', --168 (16#A8#) .. 175 (16#AF#)

      '°',     '±',   '²',    '³',      '´',   'µ',    '¶',   '·',   --176 (16#B0#) .. 183 (16#B7#)
      '¸',     '¹',   'º',    '»',      '¼',   '½',    '¾',   '¿',   --184 (16#B8#) .. 191 (16#BF#)

      'À',     'Á',   'Â',    'Ã',      'Ä',   'Å',    'Æ',   'Ç',   --192 (16#C0#) .. 199 (16#C7#)
      'È',     'É',   'Ê',    'Ë',      'Ì',   'Í',    'Î',   'Ï',   --200 (16#C8#) .. 207 (16#CF#)

      'Ð',     'Ñ',   'Ò',    'Ó',      'Ô',   'Õ',    'Ö',   '×',   --208 (16#D0#) .. 215 (16#D7#)
      'Ø',     'Ù',   'Ú',    'Û',      'Ü',   'Ý',    'Þ',   'ß',   --216 (16#D8#) .. 223 (16#DF#)

      'à',     'á',   'â',    'ã',      'ä',   'å',    'æ',   'ç',   --224 (16#E0#) .. 231 (16#E7#)
      'è',     'é',   'ê',    'ë',      'ì',   'í',    'î',   'ï',   --232 (16#E8#) .. 239 (16#EF#)

      'ð',     'ñ',   'ò',    'ó',      'ô',   'õ',    'ö',   '÷',   --240 (16#F0#) .. 247 (16#F7#)
      'ø',     'ù',   'ú',    'û',      'ü',   'ý',    'þ',   'ÿ');--248 (16#F8#) .. 255 (16#FF#)
   -- The predefined operators for the type Character are the same as for
   -- any enumeration type.
   -- The declaration of type Wide_Character is based on the standard ISO/IEC 10646:2003 BMP character
   -- set. The first 256 positions have the same contents as type Character. See 3.5.2.

   type Wide_Character is (nulsoh ... Hex_0000FFFEHex_0000FFFF);
   -- The declaration of type Wide_Wide_Character is based on the full
   -- ISO/IEC 10646:2003 character set. The first 65536 positions have the
   -- same contents as type Wide_Character. See 3.5.2.

   type Wide_Wide_Character is (nulsoh ... Hex_7FFFFFFEHex_7FFFFFFF);
   for Wide_Wide_Character'Size use 32;
   package ASCII is ... end ASCII;  --Obsolescent; see J.5

Yukarıdaki bilgilerden görüldüğü gibi, Ada Standard Paketinde Character, Wide_Character ve Wide_Wide_Character olarak adlandırılan üç tip karakter verisi tanımlanmıştır.

Character veri tipinin kökenleri eski 7 bit ASCII kodlamasına kadar gider. Burada, karakterlerin uygulamasında kolaylık sağlanması amacı ile, 7 bit genişliğinde veri ile tanımlanabilecek 27 = 128 tane bellek noktasına sabit 7 bitlik sekanslar halinde karakter tanımları yerleştirilmiş ve Buna American Standadrd Code For Information Interchange adı verilmişti. Bu kod sayısı, dünyanın en az sayıda karakter içeren Ingiliz alfabesiiçin yeterli olabilmiş fakat, karakterlerini ekranda görüp, printyerde yazdırmak isteyen farklı diller konuşan insanlar, kod genişliğinin 8 bite kodlanabilen bellek alanı sayısını da 128 e arttırılmasına neden olmuşlardır. 8 bit ASCII karakter kümesi ANSI standardı olarak tanımlanmıştır. Bilgisayarların gitgide bir bilgi aracına dönüşmesi sonucunda, her özel karakteri olan alfabesin gösterimi gerekmiş ve bunun için zaten dolu olan 128 kod noktası kullanılamaz olduğundan kod sayfası (Code Page) adında bir yöntem geliştirilmiştir. Kod sayfası yönteminde ilk 126 kod noktasının üstündeki yarı (upper half) içinde bulunan bazı kod noktalarına atanan kakarkterler değiştirlmiş ve buna özel kod sayfası adları verilmiştir. Kod sayfaları gigitgide kurumsallaşmış ve ilk ANSI kod sayfası, ECMA (Avrupa Bilgisayar Üreticileri Birliğ) tarafından geliştirilerek ISO Standardı oluşturulması için sunulmuştur. Ne yazık ki bu ve belki de daha önceki aşamalarda, Türkçe karakterlerin bazıları yerine çok az kullanılan eski karakterler ve Izlanda gibi, Türkiye ile kıyaslanmayacak kadar az kullanıcı sayısı olan ülkelerin karakterleri alınmıştır. ECMA tarafından yapılmış ve ISO 'ya sunulmuş olan çalışma, ISO tarafından 1985 yılında I ISO-8859-1 standardı olarak kabul edilmiş ve bu standart aynı zamanda Latin-1 standardı olarak da adlandırılmıştır.. Latin-1 standardı 256 karakter içermekte ve genişletilmiş ASCII kodları temel alınarak düzenlenmiştir. Bu düzenlemede Türkçe alfabesinin 6 harfi, Ğ , ğ , İ , ı , Ş , ş ISO-8859-1 (Latin-1) standardı dışında kalmıştır.

Ada-83 programlama dili Latin-1 standadına dayalıdır. Bu nedenle Standard paketinde öntanımlı olarak sadece yukarıda görülen 256 kod noktası içeren Character tipi veri tanımlıdır. Character tipi veriler içinde Ğ , ğ , İ , ı , Ş , ş karakterleri tanımlı olmadığından, Ada-83 de bu karakteri içeren Türkçe tanımlayıcıların kullanılması olanağı yoktur. Ada-83 de karakter repertuvarı Latin-1 karakter kümesi ile sınırlıdır.

ISO-8859-1 (Latin-1) standardı, sadece 8 bit (1 byte) genişliğindedir ve standardı kesinleşmiş olduğundan genişletilmesi söz konusu değildir. Bu nedenle kapalı bir sistemdir ve ölçeklenebilir yani yeni gereksinmelere göre genişletilebilir değildir. Bu nedenle başka alfabe karakterlerinin bu sistemde kullanılabilmesi için ilk yarı olan ilk 128 kod noktası içinde tanımlı esas ANSI karakterleri yerinde bırakılarak üst yarıdaki 126 kod noktası içinde kalan bazı karakterler yenileri ile değiştirilmiş ve yeni 256 lık kod sıraları oluşturulmuştur. Sadece üst yarıdaki bazı karakterleri farklı olan bu kod sayfaları, çesitli ISO-8859-X ler halinde ISO standardı olarak tanımlanmışlardır. Bu standartlardan birisi de 1999 da kabul edilmiş olan, üst yarıdaki 6 kod noktasındaki karakterlerin Türkçe karakterler ile değiştirilmesi ile oluşturulan,ISO-8859-9 standardıdır. Bu standart aynı zamanda Latin-5 veya kaynaklandığı kod sayfası olan Windows-1254 veya CP-1254 olarak da adlandırılmaktadır. Bu standart ile tanımlı karakter kümesi aşağıda görülmektedir.

ISO-8859-9 Standardı Karakterleri

(Karakter Kodları Bu Standart ile İlgili Değildir. Sadece Bilgi Amacı ile Verilmiş Olan Unicode Giriş Noktalarıdır)

codepage1254

Yeni kod sayfası standartları, Ada-83 için bir değişikliğe neden olmamıştır. Ada-83 sadece Latin-1 standardı ile aynı karakter kümesine sahip olan Character veri tipine sahiptir ve bunun dışındaki bir veri tanımlayıcılarda kullanılmışsa programı kabul etmemektedir. Sadece karakter dizigisi tipinde veriler, karakterleri program içinde değiştirilmemiş olmak koşulu ile, belirli kod sayfalarında, girildikleri şekilde görüntülendirilebiilmektedir.

ISO-8859-X şeklinde yapılanmaların, fazla verimli olmayacağı sonucuna varmak fazla süre almamıştır. Bu sistemde karakterlerin bir kimlik numaraları yoktur. Karakterler bir veri temeline yerleştirilmememiştir. Sadece 256 tane kod noktası tanımlıdır ve bunlara değişik kod sayfalarında 1 ve 0 lardan oluşan ikili kodlar atanmaktadır. Belirli bir kod noktasında tanımlı olan karakter sadece kod sayfasının bilinmesi koşulu ile izlenebilmektedir. Kod noktalarına girilen karakterlerin görüntü kodları karakter kodlarından bağımsız değildir. Özetle bu sistem modern teknolojiye yakışan bir sistem değildir ve son yıllarda ISO için en kötü standart sistemi olarak nitelendirilmekte olup bir an önce kullanımdan kaldırılması istenmektedir.

Bu konuda bir çözüm önerisi Unicode Konsorsiyumu adı altında örgütlenen bir topluluktan gelmişlir. Bu topluluk, tüm dünyada geçerli karakterlerin bir çatı altında toplanması, her karaktere bir kod numarası verilmesi ve her karakterin kod numarası ile görüntüsünün (Glyph = Kılıf) birbirinden ayrılmasının gerçekleştirilmesi amacı ile kurulmuştur. Bu kuruluşun çalışmaları sonunda ilk yönergesi, Unicode 1.0.0 olarak (Ekim, 1991) de yayınlanmıştır. Burada tamamen farklı bir teknoloji kullanılmıştır. Karakterler düzlemler halinde yerleştirilmiş ve her karaktere konum numarasına denk gelen bir sabit kod numarası verilmiştir. Bu kodlara U+Hex_Karakter_Kodu şeklinde Unicode giriş noktaları adı verilmiştir. Unicode karakter kodları 16 bit (2 byte) genişliğindedir. İlk 216 = 65536 kod noktası içeren ilk düzleme Temel Çok Dilli Düzlem (Basic Multilingual Plane) (BMP) adı verilmiştir. Temel çok dilli düzlemin ilk 256 kod noktası, eskiye uyum amacı ile, Latin-1 olarak tanımlanmış olan karakter kümesindeki karakterlere ayrılmıştır. Bunun dışındaki karakterlere özel kod numaraları verilmiştir. Dünyada ilk defa bir karakterin numarası olmakta, karakterler kataloglar halinde düzenlenebilmekte ve veri temellerine yerleştirilebilmektedir. Unicode bunu başarmıştır.

Aşağıdaki, tabloda, Temel Çok Dilli Düzlem içinde olup kod giriş noktaları ilk 256 giriş noktasından sonra olan Türkçe karakterler ve kod giriş numaraları görülmektedir.

ISO/IEC 10646: 2003 (E)- Table 4 - Row 01: Latin Extended-A
 
Karakter Desimal Hex
Ç 199 16#C7#
Î 206 16#CE#
Ö 214 16#D6#
Ü 220 16#DC#
ç 231 16#E7#
ö 246 16#F6#
ü 252 16#FC#
Ğ 286 16#11E#
ğ 287 16#11F#
İ 304 16#130#
ı 305 16#131#
Ş 350 16#15E#
ş 351 16#15F#

Burada ISO-8859-9 standardı ile belirlenen karakter kümesinin yukarıda verilmiş olan tablosuna yeniden bakmak gerekmektedir. Bu tabloda yeşil harflerle verilen ve her karakterin altında görülen Hex kodları, ISO-8859-9 'ait değildir. ISO-8859-X hiçbir karaktere belirli bir kod numarası tanımlamaz. Bu kodlar, karakterlerin Unicode giriş noıktalarıdır ve tabloda bulunmalarının tek nedeni, ISO-8859-9 standardında tanımlı karakterlerin Unicode giriş noktalarının belirtilmesidir.

Unicode kuruluşu, çalışmalara başlaması ile birlikte, ISO ile birlikte Universal Character Set (UCS) adı ile bir Standart geliştirme çalışması başlatmıştır. Bu çalışmalar sonucunda, ISO/IEC 10646:1990 Universal Multiple-Octet Coded Character Set bir standart teklifi olarak yayınlanmıştır. Kısaca UCS olarak adlandırılan bu standart, karakterler için iki tür kodlama getirmiştir. Bunlardan ilki, 16 bitlik karakter kodlaması olan UCS-2 diğeri 32 bitlik karakter kodlaması oloan UCS-4 variyantlarıdır. O zamanlar Unicode sadece 16 bitlik ilk kodlamayı desteklemekteydi.

ISO/IEC 10646:1990 standardı yayınlandıktan sonra, yeni ADA 95 sürümü, UCS-2 krakter kodlama sistemini desteklemiştir. Bu nedenle, Standard pakete Wide_Character adı ile yeni bir veri tipi eklenmiştir. Wide_Character veri tipi, Unicode giriş noktaları 0 ile 16#0000FFFF# ( 0 .. 65536) arası tüm karakterleri içermekte ve bunun sonucu olarak, ilk 256 elemanı, Character veri kümesindeki elemanlar ile aynı olmaktadır. ADA 95 sürümünün UCS-2 yi desteklemesi sonunda, Temel Çok Dilli Düzlemin ilk 256 kod giriş noktasının ötesinde olan Türkçe karakterlerin de tanımlayıcılarda kullanılabilmeleri olanağı sağlanmış ve ADA 95, Türkçe için çok mutluluk verici bir sürüm olmuştur.

Universal Multiple-Octet Coded Character Set standardı, 2003 yılında ISO ISO/IEC 10646:2003 olarak kabul edilmiş, ve yapılmış olan eklentilerle günümüzde, ISO/IEC 10646:2003/Amd.7:2010(E) sürümüne ulaşmıştır. Unicode günümüzde 6.0.0 sürümündedir. Zaman içinde, UCS-2 nin yeterli olmayacağı düşüncesi kabul görmüş ve UCS-2 geçersiz kılınmıştır. Günümüzde 32 bitlik UCS-4 karakter kodlaması geçerlidir ve Unicode bu standardı gerektiğinde desteklemektedir. UCS-4 standardını destekleyen Unicode 6 yı da desteklemeiş olmakta, fakat sadece Unicode 6 yı destekleyen tam olarak UCS-4 ü desteklemiş olmamakta, bizim ilgilendiğimiz karakterler bakımından ise ikisi arasında hiçbir farklılık bulunmamaktadır. UCS-4 ve Unicode 6 karakter kodları, birbiri ile aynıdır ve gerek Unicode, gerekse UCS-4 aynı teknolojiyi paylaşmaktadırlar.

UCS-4 karakter kodlarının genel kabul görmesi ile, ADA 2012 sürümü, UCS-4 karakter kodlarını desteklemiştir. Bunun için Ada 2012 Standard paketine Wide_Wide_Character veri tipi eklenmiş ve bu veri tipinin elemanlarının ilk 256 sının Character veri tipi, sonra gelen 65536 elemanının Wide_Character tipi elemanlardan oluşacağı ve gerisinin 16#7FFFFFFF# (232 = 4294967296) e kadar karakter kodlamasını destekleyebilceği belirtilmektedir. Bugün için bu veri tipine sadece Çin ideogramları için gerek duyulmaktadır.

Bit sekanslarının karakter kodlarına , karakter kodlarının bit sekanslarına dönüştürülmesi için, Unicode Transformation Format (UTF) dönüştürücüleri kullanılır. Kullanılabilecek UTF dönüştürücüleri, UTF-8, UTF-16, UTF-16BE (Big Endian), UTF-16LE (Little Endian), UTF-32, UTF-32BE (Big Endian), UTF-32LE (Little Endian) arasında, Ada 2012 sadece UTF-8 ile kodlanmış program sayfalarını ve text olarak kodlanmış program sayfalarını kabul eder. UTF-8 dışında Unicode dönüştürücülerinin kodlaması ile saklanmış program listelerini kabul etmez. UTF-8 adının 8 biti çağrıştırması bir yanılsamadır ve UTF-8 tüm Unicode repertuvarını destekleyebilir, fakat Ada 2012 UTF-8 ile kodlanmış program listelerini kabul etmekle birlikte UTF-8 dönüştürümünü desteklemez ve UTF-8 altında karakterleri görüntülemez, sadece kodlarını verir. Ada 2012 ye UTF-8 desteği kazandıracak kullanıcıların geliştirdiği ve özgürce kullanılabilen paketler olmasına karşın, bunlar standard pakete dahil olmadığından ancak uzun süre denendikten sonra kullanılabilir. Bu durumda, Ada programlarının geliştirildiği IDE lerdeki komut satırı emülatörlerinin Türkçe karakterleri görüntülemeleri için henüz Türkçe kod sayfası (ISO-8859-9 veya CP-1254) ile kodlanarak saklanmış program listelerinin kullanılması gerekir. Qwined, SciTe ve JGrasp gibi, program listesi yazımı ve program sonuçlarının görüntülenmesini sağlayabilen, metin editörü ve komut satırı emülatörlerinin kodlama sistemi (encoding) CP-1254 eya ISO-8859-9 a ayarlı olmalıdır. Ada derleyicilerinin bir an önce resmi UTF-8 desteğini sağlayabilir olmaları gerekmektedir. Bu destek sağlanana kadar, istemeyerek de olsa, kod sayfası yöntemine zorunlu olarak devam edilmesi gerekmektedir. Bunu koskoca bir Türk Dünyasının hergün kullandığı 6 karakter yerine, saçma sapan karakterleri Latin-1 standardına yerleştiren önyargılı ekibin bir ayıbı olarak ve verdikleri zararı hergün yaşamak zorunda olduğumuzun bilncinde olarak kullanmalıyız.

Karakter verilerinin giriş/çıkış işlemleri için iki seçenek bulunmaktadır. Bunlardan ilki Ada.Text_IO pakerinin kullanılmasıdır. Ada.Text_IO paketi, tüm temel veri tiplerinin ve bunlar arasında karakter ve karakter dizgisi şeklinde sözel verilerin giriş/çıkış işlemlerini gerçekleştirmek amacı ile oluşturulmuştur. Ada.Text_IO paketi görüntülediği karakater ve karakter dizgisi (String) verilerin görüntülenmesinde tek veya çift tırnak içine almamaktadır. Aşağıda görülen prosedürde, bir karakter verisinin Ada.Text_IO öntanımlı paketinden yararlanılarak standart ortam (klavye-ekran kısaca konsol) giriş/çıkış işlemleri gerçekleştirilmiştir.

with Ada.Text_IO;

procedure b3_4_uyg_1 is

Karakter_Verisi : Character;

begin

   Ada.Text_IO.Put(Item => "Lütfen Bir Karakter Giriniz :  ");
   
   Ada.Text_IO.Get(Item => Karakter_Verisi );
   
   Ada.Text_IO.New_Line;
   
   Ada.Text_IO.Put(Item => "Girilen Karakter :  ");
   
   Ada.Text_IO.Put(Item => Karakter_Verisi);
   
end b3_4_uyg_1;
   
Bu prosedürün sonucu : 
   
Lütfen Bir Karakter Giriniz :  Ğ
Girilen Karakter :  Ğ
   
olmaktadır.

Yukarıdaki prosedür, Qwined, tümleşik geliştirme ortamının (IDE) yazım kısımlarında yazılarılarak Windows gerçerli Kod sayfası olan CO-1254 altında kaydedilmiştir. Derlenen program, yine Qwined IDE sisteminin Windows Komut Satırı (Shell) emülasyon kısmında çalıştırılmış ve hem mesajın görüntülenmesindeki Türkçe karakterler tam olarak görüntülenmiş , hem de program çalışması gereği gibi olmuştur. Istendiğinde SciTe, JGrasp gibi aynı desteği verebilien IDE sistemleri de kullanılabilir. Programın Windows komut satırı üzerinden çalışmasında sadece mesaj kısmındaki bazı Türkçe karakterler değişik bir şekilde görüntülenmekte, fakat program çalışması yine gerektiği gibi yürümektedir. Tüm programların bu şekilde, IDE sistemlerinin DOS emülasyon ortamlarında çalıştırılması ile hiçbir sorun yaşanmamaktadır. Windows komut satırında, karakterlerin iyi görüntülenmemesi Ada ile değil Windows ile ilgili bir sorundur ve aynı sorun Java, C , c++ gibi program dillerinde de aynen yaşanmaktadır. Tüm bu programlar, aynı IDE lerin DOS emülasyon sistemlerinde sorunsuzca çalıştırılmaktadır.

Karakter verilerinin standart ortamda giriş/çıkış işlemlerinin gerçekleştirilebilmesinin ikinci yöntemi, karakter veri tipinin sayılabilir bir veri tipi olmasından yararlanılarak, Ada.Text_Io öntanımlı paketinin generik Enumeration_IO alt paketinin, karakter veri tipi için güncelleştirilmiş özel spesifik bir örneğinin yaratılmasıdır. Bu tip generik alt paketlerden spesifik özgün paketlerin oluşturulması, daha önce birçok kez gerçekleştirilmiş olduğunudan bu uygulama bizim için artık sıradan hale gelmiş sayılabilir. Aşağıda görülen prosedürde, bu yöntem uygulanmıştır.

with Ada.Text_IO;

procedure b3_4_uyg_2 is

Karakter :  Character;

package Karakter_IO is new Ada.Text_IO.Enumeration_IO (Enum => Character);

Karakter_Verisi : Character;

begin

   Ada.Text_IO.Put(Item => "Lütfen Bir Karakter Giriniz :  ");
   
   Ada.Text_IO.Get(Item => Karakter_Verisi );
   
   Ada.Text_IO.New_Line;
   
   Ada.Text_IO.Put(Item => "Girilen Karakter :  ");
   
   Karakter_IO.Put(Item => Karakter_Verisi);
   
end b3_4_uyg_2;
   

Bu prosedürün sonucu : 
   
Lütfen Bir Karakter Giriniz :  Ğ
Girilen Karakter :  'Ğ'
   
olmaktadır.

Yukarıdaki prosedürde, uygulanan yöntemde, karakter verilerinin, aynı literal değer olarak girildikleri şekilde, tek tırnak ile verildiğine dikkat edilmelidir.

Geliştirilmesi tamamlanmış programlar için, özel Windows ara yüzleri, her programda olduğu gibi, Ada ile de gerçekleştirilebilir. Yani kesinlikle Windows konut satırına veya emülasyonlarına bağlı değiliz. Özellikle QtAda bu çalışmalar için destek sağlamaktadır. Arayüz tasarımı için öncelikle program gelişmesinin tamamlanmış olması gerekmektedir. Bu nedenle, başlangıçta öncelikle komut satırı kullanıyoruz. Program gelişmesi tamamlanınca, bu programa özel, özgün bir arayüz tasarımı çalışmaları başlatılabilir. Bunu ileride uygulamaya çalışacağız.

Ada öntantımlı paketlerinde çok sayıda karakter veri tipi ile ilgili çalışmalara yardımcı olmak amacı ile hazırlanmış öntanımlı paketler bulunmaktadır. Ada programlama dilinde yeterli temel bilgiye sahip oldukça bu paketlerin uygulanmalarını inceleyeceğiz. Bu konuları ileriye bırakarak temel bilgilerimizi ilerletmeye devam ediyoruz.