07.01.2013 Views

NTERNET PROGRAMCILIĞI – I

NTERNET PROGRAMCILIĞI – I

NTERNET PROGRAMCILIĞI – I

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I<br />

Yazarı<br />

Yrd. Doç. Dr. Ahmet Uyar<br />

MERSİN<br />

2009<br />

I


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

İÇİNDEKİLER<br />

Bölüm 1 ........................................................................................... 1<br />

TEMEL İ<strong>NTERNET</strong> KAVRAMLARI ....................................... 1<br />

1.1 Amaç .................................................................................................................... 1<br />

1.2 İnternet Nedir ....................................................................................................... 1<br />

1.3 İnternet’in Kısa Tarihçesi..................................................................................... 1<br />

1.4 İnternet’in Yapısı.................................................................................................. 2<br />

1.5 Paket anahtarlaması.............................................................................................. 4<br />

1.6 IP Adresleri .......................................................................................................... 4<br />

1.7 Routerlar ve Paket İletimi .................................................................................... 5<br />

1.8 Alan İsimleri ve Alan Sunucuları......................................................................... 6<br />

1.9 Güvenilir İletişim: TCP protokolü ....................................................................... 8<br />

1.10 TCP Portları...................................................................................................... 9<br />

1.11 Telnet ve TCP Uygulaması............................................................................... 9<br />

1.12 Windows Vista’da Telnet Kurulumu.............................................................. 10<br />

1.13 İstemci-Sunucu Sistemleri.............................................................................. 11<br />

1.14 HTTP protokolü.............................................................................................. 11<br />

1.15 Web Tarayıcısı Çalışma Şekli ........................................................................ 14<br />

1.16 Referanslar...................................................................................................... 14<br />

Bölüm 2 ......................................................................................... 16<br />

WEB TASARIMINA GİRİŞ ...................................................... 16<br />

2.1 Amaç .................................................................................................................. 16<br />

2.2 Giriş.................................................................................................................... 16<br />

2.3 Web Sunucuları.................................................................................................. 17<br />

2.4 Statik IP Adresleri ve Alan Adları ..................................................................... 18<br />

2.5 Apache Web Sunucusu....................................................................................... 19<br />

2.6 Apache Web Sunucusu Kurulum Programı İndirme.......................................... 19<br />

2.7 Apache Web Sunucusu Kurulumu ..................................................................... 20<br />

2.8 Apache Web Sunucusu Kurulum Kontrolü........................................................ 24<br />

2.9 Apache Web Sunucusu Durdurma ve Başlatma ................................................ 25<br />

2.10 Apache Web Sunucusuna Sayfa Yükleme ..................................................... 25<br />

2.11 Apache Sunucusu Konfigürasyonu ................................................................ 28<br />

2.12 MS-IIS (İnternet Information Services) Sunucusu Kurulumu ....................... 28<br />

2.13 PSPad Editörü................................................................................................. 29<br />

2.14 Referanslar...................................................................................................... 30<br />

Bölüm 3 ......................................................................................... 31<br />

HTML ........................................................................................... 31<br />

3.1 Amaç .................................................................................................................. 31<br />

3.2 Giriş.................................................................................................................... 31<br />

3.3 Web Tarayıcıları................................................................................................. 32<br />

3.4 HTML ile basit bir web sayfası oluşturma......................................................... 32<br />

3.5 Web sayfası belgelerinin uzantıları.................................................................... 35<br />

3.6 Web tarayıcısı ile Web sayfası kaynak kodu görüntüleme ................................ 35<br />

II


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

3.7 HTML imleri...................................................................................................... 36<br />

3.8 HTML Elemanları.............................................................................................. 36<br />

3.9 HTML Belgesi Baş kısmı................................................................................... 37<br />

3.10 HTML Metin Biçimlendirme Elemanları....................................................... 37<br />

3.11 HTML Elemanları Öznitelikleri ..................................................................... 40<br />

3.12 Web Sayfası Arka Plan Rengi Ayarlama ....................................................... 41<br />

3.13 HTML Dilinde Renk Gösterimi ..................................................................... 42<br />

3.14 Özel Karakterler ............................................................................................. 44<br />

3.15 Bağlantılar ...................................................................................................... 46<br />

3.16 Bağlantılar Üzerinde Metin Gösterme............................................................ 48<br />

3.17 Bir web sayfanın alt bölümlerine bağlantı oluşturma..................................... 48<br />

3.18 Göreli Bağlantılar ........................................................................................... 51<br />

3.19 Referanslar...................................................................................................... 54<br />

Bölüm 4 ......................................................................................... 55<br />

GÖRÜNTÜLER........................................................................... 55<br />

4.1 Amaç .................................................................................................................. 55<br />

4.2 Giriş.................................................................................................................... 55<br />

4.3 Görüntülerin Bilgisayarlarda Kaydedilmeleri.................................................... 56<br />

4.4 BMP, GIF, PNG ve JPEG Dosya Tipleri........................................................... 57<br />

4.2.1 BMP Dosya tipi........................................................................................... 57<br />

4.2.2 GIF Dosya tipi............................................................................................. 57<br />

4.2.3 PNG Dosya tipi........................................................................................... 57<br />

4.2.4 JPEG Dosya Tipi......................................................................................... 59<br />

4.5 HTML ile Görüntü Sunumu............................................................................... 60<br />

4.6 Resim Boyu ve Resim Etrafında Metin Görüntüleme ....................................... 63<br />

4.7 Tampon Boşluk: hspace ve vspace ............................................................. 64<br />

4.8 Görüntülerin Düğme Olarak Kullanılması......................................................... 66<br />

4.9 Görüntüler Üzerinde Tıklanabilir Bölgeler........................................................ 67<br />

4.10 Arka Plan Olarak Görüntü Kullanma ............................................................. 70<br />

4.11 Referanslar...................................................................................................... 72<br />

Bölüm 5 ......................................................................................... 74<br />

LİSTELER VE TABLOLAR ..................................................... 74<br />

5.1 Amaç .................................................................................................................. 74<br />

5.2 Liste Çeşitleri ..................................................................................................... 74<br />

5.3 Sıralı Listeler...................................................................................................... 75<br />

5.4 Sırasız Listeler.................................................................................................... 77<br />

5.5 Tanım Listeleri ................................................................................................... 79<br />

5.6 Tablolar .............................................................................................................. 80<br />

5.5.1 Birleşik Satırlar ve Şutunlar: rowspan ve colspan öznitelikleri.................. 82<br />

5.5.2 Tablo Arka Plan Rengi Ayarlama: bgcolor özniteliği............................ 85<br />

5.5.3 Hücreler Arasındaki Mesafeleri Ayarlama: cellspacing ve<br />

cellpadding ........................................................................................................ 88<br />

5.5.4 Tablo Boyu ve Metin Pozisyonu Ayarlama: width, height, align<br />

ve valign.............................................................................................................. 91<br />

5.5.5 Web Sayfası Tasarımı İçin Tablo Kullanımı .............................................. 94<br />

III


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

5.5.6 Tablolarla Başlık, Menü ve Gövde Tipi Web Sayfası Tasarımı................. 96<br />

5.7 Özetle ................................................................................................................. 99<br />

5.8 Referanslar ......................................................................................................... 99<br />

Bölüm 6 ....................................................................................... 100<br />

BASAMAKLI STİL SAYFALARI (CSS)............................... 100<br />

6.1 Amaç ................................................................................................................ 100<br />

6.2 Giriş.................................................................................................................. 100<br />

6.3 Mantıksal ve Fiziksel Düzenleme .................................................................... 100<br />

6.4 İlk CSS Örneği ................................................................................................. 101<br />

6.5 CSS ile Arka Plan Rengi Ayarlama ................................................................. 104<br />

6.6 CSS ile Metin Fontu Ayarlama ........................................................................ 106<br />

6.7 HTML Elemanları id özniteliği ...................................................................... 110<br />

6.8 HTML elemanları class özniteliği................................................................ 112<br />

6.9 HTML imi......................................................................................... 116<br />

6.10 HTML elemanları style özniteliği ve imi.................................... 118<br />

6.11 Harici Stil Sayfaları Kullanarak Bir Sayfaya Stil Eklemek.......................... 120<br />

6.12 Bir Grup HTML Elemanı İçin Stil kuralı Yazma......................................... 123<br />

6.13 Bir HTML Elemanını Çok Sınıfa Dâhil Etme.............................................. 123<br />

6.14 Web Sayfası Tasarımı İçin CSS Kullanımı .................................................. 124<br />

6.15 CSS Kullanarak Web Sayfasını Farklı Alt Bölgelere Ayırma ..................... 128<br />

6.16 Özet............................................................................................................... 132<br />

6.17 CSS ile ilgili Faydalanılabilecek Kaynaklar................................................. 133<br />

6.18 Referanslar.................................................................................................... 133<br />

Bölüm 7 ....................................................................................... 135<br />

JAVASCRİPT ............................................................................ 135<br />

7.1 Amaç ................................................................................................................ 135<br />

7.2 Giriş.................................................................................................................. 135<br />

7.3 Sunucu ve İstemci Tarafı Programlama........................................................... 136<br />

7.4 JavaScript ve VBScript .................................................................................... 136<br />

7.5 JavaScript ve Java ............................................................................................ 136<br />

7.6 Betik Dilleri...................................................................................................... 137<br />

7.7 İlk JavaScript Örneği: imi............................................................ 137<br />

7.8 Değişkenler....................................................................................................... 139<br />

7.9 Stringler............................................................................................................ 141<br />

7.10 Karar Yapıları: if, else, else if....................................................................... 143<br />

7.11 JavaScript dilinde Açıklamalar..................................................................... 145<br />

7.12 Fonksiyonlar ................................................................................................. 145<br />

7.13 Küçük Pencereler: alert(), confirm(), prompt().......................... 148<br />

7.14 JavaScript ile Tablo Oluşturma .................................................................... 153<br />

7.15 Döngüler ....................................................................................................... 155<br />

7.16 Harici JavaScript Dosyası Kullanma............................................................ 157<br />

7.17 Diziler ........................................................................................................... 158<br />

7.18 Özetle............................................................................................................ 161<br />

7.19 JavaScript ile İlgili Bazı Kaynaklar.............................................................. 162<br />

7.20 Referanslar.................................................................................................... 162<br />

IV


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Bölüm 8 ....................................................................................... 164<br />

MULTİMEDYA......................................................................... 164<br />

8.1 Amaç ................................................................................................................ 164<br />

8.2 Giriş.................................................................................................................. 164<br />

8.3 Dijital Sesin Temelleri ..................................................................................... 164<br />

8.4 Sesin Kaydedilmesi.......................................................................................... 166<br />

8.5 Sesin Sıkıştırılması........................................................................................... 167<br />

8.6 Ses Dosyalarının Web Sayfalarına Konulması ................................................ 169<br />

8.7 Midi Melodi Dosyaları ve Arka Plan Sesi ....................................................... 170<br />

8.8 Video Kaydetme............................................................................................... 172<br />

8.9 Video Dosyalarının Web Sayfasında Sunumu................................................. 174<br />

8.10 Başka Sitelerdeki Videoların Web Sayfasına Yerleştirilmesi ...................... 175<br />

8.11 Flash Videosu Oluşturma ve Web Sayfasına Yerleştirme............................ 178<br />

8.12 Referanslar.................................................................................................... 182<br />

Bölüm 9 ....................................................................................... 183<br />

WEB SAYFASI TASARIMI VE EDİTÖR KULLANIMI.... 183<br />

9.1 Amaç ................................................................................................................ 183<br />

9.2 Giriş.................................................................................................................. 183<br />

9.3 Web Sayfası Tasarımı Prensipleri.................................................................... 183<br />

9.4 HTML Editörleri .............................................................................................. 185<br />

9.2.1 HTML Metin Editörü................................................................................ 185<br />

9.2.2 WYSIWYG Editörü.................................................................................. 185<br />

9.5 HTML Editörü Programları ............................................................................. 186<br />

9.6 Adobe Dreamweaver CS4................................................................................ 186<br />

9.7 Dreamweaver CS4 ile bir Sayfa Oluşturma ..................................................... 186<br />

9.8 Dreamweaver ile Sayfaya Başlık, Paragraf ve Liste Ekleme........................... 189<br />

9.9 Arka Plan Rengi Ayarlama .............................................................................. 191<br />

9.10 Sayfa Marginini Ayarlama ........................................................................... 192<br />

9.11 Metin Font Özellikleri Ayarlama ................................................................. 194<br />

9.12 Bağlantı Oluşturma....................................................................................... 197<br />

9.13 Sayfaya Görüntü Ekleme.............................................................................. 199<br />

9.14 Tablo İşlemleri.............................................................................................. 206<br />

9.15 Site Oluşturma .............................................................................................. 209<br />

9.16 Şablon Oluşturma ......................................................................................... 211<br />

9.17 Şablona Göre Sayfa Oluşturma .................................................................... 214<br />

9.18 Özetle............................................................................................................ 216<br />

9.19 Referanslar.................................................................................................... 216<br />

V


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

DERSİN AMACI<br />

Bu dersimizde hedefimiz, öğrencilerimizin web sayfası tasarım teknolojilerinin<br />

temellerini öğrenmesi ve web sayfası tasarımı yapabilmeleridir. Bu amaçla öncelikle<br />

İnternet ve Web ile ilgili temel kavramlar birimci bölümde işlenmiştir. Bu bölümde<br />

öğrencilerimizin İnternet’in yapısı ve çalışma prensipleri hakkında temel bilgilerle<br />

donanmaları hedeflenmiştir. İkinci bölümde, web tarayıcıları ve sunucuları kavramları<br />

işlenmiş, bu programların kurulum ve çalışma prensipleri açıklanmıştır.<br />

Üçüncü bölümde HTML diline giriş yapılmış, öğrencilerin bu dilin ana<br />

özelliklerini ve kullanma şeklini öğrenmeleri hedeflenmiştir. Dördüncü bölümde, görüntü<br />

dosyalarının temelleri anlatılmış, sıkıştırma algoritmaları işlenmiş ve bu dosyaların web<br />

sayfaları içinde kullanılmasının öğrenilmesi hedeflenmiştir. Beşinci bölümde web<br />

sayfalarında liste ve tablo kullanımı anlatılmış, öğrencilerimizin düzenli verileri web<br />

sayfalarında liste ve tablo halinde sunmayı öğrenmeleri hedeflenmiştir. Ayrıca web<br />

sayfası tasarımında tablo kullanımı anlatılmış, web sayfası tasarımının temellerinin<br />

öğrenilmesi hedeflenmiştir.<br />

Altıncı bölümde CSS metin düzenleme dili anlatılmıştır. Bu dilin ana özellikleri<br />

işlenmiş, web sayfası içinde HTML ile birlikte nasıl kullanılacağı örneklerle anlatılmıştır.<br />

Bu dilin sağladığı avantajlar ve kullanım alanları açıklanmıştır. Öğrencilerin bu dilin ana<br />

özelliklerini öğrenmeleri ve web sayfası içinde bu dili kullanabilmeleri hedeflenmiştir.<br />

Yedinici bölümde JavaScript dili işlenmiş, bu dilin nasıl çalıştığı ve hangi<br />

durumlarda kullanılması gerektiği anlatılmıştır. Bu dilin temel kuralları işlenmiş, bu dil<br />

ile yapılabilecek programlara örnekler verilmiştir. Öğrencilerin bu dil ile yazılan<br />

kütüphane fonksiyonlarını kullanabilme becerilerinin geliştirilmesi hedeflenmiştir.<br />

Sekizinci bölümde web sayfalarında multimedya kullanımı işlenmiştir. Dijital<br />

sesin ve videonun temelleri anlatılmış, web sayfalarına ses ve video koymanın farklı<br />

metodları gösterilmiştir.<br />

Dokuzuncu ve son bölümde ise web sayfası geliştirmek için editör kullanımı<br />

üzerinde durulmuştur. Web sayfası geliştirme editörlerinden Adobe Dreamweaver CS4<br />

editörünün, web sayfası geliştirmek için nasıl kullanılacağı işlenmiştir.<br />

VI


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Bölüm 1<br />

TEMEL İ<strong>NTERNET</strong> KAVRAMLARI<br />

1.1 Amaç<br />

Bu bölümde amacımız, İnternet’in ve Web’in ne olduğunun ve nasıl çalıştığının<br />

anlaşılmasıdır. Ayrıca İnternet ile Web arasındaki farkların öğrenilmesidir. Bu amaçla,<br />

öncelikle İnternet’in ne olduğu ve tarihçesi kısaca açıklanmıştır. Sonra İnternet’in yapısı<br />

ve çalışma şekli anlatılmıştır. Bu bağlamda paket iletiminin çalışma şekli ve IP protokolü<br />

işlenmiştir. Router’lar ve DNS sistemi açıklanmıştır. Daha sonra güvenilir paket iletimi<br />

için TCP protokolü ve TCP portları anlatılmıştır. Son kısımda ise Web sisteminin transfer<br />

mekanizmasını oluşturan http protokolü işlenmiş, web sunucuları ile web tarayıcılarının<br />

çalışma şekli anlatılmıştır.<br />

1.2 İnternet Nedir<br />

İnternet[1] dünya üzerindeki çok sayıdaki bilgisayar ağının birbirine<br />

bağlanmasından oluşan küresel bir bilgisayar ağıdır. Bu ağ dünya üzerindeki birçok<br />

akademik, ticari ve devlet kurumlarının yerel ağlarının birbirine bağlanmasından oluşur.<br />

Bu küresel ağ vasıtasıyla değişik kurumlardaki ve coğrafyalardaki bilgisayarlar<br />

birbirleriyle haberleşir ve aralarında bilgi alışverişi yaparlar. Şu anda İnternet birçok<br />

farklı alanda dünya genelinde birbuçuk milyardan fazla insan [2] tarafından yaygın olarak<br />

kullanılmaktadır.<br />

1.3 İnternet’in Kısa Tarihçesi<br />

Modern anlamdaki ilk bilgisayar 1946 senesinde ABD'de yapımı tamamlanan<br />

ENIAC[3] olarak kabul edilir. Onu izleyen yıllarda bilgisayar üretimi ve kullanımı arttı.<br />

O yıllarda bu bilgisayarlar daha çok askeri ve araştırma amaçlı kullanılmaktaydı.<br />

1


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Bilgisayarların sayısı artıp coğrafi olarak uzak yerlerdeki araştırmacıların bilgi paylaşımı<br />

ihtiyacı doğunca, aradaki iletişimi daha hızlı ve etkin hale getirmek için uzak yerlerdeki<br />

bilgisayarları birbirine bağlama ihtiyacı doğdu. Bu şekilde farklı coğrafi bölgelerdeki<br />

bilgisayarları birbirine bağlayarak oluşturulan ilk bilgisayar ağı ARPANET'dir [4].<br />

ARPANET İnternet’in atası olarak kabul edilir. ARPANET bilgisayar ağı 1969 yılında<br />

ABD'deki dört araştırma laboratuarındaki bilgisayarların birbirine bağlanmasıyla<br />

oluşturuldu. Bu ağ telefon sisteminde kullanılan devre anahtarlaması tekniği yerine paket<br />

anahtarlaması tekniğini kullanarak şu anki İnternet’in temellerini oluşturdu. ARPANET<br />

ağı ABD savunma bakanlığı tarafından desteklenen bir oluşumdu. Onun için gelişimi<br />

daha çok askeri ve araştırma laboratuarlarıyla sınırlı kaldı. Fakat ARPANET'in öncülük<br />

ettiği yöntemler ve teknolojilerin benzerleri kullanılarak başka ağlar kuruldu. Örneğin<br />

İngiltere’de 1983 yılında bu ülkedeki akademik kuruluşları birbirine bağlamak amacıyla<br />

JANET [5] ağı kuruldu. Fakat kurulan ağlardan en önemlisi 1986 yılında ABD'deki<br />

üniversitelerdeki süper bilgisayarları birbirine bağlamak amacıyla oluşturulan NSFNET<br />

[6] bilgisayar ağı oldu. Bu ağ üniversiteler arasındaki iletişim için etkin bir ortam<br />

oluşturdu ve çok kısa zamanda hızla yayıldı. NSFNET sağlamış olduğu etkin ve hızlı<br />

bilgi paylaşımı dolayısıyla özel sektöre ve dünyanın diğer yerlerindeki kurumlara örnek<br />

oldu. Böylece ilerleyen yıllarda birçok ülkede bu tür ağlar kurulmaya başlandı. Ayrıca<br />

büyük ölçekli özel sektör firmaları da kendi ağlarını oluşturdular. İşte dünya geneline<br />

yayılmış olan bu akademik, devlet ve ticari ağların birbirine bağlanmasıyla da bugünkü<br />

İnternet dediğimiz global ağ oluşmuş oldu. Bütün bu ağların birbirleriyle bilgi alışverişi<br />

yapabilmeleri için gereken ortak dil de TCP/IP protokolü oldu. Bu ortak dilin yerleşmesi<br />

ve bilgisayar fiyatlarının düşüp, kullanımın yaygınlaşmasıyla İnternet hızla büyüdü,<br />

gelişti ve yaygınlaştı.<br />

Bilgisayar ağları ilk zamanlar daha çok elektronik dosya paylaşımı (ftp) ve eposta<br />

için kullanılmaktaydı. 1990'larin başında HTML dilinin ve web tarayıcı ve<br />

sunucularının geliştirilmesiyle web tabanlı bilgi paylaşımı arttı. Hemen akabinde ise web<br />

tabanlı e-ticaret uygulamaları gelişti. Bugün artık İnternet çok geniş bir yelpazede hayatın<br />

her alanında kullanılmaktadır. E-posta ve dosya paylaşımı İnternet’te hala önemli bir yere<br />

sahiptir. Fakat artık eğlenceden e-ticarete, oradan sesli ve görüntülü haberleşmeye kadar<br />

çok farklı alanlarda İnternet vazgeçilmez bir ortam olmuş durumdadır.<br />

1.4 İnternet’in Yapısı<br />

İnternet, dünya genelindeki çok fazla sayıda ve ölçekteki bilgisayar ağlarının<br />

birbirine bağlanmasından oluşur. Öncelikle bir kurumdaki bilgisayarlar birbirine<br />

bağlanarak o kurum içinde yerel bir bilgisayar ağı oluşturur. Daha sonra o kurumun yerel<br />

ağı bu kurumun da bir parçası olduğu daha büyük bir üst ağa bağlanır. Bu üst ağ da diğer<br />

global ağlara bağlanır.<br />

Örneğin Mersin Üniversitesinin bilgisayar ağını düşünelim. Bu üniversitedeki<br />

bilgisayarlar birbirine bağlanarak üniversite içinde bir yerel ağ oluştururlar. Bu<br />

bilgisayarlar kendi aralarında dışarıya ihtiyaç duymadan bilgi alışverişi yapabilirler. Yani<br />

Mersin Üniversitesi yerel ağı kendi içinde bir bütündür. Fakat üniversite bünyesindeki<br />

2


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

bilgisayarların diğer üniversitelerdeki bilgisayarlarla haberleşebilmesi için bu üniversite<br />

yerel ağı Türkiye’deki bütün üniversitelerin bağlı olduğu UlakNET[7] üst ağına bağlanır.<br />

UlakNET üst ağı Türkiye’deki bütün üniversiteler ve araştırma kurumlarını birbirine<br />

bağlayan ulusal bir ağdır. Dolayısıyla Türkiye’deki bütün üniversitelerin kendi yerel<br />

ağları ve bütün bu yerel ağların da bağlı olduğu ULAKNET ulusal ağı vardır.<br />

Daha sonra UlakNET ağı Türk Telekom’un ülke geneline yayılmış olan TTNET<br />

ticari ağına bağlanır. Böylece Türk Telekom’dan İnternet hizmeti alan kullanıcılar ile<br />

üniversitelerin kullanıcıları birbirleriyle haberleşebilir. Diğer yandan Avrupa’daki hemen<br />

hemen bütün ülkelerde UlakNET ağına benzer akademik ağlar vardır. Avrupa<br />

ülkelerindeki bu ulusal akademik ağların birbirine bağlanmasından da GEANT[8] adı<br />

verilen Avrupa çapında bir akademik üst ağ oluşmuştur. UlakNET ağı da bu Avrupa<br />

genelindeki akademik üst ağa bağlanarak ülkemiz üniversitelerini Avrupa üniversiteleri<br />

ile bağlar. Öte yandan Türk Telekom’un TTNET ulusal ticari ağı dünyanın diğer<br />

yerlerindeki ticari global ağlara bağlanarak ülkemiz kullanıcılarının dünya ile iletişimini<br />

kurar. Sekil 1-1'de görülen resim UlakNET web sayfasından<br />

(http://www.ulakbim.gov.tr/hakkimizda/tarihce/ulaknet/dunbugun.uhtml) alınmış olup<br />

UlakNET ağının 2009 Ağustosu itibariyle genel şemasını göstermektedir.<br />

Şekil 1.1 Türkiye UlakNET ulusal internet ağı<br />

Benzer şekilde Türkiye’deki İnternet’e bağlı her hangi özel bir şirket, önce<br />

kurumu içindeki bilgisayarları birbirine bağlayarak yerel bir ağ oluşturur. Daha sonra<br />

kendi yerel ağını Türkiye’deki İnternet sağlayıcısı olan Türk Telekom TTNET ulusal<br />

ağına bağlar. Böylece bütün Türkiye’deki TTNET ağına bağlı kişi ve kurumlarla<br />

haberleşebilir. Daha sonra TTNET ağı da diğer global ağlara bağlanır. Böylece bu şirket<br />

dünyanın her yerindeki İnternet’e bağlı bilgisayarlarla iletişim kurabilir.<br />

3


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

1.5 Paket anahtarlaması<br />

İnternet’e bağlı bilgisayarlar arasındaki haberleşmeler karşılıklı bilgi paketi<br />

alışverişi ile olur. Örneğin İnternet’e bağlı iki bilgisayardan A bilgisayarı B bilgisayarına<br />

bir mesaj göndermek istesin. A bilgisayarı göndereceği bilgiyi bir bilgi paketine koyar ve<br />

üzerine B bilgisayarının adresini yazar. Daha sonra kendisinin bağlı olduğu yerel ağdaki<br />

ağ yöneticisi bilgisayarına (router) paketi gönderir. Yerel router'da paketin üzerindeki<br />

adresi inceleyip gitmesi gereken hedefe doğru yönlendirir. Gönderilmek istenen paket bu<br />

şekilde üzerindeki adres yardımıyla ağlar arasında adım adım hedefe doğru<br />

yönlendirilerek B bilgisayarına ulaştırılır. Eğer gönderilecek bilgi tek pakete sığmayacak<br />

kadar büyükse, bu bilgi birbirinden bağımsız birden çok paket halinde gönderilir.<br />

İnternet’teki bilgi alışverişi telefon sistemindeki haberleşme sisteminden daha çok<br />

posta sistemindeki haberleşmeye benzer. Telefon sisteminde iki kişi arasında konuşma<br />

başlamadan önce, bu iki kişi arasında önce fiziksel bir bağlantı kurulur. Bu tür bir<br />

bağlantı sekline devre anahtarlaması denilir. Diğer yandan İnternet’te ise iki birimin<br />

haberleşmesi için arada önce fiziksel bir ağ kurulmasına gerek yoktur. Posta sisteminde<br />

olduğu gibi, bilgi gönderecek bilgisayar alıcı adresini bildikten sonra adresi yazıp mesajı<br />

paket halinde gönderir. Bu tür bir haberleşme şekline ise paket anahtarlaması denilir.<br />

Yalnız İnternette paket iletimi çok hızlı olduğu için bilgiler sanki arada bir bağlantı<br />

varmış gibi hızlı iletilebilir. Dolayısıyla eş zamanlı chat ve ses transferi (İP-telefonu) gibi<br />

uygulamalar da İnternet üzerinden çalışabilir.<br />

1.6 IP Adresleri<br />

İnternet’e bağlı her bilgisayarın bir adresi vardır. Bu adres vasıtasıyla<br />

bilgisayarlar arasında iletişim mümkün olmaktadır. Bu adres İnternet protokolü (IP) ile<br />

tanımlanmış olan 4 byte uzunluktaki bir sayıdır. Buna bir bilgisayarın IP adresi denilir.<br />

Her bilgisayarın IP adresi kendisine özeldir. Böylece dünyanın farklı yerlerindeki<br />

bilgisayarlar birbirileriyle haberleşebilirler. Mesela www.mersin.edu.tr adresindeki<br />

bilgisayarın IP adresi: 193.255.128.4 sayısıdır. IP adresleri yazılırken 4 bölüm halinde<br />

yazılırlar ve araya nokta konulur. Her IP adresi dünya genelinde tek olması gerektiği için<br />

dünya genelinde IP adreslerini dağıtan tek bir otorite vardır. Bu da İnternet Assigned<br />

Numbers Authority (www.iana.org) kurumudur.<br />

IP adresleri tek tek dağıtılmak yerine bloklar halinde kurumlara verilir. Mesela,<br />

Türk Telekom’a çok sayıda IP adresi verilmiştir. Türk Telekom bu adresleri kendi ağı<br />

vasıtasıyla İnternet’e bağlanan ev kullanıcılarına ve şirket kullanıcılarına verir. Bazen bu<br />

adres dağıtma işlemi dinamik olabilirken, bazen da statik olur. Dinamik olduğu<br />

durumlarda bir kullanıcıya değişik zamanlarda değişik IP adresleri verilebilir. Mesela, bir<br />

ADSL kullanıcısının IP adresi dinamikse, bu kullanıcı İnternet’e bağlandığı farklı<br />

zamanlarda farklı IP adresleri alabilir. Eğer IP adresi statik ise, bu durumda aynı<br />

kullanıcıya her zaman aynı IP adresi verilir. Diğer yandan üniversiteler gibi büyük<br />

kurumlara da blok halinde IP adresleri verilir. Bu kurumlar aldıkları IP adres grubunu<br />

kendi iç ağlarındaki bilgisayarlara istedikleri gibi dağıtırlar.<br />

4


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

1.7 Routerlar ve Paket İletimi<br />

İnternet üzerinde bilgi paketleri bir noktadan diğer noktaya gönderilirken birçok<br />

ara birimden geçer. Ağlar arasındaki bilgi paketinin iletimini router denen özel üretilmiş<br />

bilgisayarlar yapar. Routerlar aldıkları paketleri incelerler, gidecekleri adresi kontrol<br />

edip, o adresin bulunduğu ağa doğru paketi yönlendirirler. Mesela, Mersin<br />

Üniversitesi’ndeki bir bilgisayardan Çukurova Üniversitesi’ndeki başka bir bilgisayara<br />

bir paket gönderilsin. Bu paket kabaca şu şekilde bir yol izler. Önce, Mersin<br />

Üniversitesi’ndeki bilgisayar göndereceği paketi Mersin Üniversitesi’ndeki routera<br />

gönderir. Bu router aldığı paketi inceler ve sonra Çukurova Üniversitesi’ne gönderilmesi<br />

için Ankara’daki bir routera gönderir. Çünkü Mersin Üniversitesi ile Çukurova<br />

Üniversitesi arasında direk bir İnternet hattı yoktur. Ankara’daki router da, bu paketi alır<br />

ve Çukurova’daki routera gönderir. Çukurova’daki router da, paketi alıp, son hedefine<br />

gönderir. Özetle İnternet’teki paket iletimini router denen özel üretilmiş bilgisayarlar<br />

yaparlar. Bu iletimi de paketler üzerindeki IP adreslerine göre yaparlar.<br />

Örnek Uygulama:<br />

Bir paketin İnternet üzerinden iletilirken hangi routerlar üzerinden gittiğini<br />

gösteren bir program vardır. Bu programı MS Windows işletim sistemi olan bir<br />

bilgisayarınızda şu şekilde kullanabilirsiniz. Önce başlat menüsüne tıklayınız, bütün<br />

programlar içindeki “Donatılar” kısmından “Komut İstemi” programını çalıştırınız.<br />

Komut satırında tracert komutunu kullanarak bu işlemi gerçekleştirebilirsiniz. Mesela,<br />

bağlı olduğunuz bilgisayardan www.mersin.edu.tr adresine göndereceğiniz bir paketin<br />

izlediği yolu komut satırına şu komutu yazarak görebilirsiniz:<br />

>tracert www.mersin.edu.tr<br />

Şekil 1-2’deki pencere resminde Mersin’deki bir ev ADSL kullanıcısının<br />

bilgisayarından bu komut çalıştığında üzerinden gidilen routerlar gözükmektedir. Evdeki<br />

bilgisayar ADSL ile İnternet’e bağlı olduğu için, önce paket birçok TTNET routerı<br />

üzerinden gidiyor. Sonra UlakNET routerlarına geçiyor ve son adımlarda da hedefe<br />

ulaşıyor.<br />

5


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Şekil 1.2 Windows'ta tracert kullanım örneği<br />

1.8 Alan İsimleri ve Alan Sunucuları<br />

Her ne kadar İnternet’e bağlı bütün bilgisayarların kendilerine ait IP adresleri olsa<br />

da, bu IP adreslerini insanların öğrenip hatırlayabilmeleri zordur. Onun için insanların<br />

uzaktan erişmesi gereken ve çeşitli sunucuların çalıştığı bilgisayarlara öğrenmesi,<br />

hatırlaması ve kullanması daha kolay olan alan isimleri (domain name) verilir. Örneğin<br />

Mersin Üniversitesi web sunucusunun çalışmakta olduğu makinenin alan adı<br />

www.mersin.edu.tr'dir. Bu isim aynı makinenin IP adresi olan 193.255.128.4 sayısına<br />

göre öğrenmesi ve hatırlaması çok daha kolaydır. Artık kullanıcılar bu IP adresini hiç<br />

öğrenmeden alan adıyla bu bilgisayara erişebilirler.<br />

Örnek Uygulama:<br />

Şimdi Mersin Üniversitesi web sunucusuna hem IP adresi, hem de alan adıyla<br />

erişelim. Bunun için önce web tarayıcınızı çalıştırınız. Sonra tarayıcıda gitmek istediğiniz<br />

web adresi kısmına http://www.mersin.edu.tr adresini yazınız. Enter tuşuna bastığınız<br />

zaman, tarayıcınız Mersin Üniversitesi web sunucusuna bağlanır ve bu sunucunun<br />

göndermiş olduğu web sayfasını size gösterir. Şimdi aynı işlemi aynı sunucunun IP<br />

adresini kullanarak yapalım. Bu defa tarayıcınızın adres kısmına bu makinenin IP<br />

adresini şu şekilde http://193.255.128.4 yazınız. Enter tuşuna bastığınızda yine aynı web<br />

sayfasının gelmiş olduğunu göreceksiniz. İşte bu şekilde web sunucusunun çalışmış<br />

olduğu makineye hem alan ismiyle hem de IP adresiyle bağlanılabilir.<br />

Yalnız bu artık bilgisayarlar arasındaki paket alışverişinde de IP adresleri yerine<br />

alan adlarının kullanıldığı anlamına gelmez. Paket alışverişinde yine IP adresleri<br />

kullanılmaya devam edilir. Alan isimleri sadece bağlanmak istediğimiz makinenin IP<br />

adresini öğrenmek için kullanılır. Kullanıcı web tarayıcısına bir alan adını yazdığında,<br />

6


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

web tarayıcısı önce bu alan adındaki makinenin IP adresini öğrenir. Sonra da bu IP<br />

adresiyle o makineye bağlanıp paket alışverişini yapar.<br />

Dünyadaki bütün alan isimlerini yöneten tek bir otorite vardır. Bu da İnternet<br />

Corporation for Assigned Names and Numbers (www.icann.org) isimli kuruluştur. Bu<br />

kuruluş alan isimlerinin kişi ve kurumlara verilmesinden ve global alan sunucularının<br />

çalıştırılmasından sorumludur. Hangi alan isimlerinin hangi IP adreslerine karşılık geldiği<br />

alan sunucularında kayıtlıdır. Dünya genelinde çalışan birçok alan sunucusu vardır. Bu<br />

alan sunucularına DNS (Domain Name Server) denilir. Bunlar da kendi aralarında belirli<br />

bir düzenle çalışır. İnternet’e bağlı her bilgisayar en az bir alan sunucusunun adresini<br />

bilir. IP adresini bilmediği bir alan ismi ile karşılaşan bir bilgisayar, adresini bildiği alan<br />

sunucusuna mesaj göndererek bu alan adının hangi IP adresine karşılık geldiğini sorar.<br />

Alan sunucusu kendisine sorulan alan adının karşılık geldiği IP adresini biliyorsa, yani<br />

kendi veri tabanında bu bilgi varsa cevabı hemen gönderir. Eğer bilmiyorsa bu alan<br />

sunucusu diğer alan sunucularına sorar. Bu şekilde istenilen IP adresi bulunana kadar<br />

alan sunucuları arasındaki mesajlaşma trafiği devam eder. Sonunda cevap bulunur ve ilk<br />

istek mesajını gönderen bilgisayara o alan adının hangi IP adresine karşılık geldiği bilgisi<br />

ulaştırılır. Artık bu noktadan sonra bu bilgisayar bu alan adı ile isimlendirilen bilgisayara<br />

o bilgisayarın IP adresini kullanarak iletişim kurar. Görüldüğü gibi İnternet’e bağlı<br />

bilgisayarlar arasındaki mesajlaşma, yani bilgi paketi alışverişi için IP adresleri kullanılır.<br />

Alan isimleri ise ulaşmak istediğimiz bilgisayarların IP adreslerini öğrenmek için<br />

kullanılır.<br />

Alan sunucularını büyük bir telefon defterine benzetebiliriz. Nasıl ki bir telefon<br />

defterinde hangi ismin hangi telefon numarasına karşılık geldiği yazıyorsa, benzer şekilde<br />

alan sunucularında da hangi alan adının hangi IP adresine karşılık geldiği bilgisi vardır.<br />

Benzer şekilde nasıl ki bir arkadaşımıza o kişinin ismiyle değil de telefon numarasıyla<br />

telefon edebiliyorsak, İnternet üzerinden de bir bilgisayara o bilgisayarın alan adıyla değil<br />

IP numarasıyla erişiriz.<br />

İnternet’te her alan adı genellikle bir IP adresine karşılık gelir. Fakat bazı<br />

durumlarda bir alan adı birden fazla IP adresine de karşılık gelebilir. Mesela<br />

www.google.com alan adı farklı ülkelerde farklı IP adreslerine karşılık gelebilir. Bu<br />

durumda Google firmasının her ülkede farklı farklı sunucuları vardır. Aynı adresi<br />

Brezilyada yazan kişi Brezilya’daki Google sunucusuna ulaşırken, Türkiye’de yazan kişi<br />

Türkiye’deki Google sunucusuna ulaşabilir. Bu da Google için daha esnek bir yapı sağlar.<br />

Telefon defteri örneğimiz üzerinde düşünmeye devam edersek; nasılki bazen tek bir<br />

kişinin birden fazla telefon numarası olabilir, benzer şekilde tek alan adına karşılık gelen<br />

birden fazla IP adresi olabilir.<br />

Diğer yönden bazı durumlarda birden fazla alan adı aynı IP adresine karşılık<br />

gelebilir. Örneğin www.birsiteadi.com adresi ile www.birbaskasiteadi.com adresleri aynı<br />

IP adresine karşılık gelebilir. Bu durumda bu iki sitenin web sunucusu da aynı<br />

bilgisayarda çalışıyor demektir. Aynı evde oturan iki kişinin aynı telefon numarasına<br />

sahip olması gibi.<br />

7


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Fakat alan adlarının çoğu tek bir IP adresine karşılık gelir ve dünyanın neresinden<br />

bir alan adına erişilmek istenirse istensin, aynı IP adresine erişilir. Örneğin<br />

www.mersin.edu.tr alan adının karşılık geldiği bir tane IP adresi vardır ve bu alan adını<br />

dünyanın neresinde hangi web tarayıcısına yazarsak yazalım aynı IP adresine ulaşırız.<br />

Örnek Uygulama:<br />

Normalde alan adından IP adresi öğrenme web tarayıcısı veya E-posta programı<br />

tarafından otomatik olarak gerçekleştirilir. Kullanıcı genellikle alan adından IP adresinin<br />

öğrenilme kısmından haberdar değildir. Alan adını web tarayıcısına yazdığında o sayfaya<br />

erişir. Ama arka planda web tarayıcısı eğer o alan adının IP adresini bilmiyorsa önce<br />

DNS sunucularından o alan adına karşılık gelen IP adresini öğrenir. Şimdi alan adından<br />

IP numarası öğrenme hizmeti veren bir web sayfasından çeşitli alan adları için IP<br />

adreslerini öğrenelim. Web tarayıcınızla http://www.lookupserver.com isimli web<br />

sayfasına bağlanınız. Bu web sitesi alan adlarından IP numarası öğrenme ve IP<br />

adreslerinden de alan adları öğrenme hizmeti vermektedir. Bizim için daha çok gerekli<br />

olan, alan adlarından IP adresi öğrenmektir. Bu web sayfasında bulunan “Forward DNS<br />

Lookup” kısmına IP adresini öğrenmek istediğiniz alan adını yazınız ve Lookup<br />

butonuna basınız. Size bu alan adının hangi IP adresine karşılık geldiğini gösterecektir.<br />

Örneğin önce www.mersin.edu.tr adresini “Forward DNS Lookup” kısmına<br />

yazınız ve “Lookup” butonuna tıklayınız. Cevap olarak yukarda vermiş olduğumuz<br />

193.255.128.4 numaralı IP adresini size verecektir. Merak ettiğiniz başka alan adlarının<br />

IP adreslerini bu alana yazarak öğreniniz.<br />

1.9 Güvenilir İletişim: TCP protokolü<br />

İnternet protokolü (IP) İnternet’e bağlı bilgisayarların adreslerinin nasıl olması<br />

gerektiğini tanımlar ve paket iletiminin kurallarını belirler. Bu protokol güvenilir<br />

olmayan bir paket iletim mekanizması öngörür. Yani A noktasından B noktasına bir IP<br />

paketi gönderildiğinde, bu paketin hedefine varacağı garanti değildir. Bazı durumlarda,<br />

özellikle de routerlarda paket yoğunluğu olduğu durumlarda, bazı paketler düşürülebilir.<br />

Dolayısıyla bazı paketler hedeflerine ulaşamayabilirler. Ama birçok uygulama güvenilir<br />

paket iletimi gerektirir. Örneğin bir dosya bir noktadan diğerine gönderilmek<br />

istenildiğinde, bu dosyanın tamamının eksiksiz olarak karşı tarafa ulaşması istenir. Bu<br />

dosya gönderilirken birçok pakete bölündüyse ve bu paketlerden bazıları yolda<br />

kaybolduysa, karşı tarafta aynı dosya oluşturulamaz. Dolayısıyla bu dosya hiç<br />

kullanılamayabilir.<br />

İşte güvenilir iletişim gerektiği uygulamalarda, yani bilginin bir noktadan diğer<br />

noktaya eksiksiz ve tam olarak ulaştırılması gerektiği uygulamalarda, kullanılmak için IP<br />

üzerinde çalışan TCP protokolü geliştirilmiştir. TCP protokolü, paketleri yine IP paketi<br />

olarak gönderir. Fakat her paketin hedefe ulaşıp ulaşmadığını kontrol eder. Hedefe ulaşan<br />

her paket için onay paketi istenir. Böylelikle her paketin hedefe vardığından emin olunur.<br />

8


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Hedefe varmayan paket olursa, bu paketler tekrar gönderilir. Bu şekilde bazı paketler<br />

transfer anında düşürülse bile, tekrar gönderilerek bütün paketlerin karşı tarafa ulaşımı<br />

sağlanmış olur. TCP protokolü IP protokolü üzerinde çalışan bir katmandır. Onun için<br />

TCP/IP diye anılır. Şu anda güvenilir bilgi transferi gereken uygulamalar için kullanılan<br />

en yaygın protokol TCP protokolüdür. İnternet’in gelişmesi ve yayılmasında da TCP<br />

protokolü çok önemli bir rol oynamıştır. Bu protokolü kullanarak değişik ağlar<br />

birbirlerine bağlanabilmiş ve karşılıklı güvenilir paket alışverişi yapılmıştır.<br />

1.10 TCP Portları<br />

Bazen aynı anda bir bilgisayara birden fazla başka bilgisayar farklı uygulamalar<br />

için bağlanmak isteyebilir. Bu durumda aynı bilgisayara gelen paketlerin farklı<br />

uygulamalara yönlendirilmesi gerekir. Örneğin aynı anda bir bilgisayara hem dosya<br />

transferi olabilir hem de e-posta aktarımı olabilir. İşte aynı bilgisayara gelen değişik<br />

uygulamalara ait paketleri sınıflandırabilmek için port kavramı geliştirilmiştir. Bir<br />

bilgisayara bir paket gönderilirken gönderilecek bilgisayarın IP numarasının yanında<br />

hangi porta gönderileceği de belirtilir. Bir bilgisayardaki portlar 1 ile 65535 arasındaki<br />

bir tamsayıdır. Mesela dosya transferi yapan bir program karşı bilgisayarın IP adresinin<br />

yanına o uygulamaya ait port numarası olan 21 sayısını da ekler. Böylece alıcı bilgisayar<br />

bu paketin dosya transferi için geldiğini tespit eder ve gelen paketleri dosya transferi<br />

yapan uygulamaya yönlendirir. Port numaraları özellikle sunucularda önemlidir. Örneğin<br />

aynı makinede hem web sunucusu, hem dosya transferi sunucusu, hem de e-posta<br />

sunucusu çalışabilir. Bütün bu sunucular farklı portlarda çalışarak, gelen paketlerdeki<br />

port numarasına göre hangi uygulamaya geldiği anlaşılır. Yaygın kullanıma göre web<br />

sunucuları port 80'de, E-posta (SMTP) sunucuları port 25'te, dosya transferi (FTP)<br />

sunucuları port 21'de çalışır. Özetle port numarası 1 ile 65535 arasındaki bir tamsayıdır<br />

ve tek bir bilgisayarda birden fazla uygulamanın İnternet üzerinden paket alabilmesine<br />

imkân tanır.<br />

1.11 Telnet ve TCP Uygulaması<br />

Telnet programı bir bilgisayardan diğer bir bilgisayara TCP bağlantısı<br />

gerçekleştirmek ve o bilgisayara komutlar göndermek için uzun zamandır kullanılan bir<br />

uygulamadır. Yalnız son zamanlarda içerdiği bazı güvenlik risklerinden dolayı kullanımı<br />

azalmış ve yerini daha güvenli olan ssh programlarına bırakmıştır. Fakat Telnet ağ<br />

programlarını test etmek için hala sıklıkla kullanılmaktadır. Biz de Telneti böyle bir<br />

amaçla kullanacağız. Telnet kısaca bir bilgisayardan diğerine TCP bağlantısı kurmamıza<br />

ve karşı tarafa veri göndermemize imkan tanır. Yani bir makinede TCP sunucusu varsa<br />

ve kullanıcıların bu makineye TCP ile bağlanmaları gerekiyorsa, bu durumda biz Telnet<br />

programıyla bu sunucuya bağlanıp veri gönderebiliriz. Örneğin dünyanın değişik<br />

noktalarında o anki zaman bilgisini isteyen kullanıcılara sunan bazı sunucular vardır.<br />

Bunlardan bir tanesi utcnist.colorado.edu adresindeki makinede, bir diğeri ise timea.timefreq.bldrdoc.gov<br />

isimli makinede çalışmaktadır. Bu makinelerdeki zaman<br />

sunucuları 13. portta çalışmaktadır. Bu porta bir TCP bağlantısı gerçekleştirildiğinde, o<br />

9


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

anki zaman bilgisi kullanıcıya verilir ve TCP bağlantısı sonlandırılır. Bu uygulamayı şu<br />

şekilde deneyebiliriz:<br />

Önce bilgisayarınızdaki telnet uygulamasını çalıştırınız. Bunun için bir önceki<br />

örnekte olduğu gibi önce Komut İstem penceresini açınız. Komut satırında:<br />

>telnet<br />

Yazıp enter tuşuna basınız. Bu durumda telnet programı çalışmaya başlar. Sonra<br />

bu sunuculardan birine şu şekilde bir TCP bağlantısı gerçekleştiriniz:<br />

>open utcnist.colorado.edu 13<br />

Bu komutu yazıp enter tuşuna basınca, adresi verilen makineye bir TCP bağlantısı<br />

gerçekleştirilir. Adresin yanında yazılan tamsayı bağlanılacak port numarasını gösterir.<br />

Bu komut çalıştığında siz karşı tarafa her hangi bir veri göndermeden, karşı taraf size o<br />

anki zaman bilgisini aşağıdaki formatta gönderir ve bağlantıyı keser:<br />

54218 07-04-28 12:20:04 50 0 0 947.8 UTC(NIST) *<br />

Connection to host lost.<br />

Press any key to continue...<br />

İlk satır gönderilen zaman bilgisini, ikinci satır ise bağlantının kesildiğini gösterir.<br />

İşte bu uygulamada İnternet üzerinden TCP ile zaman hizmeti veren bir sunucuya<br />

bağlandınız ve size gönderilen zaman bilgisini aldınız.<br />

1.12 Windows Vista’da Telnet Kurulumu<br />

Telnet uygulaması Windows XP işletim sisteminde kurulu olarak gelirken,<br />

Windows Vista işletim sisteminde kurulu olarak gelmemektedir. Bunun için Windows<br />

Vista kullanıcılarının önce Telnet servisini kurmaları gerekmektedir. Telnet kurulumu<br />

gayet basit birkaç adımdan oluşmaktadır. Bunun için:<br />

1. “Başlat” menüsünden “Denetim Masası”, oradan da “Programlar ve<br />

Özellikleri” penceresini açınız.<br />

2. “Programlar ve Özellikleri” penceresindeki sol tarafta bulunan “Windows<br />

Özelliklerini aç veya kapat” metnine tıklayınız.<br />

3. Yeni gelecek penceredeki listede “Telnet İstemcisi” seçeneğini seçiniz ve<br />

Tamam butonuna basınız.<br />

10


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Bu işlemler sonunda Telnet uygulaması Windows Vista bilgisayarlarına<br />

yüklenmiş olur. Artık Komut İstem programı içinden telnet uygulamasını<br />

çalıştırabilirsiniz.<br />

1.13 İstemci-Sunucu Sistemleri<br />

İnternet’teki birçok uygulama istemci-sunucu (kullanıcı-sunucu) mimarisine göre<br />

çalışır. Bir üst bölümdeki zaman hizmeti de bu şekilde çalışan bir uygulama idi. Sunucu<br />

programı yeri ve adresi sabit olan bir bilgisayarda sürekli olarak çalışır. Bu sunucu<br />

programı çoğunlukla kendine TCP protokolü ile gelen isteklere cevap verir. İstemci<br />

programı ise dünyanın her yerinde olabilir. Yerinin ve adresinin sunucu tarafından<br />

bilinmesine ve sürekli olarak çalışmasına gerek yoktur. İstediği zaman sunucuya TCP/IP<br />

ile bağlanır ve sunulan hizmeti almak için ne gerekiyorsa onu yapar. Çoğunlukla alınmak<br />

istenen hizmetle ilgili sunucuya bir mesaj gönderir. Daha sonra sunucu da kullanıcının bu<br />

isteğine olumlu ya da olumsuz bir cevap verir. Dolayısıyla bu sistemde yeri ve adresi<br />

belirli olan ve sürekli çalışan bir sunucu varken, yeri ve adresi belirli olmayan, istediği<br />

zaman sunucuya bağlanıp hizmet alan istemciler vardır. Sunucu tek veya az sayıda iken,<br />

kullanıcı yani istemci çoktur. Diğer yandan aynı anda bir sunucu birden fazla kullanıcıya<br />

da hizmet verebilir. Hatta bazı durumlarda aynı anda binlerce kullanıcıya bile hizmet<br />

verilebilir.<br />

Örneğin bir bakkal sunucu gibi çalışır. Yeri ve adresi sabittir ve en azından<br />

gündüzleri sürekli olarak çalışır. Müşteriler de istemci gibidir. Müşterinin yerinin ve<br />

adresinin belirli olması gerekli değildir. Ayrıca müşteri için bir zaman kısıtlaması da söz<br />

konusu değildir. Müşteri istediği zaman gelip alışverişini yapar. İnternetteki sunucular da<br />

bakkal gibi sürekli çalışır. Fakat onlar gece gündüz durmadan çalışır. Ayrıca yerleri ve<br />

adresleri sabittir. İstemciler de yine dünyanın herhangi bir yerinde olabilir ve günün<br />

herhangi bir anında sunucuya bağlanıp bir hizmet talebinde bulunabilir.<br />

İnternet üzerinde kullanıcı-sunucu mimarisinde çalışan belki de en yaygın<br />

uygulama http yani web sunucusu hizmetidir. Web sunucusu adresi belirli bir makinede<br />

sürekli olarak çalışır ve web tarayıcıları kendisine bağlanarak o adresteki web sayfasını<br />

isterler. Web sunucusu da, istekte bulunan kullanıcılara web sayfasındaki bilgileri<br />

gönderir. Tarayıcı da almış olduğu bu bilgileri kullanıcıya gösterir.<br />

1.14 HTTP protokolü<br />

HTTP (Hypertext Transfer Protocol) kullanıcı-sunucu tarzında tasarlanmış bir<br />

transfer protokolüdür. Bu protokol kullanıcı ile sunucu arasındaki mesaj alışverişinin<br />

hangi formatta olması gerektiğini ve beklenmedik durumlarda nasıl hata yönetimi<br />

yapılacağını belirler. Güvenilir bilgi iletimi gerektirdiği için mesajlar TCP bağlantısı ile<br />

iletilir. Dolayısıyla kullanıcı ile sunucu arasında bir bilgi alışverişi olmadan önce, iki<br />

nokta arasında TCP bağlantısı kurulmalıdır.<br />

11


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Bu protokol istem/cevap (request/response) seklinde tasarlanmış bir protokoldür.<br />

TCP bağlantısı kurulduktan sonra, önce kullanıcı sunucuya bir istem mesajı gönderir. Bu<br />

istem mesajına karşılık olarak ise sunucu kullanıcıya bir cevap mesajı gönderir. İki nokta<br />

arasındaki haberleşme bu şekilde gerçekleştirilir. Haberleşmeyi başlatan her zaman için<br />

kullanıcıdır. Kullanıcı istem mesajı göndermeden sunucu kullanıcıya her hangi bir mesaj<br />

göndermez. Önce sunucunun kullanıcıya istem mesajı göndermesi ve kullanıcının buna<br />

cevap mesajı göndermesi mümkün değildir. Her zaman ilk olarak kullanıcının sunucuya<br />

bir istem mesajı göndermesi gerekir.<br />

Kullanıcının sunucuya göndereceği mesaj çoğunlukla birkaç satırlık kısa<br />

mesajlardır ve hangi web sayfasının istendiğini belirtir. Mesela aşağıdaki iki satırlık http<br />

istem mesajı bağlanılan sitedeki ana dizinde bulunan web sayfasını ister:<br />

GET / HTTP/1.1<br />

Host: www.mersin.edu.tr<br />

GET kelimesinden sonra gelen taksim işareti ana belgenin istendiğini gösterir.<br />

Ondan sonra gelen HTTP/1.1 ise, bu istemde http protokolünün 1.1 versiyonunun<br />

kullanıldığını gösterir. HTTP protokolünde ilk satırın ilk kelimesi istenilen işi tanımlar.<br />

GET fonksiyonuna ek olarak HEAD, POST gibi birkaç fonksiyon daha tanımlanmıştır.<br />

İkinci satırda ise istenen web sayfasının hangi siteye ait olduğu belirtilir.<br />

HTTP Uygulaması 1:<br />

Şimdi HTTP protokolünün nasıl çalıştığını daha yakından görelim. Bunun için bir<br />

önceki uygulamada olduğu gibi komut satırını açınız. Sonra telnet uygulamasını<br />

başlatınız. Daha sonra bir web sunucusuna bağlanınız. Web sunucuları genellikle 80'inci<br />

portta çalışır. Onun için telnet uygulamasında TCP bağlantısını aşağıdaki gibi kurunuz:<br />

>open www.mersin.edu.tr 80<br />

Bu şekilde web sunucusuna TCP bağlantımızı gerçekleştirdikten sonra, web<br />

sunucusuna bir http istem mesajı gönderiniz. Bu noktada aşağıdaki metni yazınız ve iki<br />

defa enter tuşuna basınız:<br />

HEAD / HTTP/1.1<br />

Host: www.mersin.edu.tr<br />

Bu istem mesajına web sunucusu aşağıdaki gibi bir mesajla cevap verir:<br />

HTTP/1.1 200 OK<br />

Date: Sat, 28 Apr 2007 17:09:33 GMT<br />

Server: Apache/2.0.55 (FreeBSD) PHP/4.4.1 mod_jk2/2.0.4<br />

12


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

X-Powered-By: PHP/4.4.1<br />

Set-Cookie: PHPSESSID=0a88e6f575172ce3105ebe737e026607; path=/<br />

Expires: Thu, 19 Nov 1981 08:52:00 GMT<br />

Cache-Control: no-store, no-cache, must-revalidate, post-check=0,<br />

pre-check=0<br />

Pragma: no-cache<br />

Content-Type: text/html<br />

HEAD fonksiyonu sunucudan bir web sayfasıyla ilgili özet bilgiler istemek için<br />

kullanılır. Web sayfasının içeriğini istemez. Buna cevap olarak ta yukarda gözüktüğü gibi<br />

istenilen web sayfasıyla ilgili özet bir bilgi verilir. Gelen cevabın ilk satırı bu işlemin<br />

sonucunu gösterir. İlk satırdaki 200 kodu ve OK kelimesi, istemin başarıyla<br />

cevaplandığını gösterir.<br />

HTTP Uygulaması 2:<br />

Şimdi de, GET fonksiyonu ile bu web sayfasına ait bilgileri sunucudan isteyelim.<br />

Bu durumda web sayfasının içeriği de gönderilecektir. Yukarıdaki gibi yine aynı adrese<br />

TCP bağlantısı kurunuz. Bağlantı kurulduktan sonra, GET mesajını aşağıdaki gibi<br />

gönderiniz:<br />

GET / HTTP/1.1<br />

Host: www.mersin.edu.tr<br />

Bu durumda alınan cevap çok daha uzun bir mesaj olur. Çünkü<br />

www.mersin.edu.tr web sayfasındaki bütün bilgiler cevap olarak gönderilir. Yalnız cevap<br />

mesajının başlangıç kısmı yine yukarıdaki mesaja benzer. İlk satır yine “HTTP/1.1<br />

200 OK” olur. Bu cevabın başarıyla gönderildiğini gösterir. Ondan sonra mesajın<br />

gövde kısmına kadar yine yukarıdakine benzer satırlar vardır. Daha sonra da web<br />

sayfasının içeriği başlar. Bütün mesajı buraya koymak çok yer alacağından, buna<br />

verilecek cevap mesajı buraya konulmamıştır.<br />

HTTP Uygulaması 3:<br />

Şimdi de başarısız bir istem denemesi yapalım. Bu durumda istenilen web sayfası<br />

sunucuda bulunmasın. Yine aynı sunucuya aynı porttan telnet ile bağlanınız. Daha sonra<br />

aşağıdaki GET mesajını gönderiniz:<br />

GET /d1/s2.html HTTP/1.1<br />

Host: www.mersin.edu.tr<br />

Daha önceki iki istem mesajında web sunucusunun ana sayfalarını istiyorduk. Bu<br />

durumda ise web sunucusunun ana dizini altındaki d1 dizinindeki s2.html dosyasını<br />

13


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

istiyoruz. Böyle bir sayfa şu anda web sunucusunda olmadığı için web sunucumuz<br />

aşağıdaki gibi bir mesajı cevap olarak gönderir:<br />

HTTP/1.1 404 Not Found<br />

Date: Sat, 28 Apr 2007 18:09:21 GMT<br />

Server: Apache/2.0.55 (FreeBSD) PHP/4.4.1 mod_jk2/2.0.4<br />

Content-Length: 208<br />

Content-Type: text/html; charset=iso-8859-1<br />

<br />

<br />

404 Not Found<br />

<br />

Not Found<br />

The requested URL /d1/s2.html was not found on this server.<br />

<br />

Diğer cevap mesajlarından farklı olarak bu cevapta ilk satırda durum kodu 404<br />

olarak verilmiştir. Sonucu ifade etmek için de OK yerine “Not Found” denilmiştir. Bu<br />

istenilen web sayfasının bulunamadığını ve sonucun başarısız olduğunu gösterir. İlk 5<br />

satır http cevap mesajının başlık kısmını gösterirken, ondan sonraki satırlar ise<br />

kullanıcıya gösterilecek web sayfasının içeriğini gösterir. Kullanıcıya gösterilen web<br />

sayfasında böyle bir dosyanın bulunamadığı yazılıdır.<br />

1.15 Web Tarayıcısı Çalışma Şekli<br />

Yukarıdaki yapmış olduğunuz 3 örnekte http protokolünün örnek çalışma<br />

şekillerini gördük. Bir web tarayıcısıyla, örneğin İnternet Explorer veya Firefox<br />

tarayıcısıyla bir web sunucusuna bağlanıldığında, az önceki bölümde telnet ile yapılan<br />

işlemleri web tarayıcısı tarafından arka planda kullanıcı fark etmeden yapılır. Kullanıcı<br />

sadece web sunucusunun göndermiş olduğu sayfaları uygun bir formatta tarayıcı içinde<br />

görür. Mesela son örnekteki aynı işlemi web tarayıcınızla yapabilirsiniz. Bunun için web<br />

tarayıcınızın adres kısmına http://www.mersin.edu.tr/d1/s2.html yazınız. Enter tuşuna<br />

bastığınızda karşınıza gelecek sayfa yukarıdaki ile aynı sayfa olacaktır. Yalnız bu<br />

durumda web tarayıcısı http mesajının başlık kısmını gizler. Gövde kısmında ise HTML<br />

ile belirten bilgiyi gösterir. HTML dilini ilerleyen bölümlerde ayrıntılı olarak ele<br />

alacağız.<br />

1.16 Referanslar<br />

[1] http://tr.wikipedia.org/wiki/İnternet. İnternet. 18 Ağustos 2009.<br />

14


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

[2] http://www.İnternetworldstats.com/stats.htm. World İnternet Users and Population<br />

Stats. 18 Ağustos 2009.<br />

[3] http://tr.wikipedia.org/wiki/ENIAC. ENIAC (Electronic Numerical Integrator and<br />

Computer). 18 Ağustos 2009.<br />

[4] http://en.wikipedia.org/wiki/ARPANET. The Advanced Research Projects Agency<br />

Network (ARPANET). 18 Ağustos 2009.<br />

[5] http://en.wikipedia.org/wiki/JANET JANET (Joint Academic NETwork).<br />

[6] http://www.nsf.gov/news/news_summ.jsp?cntn_id=103050. A Brief History of NSF<br />

and the İnternet.<br />

[7] http://www.ulakbim.gov.tr/hakkimizda/tarihce/ulaknet, UlakNET (Ulusal Akademik<br />

Ağ).<br />

[8] http://en.wikipedia.org/wiki/GEANT GEANT.<br />

15


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Bölüm 2<br />

2.1 Amaç<br />

WEB TASARIMINA GİRİŞ<br />

Bu bölümde amacımız, web sistemini oluşturan temel bileşenlerden olan web<br />

sunucusu ve web tarayıcısı programlarının çalışma prensiplerinin anlaşılması, bunların<br />

kurulumunun ve kullanılmasının kavranmasıdır. Bu amaçla önce web tarayıcıları<br />

anlatılmış, yaygın olarak kullanılan tarayıcılar açıklanmıştır. Sonra web sunucuları<br />

açıklanmış ve yaygın kullanılan web sunucuları açıklanmıştır. Bu sunuculardan en<br />

yaygını olan Apache web sunucusunun kurulumu, çalıştırılması ve sayfa yüklenmesi<br />

anlatılmıştır.<br />

2.2 Giriş<br />

Bir önceki bölümde açıklandığı gibi web tabanlı sistemler istemci-sunucu<br />

mimarisine göre çalışan sistemlerdir. Bu sistemlerde web sunucusu yeri ve adresi belirli<br />

olan ve sürekli çalışan bir programdır. Kullanıcılar ise İnternete bağlı her hangi bir<br />

bilgisayar olabilir. Kullanıcı web sunucularına web tarayıcıları ile bağlanır. Şu anda en<br />

çok kullanılan web tarayıcılarından iki tanesi Microsoft İnternet Explorer ve Mozilla<br />

Firefox tarayıcılarıdır[1].<br />

Web sunucusu programlar sürekli olarak çalışırlar ve kendilerine İnternet<br />

üzerinden TCP ile bağlanılıp HTTP protokolüyle bilgi istenmesini beklerler. Bir kullanıcı<br />

bu şekilde bir istemde bulunduğunda ise, bu isteğe olumlu ya da olumsuz cevap<br />

gönderirler. Bir önceki bölümde bu mesaj alışverişinden birkaç örnek sunulmuştur.<br />

Kullanıcılar ise web tarayıcısı kullanarak istedikleri sayfaya sahip olan web sunucusuna<br />

bağlanırlar. Web tarayıcısı arka planda gerçekleşen haberleşmelerin karmaşıklığını<br />

kullanıcıdan gizler. Sadece kullanıcıyı ilgilendiren bilgi kısımlarını gösterir.<br />

16


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Örneğin Mersin Üniversitesi web sayfasına bağlanmak isteyen bir kişi, web<br />

tarayıcısının adres kısmına http://www.mersin.edu.tr adresini yazar ve enter tuşuna basar.<br />

Bu durumda www.mersin.edu.tr isimli makinede 80’inci portta çalışmakta olan web<br />

sunucusuna web tarayıcısı önce bir TCP bağlantısı kurar. Sonra ana sayfadaki bilgileri<br />

kendisine göndermesi için web sunucusuna bir http istem mesajı gönderir. Bu istem<br />

mesajını alan web sunucusu, istenen sayfanın içeriğini kullanıcıya gönderir. Bu cevabı<br />

alan web tarayıcısı, kullanıcıya bu sayfanın içeriğini uygun bir formatta gösterir. Bu<br />

adresteki web sunucusu sürekli olarak o makinede çalışır ve kendisinden bilgi istenmesini<br />

bekler. Dünyanın değişik yerlerine yayılmış olan İnternet kullanıcıları da istedikleri<br />

zaman bu sunucuya bağlanırlar ve kendilerine verilen bilgileri tarayıcılarında görürler.<br />

Bu sunucuya aynı anda birçok kullanıcı bağlanabilir. Bu sunucu aynı anda çok sayıdaki<br />

kullanıcıya cevap verebilecek şekilde tasarlanmıştır.<br />

2.3 Web Sunucuları<br />

Web sunucusu olarak çalışmak için yazılmış programlar vardır. Bunlardan en çok<br />

kullanılanı Apache HTTP sunucusudur. Bütün dünyada aktif olarak çalışan web<br />

sunucularının yarıdan fazlası (%51) Temmuz 2009 itibariyle Apache HTTP sunucusudur<br />

[2]. İkinci en popüler web sunucusu ise Microsoft İnternet Information Services (MS-IIS)<br />

sunucusudur. O da dünyadaki web sunucularının yaklaşık dörtte birini oluşturmaktadır<br />

(%24). Geriye kalan kısımda ise çok farklı web sunucuları çalışmaktadır. Dolayısıyla bu<br />

bölümde bu iki web sunucusunun kurulmasını göstereceğiz.<br />

Web sunucuları iki çeşit web sayfası hizmeti verirler: statik ve dinamik. Statik<br />

web sayfaları önceden web sayfası sahibi tarafından hazırlanır ve web sunucusunun<br />

çalıştığı bilgisayara htm veya html uzantılı metin dosyaları halinde kaydedilir. Web<br />

sunucusuna bu tür bir sayfa için bir istem geldiğinde, istenilen sayfayı hard disk’inden<br />

okur ve kullanıcıya gönderir. Web sunucusunun yaptığı hizmet gayet basittir. İstenen<br />

belgeyi okuyup kullanıcıya göndermektir.<br />

İkinci tür hizmet olan dinamik sayfa sunumunda ise, web sayfalarının tamamı<br />

veya web sayfalarının bir kısmı çalışma anında oluşturulur. Cevap olarak oluşturulan<br />

sayfa kullanıcının isteğine göre hazırlanır. Bu durumda web sunucusu çoğunlukla<br />

dinamik sayfa oluşturma işlemini kendisi yapmaz. Böyle bir istek geldiğinde, dinamik<br />

web sayfası oluşturacak başka bir program vardır. Web sunucusu bu programdan sayfayı<br />

oluşturmasını ve kendisine sonucu vermesini ister. Bu yardımcı program da dinamik<br />

sayfayı kendisine verilen parametrelere göre oluşturup web sunucusuna verir. Web<br />

sunucusu da dinamik olarak oluşturulan bu sayfayı kullanıcıya gönderir. Web sunucusu<br />

tarafında dinamik web sayfası üretmek için kullanılan en yaygın programlar PHP, ASP<br />

ve JSP gibi programlardır.<br />

Dinamik web sayfasının oluşturulduğu en yaygın örnek arama motorlarıdır.<br />

Google web sayfasına bağlanıp bir veya birkaç kelimenin aranmasını istediğimizde,<br />

aranmasını istediğimiz kelimeye göre bize farklı bir web sayfası oluşturulur. Web<br />

17


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

sunucusu tarafında arama yapan ve sonuçları bir web sayfası formatına dönüştüren bir<br />

program vardır. Bu program isteğe göre farklı web sayfaları oluşturur.<br />

2.4 Statik IP Adresleri ve Alan Adları<br />

Web sunucuları bir alan adı ve bir sabit IP adresi olan bilgisayarlarda çalışır.<br />

Böylece İnternete bağlı kullanıcılar bu makinenin alan adını kullanarak web sunucusu<br />

tarafından sunulan web sayfalarına erişirler. Web sunucuları kesintisiz hizmet<br />

verebilmeleri için bu makinede sürekli olarak çalışmaları gerekir.<br />

İnternete bağlı her bilgisayarın bir IP adresi olsa da, hepsinin bir alan adı yoktur.<br />

İnternete bağlı bilgisayarların çoğu sunucu olarak çalışmak yerine, kullanıcı olarak<br />

çalışırlar. Bu makinelere uzaktan erişim gerekmez. Bu makineler başka makinelerde<br />

sunulan hizmetlere erişirler. ADSL ve telefon ile İnternete bağlanan bütün bilgisayarlar<br />

bu şekilde kullanıcı makineleridir. Alan adları yoktur. Sadece IP adresleri vardır.<br />

Dolayısıyla bu makinelerde web sunucusu çalıştırmak isabetli olmaz. Eğer bir web<br />

sunucusu çalıştırmak istersek, öncelikle web sunucusunun çalışacağı bilgisayarın statik<br />

bir IP adresinin olması gerekir. İkinci olarak ta bu bilgisayarın bir alan adının olması<br />

gerekir.<br />

Statik IP adresi hangi İnternet servis sağlayıcı yardımıyla İnternete bağlanılıyorsa<br />

ondan alınır. Örneğin Türkiye’deki üniversiteler UlakNET üzerinden İnternete<br />

bağlandıkları için statik IP adreslerini bu kuruluştan alırlar. Diğer yandan Türk<br />

Telekom’un TTNET ağı vasıtasıyla İnternete bağlanan özel kişi ve kuruluşlar da, statik<br />

IP adreslerini bu şirketten alırlar.<br />

Türkiye’deki alan adlarının tahsisini ise ODTÜ Alan Adı Yönetimi isimli bir<br />

kuruluş yapmaktadır. Bu kuruluş tr uzantısıyla biten alan adlarının yönetiminden ve<br />

tahsisinden sorumludur. Türkiye’deki alan adlarına iki örnek olarak www.mersin.edu.tr<br />

ve www.google.com.tr alan adlarını verebiliriz. Türkiye’deki bütün alan adları tr<br />

uzantısıyla biter. ODTÜ Alan Adı Yönetimi isimli kuruluş İnternet üzerinden alan adı<br />

tahsisi için başvuru kabul etmektedir. Bu kurulusun web adresi www.nic.tr ‘dir. Bu web<br />

sayfasından yeni alan adı almak için başvuru yapılabilir.<br />

Kendi web sunucusunu çalıştırmak isteyen bir kurum önce statik IP adresini ve<br />

alan adını alır. Sonra da bu alan adına ve IP adresine sahip bilgisayara web sunucusunu<br />

kurar. Daha sonra geliştirmiş oldukları web sayfalarını web sunucusuna yükler. Bu<br />

aşamadan sonra artık web sunucusunu sürekli çalışır halde tutarak İnternet üzerinden<br />

bütün insanların kendi web sayfalarına erişmelerini sağlarlar.<br />

Kendi web sunucusunu çalıştırmanın bir alternatifi ise, web sunucusu çalıştırma<br />

hizmeti veren şirketlerden bu hizmeti satın almaktır. Bu durumda alan adını yine kurum<br />

sahibi alır. Fakat bu alan adına gelecek web trafiğini web sunucusu hizmeti almış<br />

oldukları şirketin bilgisayarlarına yönlendirir. Şirketin web sayfasına koyacakları<br />

18


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

belgeleri de hizmeti almış oldukları şirketteki bilgisayarlara yüklerler. Böylece belirli bir<br />

ücret karşılığında web sunucusu başka bir şirketin makinelerinde çalıştırılabilir. Bu<br />

şekilde web sitesi sunma hizmeti veren çok sayıda firma vardır. Bu işleme İngilizce’de<br />

“web hosting” denilmektedir. Bu ifade artık Türkçe’de de yaygın olarak kullanılmaktadır.<br />

Bu tip bir firma ararken anahtar kelime olarak “web hosting” ifadesi kullanılabilir.<br />

2.5 Apache Web Sunucusu<br />

Apache web sunucusu açık kaynak kodlu ve bedava bir yazılımdır. Apache<br />

Foundation tarafından geliştirilmektedir. World Wide Web’in ilk gelişim yıllarından beri<br />

kullanılmakta olan bir sunucudur. Yaygın olan bütün bilgisayar platformlarında çalışır.<br />

Microsoft Windows, Linux, Unix, FreeBSD, Mac OS X ve daha birçok işletim<br />

sisteminde çalışır. Sunucuya bu ismin verilmesi bu projeyi geliştiren kişilerin<br />

Amerika’daki Apache Kızılderili kabilesine olan saygılarından ve onların isimlerini<br />

onure etme düşüncesinden kaynaklanmaktadır [3].<br />

Apache web sunucusu hem statik hem de dinamik web sayfaları için<br />

kullanılabilir. Dinamik web sayfası üretilmesi gerektiği durumlarda, dinamik web sayfası<br />

üretimini yapması gereken PHP, ASP ve JSP gibi programlar için konfigür edilmesi<br />

gerekir.<br />

2.6 Apache Web Sunucusu Kurulum Programı İndirme<br />

Her ne kadar web sunucusu kurmak için öncelikle statik IP adresi ve alan adı<br />

almak gerekir ise de, kendi bilgisayarımıza deneme kurulumu yapabiliriz. Bu deneme<br />

kurulumu Apache sunucusunun nasıl kurulduğunu ve çalıştığını öğrenmemiz için güzel<br />

bir imkân olur. Onun için şu anda bu işlemi kendi bilgisayarınızda yapabilirsiniz.<br />

Öncelikle Apache web sunucusu yazılımını indirmeniz gerekir. Bunun için şu<br />

web sayfasına gidiniz:<br />

http://httpd.apache.org/download.cgi<br />

Bu web sayfasında Apache yazılımının en son sürümünü bulunuz. Ağustos 2009<br />

itibariyle en son sürüm 2.2.13’tür. Bu sayfada daha önceki birkaç sürüm daha<br />

bulunmaktadır. Bunlardan en büyük olanı en son sürümdür. En son sürümü altında ise<br />

çeşitli platformlar için seçenekler bulunmaktadır. Bunlardan Windows platformu için<br />

olan binary dosyayı seçiniz ve bu dosyayı indiriniz. Ağustos 2009 itibariyle bu dosya<br />

5.2MB büyüklüğündedir ve ismi ise şöyledir:<br />

apache_2.2.13-win32-x86-no_ssl.msi<br />

19


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Bu dosya Windows platformunda çalıştırılabilir bir kurulum dosyasıdır. Yani bu<br />

dosyayı indirdikten sonra dosya adı üzerine çift tıklarsanız, kurulum programı başlar. Bu<br />

web sitesi Apache web sunucusunu geliştiren kuruluşun kendi sayfasıdır. Fakat bu<br />

dosyayı başka sitelerden de indirmeniz ya da bir arkadaşınızdan almanız mümkündür.<br />

Önemli olan kurulumu yapabilmek için bu dosyaya sahip olmanızdır.<br />

2.7 Apache Web Sunucusu Kurulumu<br />

Apache web sunucusu kurulum dosyasını indirildikten sonra, indirilen dosya<br />

üzerine çift tıklanarak kurulum işlemi başlatılır. Kurulum programı başlayınca Şekil<br />

2-1’de gözüken pencere gelir. Bu pencere Apache web sunucusunun bilgisayarınıza<br />

kurulacağını belirtiyor. Kurulumu başlatmak için “Next” butonuna tıklayınız.<br />

Şekil 2-1 Apache sunucusu kurulumu ilk adımı<br />

Kurulumun ikinci adımında Şekil 2-2’de gözüken pencere gelir. Bu pencere<br />

Apache web sunucusu lisans anlaşmasını kabul etmenizi istemektedir. Kurulumun<br />

yapılabilmesi için “I accept the terms in the license agreement” seçeneği işaretlenmelidir.<br />

Bu seçenek işaretlendikten sonra “Next” butonuna tıklayınız.<br />

20


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Şekil 2-2 Apache sunucusu kurulumu ikinici adımı<br />

Bir sonraki adımda Şekil 2-3’teki pencere gelir. Bu pencerede Apache hakkında<br />

bilgi verilmektedir. Burada Next butonuna tıklayınız.<br />

Şekil 2-3 Apache web sunucusu kurulumu üçüncü basamağı<br />

Bir sonraki adımda Şekil 2-4’te görülen pencere gelir. Bu pencerede ilk satır ve<br />

ikinci satıra şekilde görüldüğü gibi “localhost” yazınız. Çünkü kurmuş olduğunuz<br />

web sunucusu kendi bilgisayarınızda çalışacaktır. Web sunucusuna dışardan kimse<br />

erişmeyecektir. Üçüncü satıra bir email adresi vermeniz gerekmektedir. Buraya bir email<br />

adresi yazınız. Aşağıdaki kurulumda email adresi olarak test@deneme.com adresi<br />

verilmistir. Bu penceredeki bir diğer önemli nokta ise pencerenin alt kısmında bulunan<br />

iki seçenektir. Bunlardan varsayılan olarak gelen for All Users diye başlayan<br />

seçeneği seçmeniz işinizi kolaylaştıracaktır. Daha sonra “Next” tuşuna basınız.<br />

21


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Şekil 2-4 Apache web sunucusu kurulumu dördüncü basamağı<br />

Bir sonraki aşamada Şekil 2-5’te gözüken pencere gelir. Burada varsayılan olarak<br />

gelen Typical seçeneği işaretli olarak kalabilir. “Next” butonuna tıklayınız.<br />

Şekil 2-5 Apache web sunucusu kurulumu beşinci basamağı<br />

Bir sonraki adımda Şekil 2-6’da gözüken pencere gelir. Burda kurulumun<br />

yapılacağı dizini size bildirmektedir. Bu kurulumda Apache web sunucusu şu dizine<br />

C:\Program Files\Apache Software Foundation\Apache2.2\<br />

kurulacaktır. Burada bir değişiklik yapmanıza gerek yoktur. “Next” butonuna tıklayınız.<br />

22


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Şekil 2-6 Apache web sunucusu kurulumu altıncı basamağı<br />

Daha sonraki adımda Şekil 2-7’de gözüken pencere gelir. Bu pencere artık bütün<br />

seçimlerin yapıldığını ve kurulumun başlayacağını göstermektedir. Bu pencerede<br />

kurulumu başlatmak için Install butonuna tıklayınız.<br />

Şekil 2-7 Apache web sunucusu kurulumu yedinci basamağı<br />

Bir önceki basamakta Install butonuna tıklanınca kurulum işlemi başlar. Kurulum<br />

yapılırken küçük pencerede kurulum hakkında bilgi verilerek kurulum devam eder.<br />

Kurulum bitince Şekil 2-8’de gözüken pencere gelir. Bu pencerede Finish butonuna<br />

basılarak Apache web sunucusu kurulumu tamamlanır.<br />

23


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Şekil 2-8 Apache web sunucusu kurulumu son basamağı<br />

2.8 Apache Web Sunucusu Kurulum Kontrolü<br />

Apache kurulumunun en son aşamasında kurulumun başarıyla tamamlanıp<br />

tamamlanmadığını kontrol etmek kalmıştır. Bunun için bilgisayarınızda bulunan bir web<br />

tarayıcısını çalıştırırız. Bu Internet Explorer ya da Firefox olabilir. Daha sonra<br />

tarayıcınızın adres çubuğuna:<br />

http://localhost/<br />

adresini yazıp enter tuşuna basınız. Bunun sonunda tarayıcının Şekil 2-9’da olduğu gibi<br />

bir sayfa göstermelidir. Eğer bu sayfayı görürseniz web sunucusu bilgisayarınıza<br />

başarıyla kurulmuş ve çalışıyor demektir.<br />

Şekil 2-9 Web sunucusu kontrolü<br />

24


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Artık bilgisayarınızda Apache web sunucusu çalışmaktadır. Bundan sonra<br />

bilgisayarınızı her açtığınızda web sunucusu çalışmaya başlayacaktır. Web sunucusunun<br />

çalışıp çalışmadığını her zaman bu şekilde kontrol edebilirsiniz.<br />

Eğer web sunucusunu kurmanızda bir hata oluşmuşsa ve web sunucusu<br />

bilgisayarınızda çalışmıyorsa bu durumda Şekil 2-9’daki sayfa yerine Şekil 2-10’daki<br />

gibi bir sayfa ile karşılaşırsınız. Bu sayfada “It Works” yazısı yoktur. Bunun yerine bir<br />

hata mesajı vardır. Bu hata mesajı kullandığınız tarayıcıya göre değişebilir.<br />

Eğer web sunucusu bilgisayarınıza başarılı bir şekilde kurulmamışsa web<br />

sunucusunu Program Ekle/Kaldır kısmından kaldırıp, sonra tekrar kurabilirsiniz. Tekrar<br />

kurulum yaparken yukarda anlatılan adımları tek tek doğru bir şekilde takip ediniz.<br />

Şekil 2-10 Web sunucusu çalışmıyor<br />

2.9 Apache Web Sunucusu Durdurma ve Başlatma<br />

Apache web sunucusu bilgisayarınıza kurulduktan sonra bilgisayarınızı her<br />

çalıştırdığınızda kendisi otomatik olarak çalışacaktır. Bu programı durdurmak veya tekrar<br />

başlatmak için ekranın sağ alt kısmında çalışan “Apache Monitor” programını<br />

kullanabilirsiniz. Bu programın ikonu üzerinde farenin sağ tuşuna tıkladığınızda size üç<br />

seçenek gösterecektir. Bunlar start, stop ve restart seçenekleridir. Bu seçenekleri<br />

kullanarak web sunucusunu durdurabilir, duran sunucuyu başlatabilir veya çalışan<br />

sunucuyu tekrar başlatabilirsiniz.<br />

2.10 Apache Web Sunucusuna Sayfa Yükleme<br />

Bilgisayarınıza kurmuş olduğunuz web sunucusuna yeni sayfalar yükleyebilir ve<br />

yüklediğiniz bu sayfaları tarayıcınızla görüntüleyebilirsiniz.<br />

25


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Web sunucusu kendisinden bir sayfa istenildiğinde o sayfayı ana belge dizininde<br />

arar. Eğer istenilen belge varsa kullanıcıya döndürür. Yoksa bir hata mesajı verir.<br />

Örneğin siz tarayıcınızın adres çubuğuna<br />

http://localhost/test123.html<br />

yazarsanız, web sunucunuz tarayıcıya bir hata mesajı gönderir. Bu şekilde bir belge<br />

bulamadım der.<br />

Web sunucusunun ana belge dizini, web sunucusunun kurulmuş olduğu dizinin<br />

altındaki “htdocs” isimli dizindir. Bizim kurulumumuzda bu dizinin tam yolu şu<br />

şekildedir:<br />

C:\Program Files\Apache Software<br />

Foundation\Apache2.2\htdocs<br />

Web sunucusu kendisinden istenilen belgeleri bu dizin altında arar. Şimdi bu dizine bir<br />

html belgesi koyalım ve bu belgeyi tarayıcı ile görüntüleyelim. Bunun için bir metin<br />

editöründe Tablo 2-1’de gözüken basit bir html belgesini yazınız. Notepad programını bu<br />

iş için kullanabilirsiniz.<br />

<br />

<br />

ilk HTML sayfam <br />

<br />

<br />

Herkese Merhaba<br />

Web sayfası oluşturmak gercekten çok<br />

güzel.<br />

<br />

<br />

Tablo 2-1 Örnek bir html sayfası<br />

Bu belgeyi deneme.html adıyla htdocs dizini altına kaydediniz. Notepad<br />

programı ile kaydederken uzantının txt yerine html olmasına özen gösteriniz. Bunun<br />

için Farklı kaydet seçeneğini seçip Farklı Kaydetme Tipi olarak bütün dosya tiplerini<br />

seçiniz.<br />

Artık bu html dosyasını tarayıcı ile web sunucusundan alıp görüntüleyebilirsiniz.<br />

Bunun için web tarayıcısının adres çubuğuna<br />

http://localhost/deneme.html<br />

26


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

adresini yazınız. Bu durumda tarayıcı web sunucusundan deneme.html<br />

dosyasını alıp görüntüleyecektir. Sonuç Şekil 2-11’de gözüktüğü gibi olacaktır. Eğer<br />

sonuç Şekil 2-11’deki gibi bir sayfa değilse, ya dosyanızın uzantısı html değildir ya da<br />

dosyanızı yanlış dizine koymuşsunuz demektir. Diğer bir ihtimal de web sunucunuzun<br />

çalışmıyor olmasıdır.<br />

Şekil 2-11 Web suncusuna sayfa yükleme<br />

Web sunucusunun ana belge dizini altında yeni dizinler de oluşturabilirsiniz. Bu<br />

durumda tarayıcıya yazdığınız adres kısmında alt dizinlerin adını da belirtmelisiniz.<br />

Örneğin htdocs dizini altında test isimli bir dizin olusturabilirsiniz. Yukarda<br />

oluşturmuş olduğunuz deneme.html dosyasını bu dizin içine kopyalayınız. Bu durumda<br />

test dizini altındaki deneme.html dosyasını tarayıcı ile şu şekilde isteyebilirsiniz:<br />

http://localhost/test/deneme.html<br />

Artık web sunucusu deneme.html dosyasını ararkan ana dizini olan htdocs<br />

dizini altındaki test dizini içine bakacaktır. Bu şekilde htdocs dizini içinde çok farklı<br />

dizinler oluşturulabilir. Benzer şekilde bu alt dizinler içinde de alt dizinler oluşturulabilir.<br />

Örnek olarak test dizini içinde ders1 adında bir alt dizin oluşturabilirsiniz. Bu<br />

ders1 dizini içine mersin.html isimli bir dosya kaydederseniz, bu dosyaya erişmek<br />

için tarayıcıya artık şu adresi yazmamız gerekir:<br />

http://localhost/test/ders1/mersin.html<br />

Eğer bütün bu işlemleri gerçek bir alan adı olan bir bilgisayarda yapsaydınız, artık<br />

bu dosyalara İnternet üzerinden tarayıcı ile alan adı kullanarak erişebilirdiniz. O durumda<br />

sadece adresin localhost kısmına gerçek alan adını yazmanız yeterli olurdu. Örneğin alan<br />

adınız www.sirketdeneme.com.tr ise, mersin.html dosyasına şu şekilde erişebilirdiniz:<br />

27


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

http://www.sirketdeneme.com.tr/test/ders1/mersin.html<br />

Web sunucusuna sadece http://localhost yazıldığında web sunucusu ana<br />

dizini altındaki index.html isimli belgeyi döndürür. Web sunucusunun htdocs<br />

dizinine bakıldığında orada index.html isimli bir dosya olduğu görülür. Genel bir kural<br />

olarak web sunucuları dosya ismi verilmeden sadece dizin ismi verilerek belge istenirse,<br />

o dizin altındaki index.html isimli dosyayı döndürür.<br />

2.11 Apache Sunucusu Konfigürasyonu<br />

Apache web sunucusunun bazı özelliklerini değiştirmek isterseniz, bunu Apache<br />

sunucunun kurulduğu ana dizin içindeki conf alt dizini içinde bulunan httpd.conf<br />

dosyasını değiştirerek yapabilirsiniz. Bu dosya bu kurulumda şu adreste bulunmaktadır:<br />

C:\Program Files\Apache Software<br />

Foundation\Apache2.2\conf\httpd.conf<br />

Örneğin Apache sunucusu normalde port 80’de çalışır. Eğer bunu herhangi bir<br />

sebeple değiştirmek isterseniz, bu dosya içindeki port değerini değiştirerek yapabilirsiniz.<br />

Ya da web sunucusu belgeleri htdocs dizininden değil de başka bir dizinden servis yapsın<br />

isterseniz, bunu bu dosya içindeki DocumentRoot değişkeninin değerini değiştirerek<br />

yapabilirsiniz.<br />

Bu konfigürasyon dosyasındaki herhangi bir değeri değiştirmeden önce bu<br />

dosyanın bir kopyasını mutlaka alınız. Daha sonra bir problem olursa, bu kopyayı tekrar<br />

yerine koyunuz. Böylelikle yaşanabilecek problemleri azaltmış olursunuz. Bir diğer<br />

önemli nokta ise, mecbur kalmadıkça ve emin olmadıkça bu dosyayı değiştirmemenizdir.<br />

Bu konfigürasyon dosyasında bir değişiklik yapılınca Apache web sunucusu<br />

durdurulup tekrar başlatılmalıdır. Aksi takdirde yapılan değişiklikler etki göstermez.<br />

2.12 MS-IIS (İnternet Information Services) Sunucusu Kurulumu<br />

Apache web sunucusundan sonra en popüler ikinci web sunucusu MS-IIS web<br />

sunucusudur. Bu sunucu Windows XP için kurulum dosyasıyla beraber gelir. Ayrıca<br />

download edilemez. Onun için bu web sunucusunu kurmak için işletim sisteminin<br />

kurulum dosyasına ihtiyaç vardır.<br />

MS-IIS web sunucusunu kurmak için Windows XP bilgisayarında<br />

1. Kontrol panel kısmını açınız<br />

2. Burada program ekle/kaldır kısmına gidiniz.<br />

28


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

3. Bu pencerede Windows komponent ekle/kaldır kısmını seçiniz<br />

4. Gelen pencerede Internet Information Services kısmını işaretleyiniz ve diğer<br />

seçeneklere hiç dokunmadan next tuşuna basınız.<br />

5. Bu noktada Windows XP Pro kurulum dosyasını ister. Onu CD okuyucuya<br />

koyunuz.<br />

6. Bu şekilde MS-IIS web sunucusunu kurabilirsiniz.<br />

Bu web sunucusunu kurduktan sonra artık Apache’de olduğu gibi web<br />

tarayıcınızla http://localhost adresine giderek web sunucusunun çalışıp çalışmadığını<br />

görebilirsiniz. Fakat Apache web sunucusu bilgisayarınızda çalışıyorsa, aynı anda MS-<br />

IIS sunucusunu çalıştıramazsınız. Çünkü 80. portu Apache kullanmaktadır. Aynı portu<br />

MS-IIS sunucusu da kullanmak isteyecektir. Ama kullanamadığı için başlayamayacaktır.<br />

Bunun için önce Apache sunucusunu durdurmanız gerekmektedir.<br />

2.13 PSPad Editörü<br />

HTML sayfaları her hangi bir metin editörü kullanılarak yazılabilir. Fakat HTML<br />

kodu yazmak için çok farklı editörler geliştirilmiştir. Bu editörler kod yazma işlemini<br />

kolaylaştırmak için çeşitli hizmetler sunarlar. Örneğin HTML komutlarını farklı renkte<br />

gösterirler. Böylece yazılan HTML sayfalarının anlaşılması daha kolay olur.<br />

HTML editörlerinden ücretle satılanlar vardır. Diğer yönden bedava olan bazı<br />

editörler de mevcuttur. Bu ders kapsamında göreceğimiz sayfaları bedava bir HTML<br />

editörü kullanarak ta yazabilirsiniz. Bedava HTML editörlerinden birisi PSPad isimli<br />

editördür. Bu editör gayet basit olup ücretsizdir. Bu editörün web sitesi www.pspad.com<br />

adresidir. Bu sitenin donwload bölümünün adresi ise şöyledir:<br />

http://www.pspad.com/en/download.php<br />

Bu sayfadaki Installer seçeneği seçilerek bu editörü indirebilirsiniz. Daha sonra da<br />

indirilen dosyayı çalıştırılarak kurabilirsiniz.<br />

Bu editör kurulduktan sonra kullanılması gayet kolaydır. Notepad gibi her hangi<br />

bir metin editörü ile kullanım tecrübesi olan bir kullanıcı kolaylıkla bu editörü<br />

kullanabilir.<br />

29


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

2.14 Referanslar<br />

[1] http://en.wikipedia.org/wiki/Usage_share_of_web_browsers, Usage share of web<br />

browsers, 18 Ağustos 2009.<br />

[2] http://survey.netcraft.com/Reports/200704/byserver, Netcraft Web Server Survey, 18<br />

Ağustos 2009.<br />

[3] http://www.apache.org/foundation/faq.html#name, Frequently Asked Questions, 19<br />

Ağustos 2009.<br />

30


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Bölüm 3<br />

3.1 Amaç<br />

HTML<br />

Bu bölümde amacımız HTML dilinin temel özelliklerini anlatma, bu dilin çalışma<br />

şeklini açıklama ve öğrencilerin bu dili kullanabilmesi için gerekli temel bilgileri onlara<br />

sunmaktır. Bu amaçla önce HTML dilini kullanarak basit bir sayfa oluşturma anlatılmış,<br />

HTML dilindeki birçok im gösterilmiş, HTML belgelerinin ana yapısı açıklanmıştır.<br />

Sonra HTML dilinin metin biçimlendirme özellikleri işlenmiş ve HTML elemanlarının<br />

öznitelikleri anlatılmıştır. HTML dilinde renk gösterimi ve web sayfalarının arka plan<br />

rengini ayarlama açıklanmıştır. Ayrıca web sayfalarında bağlantı oluşturma ve bağlantı<br />

kullanımı anlatılmıştır.<br />

3.2 Giriş<br />

HTML (Hypertext Markup Language) web sayfası oluşturmak için kullanılan en<br />

yaygın sayfa düzenleme dilidir. HTML C, C++, C#, Java gibi bir programlama dili<br />

değildir. HTML bir sayfa düzenleme dilidir. Bir sayfadaki bilgilerin (metin, resim,<br />

tablolar, video, vb.) kullanıcıya nasıl gözükmesi gerektiğini düzenler. Sayfadaki hangi<br />

metin başlık olarak gözükecek, hangisi paragraf olacak, hangi bilgiler tablo halinde<br />

gösterilecek, nereye resim konulacak, vb. Diğer yandan programlama dilleri ise<br />

bilgisayarlarda çalışmak üzere programlar yazmak için kullanılır. Yazılan programları<br />

çalıştırarak bir problemi bilgisayar ortamında çözeriz. HTML ile bir program yazmak<br />

mümkün değildir. HTML dilinin temel amacı bir veriyi kullanıcıya daha okunaklı ve<br />

düzenli bir şekilde sunmaktır.<br />

1990’lı yıllara gelindiğinde İnternet hızla yayılma evresindeydi. Özellikle<br />

araştırmacılar tarafından sıklıkla kullanılmaktaydı. Uzak noktalardaki araştırmacılar bilgi<br />

paylaşımı için E-posta ve FTP dosya transfer sistemlerini kullanmaktaydılar. Bilgi<br />

31


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

paylaşım ihtiyacının ve imkânlarının artması bu sistemlerden daha etkin ve kullanımı<br />

kolay bilgi paylaşma tekniklerinin geliştirilmesini teşvik etti. Bu dönemde Avrupa<br />

Nükleer Araştırma Kurumunda (CERN) çalışan Tim Berners-Lee araştırmacılar<br />

arasındaki bilgi paylaşımını daha etkin hale getirmek için HTML veri düzenleme ve<br />

HTTP veri transfer protokollerini geliştirdi [1]. HTML dili verinin düzenlemesinde<br />

kullanılırken, HTTP ise bu verinin bir noktadan diğerine aktarılmasında<br />

kullanılmaktaydı. HTML dilinin ilk versiyonu 1993 yılında basıldı. Daha sonra HTML<br />

dilinin gelişimini World Wide Web Consortium (W3C) devraldı. Şu anda en yaygın<br />

kullanılmakta olan versiyonu HTML 4 olup 1999 yılında basılmıştır [2]. Halen HTML<br />

dilinin 5. versiyonu üzerindeki çalışmalar W3C koordinasyonu altında devam etmektedir<br />

[3].<br />

3.3 Web Tarayıcıları<br />

Bir dosya HTML dilinin imleriyle yazıldıktan sonra bu HTML dosyasının uygun<br />

bir program tarafından kullanıcıya gösterilmesi gerekir. Bu program HTML komutlarını<br />

yani imlerini okuyup yorumlar ve ona göre kullanıcıya düzenlenmiş bir sayfa sunar. Bu<br />

tür programlara web tarayıcıları diyoruz. Su anda en yaygın kullanılan web tarayıcıları<br />

Microsoft İnternet Explorer ve Mozilla Firefox programlarıdır [4].<br />

Web tarayıcılarının temelde iki ana görevleri vardır. Bunlardan ilki web sayfası<br />

transferidir. Bir kullanıcı bir web sayfasını görmek istediği zaman, istenilen dosyayı web<br />

tarayıcısı önce bu dosyanın bulunduğu web sunucusundan kendi bilgisayarına transfer<br />

eder. Bu işlemi HTTP dosya transfer protokolünü kullanarak yapar [5]. İkinci işlevi ise,<br />

indirmiş olduğu bu dosyayı kullanıcıya web sayfası halinde sunmaktır. Web tarayıcısı<br />

dosya transfer işlevini HTTP protokolünü kullanarak yaparken, kullanıcıya bilgi sunma<br />

işlevini ise HTML dilini kullanarak yapar [2].<br />

3.4 HTML ile basit bir web sayfası oluşturma<br />

HTML dilini kullanarak basit bir web sayfasını Tablo 3-1’deki gibi yazabiliriz.<br />

Şimdi bu metni bir web sayfası olarak bilgisayarımıza kaydedelim. Bunun için:<br />

• PSPad editörünü başlatını. “Dosya” menüsünden “Yeni Dosya” elemanını<br />

seçeneğini seçiniz. Gelen dosya tipleri arasından “HTML” tipini seçiniz.<br />

• PSPad editörü içine aşağıdaki tablodaki metni yazınız veya kopyalayıp<br />

yapıştırınız.<br />

• PSPad editöründe yukardaki menü elemanlarından “biçim” elemanı altındaki<br />

“UTF-8” seçeneğini seçiniz.<br />

• Daha sonra bu dosyayı merhaba.html ismiyle kaydediniz.<br />

32


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Eğer bu dosyayı oluşturmak için PSPad editörü yerine Notepad editörünü<br />

kullandıysanız, bu isimle dosyayı kaydederken dosya çeşidi kısmında bütün dosya tipleri<br />

seçeneğini seçmeyi unutmayınız. Yoksa bu dosya merhaba.html.txt olarak<br />

kaydedilebilir. PSPad editöründe bu şekilde bir problem yoktur.<br />

<br />

<br />

Basit bir HTML sayfası. <br />

<br />

<br />

<br />

Herkese Merhaba<br />

Bu benim ilk web sayfam. Web sayfası<br />

oluşturmak gerçekten çok güzel.<br />

<br />

<br />

Tablo 3-1 Basit bir HTML sayfası kodu<br />

Bu metinde görmüş olduğunuz küçüktür işaretiyle başlayıp büyüktür işaretiyle<br />

biten ifadeler HTML imleridir. Bu metindeki html imleri şunlardır: , ,<br />

, , , , , . Bu imler belge içindeki bilgileri<br />

tanımlarlar ve kullanıcıya bu bilgilerin nasıl gösterileceklerini bildirirler. İmlerin<br />

kendileri tarayıcı içinde gözükmezler. İmler sadece tarayıcının sayfa düzenlemesini nasıl<br />

yapması gerektiği ile ilgili komutlardır.<br />

Şimdi bu basit web sayfasının tarayıcı içinde nasıl gözükeceğini görelim. Bu<br />

sayfayı tarayıcı içinde görüntülemenin iki farklı metodu vardır. Bunlardan ilki bu sayfayı<br />

kendi bilgisayarınızda kurmuş olduğunuz web sunucusundan istemektir. Bunun için<br />

öncelikle merhaba.html dosyasını web sunucusu ana belge dizini içine, yani htdocs<br />

dizinine kopyalayınız. Sonra web sunucunuzun çalışıyor olduğundan emin olduktan<br />

sonra, tarayıcınızı çalıştırınız ve tarayıcınızın adres çubuğuna<br />

http://localhost/merhaba.html yazınız. Enter tuşuna bastığınızda bu sayfa tarayıcı içinde<br />

Şekil 3-1’deki gibi gözükecektir.<br />

Bu sayfayı tarayıcı içinde görüntülemenin ikinci yöntemi ise, web sunucusunu hiç<br />

kullanmadan tarayıcıyla bu sayfayı direk olarak açmaktır. Bunun için bilgisayarınızda<br />

web sunucusunun kurulu olmasına da gerek yoktur. Öncelikle merhaba.html dosyasını<br />

bilgisayarınızda her hangi bir kaydedebilirsiniz. Bu dosyanın web sunucusu ana dizini<br />

altında olmasına ya da başka özel bir dizinde olmasına gerek yoktur. Herhangi bir dizin<br />

içinde olabilir. Tek yapmamız gereken web tarayıcısını çalıştırmak ve tarayıcınızın dosya<br />

menüsünden dosya aç seçeneğini seçmek. Sonra da gelen pencerede merhaba.html<br />

dosyasını seçmek. Bu durumda tarayıcı merhaba.html dosyasını web sunucusundan<br />

almaz. Direk olarak işletim sisteminden alır. Yine sayfa tarayıcı içinde Şekil 3-1’deki gibi<br />

gözükür. Tek fark tarayıcı adres çubuğunda http://localhost/merhaba.html yerine<br />

dosyanın yolu ve adının yazmasıdır. Bu ikinci yöntemin bir kısa yolu Windows<br />

33


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

gezgininde merhaba.html dosyası üzerine çift tıklamaktır. Bu şekilde de yine bu sayfayı<br />

tarayıcı içinde görüntüleyebilirsiniz.<br />

Bu dersimizde oluşturacağınız sayfaları her iki yöntemle de çalıştırabilirsiniz.<br />

Hangisi sizin için daha kolay geliyorsa onu kullanabilirsiniz.<br />

Şekil 3-1 İlk HTML sayfası örneği<br />

HTML Belgesi başlangıç ve bitiş imleri: ve <br />

HTML imlerinin kendileri web tarayıcısı içinde gözükmezler. HTML imleri<br />

tarayıcıya ne yapmaları gerektiğini bildirirler. Bu belgedeki imi bu sayfanın<br />

başlangıcını, imi ise bu sayfanın bitimini gösterir. Yani imi başlangıç<br />

imi imi ise bitiş imidir. Dolayısıyla her zaman bir html belgesindeki bütün<br />

bilgiler bu iki html imi arasında olmalıdır.<br />

HTML Belgesi Baş ve Gövde İmleri: ve <br />

Her html belgesi iki ana bölümden oluşur. İlk bölüm baş kısımdır. İkinci bölüm<br />

ise gövde kısmıdır. Baş kısmı imiyle başlar ve imiyle biter. Dolayısıyla<br />

baş kısma ait bilgiler bu iki im arasında olmalıdır. Bir belgenin baş kısmına bu belgeyle<br />

ilgili genel bilgiler konulur. Bu bilgiler tarayıcı içinde gösterilmezler. Belgenin gövde<br />

kısmı ise imiyle başlar ve imiyle biter. Gövde kısmına tarayıcı içinde<br />

gösterilecek bilgiler konulur.<br />

Örnekteki Diğer imler<br />

Yukarıdaki basit HTML sayfası örneğindeki diğer imlerden imi, bu<br />

belgenin başlığını gösteren imdir. Başlık imi içindeki metin web tarayıcısının içinde değil<br />

ama en tepesinde gözükür. Yukarıdaki tarayıcı resminde tarayıcının en üstündeki mavi<br />

kısımda başlık metnini görebilirsiniz. Dolayısıyla web tarayıcısının en tepesinde görmek<br />

istediğiniz metni başlık imi arasına koymalısınız. Metin gövdesindeki , ve<br />

imleri metin biçimlendirme imleridir. sayfa içindeki metnin başlığını gösterir.<br />

34


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Bu durumda imi arasındaki metnin diğer metinlerden çok daha büyük puntolarla<br />

yazıldığına dikkat ediniz. imi metnin yatay düzlemde merkezde gösterilmesi<br />

gerektiğini belirtir. Yani metin solda ya da sağda değil de merkezde gösterilmelidir. Bu<br />

durumda ile arasındaki metnin yatay düzlemde web tarayıcısının<br />

merkezinde gösterildiğine dikkat ediniz. imi ile im çifti ise bir paragrafı<br />

tanımlar. Bu iki im arasındaki metnin bir paragraf olduğunu belirtir.<br />

Örnek Uygulama:<br />

Yukarıdaki örnekte görmüş olduğunuz; , , , ,<br />

, , imlerini kullanarak çok paragraflı örnek web sayfaları<br />

yapınız ve bu web sayfalarını tarayıcı içinde görüntüleyiniz?<br />

3.5 Web sayfası belgelerinin uzantıları<br />

Web sayfası dosyalarının iki tür uzantısı olabilir. Bunlardan birisi html diğeri ise<br />

htm uzantılarıdır. Örneğin yukarıdaki merhaba.html dosyasında uzantı tipi html olarak<br />

seçilmiştir. Aynı dosya merhaba.htm olarak ta isimlendirilebilirdi.<br />

Diğer yandan bu iki tip isimlendirme statik web sayfaları için geçerlidir. Yani<br />

web sunucusu tarafından çalışma anında üretilmeyen dosyalar için geçerlidir. Dinamik<br />

html belgelerinin çok çeşitli uzantıları olabilir. Bu tip belgeler üretildikleri programa göre<br />

farklı uzantılar alırlar. Mesela PHP programı tarafından dinamik olarak üretilen<br />

belgelerin uzantıları php seklindedir.<br />

3.6 Web tarayıcısı ile Web sayfası kaynak kodu görüntüleme<br />

Web tarayıcısı kullanıcıya web sunucusundan almış olduğu sayfayı düzenlenmiş<br />

olarak gösterir. Fakat bazı durumlarda web tasarımcısı sayfanın kaynak kodunu HTML<br />

imleriyle birlikte görmek ister. Bunun için bütün web tarayıcıları web sayfalarının kaynak<br />

kodlarının görüntülemesine imkan verir.<br />

Örnek Uygulama<br />

Firefox web tarayıcısında yukarıdaki sayfayı görüntülerken tarayıcının<br />

“Görünüm” menüsünden “Sayfa kaynağını göster” seçeneğini seçiniz. Bu durumda o<br />

anda göstermekte olduğu web sayfasının kaynak kodunu html imleriyle birlikte size<br />

gösterir. Yeni bir pencerede html kodunu Şekil 3-2’deki gibi gösterilir. Firefox tarayıcısı<br />

ile sayfa kaynak kodunu görüntülemenin ikinci bir yöntemi de fare tarayıcı içinde bir<br />

noktayı gösterirken sağ fare tuşuna tıklamak ve açılan menüden “Sayfa kaynağını göster”<br />

seçeneğini seçmektir. Benzer şekilde Internet Explorer ile de sayfa kaynak kodu fare sağ<br />

tuşuna tıklayarak ve “Kaynağı görüntüle” seçeneği seçilerek görüntülenebilir.<br />

35


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

3.7 HTML imleri<br />

Şekil 3-2 Web sayfalarının kaynak kodunu görüntüleme<br />

HTML imleri web tarayıcısında gözükecek bilgileri düzenlemek için kullanılır.<br />

Kendileri web tarayıcısı içinde gözükmezler. HTML imleri küçüktür ve büyüktür<br />

işaretleri arasında olur. Örneğin gibi. Bu imler HTML standardında [2]<br />

tanımlanmışlardır.<br />

HTML imleri genellikle bir çift halinde kullanılır. Birisi imin başlangıcını, diğeri ise<br />

imin bitimini gösterir. Örnek:<br />

Basit bir HTML sayfası. .<br />

Bitim iminde küçüktür işaretinden sonra bir de taksim işareti vardır. Bu ekstra<br />

taksim işareti bu imin başlangıç değil de bitim imi olduğunu gösterir.<br />

İki HTML imi arasında bulunan bilgiye im içeriği denilir. Bir imin içeriği başlangıç<br />

imi ile başlar ve bitiş imi ile sona erer.<br />

HTML imleri harf kipine duyarsızdırlar. Yani ile , veya<br />

aynı imi gösterir. Fakat belgelerimizde her zaman aynı tarzı kullanmak iyi bir<br />

alışkanlık olur. Yoksa belgelerimizin okunulurluğu azalır. Onun için belgelerinizde<br />

sürekli olarak ya küçük harflerden oluşa imleri ya da tamamen büyük harflerden oluşan<br />

imleri kullanınız. Küçük harfleri yazmak büyük harflere göre daha kolay olduğu için<br />

küçük harflerle yazılmış imleri tercih edilebilir. Diğer yandan büyük harflerle yazılmış<br />

imler daha kolay okunabilir. Önemli olan her zaman aynı şekilde belgelerinizi yazmaktır.<br />

3.8 HTML Elemanları<br />

HTML elemanları HTML imleriyle oluşturulurlar. Bir HTML belgesi HTML<br />

elemanlarından oluşur. HTML elemanları arasında bir hiyerarşik yapı vardır.<br />

36


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Bir HTML belgesi iki HTML elemanından oluşur: head elemanı yani baş elemanı<br />

ve body elemanı yani gövde elemanı. Baş ve gövde elemanlarının da kendi içlerinde<br />

başka elemanları vardır. Mesela yukarıdaki basit web sayfası örneğinde baş elemanı<br />

içinde bir title yani başlık elemanı vardır. Yine aynı HTML belgesindeki gövde<br />

elemanı içinde bir h1 elemanı ve bir paragraf elemanı vardır. Dolayısıyla HTML<br />

elemanları arasında bir hiyerarşik yapı vardır ve tüm elemanlar HTML belgesi içindedir.<br />

Aynı şekilde metnin gövde kısmındaki tüm elemanlar da gövde elemanı içindedir.<br />

3.9 HTML Belgesi Baş kısmı<br />

HTML belgesinin baş kısmında sadece sınırlı sayıdaki imler kullanılabilir. Çünkü<br />

bu kısımdaki bilgiler tarayıcı içinde gösterilmek için değildir. Bu kısımdaki bilgiler bu<br />

html belgesiyle ile bilgilerdir.<br />

HTML standardı baş kısmında kullanılmak için şu imleri tanımlar: ,<br />

, , , , ve .<br />

imi daha önce belirttiğimiz gibi bir belgenin başlığını tanımlamak için<br />

kullanılır. Bu imle tanımlanan başlık web tarayıcısı penceresinin en üst kısmında<br />

gösterilir.<br />

imi bir web sayfası hakkında anahtar bilgiler içerir. Bu bilgiler daha çok<br />

arama motorları tarafından kullanılır. Örneğin çiçeklerle ilgili bilgiler içeren bir web<br />

sayfası olsun. Bu durumda meta imi arasına bu sayfada anlatılan çiçeklerin ismi<br />

yazılabilir. Böylelikle arama motorları bu sayfayı indekslerken bu bilgiyi dikkate alırlar.<br />

imi bir sayfadaki bütün bağlantılar için taban olacak bağlantıyı tanımlar.<br />

Örneğin bir web sayfası içinden http://www.mersin.edu.tr/resimler/kampus.gif ve<br />

http://www.mersin.edu.tr/resimler/lab.gif resim dosyalarına bağlantılar bulunsun. Hatta<br />

aynı dizindeki başka resim dosyalarına da bağlantılar bulunsun. Bu durumda bu<br />

bağlantıların bulunduğu dizini base imi ile tanımladığımız takdirde, artık bu bağlantıların<br />

tüm adresini bağlantı oluştururken yazmak durumunda kalmayız. İlerleyen bölümlerde<br />

bunu daha geniş göreceğiz.<br />

, , ve imlerini de gelecek bölümlerde konusu<br />

geldikçe göreceğiz.<br />

3.10 HTML Metin Biçimlendirme Elemanları<br />

HTML dili belgelerde başlıklar veya paragraflar oluşturmak, metinleri koyu, italik<br />

veya altı çizili yapmak gibi çeşitli metin biçimlendirme imkânları sunarlar.<br />

Tablo 3-2’deki HTML belgesini bir metin editörü ile oluşturunuz.<br />

37


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

<br />

<br />

<br />

Mersin ili<br />

<br />

<br />

<br />

Mersin<br />

Mersin, Türkiye'nin güneyinde Akdeniz'e kıyısı bulunan Antalya<br />

ve Adana'nın ortasında yer alan bir ildir. Mersin'in tarih<br />

sahnesine çıkışı 19. yüzyılın ortalarına rastlamaktadır. Bu dönemde<br />

henüz bir köy olan bölge, göçmen bir Türkmen aşiretine ev sahipliği<br />

yapar ve adını da bu aşiretten alır. Uzun yıllar İçel adıyla<br />

bilinen il son yıllarda merkez ilçesi olan Mersin'in adını<br />

almıştır.<br />

İlçeleri<br />

Mersin ilinin 9 tane ilçesi vardır. Bunlar; Anamur,<br />

Aydıncık, Bozyazı, Çamlıyayla, Erdemli, Gülnar, Mut, Silifke ve<br />

Tarsus'tur.<br />

Yöresel Yemekleri<br />

Kendine özgü yemeği olan tantuni ile tatlıları<br />

cezerye ve kerebiç çok meşhurdur. Ayrıca, kuş gözü,<br />

telatür, eğe (kaburga) dolması, bandırma, yüzük çorbası, keşkek,<br />

övelemeç ve batırık özel yöresel yemeklerindendir.<br />

<br />

<br />

Tablo 3-2 Biçimlendirilmiş metin için örnek web sayfası kodu<br />

Bu belgeyi bilgisayarınıza kaydedip web tarayıcınızla görüntülerseniz Şekil<br />

3-3’teki gibi görünür.<br />

HTML Başlık Elemanları<br />

Şekil 3-3 HTML İle Metin Biçimlendirme<br />

38


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Bu HTML belgesinde iki tip başlık elemanı vardır. Bunlardan ilki belge<br />

gövdesinin başında bulunan Mersin metnidir. Mersin<br />

seklinde yazılmıştır. imi bir başlık elemanı tanımlar. Dolayısıyla im çifti<br />

içinde kalan metin başlık olarak tanımlanmış olur. Bu im içinde bulunan imi<br />

ise, bu im çifti içinde kalan elemanın ekranda yatay düzlemde ortada gözükmesini sağlar.<br />

İkinci tip başlık elemanından iki tane vardır. Bunlar paragrafların başlarında<br />

bulunan alt başlıklardır. Bunlardan ilki İlceleri olarak tanımlanmıştır. Bu<br />

başlıkların çeşidi tipidir. başlığının derecesi başlığına göre daha<br />

düşüktür. Dolayısıyla olarak tanımlanmış bir metin ekranda olarak<br />

tanımlanmış başlığa göre biraz daha küçük puntolarla gözükür. Bir belgede genel olarak<br />

belgenin ana başlığı olarak tanımlanır. Sonra bir alt dereceden olan başlıklar <br />

olarak tanımlanır. Sonra daha alt dereceden olan başlıklar olarak tanımlanır. Bu<br />

şekilde , , ve tipi başlıklar da tanımlanabilirler. Başlıkların derecesi<br />

düştükçe gösterilecek metnin puntosu da küçülür.<br />

Örnek Uygulama:<br />

7 değişik başlık tipini kendi oluşturacağınız örnek bir HTML belgesi içinde<br />

kullanarak bunların aralarındaki farkı gözlemleyiniz?<br />

Metin Biçimlendirmeleri<br />

Yukardaki belgede bazı metinler tarayıcı içinde koyu, bazıları altı çizili, bazıları<br />

da italik olarak gösterilmiştir. Örneğin son paragraftaki “tantuni”, “cezerye” ve “kerebiç”<br />

kelimeleri koyu gözükmektedir. HTML belgesine baktığımızda bu kelimelerin etrafında<br />

imi olduğunu görürüz. Dolayısıyla imi bir metnin koyu gözükmesi için<br />

kullanılır. Benzer şekilde imi metinlerin italik, yani öne eğik, imi ise altı çizili<br />

olarak gözükmesini sağlar. Bu imler birbirleriyle birlikte de kullanılabilirler. Örneğin ilçe<br />

isimleri hem koyu hem de italik yapılmışlardır.<br />

Metinleri koyu yapmak için imine ek olarak imi de kullanılabilir.<br />

Benzer şekilde metinleri italik yapmak için imine ek olarak imi de<br />

kullanılabilir. Bu imler yaklaşık aynı sonucu üretirler.<br />

Başlık olmayan bir metnin etrafındaki metinden biraz daha büyük gözükmesini<br />

istersek bunu imiyle yapabiliriz. Benzer şekilde bir metni etrafındaki metinden<br />

biraz daha küçük olmasını istersek bunu imiyle yapabiliriz.<br />

HTML bazı metinleri alt veya üst metin olarak tanımlamamıza da olanak sağlar.<br />

Üst metin diğer metinlerden biraz daha yukarda ve küçük olan metinlerdir. Örneğin x 2<br />

ifadesindeki 2 karakteri üst metindir. Alt metin ise diğer metinlerden biraz daha aşağıda<br />

ve küçük olan metinlerdir. Örneğin x1 ifadesindeki 1 karakteri alt metindir. x 2 ve x1<br />

39


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

ifadelerinin web sayfasında bu şekilde gözükmesi için HTML belgesi içinde ve<br />

imleri kullanılır ve bu işlem şu şekilde yapılır:<br />

x 2 : x2<br />

x1: x1<br />

Paragraflar ve Yeni satırlar<br />

Bir metni paragraf yapmak için imi kullanılır. im çifti arasında kalan<br />

metin bir paragraf olur. Yukarıdaki metinde üç tane paragraf vardır. Tarayıcı yeni<br />

paragraftan önce ve sonra bir satırlık boşluk bırakır.<br />

Bir belgede yeni paragraf oluşturmadan yeni bir satır oluşturmak istersek, bu<br />

durumda imini kullanırız. Yukarıdaki HTML belgesinin ilk paragrafında <br />

iminin örnek kullanımı gözükmektedir. imi bir çift olarak değil de tek bir im olarak<br />

kullanılmıştır. Fakat çift olarak ta kullanılabilir. Bu durumda içi boş bir eleman olur.<br />

şeklinde kullanılır.<br />

İkinci bir yeni satır imi ise imidir. Bu im yeni satır eklemenin yanında<br />

sayfaya yatay bir çizgi de ekler. Bu im de yine imi gibi tek veya çift olarak<br />

kullanılabilir.<br />

HTML Belgelerine Açıklama Eklemek<br />

HTML belgelerine tarayıcı tarafından hiç işlenmemek üzere, sadece bu belgeyi<br />

hazırlayan kişiye ekstra bilgi vermek amacıyla açıklama da eklenebilir. Yukarıdaki html<br />

belgesindeki metni bu<br />

şekildeki bir açıklama elemanıdır. Bu açıklama kısmı tarayıcı tarafından okunup<br />

yorumlanmaz. Dolayısıyla açıklama elemanı imi ile biter.<br />

3.11 HTML Elemanları Öznitelikleri<br />

HTML elemanlarının içeriklerine ek olarak öznitelikleri de olabilir. Öznitelikler<br />

HTML elemanlarının içeriğiyle ilgili ekstra bilgi içerirler. Örneğin HTML gövde yani<br />

elemanının bgcolor isimli bir özniteliği vardır. Bu öznitelik bir HTML<br />

sayfasının arka plan rengini ayarlamak için kullanılır. Benzer şekilde birçok HTML<br />

elemanının align isimli bir özniteliği vardır. Bu öznitelik te HTML elemanlarının<br />

ekranda yatay düzlemde gözükecekleri pozisyonu belirlemek için kullanılır.<br />

40


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

3.12 Web Sayfası Arka Plan Rengi Ayarlama<br />

Şimdi bir HTML belgesinin gövde elemanının bgcolor özniteliğini kullanarak bu<br />

belgenin tarayıcı içindeki arka plan rengini ayarlayalım. Buna ek olarak HTML<br />

elemanlarının belge içindeki yatay düzlemdeki pozisyonlarını da align özniteliklerini<br />

kullanarak ayarlayalım. Bu işlemleri yapan örnek bir web sayfası kodu Tablo 3-3’de<br />

gözükmektedir. Bu tablodaki HTML belgesini bir metin editörü ile oluşturunuz.<br />

<br />

<br />

Arka Plan Rengi Testi<br />

<br />

<br />

<br />

Karacaoğlan<br />

Yaşamı üstüne kesin bilgi yoktur. Bugüne değin<br />

yapılan inceleme ve araştırmalara göre 17.yy'da yaşamıştır.<br />

Çukurova bölgesinde yaşadığı sanılmaktadır.<br />

<br />

<br />

Tablo 3-3 Web sayfası arka plan rengi ayarlama için örnek sayfa kodu<br />

Bu sayfa tarayıcı içinde Şekil 3-4’teki gibi gözükür.<br />

Şekil 3-4 HTML ile arka plan rengi ayarlama<br />

HTML belgesinde gözüktüğü gibi gövde elemanının bgcolor özniteliği şu<br />

şekilde ayarlanır:<br />

<br />

Burada aqua kelimesi arka planın alacağı rengi gösterir, bgcolor anahtar kelimesi<br />

ise arka plan rengi özniteliğinin adını gösterir. Arka plan rengi olarak verebileceğimiz 16<br />

tane renk ismi vardır. Bu isimler şunlardır: aqua, black, blue, fuchsia, gray,<br />

green, lime, maroon, navy, olive, purple, red, silver, teal, white, ve<br />

41


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

yellow. Bu renk isimlerini yukarıdaki örnekte deneyerek hangi renklere karşılık<br />

geldiklerini görebilirsiniz. İkinci bir ihtimal olarak ta http://www.w3.org/TR/css3color/#html4<br />

sayfasına giderek bu renk isimlerinin gösterdikleri renkleri görebilirsiniz.<br />

align özniteliği<br />

Bu örnekte kullanılan ikinci öznitelik ise align özniteliğidir. Bu öznitelik bir<br />

HTML elemanının web sayfasında yatay düzlemde gözükeceği yeri belirler. Alabileceği<br />

muhtemel değerler; center, right, left ve justify kelimeleridir. Bunlar sırayla şu<br />

anlamlara gelirler; orta, sağ, sol ve dağıtık. Bu örnekte başlık ortaya ayarlanmışken<br />

paragraf elemanı sağa ayarlanmıştır.<br />

3.13 HTML Dilinde Renk Gösterimi<br />

HTML dilinde renk ayarlarını yukarıdaki örnekte olduğu gibi yapabilsek te bu<br />

yöntem sadece 16 tane renk seçeneği sunar. Bu da İnternet’te olan çok değişik web<br />

sayfası tasarımı için yetersiz kalır. Her ne kadar doğadaki ana renkler sınırlı olsa da, bu<br />

ana renklerin karışımından oluşan milyonlarca çeşit renk vardır. İşte insanlar bu zengin<br />

renk kombinezonlarını web sayfası tasarımında da kullanmak isterler. Bu çok farklı<br />

amaçlar için tasarlanmış web sayfalarının oluşturulabilmesi için bir gerekliliktir. İşte bu<br />

farklı uygulamaların ihtiyacını karşılamak için HTML dilinde ana renkleri karıştırarak<br />

çok sayıda farklı renk oluşturma imkânı sunulmuştur.<br />

Doğadaki renklerin çoğu üç ana rengin karışımı olarak tanımlanabilir. Bunlar<br />

kırmızı, yeşil ve mavi renkleridir. Genel olarak bilgisayarlarda renkler bu üç rengin<br />

karışımı olarak gösterilir. Dolayısıyla HTML dilinde de aynı şekilde renkler bu üç rengin<br />

karışımı olarak gösterilirler.<br />

Her rengin alacağı 256 değişik değer vardır. Eğer bir rengin değeri 0 ise o rengin<br />

karışımda etkisi hiç yoktur. Değeri 255 ise etkisi maksimum seviyededir. Bu üç rengin<br />

karışımı 16’lik sistemde gösterilir. Dolayısıyla bir renk çeşidinin alacağı minimum değer<br />

00 iken, alacağı maksimum değer FF’tir. FF sayısı 255 sayısının 16’lık sistemdeki<br />

karşılığıdır.<br />

Bu üç renk şu şekilde karıştırılır. Toplam rengi gösteren ifade 6 karakter<br />

uzunluğundadır. Bu 6 karakterin ilk iki karakteri kırmızı rengin değerini gösterir. Sonraki<br />

iki karakter, yani ortadaki iki karakter yeşil rengin karışımdaki değerini gösterir. En son<br />

iki karakter ise karışımdaki mavi rengin değerini gösterir.<br />

Şimdi bu üç rengi karıştırarak nasıl kırmızı, yeşil ve mavi renklerini elde<br />

edeceğimizi görelim. Kırmızı rengi elde edebilmek için kırmızı rengin değeri maximum<br />

iken diğer yeşil ve mavi renklerden hiç karışım olmamalı. Yani yeşil ve mavi değerleri<br />

sıfır olmalı. Dolayısıyla kırmızı rengi şu şekilde oluşturabiliriz:<br />

42


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Kırmızı FF0000<br />

“FF0000” ifadesinde ilk iki karakter yani “FF” kırmızı rengin oluşturulan renkteki<br />

katkısını gösterir. Bu değer de 255’tir. Dolayısıyla kırmızı renk karışıma maximum değer<br />

ile katılmıştır. Sonraki iki karakter yani “00” değeri yeşil rengin karışımdaki etkisini<br />

gösterir. Yeşil renk karışıma sıfır değeriyle katılmıştır. Yani oluşturulan bu renge hiç<br />

yeşil rengi karıştırılmamıştır. Son iki karakter de mavi rengin değerini gösterir. Onun<br />

değeri de sıfırdır. Yani oluşturulan bu yeni renge mavi hiç karıştırılmamıştır. Dolayısıyla<br />

oluşturulan yeni renk sadece kırmızıdan ibaret olmuştur. Dolayısıyla “FF0000” rengi<br />

kırmızıyı göstermektedir.<br />

Benzer şekilde yeşil ve mavi renkleri de şu şekilde oluşturulabilir:<br />

Yeşil 00FF00<br />

Mavi 0000FF<br />

Yeşil rengi oluştururken sadece yeşil değeri maximum değerini almış, diğer ikisi<br />

yani kırmızı ve mavi sıfır değerini almıştır. Benzer şekilde mavi rengi oluşturulmuştur.<br />

Şimdi diğer birkaç karışımı daha görelim.<br />

Siyah 000000<br />

Gri 808080<br />

Sari FFFF00<br />

Eğer üç rengin hepsinin de değerleri sıfır ise, bu durumda ortaya çıkan renk siyah<br />

olur. Eğer bütün renkler yarı değerleriyle karıştırılırlarsa bu durumda ortaya çıkan renk<br />

gri olur. 16’lik sistemde FF sayısının yarısının 80 olduğuna dikkat ediniz. Eğer tam<br />

kırmızı ile tam yeşil karıştırılırsa bu durumda oraya çıkan renk sarı olur.<br />

Bu şekilde üç temel rengi farklı tonlarda karıştırarak çok farklı renkler elde<br />

ederiz. Her rengin 256 farklı değeri olduğu için toplam elde edebileceğimiz farklı renk<br />

sayısı:<br />

Toplam renk çeşidi: 256*256*256 = 16,777,216<br />

Yani 16 milyondan fazla farklı renk HTML ile gösterilebilir.<br />

43


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Yukarıdaki aqua renginin bu sistemdeki karşılığı 00FFFF sayısıdır. Yani tam yeşil<br />

ile tam mavinin karışımıdır. Şimdi aynı sayfada aqua kelimesi yerine bu sayıyı<br />

kullanalım. Bu durumda web sayfası HTML kodu Tablo 3-4’deki gibi olur.<br />

<br />

<br />

Arka Plan Rengi Testi<br />

<br />

<br />

<br />

Karacaoğlan<br />

Yaşamı üstüne kesin bilgi yoktur. Bugüne değin<br />

yapılan inceleme ve araştırmalara göre 17.yy'da yaşamıştır. Çukurova<br />

bölgesinde yaşadığı sanılmaktadır.<br />

<br />

<br />

Tablo 3-4 Web sayfası arka plan renginde renk kodu kullanma örneği<br />

Bu durumda bgcolor özniteliğin değeri yazılırken renk sayısının önüne # işareti<br />

konulur. Bunun amacı rengin değerinin bir renk adı değil, renklerin karışımını gösteren<br />

16’lık bir sayı olduğunu ifade etmek içindir.<br />

İnternet’te birçok sayfada hangi karışımın hangi renge karşılık geldiğine dair<br />

bilgiler vardır. Örneğin http://www.w3schools.com/html/html_colornames.asp sayfasında<br />

100’den fazla farklı rengin 16’lık sistemdeki karışım karşılığı verilmiştir. Bu sayfalarda<br />

verilen 16’lık düzlemdeki renk değerini web sayfalarınızda kullanabilirsiniz.<br />

3.14 Özel Karakterler<br />

HTML’de bazı karakterlerin özel anlamı vardır. Örneğin < karakteri bir imin<br />

başlangıcını, > karakteri ise bir imin bitimini gösterir. Bundan dolayı bu tip özel anlamı<br />

olan karakterlerin tarayıcı içinde gözükmesini istediğimiz zaman, bu karakterleri direk<br />

olarak yazamayız. Mesela 2 < 4 ifadesinin tarayıcı içinde gözükmesini istersek ve bunu 2<br />

< 4 şekilde HTML belgesinde yazarsak, tarayıcı bu ifadedeki < karakterini bir imin<br />

başlangıcı olarak algılar ve hatalı bir gösterim oluşur. Dolayısıyla tarayıcıya bir şekilde<br />

bu ifadedeki küçüktür karakterinin bir im başlangıcı olmadığını ve tarayıcı içinde<br />

kullanıcıya küçüktür karakteri olarak gösterilmesi gerektiğini ifade etmemiz gerekir. İşte<br />

bunu HTML belgesinde yapmanın yolu bu karakterler için özel bir format ve isim veya<br />

değer kullanmaktır. Örneğin < karakterini tarayıcıda göstermek için &lt; ifadesini veya<br />

&#60; değerini kullanırız. Tarayıcıda 2 < 4 gözükmesi için HTML belgesinde 2 &lt; 4<br />

veya 2 &#60; 4 yazarız. Bu şekilde özel gösterim gerektiren karakterler ve bunların<br />

değerleri Tablo 3-5’de verilmiştir.<br />

Karakter Açıklama Özel Karakter Adı Değeri<br />

44


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

boşluk &nbsp; &#160;<br />

< küçüktür &lt; &#60;<br />

> büyüktür &gt; &#62;<br />

& ampersand &amp; &#38;<br />

Tablo 3-5 HTML dili özel karakter tablosu<br />

Özel karakterler & işaretiyle başlar ve noktalı virgül karakteriyle biter. Bunların<br />

bir isimleri vardır, bir de sayısal değerleri vardır. Her ikisi de kullanılabilir.<br />

Boşluk karakteri özel karakterler arasındaki belki de en önemli karakterdir. Çünkü<br />

HTML belgeleri içindeki boşluklar tarayıcı tarafından tek boşluğa indirilir ve tek bir<br />

boşluk olarak kullanıcıya gösterilir. Bundan dolayı birden fazla boşluk gözükmesini<br />

istediğimiz durumlarda her bir boşluk için bir &nbsp; yazmamız gerekir.<br />

Şimdi Tablo 3-6’daki gibi bir HTML belgesi oluşturalım.<br />

<br />

<br />

HTML'de özel Karakterler. <br />

<br />

<br />

<br />

"Özel Karakterler"<br />

Öğretmen şöyle dedi: <br />

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "C dilindeki bir if ifadesine şöyle<br />

bir örnek verebiliriz:"<br />

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if( x &lt; y){ ... };<br />

<br />

<br />

Tablo 3-6 Web sayfalarında özel karakter kullanma örneği<br />

Bu HTML belgesi tarayıcı içinde Şekil 3-5’teki gibi gözükür:<br />

45


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Şekil 3-5 HTML sayfalarında özel karakterlerin kullanımı<br />

Tarayıcı içinde ikinci ve üçüncü satırlar satır başından daha ilerde başladığı<br />

gözüküyor. Satır başlarındaki bu boşlukların &nbsp; karakterlerini kullanarak<br />

koyduğumuza dikkat ediniz. Benzer şekilde if (x < y) ifadesindeki < karakterinin de<br />

&lt; ifadesiyle yazıldığına dikkat ediniz.<br />

3.15 Bağlantılar<br />

HTML dilinin sayfa düzenlemeye ek olarak en önemli özelliği İnternet’te bulunan<br />

başka belgelere bağlantı verilmesine imkan sağlamasıdır. Bağlantılar sayesinde<br />

İnternet’teki ayrı ayrı olan belgeler birbirine bağlanır ve dünyayı saran belge ağı meydana<br />

gelir. Kullanıcılar bu sayede İnternet’te sörf yapabilir. Bir belgeden diğerine geçerek<br />

başladığı noktadan çok farklı yerlere ve bilgilere ulaşabilir.<br />

Bir HTML bağlantısı bir HTML sayfasından diğer bir HTML sayfasına işaret<br />

eden tek yönlü bir işaretçidir [6]. Kullanıcı bir bağlantıya tıklayarak o bağlantının işaret<br />

ettiği web sayfasına kolayca ulaşır. Tarayıcı işaret edilen web sayfasının adresinin<br />

yazılmasına gerek kalmadan bir tıklamayla işaret edilen sayfaya gider. Sayfalar<br />

arasındaki bu kolay geçiş imkânı İnternet’teki sörfün temelini oluşturur.<br />

HTML belgelerinde bağlantı oluşturmak için imi kullanılır. Bu im bağlantı<br />

vermek için href özniteliği ile birlikte kullanılır. Bu imin href özniteliğine ek olarak<br />

bağlantılar için kullanılan diğer bazı öznitelikleri ise target, title ve id isimli<br />

öznitelikleridir. Şimdi ilk bağlantı örneğimizi görelim. Bunun için Tablo 3-7’deki gibi bir<br />

HTML belgesi oluşturalım.<br />

<br />

<br />

Akdeniz<br />

<br />

<br />

<br />

Akdeniz<br />

46


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Akdeniz şu kitalarla çevrelenmiştir:<br />

doğuda Asya,<br />

kuzeyde Avrupa ve güneyde<br />

<br />

Afrika . <br />

<br />

<br />

Tablo 3-7 Web sayfalarından bağlantı oluşturma örneği<br />

Bu HTML sayfası web tarayıcısı içinde Şekil 3-6’daki gibi gözükür:<br />

Şekil 3-6 HTML sayfalarında bağlantı oluşturma<br />

Tarayıcı resminden gözüktüğü gibi “Asya”, “Avrupa” ve “Afrika”<br />

kelimelerinden bağlantı oluşturulmuştur. Kendisi için bağlantı oluşturulan metin tarayıcı<br />

içinde maviye boyanır ve altı çizilir. Böylece kullanıcı bu metinlerden bağlantı olduğunu<br />

anlar ve gerektiğinde bu bağlantıların üzerine tıklayarak bu bağlantıların gösterdiği<br />

sayfaya gider. Bağlantıların hangi adresi gösterdiğini bu adreslere gitmeden de öğrenmek<br />

mümkündür. Bir bağlantı üzerine fare ile gelindiğinde o bağlantının işaret ettiği web<br />

sayfası adresi, tarayıcının sol alt köşesinde gözükür. Yukarıdaki tarayıcı resminde fare<br />

“Asya” metni üzerine getirilmiştir ve “Asya” metninin işaret ettiği web sayfasının adresi<br />

tarayıcının sol at köşesinde gözükmektedir.<br />

Görüldüğü gibi “Asya” kelimesinden http://tr.wikipedia.org/wiki/Asya<br />

sayfasına bir bağlantı oluşturmak için imi şu şekilde kullanılır:<br />

Asya<br />

Bağlantı başlangıç imi ile bitiş imi arasında kalan metin için oluşturulur.<br />

Bu örnekte başlangıç ve bitiş imleri arasında kalan metin Asya kelimesidir. Bu<br />

bağlantının işaret edeceği web sayfası adresi ise iminin href özniteliği değeri olarak<br />

47


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

çift tırnak arasında yazılmıştır. başlangıç iminin < işaretiyle başlayıp href özniteliği<br />

değeri sonundaki > işaretiyle bittiğine dikkat ediniz.<br />

3.16 Bağlantılar Üzerinde Metin Gösterme<br />

Bağlantının gösterdiği sayfa hakkında o siteye gitmeden kullanıcıya kısa bir bilgi<br />

vermek mümkündür. Bunun için iminin title özniteliği kullanılır. Bu örnekte<br />

Avrupa metni için oluşturulan bağlantıda bu öznitelik kullanılmıştır:<br />

Avrupa<br />

Bu durumda iminin iki tane özniteliği vardır. İlki href ve ikincisi ise title.<br />

Bu iki öznitelik arasında sadece bir boşluk bırakmak yeterli olur. Bu durumda <br />

başlangıç imi title özniteliği değerinin sonundaki > işaretiyle bittiğine dikkat ediniz.<br />

title özniteliğine atanan metin bu tarayıcı içinde Avrupa bağlantısı üzerine fare ile<br />

gelindiğinde fare imlecinin yanında gözükür.<br />

Bağlantıları Yeni Web Tarayıcı Penceresi İçinde Açma<br />

Yukarıdaki HTML belgesinde gözüktüğü gibi Afrika kelimesi için oluşturulan<br />

bağlantıda target isimli ikinci bir öznitelik kullanılmıştır:<br />

<br />

Afrika <br />

Bu örnekteki target özniteliğinin kullanılmasının amacı bu bağlantıya<br />

tıklanıldığında bu bağlantının işaret ettiği web sayfasının yeni bir tarayıcı penceresi<br />

içinde açılmasıdır. Bu öznitelik kullanılmadığı durumda tıklanılan web sayfası aynı<br />

tarayıcı içinde açılır. Bu örnekte Asya ve Avrupa bağlantılarına tıklanıldığında bu<br />

bağlantıların işaret ettiği sayfalar aynı tarayıcı penceresi içinde açılır. Fakat Afrika<br />

bağlantısına tıklandığında bu bağlantının işaret ettiği sayfa yeni bir tarayıcı içinde açılır.<br />

3.17 Bir web sayfanın alt bölümlerine bağlantı oluşturma<br />

Bazı web sayfaları çok uzun olabilir. Bu durumda web sayfası içindeki bir alt<br />

bölüme yani sayfa içindeki bir HTML elemanına bağlantı vermek gerekebilir. Bu<br />

bağlantı hem aynı web sayfası içinden verilebilir, hem de başka web sayfalarından<br />

verilebilir.<br />

Bir HTML elemanına bağlantı verebilmek için öncelikle bu HTML elemanına bir<br />

isim vermemiz gerekir. Daha sonra bu isim kullanılarak bu HTML elemanına gerek aynı<br />

sayfadan gerekse başka sayfalardan direk bağlantı oluşturulabilir.<br />

48


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Bir HTML elemanına isim vermek için o elemanın id özniteliği kullanılır. Şimdi<br />

bununla ilgili bir örnek uygulama yapalım. Bunun için Tablo 3-8’deki gibi bir HTML<br />

belgesi oluşturalım.<br />

<br />

<br />

Kıtalar<br />

<br />

<br />

<br />

Kıtalar<br />

Dünyadaki kıtalardan bazıları şunlardır: <br />

Asya, Avrupa ve Afrika .<br />

<br />

Asya <br />

Avrupanın doğusunda, Büyük Okyanus'un batısında, Okyanusya'nın<br />

kuzeyinde ve Arktik Okyanus'un güneyinde bulunan kıtadır.<br />

Avrupa <br />

Afrikanın kuzeyinde, Asya'nın batısında ve Atlantik Okyanusu'nun<br />

doğusunda bulunan kıtadır. Üzerinde birçok ülke mevcuttur.<br />

Afrika <br />

Avrupa'nın güneyinde, Atlantik Okyanusu'nun doğusunda, Hint<br />

Okyanusu'nun batısında ve Antarktika'nın kuzeyinde bulunan<br />

kıtadır.<br />

Lütfen bu sayfadaki bilgilerle ilgili iletişim için bize yazın.<br />

<br />

<br />

Tablo 3-8 Web sayfası alt bölümlerine bağlantı oluşturma örneği<br />

Bu HTML belgesi web tarayıcısı içinde Şekil 3-7’deki gibi gözükür.<br />

Şekil 3-7 Web sayfası içinde yerel bağlantı oluşturma<br />

49


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Tarayıcı penceresini büyütünce tek pencere içinde bu web sayfasının tamamını<br />

görebiliriz. Ama biz yer darlığından dolayı burada web tarayıcısı penceresini bu şekilde<br />

küçük tuttuk. Şimdi bu pencerede Afrika bağlantısına tıklarsanız, tarayıcının aynı pencere<br />

içindeki Afrika alt bölümünü göstermeye başladığını görürüsünüz. Bu durumda<br />

göreceğiniz tarayıcı sayfası Şekil 3-8’deki gibi olur.<br />

Şekil 3-8 Yerel bağlantı ile erişim<br />

Yukarıdaki HTML belgesinde öncelikle üç alt başlık elemanına da id imiyle isim<br />

verdiğimize dikkat ediniz. Örneğin Afrika alt başlığı şu şekilde tanımlanmıştır:<br />

Afrika <br />

Burada id imiyle alt başlık elemanına bir isim veriyoruz. Artık bu elemana<br />

bu ismiyle erişebiliriz. Burada bu alt başlığın ismi afk olmuş oluyor. Benzer şekilde<br />

diğer iki alt başlık elemanına da id özniteliğini kullanarak isim veriyoruz. Onlara da asy<br />

ve avp isimlerini veriyoruz.<br />

İkinci adımda isimlendirmiş olduğumuz bu alt başlık elemanlarına belgemizin<br />

başka yerlerinden bağlantı veriyoruz. Şimdi Afrika elemanına vermiş olduğumuz<br />

bağlantıya daha yakından bakalım:<br />

Afrika <br />

Bu durumda href özniteliğinin değeri sadece alt başlık elemanının ismi olarak<br />

veriliyor. Çünkü hem bağlantıyı veren hem de bağlantı verilen eleman aynı belge içinde<br />

bulunmaktadır. Ayrıca href özniteliğinin değerini yazarken önce # işaretinin<br />

kullanıldığına dikkat ediniz.<br />

Bazı web sayfalarında HTML elemanlarını isimlendirmek için id özniteliği<br />

yerine name özniteliğinin kullanıldığını görebilirsiniz. Bu, şu anda tavsiye edilmeyen bir<br />

metoddur. Doğrusu id özniteliğinin kullanılmasıdır.<br />

50


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Alt bağlantılar her türlü HTML elemanına yapılabilir. Örneğin paragraf alt<br />

elemanlarına da bağlantı yapılabilir. Fakat bu örnekte alt başlığa yapmak daha mantıklı<br />

olduğu için biz alt başlıklara bağlantı yaptık.<br />

Başka sayfalardaki bir web sayfası içindeki alt bölümlere bağlantı<br />

oluşturmak<br />

Başka sayfalardaki bir web sayfası içindeki alt bölümlere bağlantı oluşturulabilir.<br />

Örneğin yukarıdaki web sayfası<br />

http://www.bilgi.com/kitalar.html<br />

Adresinde bulunsun. Bu durumda bu sayfadaki Afrika alt elemanının web adresi<br />

şöyle olur:<br />

http://www.bilgi.com/kitalar.html#afk<br />

Yani web sayfasının adresinden sonra bir # işareti konulur ve alt bölümün ismi<br />

yazılır.<br />

mailto bağlantısı<br />

Yukarıdaki web sayfasının en altında farklı bir bağlantı şekli gözükmektedir. Bu<br />

ifade şudur:<br />

Lutfen bu sayfadaki bilgilerle ilgili iletisim için bize<br />

yazın.<br />

Bu durumda href özniteliğin değeri olarak bir web sayfası yerine mailto ile<br />

başlayan ve bir E-posta adresi ile devam eden bir ifade verilmiştir. Bunun amacı bu<br />

bağlantıya tıklanıldığında href kısmında belirtilen E-posta adresine E-posta gönderilmesi<br />

için kullanıcının bilgisayarındaki E-posta programının açılmasıdır. Bu web sayfası<br />

sahiplerine E-posta göndermeyi kolaylaştırmak için düşünülmüş bir yöntemdir.<br />

Genellikle web sayfalarının en alt kısmına kullanıcıların görüşlerini almak için konulur.<br />

3.18 Göreli Bağlantılar<br />

Bir web sayfasındaki belgeler kendi sunucusundaki belgelere bu belgelerin tüm<br />

adlarını yazmadan da bağlantı verebilir. Örneğin web sunucusunun kök dizini olan<br />

htdocs dizininin içeriği Şekil 3-9’da gözüken soldaki pencere gibi olsun. Yani kök<br />

dizininde diğer dosyaların yanında mersin.html ve merhaba.html isimli iki dosya<br />

bulunsun. Bunlara ek olarak ilceler isimli bir alt dizin bulunsun. Bu ilceler dizininin<br />

51


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

içeriği de Şekil 3-9’da sağ tarafta gözüken pencere gibi olsun. Yani ilceler dizininde<br />

beş tane ilçe ismiyle HTML dosyaları bulunsun. Bu dizindeki her belgede o ilçeyle ilgili<br />

bir web sayfası olsun.<br />

Şekil 3-9 Göreli Bağlantı İçin Dosyalar<br />

Şimdi mersin.html isimli dosyadan merhaba.html isimli dosyaya ve ilceler<br />

dizini altındaki bazı dosyalara nasıl bağlantı verildiğini görelim. Bunun için Tablo<br />

3-9’daki gibi bir HTML belgesi oluşturalım.<br />

<br />

<br />

Mersin<br />

<br />

<br />

<br />

Mersin<br />

Mersin Valiliğinin sayfasına hoş geldiniz. Valimizin mesajını<br />

okumak için tıklayınız. <br />

Mersinin ilçelerinden bazıları şunlardır:<br />

Tarsus,<br />

Silifke,<br />

Erdemli.<br />

<br />

<br />

Tablo 3-9 Göreli bağlantı oluşturma örnek sayfası<br />

Bu HTML belgesi web tarayıcısı içinde Şekil 3-10’daki gibi gözükür.<br />

52


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Şekil 3-10 Web sitesi içinde göreli bağlantılar<br />

Şimdi mersin.html dosyasından aynı dizindeki merhaba.html dosyasına nasıl<br />

bağlantı verildiğine dikkat edelim:<br />

tıklayınız<br />

Aynı dizindeki bir dosyadan diğerine bağlantı vermek için sadece dosya ismini<br />

yazmak yeterli olur. Bu dosyanın tam URL adresini yazmaya gerek yoktur. Dolayısıyla<br />

bu örnekte merhaba.html dosyasına bağlantı vermek için sadece href değeri olarak<br />

sadece merhaba.html denilmiştir. Benzer şekilde bir alt dizindeki bir dosyaya bağlantı<br />

vermek için de yine bu belgenin tam URL adresine gerek yoktur. Yalnız bu durumda<br />

dosya ismine ek olarak dizin adını da vermemiz gerekir. Bu da ilceler için verilen<br />

bağlantı örneğinde görülmektedir:<br />

Tarsus<br />

Bu durumda önce alt dizin adı sonra da dosyanın adı yazılmıştır. Eğer dosyamız<br />

iki alt dizinde olsaydı, bu durumda iki alt dizini de dosya isminden önce belirtmemiz<br />

gerekirdi. Kısaca eğer sadece dosya adı belirtilmişse, web sunucusu bağlantı verilen<br />

dosyayı bağlantı veren dosya ile aynı dizinde arar. Eğer alt dizin adı da verilmişse,<br />

öncelikle belge ile aynı dizinde olan alt dizini arar. Sonra bu alt dizin içinde bağlantı<br />

verilen belgeyi arar.<br />

Bir üst dizindeki belgeden alt dizinlerdeki belgelere, belgelerin dizin yolunu da<br />

yazarak bağlantı veririz. Pekâlâ, alt dizindeki bir belgeden üst dizindeki bir belgeye nasıl<br />

bağlantı verebiliriz? Örneğin yukarıdaki durumda tarsus.html dosyası içinden<br />

mersin.html dosyasına nasıl bağlantı verebiliriz? Şimdi bunu görelim. tarsus.html<br />

dosyası içeriği Tablo 3-10’daki gibi olabilir.<br />

53


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

<br />

<br />

Tarsus<br />

<br />

<br />

<br />

Tarsus<br />

Tarsus Mersin ilinin en büyük<br />

ilçesidir.<br />

<br />

<br />

Tablo 3-10 Göreli bağlantı oluşturma ikinci örnek sayfası<br />

Görüldüğü gibi tarsus.html belgesi içinden bir üst dizindeki mersin.html<br />

dosyasına şu şekilde bağlantı verilmiştir:<br />

<br />

Yani bir üst dizini göstermek için iki nokta kullanılır. Eğer iki üst dizini<br />

göstermek isteseydik bu durumda iki katlı iki nokta (../..) kullanmak durumunda<br />

kalırdık. Bu şekilde bir web sunucusundaki bütün belgelere tam URL adreslerini<br />

kullanmadan göreli bağlantılarla bağlantı verebiliriz. Diğer yandan tam adreslerini<br />

kullanarak bağlantı vermekte her zaman için mümkündür.<br />

3.19 Referanslar<br />

[1] T. Berners-Lee, "Information Management: A Proposal." CERN (March 1989, May<br />

1990). http://www.w3.org/History/1989/proposal.html.<br />

[2] D. Raggett, A.L. Hors, ve I. Jacobs (editors), "HTML 4.01 Specification",<br />

http://www.w3.org/TR/html4, 24 December 1999.<br />

[3] I. Hickson and D. Hyatt (editors), "HTML 5", http://www.w3.org/TR/html5, W3C<br />

Working Draft 25 August 2009.<br />

[4] http://en.wikipedia.org/wiki/Usage_share_of_web_browsers, Usage share of web<br />

browsers, 18 Ağustos 2009.<br />

[5] R. Fielding, J. Gettys, J. Mogul, H. Frystyk, L. Masinter, P. Leach, T. Berners-Lee,<br />

"Hypertext Transfer Protocol -HTTP/1.1", IETF RFC 2616, June 1999,<br />

http://www.ietf.org/rfc/rfc2616.txt.<br />

[6] T. Berners-Lee, R. Fielding, and L. Masinter, "Uniform Resource Identifier (URI):<br />

Generic Syntax", IETF RFC 3986, January 2005,<br />

http://labs.apache.org/webarch/uri/rfc/rfc3986.html.<br />

54


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Bölüm 4<br />

4.1 Amaç<br />

GÖRÜNTÜLER<br />

Bu bölümde amacımız görüntülerin bilgisayarda nasıl tutulduğunun temellerinin<br />

öğrenilmesi, görüntüleri sıkıştırma tekniklerinin anlaşılması ve görüntülerin web sayfası<br />

içinde kullanımının kavranmasıdır. Bu amaçla önce görüntülerin bilgisayarda<br />

kaydedilmeleri ile ilgili temel konular anlatılmıştır. Sonra görüntüleri sıkıştırma için<br />

kullanılan yaygın algoritmalardan bazıları ve bunların dosya tipleri işlenmiştir. Daha<br />

sonra görüntülerin web sayfalarında sunumları anlatılmıştır. Web sayfalarında<br />

görüntülerin konumlarının ve boylarının ayarlanması, etraflarında tampon boşluk<br />

bırakılması, görüntülerden bağlantı oluşturulması ve görüntülerin arka planda<br />

kullanılmaları işlenmiştir.<br />

4.2 Giriş<br />

Web ilk başlarda daha çok metin ağırlıklı idi. O zamanlar önemli olan bilginin<br />

paylaşılabilmesiydi. Çünkü web ağının yaygınlaşmasından önce bu şekilde hızlı ve etkin<br />

bir bilgi paylaşım mekanizması yoktu. Ama zamanla bilginin paylaşılması yanında<br />

bilginin sunum şekli de önem kazandı. Artık sadece bilginin başkalarının kullanımına<br />

açılması yeterli olmamaya başladı. Bilgi kadar önemli diğer bir unsurun da bilginin<br />

kullanıcıya en güzel ve görsel şekilde sunulması olduğu anlaşıldı. İşte bilginin kullanıcıya<br />

en güzel şekilde sunulmasında görüntüler önemli bir role sahiptir. Artık web sayfası<br />

tasarımı sadece teknik bir iş olmaktan çıkmış ve sanatsal bir faaliyet haline de<br />

dönüşmüştür. Güzel ve etkin bir web sayfası tasarlamak sadece teknik bilgiyle mümkün<br />

olmamaktadır. Teknolojinin sunmuş olduğu imkânların tasarımcıların hayal gücüyle<br />

birleşmesi gerekmektedir. Özetle şunu söylemeliyiz ki güzel web sayfası tasarlamak için<br />

sadece teknik bilgi yeterli olmamaktadır. Onun için programcılar kendi sınırlarının<br />

farkında olmalılar ve gerçekçi plan ve projeler üzerinde çalışmalıdırlar.<br />

55


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

4.3 Görüntülerin Bilgisayarlarda Kaydedilmeleri<br />

Geçen bölümde belirtildiği gibi bilgisayarda gösterilen bütün renkler üç temel<br />

rengin karışımı şeklindedir. Bu üç temel renk; kırmızı, yeşil ve mavi renkleridir [1]. Bu<br />

üç renk karıştırılarak gösterilmek istenen diğer bütün renkler elde edilir. Fakat görüntüler<br />

bu üç rengin karışımı olarak hiç sıkıştırılmadan bilgisayarda tutulursa çok fazla yer<br />

kaplamaktadır. Şu anki bilgisayarlar 24 bitlik renk gösterimini kullanmaktadır [2].<br />

Ekrandaki her bir noktanın rengini göstermek için 24 bit, yani 3 byte’lık bir yer ihtiyacı<br />

vardır. Her bir noktanın rengini gösteren bu 24 bitlik verinin 8 biti rengin kırmızı kısmını,<br />

diğer 8 biti rengin yeşil kısmını ve son 8 biti de mavi kısmını gösterir. Her 8 bitlik kısım<br />

256 değişik renk tonunu gösterebilir (2 8 = 256). Yani hem kırmızının, hem yeşilin, hem<br />

de mavini 256 değişik tonu vardır. Dolayısıyla bu üç rengin değişik tonlarda<br />

karıştırılmasından (256*256*256) 16 milyondan fazla değişik renk elde edilir. Yani<br />

ekrandaki her bir noktanın rengi 16 milyondan fazla değişik renk değeri alabilir. Özetle<br />

ekrandaki her bir noktanın renk bilgisi 24 bit yani 3 byte’lık bir yer kaplar. Dolayısıyla<br />

görüntü dosyaları sıkıştırılmadan tutulurlarsa çok fazla bellek ihtiyacı olur.<br />

Örneğin 600*800 pixel büyüklüğündeki bir resim dosyasını düşünelim. Bu resim<br />

dosyası toplam 600*800 = 480,000 tane pixelden yani noktadan oluşmaktadır. Her bir<br />

nokta 3 byte yer kaplayacağı için bu resim için toplam bellek ihtiyacı 480000*3 =<br />

1,440,000 byte olur. Yani 1.4 mega byte civarında bir dosya olur. Bu da çok büyük bir<br />

alandır. Diğer yandan daha büyük resim dosyalarını düşünürsek, bu büyüklük hızla artar.<br />

Dolayısıyla resim dosyaları bilgisayarda genellikle ham veri olarak tutulmazlar. Ham veri<br />

ile kastedilen bu örnekte olduğu gibi ekrandaki her bir nokta için 24 bitlik bilgi<br />

tutulmasıdır. Özellikle de İnternet üzerinden başkalarına göndereceğimizin resim<br />

dosyalarının mümkün olduğunca küçük boyutlu olmasını isteriz. Çünkü bu dosyaların<br />

kullanıcılara transferi hem zaman alır hem de web sunucularına bir yük oluşturur.<br />

Görüntü dosyalarının ham veri olarak tutulmasının alternatifi değişik sıkıştırma<br />

algoritmalarıyla bu dosyaların sıkıştırılmasıdır [3]. Bu sıkıştırma algoritmaları minimum<br />

alanda çok bilgi tutmayı hedefler. Yani resim dosyalarının boylarını küçültmeyi hedefler.<br />

Resim boylarını küçültmek için çok değişik algoritmalar geliştirilmiştir. Bu<br />

algoritmaların bir kısmı kayıpsız sıkıştırma yaparken bir kısmı kayıplı sıkıştırma yapar.<br />

Kayıpsız sıkıştırma yapan algoritmalar görüntüde hiçbir bilgi kaybı olmaksızın sıkıştırma<br />

yaparlar. Yani görüntüdeki bilgileri farklı bir şekilde tutarak yer kazanımı sağlarlar.<br />

Örneğin resmin arka planı aynı renk ise ve görüntünün çoğu arka plandan oluşuyorsa,<br />

arka plan rengini gösteren her nokta için aynı bilgi 24 bit olarak tekrar tekrar tutulmaz.<br />

Sadece bu noktaların aynı olduğunu gösteren çok daha küçük boyutlu bir sayı aynı işlevi<br />

görür. İşte buna benzer değişik yöntemler kullanılarak sıkıştırma yapılır.<br />

Kayıpsız sıkıştırma algoritmaları [4] bilgisayarda üretilmiş resimler ve çizimler<br />

için çok iyi sonuçlar vermesine rağmen, tabiat görüntülerinden oluşan fotoğraflar için<br />

aynı düzeyde kazanım sağlayamaz. Çünkü bu tür resimlerde aynı rengin tekrarlaması çok<br />

fazla görülmez. Dolayısıyla bu tür resim dosyaları için kayıplı sıkıştırma algoritmaları [5]<br />

56


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

daha çok kullanılır. Bu tür algoritmalar resmin görüntü kalitesini çok az düşürerek ciddi<br />

manada yer kazanımı hedefler.<br />

4.4 BMP, GIF, PNG ve JPEG Dosya Tipleri<br />

4.2.1 BMP Dosya tipi<br />

Bir görüntü dosyasının isminin uzantısı o dosyada kullanılan sıkıştırma<br />

algoritmasını gösterir. Bir dosyanın uzantısı bmp ise, bu görüntü dosyasında görüntü<br />

bilgisi ham veri olarak tutuluyor demektir [6]. Örneğin ev.bmp isimli bir dosya olabilir.<br />

Bu tür dosyalar İnternet üzerinden gönderilmek için uygun değildir.<br />

4.2.2 GIF Dosya tipi<br />

GIF uzantılı dosyalar İnternet’te çok yaygındır. Örnek bir dosya ismi olarak<br />

ev.gif verilebilir. Bu tür dosyalarda kullanılan sıkıştırma algoritması kayıpsız bir<br />

algoritmadır [7]. Dolayısıyla bilgisayarda üretilmiş çizimler ve resimler için sıkça<br />

kullanılır. Üretilen resim dosyalarının boyu genellikle çok küçüktür. En önemli<br />

dezavantajı sadece 256 değişik rengi destekler. 16 milyon değişik renkten sadece 256<br />

farklı renk kullanılabilir. Bu algoritma sadece 256 değişik renk kullanıldığında<br />

kayıpsızdır. Daha fazla rengi olan bir resmi bu algoritmayla sıkıştırmak istediğimizde<br />

kayıplar oluşur. Çünkü bu durumda renk sayısı 256’ya azaltılır. Kısaca gif dosyaları<br />

bilgisayarda oluşturulmuş ve az sayıda değişik renk içeren çizimleri göstermek için<br />

kullanılabilir. Buna ek olarak yine az sayıda renk içeren resimleri içinde gif formatı<br />

kullanılabilir. Diğer yandan doğa resimlerini gif ile göstermek genellikle isabetli olmaz.<br />

Çünkü bu durumda çok fazla renk kaybı olur.<br />

4.2.3 PNG Dosya tipi<br />

GIF şu anda İnternet’te çok yaygındır, fakat artık resimleri daha kaliteli<br />

göstermek için ihtiyaç artmıştır. Çünkü bilgisayarların ve ağların kapasitesi hızla<br />

artmaktadır. PNG sıkıştırma algoritması [8] GIF algoritmasının kısıtlamalarını<br />

genişletmek ve daha kaliteli görüntüler oluşturmak için geliştirilmiştir. GIF gibi yine<br />

kayıpsız sıkıştırma yapar. Fakat GIF’ten farklı olarak 256 renk sınırlandırması yoktur. 16<br />

milyondan fazla rengin hepsini de gösterebilir. Dolayısıyla GIF’e göre PNG ile<br />

sıkıştırılmış dosyalar daha kaliteli olurlar, fakat dosya boyları da daha büyük olur. Yine<br />

GIF gibi daha çok bilgisayarda oluşturulmuş çizimler ve resimler için kullanılır. Doğa ve<br />

tabiat fotoğrafları için kullanılmaz.<br />

Şimdi bilgisayarda üretilmiş bir grafik görüntüsünün png, gif ve bmp olarak<br />

kaydedilmesi arasındaki farkı görmeye çalışalım. Bunun için şu adresteki png resim<br />

dosyasını bilgisayarınıza indiriniz:<br />

57


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

http://commons.wikimedia.org/wiki/Image:Dice_Distribution_(bar).png<br />

Bu dosyayı bilgisayarınıza indirmek için önce tarayıcınızla bu sayfaya gidiniz.<br />

Sonra fareniz resmin üzerindeyken farenizin sağ tuşuna tıklayıp resmi farklı kaydet<br />

seçeneğini seçerek bilgisayarınıza bu dosyayı ZarDagilimi.png olarak kaydediniz. Bu<br />

dosya 800*548 pixel boyunda bir png resim dosyasıdır. Bu resim Şekil 4-1’deki gibi<br />

gözükmektedir.<br />

Şekil 4-1 Örnek grafik resmi<br />

Şimdi bu dosyayı bilgisayarınızdaki Paint programı ile açınız. Sonra bu dosyayı<br />

farklı kaydediniz. Farklı kaydederken önce gif formatını seçiniz. İkinci olarak yine aynı<br />

png dosyasını farklı kaydediniz. Bu defa resim dosyası tipini 24-bit bmp olarak seçiniz.<br />

Şimdi bu üç çeşit resim dosyasının büyüklüğünü kontrol ediniz.<br />

Dosya adı Büyüklüğü<br />

ZarDagilimi.png 21 KB<br />

ZarDagilimi.gif 20 KB<br />

ZarDagilimi.bmp 1285 KB<br />

Tablo 4-1 Farklı sıkıştırma algoritmaları için grafik resmi boyu karşılaştırması<br />

Tablo 4-1’deki değerlerden görüldüğü gibi png ve gif dosyalarının boyları<br />

birbirine çok yakındır. Gif dosyası boyu biraz daha küçüktür. Ama bmp dosyası boyu<br />

diğer ikisinden çok fazla büyüktür. Diğer dosyalardan yaklaşık 60 kat daha büyüktür.<br />

Bunun nedeni bu grafik dosyası çok fazla detay içermiyor. Kullanılan renklerde sınırlı<br />

sayıdadır. Arka plan hep aynı renktir. Grafikteki sütunlar da aynı renktir. Dolayısıyla<br />

sıkıştırma algoritması çok başarılı bir sıkıştırma yapabiliyor. 60 kat kazanç sağlıyor. İşte<br />

bu ve benzeri tipteki bilgisayarda üretilmiş resimler için genellikle png veya gif<br />

sıkıştırma algoritması kullanılır.<br />

58


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Örnek Uygulama<br />

Web’den bulacağınız çeşitli grafik dosyalarını, yani bilgisayar ortamında<br />

üretilmiş görüntü dosyalarını bilgisayarınıza kaydediniz. Bu görüntüler yukardaki örnekte<br />

olduğu gibi bir şeyin grafiği olabilir ya da bilgisayarda yapılmış çizim dosyaları olabilir.<br />

Bu görüntü dosyalarını paint programını kullanarak png, gif ve 24 bit bmp olarak<br />

kaydediniz ve bu dosyalar arasındaki boy farklarını karşılaştırınız? Bmp ham veri dosyası<br />

ile png ve gif sıkıştırma algoritmaları arasındaki kazanç oranlarını hesaplayınız?<br />

4.2.4 JPEG Dosya Tipi<br />

JPEG sıkıştırma algoritması [9] ise daha çok doğa fotoğrafları gibi çok fazla detay<br />

içeren resimler için kullanılır. Bu algoritma kayıplı sıkıştırma yapar. Fakat amacı<br />

kaliteden çok az kaybederek dosya boyundan büyük miktarda tasarruf sağlamaktır. Dijital<br />

fotoğraf makinelerinde de en çok bu format kullanılır. Bu tip dosyaların uzantıları<br />

genellikle JPG veya JPEG olur. İkisi de kullanılabilir.<br />

JPEG sıkıştırma algoritması bilgisayarda üretilmiş ve sınırlı sayıda renk içeren<br />

resimler için genellikle kullanılmaz. Çünkü bu durumda resimlerin kalitesinde azalma<br />

olur. Diğer yandan PNG ve GIF kadar küçük boylu dosya da üretemez. Örneğin<br />

yukarıdaki ZarDagilimi dosyasını JPEG olarak kaydettiğimiz zaman, bu dosyanın boyu<br />

yaklaşık 54 KB olur. Dolayısıyla png ve gif tipine göre çok daha büyük olur. Buna ek<br />

olarak görüntüde bazı noktalarda kailte kaybı meydana gelir.<br />

İnternet’ten bir JPEG dosyası indirelim. Örneğin Şekil 4-2’deki gözüken Rize<br />

Kalesi resmini şu adresten indirebilirsiniz:<br />

http://www.rizedeyiz.com/rize/turizm/mutlaka.html<br />

Şekil 4-2 Örnek manzara resmi<br />

59


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Bu dosyayı RizeKalesi.JPG ismiyle bilgisayarınıza kaydediniz. Sonra bu<br />

dosyayı Paint programı ile açıp önce PNG formatında kaydediniz. Sonra tekrar<br />

RizeKalesi.JPG dosyasını Paint programı ile açıp, bu defa aynı dosyayı GIF formatında<br />

kaydediniz. Daha sonra da 24-bit BMP dosyası olarak kaydediniz. Şimdi bu dosyaların<br />

boylarını karşılaştırınız. Dosya boylarını Tablo 4-2’de olduğu gibi göreceksiniz.<br />

Dosya adı Büyüklüğü<br />

RizeKalesi.JPG 76 KB<br />

RizeKalesi.gif 77 KB<br />

RizeKalesi.png 507 KB<br />

RizeKalesi.BMP 712 KB<br />

Tablo 4-2 Farklı sıkıştırma algoritmaları için manzara resmi boyu karşılaştırması<br />

Görüldüğü gibi en küçük dosya boyu JPG sıkıştırma algoritmasıyla elde edilir.<br />

GIF dosyası boyu da küçüktür ama bu dosyanın resim kalitesi çok düşüktür. PNG<br />

algoritmasının kalitesi iyidir fakat çok büyük boylu bir dosya üretir. PNG dosyasının<br />

boyu nerdeyse hiç sıkıştırılma yapılmamış olan BMP dosyasına yakındır. Dolayısıyla bu<br />

tip fazla detay içeren resimler için JPEG formatını kullanmak en isabetli olanıdır.<br />

Biz bu örnekte yukarıdaki resim dosyasını kullandık. Eğer bu dosyaya<br />

erişemezseniz veya kullanmak istemezseniz, aynı işlemi kendi bilgisayarınızdaki bir<br />

dijital fotoğrafla da yapabilirsiniz. Veya İnternet’teki başka bir manzara resmini de<br />

kullanabilirsiniz.<br />

Örnek Uygulama<br />

İnternette bulacağınız en az üç tane farklı manzara resmini bilgisayarınıza<br />

indiriniz? Bu dosyaları dört farklı formatta (JPEG, PNG, GIF ve 24BIT-BMP) Paint<br />

programı ile kaydediniz. Daha sonra bu dosyaların farklı formatları arasındaki boy farkını<br />

gözlemleyiniz? Ayrıca bu dosyaların farklı formatları arasındaki kalite farkını<br />

gözlemleyiniz? İndirmiş olduğunuz 3 farklı manzara dosyasında da değişik formatlar<br />

arasındaki fark yaklaşık aynımı oldu? Değilse farkın neden kaynaklandığını açıklamaya<br />

çalışınız?<br />

4.5 HTML ile Görüntü Sunumu<br />

HTML dilinde bir görüntünün web sayfasında gösterilmesi için img imi kullanılır.<br />

Bu imin src özniteliği görüntü dosyasının yerini belirtmek için, align özniteliği ise bu<br />

resmin ekranda yatay düzlemde gösterileceği pozisyonu belirtmek için kullanılır. Şimdi<br />

60


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

bayrak.gif isimli bir resim dosyasını bir web sayfasında görelim. Bunun için Tablo<br />

4-3’teki gibi bir HTML belgesi yazabiliriz.<br />

<br />

<br />

Türk Bayrağı<br />

<br />

<br />

<br />

Türk Bayrağı<br />

<br />

<br />

<br />

Tablo 4-3 İçinde bir görüntü olan örnek web sayfası kodu<br />

Bu HTML belgesi web tarayıcısı içinde Şekil 4-3’teki gibi gözükür.<br />

Şekil 4-3 İçinde sağa yanaşık bir görüntü bulunan web sayfası örneği<br />

HTML belgesinde görüldüğü gibi img imi şu şekilde kullanılır:<br />

<br />

Bu imin src özniteliği bu görüntü dosyasının nerede bulunacağını belirtir. Bu<br />

örnekte bayrak.gif dosyası bu HTML belgesinin bulunduğu dizinin içindeki images2<br />

dizinindedir. Eğer bu web sayfası ile resim dosyası aynı dizinde olsaydı, sadece dosya<br />

ismini vermek yeterli olurdu. Ayrıca src değeri için tam bir URL adresi de verilebilir.<br />

Eğer gösterilmesini istediğimiz resim dosyası başka bir web sayfasında ise bu durumda<br />

img imi Tablo 4-4’deki gibi kullanılabilir.<br />

61


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

<br />

<br />

Türk Bayrağı<br />

<br />

<br />

<br />

Türk Bayrağı<br />

<br />

<br />

<br />

Tablo 4-4 Başka bir web sitesindeki görüntüyü kendi sayfamızda görüntüleme<br />

Bu durumda web tarayıcısı bu resim dosyası için belirtilen adrese bağlanır ve<br />

resim dosyasını o web sayfasından indirip kullanıcıya gösterir.<br />

Ayrıca bu web sayfasında bayrak resmi tarayıcı içinde sağa yanaşık olarak<br />

gözükmektedir. Bunun sebebi ise align özniteliğinin değerinin right olarak<br />

verilmesidir.<br />

Görüldüğü gibi img başlangıç ve bitiş im çifti arasında herhangi bir şey<br />

bulunmamaktadır. Dolayısıyla bu örnekteki img imini şu şekilde yazmak ta mümkündür:<br />

<br />

Bu durumda bitiş img imi kullanılmaz. Onun yerine başlangıç iminin kapanış<br />

işaretinden yani büyüktür işaretinden hemen önce taksim işareti kullanılır. Bu yöntem tek<br />

bir img imini hem başlangıç hem de bitiş imi olarak kullanmamıza imkan verir.<br />

Örnek Uygulama<br />

İnternette bulacağınız bir görüntüyü bilgisayarınıza indiriniz? Bu bölümde olduğu<br />

gibi indirmiş olduğunuz görüntüyü bir web sayfası içinde görüntüleyiniz? Bunun için<br />

uygun HTML kodunu yazınız? Görüntüyü sayfanın ortasına, soluna ve sağına<br />

yerleştirmeyi deneyiniz?<br />

İlk uygulamanızda görüntü dosyası HTML belgesi ile aynı dizin içinde olsun.<br />

Sonra görüntü dosyasını bir alt dizin içine kopyalayınız ve o şekilde görüntüyü sayfanız<br />

içinde kullanınız? Bir sonraki adımda ise görüntüyü bir üst dizin içinde bir yere koyunuz<br />

ve bu şekilde sayfanız içinde kullanınız?<br />

62


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

4.6 Resim Boyu ve Resim Etrafında Metin Görüntüleme<br />

Bazı durumlarda resmin boyunun ne kadar olduğunu img imi ile belirtmek isabetli<br />

olur. Bunun nedeni ise bazen resmin web tarayıcısı tarafından indirilmesi zaman alır.<br />

Özellikle resimler büyük boyutlu olduğunda bu böyledir. Bir sayfadaki resim veya<br />

resimlerin indirilmesi bitmeden sayfanın kendisinin indirilmesi bitmiş olabilir. Eğer<br />

resmin boy ve eni img iminde belirtilmişse, tarayıcı resim için gereken boşluğu ayırır ve<br />

sayfanın diğer kısımlarını kullanıcıya gösterir. Eğer boy ve en verilmemişse ve resmin<br />

veya resimlerin indirilmesi tamamlanmamışsa bu durumda tarayıcı resimleri indirmeyi<br />

bekler. Bu da sayfayı görüntülerken zaman kaybına yol açar. Dolayısıyla sayfamızdaki<br />

resimlerin boylarını img iminde her zaman belirtmek isabetli olur.<br />

Resimlerin boylarını belirtmek için img iminin height ve witdh öznitelikleri<br />

kullanılır. Bu özniteliklere normalde resmin boyu ve eni ne ise o yazılır. Fakat eğer<br />

resmin daha küçük bir boyda gözükmesini istiyorsak boy ve en değerlerini küçük<br />

değerler olarak ta verebiliriz. Böylece resimlerin gerçek boylarından daha küçük olarak<br />

gözükmelerini sağlayabiliriz. Fakat bu genellikle yapılmaması gereken bir işlemdir.<br />

Çünkü resmi büyük olarak kullanıcıya gönderip, sonra da küçük olarak göstermek<br />

mantıklı olmaz. Eğer kullanıcının resmi küçük görmesini istiyorsak, bu durumda aynı<br />

resmin bir de küçük olan versiyonunu oluşturup onu kullanıcıya göndermemiz daha<br />

isabetli olur. Böylelikle daha küçük boyutlu bir resim kullanıcıya transfer edilmiş olur.<br />

Şimdi img imi ile birlikte height, width ve align özniteliklerinin de kullanıldığı bir<br />

örnek sayfa görelim. Daha önceki bayrak resmini kullanan bu şekildeki örnek bir sayfa<br />

Tablo 4-5’te verilmiştir.<br />

<br />

Türk Bayrağı<br />

<br />

<br />

<br />

Türk Bayrağı<br />

Bayrak bir ulkeyi veya kurumu temsil eder. Türk bayragı da<br />

Turkiye Cumhuriyetini temsil eder<br />

<br />

Bayrak bir ulkeyi veya kurumu temsil eder. Türk bayragı da<br />

Turkiye Cumhuriyetini temsil eder<br />

Bayrak bir ulkeyi veya kurumu temsil eder. Türk bayragı da<br />

Turkiye Cumhuriyetini temsil eder<br />

Bayrak bir ulkeyi veya kurumu temsil eder. Türk bayragı da<br />

Turkiye Cumhuriyetini temsil eder<br />

<br />

<br />

Tablo 4-5 Görüntülerde en ve boy değerleri kullanma örneği<br />

Bu HTML belgesi web tarayıcısında Şekil 4-4’teki soldaki pencere gibi gözükür.<br />

63


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Şekil 4-4 Görüntü boyu ayarlama ve görüntü etrafında metin kullanımı<br />

Bu HTML belgesinde img iminin align özniteliği değeri left olarak verilmiştir.<br />

Bu da resmin solda, resimden sonra gelen metinlerin de onun yanında olmasını sağlar.<br />

Sağdaki sayfanın HTML belgesinde ise, align özniteliğine her hangi bir atama<br />

yapılmamıştır. Yani img imi şu şekildedir:<br />

<br />

Bu durumda align özniteliğine atama yapılmadığı için resimden sonra gelen<br />

metin resmin sağ yanına değil, resmin aşağısına yazılır. Eğer align özniteliği değeri<br />

right olarak verilseydi, bu durumda resim sağda, metin ise solda olacaktı. Yani left<br />

değerinde olduğunun tam tersi şeklinde olacaktı. Dolayısıyla eğer resmin etrafında metin<br />

olmasını istersek, align özniteliğini kullanıyoruz. Eğer resmin etrafında metin olmasını<br />

istemez isek bu durumda align özniteliğini kullanmıyoruz.<br />

Bu örnekte ayrıca height ve width değerlerinin de verildiğini görüyorsunuz. Bu<br />

durumda height ve width değerleri resmin boy ve en değerlerinden daha küçük,<br />

dolayısıyla resim ilk örneğe göre tarayıcı içinde daha küçük gözüküyor.<br />

Örnek Uygulama<br />

Web’den indirmiş olduğunuz bir görüntü dosyasını bilgisayarınıza kaydediniz? Bu<br />

dosyayı tasarlayacağınız bir web sayfası içinde görüntüleyiniz? Daha sonra bu dosyayı<br />

aynı sayfa içinde kendi seçeceğiniz farklı boylarda görüntüleyiniz? Buna ek olarak img<br />

iminin align özniteliğini kullanarak görüntünün etrafındaki metnin farklı şekillerde<br />

görünmesini sağlayınız?<br />

4.7 Tampon Boşluk: hspace ve vspace<br />

Yukarıdaki örnekte metin resmin yanında olduğu durumda, metin resmin hemen<br />

yanında gözükmektedir. Resmin etrafındaki boşluğu ayarlamak için img iminin iki tane<br />

özniteliği vardır: hspace ve vspace. Bu özniteliklere pixel cinsinden değerler vererek<br />

64


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

resmin etrafında ne kadar boşluk olması gerektiği ayarlanır. Yatay olarak resmin sağında<br />

ve solunda olması gereken boşluk miktarı hspace özniteliği ile belirlenir. Dikey olarak<br />

resmin üstünde ve altında olması gereken boşluk miktarı ise vspace özniteliği ile<br />

belirlenir. Şimdi bunun bir örneğini görelim. Yukardaki sayfada tampon boşluk Tablo<br />

4-6’daki gibi kullanılabilir.<br />

<br />

Türk Bayrağı<br />

<br />

<br />

<br />

Türk Bayrağı<br />

Bayrak bir ulkeyi veya kurumu temsil eder. Türk bayragı da<br />

Turkiye Cumhuriyetini temsil eder<br />

<br />

Bayrak bir ulkeyi veya kurumu temsil eder. Türk bayragı da<br />

Turkiye Cumhuriyetini temsil eder<br />

Bayrak bir ulkeyi veya kurumu temsil eder. Türk bayragı da<br />

Turkiye Cumhuriyetini temsil eder<br />

Bayrak bir ulkeyi veya kurumu temsil eder. Türk bayragı da<br />

Turkiye Cumhuriyetini temsil eder<br />

<br />

<br />

Tablo 4-6 Görüntü etrafında tampon boşluk kullanma örneği<br />

Bu HTML belgesi tarayıcı içinde Şekil 4-5’deki gibi gözükür.<br />

Şekil 4-5 Görüntü etrafında tampon boşluk bırakma örneği<br />

Görüldüğü gibi bu durumda bayrak resminin hem sağında hem solunda boşluk<br />

bulunmaktadır. Sağındaki ve solundaki boşluk eşit olup hspace özniteliği ile<br />

65


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

belirlenmiştir ve 50 pixel boyundadır. Benzer şekilde resmin altında ve üstünde de boşluk<br />

vardır. Bu da vspace özniteliği ile belirlenmiştir ve 10 pixel boyundadır.<br />

Örnek Uygulama<br />

Bu örnekte olduğu gibi içinde bir görüntünün ve metinlerin olduğu bir sayfa<br />

tasarlayınız? Tasarladığınız sayfa içindeki görüntü sayfanın sol tarafında değilde sağında<br />

olsun. Görüntünün etrafında da yine metin olsun. Görüntü ile metin arasındaki boşluğu da<br />

hspace ve vspace öznitelik değerlerine farklı değerler vererek ayarlayınız?<br />

4.8 Görüntülerin Düğme Olarak Kullanılması<br />

HTML dilinin önemli bir özelliği de görüntülerden bağlantı oluşturulabilmesidir.<br />

Böylelikle görüntüler web sayfalarında düğme olarak kullanılabilir. Bu hem web<br />

sayfaları için farklı görünüşteki düğmeler tasarlamada faydalı olur, hem de özellikle<br />

kurum sitelerinde kurum logolarına tıklayarak kullanıcıların kurumun bütün web<br />

sayfalardan ana sayfasına kolayca dönülmesini sağlar.<br />

Bir görüntüden bağlantı oluşturan örnek bir sayfa Tablo 4-7’de gözükmektedir.<br />

Bu örnek sayfada Google logosundan Google web sitesine bir bağlantı oluşturulmuştur.<br />

<br />

Görüntüleri Düğme olarak Kullanma<br />

<br />

<br />

<br />

Tıklanabilir Görüntüler<br />

HTML dilinin önemli bir özelliği de görüntülerden bağlantı<br />

oluşturulabilmesidir. Böylelikle görüntüler düğme olarak ta<br />

kullanılabilir.<br />

<br />

<br />

Bunun için &lt;a&gt; baslangıç imi ile bitiş imi arasına<br />

&lt;img&gt; imini yerleştirmek yeterli olur. Yukardaki ikona<br />

tıklayabilirsiniz.<br />

<br />

<br />

Tablo 4-7 Bir görüntüden bağlantı oluşturma örneği<br />

Bu HTML belgesi tarayıcı içinde Şekil 4-6’daki gibi gözükür.<br />

66


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Şekil 4-6 Görüntüden bağlantı oluşturma<br />

Bir görüntünün tıklanabilir olmasını istersek bunu yukarıdaki HTML belgesinde<br />

olduğu gibi img imini a imi içine koyarak yaparız:<br />

<br />

Şu ana kadar oluşturduğumuz bağlantılarda başlangıç imi ile bitiş imi arasına<br />

bağlantı oluşturulacak metni yazıyorduk, bu durumda metin yerine img imini yazıyoruz.<br />

Böylece resme tıklandığında tarayıcı imi ile tanımlanmış olan adrese yönleniyor.<br />

Örnek Uygulama<br />

Türkiye’deki üç farklı üniversitenin logolarını web sitelerinden kendi<br />

bilgisayarınıza indiriniz? Tasarlayacağınız bir web sayfası içinde bu üç logoyu kullanınız<br />

ve her logodan da o üniversitenin web sitesine bir bağlantı veriniz? Eğer logo boyları<br />

farklı ise görüntü boylarını daha önceki bölümlerde gördüğümüz gibi ayarlayarak bütün<br />

logoların aynı boyda görünmesini sağlayınız?<br />

4.9 Görüntüler Üzerinde Tıklanabilir Bölgeler<br />

HTML dilinin sağladığı diğer önemli bir özellik de görüntülerin farklı bölgelerine<br />

farklı bağlantılar verilebilmesine imkân sağlamasıdır. Özellikle harita tipi uygulamalarda<br />

bu özellik çok faydalı olmaktadır. Haritada hangi mekan üzerine tıklarsanız oraya<br />

verilmiş bağlantı adresine gidilebilmektedir.<br />

Bununla ilgili Tablo 4-8’deki örnek tek bir görüntüdeki farklı gezegen<br />

resimlerinden farklı sayfalara bağlantı yapmayı gösteriyor.<br />

67


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

<br />

<br />

Görüntülerin alt bölgelerinden bağlantı oluşturma<br />

<br />

<br />

<br />

Alt Bölgeleri Tıklanabilir Görüntüler<br />

Resimdeki gezegenlerden Merkür ve Venüsün resimlerine tıklayarak<br />

o gezegenlerle ilgili wikipedia sayfasına gidebilirsiniz.<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

Tablo 4-8 Görüntülerin alt bölgelerinden bağlantı oluşturma örneği<br />

Bu web sayfası web tarayıcısı içinde Şekil 4-7’deki gibi gözükür:<br />

Şekil 4-7 Görüntülerin alt bölgelerinden bağlantı oluşturma<br />

Bu web sayfası içindeki gezegenleri gösteren resimde hangi gezegen üzerine<br />

tıklanırsa o gezegenle ilgili bir web sayfasına gidilmesini istiyoruz. Bunun için bu resmin<br />

farklı alt bölgelerinden farklı adreslere bağlantı vermemiz gerekiyor. Bağlantı verebilmek<br />

için de öncelikle aynı resim içinde farklı alt bölgeler tanımlamamız gerekir. Alt bölge<br />

tanımlama için HTML dilinde map imi kullanılır. Bu imle alt bölgelerin sınırları ve bu<br />

bölgelere tıklanıldığında gidilecek web sayfası adresleri tanımlanır. Daha sonra da img<br />

elemanından bu map elemanına referans verilir. Bu örnekte map tanımlama şu şekilde<br />

yapılmıştır:<br />

68


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

<br />

<br />

<br />

<br />

Resimde dört tane gezegen olmasına rağmen biz bu örnekte kolaylık olması<br />

açışından sadece iki tanesinden bağlantı oluşturduk. Öncelikle map imine bir isim<br />

veriyoruz. Çünkü daha sonra bu ime img elamanı içinden referans vermemiz gerekiyor.<br />

Map elemanına id ve name özniteliklerini kullanarak isim veriyoruz. Bunlardan id<br />

özniteliği şu anda kullanılması tavsiye edilen özniteliktir. Ama eski tarayıcılarda da<br />

sayfamızın çalışması için ikisini de kullanmamızda bir sakınca yok. Sonra map imi içinde<br />

istediğimiz kadar alt bölge tanımlayabiliriz. Bu örnekte biz iki tane alt bölge tanımladık.<br />

İlk alt bölge resimdeki ilk gezegen olan Merkür gezegeni için tanımlanmış bir dikdörtgen<br />

alan. İkinci alt bölge ise ikinci gezegen olan Venüs için tanımlanmış daire şeklinde bir<br />

alan. Merkür için olan alanın dikdörtgen olarak tanımlanmasının tek amacı dikdörtgen<br />

alan tanımlamayı göstermek içindir.<br />

Dikdörtgen bir alan tanımlanırken dikdörtgenin sol alt köşesinin x ve y<br />

koordinatları ile birlikte dikdörtgenin eni ve yüksekliği verilir. Bu örnekte 10 pixellik<br />

mesafe dikdörtgenin sol alt köşesinin resmin başlangıcından olan yatay uzaklığıdır.<br />

Dikdörtgenin sol alt köşesinin resmin tavanından dikey uzaklığı ise bu durumda 110<br />

pixeldir. Dikdörtgen alanın eni 50 pixel, yüksekliği ise 60 pixeldir. Fare ile kullanıcı bu<br />

tanımlanan dikdörtgen bölge üstüne gelip tıkladığında tarayıcı bu area elemanı içinde<br />

tanımlanmış bağlantıyla gösterilen web sayfasına yönlenir.<br />

Benzer şekilde dairevi bir alan tanımlarken dairenin merkezinin x ve y<br />

değerleriyle dairenin yarıçap büyüklüğü pixel cinsinden verilir. Bu örnekte Venüs için<br />

dairevi bir alan tanımlanmıştır.<br />

En çok kullanılan alt alan tanımlama şekilerli daire ve dikdörtgen olmasına<br />

rağmen, çokgen de tanımlanabilir. Çokgenin her köşesinin x ve y koordinatları<br />

verilmelidir.<br />

Örnek Uygulama<br />

Webden bir Türkiye haritası bulunuz ve bu haritayı kendi bilgisayarınıza indiriniz?<br />

Bu haritayı tasarlayacağınız bir web sayfası içinde kullanınız? Daha sonra bu haritanın<br />

içindeki 4 farklı şehirden tıklanabilir bağlantılar oluşturunuz? Her şehrin alt bölgesini<br />

tanımlarken seçtiğiniz şehrin sınırlarının oluşturduğu geometrik şekli dikkate alınız? Bazı<br />

şehirlerde yuvarlak tanımlama, bazılarında ise kare tanımlama daha mantıklı olabilir.<br />

Yapacağınız tanımlamanın şehrin bütün sınırlarını kapsaması gerekmez. Sadece şehir<br />

69


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

sınırlarının bir kısmını içerse yeterli olur. Her bir şehir için uygun geometrik şekli ve<br />

uygun koordinat noktalarını tespit ederek bu uygulamayı yapınız?<br />

4.10 Arka Plan Olarak Görüntü Kullanma<br />

Görüntülerin web sayfalarında bir kullanım şekli de arkla plan olarak<br />

kullanılmalarıdır. Arka plan olarak verilen görüntüler genellikle küçük boyutlu<br />

görüntülerdir ve bu görüntüler sayfada tekrar edilerek tek bir çeşit görüntü oluşturulur.<br />

Bunun için body iminin background özniteliği kullanılır. Böylece bir web sayfasının<br />

tümünün arka plan görüntüsü belirlenmiş olur.<br />

Şimdi küçük bir gif dosyasını arka plan olarak ayarlayalım. Arka plana<br />

koyacağımız görüntü Şekil 4-8’deki resimdir.<br />

Şekil 4-8 Arka planda kullanmak için görüntü örneği<br />

Bu resmin boyutu 247*100 pixeldir. Dosyanın boyu ise sadece 2 KB’dır. Bu<br />

resmi arka planda gösterecek HTML sayfa kodu Tablo 4-9’daki gibi olur.<br />

<br />

Görüntüleri Arka Plan Olarak Kullanma<br />

<br />

<br />

<br />

Arka Planda Görüntü Kullanımı <br />

Bu sayfanın arka planında soluk bir Turkiye resmi bulunmaktadır.<br />

Bu resimde iki tane küçük Turkiye resmi vardır. Bu iki resim<br />

sayfada hem yatay düzlemde hem dikey duzlemde tekrar ederek bütün<br />

sayfayı kaplamaktadır.<br />

<br />

<br />

Tablo 4-9 Sayfa arka planında görüntü kullanma örneği<br />

Bu HTML belgesi tarayıcı içinde Şekil 4-9’daki gibi gözükür.<br />

70


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Şekil 4-9 Arka planda görüntü kullanımı<br />

Görüldüğü gibi arka plan olarak belirlediğimiz resim arka planda tekrar<br />

etmektedir. Tarayıcı web sayfasının boyu büyükse bile bu resmi arka planda tekrarlar.<br />

Arka plan olarak görüntüleri kullanırken en önemli konu web sayfasının<br />

okunulurluğunun azalmamasıdır. Bu örnekte arka plandaki resimden dolayı metnin<br />

okunması biraz daha zorlaşmıştır. Dolayısıyla arka plan olarak seçtiğimiz resimlerde çok<br />

dikkatli olmalıyız. Genellikle arka plan olarak kullanılan resimler çok açık renkli olmalı<br />

ve metinler de koyu renkli olmalıdır. Böylece metinlerin okunması kolay olmalıdır. Ya da<br />

arka plana çok koyu renkli resimler konulup metinler açık renkli yapılmalıdır. Her ikisi<br />

de mümkündür. Önemli olan web sayfasının kolay okunabilir ve kullanılabilir olmasıdır.<br />

Şimdi biraz daha açık renkli bir resmi arka plana koymayı deneyelim. Bunun için<br />

kullanacağımız resim Şekil 4-10’da gözükmektedir.<br />

Şekil 4-10 Arka planda kullanmak için açık renkli bir görüntü<br />

Bu durumda aynı web sayfası tarayıcı içinde Şekil 4-11’deki gibi görünür. Web<br />

sayfasının okunulurluğu bu kez çok daha iyidir.<br />

71


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Şekil 4-11 Arka planda açık renkli görüntü kullanımı<br />

Arka plana konulan resimlerde önemli bir konu da resimlerin tekrar ettiğinin<br />

anlaşılmamasıdır. Bunun için resimlerin bittiği kenarların renklerinin uyumlu olması<br />

gerekir. Yukarıdaki her iki örnekte de resimlerin tekrar ettiği anlaşılmamaktadır. Arka<br />

plana koyacağımız rengi oluştururken buna özellikle dikkat etmemiz gerekir.<br />

Örnek Uygulama<br />

Webde arka planında görüntü kullanılmış olan bazı siteleri tespit ediniz ve o<br />

görüntüleri bilgisayarınıza indiriniz? Bu görüntüleri kendi tasarladığınız bir sayfada<br />

kullanınız?<br />

4.11 Referanslar<br />

[1] RGB color space, http://en.wikipedia.org/wiki/RGB_color_space, 7 Ekim 2009.<br />

[2] RGB color model, http://en.wikipedia.org/wiki/RGB_color_model, 7 Ekim 2009.<br />

[3] Image compression, http://en.wikipedia.org/wiki/Image_compression, 7 Ekim 2009.<br />

[4] Lossless data compression, http://en.wikipedia.org/wiki/Lossless_compression, 7<br />

Ekim 2009.<br />

[5] Lossy compression, http://en.wikipedia.org/wiki/Lossy_compression, 7 Ekim 2009.<br />

[6] BMP file format, http://en.wikipedia.org/wiki/BMP_file_format, 7 Ekim 2009.<br />

[7] Graphics Interchange Format,<br />

http://en.wikipedia.org/wiki/Graphics_Interchange_Format, 7 Ekim 2009.<br />

72


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

[8] Portable Network Graphics,<br />

http://en.wikipedia.org/wiki/Portable_Network_Graphics, 7 Ekim 2009.<br />

[9] JPEG, http://en.wikipedia.org/wiki/JPEG, 7 Ekim 2009.<br />

73


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Bölüm 5<br />

5.1 Amaç<br />

LİSTELER VE TABLOLAR<br />

Bu bölümde amacımız düzenli verilerin web sayfalarında liste ve tablo halinde<br />

sunulmalarının öğrenilmesidir. Bunun için öncelikle liste çeşitleri işlenmiş, her liste<br />

çeşidinin özellikleri ve kullanım şekli anlatılmıştır. Sonra tablolar gösterilmiş ve gerekli<br />

HTML imleri anlatılmıştır. Tablo hücrelerinin birleştirilmesi, hücreler arasındaki<br />

mesafelerin ayarlanması, hücre içindeki içeriklerle hücre duvarı arasında bırakılacak<br />

boşluğun ayarlanması, hücrelerin arka plan renginin ayarlanması gibi konular işlenmiştir.<br />

Daha sonra tabloların sayfa tasarımında kullanımları anlatılmıştır.<br />

5.2 Liste Çeşitleri<br />

Listeler HTML belgelerinde bulunan bir grup elemanın liste halinde kullanıcıya<br />

sunulması için kullanılır. Örneğin Türkiye’deki il isimlerini kullanıcılara sunmak istersek<br />

bunu bir liste halinde sunmak daha anlaşılır olur. İşte bunun gibi birbiriyle ilgili<br />

elemanları gruplamak için HTML dilinde üç çeşit liste yapma imkanı vardır. Bunlar<br />

sıralı listeler, sırasız listeler ve tanım listeleridir. Bu liste çeşitleri HTML standardının<br />

[1] bir alt bölümünde [2] tanımlanmıştır.<br />

Liste imleri:<br />

: Sıralı liste oluşturma imi.<br />

: Sırasız liste oluşturma imi.<br />

: Tanım listesi oluşturma imi.<br />

74


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Bu imlere ek olarak imi sıralı ve sırasız listelerde her bir liste elemanını<br />

oluşturmak için kullanılır. Tanım listelerinde ise imi tanım için, imi ise<br />

tanımlanan elemanı açıklamak için kullanılır.<br />

5.3 Sıralı Listeler<br />

Sıralı listeler bir listedeki elemanların sırasının önemli olduğu durumlarda<br />

kullanılır [3]. Listedeki her bir elemanın listede bir yeri vardır. Buna göre sıralı bir liste<br />

oluşturulur. Böyle bir listeye örnek olarak alfabetik olarak sıralanmış şehir isimlerini<br />

düşünebiliriz. Bu listede her şehrin bir yeri vardır. Şimdi bununla ilgili örnek bir HTML<br />

belgesi oluşturalım. Türkiye’deki şehirlerden alfabetik sıraya göre ilk dördünü üç farklı<br />

sıralı liste halinde gösteren HTML kodu Tablo 5-1’de verilmiştir.<br />

<br />

Sıralı Liste Kullanımı<br />

<br />

<br />

<br />

Sıralı Liste Kullanımı<br />

Alfabetik sıraya göre ilk 4 şehrimiz şunlardır: <br />

<br />

Adana<br />

Adıyaman<br />

Afyon<br />

Ağrı<br />

<br />

Alfabetik sıraya göre ilk 4 şehrimiz şunlardır: <br />

<br />

Adana<br />

Adıyaman<br />

Afyon<br />

Ağrı<br />

<br />

Alfabetik sıraya göre ilk 4 şehrimiz şunlardır: <br />

<br />

Adana<br />

Adıyaman<br />

Afyon<br />

Ağrı<br />

<br />

<br />

<br />

Tablo 5-1 Sıralı liste kullanım örneği<br />

Bu HTML belgesi tarayıcı içinde Şekil 5-1’deki gibi gözükür.<br />

75


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Şekil 5-1 HTML belgesi içinde sıralı liste kullanım örneği<br />

HTML belgesinde gözüktüğü gibi, ilk sıralı liste bu belge içindeki im çifti<br />

arasındaki elemanlardan oluşmuştur. İlk im çifti arasında 4 tane im çifti<br />

vardır. Bunlar listenin her bir elemanını tanımlar. İlk listede başlangıç imi içinde<br />

listenin tipi verilmemiştir. Bu durumda listedeki elemanlar sayılarla sıralanmıştır. İkinci<br />

ve üçüncü listelerde ise başlangıç imi içinde type özniteliği ile listenin<br />

elemanlarının nasıl sıralanacağı belirtilmiştir. İkinci listede type değeri olarak "i",<br />

üçüncü listede ise "a" olarak verilmiştir. Dolayısıyla ikinci listedeki liste elemanları<br />

roma rakamlarıyla, üçüncü listedeki liste elemanları ise alfabedeki küçük harflerle<br />

sıralanmıştır. Üçüncü listede ayrıca sıralamanın hangi elemandan başlaması gerektiğini<br />

göstermek için start özniteliği kullanılmıştır. Bu özniteliğin değeri 3 olarak verildiği<br />

için sıralama üçüncü harften yani "c" harfinden başlamıştır.<br />

Sıralı listelerde type özniteliği değeri a, A, i, I veya 1 olabilir. Yani küçük<br />

harflerle, büyük harflerle, küçük roma rakamlarıyla, büyük roma rakamlarıyla ve<br />

sayılarla sıralama yapılabilir.<br />

Tablo 5-1’deki HTML kodlarında imi içinde bulunan imleri hemen<br />

satır başından değil de biraz daha içerden başlamıştır. Bu bir zorunluluk değildir. Sadece<br />

HTML belgelerinin programcı tarafından okunmasını biraz daha kolaylaştırmak içindir.<br />

Sayfa kodunu bu şekilde yazarsanız HTML belgeniz daha anlaşılır olur ve oluşabilecek<br />

hataları görme imkanınız da daha fazla olur.<br />

Örnek Uygulama<br />

76


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Kendi oluşturacağınız bir sıralı listeyi farklı sıralama karakterleriyle deneyiniz?<br />

Sıralı liste tipi olarak, yani sıralı liste type özniteliği değeri olarak a, A, i, I veya 1<br />

değerlerini veriniz? Bu listeler arasındaki farkları gözlemleyiniz?<br />

5.4 Sırasız Listeler<br />

Sırasız listeler daha çok listelenecek elemanlar arasında belirli bir sıra söz konusu<br />

olmadığı durumlarda kullanılır. Sırasız listelerde liste elemanlarının başında numara veya<br />

harf yerine küçük geometrik işaretler gözükür. Sırasız liste oluşturmak için imi<br />

kullanılır. Sırasız listeler için Tablo 5-2’deki gibi bazı çiçek isimlerini ve bir<br />

üniversitenin Mühendislik ve Fen Edebiyat Fakültelerindeki üçer bölümleri gösteren bir<br />

örnek HTML belgesi oluşturabiliriz.<br />

<br />

Sırasız Liste Kullanımı<br />

<br />

<br />

<br />

Sırasız Liste Kullanımı<br />

Bazı çiçek çeşitleri: <br />

<br />

Lale<br />

Papatya<br />

Gelincik<br />

<br />

Üniversitemizdeki bölümlerden bazıları şunlardır: <br />

<br />

Mühendislik Fakültesi<br />

<br />

Bilgisayar Mühendisliği Bölümü<br />

Gıda Mühendisliği Bölümü<br />

Çevre Mühendisliği Bölümü<br />

<br />

<br />

Fen Edebiyat Fakültesi<br />

<br />

Fizik Bölümü<br />

Kimya Bölümü<br />

Biyoloji Bölümü<br />

<br />

<br />

<br />

<br />

Tablo 5-2 HTML belgesi içinde sırasız liste kullanım örneği<br />

Bu HTML belgesi tarayıcı içinde Şekil 5-2’deki gibi gözükür.<br />

77


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Şekil 5-2 HTML belgesi içinde sırasız liste kullanım örneği<br />

Sıralı listelerde olduğu gibi sırasız listelerde de type özniteliği kullanılabilir. Bu<br />

durumda type özniteliği şu üç değeri alabilir: disc, circle, square. Tablo 5-2’deki<br />

örnek sayfada çiçek isimlerini gösteren listenin type özniteliği değeri circle olarak<br />

verilmiştir. Circle kelimesi ingilizcede daire demektir ve tarayıcı içinde ilk listenin<br />

elemanları, başında küçük ve içi boş daireler olduğu halde Şekil 5-2’de görünmektedir.<br />

Eğer bu listenin type özniteliği değeri disc olarak verilseydi, bu durumda liste<br />

elemanları başında içi dolu daire şekli olacaktı. Diğer yönden type özniteliği değeri<br />

square olarak verilseydi, bu durumda liste elemanları başında içi dolu küçük bir kare<br />

şekli konulacaktı.<br />

Bu örnekte çiçek isimlerini gösteren ilk liste basit bir liste iken, ikinci liste iç içe<br />

iki listenin kullanıldığı birleşik bir listedir. HTML dilindeki üç çeşit liste de iç içe<br />

kullanılabilir. İç listeler sırasız veya sıralı liste olabilirler. Bu örnekte ilk iç liste sırasız,<br />

ikinci iç liste ise sıralı liste olarak tanımlanmıştır. İç içe liste oluşturmada bir sınır yoktur.<br />

Bu örnekte sadece bir liste içinde diğer iki iç liste vardır. Fakat bir iç liste içinde de başka<br />

iç listeler olabilir. Bu şekilde çok katmanlı listeler oluşturulabilir.<br />

Örnek Uygulama<br />

Bu bölümdeki örnek sayfadaki ikinci listede sırasız bir liste içinde iki tane sıralı<br />

liste kullanılmıştır. Sırasız listenin her iki elemanı da birer sıralı listedir. Benzer bir<br />

uygulamayı siz yapınız? Fakat siz uygulamanızda sıralı bir liste içinde yine sıralı listeleri<br />

78


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

kullanınız? Örneğin 4 tane şehirden oluşan bir sıralı liste oluşturunuz? Fakat her şehrin<br />

ilçeleri de ayrıca bu liste içinde sıralı listeler olarak bulunsun.<br />

5.5 Tanım Listeleri<br />

Tanım listeleri her liste elemanının bir adının olması gerektiği durumlarda<br />

kullanılır. Bu durumda her liste elemanının başına bir numara ya da geometrik şekil<br />

konmaz. Onun yerine her liste elemanının bir adı vardır. Bu durumda her liste elemanı iki<br />

kısımdan oluşur. Birincisi kısım liste elemanının adı ya da başlığı, ikinci kısım ise bu liste<br />

elemanının açıklaması. Tanım listeleri kullanmayla ilgili örnek bir HTML sayfası Tablo<br />

5-3’de verilmiştir. Bu listede bazı çiçek isimleri ve her çiçek için bir açıklama mevcuttur.<br />

<br />

Tanım Listesi Kullanımı<br />

<br />

<br />

<br />

Tanım Listesi Kullanımı<br />

Bazı çiçek çeşitleri: <br />

<br />

Lale<br />

Lale bahar ayında açan kırmızı bir çiçektir.<br />

Papatya<br />

Baharda kırları süsleyen beyaz çiçektir.<br />

Gelincik<br />

Baharda açan bir diğer kırmızı çiçektir.<br />

<br />

<br />

<br />

Tablo 5-3 HTML belgesi içinde tanım listesi kullanım örneği<br />

Bu HTML belgesi tarayıcı içinde Şekil 5-3’deki gibi gözükür.<br />

79


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Şekil 5-3 HTML belgesi içinde tanım listesi kullanım örneği<br />

HTML belgesinde gözüktüğü gibi tanım listesi oluşturmak için imi<br />

kullanılır. Her bir liste elemanını oluşturmak içinse diğer iki çeşit listede olduğu gibi<br />

imi kullanılmaz. Çünkü her liste elemanı iki kısımdan oluşmaktadır. Liste<br />

elemanının adı imi ile tanımlanır. Liste elemanının açıklaması ise imi ile<br />

yapılır.<br />

Örnek Uygulama<br />

Bir tanım listesi uygulaması da siz yapınız? Bu listeniz yemekler hakkında veya<br />

sizin seçeceğiniz başka bir konu hakkında olabilir. Listenizin tanım kısmındaki metni<br />

koyu ve biraz daha büyük karakterli yapmayı deneyiniz?<br />

5.6 Tablolar<br />

Tablolar web sayfalarında birçok farklı amaç için kullanılan çok faydalı bir<br />

HTML elemanıdır [4]. Bu amaçlardan ilki sunulmak istenen bilginin kullanıcıya bir tablo<br />

halinde gösterilmesidir. İkinci bir amacı ise web sayfa tasarlarken tablolarla web<br />

sayfasını farklı bölgelere ayırmaktır. Tablolarla ilgili kurallar HTML standardının bir<br />

parçası olarak tanımlanmıştır [5].<br />

HTML dilinde tablo oluşturmak için imi kullanılır. Her tablo satırlardan<br />

oluşur. Her bir satır imi ile oluşturulur. Dolayısıyla liste oluşturmada olduğu gibi bir<br />

imi içinde imi ile oluşturulmuş birçok satır bulunur. Sütunları tanımlamak<br />

için ayrıca bir im yoktur. Tablolar sadece satırlardan oluşur. Fakat bu durumda ayrıca her<br />

bir satır içinde birçok hücre elemanı vardır. Bu hücre elemanlarını oluşturmak için ise<br />

imi kullanılır. Her satırdaki hücre sayısı ise tablonun sütun sayısını belirler.<br />

80


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Tablo 5-4’de vize sonuçlarını öğrencilere duyurmak için yapılmış örnek bir tablo<br />

sayfası görünmektedir.<br />

<br />

Tablo Kulanımı<br />

<br />

<br />

<br />

Vize Sonuçları<br />

<br />

<br />

Sıra No<br />

İsim<br />

Not<br />

<br />

<br />

1<br />

Ali Ak<br />

70<br />

<br />

<br />

2<br />

Veli Aslan<br />

80<br />

<br />

<br />

3<br />

İlker Arı<br />

75<br />

<br />

<br />

<br />

<br />

Tablo 5-4 Vize sonuçlarını tablo içinde sunma örneği<br />

Bu örnekte iminin border isimli bir özniteliği kullanılmıştır. Bu<br />

öznitelik tablonun çerçevesinin kalınlığını belirler. border özniteliği değeri 1 olarak<br />

verildiğinde oluşacak tablo Şekil 5-4’deki en soldaki tarayıcı şekli içindeki tablo gibi<br />

olur. border özniteliği değeri 5 olarak verilirse, bu durumda tablonun etrafındaki çerçeve<br />

daha kalın olur ve ortadaki tarayıcı şeklindeki gibi gözükür. border özniteliği hiç<br />

tanımlanmazsa veya sıfır olarak verilirse, bu durumda tablo, en soldaki tarayıcı<br />

şeklindeki gibi çerçevesiz olarak gözükür.<br />

81


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Şekil 5-4 Vize sonuçlarını tablo içinde sunma örneği<br />

Tablo imleri: , , , <br />

Tablo 5-4’deki HTML belgesinde görüldüğü gibi bir HTML tablosu imi<br />

ile başlar ve imi ile biter. Tablo elemanını başlatan ve bitiren bu iki im çifti<br />

arasında, her satırı oluşturmak için bir im çifti kullanılır. Ayrıca her satır içindeki<br />

hücreleri tanımlamak için im çiftleri kullanılır. Genellikle her satırda eşit sayıda<br />

hücre bulunur. Örneğin bu tabloda her satırda 3 tane hücre vardır. Her bir hücre de <br />

imi ile tanımlanmıştır.<br />

Tablonun ilk satırı genellikle başlık satırı olur. Bu durumda başlık satırı içindeki<br />

hücreleri tanımlamak için imi yerine imi kullanılır. Böylece tarayıcı başlık<br />

satırındaki metni diğerlerine göre biraz daha koyu renkte gösterir. Fakat sadece ilk<br />

satırdaki hücreler başlık hücresi olabilir diye bir kural yoktur. Örneğin ilk sütundaki<br />

hücreler de başlık hücresi olarak tanımlanabilir.<br />

Örnek Uygulama<br />

Bir örnek tablo uygulaması yapınız? Bu tabloda bir öğrencinin ders isimlerini ve<br />

her dersten aldığı notları tutabilirsiniz. Ya da kendi seçtiğiniz bir konuda tablo<br />

oluşturabilirsiniz. Ayrıca bu bölümdeki uygulamada başlık satırı olarak tablonun ilk satırı<br />

seçilmiştir. Siz uygulamanızda başlık kısmı olarak tablonun ilk sütununu seçiniz?<br />

Tablonuzda ilk sütundaki hücre elemanları biraz daha koyu görünsün.<br />

5.5.1 Birleşik Satırlar ve Şutunlar: rowspan ve colspan öznitelikleri<br />

Bazı durumlarda birkaç hücrenin birleştirilmesi gerekir. Bu birleştirme aynı<br />

satırdaki birkaç hücrenin veya aynı sütundaki birkaç hücrenin birleştirilmesi seklinde<br />

olur. Hatta bazen birleştirilen hücreler hem birden fazla satır hücresinden hem de birden<br />

fazla sütun hücresinden oluşabilir. Bu durumda satırları birleştirmek için hücrelerin<br />

rowspan özniteliği, sütunları birleştirmek için ise hücrelerin colspan özniteliği kullanılır.<br />

82


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Bu öznitelikler ve imlerinin öznitelikleridir. Bir hücrenin kaç satırdan ve<br />

sütundan oluşacağını belirler.<br />

Şimdi bir önceki bölümdeki örneği biraz daha genişletelim. Tablonun ilk satırı<br />

“Final Sonuçları” metnini içersin. Dolayısıyla bu satırda sadece bir hücre olsun. Yani ilk<br />

satırdaki bütün sütunlar birleştirilmiş olsun. Bu tabloya bir diğer ek olarak ta bir sütun<br />

ekleyelim. Bu sütunda öğrencileri başarı durumunu gösterilsin. Bu durumda HTML<br />

belgemizin yeni hali<br />

Tablo 5-5’deki gibi olur.<br />

<br />

Tablo Kulanımı<br />

<br />

<br />

<br />

<br />

<br />

Final Sonuçları <br />

<br />

<br />

Sıra No<br />

İsim<br />

Not<br />

Durum<br />

<br />

<br />

1<br />

Ali Ak<br />

70<br />

Geçti<br />

<br />

<br />

2<br />

Veli Aslan<br />

80<br />

<br />

<br />

3<br />

İlker Arı<br />

75<br />

<br />

<br />

<br />

Tablo 5-5 HTML tablosunda birleştirilmiş hücre kullanım örneği<br />

Bu HTML belgesi tarayıcı içerisinde Şekil 5-5’deki gibi gözükür.<br />

83


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Şekil 5-5 HTML tablosunda birleştirilmiş hücre kullanım örneği<br />

Görüldüğü gibi bu örnekte tablonun ilk satırında yani ilk im çifti içinde<br />

diğer satırların aksine sadece tek bir hücre elemanı bulunmaktadır. Bu hüce<br />

elemanının da colspan özniteliği 4 olarak verilmiştir. Bu ilk satırda tek bir hücre<br />

olacağını ve bu hücrenin 4 sütun genişliğinde olacağını gösterir. Yani ilk satırda tek bir<br />

hücre elemanı olacak ve tablonun bütün satırını kaplayacaktır. Şekil 5-5’deki tarayıcı<br />

şeklinden de görüldüğü gibi, tablonun ilk satırında sadece tek bir hücre elemanı vardır ve<br />

bu hücre 4 sütuna yayılmıştır.<br />

Bu tablodaki ikinci farklılık ise üçüncü satırdaki son hücre elemanındadır.<br />

Üçüncü satırın ilk üç elemanı normal olarak tanımlanmıştır, fakat son hücre elemanı<br />

tanımlanırken bu hücrenin yani iminin rowspan özniteliği 3 olarak verilmiştir. Bu<br />

öznitelik değeri üçüncü satırın son elemanının 3 satır boyunda olacağını göstermektedir.<br />

Fakat bu işlem üçüncü satırın son hücresinin boyunu 3 satır yüksekliğinde yapmak için<br />

yeterli değildir. Ayrıca yapılması gereken bir işlem daha vardır. Dördüncü ve beşinci<br />

satırlar tanımlanırken bu satırların son hücreleri tanımlanmamalıdır. Çünkü bu<br />

satırlardaki son elemanın yerine üçüncü satırın son elemanı genişleyecektir. Dolayısıyla<br />

çok satıra yayılan bir hücre oluşturabilmek için hem o hücrenin rowspan özniteliği değeri<br />

verilir, hem de kendisinden sonra gelen satırlar ona göre ayarlanır.<br />

Örnek Uygulama<br />

Oluşturacağınız bir tabloda farklı noktalardaki hücreleri birleştirmeyi deneyiniz?<br />

Örneğin bu bölümde tablonun son sütunundaki üç tane hücre birleştirilmişti. Siz tablonun<br />

ortasından bir sütundaki üç tane hücreyi birleştirmeyi deneyiniz? Benzer şekilde bu<br />

bölümdeki örnekte ilk satırdaki bütün hücreler birleştirilmişti, siz tablonun diğer<br />

satırlarındaki hücreleri birleştirmeyi deneyiniz?<br />

84


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

5.5.2 Tablo Arka Plan Rengi Ayarlama: bgcolor özniteliği<br />

Tabloların arka plan rengini ayarlamak mümkündür. Tüm tablonun arka planı bir<br />

renk olarak verilebileceği gibi, her bir satırın arka plan rengi farklı farklı da ayarlanabilir.<br />

Hatta her bir hücrenin arka plan rengi kendine özgü olarak belirlenebilir. Bu şekilde arka<br />

plan rengi ayarlanmış üç farklı tablo Şekil 5-6’da gözükmektedir.<br />

Şekil 5-6 Tablo arka plan rengi ayarlama örneği<br />

İlk tabloda bütün tablonun arka plan rengi tek bir renk olarak belirlenmiştir. İkinci<br />

tabloda her satırın arka plan rengi ayrı bir renk olarak ayarlanmıştır. Üçüncü tabloda ise<br />

her sütunun rengi farklı bir renk olarak verilmiştir.<br />

Şimdi yukarıdaki ilk tablonun, yani bütün arka plan renginin tek bir renk olduğu<br />

HTML belgesini görelim. Bu belgenin kodu Tablo 5-6’daki gibi olur.<br />

<br />

Tablo Arka Plan Rengi Ayarlama<br />

<br />

<br />

<br />

<br />

<br />

Sıra No<br />

İsim<br />

Memleket<br />

<br />

<br />

1<br />

Ali Ak<br />

Adana<br />

<br />

<br />

2<br />

Veli Aslan<br />

Mersin<br />

<br />

<br />

<br />

<br />

85


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Tablo 5-6 Tablo arka plan rengi ayarlama örneği<br />

Bütün tablonun arka plan rengi ayarlanmak istendiğinde table iminin bgcolor<br />

özniteliği kullanılır. Bu örnekte iminin bgcolor özniteliği değeri aqua olarak<br />

verilmiştir. Dolayısıyla bütün tablonun arka plan rengi açık mavi olmuştur.<br />

Şimdi Şekil 5-6’daki ikinci tablonun HTML kodunu görelim. Bu durumda her<br />

satırın arka plan rengini ayarlamak için her iminin bgcolor özniteliği kullanılır. Bu<br />

sayfanın HTML kodu<br />

Tablo 5-7’deki gibi olur.<br />

<br />

Tablo Arka Plan Rengi Ayarlama<br />

<br />

<br />

<br />

<br />

<br />

Sıra No<br />

İsim<br />

Memleket<br />

<br />

<br />

1<br />

Ali Ak<br />

Adana<br />

<br />

<br />

2<br />

Veli Aslan<br />

Mersin<br />

<br />

<br />

<br />

<br />

Tablo 5-7 Tablo satırlarının arka plan rengini ayarlama örneği<br />

İlk HTML belgesinde sadece iminin bgcolor özniteliği kullanılmıştı. Bu<br />

örnekte ise her satırın arka plan rengini farklı bir renge ayarlamak için, her iminin<br />

bgcolor özniteliği farklı bir renk olarak verilmiştir.<br />

Son olarak her sütunun farklı bir arka plan rengine sahip olduğu Şekil 5-6’daki en<br />

sağdaki tablonun HTML kodunu görelim. Bu sayfanın HTML kodu<br />

Tablo 5-8’deki gibi olur.<br />

86


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

<br />

Tablo Arka Plan Rengi Ayarlama<br />

<br />

<br />

<br />

<br />

<br />

Sıra No<br />

İsim<br />

Memleket<br />

<br />

<br />

1<br />

Ali Ak<br />

Adana<br />

<br />

<br />

2<br />

Veli Aslan<br />

Mersin<br />

<br />

<br />

<br />

<br />

Tablo 5-8 Tablo sütunlarının arka plan rengini ayarlama örneği<br />

HTML tablolarında sütunları belirtmek için direk bir yol yoktur. Bunun yerine her<br />

sütun bütün satırlardaki aynı sırada bulunan hücrelerin toplamı seklinde düşünülür.<br />

Örneğin ilk sütun bütün satırların ilk hücrelerinin toplamından oluşur. İkinci sütun bütün<br />

satırların ikinci hücrelerinin toplamından oluşur. Bütün sütunlar bu şekilde belirlenir.<br />

Dolayısıyla bir sütunun arka plan rengini ayarlamak için, bu sütunu oluşturan bütün<br />

hücrelerin arka plan rengi ayarlanmalıdır.<br />

Bu örnekte ilk sütunun rengini açık yeşil yapmak için, bu sütunu oluşturan bütün<br />

hücrelerin bgcolor özniteliği değeri lime olarak verilmiştir. Yani her satırın ilk<br />

hücresinin bgcolor özniteliği değeri lime olarak ayarlanmıştır. Benzer şekilde ikinci<br />

sütunun arka plan rengini gri yapmak için, bütün satırların ikinci hücrelerinin bgcolor<br />

özniteliği değeri silver olarak verilmiştir. Yine benzer şekilde üçüncü sütunun arka plan<br />

rengini pembemsi yapmak için, bütün satırların üçüncü hücrelerinin bgcolor özniteliği<br />

değeri fuchsia olarak verilmiştir. Bu şekilde üç sütunun arka plan rengi de farklı bir<br />

renk olarak ayarlanmıştır.<br />

Örnek Uygulama<br />

Oluşturacağınız 3x3 bir tabloda sadece ortadaki hücrenin arka plan rengi farklı<br />

olacak şekilde bir arka plan renk ayarlaması yapmayı deneyiniz? Tablonuzda arka plan<br />

rengi olarak farklı renk çeşitlerini kullanınız? Ayrıca tablonuzda arka plan olarak renk<br />

yerine görüntü kullanmayı deneyiniz?<br />

87


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

5.5.3 Hücreler Arasındaki Mesafeleri Ayarlama: cellspacing ve<br />

cellpadding<br />

HTML dili bir tablo içindeki çeşitli boşluk değerlerini ayarlamak için de birçok<br />

imkânlar sunar. Bunun için iminin iki tane özniteliği vardır: cellspacing ve<br />

cellpadding. Bunlardan cellspacing özniteliği hücreler arasındaki boşluk miktarını<br />

pixel olarak belirlemek için kullanılır. Yani iki hücre duvarı arasındaki boşluk miktarını<br />

belirler. cellpadding özniteliği ise hücrelerin içindeki metin ile bu hücrelerin duvarı<br />

arasındaki boşluk miktarını pixel cinsinden belirler.<br />

Tablolada cellspacing özniteliği kullanımını<br />

Tabloların cellspacing özniteliği hücreler arasındaki boşluk miktarını pixel<br />

olarak belirlemek için kullanılır. Şimdi cellspacing ile hücreler arasındaki boşluk<br />

miktarının nasıl ayarlandığını bir örnek HTML sayfası ile görelim. Tablo 5-9’daki<br />

HTML sayfasında cellspacing özniteliğinin örnek kullanımı gözükmektedir.<br />

<br />

Tablolarda boşluk miktarı ayarlama<br />

<br />

<br />

<br />


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

belgesi tarayıcı içinde ortadaki resimde olduğu gibi görünür. Bu durumda hücreler<br />

arasındaki boşluk miktarının ilk duruma göre çok daha küçük olduğu görülür. En son<br />

resimdeki tablonun oluşması için ise cellspacing özniteliği değeri 1 pixel olarak<br />

verilmelidir. Bu durumda hücreler arasındaki boşluk miktarı fark edilmeyecek kadar<br />

azdır. Özetle söylemek gerekirse cellspacing özniteliği hücreler arasındaki boşluk<br />

miktarını belirlemek için kullanılır.<br />

Şekil 5-7 Bir tablodaki hücreler arasındaki mesafeyi ayarlama örneği<br />

Tablolarda cellpadding özniteliği kullanımını<br />

Tablonun cellpadding özniteliği hücrelerin içindeki metin ile bu hücrelerin<br />

duvarları arasındaki boşluk miktarını pixel cinsinden belirler. Şimdi cellpadding<br />

özniteliği ile hücrelerin içindeki metin ile hücrelerin duvarları arasındaki boşluk<br />

miktarının nasıl ayarlandığını bir örnek HTML sayfası ile görelim. Bu amaçla yazılmış<br />

bir HTML sayfası Tablo 5-10’da verilmiştir.<br />

<br />

Tablolarda boşluk miktarı ayarlama<br />

<br />

<br />

<br />

<br />

<br />

Sıra No<br />

Çiçek <br />

Renk<br />

<br />

<br />

1<br />

Lale<br />

Kırmızı<br />

<br />

<br />

2<br />

Gelincik<br />

Kırmızı<br />

<br />

89


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

<br />

<br />

<br />

Tablo 5-10 Tabloların cellpadding özniteliği kullanımı<br />

Bu HTML belgesi tarayıcı içinde Şekil 5-8’deki en soldaki tarayıcı resminde<br />

olduğu gibi görünür. Bu HTML belgesindeki elemanının cellpadding<br />

özniteliği tanımlanmış olup değeri 10 pixel olarak verilmiştir. Bu 10 pixel hücrelerin<br />

içindeki metinler ile hücre duvarları arasındaki boşluk miktarını gösterir. Örneğin bu<br />

tabloda hücre içindeki metinler daha önceki tablolarda olduğu gibi hemen hücre duvarı<br />

yanında başlamamıştır. Hücre duvarı ile metin arasında hem solda ve sağda, hem yukarda<br />

ve aşağıda 10 pixel miktarında boşluk vardır.<br />

Şekil 5-8’deki ortadaki tarayıcı resmindeki tabloda cellpadding özniteliği değeri<br />

5 pixel olarak verilmiştir. Bu durumda hücre içindeki metin ile hücre duvarı arasındaki<br />

boşluk ilk tabloya göre çok daha küçüktür. Benzer şekilde son tabloda ise cellpadding<br />

özniteliği değeri 1 pixel olarak verilmiştir. Dolayısıyla hücre içindeki metin ile hücre<br />

duvarı arasındaki mesafe en az en soldaki tablodadır.<br />

Şekil 5-8 Tablolarda cellpadding özniteliği kullanımı örneği<br />

Örnek Uygulama<br />

Oluşturacağınız bir tabloda hem cellspacing hem de cellpadding<br />

özniteliklerini birlikte kullanınız? Küçük boyutlu ve büyük boyutlu tablolarda bu<br />

öznitelik değerlerini nasıl kullanmanız gerektiğini farklı sayısal değerler vererek<br />

araştırınız? Bu iki öznitelik değerinin görüntüyü nasıl etkilediğini gözlemleyiniz?<br />

90


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

5.5.4 Tablo Boyu ve Metin Pozisyonu Ayarlama: width, height, align<br />

ve valign<br />

HTML dili web sayfalarındaki tabloların eninin ve yüksekliğinin ayarlanmasına<br />

imkân verir. Bir tablonun tamamının eni ve yüksekliği ayarlanabileceği gibi, her bir<br />

satirinin veya her bir hücresinin de en ve yüksekliği ayarlanabilir. Tabloların en ve<br />

yüksekliğinin ayarlanabilmesi için width ve height öznitelikleri kullanılır. Bu<br />

öznitelikler , , ve imleriyle kullanılabilir. Yani tüm bir tablonun,<br />

veya bir satırın, veya bir hücrenin eni ve boyu ayarlanabilir. Eni ayarlamak için width<br />

özniteliği, yüksekliği ayarlamak için ise height özniteliği kullanılır.<br />

Bazı durumlarda hücre boyu içindeki metinden çok daha büyük olabilir. Bu<br />

durumda hücre içindeki metnin nerede gösterileceği önemlidir. Hücrelerin içindeki<br />

metnin bulunacağı pozisyon align ve valign öznitelikleriyle belirlenir. Metnin yatay<br />

düzlemdeki pozisyonu align özniteliği ile ayarlanır. Metnin dikey düzlemdeki<br />

pozisyonunu ise valign özniteliği ile ayarlanır. Metin yatay düzlemde sola yanaşık,<br />

hücre ortasında veya sağa yanaşık olabilir. Metin dikey düzlemde ise yukarda, ortada<br />

veya aşağıda olabilir.<br />

align özniteliği metnin hücre içinde yatay düzlemdeki pozisyonunu belirler ve şu<br />

değerleri alabilir:<br />

left = sola yanaşık<br />

center = ortada<br />

right = sağa yanaşık<br />

valign özniteliği metnin hücre içinde dikey düzlemdeki pozisyonunu belirler ve<br />

şu değerleri alabilir:<br />

top = yukarda<br />

middle = ortada<br />

bottom = aşağıda<br />

Şimdi tablo boyu ve metin pozisyonu ayarlamasıyla ilgili bir örnek HTML belgesi<br />

görelim. Bu amaçla yazılmış bir sayfa kodu Tablo 5-11’de verilmiştir.<br />

<br />

Tablo Boyu Ayarlama<br />

<br />

<br />

<br />

<br />

91


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

<br />

Parça <br />

Açıklama<br />

<br />

<br />

İşlemci<br />

Merkezi İşlem Birimi yani CPU (Central Processing<br />

Unit) bir bilgisayarın beynidir. Mantıksal ve Aritmetik<br />

bütün işlemler burada yapılır.<br />

<br />

<br />

Bellek<br />

Bellek işlemcinin işlem yapacağı bilgilerin ve<br />

komutların tutulduğu bir hafıza birimidir. İşlemci ile<br />

bellek arasinda yuksek hızlı bir veri yolu vardir. <br />

<br />

<br />

<br />

<br />

Tablo 5-11 Tablo boyu ve metin pozisyonu ayarlama örneği<br />

Bu HTML belgesi tarayıcı içerisinde Şekil 5-9’daki gibi gözükür.<br />

Şekil 5-9 Tablo boyu ve metin pozisyonu ayarlama örneği<br />

Tablo genişliği ve yüksekliği ayarlama<br />

Öncelikle tablo boyunun nasıl ayarlandığına bir bakalım. iminde width<br />

ve height öznitelikleri kullanılmıştır. width özniteliği değeri "100%" olarak verilmiştir.<br />

Burada 100 değerinden sonra gelen % karakteri tablo genişliğinin yüzde olarak verildiğini<br />

gösterir. Tablo genişliği tarayıcı penceresi genişliğine göre ayarlanacaktır. Yüzde yüz<br />

demek bu tablonun genişliğinin tarayıcı genişliği kadar olacağı anlamına gelmektedir.<br />

Zaten Şekil 5-9’daki görülen tarayıcı penceresinde de tablonun genişliğinin tarayıcı<br />

genişliği kadar olduğu görülmektedir.<br />

92


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Tablonun yüksekliği ise iminin height özniteliği ile ayarlanmıştır.<br />

Yükseklik de yine yüzde olarak verilmiş ve bağıl olarak ayarlanmıştır. Bu durumda tablo<br />

yüksekliği tarayıcı yüksekliğinin yüzde doksanı olarak verilmiştir. Yukarıdaki tarayıcı<br />

penceresinde alt kısımda bir boşluk gözükmektedir. Bu boşluk yüzde onluk boş kısımdır.<br />

Bu örnekte tablonun hem eni hem de yüksekliği yüzde olarak verilmiştir. Bunun<br />

bir avantajı tablo boyunun tarayıcı penceresi boyuyla orantılı olarak değişmesidir.<br />

Tarayıcı penceresi boyu büyütülürse, tablonun da boyu büyüyecektir. Tarayıcı peceresi<br />

boyu küçültülürse tablo boyu da küçülecektir.<br />

Tabloda satır yüksekliği ayarlama<br />

Bu örnekte ayrıca tablonun ilk satırının yüksekliği 40 pixel olarak verilmiştir.<br />

Yani ilk satırın height özniteliği değeri 40 olarak atanmıştır. 40 değerinin yanında yüzde<br />

işareti yoktur. Bu da yüksekliğin 40 pixel olacağı anlamına gelmektedir. Bu şekilde<br />

yükseklik pixel olarak verildiğinde, tarayıcı boyu büyütülse bile ilk satırın yüksekliği<br />

değişmez. Çünkü yükseklik izafi olarak verilmemiştir. İlk satır yüksekliği her zaman 40<br />

pixel olur.<br />

Tabloda sütun genişliği ayarlama<br />

Bir sütunun genişliği o sütundaki her hangi bir hücrenin genişliği ayarlanarak<br />

ayarlanır. Bu örnekte ilk satırın ilk hücresinin genişliği yani width öznitelik değeri yüzde<br />

20 olarak verilmiştir. Dolayısıyla tablonun ilk sütununun genişliği tablonun toplam<br />

genişliğinin yüzde 20’si kadar olacaktır. Tablo büyürse ilk sütunun genişliği de izafi<br />

olarak büyüyecektir. Şekil 5-9’da tablonun ilk sütununun genişliğinin tablonun toplam<br />

genişiliğinin 100’de 20’si kadar olduğu gözükmektedir.<br />

Hücre içindeki metin pozisyonu ayarlama<br />

Bu örnekte ikinci satırın yatay düzlemdeki metin pozisyonu center olarak<br />

ayarlanmıştır. Bu işlem tablonun ikinci iminin align özniteliği değeri center<br />

verilerek yapılmıştır. Böylelikle ikinci satırdaki bütün hücrelerin içindeki metinler yatay<br />

düzlemde hücre ortasında gösterilmektedir. Yine ikinci satırın ilk hücresi içindeki metnin<br />

pozisyonu dikey düzlemde yukarda olarak ayarlanmıştır. Bu işlemde ikinci satırın ilk<br />

hücresinin yani ilk iminin valign özniteliği değeri top atanarak yapılmıştır. Onun<br />

için tarayıcı içinde ikinci satırın ilk hücresi içindeki metin, yatay düzlemde ortada, dikey<br />

düzlemde ise yukarda gösterilmektedir. Üçüncü satırın ilk hücresinin pozisyonu hem<br />

yatay için hem dikey için ayarlanmıştır. Yatay pozisyonu orta, dikey pozisyonu ise aşağı<br />

olarak ayarlanmıştır. Bu işlem de üçüncü satırın ilk iminin align özniteliği değeri<br />

center, valign özniteliği değeri bottom atanarak yapılmıştır.<br />

Örnek Uygulama<br />

93


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Üç satırlık bir tablo oluşturunuz? Bu tablonun ilk ve son satırlarının boyu sabit<br />

iken, ortadaki satırının boyu değişken olsun. Tarayıcı pencere boyu büyütüldükçe ilk ve<br />

son satır boyları sabit kalsın ama ortadaki satırın boyu pencere boyuna bağlı olarak<br />

değişsin. Bu tablonun iki tane de sütunu bulunsun. İlk sütunun genişliği sabit iken ikinci<br />

sütunun genişliği değişken olsun.<br />

Oluşturmuş olduğunuz bu tablonun ortadaki hücresi içine birçok paragraftan<br />

oluşan bir metin yerleştiriniz. Bu hücrenin cellpadding özniteliğini kullanarak metnin<br />

hücre duvarına olan mesafesini ayarlayınız? Ayrıca tablonun diğer hücre elemanlarının<br />

align ve valign özniteliklerini kullanarak metin pozisyonu ayarlaması yapınız? Bu<br />

öznitelik değerinin farklı değerlerinin nasıl bir etki yaptığını gözlemleyiniz?<br />

5.5.5 Web Sayfası Tasarımı İçin Tablo Kullanımı<br />

Web sayfasını farklı bölgelere ayırmak için tablolar sıkça kullanılır [6]. Böylelikle<br />

web sayfası tarayıcı içinde daha düzenli görünür. Bu durumda tabloların kenarlıkları<br />

genellikle görünmez yapılır. Yani table elemanının border özniteliği değeri sıfır olur.<br />

Web farklı sayfası bölgelere ayrılırken her bölge bir hücreden oluşur. Bu<br />

hücrelerin arka plan renkleri farklı farklı ayarlanabilir. Böylelikle sayfanın kullanım<br />

kolaylığı artar. Tablolarda arka planda renk kullanma yerine görüntü de kullanılabilir.<br />

Aşağıdaki örnek sayfada bir hücrenin arka plan rengi bir görüntü ile ayarlanmıştır.<br />

Web sayfalarını bölgelere ayırırken kullanılan bir diğer teknik de, bir tablo içinde<br />

başka tabloların kullanılmasıdır. Bir tablo içindeki bir hücreye başka bir tablo<br />

yerleştirilebilir. Aşağıdaki örnek sayfada ikinci satırda böyle bir kullanım görülmektedir.<br />

Şimdi bir web sayfasını bir tablo yardımıyla üç ana bölgeye ayıran bir örnek sayfa<br />

tasarımı görelim. Bu bölgelerden birisi sayfanın başlık kısmı, ikincisi menü kısmı ve<br />

üçüncüsü de gövde kısmı olsun. Bu üç farklı bölge sayfa içinde yukardan aşağıya doğru<br />

tek bir sütunda bulunsun. Bu şekilde tasarlanmış bir web sayfası Tablo 5-12’de<br />

verilmiştir.<br />

<br />

Sayfa Tasarımı İçin Tablo Kullanımı<br />

<br />

<br />

<br />

<br />

<br />

<br />

Bilgisayar <br />

<br />

<br />

<br />

<br />

94


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

<br />

İşlemci<br />

Bellek<br />

Ön Bellek<br />

Hard Disk<br />

<br />

<br />

<br />

<br />

<br />

<br />

&nbsp;&nbsp;&nbsp;Bilgisayar hem veri işleyen yani<br />

hesaplamalar yapan, hem de veri depolayan bir makinadır.<br />

Modern anlamda ilk gelistirilen bilgisayar 1946 yılında<br />

yapımı tamamlanan ENIAC'tır. <br />

Merkezi İşlem Birimi (CPU)<br />

&nbsp;&nbsp;&nbsp;Merkezi İşlem Birimi yani CPU<br />

(Central Processing Unit) bir bilgisayarın beynidir.<br />

Mantıksal ve Aritmetik bütün işlemler burada yapılır.<br />

<br />

<br />

<br />

Tablo 5-12 Tablo kullanarak web sayfasını farklı bölgelere ayırma örneği<br />

Bu HTML belgesi tarayıcı içerisinde Şekil 5-10’daki gibi gözükür.<br />

Şekil 5-10 Tablo kullanarak web sayfasını farklı bölgelere ayırma örneği<br />

Bu örnekteki bütün bir sayfanın arka plan rengi body elemanının bgcolor<br />

özniteliği kullanılarak olive olarak ayarlanmıştır. Dolayısıyla bu sayfanın arka plan<br />

rengi tarayıcı içinde gözüken zeytin yeşili rengidir. Fakat bu sayfanın gövdesinde bir tane<br />

tablo bulunmaktadır. Bu tablo im çifti içindedir. Böylelikle tablo yatay<br />

düzlemde web sayfasının merkezine yerleştirilir. Sola ya da sağa yanaşık olmaz. Bu<br />

95


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

tablonun kenar çizgileri gözükmesin diye border özniteliği değeri de sıfır olarak<br />

atanmıştır.<br />

Sayfada bulunan ana tablonun üç tane satırı vardır. Her bir satır web sayfasının bir<br />

bölgesini oluşturmak için kullanılır. Her satırda bir tane hücre bulunmaktadır. Bu<br />

tablonun genişliği 500 pixel olarak verilmiştir. Dolayısıyla tarayıcı penceresi büyüklüğü<br />

ne olursa olsun, bu tablonun genişliği değişmeyecektir.<br />

Tablonun ilk satırı web sayfasının başlık kısmını oluşturmaktadır. Bu satırın arka<br />

plan rengi fuchsia olarak verilmiştir ve ilk satırın yüksekliği 60 pixel olarak<br />

ayarlanmıştır. Dolayısıyla bu sayfanın başlık kısmı tarayıcı büyüklüğü ne olursa olsun<br />

sabit kalacaktır. Tablonun bu ilk satırında sadece bir tane hücre vardır ve bu hücre içinde<br />

de bir im çifti içinde “Bilgisayar” metni vardır. Bu da sayfanın başlık kısmını<br />

oluşturmaktadır.<br />

Tablonun ikinci satırında da yine bir tane hücre bulunmaktadır. Bu satırın arka<br />

plan rengi silver olarak ayarlanmıştır. Bu satırın tek hücresi içinde ise bir başka tablo<br />

vardır. Bu tablo içinde ise bir tane satır bulunmaktadır. Bu satırda 4 tane hücre<br />

bulunmaktadır. Her bir hücrede bir bağlantı vardır. Böylece bu satırda bir menü<br />

oluşturulmuştur. Bu satır web sayfasının ikinci bölgesini, yani menü kısmını oluşturur.<br />

Bu satır bir tablo hücresi içinde yeni bir tablo oluşturmaya da bir örnektir.<br />

Tablonun üçüncü satırı ise web sayfasının ana gövdesini oluşturmaktadır. Bu<br />

satırda bir tane hücre vardır. Bu hücrenin arka planı bir gif dosyası olarak ayarlanmıştır.<br />

Görüldüğü gibi bu hücrede web sayfasının gövdesindeki her türlü eleman olabilir. Bu<br />

örnekte gövdede iki tane paragraf ve bir tane de ara başlık bulunmaktadır. Fakat daha<br />

fazla metin, görüntü, veya tablolar da bu gövde de bulunabilirdi.<br />

Örnek Uygulama<br />

Bu bölümde üç satırlık bir tablo web sayfasını farklı bölgelere ayırmak için<br />

kullanıldı. Siz tasarlayacağınız bir sayfada dört satırlık bir tablo kullanınız? Bu tablonun<br />

ilk üç satırı yine bu bölümdeki tablo gibi başlık, menü ve gövde kısımlarını oluştursun.<br />

Dördüncü satır ise sayfanın alt kısmını oluştursun. Bu alt kısımda genellike ya küçük bir<br />

menü ya da sayfa sahibi kurum hakkında kısa bilgiler bulunur. Siz de oluşturacağınız<br />

sayfanın bu alt kısmına ya bir menü ya da sayfa hakkında kısa bilgiler koyunuz? Ayrıca<br />

web’de bildiğiniz bazı sitelere bakıp sayfaların alt bölgelerini hangi amaçla<br />

kullandıklarını araştırınız?<br />

5.5.6 Tablolarla Başlık, Menü ve Gövde Tipi Web Sayfası Tasarımı<br />

Bir önceki bölümde web sayfası bir tablo yardımıyla üç ana bölgeye ayrıldı. Bu<br />

bölgeler başlık, menü ve gövde kısımlarıydı. Bu üç kısımda bir tablonun tek bir<br />

sütununda yukardan aşağıya doğru dizildiler. Bu örnekte yine aynı sayfayı farklı bir<br />

96


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

şekilde tasarlayalım. Bu tasarımda sayfa yine aynı şekilde üç farklı gölgeye ayrılsın.<br />

Fakat bu durumda menü kısmı sayfanın sol tarafında bulunsun. Yine syfa içeriği aynı<br />

şekilde kalsın.<br />

Bu durumda web sayfasında yine bir tane tablo olacak. Bir önceki belgede ana<br />

tabloda üç satır vardı, bu durumda ise iki satır olacak. İlk satır başlık kısmını oluşturacak.<br />

İkinci satırda ise iki tane hücre olacak. İlk hücre menü kısmı içerirken, ikinci hücre web<br />

sayfasının ana gövdesini içerecek.<br />

Bu şekildeki tasarlanmış bir HTML belgesi Tablo 5-13’de verilmiştir.<br />

<br />

Sayfa Tasarımı İçin Tablo Kullanımı<br />

<br />

<br />

<br />

<br />

<br />

<br />

Bilgisayar<br />

<br />

<br />

<br />

<br />

İşlemci<br />

Bellek<br />

Ön Bellek<br />

Hard Disk<br />

<br />

<br />

<br />

&nbsp;&nbsp;&nbsp;Bilgisayar hem veri işleyen yani<br />

hesaplamalar yapan, hem de veri depolayan bir makinadır.<br />

Modern anlamda ilk gelistirilen bilgisayar 1946 yılında<br />

yapımı tamamlanan ENIAC'tır. <br />

Merkezi İşlem Birimi (CPU)<br />

&nbsp;&nbsp;&nbsp;Merkezi İşlem Birimi yani CPU<br />

(Central Processing Unit) bir bilgisayarın beynidir.<br />

Mantıksal ve Aritmetik bütün işlemler burada yapılır.<br />

<br />

<br />

<br />

<br />

<br />

<br />

Tablo 5-13 Tablo kullanarak web sayfasını farklı bölgelere ayırma ikinci örneği<br />

Bu HTML belgesi tarayıcı içerisinde Şekil 5-11’deki gibi gözükür.<br />

97


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Şekil 5-11 Tablo kullanarak web sayfasını farklı bölgelere ayırma ikinci örneği<br />

Bu HTML belgesinde sayfanın menü kısmını oluşturabilmek için tablonun ikinci<br />

satırının ilk hücresinde bir tablo oluşturulmuştur. Daha önceki örnekte bu iç tabloda tek<br />

bir satır vardı ve bu satırda da dört tane hücre bulunmaktaydı. Bu örnek sayfada ise,<br />

menü elemanları yukardan aşağı doğru görüneceği için, bu iç tabloda 4 tane satır<br />

oluşturuldu ve her bir satırda da bir tane hücre oluşturuldu. Bu iç tablonun her hücresine<br />

de bir tane bağlantı yerleştirildi. Ayrıca ana tablonun ilk satırı iki hücre genişliğinde<br />

yapılmıştır. Bu işlem de ilk satırda bulunan tek hücrenin colspan özniteliği değeri 2<br />

olarak verilerek yapılmıştır.<br />

Örnek Uygulama<br />

Bu bölümde tasarlamış olduğumuz web sayfasınının aynısını içi içe iki tablo<br />

kullanarak yapınız? İlk tablo iki satırdan oluşsun ve her iki satırında da sadece birer hücre<br />

bulunsun. Fakat ikinci satırdaki hücre içinde yeni bir tablo oluşturunuz? Bu tabloda tek<br />

bir satır olsun. Bu satırda da iki tane hücre bulunsun. Bu şekilde iki tablo kullanarak bu<br />

bölümdeki web sayfasının aynısını elde ediniz?<br />

İkinci bir uygulama olarak ta dört bölgeden oluşan bir sayfa tasarımı yapınız? Bu<br />

bölgelerin ilk üçü bu bölümdeki örnekte olduğu gibi olsun. Dördüncü bölge ise sayfanın<br />

alt kısımda bulunsun. Başlık bölgesi gibi genişliği bütün sayfa genişliği kadar olsun.<br />

Fakat başlık bölgesinden daha küçük ve sayfanın en alt kısmında olsun. Bu sayfa<br />

tasarımını da iki farklı şekilde yapınız? Birinci yöntemde tek bir tabloda dört farklı<br />

bölgeyi oluşturunuz? İkinci yöntemde ise iki farklı tablo kullanarak sayfayı dört farklı<br />

bölgeye ayrınız? Bu durumda ilk tablonun üç satırı olsun. İkinici tablo ise ilk tablonun<br />

ikinci satırında bulunsun ve bir satırında iki hücresi olsun.<br />

98


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

5.7 Özetle<br />

Tablolar web sayfalarında çok farklı amaçlarla kullanılmaktadır. Hem verileri<br />

düzenli bir şekilde kullanıcıya sunmak, hem de web sayfası tasarımı yapmak için<br />

kullanılırlar. Tablolar web tasarımında en sık kullanılan HTML elemanlarından biridir.<br />

Kaliteli sayfa tasarımı yapabilmek için tablo kullanımını programcılar çok iyi<br />

bilmelidirler.<br />

Tablolar tek başlarına kullanılabilecekleri gibi iç içe de kullanılabilirler. Gerek<br />

kullanıcıya veri sunarken, gerek de web sayfası tasarımı yaparken tablolar bazen içi içe<br />

kullanılabilir. Tabloları iç içe kullanmaka bir sınır yoktur. Yani bir tablo içinde başka bir<br />

tablo olabilir. Onun de içinde başka bir tablo olabilir. Bu böylece devam edebilir. Fakat iç<br />

içe tablo kullanımı arttıkça sayfa tasarımı karmaşıklaşacağından çok fazla katmanlı<br />

olarak tabloların kullanılmaması tavsiye edilir.<br />

5.8 Referanslar<br />

[1] D. Raggett, A.L. Hors, ve I. Jacobs (editors), "HTML 4.01 Specification",<br />

http://www.w3.org/TR/html4, 24 December 1999.<br />

[2] Lists, http://www.w3.org/TR/html401/struct/lists.html, 7 Ekim 2009.<br />

[3] HTML Lists, http://www.w3schools.com/html/html_lists.asp, 7 Ekim 2009.<br />

[4] HTML Tables, http://www.w3schools.com/html/html_tables.asp, 7 Ekim 2009.<br />

[5] Tables, http://www.w3.org/TR/html401/struct/tables.html, 7 Ekim 2009.<br />

[6] HTML Layout, http://www.w3schools.com/html/html_layout.asp, 7 Ekim 2009.<br />

99


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Bölüm 6<br />

BASAMAKLI STİL SAYFALARI (CSS)<br />

6.1 Amaç<br />

Bu bölümde amacımız, CSS stil sayfalarının ne olduğunun, temel özelliklerinin ve<br />

web sayfalarında kullanım şeklinin öğrenilmesidir. Bu amaçla öncelikle HTML ile CSS<br />

bağlantısı anlatılmış, mantıksal ve fiziksel düzenleme kavramları açıklanmıştır.<br />

Böylelikle hangi durumda HTML kullanılması gerektiği, hangi durumlarda ise CSS<br />

kullanılması gerektiği açıklanmıştır. Daha sonra CSS ile renk ayarlama ve metin<br />

özellikleri ayarlama anlatılmıştır. Tek bir HTML elemanı veya bir grup HTML elemanı<br />

için CSS kuralı yazma gösterilmiştir. Ayrıca fiziksel görüntüsü olmayan iki HTML<br />

elemanı tanıtılmıştır: ve . En son kısımda ise CSS ile web sayfası tasarımı<br />

yapma işlenmiştir.<br />

6.2 Giriş<br />

HTML dilinin temel amaçlarından biri bilgi paylaşımını kolaylaştırmaktır. Bunun<br />

için de HTML dilinin mümkün olduğunca basit olması amaçlanmıştır. HTML dilinin<br />

basit olması bir yandan çok önemli bir avantaj sağlamış ve bu dilin hızla yayılmasında<br />

önemli bir etken olmuştur. Diğer yandan bu dilin basitliği bazı dezavantajları da<br />

beraberinde getirmiştir. Örneğin, HTML dili web sayfaların görünümünü daha detaylı bir<br />

şekilde kontrol etmek isteyen programcılara yeterli imkânları sunamamıştır. Bunun için<br />

web sayfalarını daha detaylı kontrol ekmek amacıyla Basamaklı Stil Sayfaları (CSS)<br />

geliştirilmiştir [1, 2].<br />

6.3 Mantıksal ve Fiziksel Düzenleme<br />

Bir HTML belgesinde HTML imleriyle CSS beraber kullanıldığında, genel olarak<br />

HTML imleri bu belgeyi mantıksal olarak düzenlemek için, CSS ise bu belgedeki<br />

100


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

elemanları fiziksel olarak düzenlemek için yani görünümlerini ayarlamak için kullanılır.<br />

Mantıksal düzenlemeden amaç HTML belgesindeki elemanları tanımlamaktır [3].<br />

Örneğin bu belgedeki hangi metinler başlık olacak, hangileri paragraf olacak, hangileri<br />

liste olacak gibi. Bu tanımlamalar HTML ile yapılır. CSS ise tanımlanmış olan bu<br />

elemanların görünümlerini ayarlar. Başlık elemanları nasıl gözükmeli, paragraflar nasıl<br />

olmalı gibi.<br />

6.4 İlk CSS Örneği<br />

CSS stillerinin nasıl kullanıldığını görmek için bir örnekle başlayalım. Bu örnekte<br />

bir web sayfasındaki başlıkların ve paragrafların bazı özelliklerini CSS stili kullanarak<br />

ayarlayalım. Bu amaçla yazılmış bir HTML belgesi Tablo 6-1’de verilmiştir.<br />

<br />

İlk CSS kullanım Örneği<br />

<br />

<br />

h1 {color: green; text-align: center}<br />

h3 {color: brown}<br />

p {color: blue}<br />

<br />

<br />

<br />

Bilgisayar <br />

Bilgisayar hem veri işleyen yani hesaplamalar yapan,<br />

hem de veri depolayan bir makinadir. Modern anlamda ilk<br />

geliştirilen bilgisayar 1946 yılında yapımı tamamlanan<br />

ENIAC'tır. <br />

Merkezi İşlem Birimi (CPU)<br />

Merkezi İşlem Birimi yani CPU (Central Processing<br />

Unit) bir bilgisayarın beynidir. Mantıksal ve Aritmetik<br />

bütün işlemler burada yapılır.<br />

<br />

<br />

Tablo 6-1 İlk CSS örneği<br />

Bu HTML belgesi tarayıcı içinde Şekil 6-1’deki gibi gözükür.<br />

101


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Şekil 6-1 İlk CSS örneği<br />

CSS Stil Kurallarının Belge İçindeki Yeri<br />

Bu HTML belgesinde CSS stil kuralları imi içerisinde yazılmıştır. CSS<br />

stil kuralları HTML belgesi içinde iki farklı şekilde daha yazılabilir. Bunları daha sonra<br />

göstereceğiz. Şimdilik yazacağımız bütün CSS stil kuralları imi içinde olacak.<br />

imi<br />

CSS stil kuralları im çifti içerisinde yazılır. Ayrıca her zaman bu imin<br />

type özniteliği yukarda olduğu gibi "text/css" olarak verilir. Böylece tarayıcı bu stil<br />

kuralının bir CSS stil kuralı olduğunu anlar.<br />

<br />

h1 {color: green; text-align: center}<br />

h3 {color: brown}<br />

p {color: blue}<br />

<br />

CSS Stil kuralları<br />

CSS Stil kuralları HTML belgesinde mantıksal olarak tanımlanmış olan elemanlar<br />

için yazılır. Bu örnekte HTML belgesinde tanımlanmış olan üç tane eleman (h1, h3, p)<br />

için stil kuralı yazılmıştır.<br />

CSS Stil kuralı Formatı<br />

CSS Stil kuralları şu formatta yazılır:<br />

102


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

secici {ozellik1: deger1; ozellik2:deger2; ... ozellikN:degerN;}<br />

İlk önce bu kuralın hangi elemana uygulanacağı belirtilmelidir. secici kuralın<br />

uygulanacağı elemanı belirtir. Daha sonra küme parantezi içinde bu elemana uygulanacak<br />

kurallar sıralanır. Her kural bir özellik adı ve bu özelliğin alması istenen değerden oluşur.<br />

özellik adı ile değeri arasında iki nokta konulur. Her iki kural arasına ise noktalı virgül<br />

konulur. Bizim örneğimizde ilk başlık için şu şekilde bir kural yazılmıştır:<br />

h1 {color: green; text-align: center}<br />

İlk önce kuralın uygulanacağı eleman olarak h1 verilmiştir. Satırın başındaki bu<br />

h1 ifadesi, küme parantezi içindeki kuralların web sayfası içindeki h1 elemanlarına<br />

uygulanacağını gösterir. Sonra h1 elemanının uyması gereken iki tane kural küme<br />

paramtezi içinde yazılmıştır. Bunlardak ilk kural h1 elemanının rengini yeşil yapmak<br />

içindir. Bu kuraldaki color ifadesi özellik adıdır ve renk demektir. Bu özelliğin değeri<br />

green (yeşil) olarak verilmiştir. Yani h1 elemanının tarayıcı içindeki rengi yeşil olarak<br />

ayarlanmıştır. İkinci kural ise h1 elemanının yatay düzlemde sayfanın ortasında<br />

gözükmesini sağlamak için yazılmıştır. Bu kuralın özelliğinin adı text-align’dır. Bu<br />

ifade metnin pazisyonu manasınadır ve değeri center, yani ortada olarak verilmiştir.<br />

Dolayısıyla h1 elemanı tarayıcı içinde yatay düzlemde ortada görünecektir.<br />

h3 {color: brown}<br />

p {color: blue}<br />

Diğer iki stil kuralı ise h3 ve p elemanlarının metin rengini ayarlamaktadır. h3<br />

elemanının rengi kahverengiye, p elemanlarının metin rengi ise maviye ayarlanmıştır.<br />

Tekrar eden Elemanlar<br />

Bu HTML belgesinde bir tane h1 ve bir tane de h3 elemanı vardır. Fakat p<br />

paragraf elemanından iki tane mevcuttur. Görüldüğü gibi paragraf elemanı için yazılan<br />

stil kuralı her iki paragrafa da uygulanmıştır. Her iki paragrafın da rengi mavi olarak<br />

gözükmektedir. Dolayısıyla stil içinde yazılan kurallar bir sayfadaki bütün aynı tip<br />

elemanlara uygulanmaktadır. Örneğin bu sayfada 10 farklı paragraf olsaydı, bu paragraf<br />

kuralı bu 10 paragrafın hepsine de uygulanacaktı. Benzer şekilde eğer bu sayfada 3 adet<br />

h3 elemanı olsaydı, h3 için yazılan kural bu sayfadaki bütün h3 elemanlarına<br />

uygulanacaktı.<br />

Mantıksal ve Fiziksel Düzenleme<br />

Bu örnekte de görüldüğü gibi HTML kodları bir belgedeki elemanları mantıksal<br />

olarak tanımlar. Yani hangi bölümlerin başlık, hangi bölümlerin paragraf olacağını<br />

belirler. CSS stil kuralları ise tanımlanmış olan bu HTML elemanlarının görünmesi<br />

gereken şekli belirler. HTML dili elemanların görünümü için bazı imkânlar sunmaktadır.<br />

103


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Fakat bunlar birçok durumda yeterli olmamaktadır. Onun için daha detaylı görünüm<br />

ayarlaması yapabilmek için CSS stil sayfaları kullanmak gerekmektedir.<br />

CSS Stil kuralı Kullanmanın Bir Avantajı<br />

CSS stil kuralları kullanmanın bir avantajı, bu kuralların sadece bir defa sayfa<br />

başında yazılmasıdır. Örneğin bir sayfadaki bütün paragrafların özellikleri bir stil kuralı<br />

ile belirlenebilir. Daha sonra HTML belgesi içinde ayrıca her paragraf için bu kuralları<br />

tekrar etmeye gerek yoktur. Böylece sayfa düzenlemesi yapmak çok daha kolay olur.<br />

Diğer yandan sayfamızdaki paragrafların bir özelliğini değiştirmek istersek, bu durumda<br />

sadece sayfa başında yazılmış tek bir CSS stil kuralını değiştirmek yeterli olur. Eğer her<br />

paragrafta bu özellikler ayrı ayrı yazılsaydı, bu durumda bütün paragrafların bir özelliğini<br />

değiştirmek çok daha zahmetli ve hataya açık olurdu.<br />

Örnek Uygulama<br />

İçinde en az üç tane başlık ve üç tane paragraf bulunan bir sayfa tasarlayınız? Bu<br />

sayfanın başlıklarının reklerini ve pozisyonlarını CSS stil kuralları yazarak ayarlayınız?<br />

Benzer şekilde paragraf metinlerinin renklerini ve pozisyonlarını da CSS stil kuralı<br />

yazarak belirleyiniz?<br />

6.5 CSS ile Arka Plan Rengi Ayarlama<br />

CSS ile bir web sayfasının tamamının arka plan rengi ayarlanabileceği gibi, her<br />

bir elemanın arka plan rengi de ayarlanabilir [4]. Şimdi bu işlemin nasıl yapıldığını<br />

gösteren bir sayfa görelim. Bu amaçla yazılmış bir HTML belgesi Tablo 6-2’de<br />

verilmiştir.<br />

<br />

İlk CSS Kullanım Örneği<br />

<br />

<br />

body {background-image: url("images2/arkaplan.gif")}<br />

h1 {background-color: #C0C0C0; color: #800000; text-align: center}<br />

h3 {background-color: yellow; color: brown}<br />

p {background-color: white; color: blue}<br />

<br />

<br />

<br />

Bilgisayar <br />

Bilgisayar hem veri işleyen yani hesaplamalar yapan, hem de veri<br />

depolayan bir makinadir. Modern anlamda ilk geliştirilen bilgisayar<br />

1946 yılında yapımı tamamlanan ENIAC'tır. <br />

Merkezi İşlem Birimi (CPU)<br />

Merkezi İşlem Birimi yani CPU (Central Processing Unit) bir<br />

bilgisayarın beynidir. Mantıksal ve Aritmetik bütün işlemler burada<br />

yapılır.<br />

<br />

104


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

<br />

Tablo 6-2 CSS ile arka plan rengi ayarlama örneği<br />

Bu HTML belgesi tarayıcı içinde Şekil 6-2’deki gibi gözükür.<br />

Şekil 6-2 CSS ile arka plan rengi ayarlama örneği<br />

Web tarayıcı görüntüsünde olduğu gibi, bu örnekte önce bütün belgenin arka planı<br />

bir görüntü olarak ayarlanmıştır. Sonra her bir HTML elemanının arka plan rengi ayrı<br />

ayrı ayarlanmıştır.<br />

İlk HTML belgesindeki CSS kurallarına bu örnekte birkaç ekleme yapılmıştır. Bu<br />

belgenin CSS kuralları şu şekildedir:<br />

<br />

body {background-image: url("images2/arkaplan.gif")}<br />

h1 {background-color: #C0C0C0; color: #800000; text-align: center}<br />

h3 {background-color: yellow; color: brown}<br />

p {background-color: white; color: blue}<br />

<br />

Öncelikle bütün sayfanın arka plan rengini ayarlamak için HTML belgesinin body<br />

elemanı kullanılır.<br />

Arka Plan özellikleri: background-color ve background-image<br />

105


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Bu örnekte h1, h3 ve p elemanlarının arka plan rengi background-color<br />

özellikleri kullanılarak belirlenmiştir. Body elemanının arka planı ise background-image<br />

özelliği kullanılarak belirlenmiştir. background-color özelliği arka plan rengini bir renk<br />

olarak ayarlamak için kullanılır. Background-image özelliği ise arka plana bir görüntü<br />

yerleştirmek için kullanılır. Arka plan görüntüsünün adı verilirken, görüntü adı yukarda<br />

olduğu gibi url anahtar kelimesiyle birlikte parantez ve tırnak içinde verilir.<br />

CSS’te Renkler<br />

Bu örnekte h3 ve p elemanlarının arka plan rengi renk isimleri verilerek<br />

ayarlanmıştır. CSS’te de HTML’de kullanılan 16 farklı renk isimleri kullanılabilir. Bu<br />

renk isimleri şunlardır:<br />

Black, Green, Silver, Lime, Gray, Olive, White, Yellow,<br />

Maroon, Navy, Red, Blue, Purple, Teal, Fuchsia, Aqua.<br />

Bu örnekte ayrıca h1 elemanının arka planı ve metin rengi 24 bitlik sayısal RGB<br />

gösterim formatı kullanılarak ayarlanmıştır. CSS ayrıca renklerin bu şekilde<br />

tanımlanmasını da destekler. Bu gösterim şekli HTML’de olduğunun aynısıdır. Bu<br />

konuda daha geniş bilgi Görüntülerin anlatıldığı 3. bölümde mevcuttur.<br />

Örnek Uygulama<br />

En az üç farklı başlığın ve üç paragrafın olduğu bir HTML sayfası oluşturunuz?<br />

Bu sayfanın arka plan rengini ayrı, başlıkların arka plan rengini ayrı ve paragrafların arka<br />

plan rengini ayrı bir renge ayarlayınız?<br />

6.6 CSS ile Metin Fontu Ayarlama<br />

CSS ile HTML belgesindeki fontların birçok özelliği ayarlanabilir [5]. Bunlardan<br />

en önemlileri fontların büyüklüğü, fontun çeşidi, eğik veya koyu olması gibi özelliklerdir.<br />

Şimdi bununla ilgili bir örnek sayfa görelim. Bu amaçla tasarlanmış bir sayfa Tablo<br />

6-3’de verilmiştir.<br />

<br />

CSS Kullanım Örneği<br />

<br />

<br />

h1 {color: #800000;<br />

font-size: 20pt;<br />

font-family: arial;<br />

font-style: italic;<br />

font-weight: bold;<br />

text-align: center;<br />

}<br />

106


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

h3 {color: brown;<br />

font-size: 16pt;<br />

font-family: sans-serif;<br />

font-style: normal;<br />

font-weight: 400;<br />

margin-left: 0.5cm;<br />

}<br />

/* Butun paragraflar bu ozellige sahip olacak*/<br />

p {color: blue;<br />

font-size: 120%;<br />

font-family: times, courier;<br />

text-indent: 1cm;<br />

margin-left: 0.5cm;<br />

}<br />

<br />

<br />

<br />

Bilgisayar <br />

Bilgisayar hem veri işleyen yani hesaplamalar yapan,<br />

hem de veri depolayan bir makinadir. Modern anlamda ilk<br />

geliştirilen bilgisayar 1946 yılında yapımı tamamlanan<br />

ENIAC'tır. <br />

Merkezi İşlem Birimi (CPU)<br />

Merkezi İşlem Birimi yani CPU (Central Processing<br />

Unit) bir bilgisayarın beynidir. Mantıksal ve Aritmetik<br />

bütün işlemler burada yapılır.<br />

<br />

<br />

Tablo 6-3 CSS ile metin fontu ayarlama örneği<br />

Bu HTML belgesi tarayıcı içinde Şekil 6-3’deki gibi gözükür.<br />

Şekil 6-3 CSS ile metin fontu ayarlama örneği<br />

107


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

CSS Stil Sayfalarında Boşluklar<br />

Bu HTML belgesinde ilk dikkati çeken özellik, CSS stil kurallarının birden çok<br />

satıra yayılmış olmasıdır. Daha önceki örneklerde bütün bir CSS kuralı tek bir satıra<br />

yazılmıştı. Bu durumda ise bir CSS kuralı içindeki her bir özellik ayrı bir satıra<br />

yazılmıştır. CSS kuralları yazılırken boşluklar ve boş satırlar ihmal edilir. Dolayısıyla<br />

kuralların bu şekilde çok satıra yazılmasında bir sakınca yoktur.<br />

CSS Stil Sayfalarına Açıklama Eklemek<br />

CSS stil sayfalarına açıklamalar eklenebilir. Açıklamanın başlangıcını taksim ve<br />

yıldız, yani /* karakter çifti gösterir. Açıklamanın bitimini ise yıldız ve taksim yani */<br />

karakter çifti gösterir. Bu örnek belgede paragraf için yazılan stil kuralından hemen önce<br />

bir açıklama eklenmiştir. Açıklamalar programlama dillerinde olduğu gibi tarayıcı<br />

tarafından ihmal edilirler. Açıklamalar tarayıcı için değil bu kodu okuyacak insanları için<br />

yazılırlar. Kodun anlaşılmasını kolaylaştırmayı hedeflerler.<br />

Font boyu: font-size<br />

CSS stil sayfalarında bir fontun boyunun ayarlanması için font-size anahtar<br />

kelimesi kullanılır. Yukarıdaki örnekte h1 elemanının boyu 20 punto, h3 elemanının boyu<br />

ise 16 punto olarak ayarlanmıştır. Paragraflardaki metinlerin boyu ise göreli olarak yüzde<br />

120 olarak verilmiştir. Yani bu fontun büyüklüğü tarayıcının varsayılan font boyundan<br />

biraz daha büyük olacaktır. Görüldüğü gibi font boyu çeşitli sekilerde verilebilir. Bu iki<br />

örneğe ek olarak cm veya in (inch) ölçu birimleri de font boyunu belirtmek için<br />

kullanılabilir.<br />

Bunlara ek olarak ayrıca font boyunu belirtmek için şu anahtar kelimeler de<br />

vardır: xx-small, x-small, small, medium, large, x-large, xx-large. Yüzde ile veya<br />

bu anahtar kelimelerle yapılan göreli boy ayarlaması daha esnektir. Farklı ortamlarda<br />

daha iyi sonuçlar vermesi ihtimali yüksektir.<br />

Font çeşidi: font-family<br />

Fontların çeşidi ise font-family anahtar kelimesiyle ayarlanır. Bu belgede h1<br />

başlığının çeşidi arial, h3 baslığının çeşidi sans-serif ve paragraf metinlerinin çeşidi<br />

ise times olarak ayarlanmıştır. Paragraf font çeşidi olarak iki değer verilmiştir. Bu<br />

durumda tarayıcı verilen ilk font çeşidini destekliyorsa onu kullanır. Eğer ilk font çeşidi<br />

desteklenmiyorsa, ikinci verilen font çeşidi kullanılır.<br />

Font stili: font-style<br />

108


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Fontların ne kadar dik veya yatık olacaklarını font-style özellikleri gösterir. Bu<br />

özelliğin alabileceği değerler: italic, normal ve oblique kelimeleridir. Bu özelliğin<br />

değeri normal olursa, font normal halinde olur. Eğer italic veya oblique olursa, bu<br />

durumda fontlar sağa doğru biraz yatırılır.<br />

Font Ağırlığı: font-weight<br />

Fontların ağırlığını yani ne kadar koyu veya açık olacaklarını font-weight<br />

özellikleri gösterir. Bu özellik 100, 200, 300, 400, 500, 600, 700, 800 ve 900 değerlerini<br />

alabilir. 100 değeri fontun en ince halini gösterir. 900 değeri ise fontun en kalın halini<br />

gösterir. 400 değeri normal kullanılan font ağırlığına karşılık gelir. Örneğin bu HTML<br />

belgesindeki h3 elemanının font ağırlığı 400 olarak verilmiştir. Font ağırlığı ayrıca<br />

normal, bold, lighter, bolder gibi kelime değerleri de alabilir.<br />

Solda veya Sağda Boşluk: margin-left ve margin-right<br />

Bir HTML elemanının tarayıcının sol veya sağ tarafına tamamen bitişik olmasını<br />

istemez isek, bu durumda bu eleman ile tarayıcının sol veya sağ tarafı arasında<br />

bırakılması gereken mesafeyi ayarlayabiliriz. Sol taraftaki bırakılması gereken boşluk<br />

mesafesini magrin-left özelliği ile ayarlarız. Bu örnekte h3 elemanı ve paragraflar için<br />

magrin-left özelliği 0.5cm olarak verilmiştir. Tarayıcı penceresinde görüldüğü gibi bu<br />

elemanlar tarayıcının en solu yerine biraz daha içerden başlamıştır. Sağ taraftaki<br />

bırakılması gereken boşluk mesafesini ise magrin-right özelliği ile ayarlarız. Bu<br />

örnekte margin-right özelliği kullanılmamıştır. Fakat benzer şekilde o da tarayıcının<br />

sağında boşluk bırakmak için kullanılabilirdi.<br />

Paragrafın ilk satırı başında boşluk: text-indent<br />

Birden çok satırdan oluşan elemanlarda ilk satırın başlangıcının biraz içerde<br />

olması istenebilir. İlk satırın başında olması gereken boşluk miktarını text-indent<br />

özelliği belirler. Bu örnekte paragrafın text-indent özelliği kullanılmıştır ve boşluk<br />

miktarı 1cm olarak verilmiştir. Tarayıcı penceresinde görüldüğü gibi paragrafların ilk<br />

satırları diğer satırlara göre daha içerden başlamıştır.<br />

Örnek Uygulama<br />

Bu bölümde HTML belgesi içindeki metinlerin birçok özelliğinin CSS kuralları<br />

ile nasıl belirleneceğini gördük. Her bir kuralın alabileceği farklı değerler bu bölümde<br />

açıklanmıştır. Fakat uygulama olarak bu değerlerden sadece bir kısmı gösterilebilmiştir.<br />

Hazırlayacağınız bir sayfa içinde bulunan başlıklar ve paragraflar için bu bölümde<br />

gösterilen font özelliklerini değişik değerlere atayarak sayfa içindeki fontların nasıl<br />

değiştiklerini gözlemleyiniz? Her bir özelliğin metin üzerinde nasıl bir fark<br />

oluşturduğunu anlamaya çalışınız?<br />

109


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

6.7 HTML Elemanları id özniteliği<br />

Bütün HTML elemanlarının id isimli bir özniteliği vardır. Bu öznitelik ile bir<br />

HTML elemanına bir isim verilir. Daha sonra isim vermiş olduğumuz bu HTML elemanı<br />

için CSS stil kuralı yazabiliriz. Şu ana kadar yazmış olduğumuz stil kuralları aynı tip olan<br />

bütün HTML elemanları için geçerli idi. Örneğin h3 için yazılan bir stil kuralı o belge<br />

içindeki bütün h3 elemanları için geçerli idi. Bu bölümde ise her bir HTML elemanına bir<br />

isim vererek tek bir elemana özel stil kuralı yazmayı göreceğiz.<br />

Şimdi id özniteliğinin nasıl kullanıldığını gösteren bir örnek HTML belgesi<br />

görelim. Bu amaçla yazılmış bir sayfa kodu Tablo 6-4’de verilmiştir.<br />

<br />

CSS Kullanım Örneği<br />

<br />

<br />

/* butun paragraflarin ozellikleri*/<br />

p {font-size: 110%;<br />

font-family: times, courier;<br />

text-indent: 1cm;<br />

text-align: justify;<br />

}<br />

/* ikinci paragrafin ozellikleri*/<br />

#p2 {color: maroon;<br />

font-family: arial, courier;<br />

margin-left: 2cm;<br />

margin-right: 2cm;<br />

}<br />

<br />

<br />

<br />

Bilgisayar <br />

Bilgisayar hem veri işleyen yani hesaplamalar yapan, hem<br />

de veri depolayan bir makinadir. Modern anlamda ilk<br />

geliştirilen bilgisayar 1946 yılında yapımı tamamlanan<br />

ENIAC'tır. <br />

Merkezi İşlem Birimi yani CPU (Central<br />

Processing Unit) bir bilgisayarın beynidir. Mantıksal ve<br />

Aritmetik bütün işlemler burada yapılır.<br />

Bellek işlemcinin işlem yapacağı bilgilerin ve<br />

komutların tutulduğu bir hafıza birimidir. İşlemci ile<br />

bellek arasında yüksek hızlı bir veri yolu vardır.<br />

<br />

<br />

Tablo 6-4 HTML elemanları id özniteliği kullanımı örneği<br />

Bu HTML belgesi tarayıcı içinde Şekil 6-4’deki gibi gözükür.<br />

110


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Şekil 6-4 HTML elemanları id özniteliği kullanımı örneği<br />

Bu HTML belgesinin gövde kısmına baktığımızda, ikinci paragraf için id<br />

özniteliğinin tanımlandığını görürüz. İkinci paragraf için id özniteliği şu şekilde<br />

tanımlanmıştır:<br />

<br />

Artık ikinci paragrafın kendine özgü bir ismi vardır. Benzer şekilde diğer iki<br />

paragraf içinde bir id özniteliği tanımlanabilirdi. Fakat bu örnekte buna gerek olmadığı<br />

için sadece ikinci paragraf için tanımlanmıştır. Genel olarak bir HTML belgesindeki<br />

bütün elemanların: başlıkların, paragrafların, listelerin, tabloların, görüntülerin,<br />

bağlantıların, yani her türlü elemanın id özniteliği olabilir. Bir HTML elemanına id<br />

özniteliği kullanılarak bir isim verdikten sonra, bu elemana direk olarak ismiyle<br />

erişmemiz ve sadece ona özgü stil kuralları yazmamız mümkündür.<br />

Bu sayfanın stil kısmında iki tane stil kuralı yazılmıştır. İlk yazılan stil kuralı bu<br />

belgedeki bütün paragraflar içindir. İkinci stil kuralı ise özel ismi p2 olan ikinci paragraf<br />

içindir. İkinci paragrafın kendisi de bir paragraf olduğu için, p için yazılan stil kuralı bu<br />

paragrafa da uygulanır. Bu durumda ikinci paragrafa hem p için yazılan kurallar, hem de<br />

kendisi için yani p2 için yazılan kurallar uygulanır. İkinci paragrafın kendisi için yazılan<br />

kurallar bu paragrafın solunda ve sağında ikişer cm miktarında boşluk bırakılmasını<br />

gerektiriyor. Buna ek olarak font rengini maron olarak ayarlıyor. Dolayısıyla bu paragraf<br />

tarayıcı resminde de görüldüğü gibi daha içerde ve farklı renkte gözükmektedir.<br />

Yalnız dikkat edilirse font-family özelliğinin hem p için hem de p2 için<br />

tanımlandığını görürüz. Bu durumda ikinci paragrafın font ailesi ne olacaktır? Bu<br />

durumda p2 için yazılan kural p için yazılan kuraldan daha baskındır. Çünkü p2 için<br />

111


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

yazılan kural daha özeldir. Genel bir kural olarak, özel olan kurallar daha genel olan<br />

kurallara göre baskın olur. Dolayısıyla bu durumda ikinci paragrafın font ailesi p2 ile<br />

tanımlanan değer olur.<br />

Metin Hizalama: text-align<br />

HTML metin elemanlarının sayfanın yatay düzlemde neresinde bulunacağı<br />

CSS’te text-align özelliği ile belirlenir. Bu HTML belgesinde p için yazılan kuralda<br />

text-align özelliği kullanılmıştır. Bu özelliğin alabileceği değerler: left, right,<br />

center ve justify değerleridir. İsimlerinden anlaşılacağı gibi, left ve right değerleri<br />

metin elemanlarını sola veya sağa yanaşık yapar. Metin elemanlarını ortalamak için<br />

center kullanılır. Dağıtık hizalama için ise justify kullanılır.<br />

Örnek Uygulama<br />

Paragraflardan ve başlıklardan oluşan bir HTML belgesi hazırlayınız? Bu<br />

başlıklardan ve paragraflardan birer tanesinin id özniteliği değerini atayarak onlara özel<br />

ad veriniz? Daha sonra bu özel isimlendirdiğiniz elemanlar için CSS stil kuralı yazınız?<br />

Bu elemanların diğer elemanlardan farkını gözlemleyiniz?<br />

6.8 HTML elemanları class özniteliği<br />

HTML elemanlarının bir diğer önemli özniteliği ise class özniteliğidir. Bu<br />

öznitelik birçok HTML elemanının aynı isim altında gruplanmasını sağlar. Aynı sınıf<br />

ismi altında gruplanan bütün HTML elemanlarına bu sınıf ismiyle tanımlanan CSS<br />

kuralları uygulanabilir. Bir önceki bölümde gösterilen id özniteliği her bir elemanın<br />

kendine özgü bir isminin olmasına imkân tanıyordu. Böylece her bir elemanın ismi<br />

kullanılarak o elemana özgü stil kuralları yazılabiliyordu. Sınıf, yani class özniteliği ise<br />

bir HTML elemanı yerine, bir grup HTML elemanına aynı isimle stil kuralı yazmamıza<br />

imkân tanır. Örneğin bir HTML belgesinde yazacağımız bir stil kuralının bütün<br />

paragraflar veya tek bir paragraf yerine bazı paragraflara uygulanmasını isteyebiliriz. Bu<br />

durumda bu kuralın uygulanmasını istediğimiz paragrafları aynı sınıfa dâhil edip bu sınıf<br />

için bir stil kuralı yazarız. Böylece bu stil kuralı bu sınıfa dâhil olan bütün paragraflara<br />

uygulanır.<br />

Şimdi class özniteliği kullanımı ile ilgili bir örnek HTML belgesi görelim. Bu<br />

amaçla yazılmış bir sayfa Tablo 6-5’de verilmiştir.<br />

<br />

CSS Kullanım Örneği<br />

<br />

<br />

/* butun paragraflarin ozellikleri*/<br />

p {font-size: 110%;<br />

112


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

font-family: times, courier;<br />

}<br />

/* ikinci paragrafin ozellikleri*/<br />

#p2 {margin-left: 2cm;<br />

margin-right: 2cm;<br />

}<br />

/* kelimeleri arasinda cok bosluk olacak*/<br />

.aralıklı {text-indent: 1cm;<br />

word-spacing: 0.5cm;<br />

text-align: justify;<br />

}<br />

<br />

<br />

<br />

Bilgisayar <br />

Bilgisayar hem veri işleyen yani hesaplamalar yapan, hem<br />

de veri depolayan bir makinadir. Modern anlamda ilk<br />

geliştirilen bilgisayar 1946 yılında yapımı tamamlanan<br />

ENIAC'tır. <br />

Merkezi İşlem Birimi yani CPU<br />

(Central Processing Unit) bir bilgisayarın beynidir.<br />

Mantıksal ve Aritmetik bütün işlemler burada yapılır.<br />

Bellek işlemcinin işlem yapacağı bilgilerin ve komutların<br />

tutulduğu bir hafıza birimidir. İşlemci ile bellek arasında<br />

yüksek hızlı bir veri yolu vardır.<br />

Hard disk ise bilgisayarda sürekli olarak<br />

depolanacak bilgileri kaydetmek için kullanılır. Hard<br />

diskteki bilgiler bilgisayar kapatıldıktan sonra da muhafaza<br />

edilir.<br />

<br />

<br />

Tablo 6-5 HTML elemanları class özniteliği kullanimi örneği<br />

Bu HTML belgesi tarayıcı içinde Şekil 6-5’deki gibi gözükür.<br />

113


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Şekil 6-5 HTML elemanları class özniteliği kullanimi örneği<br />

Bu HTML belgesinde üç farklı CSS kuralı tanımlanmıştır. İlk kural bütün<br />

paragraflara uygulanmak için tanımlanmıştır. İkinci kural sadece p2 paragrafına<br />

uygulanmak için tanımlanmıştır. Üçüncü kural ise aralıklı sınıfına dâhil olan bütün<br />

HTML elemanlarına uygulanmak için tanımlanmıştır. Bu belgede class özniteliği<br />

tanımlanmış olan ve bu öznitelik değeri aralıklı olan iki tane paragraf vardır. Bu<br />

paragraflar ikinci ve dördüncü paragraflardır. Dolayısıyla bu belgede aralıklı sınıfına<br />

ait olan paragraflar ikinci ve dördüncü paragraflardır.<br />

Bütün paragraflara uygulanmak için tanımlanmış olan kural sadece p diye<br />

başlamıştır. Diğer yandan sadece ikinci paragraf için, yani özel ismi p2 olan paragraf için<br />

yazılan kural #p2 diye başlamıştır. p2 değerinin başına konulan # karakteri bu kuralın<br />

sadece özel ismi yani id değeri p2 olan eleman için yazıldığını gösterir. Diğer yandan<br />

aralıklı sınıfı için yazılan kural .aralıklı diye başlamıştır. Buradaki nokta ise bu<br />

kuralın bir sınıf için yazıldığını gösterir. Dolayısıyla özel isimler için yazılan CSS<br />

kuralları # karakteri ile başlarken, sınıflar için yazılan CSS kuralları . karakteri ile<br />

başlamaktadır.<br />

Üç farklı CSS stil kuralı yazma şeklini şöyle özetleyebiliriz:<br />

p {...} Bu stil kuralı bu HTML belgesindeki bütün<br />

paragraflara uygulanacaktır.<br />

#p2 {...} Bu stil kuralı sadece id numarası p2 olan HTML<br />

114


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

elemanına uygulanacaktır.<br />

.aralıklı {...} Bu stil kuralı sadece class özniteliği değeri<br />

aralıklı olan, yani aralıklı sınıfına dahil olan<br />

HTML elemanlarına uygulanacaktır.<br />

Bu belgede aralıklı sınıfı için yazılan kural, bu sınıfa ait paragrafların ilk<br />

satırlarının içerden başlamasını, metin hizalamasının dağıtık olmasını ve bu<br />

paragraflardaki kelimeler arasında 0.5cm boşluk olmasını gerektiriyor. Dolayısıyla bu<br />

örnekte aralıklı sınıfına ait olan ikinci ve son paragrafın bu şekilde gösterildiği tarayıcı<br />

görüntüsünden gözükmektedir.<br />

Önce ikinci paragrafın başlangıç iminin nasıl tanımlandığını görelim:<br />

<br />

Görüldüğü gibi bu paragrafın hem id özniteliği hem de class özniteliği<br />

tanımlanmıştır. Dolayısıyla bu paragrafa bu örnekteki üç çeşit stil kuralı da<br />

uygulanmaktadır. Bu eleman bir paragraf olduğu için, p için yazılan stil kuralı uygulanır.<br />

Sonra bu elemanın id değeri p2 olduğu için, p2 için yazılan stil kuralı da uygulanır. En<br />

son olarak bu paragrafın class özniteliği değeri aralıklı olduğu için, aralıklı sınıfı<br />

için yazılan kural da uygulanır.<br />

Son paragrafın ise id özniteliği tanımlanmamış olup sadece class özniteliği<br />

vardır:<br />

<br />

Bu durumda bu paragrafa p ve aralıklı için yazılan iki çeşit stil kuralı<br />

uygulanır. Diğer iki paragrafa ise sadece p için yazılan stil kuralı uygulanır.<br />

Kelimeler arası boşluk miktarı ayarlama: word-spacing<br />

Bir metindeki kelimeler arasındaki boşluk miktarını ayarlamak için wordspacing<br />

özelliği kullanılır. Bu boşluk miktarı birimi cm, in (inch), px (pixel), pc (pica),<br />

em (em ölçu birimi) ve ex (x-yüksekliği) olarak verilebilir. Bu örnekte kelimeler<br />

arasındaki boşluk miktarı 0,5 cm olarak verilmiştir. Yani büyüklük ölçü birimi olarak cm<br />

kullanılmıştır. Dolayısıyla bütün kelimeler arasında 0.5 cm boşluk bırakılmıştır.<br />

Örnek Uygulama<br />

Oluşturacağınız bir HTML belgesinde 4 tane paragraf ve 4 tane de başlık<br />

bulunsun. Bu başlıklardan iki tanesini aynı sınıfa dahil ediniz ve bu elemanlar için bir<br />

115


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

CSS stil kuralı yazınız? Benzer şekilde oluşturmuş olduğunuz paragraflardan iki tanesini<br />

bir sınıfa dahil ediniz ve bunlar için de bir CSS stil kuralı yazınız? Yazmış olduğunuz stil<br />

kuralında word-spacing özelliğini kullanınız? Bu özelliğin ölçü birimi olarak yukarda<br />

anlatılan farklı ölçü birimlerini (cm, in, px, pc, em, ex) kullanınız? Bu ölçü birimlerinin<br />

sonuç üzerinde nasıl bir etki yaptığını gözlemleyiniz?<br />

6.9 HTML imi<br />

HTML span elemanı [6] HTML belgesi içindeki her hangi bir bölgeyi bir HTML<br />

elemanı olarak tanımlamamıza imkân verir. Bu şekilde tanımlanmış bir span elemanının<br />

fiziksel bir görünüm değeri yoktur. Bu eleman sadece mantıksal bir tanımlama yapar. Bu<br />

mantıksal tanımlama yapıldıktan sonra fiziksel görünüm tanımlaması stil kuralları<br />

kullanılarak yapılır.<br />

Örneğin bir paragraf içindeki bir metin parçasını ayrı bir HTML elemanı olarak<br />

tanımlayıp, bu HTML elemanına bazı stil kuralları uygulamak isteyelim. Bu durumda<br />

imini kullanarak bu metin parçasını içinde bulunduğu paragraftan bağımsız bir<br />

HTML elemanı olarak tanımlayabiliriz. Böylece tanımlanmış olan bu elemana<br />

istediğimiz stil kurallarını uygulanabiliriz.<br />

Şimdi span iminin örnek kullanımını gösteren bir örnek bir sayfa görelim. Bu<br />

amaçla yazılmış bir HTML belgesi Tablo 6-6’de verilmiştir.<br />

<br />

CSS Kullanim Örneği<br />

<br />

<br />

.altbaşlık {font-weight: bold;<br />

font-size: large;<br />

font-family: arial, courier;<br />

}<br />

<br />

<br />

<br />

Bilgisayar <br />

Bilgisayar hem veri işleyen yani hesaplamalar yapan,<br />

hem de veri depolayan bir makinadir. Modern anlamda ilk<br />

geliştirilen bilgisayar 1946 yılında yapımı tamamlanan<br />

ENIAC'tır. <br />

CPU: Merkezi İşlem<br />

Birimi yani CPU (Central Processing Unit) bir<br />

bilgisayarın beynidir. Mantıksal ve Aritmetik bütün<br />

işlemler burada yapılır.<br />

Bellek: Bellek<br />

işlemcinin işlem yapacağı bilgilerin ve komutların<br />

tutulduğu bir hafıza birimidir. İşlemci ile bellek<br />

arasında yüksek hızlı bir veri yolu vardır.<br />

Hard Disk: Hard<br />

disk ise bilgisayarda sürekli olarak depolanacak<br />

116


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

bilgileri kaydetmek için kullanılır. Hard diskteki<br />

bilgiler bilgisayar kapatıldıktan sonra da muhafaza<br />

edilir.<br />

<br />

<br />

Tablo 6-6 HTML belgesi içinde span imi kullanımı örneği<br />

Bu HTML belgesi tarayıcı içinde Şekil 6-6’deki gibi gözükür.<br />

Şekil 6-6 HTML belgesi içinde span imi kullanımı örneği<br />

Bu HTML belgesinde 3 tane elemanı tanımlanmıştır. Her span elemanı<br />

bir paragrafın baş kısmındaki bir metin için oluşturulmuştur. Şimdi bunlardan ikinci<br />

paragrafın başında bulunan span elemanının nasıl tanımlandığını görelim:<br />

CPU: Merkezi ...<br />

Bu paragraftaki “CPU:”alt metninin paragrafın diğer kısmından biraz farklı<br />

görünmesini istiyoruz. Yani bu metnin paragraf için bir alt başlık olmasını istiyoruz.<br />

Bunun için metin fontunun biraz büyük ve koyu olmasını istiyoruz. Benzer şekilde diğer<br />

iki paragraf başındaki alt başlık metinlerinin de farklı görünmelerini istiyoruz. Bu alt<br />

metinlerin farklı gözükebilmeleri için, font özelliklerini farklı ayarlamamız gerekiyor.<br />

Font özelliklerini farklı ayarlayabilmemiz için ise öncelikle bu alt metinlerin<br />

paragrafların diğer kısımlarından bağımsız birer HTML elemanı olarak tanımlanmaları<br />

gerekiyor. İşte span imi ile bu alt metinleri farklı birer HTML elemanları olarak<br />

tanımlıyoruz. Farklı birer HTML elemanı olarak tanımladığımız bu 3 elemanın class<br />

özniteliklerini kullanarak hepsini aynı sınıfa dahil ediyoruz. Hepsinin class özniteliği<br />

değeri de altbaşlık olarak verilmiştir. Böylelikle CSS stil kuralını artık altbaşlık<br />

117


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

sınıfı için yazabiliyoruz. CSS stil kuralı altbaşlık sınıfına ait olan HTML elemanlarının<br />

metinlerinin koyu renkte, diğer metinlere göre biraz daha büyük ve fontunun da arial<br />

olmasını sağlıyor. Böylelikle bu sınıfa ait olan üç HTML elemanı da tarayıcı şekilinde<br />

göründüğü gibi diğer metinlerden daha belirgin olarak gözüküyor.<br />

Örnek Uygulama<br />

İçinde en az üç tane paragraf bulunan bir HTML belgesi oluşturunuz? Bu belge<br />

içinde diğer metinlere ek olarak bazı şehir ve ilçe isimleri de bulunsun. Sonra belge<br />

içindeki şehir isimlerini span imi kullanarak ayrı birer HTML elemanı olarak<br />

tanımlayınız ve hepsini aynı sınıfa dahil ediniz? Benzer şekilde belge içindeki ilçe<br />

isimlerini de span imi kullanarak ayrı birer HTML elemanı olarak tanımlayınız ve bunları<br />

da ayrı bir sınıf olarak gruplayınız? Sonra şehir ve ilçe isimlerinin diğer metinlerden biraz<br />

daha farklı gözükmesi için iki farklı CSS stil kuralı yazınız?<br />

6.10 HTML elemanları style özniteliği ve imi<br />

Şu ana kadar görmüş olduğumuz örneklerde, CSS stil kurallarını HTML<br />

belgelerine, sayfanın head kısımlarında tanımladığımız style imi ile ekledik. CSS stil<br />

kurallarını HTML belgelerine eklemenin ikinci bir yolu ise HTML elemanlarının style<br />

özniteliklerini kullanmaktır. Bütün HTML elemanları için style öznitelikleri<br />

tanımlanabilir. style özniteliği değeri olarak ta stil kuralları yazılabilir. Fakat bu şekilde<br />

yazılan stil kuralları sadece o HTML elemanı için geçerli olur.<br />

Bir önceki bölümde görmüş olduğumuz imine benzeyen bir diğer im de<br />

imidir. imi imi gibi mantıksal bir tanımlama yapar. Tek farkı <br />

imi bir blok elemanıdır ve daha çok birden fazla blok elemanını gruplamak için kullanılır.<br />

Örneğin birden fazla paragrafı bir eleman adı altında toplamak için kullanılabilir. Ayrıca<br />

iminin başladığı noktaya tarayıcı yeni satır ekler. Dolayısıyla imi paragraf<br />

içindeki bir alt metni tanımlamak için kullanılamaz. Bunun için bir öenceki bölümde<br />

gösterilen imi kullanılmalıdır.<br />

Şimdi hem style özniteliğinin kullanıldığı hem de div iminin kullanıldığı bir<br />

örnek sayfa görelim. Bu amaçla yazılmış bir sayfa Tablo 6-7’de verilmiştir.<br />

<br />

CSS Kullanim Örneği<br />

<br />

<br />

.altbaşlık {font-weight: bold;<br />

font-size: large;<br />

font-family: arial, courier;<br />

}<br />

<br />

<br />

118


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

<br />

Bilgisayar <br />

Bilgisayar hem veri işleyen yani hesaplamalar yapan,<br />

hem de veri depolayan bir makinadir. Modern anlamda ilk<br />

geliştirilen bilgisayar 1946 yılında yapımı tamamlanan<br />

ENIAC'tır. <br />

<br />

CPU: Merkezi İşlem<br />

Birimi yani CPU (Central Processing Unit) bir bilgisayarın<br />

beynidir. Mantıksal ve Aritmetik bütün işlemler burada<br />

yapılır.<br />

Bellek: Bellek<br />

işlemcinin işlem yapacağı bilgilerin ve komutların<br />

tutulduğu bir hafıza birimidir. İşlemci ile bellek<br />

arasında yüksek hızlı bir veri yolu vardır.<br />

<br />

Hard disk ise bilgisayarda sürekli olarak depolanacak<br />

bilgileri kaydetmek için kullanılır. Hard diskteki<br />

bilgiler bilgisayar kapatıldıktan sonra da muhafaza<br />

edilir.<br />

<br />

<br />

Tablo 6-7 HTML belgelerinde div imi kullanım örneği<br />

Bu HTML belgesi tarayıcı içinde Şekil 6-7’deki gibi gözükür.<br />

Şekil 6-7 HTML belgelerinde div imi kullanım örneği<br />

Bu örnekte div imi iki paragrafı aynı eleman adı altında gruplamak için<br />

kullanılmıştır. İlk div imi ikinci paragraftan hemen önce, kapanış div imi ise üçüncü<br />

119


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

paragraftan hemen sonraya konulmuştur. Dolayısıyla bu div imi ile oluşturulan HTML<br />

elemanı ikinci ve üçüncü paragrafları kapsamaktadır. Artık bu div elemanına<br />

uygulanacak stil kuralları ikinci ve üçüncü paragrafa uygulanacaktır. Böylece div imi<br />

kullanılarak ikinci ve üçüncü paragraf tek bir HTML elemanı altında toplanmıştır.<br />

Bu belgede div imi kullanılarak oluşturulan yeni elemana uygulanacak stil kurali<br />

div elemanının style özniteliği kullanılarak yazılmıştır. Bu kural şöyle ifade edilmiştir:<br />

<br />

Bu stil kuralı yazım şeklinde dikkatimizi çeken ilk farklı nokta, stil kuralının bir<br />

isimle başlamıyor olmasıdır. Daha nönceki yazdığımız stil kurallarında ilk başta stilin<br />

uygulanacağı HTML elemanının adı geliyordu. Örneğin h1, ya da p gibi. Fakat bu yazım<br />

şeklinde stil kuralının uygulanacağı eleman zaten içinde tanımlı olduğu HTML elemanı<br />

olduğu için bu kısım yazılmamıştır. Direk olarak stil kuralları yazılmıştır.<br />

Görüldüğü gibi style özniteliğiyle tanımlanan stil kuralları div iminin içerdiği iki<br />

paragrafa da uygulanmıştır. Daha önce de belirtildiği gibi, style özniteliği bu şekilde<br />

bütün HTML elemanları için tanımlanabilir. Fakat sayfa düzeni açısından bütün stil<br />

kurallarının bir yerde toplanması daha iyi olabilir. Dolayısıyla daha önce gösterildiği gibi<br />

bütün stil kurallarının sayfanın baş kısmında bulunması daha isabetli olur. Bu şekilde bir<br />

stil kuralı yazım şekli kısmen daha az tercih edilmelidir.<br />

Örnek Uygulama<br />

En az 3 tane başlık ve 3 tane de paragrafı olan bir HTML belgesi oluşturunuz? Bu<br />

belge içindeki bir başlıkla bir paragrafı div imi ile gruplayınız? Sonra bu div iminin<br />

style özniteliğini kullanarak bu elemanlara bir stil kuralı yazınız?<br />

6.11 Harici Stil Sayfaları Kullanarak Bir Sayfaya Stil Eklemek<br />

Daha önceki bölümlerde bir HTML belgesine stil kuralları eklemenin iki farklı<br />

yöntemini gördük. Bunlardan ilk yöntemde, stil kuralları HTML belgesisin head<br />

kısmında tanımlanan style im çifti kullanılarak eklendi. İkinci yöntemde ise stil kuralları<br />

her HTML elemanının style özniteliği kullanılarak eklendi. Bunlardan ikinci yöntem<br />

birincisine göre daha dar anlamlıdır. Yani bir HTML elemanının style özniteliği<br />

kullanılarak yazılan bir stil kuralı sadece o eleman için geçerlidir. Başka elemanlara aynı<br />

stil kuralı uygulanamaz. Ama head kısmında yazılan stil kuralları bu HTML belgesindeki<br />

bütün HTML elemanlarına uygulanabilir.<br />

Stil kuralları eklemenin üçüncü bir yöntemi ise harici stil sayfaları kullanmaktır<br />

[7]. Bu yöntemde ise stil kuralları HTML belgesi dışında ayrı bir dosyada yazılır. Bu<br />

120


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

dosya .css uzantısıyla kaydedilir. Daha sonra HTML belgesi içinden bu dosyaya <br />

imi kullanılarak bağlantı verilir. Yani tarayıcıya kullanması gereken stil sayfası adresi<br />

söylenir. Böylece tarayıcı bu HTML belgesi için kullanacağı css dosyasını bulur. Bu<br />

yöntemle eklenen stil kuralları da belge içindeki bütün HTML elemanlarına<br />

uygulanabilir.<br />

Stil kuralları eklemek için harici stil sayfaları kullanmak çok sayfalı site<br />

tasarımında diğer iki yönteme göre daha avantajlıdır. Çünkü yazacağımız stil kuralları<br />

sadece bir HTML belgesinde değil, istediğimiz bütün HTML belgelerinde kullanılabilir.<br />

Örneğin bir kurumun web sitesinde birçok sayfanın aynı formatta olması istenir. Bu<br />

durumda stil kurallarını harici bir css dosyasına yazıp, bütün sayfalarda aynı stil<br />

kurallarını uygulamak işimizi çok kolaylaştırır. Aksi halde bu kuralları her sayfanın<br />

başına eklememiz gerekir. Bu da yeni stil kuralları yazmamızı ve stil kuralları üzerinde<br />

değişiklik yapmamızı zorlaştırır. Çünkü yeni yazılan bir stil kuralı bütün HTML<br />

belgelerine eklenmelidir. Aynı şekilde yapılmak istenen bir değişiklik bütün HTML<br />

belgelerinde yapılmalıdır. Ama harici tek bir stil dosyası kullanırsak bu durumda sadece<br />

bu dosyaya ekleme yapmak veya sadece bu dosyada değişiklik yapmak yeterli olur.<br />

Şimdi bir önceki örnek sayfanın aynısını harici stil sayfası kullanarak yapalım. Bu<br />

durumda önce bir metin editöründe stil sayfası yazılır. Stil sayfasının içeriği Tablo<br />

6-8’deki gibi olsun. Bu dosyayı par.css ismiyle kaydedediniz? HTML belgelerinin head<br />

kısmında stil kuralı yazarken style imi kullanılıyordu. Fakat bu dosya içinde style im<br />

çiftinin kullanılmadığına dikkat ediniz. Çünkü style im çifti bir HTML imidir. Oysa bu<br />

dosya bir HTML dosyası olmayıp, bir css dosyasıdır.<br />

.altbaslik {<br />

font-weight: bold;<br />

font-size: large;<br />

font-family: arial, courier;<br />

}<br />

.icparagraf {<br />

background-color:aqua;<br />

margin-left:2cm;<br />

margin-right:2cm<br />

}<br />

Tablo 6-8 Harici stil sayfası içeriği<br />

Daha sonra HTML belgesini Tablo 6-9’deki gibi yazarız.<br />

<br />

CSS Kullanim Örneği<br />

<br />

<br />

<br />

Bilgisayar <br />

121


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Bilgisayar hem veri isleyen yani hesaplamalar yapan,<br />

hem de veri depolayan bir makinadir. Modern anlamda ilk<br />

gelistirilen bilgisayar 1946 yilinda yapimi tamamlanan<br />

ENIAC'tir. <br />

<br />

CPU: Merkezi Islem<br />

Birimi yani CPU (Central Processing Unit) bir<br />

bilgisayarin beynidir. Mantiksal ve Aritmetik butun<br />

islemler burada yapilir.<br />

Bellek: Bellek<br />

islemcinin islem yapacagi bilgilerin ve komutlarin<br />

tutuldugu bir hafiza birimidir. Islemci ile bellek<br />

arasinda yuksek hizli bir veri yolu vardir.<br />

<br />

Hard disk ise bilgisayarda surekli olarak<br />

depolanacak bilgileri kaydetmek icin kullanilir. Hard<br />

diskteki bilgiler bilgisayar kapatildiktan sonra da<br />

muhafaza edilir.<br />

<br />

<br />

Tablo 6-9 HTML belgesi içinden harici stil sayfasına bağlantı verme<br />

Bu HTML belgesi içerisinden css dosyasına bağlantı vermek için sayfanın head<br />

kısmında bağlantı imi yani imi kullanılır. Bu örnekte harici stil sayfasına bağlantı<br />

şu şekilde yapılmıştır:<br />

<br />

Bu örnekte par.css dosyası ile HTML belgesinin aynı dizinde olduğu<br />

varsayılıyor. Onun için sadece dosya ismi par.css olarak verilmiştir. Dizin yolu veya<br />

web adresi verilmemiştir. Görüntülerde olduğu gibi harici stil dosyamız da başka bir<br />

dizindeyse veya başka bir web sitesindeyse, dosya ismi ona göre ayarlanmalıdır.<br />

Bu HTML belgesi tarayıcı içinde Şekil 6-7’deki gibi gözükür. Bu sayfanın diğer<br />

sayfadan tek farkı, daha önce div imi içerisinde yazılan stil kuralının da harici stil sayfası<br />

içinde yazılmasıdır.<br />

Örnek Uygulama<br />

Sizde bir önceki bölümün örnek uygulaması için yazmış olduğunuz stil kurallarını<br />

harici bir css sayfası içinde toplayınız? Web sayfanız içinden bu harici css sayfasına<br />

bağlantı vererek bu kuralları sayfanız içinde kullanınız? Oluşturacağınız yeni bir web<br />

sayfasında yine aynı harici stil sayfasındaki kurallardan en az bir tanesini kullanınız?<br />

122


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

6.12 Bir Grup HTML Elemanı İçin Stil kuralı Yazma<br />

Stil kuralları bir grup eleman için de yazılabilir. Bu durumda stil kuralının<br />

uygulanacağı HTML elemanı ismi yazılırken, bir HTML elemanı ismi yerine birden fazla<br />

HTML elemanı ismi yazılır. Bu eleman isimleri virgülle birbirinden ayrılır. Örneğin bir<br />

sayfadaki bütün h1, h2 ve h3 tipi başlıkların font ailesini ve font rengini ayarlayan bir stil<br />

kuralı yazalım. Bu stil kuralı Tablo 6-10’da görüldüğü gibi yazılabilir.<br />

h1, h2, h3 {<br />

color: blue;<br />

font-family: arial, courier;<br />

}<br />

Tablo 6-10 Bir grup HTML elemanı için stil kuralı yazma örneği<br />

Görüldüğü gibi stil kuralının uygulanacağı 3 tane başlık ismi stil kuralından<br />

hemen önce yazılmıştır. Daha sonra küme parantezi ile stil kuralı başlamıştır. Artık bu<br />

kural bu HTML belgesindeki bütün h1, h2 ve h3 elemanlarına uygulanır. Yani bu<br />

sayfadaki bütün h1, h2 ve h3 tipi başlıkların font ailesi ve font rengi aynı olur.<br />

Aynı işlem tabiî ki bu elemanların class özniteliği kullanılarak ta yapılabilirdi.<br />

CSS aynı işlemi yapmanın birçok farklı yöntemini sunar. Web tasarımcısı bu<br />

yöntemlerden birisini seçerek istediği sonuca ulaşır.<br />

6.13 Bir HTML Elemanını Çok Sınıfa Dâhil Etme<br />

Bir HTML elemanı tek bir sınıfa dâhil olmakla kısıtlanmamıştır. Bir HTML<br />

elemanı birden fazla sınıfa dâhil olabilir. Bunun için şu şekilde bir örnek düşünelim.<br />

Önce css kurallarını Tablo 6-11’de olduğu gibi yazalım.<br />

.maviArial {<br />

color: blue;<br />

font-family: arial, courier;<br />

}<br />

.içerde {<br />

margin-left: 1.5cm;<br />

word-spacing: 3px;<br />

}<br />

Tablo 6-11 İki farklı sınıf için stil kuralı<br />

Burada yazılan her iki kural da bir HTML elemanına uygulanabilir. Bu kurallar<br />

bir başlık ve bir paragraf elemanlarına uygulansın. Bu işlem HTML belgesi içerisinde<br />

123


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Tablo 6-12’de olduğu gibi yapılabilir.<br />

... <br />

... <br />

Tablo 6-12 Bir HTML elemanını birden fazla sınıfa dahil etme örneği<br />

Bu durumda h3 ve p elemanlarına iki farklı sınıftan stil kuralı uygulanır. Bu<br />

şekilde HTML elemanları birden fazla sınıfa dâhil olabilirler. Dâhil olabilecekleri sınıf<br />

sayısı konusunda bir sınırlama yoktur.<br />

6.14 Web Sayfası Tasarımı İçin CSS Kullanımı<br />

Bir önceki bölümde HTML tabloları kullanarak bir web sayfasını nasıl alt bölgelere<br />

ayrılabileceğimizi görmüştük. HTML tabloları ile bir web sayfasında başlık bölgesi,<br />

menü bölgesi, içerik bölgesi gibi kısımlar oluşturmuştuk. Alt bölgelere ayırma web<br />

sayfası tasarımının önemli bir aşamasıdır. Bu tasarım web sayfamızın ana yapısını<br />

belirler. Web sayfamızın görselliğinde ve kolay kullanılabilir olmasında önemli bir rol<br />

oynar. Web sayfasını alt bölgelere ayırmanın ikinci bir yöntemi de CSS kullanmaktır [8].<br />

Bu bölümde daha önce tablo kullanarak yaptığımız basit tasarımları CSS kullanarak<br />

yapacağız.<br />

CSS ile web sayfası içinde alt bölgeler tanımlamanın yolu div imini kullanmaktır.<br />

Bu im sayfa içinde fiziksel görüntüsü olmayan bir alt bölge tanımlar. Daha sonra tanımlı<br />

olan bu bölgenin özellikleri CSS kuralları ile ayarlanır. Bu şekilde bir sayfa alt bölgelere<br />

ayrılmış olur. Her alt bölgenin de kendine ait CSS ile tanımlanmış özellikleri vardır. Bu<br />

alt bölgelerin büyüklükleri, sayfa içindeki pozisyonları, arka plan rekleri gibi özellikler<br />

CSS ile belirlenir.<br />

Şimdi 5. bölümün sonunda tablolar kullanılarak oluşturulan sayfa tasarımını div<br />

imi ve CSS kurallarını kullanarak yapalım. Bunun için 4 adet div imi kullanacağız. Bu<br />

sayfa tasarımında 3 adet alt bölge bulunmaktadır: başlık bölgesi, menü bölgesi ve içerik<br />

bölgesi. Her bir bölge için bir div elemanı oluşturacağız. Buna ek olarak bir tane div<br />

elemanı da bu üç div elemanını kendi içinde barındıran ana eleman olacak. Böylece 4<br />

adet div elemanı kullanarak sayfayı üç ana bölgeye ayıracağız.<br />

Sayfayı üç ana bölgeye ayıran HTML ve CSS kodu Tablo 6-13’te verilmiştir.<br />

<br />

CSS İle Sayfayı Alt Bölgelere Ayırma<br />

<br />

<br />

124


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

<br />

#büyükKutu {<br />

width: 500px;<br />

}<br />

#başlıkKutusu {<br />

background: fuchsia;<br />

height: 50px;<br />

text-align: center;<br />

}<br />

#bağlantıKutusu {<br />

background: silver;<br />

height: 30px;<br />

}<br />

#içerikKutusu {<br />

background-image:url('images2/arkaplan.gif');<br />

text-indent: 0.5cm;<br />

text-align: justify;<br />

padding: 10px 15px 15px 20px;<br />

}<br />

<br />

<br />

<br />

<br />

<br />

<br />

Bilgisayar <br />

<br />

<br />

<br />

<br />

İşlemci<br />

Bellek<br />

Ön Bellek<br />

Hard Disk<br />

<br />

<br />

<br />

<br />

Bilgisayar hem veri işleyen yani hesaplamalar yapan,<br />

hem de veri depolayan bir makinadır. Modern anlamda ilk<br />

gelistirilen bilgisayar 1946 yılında yapımı tamamlanan<br />

ENIAC'tır.<br />

Merkezi İşlem Birimi (CPU)<br />

Merkezi İşlem Birimi yani CPU (Central Processing Unit)<br />

bir bilgisayarın beynidir. Mantıksal ve Aritmetik bütün<br />

işlemler burada yapılır.<br />

<br />

<br />

<br />

<br />

<br />

Tablo 6-13 Web sayfasını CSS ile alt bölgelere ayırma örneği<br />

125


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Bu HTML belgesi tarayıcı içinde Şekil 6-8’deki gibi gözükür.<br />

Şekil 6-8 CSS ile alt bölgelere ayrılmış bir sayfa örneği<br />

Bu örnekte her div elemanına bir isim verilmiştir. Bunun amacı her bir div<br />

elemanı için farklı bir CSS kuralı yazmaktır. İlk div elemanı diğer bütün div<br />

elemanlarını kendi içinde barındıran ve ismi büyükKutu olan elemandır. Bu elemanın<br />

başlangıç imi HTML belgesinin gövde kısmının hemen başındadır, bitiş elemanı ise<br />

gövdenin bitişinden hemen öncedir.<br />

İkinci div elemanı başlık kısmı için tanımlanmış olan elemandır. Bu div<br />

elemanının adı başlıkKutusu olarak verilmiştir. Bu elemanın içinde sadece bir başlık<br />

bulunmaktdır. Daha sonra bu elemanın bitiş imi vardır.<br />

Üçüncü div elemanı menü kısmı için tanımlanmıştır ve adı bağlantıKutusu<br />

olarak verilmiştir. Bu elemanın içinde bir tablo vardır ve bu tabloda bağlantılar<br />

mevcuttur. Daha sonra hem tablo elemanı, hem de bu div elemanı bitmektedir.<br />

Dördüncü div elemanı ise sayfa içeriğini barındırmak için tanımlanmıştır ve adı<br />

içerikKutusu olarak verilmiştir. Bu div elemanının içinde sayfada gösterilen metinler<br />

vardır. İki tane paragraf ile bir tane alt başlık vardır. Daha sonra bu div elemanı<br />

bitmektedir. İlk div elemanı, yani bu üç div elemanını içeren div elemanı bu üçüncü div<br />

elemanından sonra bitmektedir.<br />

büyükKutu div elemanı için CSS Kuralı<br />

126


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

İlk div elemanı için yani adı büyükKutu olan div elemanı için bir tane CSS kuralı<br />

yazılmıştır. Bu kural sayfa içinde şu şekilde yazılmıştır:<br />

#büyükKutu {<br />

width: 500px;<br />

}<br />

Bu kural bu div elemanının genişliğini belirlemektedir. Bu div elemanının<br />

genişliği 500 pixel olarak verilmiştir. Bu elemanın yüksekliği ile ilgili bir değer<br />

verilmemiştir. Bu elemanın yüksekliği kendi içindeki elemanların yüksekliğine göre<br />

ayarlanacaktır. Dolayısıyla bu dış kısımdaki div elemanı tarayıcı içinde büyük bir kutu<br />

tanımlamaktadır. Bu kutunun içinde diğer div elemanları bulunacaktır. Bu kutunun<br />

genişliği 500 pixel miktarında olacaktır. Yüksekliği ise içindeki diğer elemanların<br />

yüksekliğinin toplamı kadar olacaktır.<br />

başlıkKutusu div elemanı için CSS Kuralı<br />

İkinci div elemanı, yani adı başlıkKutusu olan div elemanı için CSS kuralları<br />

sayfa içinde şu şekilde yazılmıştır:<br />

#başlıkKutusu {<br />

background: fuchsia;<br />

height: 50px;<br />

text-align: center;<br />

}<br />

Bu kural başlık bölgesi için bir kutu tanımlamaktadır. Bu kutunun genişliği içinde<br />

bulunduğu büyükKutu kadardır. Bir div elemanının genişliği tanımlanmaz ise, onun<br />

genişliği içinde bulunduğu elemanın genişliği kadar olur. Bu durumda da başlık<br />

kutusunun genişliği büyük kutunun genişliği kadar yani 500 pixel olmaktadır. Bu<br />

kutunun yüksekliği height özniteliği ile ayarlanmıştır ve değeri 50 pixel olarak<br />

verilmiştir. Ayrıca bu kutunun arka plan rengi background özniteliği kullanılarak<br />

ayarlanmıştır. Bu kutu içindeki başlık metnin ortada gözükmesi için de text-align<br />

özniteliği değeri center olarak verilmiştir.<br />

Şekil 6-8’deki tarayıcı şekli içinde her alt kutunun arka plan rengi farklı olarak<br />

verildiği için her birisi kolayca diğerlerinden ayrılabilmektedir. Başlık kutusu en üstte<br />

bulunan, genişliği büyük kutu kadar olan, arka plan rengi de pembe olan kutudur.<br />

bağlantıKutusu div elemanı için CSS Kuralı<br />

Üçüncü div elemanı, yani adı bağlantıKutusu olan div elemanı için CSS<br />

kuralları sayfa içinde şu şekilde yazılmıştır:<br />

#bağlantıKutusu {<br />

127


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

}<br />

background: silver;<br />

height: 30px;<br />

Bu div elemanının da genişliği verilmemiş, sadece yükseklik miktarı veilmiştir.<br />

Dolayısıyla bağlantı kutusunun genişliği büyük kutunun genişliği kadar olacaktır ve<br />

yüksekliği de 30 pixel olacaktır. Bu kutunun ayrıca arka plan rengi ayarlanmıştır. Şekil<br />

6-8’deki tarayıcı şekli içinde bağlantı menüsünü içeren ikinci kutu bağlantı kutusudur.<br />

Görüldüğü gibi genişliği büyük kutu genişliği kadardır ve yüksekliği de başlık<br />

kutusundan biraz daha küçüktür.<br />

içerikKutusu div elemanı için CSS Kuralı<br />

Dördüncü div elemanı, yani adı içerikKutusu olan div elemanı için CSS<br />

kuralları sayfa içinde şu şekilde yazılmıştır:<br />

#içerikKutusu {<br />

background-image:url('images2/arkaplan.gif');<br />

text-indent: 0.5cm;<br />

text-align: justify;<br />

padding: 10px 15px 15px 20px;<br />

}<br />

Bu div elemanının ne genişliği ne de yüksekliği verilmiştir. Dolayısıyla içerik<br />

kutusunun genişliği büyük kutunun genişliği kadar olacaktır, yüksekliği ise kendi<br />

içindeki bulunan metinlerin yüksekliği kadar olacaktır. Bu kutunun arka planı olarak bir<br />

renk yerine bir gif dosyası verilmiştir. Dolayısıyla arka planda bu gif dosyası<br />

gösterilmektedir. Bu içerik kutusu içindeki metinlerin text-indent özniteliği 0.5cm<br />

olarak verilmiştir. Dolayısıyla paragrafların ilk satırları 0.5cm içerden başlamaktadır.<br />

Ayrıca yine metinlerin text-align özniteliği justify olarak verilmiştir. Dolayısıyla<br />

metinler kutu içinde tüm satıra yayılmıştır. Son öznitelik değeri ise padding özniteliğidir.<br />

Bu öznitelik kutu içindeki metinlerin kutu duvarına olan mesafelerini ayarlamak için<br />

kullanılmıştır. Burdaki dört değer sırasıyla metinlerin kutunun üst, sağ, alt ve sol<br />

duvarlarına olan uzaklıklarını belirtmektedir. Dolayısıyla metinler ile kutu duvarları<br />

arasında bir miktar mesafe bırakılmıştır.<br />

Örnek Uygulama<br />

Hazırlayacağınız bir sayfayı CSS ve div elemanları kullanarak 4 alt bölgeye<br />

ayırınız? Bu bölgeler sırasıyla başlık bölgesi, menü bölgesi, içerik bölgesi ve alt bölge<br />

olsun. Alt bölge sayfa sahibine ait bazı bilgileri içersin. Diğer bölgeler bu bölümdeki<br />

bölgelere benzesin. Ayrıca tanımlayacağınız bu bölgelerin padding değerine farklı<br />

değerler atayarak, bu özniteliğin bölgeler üzerindeki etkisini gözlemleyiniz.<br />

128


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

6.15 CSS Kullanarak Web Sayfasını Farklı Alt Bölgelere Ayırma<br />

Bir önceki bölümde CSS kullanarak bir web sayfasını üç alt bölgeye ayırdık. Bu alt<br />

bölgeler yukardan aşağıya doğru başlık bölgesi, menü beölgesi ve içerik bölgesiydi.<br />

Şimdi aynı web sayfasını tablolarla yaptığımız gibi yine üç bölgeye ayıralım. Fakat bu<br />

durumda menü yukardan aşağıya ikinci bölge olmasın. Onun yerine menü bölgesi<br />

sayfanın solunda olsun.<br />

Sayfayı bu şekilde üç ana bölgeye ayırmak için yine div imi ile CSS kurallarını<br />

kullanacağız. Fakat bu durumda div elemanlarının boyutlarını ve pozisyonlarını yeni<br />

sayfa özelliklerine göre ayarlayacağız. Bu sayfadaki kodlar büyük ordan bir önceki<br />

sayfadaki kodlara benzemektedir. Fakat bazı önemli farklar da vardır.<br />

Yeni sayfa için HTML ve CSS kodları Tablo 6-14’te verilmiştir.<br />

<br />

CSS İle Sayfayı Alt Bölgelere Ayırma<br />

<br />

<br />

<br />

#büyükKutu {<br />

width: 500px;<br />

}<br />

#başlıkKutusu {<br />

background: fuchsia;<br />

height: 50px;<br />

text-align: center;<br />

}<br />

#bağlantıKutusu {<br />

float: left;<br />

background: silver;<br />

width: 100px;<br />

height: 80%;<br />

padding: 10px 0px 0px 0px;<br />

}<br />

#içerikKutusu {<br />

margin: 0 0 0 100px;<br />

background-image:url('images2/arkaplan.gif');<br />

text-indent: 0.5cm;<br />

text-align: justify;<br />

padding: 10px 10px 0px 20px;<br />

height: 80%;<br />

}<br />

<br />

<br />

<br />

<br />

<br />

<br />

Bilgisayar <br />

129


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

<br />

<br />

<br />

İşlemci<br />

Bellek<br />

Ön Bellek<br />

Hard Disk<br />

<br />

<br />

<br />

Bilgisayar hem veri işleyen yani hesaplamalar yapan,<br />

hem de veri depolayan bir makinadır. Modern anlamda ilk<br />

gelistirilen bilgisayar 1946 yılında yapımı tamamlanan<br />

ENIAC'tır.<br />

Merkezi İşlem Birimi (CPU)<br />

Merkezi İşlem Birimi yani CPU (Central Processing Unit)<br />

bir bilgisayarın beynidir. Mantıksal ve Aritmetik bütün<br />

işlemler burada yapılır.<br />

<br />

<br />

<br />

<br />

<br />

Tablo 6-14 Web sayfasını CSS ile alt bölgelere ayırma ikinci örneği<br />

Bu HTML belgesi tarayıcı içinde Şekil 6-9’daki gibi gözükür.<br />

Şekil 6-9 CSS ile alt bölgelere ayrılmış ikinci sayfa örneği<br />

130


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Bu örnekte yine bir önceki bölümde olduğu gibi dört adet div imi kullanılmıştır.<br />

Her div iminin fonksiyonu ve ismi aynıdır. Yine bir tane div imi diğer üçünü<br />

içermektedir ve bunun genişliği 500 pixel olarak ayarlanmıştır. İkinci div elemanı da<br />

tamamen bir önceki örnekteki div elemanıyla aynıdır. Sayfanın üst kısmında başlık<br />

bölgesini oluşturmuştur. Farklı olan div elemanları üçüncü ve dördüncü div<br />

elemanlarıdır. Şimdi bunların detaylarını inceleyelim.<br />

bağlantıKutusu div elemanı için CSS Kuralı<br />

Üçüncü div elemanı, yani adı bağlantıKutusu olan div elemanı için CSS<br />

kuralları bu sayfa içinde şu şekilde yazılmıştır:<br />

#bağlantıKutusu {<br />

float: left;<br />

background: silver;<br />

width: 100px;<br />

height: 80%;<br />

padding: 10px 0px 0px 0px;<br />

}<br />

Öncelikle bu div elemanının genişliği 100 pixel olarak verilmiştir. Çünkü bu<br />

bağlantı kutusu sadece sayfanın sol tarafında olmalıdır. Bunun için genişlik 100 pixel<br />

verilmiştir. Diğer önemli öznitelik ise float özniteliğidir. Bu öznitelik, bağlantı<br />

kutusundan sonra gelecek olan içerik kutusunun, bu kutunun hemen yanına<br />

yerleştirilmesini sağlar. Ayrıca bağlantı kutusunun da sayfanın sol tarafına<br />

yerleştirilmesini sağlar. Eğer float öznitelik değeri kullanılmamış olsaydı, bu kutudan<br />

sonra gelecek olan içerik kutusu, bağlantı kutusunun sağ yanına değil de altına<br />

yerleştirilirdi.<br />

Bağlantı kutusunun ayrıca gibi arka plan rengi bir önceki bölümde olduğu<br />

background özniteliği kullanılarak ayarlanmıştır. Buna ek olarak bu kutunun boyu, içinde<br />

bulunduğu tarayıcı penceresinin boyunun yüzde yirmisi olarak ayarlanmıştır. Ayrıca yine<br />

padding özniteliği kullanılmış üst tarafta 10 pixel büyüklüğünde bir boşluk bırakılmıştır.<br />

içerikKutusu div elemanı için CSS Kuralı<br />

Dördüncü div elemanı, yani adı içerikKutusu olan div elemanı için CSS<br />

kuralları sayfa içinde şu şekilde yazılmıştır:<br />

#içerikKutusu {<br />

margin: 0 0 0 100px;<br />

background-image:url('images2/arkaplan.gif');<br />

text-indent: 0.5cm;<br />

text-align: justify;<br />

padding: 10px 10px 0px 20px;<br />

height: 80%;<br />

}<br />

131


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Bu div elemanının genişliği verilmemiştir. Yüksekliği ise tarayıcı boyunun yüzde<br />

sekseni olarak verilmiştir. Dolayısıyla bu bölgenin yüksekliği bağlantı bölgesinin<br />

yüksekliği ile eşittir. Bu bölge diğer div elemanlarından farklı olarak sayfanın en<br />

sonunda başlamamaktadır. Bu bölgenin başlama konumu margin özniteliği kullanılarak<br />

verilmiştir. margin özniteliğinin son değeri bu div elemanının sol taraftan uzaklığını<br />

belirler. Dolayısıyla bu durumda bu değer 100 pixel olarak verilmiştir. Yani bu div<br />

elemanı ya da içerik kutusu sayfanın solundan 100 pixel içerde başlayacaktır. Bu nokta<br />

tam olarak bağlantı kutusunun bittiği yerdir. Dolayısıyla bağlantı kutusu ve içerik kutusu<br />

yan yana görünür. margin özniteliğinin diğer değerleri bu div elemanın yukardan, sağdan<br />

ve alttan uzaklıklarını tanımlar. Bu durumda bu üç değer de sıfır olarak verilmiştir.<br />

Web Sayfası Tasarımı için Tablomu Yoksa CSS’mi Kullanılmalı?<br />

Web sayfalarını alt bölgelere ayırmak için tablolar sıkça kullanılmaktadır. Fakat<br />

tabloların asıl amacı web sayfası tasarımı değildir. Tablolar verileri kullanıcılara düzenli<br />

bir şekilde bir tablo içinde sunmak için geliştirilmiştir. Fakat sonra web tasarımcıları<br />

sayfa tasatımında da sıkça kullanmışlardır.<br />

Şu anda tavsiye edilen esas metod sayfa tasarımı için CSS kullanılmasıdır. CSS<br />

tablolara göre biraz daha fazla detaya sahip sayfa tasarımı yapma imkanı sunmaktadır.<br />

Ayrıca CSS ile tasarlanan sayfaların tarayıcılar tarafından daha hızlı görüntülenmesi<br />

mümkündür. Fakat ilk başta CSS kullanımı öğrenilme tablo kullanımını öğrenmeye göre<br />

biraz daha zor olabilir.<br />

Örnek Uygulama<br />

Bir sayfayı dört alt bölgeye ayıran bir tasarım yapınız? Bu sayfada başlık bölgesi,<br />

menü bölgesi, içerik bölgesi ve ikinci menü bölgesi olsun. Başlık bölgesi yine bu<br />

bölümde olduğu gibi sayfanın üst kısmında olsun. İlk menü bölgesi de yine sayfanın<br />

solunda olsun. İçerik bölgesi sayfanın ortasında olsun. İkinci menü bölgesi ise sayfanın<br />

sağında olsun.<br />

6.16 Özet<br />

Bu bölümde CSS stil kurallarının ne olduklarını ve HTML belgelerinde hangi<br />

amaçla, nasıl kullanıldıklarını gördük. CSS stil kurallarına neden ihtiyaç duyulduğunu ve<br />

avantajlarını açıkladık. CSS stil kurallarının HTML belgeleri içinde üç farklı şekilde nasıl<br />

kullanıldıklarını örneklerle gösterdik. CSS stil kurallarının temel özelliklerini ve kullanım<br />

alanlarını anlattık. Ayrıca HTML span ve div imlerini gösterdik. Buna ek olarak CSS stil<br />

kurallarının ve div imlerinin web sayfası tasarımında nasıl kullanıldıklarını inceledik.<br />

Ama bu bölümde anlatılanlar CSS stil özelliklerinin az bir kısmını oluşturmaktadır.<br />

CSS burada anlatılanlardan çok daha zengin özelliklere sahiptir. Fakat bu bölümde<br />

anlatılanlar CSS ile ilgili bir temel oluşturmayı amaçlamıştır. Bu bölümü anlayarak<br />

132


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

uygulayan web tasarımcıları, CSS’in sunmuş olduğu diğer özellikleri farklı online<br />

kaynaklardan yararlanarak rahatça öğrenebilirler.<br />

6.17 CSS ile ilgili Faydalanılabilecek Kaynaklar<br />

İnternet’te CSS ile ilgili birçok kaynak bulunmaktadır. Bu kaynakların en<br />

güzellerinden birisi şu adrestedir:<br />

http://www.w3schools.com/css/css_examples.asp<br />

Bu sayfada CSS ile ilgili birçok örnek mevcuttur. Kullanıcılar bu sayfadaki CSS<br />

kodlarını değiştirerek CSS özelliklerinin nasıl çalıştığını daha yakından görme imkânına<br />

sahiptirler.<br />

Ayrıca aynı web sitesinde CSS ile ilgili açıklamalar da vardır. Bunlar da şu<br />

adrestedir:<br />

http://www.w3schools.com/css/default.asp<br />

Türkçe kaynak kitap olarak ise şu kitabı önerebiliriz:<br />

Kitap ismi: HTML ve XHTML: The Complete Reference<br />

Yazarı: Thomas A. Powell<br />

Yayınevi: Alfa Yayınevi<br />

6.18 Referanslar<br />

[1] “Cascading Style Sheets”, http://en.wikipedia.org/wiki/Cascading_Style_Sheets, 2<br />

Ekim 2009.<br />

[2] H. Lie, ve B. Bos, "Cascading Style Sheets, level 1", W3C Recommendation REC-<br />

CSS1-961217, http://www.w3.org/TR/REC-CSS1-961217, December 1996.<br />

[3] Thomas A. Powell, "HTML ve XHTML: The Complete Reference", Alfa Yayınevi,<br />

Mart 2004.<br />

[4] CSS Background, http://www.w3schools.com/Css/css_background.asp, 7 Ekim<br />

2009.<br />

133


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

[5] CSS Font, http://www.w3schools.com/Css/css_font.asp, 7 Ekim 2009.<br />

[6] HTML Tag, http://www.w3schools.com/TAGS/tag_span.asp, 7 Ekim 2009.<br />

[7] Ades Tynyshev, "Creating and Linking External CSS files",<br />

http://www.developertutorials.com/tutorials/css/creating-linking-external-css-files-<br />

050531/page1.html, 7 Ekim 2009.<br />

[8] Adrian Senior, "Designing with CSS <strong>–</strong> Part 3: Using CSS for site layout",<br />

http://www.adobe.com/devnet/dreamweaver/articles/css_concepts_pt3_cs3.html, 7<br />

Ekim 2009.<br />

134


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Bölüm 7<br />

7.1 Amaç<br />

JAVASCRİPT<br />

Bu bölümde amacımız, JavaScript betik dilinin temel özelliklerinin öğrenilmesi ve<br />

hangi durumlarda kullanılacağının anlaşılmasıdır. Bu amaçla öncelikle basit bir<br />

JavaScript uygulaması ile başladık. Sonra adım adım bu dilin özelliklerini örneklerle<br />

işledik. Bu dilde değişkenler, stringler, karar yapıları, döngüler, diziler, fonksiyonlar gibi<br />

özellikler işlendi. Ayrıca kullanıcıya mesaj vermek, kullanıcıdan veri almak gibi<br />

amaçlarla küçük pencere kullanımı anlatılmıştır.<br />

7.2 Giriş<br />

Şu ana kadar görmüş olduğumuz web sayfaları statik web sayfaları idi [1]. Bu tip<br />

sayfalarda kullanıcıya gösterilen bilgiler sabittir. Tarayıcı HTML belgelerini sunucudan<br />

indirip kullanıcıya gösterdikten sonra bu bilgiler bir daha değişmez. Tarayıcı içinde<br />

gösterilen sayfa aynı kalır. Kullanıcı ile bu sayfanın etkileşime geçmesi söz konusu<br />

değildir.<br />

İkinci tip web sayfaları ise dinamik web sayfalarıdır [2]. Bu tür web sayfaları<br />

kullanıcı ile etkileşebilir. Örneğin bir arama motorunun web sayfasında aranmasını<br />

istediğimiz kelimeleri yazar ve bir butona tıklarız. Arama motoru da bize bu kelimelerle<br />

ilgili sayfaların listesini verir. İşte bu bir etkileşimdir. Bu tür bir web sayfası dinamik bir<br />

web sayfasıdır. Şu ana kadar görmüş olduğumuz statik web sayfalarında böyle bir<br />

etkileşim mümkün değildi.<br />

135


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

7.3 Sunucu ve İstemci Tarafı Programlama<br />

Dinamik web sayfaları iki şekilde oluşturulabilir: sunucu tarafı programlama<br />

[3] ve istemci tarafı programlama [4]. Yukarda vermiş olduğumuz arama motoru<br />

örneği sunucu tarafı programlamaya bir örnektir. Bu metotta kullanıcının girdiği bilgiler<br />

web sunucusuna gönderilir. Web sunucusu yanında çalışan bir program da aranan<br />

kelimelerle ilgili web sayfalarını bulur ve sonucu kullanıcıya yeni bir web sayfası halinde<br />

verir. Dolayısıyla bu etkileşimin gerçekleşebilmesi için sunucu tarafında çalışan bir<br />

program olması gerekir. Bundan dolayı bu metoda sunucu tarafı programlama denilir.<br />

İstemci tarafı programlamaya bir örnek olarak fare üzerine gelince açılan<br />

menüleri gösterebiliriz. Bu durumda fare bir menü elemanı üzerine gelince yeni bir menü<br />

gösterilir. Bu işlemin yapılması için sunucu ile iletişime geçilmez. Bunun yerine tarayıcı<br />

içinde çalışabilen betik yani script programları kullanılır. Bu betik programları yazılırken<br />

fare menü elemanları üzerine gelince kullanıcıya ne gösterileceği yazılır. Böylece web<br />

sayfası ile kullanıcı, sunucu tarafına hiç bağlanmadan etkileşimde bulunabilir. İşte bu tür<br />

programlamaya istemci tarafı programlama denilir. İstemci tarafındaki bu programlar<br />

tarayıcı içinde çalışır.<br />

İstemci tarafı dinamik programlama sunucu tarafı dinamik programlamaya göre<br />

daha hızlıdır. Fakat istemci tarafında yapılabilecek programlama sınırlıdır. Bundan dolayı<br />

istemci tarafı dinamik programlama daha çok basit ve hızlı işlemler için kullanılır.<br />

Karmaşık ve büyük işlemler için sunucu tarafı programlama yapmak gerekir. Sunucu<br />

tarafı programlama yapmak için daha çok PHP, ASP, JSP gibi diller kullanılır.<br />

7.4 JavaScript ve VBScript<br />

İstemci tarafı dinamik programlama için en çok JavaScript [5] ve VBScript [6]<br />

betik dilleri kullanılır. JavaScript programları hemen hemen bütün tarayıcılarda<br />

çalışırken, VBScript programları sadece İnternet Explorer tarayıcısında çalışır. Bu<br />

yüzden JavaScript kullanmak daha avantajlıdır.<br />

7.5 JavaScript ve Java<br />

VBScript Microsoft firması tarafından geliştirilmiştir. Yazım kuralları daha çok<br />

Visual Basic dilini andırır. JavaScript ise Netscape firması tarafından geliştirilmiştir.<br />

Yazım kuralları daha çok C dilini andırır. JavaScript dilinin ilk ismi LiveScript idi. Fakat<br />

o zaman çok popüler bir dil olan Java’nın popülaritesinden istifade etmek amacıyla adı<br />

JavaScript olarak değiştirilmiştir. Yoksa Java dili ile JavaScript dili arasında isim<br />

benzerliğinden öte bir bağ yoktur. Java genel bir programlama dili iken, JavaScript ise<br />

tarayıcı içinde çalışan bir betik dilidir.<br />

136


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

7.6 Betik Dilleri<br />

JavaScript ve VBScript dilleri betik yani script dilleridir. Betik dillerinin özelliği<br />

derlenmeden çalıştırılmalarıdır. C, Pascal, FORTRAN, C++, Java gibi diller önce<br />

derlenir, sonra çalıştırılır. Betik dilleri ise derlenmeden çalıştırılırlar. Bu dilleri<br />

çalıştırmak için betik motorları kullanılır. JavaScript ve VBScript programlarını çalıştıran<br />

betik motorları tarayıcı içine gömülüdür. Tarayıcı ne zaman bir web sayfasında betik<br />

koduyla karşılaşırsa, betik motorundan bu kodu işlemesini ister. Bu şekilde betik kodları<br />

derlenmeden tarayıcı içerisinde betik motorları tarafından çalıştırılırlar.<br />

7.7 İlk JavaScript Örneği: imi<br />

JavaScript program komutları HTML belgesi içinde yazılır. JavaScript program<br />

parçalarını yazmak için imi kullanılır. Böylece tarayıcı bu komutların normal<br />

bir HTML metni olmadığını, çalıştırılması gereken JavaScript komutları olduğunu anlar.<br />

Bu komutları çalıştırması için tarayıcı içindeki JavaScript motorunu çağırır.<br />

Şimdi içinde basit bir JavaScript kodu olan bir HTML belgesi görelim. Bu amaçla<br />

yazılmış bir sayfa Tablo 7-1’de verilmiştir.<br />

<br />

İlk JavaScript Örneği<br />

<br />

<br />

<br />

<br />

document.write(" Herkese Merhaba");<br />

<br />

Bu sayfanın başlığı JavaScript ile yazılıyor. İlk<br />

JavaScript örneğim.<br />

<br />

<br />

Tablo 7-1 ilk JavaScript örnegi<br />

Bu HTML belgesi tarayıcı içinde Şekil 7-1’deki gibi gözükür.<br />

137


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Şekil 7-1 ilk JavaScript örnegi<br />

Bu HTML belgesinin gövde kısmında im çifti arasında JavaScript kodu<br />

bulunmaktadır:<br />

<br />

document.write(" Herkese Merhaba");<br />

<br />

Bu kod tarayıcı içinde gösterilmez. Bunun yerine bu kod JavaScript motoru<br />

tarafından çalıştırılır ve bu kodun sonucu web sayfasının bu kısmında gösterilir. Bu<br />

örnekte bu JavaScript kodunda tek bir komut vardır. O da document.write komutudur.<br />

Bu komut parantez içinde verilen metnin web sayfasına yazılmasını sağlar.<br />

Bu örnekte web sayfasına başlık metninin JavaScript kodu ile yazılmasının bir<br />

avantajı yoktur. Aynı işlem JavaScript kullanılmadan daha kolay yapılabilirdir. Bu<br />

örneğin amacı sadece JavaScript ile web sayfası içine nasıl yazı yazılabileceğini<br />

göstermektir.<br />

İfade Sonunda Noktalı Virgül<br />

Bu örnekte document.write komutu sonuna noktalı virgül konmuştur. Bir satırda<br />

tek bir komut olduğu durumda komut sonunda noktalı virgül kullanmak zorunlu değildir.<br />

Dolayısıyla bu örnekte noktalı virgül olmasaydı da sonuç aynı olurdu. Noktalı virgül<br />

daha çok aynı satırda birden fazla komut olduğu durumlarda, komutlar arasında<br />

kullanılır.<br />

Örnek Uygulama<br />

Siz de bu örnekte olduğu gibi basit bir JavaScript örneği yapınız? HTML belgesi<br />

içine JavaScript komutu ile farklı değerler yazdırınız? Hem bir başlık hem bir paragraf<br />

yazdırmayı deneyiniz?<br />

138


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

7.8 Değişkenler<br />

Bütün programlama dillerinde olduğu gibi JavaScript dilinde de değişken<br />

tanımlamak mümkündür [7]. JavaScript dilinde değişken tanımlanırken değişkenin tipi<br />

belirtilmek zorunda değildir. Değişken atandığı değerin tipini alır.<br />

Şimdi iki sayının toplamını bulan ve bunu web sayfasına yazdıran basit bir<br />

program görelim. Bu amaçla yazılmış bir sayfa Tablo 7-2’de verilmiştir.<br />

<br />

JavaScript'te Degiskenler<br />

<br />

<br />

JavaScript'te Degisken Kullanimi<br />

<br />

var sayi1 = 20;<br />

sayi2 = 30.5;<br />

var sonuc = sayi1 + sayi2;<br />

document.write(" Iki sayi toplami. "+sayi1+" +<br />

"+sayi2+" = "+sonuc);<br />

<br />

<br />

<br />

Tablo 7-2 JavaScript'te değişken tanımlama<br />

Bu HTML belgesi tarayıcı içinde Şekil 7-2’deki gibi gözükür.<br />

Şekil 7-2 JavaScript'te değişken tanımlama<br />

Görüldüğü gibi bu sayfadaki JavaScript kodunda üç tane değişken tanımlanmıştır:<br />

var sayi1 = 20;<br />

sayi2 = 30.5;<br />

var sonuç = sayi1 + sayi2;<br />

139


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Bu değişkenlerden iki tanesi var anahtar kelimesi kullanılarak tanımlanmıştır. Bir<br />

tanesi ise var anahtar kelimesi kullanılmadan tanımlanmıştır. Dolayısıyla değişkenler var<br />

anahtar kelimesi kullanılarak veya kullanılmadan tanımlanabilirler.<br />

Aritmetik İşlem Operatörleri<br />

Tanımlanmış olan iki sayı değişkeni artı işaretiyle toplanmıştır. Diğer birçok<br />

programlama dilinde olduğu gibi JavaScript dilinde de temel aritmetik işlemler için Tablo<br />

7-3’deki karakterler kullanılır.<br />

Değişken İsim kuralları<br />

Operatör Anlamı<br />

+ Toplama<br />

- Çıkarma<br />

* Çarpma<br />

/ Bölme<br />

% Mod alma<br />

++ Bir artırma<br />

-- Bir azaltma<br />

Tablo 7-3 JavaScript aritmetik operator tablosu<br />

JavaScript dilinde değişken isimleri harf kipine duyarlıdır. Dolayısıyla sayi1,<br />

Sayi1, veya SAYI1 farklı değişken isimleridir.<br />

Değişken isimleriyle ilgili ikinci bir konu ise, değişken isimleri sadece harflerle<br />

veya alt tire işaretiyle başlayabilirler.<br />

Örnek Uygulama<br />

Yazacağınız bir HTML belgesi içindeki JavaScript kodunda çeşitli aritmetik<br />

işlemler yapınız? Tablo 7-3’deki bütün aritmetik operatörleri kullanmayı deneyiniz? Bazı<br />

işlemlerde aynı komut içinde birden fazla aritmetik işlem komutu kullanınız? Her bir<br />

operatörün nasıl çalıştığını farklı örnekler yaparak inceleyiniz?<br />

140


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

7.9 Stringler<br />

Stringler karakterlerden oluşur. JavaScript dilinde string değişkenleri tanımlamak<br />

sayı değişkenleri tanımlamaya benzer. Fakat string değişkeni oluştururken verilen değer<br />

çift tırnak veya tek tırnak içinde olmalıdır. Birkaç string tanımlaması örneği şu şekilde<br />

yapılabilir:<br />

ad = "Ali";<br />

var soyad = "Ak";<br />

var sehir = 'Mersin';<br />

bosluk = " ";<br />

Diğer değişkenlerde olduğu gibi string değişkenleri de var anahtar kelimesiyle<br />

veya sadece değişken ismiyle tanımlanabilirler. Görüldüğü gibi string değerleri tek tırnak<br />

veya çift tırnak ile tanımlanabilir. Ama her zaman ya tek tırnak, ya da çift tırnak<br />

kullanmak programımızın düzeni açısından isabetli olur.<br />

String Ekleme<br />

JavaScript dilinde bir string’e diğer bir string artı operatörü kullanılarak<br />

eklenilebilir. String eklemeye örnek olarak şunları gösterebiliriz:<br />

ad = "Ali";<br />

var soyad = "Ak";<br />

bosluk = " ";<br />

tumAd = ad + bosluk + soyad;<br />

tumAd2 = ad + " " + soyad;<br />

document.write(tumAd+": ");<br />

Bu örnekte tumAd değişkeni ad değişkenine bosluk ve soyad değişkenlerinin<br />

eklenmesinden oluşur. Dolayısıyla tumAd değişkeni değeri “Ali Ak” olur. Benzer şekilde<br />

aynı ekleme tumAd2 değişkeninde olduğu gibi de yapılabilir. String ekleme özellikle<br />

document.write() gibi kullanıcıya bilgi veren fonksiyonlar çağırılırken, yukarıdaki gibi<br />

kullanılır. Bu durumda bu fonksiyon çağırılırken tumAd ve ": " stringleri toplanmış<br />

ve sonuç bu fonksiyona gönderilmiştir.<br />

İçinde Tırnak İşareti Olan Stringler<br />

Stringler etrafına tırnak işareti konularak tanımlanırlar. Pekâlâ, tanımladığımız bir<br />

string içinde tek tırnak veya çift tırnak işareti varsa bunu nasıl yapabiliriz. Şimdi bunun<br />

örneğini görelim:<br />

141


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

var str1 = "'Bugun çok mutluyum' dedi.";<br />

var str2 = '"Bugun çok mutluyum" dedi.';<br />

Burada tanımlanan stringlerin birinin içinde iki tane tek tırnak var. Diğerinin<br />

içinde ise iki tane çift tırnak var. İçinde tek tırnak bulunan bir string tanımlanırken, bu<br />

stringi tanımlamak için çift tırnak kullanılır. İçinde çift tırnak olan bir string<br />

tanımlanırken ise, etrafında tek tırnak kullanılır.<br />

String Örneği<br />

Şimdi string değişkenlerinin olduğu basit bir örnek sayfa görelim. Bu amaçla<br />

yazılmış bir sayfa Tablo 7-4’de verilmiştir.<br />

<br />

JavaScript'te Stringler<br />

<br />

<br />

<br />

JavaScript'te String Kullanımı<br />

<br />

ad = "Ali";<br />

soyad = 'Ak';<br />

bosluk = " ";<br />

var tumAd = ad + bosluk + soyad;<br />

var str2 = '"Bugün çok mutluyum" dedi.';<br />

document.write(tumAd+": ");<br />

document.write(str2);<br />

<br />

<br />

<br />

Tablo 7-4 JavaScript'te string kullanımı örneği<br />

Bu HTML belgesi tarayıcı içinde Şekil 7-3’deki gibi gözükür.<br />

Şekil 7-3 JavaScript'te string kullanımı örneği<br />

142


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Buradaki string tanımlama ve ekleme işlemleri yukarda açıklanmıştır. Burada<br />

ayrıca yeni satır koymak için HTML imini kullanıldığına dikkat ediniz.<br />

Örnek Uygulama<br />

Oluşturacağınız bir HTML belgesi içindeki JavaScript kodu ile string tanımlama<br />

ve string ekleme örnekleri yapınız? Tarayıcı içinde üç satır halinde gözükecek bir string<br />

tanımlayınız? Bu string içinde satır sonunu göstermek için imleri kullanınız?<br />

7.10 Karar Yapıları: if, else, else if<br />

Bütün diğer dillerde olduğu gibi JavaScript dilinde de karar yapıları vardır [8]. if<br />

karar yapısı bir koşula göre bir kod bloğunu işleme koyar veya koymaz. Eğer iki ihtimal<br />

varsa if ile else birlikte kullanılır. Bu durumda if ifadesinde verilen koşul doğruysa if<br />

bloğu işlem görür, yoksa else bloğu işlem görür. Eğer aynı yerde birden fazla kontrol<br />

edilmesi gereken koşul varsa, bu durumda if ve birden fazla else if ifadeleri<br />

kullanılabilir.<br />

Şimdi bununla ilgili bir örnek uygulama görelim. Bu amaçla yazılmış bir sayfa<br />

Tablo 7-5’te verilmiştir.<br />

<br />

JavaScript'te Stringler<br />

<br />

<br />

<br />

Bugün günlerden:<br />

<br />

var t = new Date();<br />

var gün = t.getDay();<br />

if(gün == 0){<br />

document.write("Pazar");<br />

}else if(gün == 1){<br />

document.write("Pazartesi");<br />

}else if(gün == 2){<br />

document.write("Salı");<br />

}else if(gün == 3){<br />

document.write("Çarşamba");<br />

}else if(gün == 4){<br />

document.write("Perşembe");<br />

}else if(gün == 5){<br />

document.write("Cuma");<br />

}else if(gün == 6){<br />

document.write("Cumartesi");<br />

}<br />

document.write("");<br />

document.write("Bu günün JavaScript'teki sayısal<br />

143


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

karşılığı: "+gün+"");<br />

<br />

<br />

<br />

Tablo 7-5 JavaScript'te karar yapıları kullanım örneği<br />

Bu HTML belgesi tarayıcı içinde Şekil 7-4’deki gibi gözükür.<br />

Şekil 7-4 JavaScript'te karar yapıları kullanım örneği<br />

JavaScript dilinde o anki tarihi göstermek için Date() nesnesi kullanılır. Bu tarih<br />

nesnesinin birçok özelliği vardır. Örneğin yıl, ay, gün, saat gibi bilgileri içerir. Bu Date<br />

nesnesinden bir tane su şekilde oluşturulur:<br />

var t = new Date();<br />

Burada t artık bir Date nesnesidir ve o anki tarihi gösterir. Bu değişkenin tutmuş<br />

olduğu değişik değerlere ulamsak için Date sınıfı bazı fonksiyonlar sunar. Bunlardan<br />

bazıları şunlardır.<br />

var y = t.getYear(); // yıl değerini döndürür<br />

var ay = t.getMonth(); // ay değerini döndürür. 0-11 arası<br />

var g = t.getDate(); // gün değerini döndürür. 1-31 arası.<br />

var gg = t.getDay(); // haftanın günü değerini döndürür. 0-6 arası.<br />

Yukarıdaki örnekte bu fonksiyonlardan getDay() fonksiyonu kullanılmıştır. Bu<br />

fonksiyon 0 ile 6 arasında bir tamsayı değer döndürür. Sıfır değeri Pazar gününü<br />

gösterir. Altı değeri ise Cumartesi gününü gösterir. Bu örnekte döndürülen değer her<br />

ihtimal için test edilmiştir. Eğer bu değer sıfır ise tarayıcıya Pazar yazılacaktır. Eğer 1 ise<br />

tarayıcıya Pazartesi yazılacaktır. Bu programı biz çalıştırdığımızda Cuma günüydü. Onun<br />

için yukarıdaki tarayıcı penceresinde Cuma gözükmektedir.<br />

144


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Örnek Uygulama<br />

Bu örnekte olduğu gibi haftanın günleri ile ilgili bir uygulama yapınız? Sizin<br />

yazdığınız JavaScript programı tarayıcı içine iki gün öncesinin gününü yazsın. Örneğin<br />

sayfa Pazar günü görüntülenirse, tarayıcı içine Cuma yazılsın. Eğer sayfa Çarşamba günü<br />

görüntülenirse, tarayıcı içine Pazartesi yazılsın.<br />

İkinci bir uygulama olarak ta çalıştırılan ayın ismini Türkçe olarak tarayıcı içine<br />

yazan bir JavaScript kodu yazınız? Bu örnekteki uygulamaya benzer bir uygulama<br />

olacak. Ama bu uygulamada haftanın günü yerine o ayın ismi yazılacak. Örneğin sayfa<br />

Ocak ayında görüntülenirse, tarayıcı içine Ocak yazılacak. Eğer Nisan ayında<br />

görüntülenirse, tarayıcı içine Nisan yazılacak. Bu şekide sayfa hangi ayda görüntülenirse<br />

o ayın ismi Türkçe olarak tarayıcı içine yazılacak.<br />

7.11 JavaScript dilinde Açıklamalar<br />

JavaScript dilinde programa açıklama metinleri eklemenin iki yolu vardır. Eğer<br />

tek satırlık bir açıklama eklemek istiyorsak, bu durumda çift taksim yani // karakter çifti<br />

kullanılır.<br />

var y = t.getYear(); // yıl değerini döndürür<br />

// Şimdi yıl değerini ekrana yazdıralım<br />

document.write(y);<br />

Görüldüğü gibi çift taksim açıklama karakteri hem satır başında hem satır<br />

ortasında kullanılabilir. Bu karakterden sonra gelen metin açıklama olarak algılanır.<br />

Eğer ekleyeceğimiz açıklama bir satırdan daha çok veya daha az ise, bu durumda<br />

açıklama metninin başlangıcı için taksim ve yıldız karakter çiftini, açıklama metninin<br />

bitimi için ise yıldız ve taksim karakter çiftini kullanırız.<br />

/* JavaScript’te program yazmak çok kolay.<br />

O anki tarihi kolayca ogrenebiliriz.<br />

Bunun için Date sinifinin bir nesnesi kullanılır. */<br />

var y = t.getYear(); /* yıl değerini döndürür*/<br />

document.write(y);<br />

7.12 Fonksiyonlar<br />

Fonksiyonlar bütün programlama dilleri için en temel yapıtaşlarıdır.<br />

Programlarımızı hem alt parçalara bölmemize, hem de her iş için farklı program parçaları<br />

yazmamıza olanak sağlarlar. Fonksiyonlar çağırıldıkları zaman işlem görürler.<br />

145


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

JavaScript dilinde fonksiyonlar [9] hem gövde içinde hem de head yani baş<br />

kısmında olabilir. Fakat çoğunlukla sayfanın baş kısmına konulurlar. Bu durumda baş<br />

kısmındaki bir fonksiyon çağırılmadan işlem görmez. Ne zaman çağırılırsa o zaman<br />

kendi içinde tanımlanan işlemleri yapar.<br />

Şimdi çağırıldığı zaman kullanıcıya küçük bir pencerede mesaj veren bir<br />

fonksiyonun nasıl yazıldığını ve çağırıldığını görelim. Bu amaçla yazılmış bir sayfa<br />

Tablo 7-6’da verilmiştir.<br />

<br />

İlk Fonksiyon ve İlk Buton<br />

<br />

<br />

function göster(){<br />

alert("İlk fonksiyonumdan Merhaba!!!!!!! ");<br />

}<br />

<br />

<br />

<br />

İlk Fonksiyon ve Buton Örneği<br />

<br />

İlk fonksiyonumu çağirmak için:<br />

<br />

<br />

<br />

<br />

Tablo 7-6 Buton ile fonksiyon çağırma örneği<br />

Bu HTML belgesi tarayıcı içinde Şekil 7-5’deki gibi gözükür.<br />

Şekil 7-5 Buton ile fonksiyon çağırma örneği<br />

Bu tarayıcı penceresindeki Tıklayınız yazan butona tıklanınca Şekil 7-6’daki<br />

gibi küçük bir pencere gelir.<br />

146


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Şekil 7-6 alert fonksiyonu ile oluşturulan küçük pencere<br />

Bu küçük penceredeki OK veya Tamam butonuna basınca da bu küçük pencere<br />

kaybolur.<br />

Bu sayfada öncelikle bir fonksiyonun nasıl tanımlandığına bakalım. Baş<br />

kısımdaki fonksiyon şu şekilde yazılmıştır:<br />

function göster(){<br />

alert("İlk fonksiyonumdan Merhaba!!!!!!! ");<br />

}<br />

JavaScript dilinde bir fonksiyon yazmak için öncelikle function anahtar kelimesi<br />

kullanılır. Bu anahtar kelimeden sonra fonksiyona verilen isim gelir. Bu örnekte<br />

fonksiyonumuzun adı göster() olarak verilmiştir. Her fonksiyonun bir adı vardır. Daha<br />

sonra istenilen her noktadan bu fonksiyon adıyla çağırılır.<br />

Fonksiyon isminden sonra parantez açma ve kapama karakterleri gelir. Bu<br />

fonksiyon eğer parametre alacaksa, alınacak değerler bu parantezler içinde yazılır. Bu<br />

örnekte fonksiyonumuz dışardan parametre almamaktadır. Daha sonra küme açma<br />

parantezi gelir. Fonksiyonun gövdesi küme açma ve küme kapama parantezleri<br />

arasındadır. Bu örnekte fonksiyon gövdesinde sadece bir tane JavaScript komutu vardır.<br />

O da alert fonksiyonunu çağıran ifadedir.<br />

alert fonksiyonu<br />

alert fonksiyonu küçük pencere kutusu oluşturmak için kullanılır. Bu fonksiyona<br />

gönderilen metin oluşturulan pencere içinde kullanıcıya gösterilir. Kullanıcı kendisine<br />

gösterilen küçük penceredeki OK butonuna tıklayınca işlem biter.<br />

HTML Form Elemanı<br />

Bu örnekte HTML sayfasının gövde kısmında im çifti gözükmektedir. Bu<br />

im çifti HTML sayfasında buton ve metin alanları gibi çeşitli grafik arayüzü elemanları<br />

oluşturmak için kullanılır. Bu örnekte form elemanı içinde imi kullanılmıştır.<br />

Bu imin type değeri button olarak verilmiştir. İnput elemanının type değeri button<br />

olarak verildiğinde, web sayfasında bir buton oluşturulur. Bu buton tıklanabilen bir buton<br />

olur. Bu butonun üzerinde gösterilecek metin de value özniteliği değeri olarak verilen<br />

147


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

metindir. Bu durumda üzerinde gösterilmesi için “Tıklayınız” metni verilmiştir. Bu<br />

butona tıklandığında ne yapılacağı ise onclick özniteliği ile belirtilir. Bu örnekte bu<br />

butona tıklandığında göster fonksiyonunun çağırılması istenmiştir.<br />

Fonksiyon Çağırma<br />

Fonksiyonları kullanmanın iki aşaması vardır. İlk aşaması fonksiyonları<br />

yazmaktır. İkinci aşaması ise fonksiyonları gerekli oldukları yerlerden çağırmaktır. Bu<br />

örnekte göster fonksiyonu HTML belgesinin baş kısmında yazılmıştır. Eğer bu<br />

fonksiyon HTML belgesi içinden hiç çağırılmaz ise, hiç işlem görmez. Dolayısıyla<br />

HTML belgesi içinden bu fonksiyonun çağırılması gerekir. Bu örnekte göster<br />

fonksiyonu butona tıklanınca çağırılmaktadır. Butonun onclick özniteliği, butona<br />

tıklanıldığında yapılacak işlemi belirtir. Bu durumda butona tıklanıldığında göster<br />

fonksiyonunun çağırılması istenmiştir.<br />

HTML belgelerinde genellikle fonksiyonlar baş kısımda yazılır ve bir olaya bağlı<br />

olarak çağırılırlar. Örneğin bu belgede kullanıcı butona tıklayınca bu fonksiyon<br />

çağırılmaktadır. Web sayfalarında butona tıklama gibi daha birçok farklı olay olur. İşte<br />

genellikle bu olaylar olduğunda bir fonksiyon çağırılır.<br />

Örnek Uygulama<br />

Bu örnektekine benzer bir web sayfası yazınız? Bu sayfada üç adet buton ve üç<br />

adet JavaScript fonksiyonu bulunsun. Her fonksiyona farklı bir isim veriniz ve her<br />

fonksiyon kullanıcıya farklı bir mesaj versin. Her butona tıklanınca farklı bir fonksiyon<br />

çağırılsın. İlk butona tıklayınca birinci fonksiyon, ikinci butona tıklayınca ikinci<br />

fonksiyon, üçüncü butona tıklayınca üçüncü fonksiyon çağırılsın.<br />

7.13 Küçük Pencereler: alert(), confirm(), prompt()<br />

Bir önceki bölümde görmüş olduğumuz gibi alert() fonksiyonu küçük bir<br />

pencere oluşturmak için kullanılır. Bu küçük pencerenin amacı kullanıcıya bilgi<br />

vermektir. Kullanıcı bu pencere üzerindeki Tamam butonuna basıncaya kadar, bu pencere<br />

ekranda bekler. Bu fonksiyonun örnek kullanımı bir önceki bölümde gösterilmiştir.<br />

Kullanıcının bir konuda onayını almak için ise confirm() fonksiyonu kullanılır.<br />

Bu fonksiyon kullanıcıya Tamam ve İptal seçeneklerini sunar. Kullanıcı bu<br />

seçeneklerden birini seçer. Buna göre program devam eder.<br />

Üçüncü bir küçük pencere çeşidi ise prompt() fonksiyonu ile oluşturulan bilgi<br />

alma penceresidir. Bu pencere ile kullanıcıdan bir bilgi girmesi istenir. Kullanıcının<br />

girmiş olduğu bilgi JavaScript programı içerisinde kullanılır.<br />

148


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Şimdi bu üç fonksiyonun da kullanıldığı bir örnek program görelim. Bu amaçla<br />

yazılmış bir sayfa Tablo 7-7’de verilmiştir.<br />

<br />

Arka Plan Rengi Değiştirme Uygulaması<br />

<br />

<br />

function onay(gelen){<br />

var seçim = confirm("Arka plan rengini değiştirmek<br />

istediğinizden emin misiniz?");<br />

if(seçim == false){<br />

return;<br />

}<br />

if(gelen == "SEÇ"){<br />

renk = prompt("İngilizce Renk ismi giriniz:", "BLUE");<br />

document.bgColor = renk;<br />

alert("Arka plan renginiz değiştirildi !!!!!!! ");<br />

}else{<br />

document.bgColor = gelen;<br />

alert("Arka plan renginiz değiştirildi !!!!!!! ");<br />

}<br />

}<br />

<br />

<br />

<br />

Arka Plan Rengi Değiştirme:<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

Tablo 7-7 Arka plan rengi değiştirme uygulaması kodu<br />

Bu HTML belgesi tarayıcı içinde görüntülendiğinde ve SARI butonuna<br />

tıklandığında Şekil 7-7’deki gibi gözükür.<br />

149


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Şekil 7-7 Arka plan rengi değiştirme uygulaması tarayıcı görüntüsü<br />

Bu sayfada herhangi bir butona tıklanırsa, Şekil 7-8’deki gibi bir pencere<br />

gözükür.<br />

Şekil 7-8 Örnek onay penceresi<br />

Bu pencerede eğer kullanıcı Vazgeç butonuna tıklarsa, her hangi bir işlem<br />

yapılmaz. Kullanıcı eğer Tamam butonuna tıklarsa, bu durumda ya arka plan rengi<br />

istenilen renge boyanır veya rengi kullanıcının girmesi istenir. Kullanıcının rengi girmesi<br />

için ise Şekil 7-9’daki gibi bir pencere gelir.<br />

Şekil 7-9 Bilgi giriş penceresi<br />

Bu pencerede kullanıcı arka plan rengini girer ve Tamam butonuna tıklar. Bundan<br />

sonra arka plan istenilen renge boyanır. Bu pencerede varsayılan değer olarak blue<br />

gösterilmiştir. Bu JavaScript kodu içinde belirtilmiştir.<br />

confirm() fonksiyonu<br />

150


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Bu örnekteki confirm fonksiyonu onay fonksiyonu içinde şu şekilde<br />

kullanılmıştır:<br />

var seçim = confirm("Arka plan rengini değiştirmek<br />

istediğinizden emin misiniz?");<br />

if(seçim == false){<br />

}<br />

return;<br />

Bu fonksiyon true (doğru) ya da false (yanlış) değeri döndürür. Kullanıcı<br />

gösterilen penceredeki Tamam butonuna basarsa true, İptal butonuna basarsa false<br />

değeri döndürülür. Bu programda dönen bu değeri seçim değişkenine atadık. Daha sonra<br />

if karar yapısı içinde seçim değişkeninin değerini kontrol ediyoruz. Eğer seçim<br />

değişkeni değeri false ise, yani kullanıcı İptal butonuna tıklamış ise, bu durumda<br />

fonksiyon biter. Fonksiyonun bitmesi return komutuyla sağlanır. Eğer seçim<br />

değişkeninin değeri false değil ise, yani true ise, bu durumda fonksiyonun diğer kısmı<br />

işlem görmeye devam eder.<br />

Bir fonksiyona değer gönderme<br />

Bir fonksiyon çağırılırken o fonksiyona bir değer gönderilebilir. Bu durumda<br />

öncelikle fonksiyonun bu değeri alabilecek şekilde yazılmış olması gerekir. Bu örnekteki<br />

onay fonksiyonu kendisine gönderilen bir değeri alabilecek şekilde tanımlanmıştır.<br />

Fonksiyonun tanım kısmı şu şekildedir:<br />

function onay(gelen){<br />

Görüldüğü gibi fonksiyon isminden sonra parantez içinde gelen isimli bir<br />

değişken vardır. Bu değişken fonksiyon çağırılırken gönderilen değeri almak için<br />

kullanılır. Fonksiyona gönderilen değer bu değişkende tutulur. Daha sonra fonksiyon<br />

içinde gelen değişkeni ile fonksiyona gönderilen değer istenildiği gibi kullanılır.<br />

Bu durumda fonksiyon çağırılırken de bir değer gönderilmelidir. Bu örnekte onay<br />

fonksiyonu aşağıdaki gibi değer gönderilerek çağırılmıştır:<br />

onclick="onay('RED')"<br />

onclick="onay('BLUE')"<br />

Daha önceki bölümdeki örnekte göster fonksiyonu çağırılırken sadece fonksiyon<br />

ismi yazılıyordu. Bu örnekte ise fonksiyon çağırılırken aynı zamanda bir değer de<br />

gönderilmektedir. Her buton bu fonksiyona farklı bir değer göndermektedir. Böylelikle<br />

aynı fonksiyon farklı butonlar tarafından çağırıldığında web sayfası arka plan rengini<br />

farklı renklere boyayabilmektedir.<br />

151


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

JavaScript ile Arka Plan Rengini Değiştirme<br />

JavaScript ile bir web sayfasının birçok özelliği değiştirilebilir. Bu özelliklerden<br />

biri de arka plan rengidir. Arka plan renk değişimi document.bgColor değerine bir renk<br />

atayarak yapılır. Örneğin arka plan rengi kırmızı yapılmak istenirse bu şu şekilde yapılır:<br />

document.bgColor = 'RED';<br />

Yukarıdaki örnek sayfada da arka plan rengi benzer şekilde değiştirilmiştir.<br />

prompt fonksiyonu<br />

Üçüncü tip küçük pencere prompt fonksiyonu ile oluşturulur. Bu küçük<br />

pencerenin diğer iki küçük pencere tipinden farkı, bu pencerenin kullanıcının bir değer<br />

girmesine imkân vermesidir. Bu örnekte prompt fonksiyonu şu şekilde kullanılmıştır:<br />

renk = prompt("İngilizce Renk ismi giriniz:", "BLUE");<br />

document.bgColor = renk;<br />

Bu şekilde prompt fonksiyonu çağırılarak oluşturulan küçük pencere Şekil 7-9’da<br />

gözükmektedir. prompt fonksiyonuna iki string değeri gönderilir. Bunlardan ilki pencere<br />

içinde kullanıcıya gösterilir. İkinci string ise kullanıcının değer gireceği alanda varsayılan<br />

değer olarak gösterilir. Bu örnekte kullanıcıya sürekli varsayılan değer olarak BLUE<br />

gösterilmektedir. Bu fonksiyondan dönen değer kullanıcının girdiği değerdir.<br />

Kullanıcının girdiği bu değer bu örnekte renk değişkenine atanmıştır. Daha sonra da bu<br />

renk değişkeni sayfanın arka plan rengini değiştirmek için kullanılmıştır.<br />

Örnek Uygulama<br />

Bir sayfanın arka plan rengini 5 renk arasından rasgele bir renge değiştiren bir<br />

uygulama yapınız? Sayfanızda bir tane buton bulunsun. Bu butona tıklanınca sayfa arka<br />

plan rengi sizin seçeceğiniz 5 renkten birine boyansın. Her tıklamada arka planın<br />

boyanacağı renk 5 renk arasından rasgele seçilsin. Bu işlem için bu örnekte olduğu gibi<br />

yine bir fonksiyon yazınız? Butona tıklanınca bu fonksiyonu çağırınız?<br />

Rasgele renk seçimi yapabilmeniz için her butona tıklanıldığında 0 ile 4 arasında<br />

rasgele bir sayı üretmeniz gerekir. JavaScript şu şekilde rasgele 0 ile 4 arasında bir sayı<br />

üretebilirsiniz:<br />

var rasgeleSayı = Math.floor(Math.random()*5);<br />

Bu şekilde rasgele sayı ürettikten sonra, eğer üretilen sayı 0 ise bir renge, 1 ise<br />

farklı bir renge, 2 ise daha farklı bir renge, vb. boyayabilirsiniz.<br />

152


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

7.14 JavaScript ile Tablo Oluşturma<br />

JavaScript web sayfalarında tablo oluşturmak için birçok durumda kullanılır.<br />

Özellikle tablodaki bazı değerler hesaplanarak oluşturulacaksa, JavaScript çok kolaylık<br />

sağlar.<br />

Şimdi bir derse ait vize, final ve ders ortalama notunu öğrencilere duyurmak için<br />

yazılmış bir web sayfası görelim. Bu sayfadaki tablonun her satırı bir JavaScript<br />

fonksiyonu tarafından oluşturulsun. Tabloya bir satır eklemek için yazılmış olan<br />

JavaScript fonksiyonu çağırılsın. Bu örnek sayfanın kodunu içeriği Tablo 7-8’deki gibi<br />

olabilir.<br />

<br />

JavaScript ile Tablo Oluşturma<br />

<br />

<br />

function satırEkle(isim, vize, final){<br />

document.write("");<br />

document.write(""+isim+"");<br />

document.write(""+vize+"");<br />

document.write(""+final+"");<br />

dersNotu = vize*0.4 + final*0.6;<br />

document.write(""+dersNotu+"");<br />

document.write("");<br />

}<br />

<br />

<br />

<br />

Vize ve Final Notları Tablosu: <br />

<br />

İsim Vize Notu Final Notu<br />

Ders Notu<br />

<br />

satırEkle("Ali Ak", 70, 80);<br />

satırEkle("Veli Kara", 80, 90);<br />

satırEkle("Mehmet Uzun", 70, 100);<br />

satırEkle("Tahir Kısa", 50, 90);<br />

<br />

<br />

<br />

<br />

Tablo 7-8 Dinamik tablo oluşturma örneği<br />

Bu HTML belgesi tarayıcı içinde Şekil 7-10’daki gibi gözükür.<br />

153


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Şekil 7-10 Dinamik tablo oluşturma örneği<br />

Öncelikle bu sayfadaki kodunu HTML gövde kısmını incelersek, ilk önce bir<br />

başlık oluşturuluyor. Sonra bir tablo oluşturuluyor ve bu tablonun ilk satırı HTML<br />

imleriyle oluşturuluyor. Sonra tablonun bilgi içeren diğer satırlarını oluşturmak için head<br />

kısmında yazılan satırEkle fonksiyonu çağırılıyor.<br />

satirEkle("Ali Ak", 70, 80);<br />

satirEkle("Veli Kara", 80, 90);<br />

satirEkle("Mehmet Uzun", 70, 100);<br />

satirEkle("Tahir Kısa", 50, 90);<br />

Dikkat edilirse bu fonksiyona sadece öğrenci ismi, vize ve final notları<br />

gönderiliyor. Ders notu değeri gönderilmiyor. Ders notu vize notu ile final notundan<br />

hesaplanabildiği için satırEkle fonksiyonuna gönderilmiyor. Bu fonksiyon içinde ders<br />

notu vize ve final notlarından hesaplanıp tabloya yazdırılıyor.<br />

Şimdi de satırEkle fonksiyonunu inceleyelim. Bu fonksiyonun amacı tabloya<br />

bir satır eklemektir. Tabloda da dört tane hücre bulunmaktadır. Öncelikle fonksiyon üç<br />

farklı parametre almaktadır. İlk parametre isim, ikinci parametre vize notu ve üçüncü<br />

parametre final notudur. Bu parametreler fonksiyonun her çağırılışında farklı değerler<br />

almaktadır. Fonksiyon içinde önce tablonun bir satırını oluşturmak için başlangıç<br />

imi yazılıyor, sonra da hücreler sırasıyla oluşturuluyor. En sonunda da satır sonu kapanış<br />

imi yani yazılıyor. Ayrıca ders notu vize ve final notu kullanılarak hesaplanılıyor.<br />

Örnek Uygulama<br />

Her satırı bir JavaScript fonksiyonu tarafından üretilen bir tablonun içinde olduğu<br />

örnek bir sayfa hazırlayınız? Tabloda futbol takımlarıyla ilgili bilgiler olsun. Tablonun<br />

her satırında 6 hücre bulunsun. Bu hücreler sırasıyla, takım ismi, toplam maç sayısı,<br />

galibiyet sayısı, beraberlik sayısı, mağlubiyet sayısı ve toplam puanı göstersin. Bu<br />

154


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

değerlerden ilk beşi fonksiyona parametre olarak gönderilsin. En son değer yani takımın<br />

toplam puanı fonksiyon içinde hesaplanarak tabloya yazılsın. Bu tabloya sayfanın gövde<br />

kısmında 5 takıma ait değerler giriniz? Yani bu fonksiyonu 5 defa farklı takımlar için<br />

çağırınız?<br />

7.15 Döngüler<br />

Diğer bütün dillerde olduğu gibi JavaScript dilinde de birçok döngü çeşidi vardır.<br />

JavaScript dilinde iki tip for döngüsü ve iki tip de while döngüsü mevcuttur. JavaScript<br />

dilindeki bu döngüler C ve Java dillerindeki döngülere benzerler.<br />

Şimdi bir for döngüsünün kullanıldığı örnek bir sayfa görelim. Bu sayfadaki for<br />

döngüsü bir çarpım tablosu oluşturmak için kullanılıyor. Bu döngü 1’den başlayarak 10’a<br />

kadar sayıları çarpım tablosuna yazıyor. Döngünün her dönmesinde tabloda bir satır<br />

oluşturuluyor.<br />

Çarpım tablosunu oluşturan fonksiyon yine head kısmında yazılmış olup, gövde<br />

kısmında istenilen değer için çağırılmıştır. Bu şekilde hangi değer gönderilirse o sayı için<br />

çarpım tablosu oluşturulmaktadır. Bu sayfanın HTML kodu Tablo 7-9’da verilmiştir.<br />

<br />

JavaScript ile Çarpım Tablosu Oluşturma<br />

<br />

<br />

function çarpımTablosuOluştur(sayı){<br />

document.write("");<br />

for(i = 1; i


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Tablo 7-9 Döngülerle tablo oluşturma<br />

Bu HTML belgesi tarayıcı içinde Şekil 7-11’deki gibi gözükür.<br />

Şekil 7-11 Döngülerle tablo oluşturma<br />

Bu örnekte tablonun tamamı çarpımTablosuOluştur fonksiyonu içinde<br />

oluşturulmuştur. Dolayısıyla bu örnekteki fonksiyon başında önce tablo oluşturmak için<br />

imi yazılmıştır. Fonksiyonun sonunda ise tablonun kapanış imi yazılmıştır.<br />

Tablonun her bir satırı ise for döngüsünün bir dönmesinde oluşturulmuştur. Daha önceki<br />

örnekte fonksiyonun tamamında tablonun bir satırı oluşturuluyordu, bu örnekte ise for<br />

döngüsünün her dönmesinde tablonun bir satırı oluşturulmaktadır.<br />

JavaScript’te for döngüsü şu şekilde yazılır:<br />

for(i = 1; i


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

içinde yani döngünün gövde kısmında tablonun bir satırını oluşturmak için komutlar<br />

bulunmaktadır.<br />

Örnek Uygulama<br />

Kullanıcının gireceği bir tamsayıdan küçük bütün pozitif sayıları ve karelerini bir<br />

tabloda gösteren bir sayfa yazınız? JavaScript kodu başında önce kullanıcının bir sayı<br />

girmesini isteyiniz? Bunun için prompt() fonksiyonunu kullanınız? Daha sonra bir tablo<br />

oluşturunuz? Tablonun her satırında iki tane hücre olsun. İlk hücre sayıyı, ikinci hücre bu<br />

sayının karesini göstersin. for döngüsünün her dönmesinde tabloda bir tane satır<br />

oluşturunuz? Örneğin kullanıcı 5 sayısını girerse, tablonun ilk satırında 5 ve 25 olmalı.<br />

İkinci satırında 4 ve 16 olmalı. Bu şekilde devam etmeli ve en son satırda 1 ve 1 olmalı.<br />

Bu uygulamada fonksiyon kullanmanıza gerek yok.<br />

7.16 Harici JavaScript Dosyası Kullanma<br />

Bir HTML belgesi içinde kullanacağımız JavaScript fonksiyonlarını head kısmı<br />

yerine harici dosyalarda da yazabiliriz. Bu durumda head kısmında kullanacağımız<br />

JavaScript dosyasına bağlantı veririz. Harici JavaScript dosyalarının kullanımı harici CSS<br />

dosyalarının kullanımına benzer.<br />

Şimdi bir önceki örnekte yazmış olduğumuz JavaScript fonksiyonunu harici bir<br />

JavaScript dosyasında yazalım. Daha sonrada bu fonksiyonun web sayfası içinden nasıl<br />

kullanıldığını görelim.<br />

Tablo 7-10’daki JavaScript kodu carpimtablosu.js isimli bir dosyaya<br />

kaydediniz. Bu dosyanın uzantısının .js olduğuna dikkat ediniz. Ayrıca bu dosya içinde<br />

script iminin kullanılmadığına dikkat ediniz. Çünkü script imi bir HTML imidir.<br />

Oysa bu dosya bir HTML dosyası olmayıp, bir JavaScript dosyasıdır.<br />

function çarpımTablosuOluştur(sayı){<br />

document.write("");<br />

for(i = 1; i


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Daha sonra bu dosya Tablo 7-11’deki gibi bir HTML belgesi içinde bağlantı<br />

verilerek kullanılabilir.<br />

<br />

Harici JavaScript Dosyası kullanımı<br />

<br />

<br />

<br />

Carpim Tablosu:<br />

<br />

carpimTablosuOlustur(5);<br />

<br />

<br />

<br />

<br />

Tablo 7-11 Harici JavaScript dosyası kullanan bir HTML belgesi<br />

Bu HTML belgesinin head kısmında kullanılan script imine dikkat ediniz. Bu<br />

durumda script imi içerisinde JavaScript kodu yerine, bu imin src özniteliği<br />

kullanılmıştır. Bu öznitelik değeri olarak JavaScript kodunun bulunduğu dosya adı<br />

verilmiştir. Bu örnekte HTML belgesi ile JavaScript dosyasının aynı dizinde olduğu<br />

varsayılmıştır. Eğer JavaScript dosyası farklı bir dizindeyse, bu dosyanın yolu uygun bir<br />

şekilde belirtilmelidir. Diğer yandan başka bir web sayfasında bulunan JavaScript<br />

dosyasına bağlantı verilerbilir. Bu durumda src özniteliği değeri olarak bu JavaScript<br />

dosyasının tam URL adresi verilmelidir.<br />

7.17 Diziler<br />

Diğer bütün dillerde olduğu gibi JavaScript dilinde de dizi desteği vardır. Diziler<br />

aynı türden bir çok veriyi gruplamaya imkan verir. Bir değişken tek bir değer tutarken,<br />

bir dizi değişkeni aynı tipten birden fazla veri tutar. JavaScript dilinde dizi bir nesnedir<br />

[10]. Bir dizi değişkeni Array anahtar kelimesi kullanılarak oluşturulur.<br />

Şimdi bir dizinin JavaScript içinde nasıl kullanıldığını örnek bir sayfa ile görelim.<br />

Bu sayfa basit bir oyun sayfasıdır. Kullanıcının rasgele 10 sayıdan birisini tahmin etmesi<br />

istenmektedir. Sonuca göre kullanıcıya eğer bildiyse bir tebrik mesajı, eğer bilemediyse<br />

de farklı bir mesaj verilmektedir.<br />

Bu sayfada bir JavaScript fonksiyonu yazılmıştır. Bu fonksiyon sayfanın head<br />

kısmında bulunmaktadır. Bu fonksiyon sayfa gövdesinde bulunan bir buton tarafından<br />

çağırılmaktadır. Bu sayfanın HTML kodu Tablo 7-12’de verilmiştir.<br />

158


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

<br />

Sayı Tahmin Oyunu<br />

<br />

<br />

function tahminEt(){<br />

// bir dizi oluştur<br />

var sayılar = new Array();<br />

// diziye rasgele oluşturulmuş 5 sayı koyalım<br />

for(i = 0; i


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Şekil 7-12 Sayı tahmin oyunu penceresi<br />

Bu penceredeki OYNA butonuna kullanıcı tıkladığında, kullanıcının 1 ile 20<br />

arasında bir sayı girmesi için küçük bir pencere gelir. Sonra girdiği sayı eğer rasgele<br />

sayılardan bir tanesiyle aynıysa, kendisine rasgele bir sayıyı bulduğunu belirten yeni bir<br />

mesaj penceresi daha gelir. Eğer girdiği sayı rasgele sayılardan bir tanesiyle aynı değilse,<br />

bu durumda da yine kendisine bu yönde bir mesaj veren küçük bir pencere gelir. Bu<br />

şekilde kullanıcı oyunu istediği kadar oynayabilir.<br />

Şimdi programın içeriğini inceleyelim. Öncelikle tahminEt fonksiyonu içinde bir<br />

dizi oluşturuluyor. Bu dizi şu şekilde oluşturuluyor:<br />

var sayılar = new Array();<br />

Diğer değişkenlerden farklı olarak dizi değişkenlerinin kullanılmadan önce bu<br />

şekilde Array kelimesi ile açıkça oluşturulmaları gerekir. Dizi değişkeni olan sayılar<br />

oluşturulduktan sonra, for döngüsü içinde bu diziye 10 tane rasgele sayı atanıyor. Bu<br />

sayılar 1 ile 20 arasında rasgele üretilen sayılardır. Daha sonra kullanıcıdan bir sayı<br />

girmesi isteniyor ve kullanıcının girmiş olduğu sayı, sayı değişkeninde tutuluyor. Sonra<br />

da yine başka bir for döngüsünde kullanıcının girmiş olduğu sayı değerinin dizideki<br />

sayılardan her hangi birine eşit olup olmadığı kontrol ediliyor. Eğer herhangi birisine<br />

eşitse, kullanıcıya bir mesaj veriliyor ve fonksiyon bitiriliyor. Kullanıcıya mesaj<br />

verildikten sonra gelen return anahtar kelimesi fonksiyonun o noktada biteceğini<br />

gösteriyor. Eğer dizideki bütün elemanlar kontrol edildikten sonra hala eşit bir sayı<br />

yoksa, bu durumda for döngüsü bitince kullanıcıya başka bir mesaj veriliyor ve<br />

fonksiyon bu şekilde bitiyor.<br />

Fonksiyon içindeki str değişkeni programımızdaki önemli bir ayrıntıyı<br />

oluşturuyor. Eğer kullanıcı sayılardan birisini tahmin edemezse bütün sayıları kullanıcıya<br />

göstermek istiyoruz. Bunun için bir string değişkeninde sayıları art arda ekliyoruz.<br />

Döngünün her dönmesinde dizinin bir elemanını str değişkenine ekliyoruz. Böylece for<br />

döngüsü bittiğinde bütün sayılar str değişkenine eklenmiş oluyor. Fonksiyon sonunda<br />

kullanıcıya bilemediğine dair mesajı verirken bütün sayıları da str değişkeninden<br />

yazdırıyoruz.<br />

160


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Dizi Olusturma<br />

Dizi oluşturmanın diğer bir metodu da bütün dizi elemanlarına dizi oluştururken<br />

değer atamaktır. Bu şu şekilde yapılır:<br />

var sayılar = new Array(2, 30, 45, 30, 60);<br />

var isimler = new Array(“Ahmet”, “Mehmet”, “Ali”, “Ayşe”,<br />

“Fatma”);<br />

Bu durumda tek komutla hem sayılar ve isimler dizisi oluşturulur hem de bu<br />

dizilere değerler atanır. sayılar dizisinin ilk elemanının değeri 2, ikinci elemanı değeri<br />

30, vb. olur. Benzer şekilde isimler dizisinde stringler tutulur. Bu dizinin de ilk elemanı<br />

“Ahmet”, ikinci elemanı “Mehmet”, vb. olur.<br />

Rasgele Sayı Üretme<br />

JavaScript dilinde rasgele sayı üretmek için Math.random() fonksiyonu<br />

kullanılır. Bu fonksiyon 0 ile 1 arasında rasgele bir ondalıklı sayı üretir (sıfır üretilebilir<br />

ama 1 üretilemez, yani üretilen sayılara sıfır dahil, 1 ise hariçtir.) Eğer bizim üretmek<br />

istediğimiz sayı daha büyük bir rasgele sayıysa, bu durumda üretilen sayıyı başka bir<br />

sayıyla çarparız. Örneğin bu uygulamada biz 1 ile 20 arasında (ikisi de dahil) rasgele bir<br />

sayı üretmek istiyoruz. Bunun için Math.random() fonksiyonu ile üretilen sayıyı 20 ile<br />

çarpıyoruz. Bu durumda üretilen sayı 0 ile 20 arasında olmuş oluyor (sıfır dahil 20 hariç).<br />

Daha sonra Math.floor() fonksiyonu ile üretilen bu sayıyı tamsayıya çeviriyoruz. Bu<br />

fonksiyon üretilen sayının ondalıklı kısmını atıyor. Eğer üretilen sayı 15.7 ise, bunun<br />

ondalıklı kısmını atıyor ve sonuç 15 oluyor. En son adımda ise, üretine bu ondalıklı<br />

sayıya 1 ekliyoruz. Çünkü bu haliyle üretilen sayı 0 ile 20 arasında oluyor ( sıfır dahil, 20<br />

hariç). Biz ise üretilen sayının 1 ile 20 arasında (ikisi de dahil) olmasını istiyoruz. Bunu<br />

elde edebilmek için de üretilen sayıya 1 ekliyoruz.<br />

Örnek Uygulama<br />

Siz de yazacağınız bir sayfada isim tahmin etme oyunu geliştiriniz? Bir dizide 10<br />

tane kişi ismi tutunuz? Kullanıcının gireceği bir isim listede varsa, kullanıcıya bir tebrik<br />

mesajı veriniz? Eğer girdiği isim listede yoksa, tekrar oynaması için bir teşvik mesajı<br />

veriniz?<br />

7.18 Özetle<br />

Bu bölümde JavaScript dilinin temel özellikleri örneklerle anlatılmıştır. Bu<br />

bölümün amacı JavaScript dilini bütün incelikleriyle anlatmak olmayıp, genel bir temel<br />

oluşturmaktır. Burada oluşturulan temel üzerine isteyen kişiler kendi gayretleriyle<br />

eklemeler yapabilirler.<br />

161


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Ayrıca bu bölümde programlamanın temelleri anlatılmamıştır. Bu bölümü çalışan<br />

kişilerin daha önceden programlamanın temellerini bildikleri varsayılmıştır. Özellikle<br />

değişkenler, karar yapıları, döngü yapıları ve fonksiyonlar gibi konularda okuyucuların<br />

her hangi bir programlama dilinden bilgilerinin olduğu varsayılmıştır.<br />

JavaScript dilinde olaylar önemli bir yere sahiptir. Biz bu bölümde kolaylık<br />

olması açısından sadece butona basılma olayıyla ilgili örnekler yaptık. Ama benzer<br />

şekilde daha birçok olay çeşidi vardır. Bu bölümdeki anlatılan kısımları iyi anlayan bir<br />

kişi diğer çeşit olayları da öğrenmekte çok güçlük çekmeyecektir.<br />

7.19 JavaScript ile İlgili Bazı Kaynaklar<br />

JavaScript ile ilgili daha geniş bilgi için Türkçe kitap olarak şu kıtabı önerebiliriz:<br />

Kitap Adı: JavaScript Temel Başvuru Kılavuzu<br />

Yazarı: Steven HOLZNER<br />

Yayınevi: Alfa Yayınları<br />

ISBN: 9752973310<br />

Ayrıca İnternet’te JavaScript ile ilgili çok fazla kaynak mevcuttur. Bunlardan<br />

bazıları şunlardır:<br />

http://www.w3schools.com/js/default.asp<br />

http://www.w3schools.com/js/js_examples.asp<br />

http://www-k12.atmos.washington.edu/~ovens/javascript/jsindex.html<br />

7.20 Referanslar<br />

[1] Static web page, http://en.wikipedia.org/wiki/Static_web_page, 7 Ekim 2009.<br />

[2] Dynamic web page, http://en.wikipedia.org/wiki/Dynamic_web_page, 7 Ekim 2009.<br />

[3] Server-side scripting, http://en.wikipedia.org/wiki/Server-side_scripting, 7 Ekim<br />

2009.<br />

[4] Client-side scripting, http://en.wikipedia.org/wiki/Client-side_scripting, 7 Ekim<br />

2009.<br />

[5] JavaScript, http://en.wikipedia.org/wiki/JavaScript, 7 Ekim 2009.<br />

162


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

[6] VBScript, http://en.wikipedia.org/wiki/VBScript, 7 Ekim 2009.<br />

[7] JavaScript Variables, http://www.w3schools.com/js/js_variables.asp, 7 Ekim 2009.<br />

[8] JavaScript If...Else Statements, http://www.w3schools.com/js/js_if_else.asp, 7 Ekim<br />

2009.<br />

[9] JavaScript Functions, http://www.w3schools.com/js/js_functions.asp, 7 Ekim 2009.<br />

[10] JavaScript Array Object, http://www.w3schools.com/js/js_obj_array.asp, 7 Ekim<br />

2009.<br />

163


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Bölüm 8<br />

8.1 Amaç<br />

MULTİMEDYA<br />

Bu bölümde amacımız, dijital ses ve videonun temellerinin anlaşılması ve bunların<br />

web sayfaları içinde sunulmasının öğrenilmesidir. Bu amaçla öncelikle dijital sesin<br />

bilgisayarda kaydedilmesinin temelleri anlatılmıştır. Sonra bu sesin sıkıştırılması<br />

teknikleri anlatılmış ve örnek uygulaması yapılmıştır. Bu ses dosyalarının web sayfaları<br />

içinde sunulması anlatılmıştır. Daha sonra dijital videonun temelleri, bilgisayarda<br />

kaydedilmesi ve web sayfası içinde sunulması gösterilmiştir. Ayrıca Flash video<br />

oluşturma ve web sayfası içinde sunulması işlenmiştir.<br />

8.2 Giriş<br />

Web sayfalarına metin ve görüntüye ek olarak ses ve video eklemek te<br />

mümkündür. Web sayfalarına sadece ses dosyaları eklenebileceği gibi sesli video<br />

dosyaları da eklenebilir. Son yıllarda özellikle video içeriğe sahip web siteleri hızla<br />

artmıştır. Youtube.com gibi sitelerin video kliplerini kolayca ve bedava paylaşma imkanı<br />

sunmasıyla web’de video kullanımı yaygınlaşmıştır. Bu sitelerdeki videoların çoğu<br />

eğlence amaçlı olmakla birlikte eğitim amaçlı, reklam ve tanıtım amaçlı video siteleri de<br />

yaygındır.<br />

8.3 Dijital Sesin Temelleri<br />

Sesler havada titreşimler yardımıyla analog olarak yayılır. Bir kişinin ağzından<br />

çıkan bir ses hava zerreciklerini titreştirerek etrafa yayılır. Dinleyicinin kulağına çarpan<br />

bu hava zerrecikleri sesin duyulmasını sağlar. Ses bilgisayar ortamında ise dijital olarak<br />

saklanır. Analog ses önce microfondan alınır ve dijital hale getirilir [1]. Bu şekilde<br />

bilgisayar ortamında tutulur veya İnternet üzerinden paylaşılır. Bilgisayardaki ses<br />

164


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

dosyaları çalındığında ise ses bilgileri hoporlörlerde dijital halden analog hale çevrilir ve<br />

insanların duyabilmesi için etrafa yayılır.<br />

Seslerin dijital hale getirilmeleri belirli bir periyotla seslerin anlık değerlerinin<br />

kaydedilmeleri ile olur. Örneğin normal bir insan konuşması bilgisayara kaydedilecekse,<br />

bunun için sesin saniyede 8000 tane farklı anlık değeri alınır. Bu şekilde bilgisayar<br />

ortamına aktarılır. Her bir anlık değerin büyüklüğü ise 8 bit olabilir. Bu şekilde bir sesin<br />

bir saniyelik kısmının bilgisayarda kaplayacağı alan şu kadar olur:<br />

8000*8= 64,000 bit. Yani 8,000 byte.<br />

Aynı sesin bir dakikalık kısmının bilgisayarda kaplayacağı alan ise<br />

60*8,000byte = 480,000 byte olur.<br />

Yani bir dakikalık bir ses kaydının bilgisayardaki büyüklüğü 480 KB civarında<br />

olur. Dolayısıyla dijital ses bilgisyarda çok fazla miktarda yer kaplar. Diğer yandan eğer<br />

kaydetmek istediğimiz ses bir kişinin konuşması değil de eğer bir müzik olsaydı, bu<br />

durumda sesi dijital hale getirirken sesin anlık değerinin daha sıklıkla alınması gerekirdi.<br />

Yoksa müzik kalitesinde ciddi orada düşüş meydana gelirdi. CD kalitesinde bir müzik<br />

dijital hale getirilmek istendiğinde saniyede 44,100 örnek alınır ve her bir örnek 16 bit<br />

büyüklüğünde olur. Buna ek olarak streo ses için aynı işlem iki kanal olarak yapılır.<br />

Bunun sonucunda 1 saniyelik dijital ses için gerekli olan alan miktarı:<br />

44,100*16*2= 1,411,200 bit olur. Yani 176,400 Byte olur.<br />

Aynı müziğin bir dakikalık kısmının bilgisayarda kaplayacağı alan ise<br />

60*176,400 = 10,584,000 Byte olur.<br />

Dolayısıyla 1 dakikalık bir müzik dijital halde bilgisayar belleğinde 10MB<br />

civarında yer kaplar. Bu da çok büyük bir miktardır. Özellikle İnternet üzerinden bu tür<br />

dosyaların bu halleriyle paylaşılması uygun değildir. Bunun için görüntülerde olduğu gibi<br />

seste de birçok sıkıştırma algoritması kullanılır. Bu algoritmalar yine görüntülerde olduğu<br />

gibi kayıplı ve kayıpsız olarak iki çeşittir.<br />

Ses ham veri olarak sıkıştırılmadan Windows bilgisayarlarda genellikle wav<br />

dosyalarında tutulur [2]. Wav dosyalarının kullanımı yaygındır. Özellikle üzerinde<br />

değişiklik yapılacak sesler ilk önce wav formatında ham veri olarak kaydedilir. Değişik<br />

programlarla ses dosyası üzerinde işlemler yapıldıktan sonra genellikle ses bir sıkıştırma<br />

algoritmasıyla [3] sıkıştırılır ve bu halleriyle kullanılır. Ses üzerinde değişiklikler yapan<br />

ve başka formatlara dönüştüren programlar çoğunlukla wav dosyaları üzerinde yani ham<br />

ses verisi üzerinde işlem yaparlar.<br />

165


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Şu anda ses için en yaygın kullanılan sıkıştırma tekniği kayıplı sıkıştırma<br />

algoritmalarıdır. Bunlar sesin kalitesinden çok az kaybederek büyük ordan yer kazancı<br />

sağlamayı hedeflerler. Bu algoritmalardan en yaygın olanlarından birisi de mp3<br />

algoritmasıdır. Bu algoritma ham veri haldeki sesin boyunu yaklaşık 10’da 1 oranında<br />

azaltır. Fakat ses kalitesinde fark edilir bir düşüş gözlenmez. Çoğunlukla kaybedilen ses<br />

bilgisi insanların duyma sınırının dışında kalan verilerdir. Mp3 [4] gibi daha birçok<br />

kayıplı sıkıştırma algoritmaları vardır. Bunlar kullanım alanlarına ve istenilen ses<br />

kalitesine göre farklılık gösterirler. Diğer yandan kayıpsız sıkıştırma yapan algoritmalar<br />

da geliştirilmiştir. Fakat bunlar kayıplı sıkıştırma yapan algoritmalar kadar yaygın<br />

kullanılmamaktadır.<br />

8.4 Sesin Kaydedilmesi<br />

Bir Windows bilgisayarında ses kaydetmek nispeten kolaydır. Bunun için<br />

öncelikle bilgisayara bağlı bir mikrofon gereklidir. Daha sonra ses kaydetmek için<br />

Windows ile birlikte gelen “Ses Kaydedicisi” programı kullanılabilir. Bu program<br />

Donatılar altındaki Eğlence menüsü içindedir.<br />

Şimdi mikrofondan ses kaydı yapmanın bir örneğini görelim. Bunun için<br />

öncelikle Donatılar altında bulunan Eğlence menüsündeki “Ses Kaydedicisi” programını<br />

başlatınız. Bu programın görüntüsü Şekil 8-1’deki gibidir.<br />

Şekil 8-1 Ses Kaydedicisi programı pencere görüntüsü<br />

Bu program üzerinde bulunan en sağdaki kırmızı yuvarlaklı buton kayıt<br />

butonudur. Bu butona tıklayınca ses kaydı başlar. Bu butona tıklayınız ve mikrofona<br />

konuşmaya başlayınız. Ses kaydı yapılırken bu pencerenin ortasındaki yeşil çizginin sesin<br />

şiddetine göre değiştiğini gözlemleyiniz. Daha sonra bu pencerede bulunan kayıt<br />

butonunun hemen yanındaki stop butonuna basarak kaydı durdurunuz. Artık kaydetmiş<br />

olduğunuz bu sesi tekrar çalabilirsiniz. Bu sesi çalmak için aynı penceredeki oynatma<br />

butonuna tıklayınız. Bu durumda kaydetmiş olduğunuz sesi bilgisayar hopörlöründen<br />

dinlersiniz.<br />

Kaydetmiş olduğunuz sesi bir dosyaya kaydedebilirsiniz. Bunun için Ses<br />

Kaydedicisi penceresindeki Dosya menüsünde bulunan Kaydet seçeneğini seçiniz.<br />

Gelen pencerede dosyanın kaydedileceği dizini seçiniz ve dosyaya bir isim veriniz.<br />

Dosyanızın uzantısı wav şeklinde olacaktır. Çünkü kaydetmiş olduğunuz ses dosyası<br />

sıkıştırılmamış ham veri içeren bir ses dosyasıdır.<br />

166


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Bu notların yazıldığı zamanda bir Windows XP bilgisayarında bulunan Ses<br />

Kaydedicisi programı, sesi saniyede 22,050 defa örnekleyerek ve her bir örneğin boyu<br />

da 16 bit olarak kaydetmektedir. Bu bilgiyi de Ses Kaydedicisi programının Dosya<br />

menüsünde bulunan Özellikler seçeneğinden kontrol edebilirsiniz. Bu değerler kaydı<br />

yapan mikrofonun özelliklerine göre değişebilir.<br />

Kaydedilen ses dosyası artık herhangi bir medya oynatıcısı ile çalınabilir. Örneğin<br />

Windows Media Player ile kaydetmiş olduğunuz dosyayı çalabilirsiniz.<br />

Örnek Uygulama<br />

Ses Kaydedicisi programını kullanarak değişik sürelerde konuşma kaydediniz?<br />

Üretilen ses dosyalarının boyunun konuşma süresine göre nasıl değiştiğini<br />

gözlemleyiniz? Ses kayıt süresi iki katına çıkınca, dosya boyu da iki katına<br />

çıkmaktamıdır? İnceleyiniz?<br />

8.5 Sesin Sıkıştırılması<br />

Ses dosyaları ham veri olarak yani wav dosyası halinde çok yer kapladığından<br />

web sayfalarına bu halleriyle konulmaları uygun olmaz. Bu dosyaların önce<br />

sıkıştırılmaları gerekir. Daha önceki bölümlerde vurguladığımız gibi sesi sıkıştırmak için<br />

çok farklı algoritmalar geliştirilmiştir. Bu bölümde biz Microsoftun bir sıkıştırma<br />

programı olan Windows Media Encoder programını kullanarak ses dosyasını önce<br />

sıkıştıracağız, sonra da web sayfası içine yerleştireceğiz.<br />

İlk adım olarak Windows Media Encoder programını indirip bilgisayarınıza<br />

kurunuz. Bu program bedava bir program olup Eylül 2009 tarihi itibariyle<br />

http://www.microsoft.com/windows/windowsmedia/forpros/encoder/default.mspx<br />

adresinden indirilmektedir. Daha sonra eğer bu adres değişirse, bir arama motorundan bu<br />

programın ismini aratarak indirilecek adresi bulabilirsiniz.<br />

Şimdi adım adım bir wav dosyasını Windows Media Encoder programını<br />

kullanarak nasıl sıkıştırılmış bir dosya haline getireceğimizi görelim.<br />

1. Windows Media Encoder programını başlatınız? Bu programı başlattığınızda<br />

bu oturumda ne yapmak istediğinizle ilgili bir küçük pencerede seçim<br />

yapmanız istenir. Bu pencerede dosya formatı değiştirme seçeneğini, yani<br />

“Convert a file” seçeneğini seçiniz. Sonra Next butonuna tıklayınız.<br />

2. Gelen ikinci küçük pencerede kaynak dosya ve hedef dosyaların belirtilmesi<br />

istenir. Bu penceredeki ilk seçenek kaynak dosyadır ve İngilizce olarak<br />

“source file” olarak tanımlanır. Kaynak dosyayı daha önceki kaydetmiş<br />

olduğumuz wav dosyası olarak seçiniz. İkinci seçenek oluşturulacak dosyadır.<br />

167


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

O da İngilizce olarak “Output File” olarak geçmektedir. Bu dosyaya kendisi<br />

otamatik olarak bir değer verir. Siz isterseniz bunun yolunu ve ismini<br />

değiştirebilirsiniz. Sonuçta üretilecek dosya bu olacaktır. Üretilecek dosyanın<br />

uzantısının wma olduğuna dikkat ediniz. Next butonuna tıklayınız.<br />

3. Üçüncü adımda bu dosyanın nasıl kullanılacağı sorulmaktadır. Kullanım<br />

amacına göre farklı sıkıştırma algoritması kullanılacaktır. Biz üretilen ses<br />

dosyasını bir web sunucusundan bir web sayfası ile kullanıcılara sunacağımız<br />

için, bu seçeneklerden web sunucusu seçeneğini seçiniz. Bu seçenek İngilizce<br />

olarak “web server (progressive download)” olarak verilmiştir. Next butonuna<br />

tıklayınız.<br />

4. Dördüncü adımda ise üretilecek ses dosyasının özellikleri sorulmaktadır. Bu<br />

pencerede Audio başlığı yanında bulunan aşağı açılan menüye tıklayınız.<br />

Burada sunulan seçeneklerden “Voice Quality Audio” seçeneğini seçiniz.<br />

Eğer dosyanız bir müzik dosyası olsaydı bu durumda “CD Quality Audio”<br />

seçeneğini seçebilirdiniz. Bu adım sonunda Finish butonuna tıklayınız ve yeni<br />

ses dosyasını üretiniz. Ses dosyası üretildikten sonra encoder programı<br />

penceresinin görüntüsü Şekil 8-2’deki gibidir.<br />

Üretilen ses dosyasının boyutunun ilk wav dosyası boyundan çok küçük olduğunu<br />

göreceksiniz. Bu sıkıştırma sonucu elde edilen yer kazancıdır. Üretilen dosyayı Windows<br />

Media Player veya başka bir medya oynatıcısı ile çalınız ve ses kalitesine dikkat ediniz.<br />

Ses kalitesinde çok açık bir fark olmadığını göreceksiniz.<br />

Örnek Uygulama<br />

Şekil 8-2 Windows Media Encoder görüntüsü<br />

168


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Aynı wav dosyasını Windows Media Encoder programını kullanarak farklı<br />

formatlara dönüştürmeyi deneyiniz? CD Kalitesinde ses için üretilen dosya ile Voice<br />

Quality Audio için üretilen dosyalar arasındaki boy ve kalite farkını karşılaştırınız?<br />

Ayrıca konuşma ve şarkı dosyalarını farklı formatlara dönüştürmeyi deneyiniz? Sonuçta<br />

üretilen dosyalar arasındaki kalite farkını gözlemlemeye çalışınız?<br />

8.6 Ses Dosyalarının Web Sayfalarına Konulması<br />

Bu bölümde bir önceki bölümde oluşturmuş olduğumuz sıkıştırılmış ses dosyasını<br />

web sayfasına nasıl koyacağımızı görelim. Bu amaçla hazırlanmış bir örnek web sayfası<br />

kodu Tablo 8-1’de verilmiştir.<br />

<br />

Web Sayfasına Ses Dosyası Ekleme<br />

<br />

<br />

<br />

Web Sayfasına Ses Dosyası Ekleme<br />

Aşağıdaki medya oynatıcısını kullanarak sesi çalabilirsiniz:<br />

<br />

<br />

<br />

<br />

Tablo 8-1 Web sayfasına ses yerleştirme örneği<br />

Bu HTML belgesi tarayıcı içinde Şekil 8-3’deki gibi gözükür.<br />

Şekil 8-3 Web sayfasına ses yerleştirme örneği<br />

Görüldüğü gibi tarayıcı penceresi içinde bir Windows Media Player<br />

görünmektedir. Bu oynatıcı üzerindeki butonlara tıklanarak web sayfasındaki ses dosyası<br />

çalınabilir veya durdurulabilir.<br />

169


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Bu sayfa içine ses dosyasının yerleştirilmesi için imi kullanılmıştır. Bu<br />

imin birçok özniteliği vardır. Bunlardan src özniteliği çalınacak ses dosyasının adını ve<br />

yolunu gösterir. Bu örnekte ses dosyası adı deneme1.wma olarak verilmiştir ve bu ses<br />

dosyası bu web sayfasının bulunduğu dizinde bulunan kayit dizini içindedir. Width ve<br />

height öznitelikleri medya oynatıcısının eninin ve boyunun büyüklüğünü gösterir.<br />

Autostart özniteliği ise sesin sayfa yüklenince hemen çalınmaya başlanıp<br />

başlanmayacağını gösterir. Bu örnekte bu özniteliğin değeri false olarak verildiği için<br />

sayfa yüklenince ses hemen çalınmaya başlamaz. Ancak kullanıcı play butonuna tıklarsa<br />

o zaman ses çalınmaya başlar. Eğer sesin hemen çalınmaya başlaması istenseydi, bu<br />

durumda autostart özniteliği değeri true olarak verilmeliydi. Bu örnekte kullanılan<br />

diğer bir öznitelik ise loop özniteliğidir. Bu öznitelik sesin çalınması bittikten sonra<br />

tekrar çalınmaya başlanıp başlanmayacağını belirler. Bu örnekte loop değeri false<br />

olduğu için ses tekrar çalınmaya başlamaz. Eğer değeri true olsaydı, bu durumda ses<br />

tekrar tekrar çalınırdı.<br />

HTML dili standardı bu örnekte kullanılan embed imi yerine object iminin<br />

kullanılmasını tavsiye etmektedir. Fakat şu anda object imi standardı bütün tarayıcılar<br />

tarafından aynı şekilde desteklenmemektedir. Bu yüzden örneğimizde embed imi<br />

kullanılmıştır.<br />

Örnek Uygulama<br />

Hazırlayacağınız bir web sayfasına oluşturmuş olduğunuz bir ses dosyasını<br />

koyunuz ve tarayıcı ile bu sesi çalınız? Web sayfanız içindeki embed imi boy değerlerine<br />

(width ve heigth) farklı değerler vererek oynatıcının tarayıcı içinde nasıl göründüğünü<br />

gözlemleyiniz? Ayrıca autostart ve loop öznitelik değerlerine true değeri atayarak bu<br />

özniteliklerin oynatıcı üzerindeki etkisini gözlemleyiniz?<br />

8.7 Midi Melodi Dosyaları ve Arka Plan Sesi<br />

Midi melodi dosyalarının [5] diğer ses dosyalarından farklı bir özelliği vardır. Bu<br />

melodi dosyalarında ses kaydedilemez. Sadece melodiler kaydedilir. Bunun sebebi bu<br />

dosyalarda melodilerin ses değeri olarak değil sadece tanım olarak kaydedilmeleridir.<br />

Diğer ses dosylarında sesler belirli aralıklarla örneklenir ve bu değerler ses dosyalarında<br />

tutulur. Fakat midi dosyalarında ses örnekleri yoktur. Sadece nota bilgisi, sesin şiddeti<br />

gibi bilgiler kayıtlıdır. Bu bilgilerden melodi her defasında tekrar üretilir. Dolayısıyla bu<br />

tip dosyalarda sadece melodiler saklanabilir. Bu dosyaların en önemli avantajları<br />

boylarının çok küçük olmasıdır. Bu tip dosyalar daha çok web sayfalarında arka planda<br />

çalınmak için kullanılır.<br />

Bu bölümdeki örnek sayfamızda kullanmak için öncelikle bir midi dosyasına<br />

ihtiyacımız vardır. Hazır bir midi dosyasını web’den bir siteden indirebilirsiniz. Web’de<br />

bedava midi dosyası bulunduran birçok site vardır. Bu siteleri bir arama motorunda<br />

170


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

“free midi files” diye aratarak bulabiliriz. Örneğin http://www.free-midi.org veya<br />

http://www.mididb.com sitelerinden bedava bir midi dosyası indirebilirsiniz.<br />

Şimdi indirmiş olduğunuz bir midi dosyasını bir web sayfası arka planında<br />

çalacak şekilde ayarlayalım. Bu amaçla hazırlanmış bir örnek web sayfası kodu Tablo<br />

8-2’de verilmiştir.<br />

<br />

Arka planda melodi çalma<br />

<br />

<br />

<br />

Arka planda melodi çalan bir web sayfası<br />

<br />

<br />

<br />

Tablo 8-2 Arka planda melodi çalan bir web sayfası örneği<br />

Bu HTML belgesi tarayıcı içindeŞekil 8-4’deki gibi gözükür.<br />

Şekil 8-4 Arka planda melodi çalan bir web sayfası örneği<br />

Bu örnekteki sayfa herhangi bir tarayıcı ile görüntülendiğinde arka planda<br />

nolove.mid melodi dosyası çalmaya başlar. Bu melodi tarayıcı içinde bu sayfayı<br />

görüntülendiği sürece de çalmaya devam eder. Bunun nedeni embed imi içindeki<br />

autostart ve loop öznitelik değerlerinin true olmasıdır.<br />

Bu örnekteki tarayıcı içinde oynatıcı görünmemektedir. Daha önceki örnekte<br />

tarayıcı içinde bir oynatıcı vardı ve bunun üzerindeki butonlar kullanılarak çalınan ses<br />

kontrol edilebiliyordu. Bu durumda ise tarayıcı içinde herhangi bir oynatıcı görüntüsü<br />

yoktur. Bunun nedeni embed iminin hidden özniteliğinin kullanılmış olması ve değerinin<br />

de true olarak verilmiş olması. Bu öznitelik tarayıcının web sayfası içinde görünmez<br />

olmasını sağlamaktadır.<br />

171


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Bu şekilde arka planda melodi dosyası çalınabileceği gibi diğer muzik dosyaları<br />

da çalınabilir. Fakat arka planda müzik ya da melodi çalmak birçok kişi için rahatsızlık<br />

verici olabilir. Onun için arka plana müzik koymadan önce bu konu bütün yönleriyle ele<br />

alınıp o şekilde karar verilmelidir. Çünkü arka planda çalan müziği kullanıcının tarayıcı<br />

içinden kapatma imkanı yoktur. Ancak kullanıcı kendi hopörlörünü kapatabilir. Bu da<br />

kullanıcılara rahatsızlık verebilir.<br />

Örnek Uygulama<br />

Bir web sitesinden indireceğiniz midi dosyalarını hazırlayacağınız bir web<br />

sayfasının arka planında çalınız? Ayrıca arka planda diğer müzik dosyalarını çalmayı<br />

deneyiniz?<br />

8.8 Video Kaydetme<br />

Video bilgisayar ortamında art arda gelen görüntüler şeklinde kaydedilir [6]. Her<br />

saniyede duruma göre 15, 20 veya 30 civarında görüntü kaydedilir. Saniyedeki görüntü<br />

miktarı azaldıkça video kalitesi de düşer. Saniyede 30 civarında görüntü olursa insanlar<br />

videoyu sürekli bir görüntü şeklinde algılar. Televizyonda da saniyede 24 görüntü<br />

geçmektedir. Video kalitesinin ikinci bir önemli parametresi de videonun boyutudur.<br />

Video art arda gelen görüntüler şeklinde olduğu için her görüntünün genişlik ve<br />

yüksekliğindeki pixel miktarı çok öenmlidir. Pixel miktarı arttıkça görüntü kalitesi artar.<br />

Fakat dosya boyu da pixel miktarı ile birlikte hızla artar.<br />

Video bilgisayarda genellikle sesle birlikte aynı dosya içinde saklanır. Çünkü ses<br />

dosyaları videosuz olabilirken, video dosyaları genellikle sessiz olmaz. Dolayısyla video<br />

dosyaları görüntü bilgisiyle birlikte ses bilgisini de içerecek şekilde tasarlanmıştır.<br />

Video dosyaları ham veri halde çok fazla miktarda yer kaplar. Görüntüler bile<br />

ham veri olarak çok yüksek miktarda yer kaplıyordu. Videoda çok fazla miktarda görüntü<br />

art arda geldiği için videonun yer ihtiyacı çok daha fazladır. Dolayısıyla videolar<br />

bilgisayarda genellikle ham veri olarak tutulmaz. Kaydedilen videolar bir sıkıştırma<br />

algoritmasıyla sıkıştırılır.<br />

Şimdi Windows Media Encoder programını kullanarak bir videonun nasıl<br />

kaydedildiğini adım adım görelim. Bunun için öncelikle bilgisayarınızda bir kamera ve<br />

mikrofon olması gerekmektedir:<br />

1. Windows Media Encoder programını çalıştırınız? Bu program çalışınca gelen<br />

küçük pencerede yeni oturum için bir seçim yapmamızı ister. Bu pencerede<br />

“Capture Audio or Video” seçeneğini seçiniz? Bu ifade “ses veya görüntü<br />

kaydet” anlamına gelmektedir.<br />

172


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

2. Bir sonraki pencerede hem video hem de audio seçeneği seçili olarak Next<br />

butonuna tıklayınız.<br />

3. Gelen üçüncü pencerede oluşturulacak dosyanın yerini ve adını veriniz. Dosya<br />

uzantısı otomatik olarak wmv olarak verilecektir. Next butonuna tıklayınız.<br />

4. Dördüncü pencerede “Web server (progressive download)” seçeneğini seçiniz.<br />

Çünkü oluşturulacak olan videoyu daha sonra bir web sayfasına koyacağız.<br />

Next butonuna tıklayınız.<br />

5. Beşinci pencerede videonun ve sesin detayına ait bilgiler istenmektedir. Video<br />

için “VHS Quality Video” seçeneğini, audio için ise “FM Quality Audio”<br />

seçeneğini seçiniz. Finish butonuna tıklayınız.<br />

6. Bu aşamada pencere içinde kameradan gelen videoyu görmelisiniz. Windows<br />

Media Encoder programı Şekil 8-5’te olduğu gibi görünmelidir. Bu noktada<br />

bütün ayarlar yapılmıştır, fakat henüz kayıt başlamamıştır. Kaydı başlatmak<br />

için pencerenin yukarısında bulunan ve yeşil renkte olan “Start Encoding”<br />

yazan butona tıklayınız. Bu andan itibaren kayıt başlamıştır. Mikrofona<br />

konuşunuz ve bir süre kayıt yapınız?<br />

7. Kaydı bitirmek için yine pencerenin yukarı tarafında bulunan Stop butonuna<br />

tıklayınız. Kaydınız başarıyla yapılmıştır. Oluşturulan video dosyasını seçmiş<br />

olduğunuz dizin içinde kontrol ediniz ve bu dosyayı bir medya oynatıcısı ile<br />

çalınız?<br />

Kaydetmiş olduğunuz video dosyasının uzantısı wmv şeklindedir ve sıkıştırılmış<br />

haldedir. Bu dosya web sayfası içine yerleştirilebilecek durumdadır. Ses kaydında olduğu<br />

gibi ayrıca sıkıştırılmasına gerek yoktur. Bir sonraki bölümde bu video dosyasını bir web<br />

sayfası içine yerleştirmeyi göreceğiz.<br />

173


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Örnek Uygulama<br />

Şekil 8-5 Windows Media Encoder görüntüsü<br />

Siz de kendi bilgisayarınızda bir video görüntüsü kaydediniz? Aynı formatta ve<br />

değişik sürelerde video kaydederek zamana bağlı olarak dosya boylarının nasıl değiştiğini<br />

gözlemleyiniz? Buna ek olarak video kayıt formatını değiştiriniz? Yukardaki 5. adımda<br />

yapılan video formatı seçimini değiştirerek hem kaydedilen videonun kalitesini ve<br />

boyunu, hem de oluşturulan dosya boyunu karşılaştırınız?<br />

8.9 Video Dosyalarının Web Sayfasında Sunumu<br />

Videonun web sayfasında sunumu sesin sunumundan farklı değildir. Seste olduğu<br />

gibi yine imi kullanılır. Şimdi bu işlemin nasıl yapıldığını örnek bir sayfa ile<br />

görelim. Bu amaçla hazırlanmış bir örnek web sayfası kodu Tablo 8-3’te verilmiştir.<br />

<br />

Web Sayfasında Video Sunumu<br />

<br />

<br />

<br />

Web Sayfası İçinde Video Sunumu<br />

<br />

<br />

<br />

174


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Tablo 8-3 Web sayfasına video yerleştirme örneği<br />

Bu HTML belgesi tarayıcı içinde Şekil 8-6’daki gibi gözükür.<br />

Şekil 8-6 Web sayfasına video yerleştirme örneği<br />

Görüldüğü gibi videonun web sayfası içine yerleştirilmesi sesin yerleştirilmesi<br />

gibidir. Yine imi kullanılmıştır. Tek fark oynatıcı için verilen genişlik ve<br />

yükseklik değerlerinin video boyuna göre ayarlanmış olmasıdır. Bu örnekte oynatıcı<br />

genişliği 300, oynatıcı boyu da 300 olarak verilmiştir. Ses sunumu yapılan sayfada<br />

oynatıcı boyu daha küçüktü. Çünkü o sayfadaki oynatıcı içinde gösterilecek bir görüntü<br />

yoktu.<br />

Örnek Uygulama<br />

Sizde oluşturmuş olduğunuz video dosyalarını web sayfası içine yerleştiriniz ve<br />

tarayıcı içinde bu videoları oynatınız? Medya oynatıcısı boyuna farklı değerler vererek<br />

videoda meydana gelen değişimleri gözlemleyiniz?<br />

8.10 Başka Sitelerdeki Videoların Web Sayfasına Yerleştirilmesi<br />

İnternette bulunan video paylaşım sitelerinin bir kısmı, sitelerindeki videoların<br />

başka web sayfalarında kullanıcıya gösterilmelerine imkan vermektedir. Örneğin Google<br />

video sitesi video.google.com ve youtube.com siteleri bu şekilde kendi sitelerinde<br />

bulunan videoların başka sayfalar içinde gösterilmesine imkan vermektedirler. Bu imkanı<br />

175


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

kullanan kişiler çektikleri videoları önce bu sitelerden birisine yüklemekte, sonra da<br />

kendi sitelerindeki sayfalar içinde bu videoları kullanıcılarına göstermektedirler. Bu<br />

yöntem sitesinde video sunma imkanı sınırlı olan küçük ölçekli firmalar ve kişisel web<br />

siteleri için uygun bir çözüm olmaktadır. Çünkü videoların boyu genellikle büyük<br />

olduğundan web sitesinde videolar çok fazla ağ kapasitesi gerektirmektedir. Bu da küçük<br />

ölçekli kurumlar için extra maliyet oluşturmaktadır.<br />

Şimdi Google video sitesi video.google.com adresinde bulunan bir videoyu kendi<br />

sayfamız içine nasıl yerleştirebileceğimizi görelim. Önce bu siteden bir video seçelim.<br />

Biz örnek olarak bu sitede bulunan “Winning The DARPA Grand Challenge” isimli<br />

videoyu seçtik. Bu video<br />

http://video.google.com/videoplay?docid=8594517128412883394&ei=_NOfSsy4O4Ss2wL3ypSaBw&hl=en#<br />

adresindedir.<br />

Videoyu seçtikten sonra ikinci olarak yapmamız gereken şey, bu videoyu web<br />

sayfamıza yerleştirmek için gerekli olan HTML kodunu bu sayfada bulmaktır. Google<br />

video sayfalarında videonun alt kısmında “Embed Video” diye bir bağlantı<br />

bulunmaktadır. Bu bağlantıya tıklayınca bir metin alanında sayfamız içine<br />

yerleştireceğimiz HTML kodu görünür. Bu örnek için bu bağlantıya tıkladığımızda Tablo<br />

8-4’te görülen kod verilir. Bu kodu kendi sayfamız içine yerleştirerek bu videonun<br />

sayfamızda görünmesini sağlayabiliriz.<br />

<br />

Tablo 8-4 Bir Google videosunu web sayfasına ekleme kodu<br />

Bu videoyu içinde barındıran bir örnek web sayfası kodu Tablo 8-5’te verilmiştir.<br />

<br />

Web Sayfasına Başka Siteden Video<br />

Ekleme<br />

<br />

<br />

<br />

Video Ekleme - Google Video<br />

Bu sayfada Google video paylaşım sitesi video.google.com<br />

adresindeki "Winning The DARPA Grand Challenge" isimli video<br />

bulunmaktadır. Bu video Google sunucularında olmasına rağmen<br />

bizim web sayfamız içinde gösterilmektedir. <br />

<br />

176


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

<br />

<br />

<br />

Tablo 8-5 Bir Google videosunu içinde bulunduran örnek bir web sayfası<br />

Bu HTML belgesi tarayıcı içinde Şekil 8-7’deki gibi gözükür.<br />

Şekil 8-7 Bir Google videosunu içinde bulunduran örnek bir web sayfası<br />

Görüldüğü gibi hazırladığımız sayfa içinde Google video sitesinde bulunan video<br />

görünmektedir. Bu video Google sunucularında bulunmasına rağmen bizim sayfamız<br />

içinde izlenebilmektedir. Bu şekilde youtube.com gibi bu imkanı veren diğer sitelerdeki<br />

videolar da başka sayfalar içine yerleştirilebilir.<br />

Şimdi web sayfamız içine video yerleştirmenin nasıl yapıldığını inceleyelim.<br />

Öncelikle bizim yaptığımız tek şey Google’ın kendi sitesinde vermiş olduğu HTML<br />

kodunu kendi sayfamız içine kopyalayıp yapıştırmaktır ve sayfamızın diğer elemanlarını<br />

ayarlamaktır. Google’ın sağlamış olduğu ve Tablo 8-4’te görülen kod bizim daha önceki<br />

bölümlerde gördüğümüz imini kullanmaktadır. Bu imin kullanımı bizim önceki<br />

bölümlerde kullanımımıza benzer fakat bizim daha önce kullanmadığımız bazı yeni<br />

öznitelikler içermektedir. Ayrıca src özniteliği değeri olarak bu videonun Google<br />

sunucularındaki tam adresi verilmiştir. Bu özniteliklerden önemli birisi type<br />

özniteliğidir. Bu öznitelik değeri ”application/x-shockwave-flash” olarak<br />

verilmiştir. Bu çalınacak videonun flash videosu olduğunu belirtmektedir.<br />

177


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Örnek Uygulama<br />

Sizde Google video sitesinden ya da youtube.com gibi bu imkanı veren başka bir<br />

siteden seçeceğiniz bir videoyu kendi sayfanız içine yerleştiriniz? Aynı sayfaya birden<br />

fazla videoyu yerleştirmeyi deneyiniz?<br />

8.11 Flash Videosu Oluşturma ve Web Sayfasına Yerleştirme<br />

Şu anda web sayfalarında video sunumu için kullanılan en yaygın format flash<br />

video formatıdır [7]. Bu format özellikle youtube.com ve video.google.com sitelerinin bu<br />

formatı kullanmasıyla yaygınlaşmıştır. Flash oynatıcısının yaygın olan bütün işletim<br />

sistemlerinde ve tarayıcılarda çalışması bunda önemli bir etken olmuştur. Ayrıca flash<br />

oynatıcının performansı ve video sunma kalitesi bu seçimde önemli bir etkendir.<br />

Bu bölümde flash videosu oluşturmayı ve bu videoyu web sayfası içine<br />

yerleştirmeyi göreceğiz. Flash teknolojisi Adobe firmasının bir ürünüdür. Bu firmanın<br />

flash animasyonları ve flash videosu oluşturmak için olan programı “Adobe Flash CS4<br />

Professional” ürünüdür. Bu program kapsamlı animasyonlar ve video geliştirmek için<br />

tasarlanmıştır ve kullanımı çok basit değildir. Bundan dolayı biz bu bölümde flash<br />

videosu oluşturmak için kullanımı daha basit olan ve sadece video amaçlı geliştirilmiş<br />

olan bir ürünü kullanacağız. Bu ürün “Sothink Video Encoder for Adobe Flash” isimli<br />

programdır. Bu ürün bedava değildir fakat 30 günlük deneme süresi vardır. Ürünü bu<br />

deneme süresince bedava kullanabilirsiniz. Bu ürünü<br />

http://www.sothinkmedia.com/flash-video-encoder/ adresinden indirip bilgisayarınıza<br />

kurunuz.<br />

Şimdi Sothink Video Encoder for Adobe Flash programı ile flash videosu<br />

oluşturmayı adım adım görelim.<br />

1. Sothink Video Encoder for Adobe Flash programını çalıştırınız? Bu program<br />

çalışınca ilk gelen pencerede deneme kullanımına devam edip etmeyeceğimizi<br />

soruyor. Deneme kullanımına devam edeceğimiz için “Continue” butonuna<br />

tıklayarak bir sonraki adıma geçiniz?<br />

2. İkinci pencerede flash video dosyasına dönüştürmek için bir video dosyası<br />

seçmemizi istiyor. Daha önce kaydetmiş olduğunuz bir video dosyasını seçiniz.<br />

Bu fotoğraf makinanızla çektiğiniz bir video klibi de olabilir. Bu video üzerinde<br />

değişiklik yapmak isterseniz bu penceredeki “Crop & Trim” butonuna tıklayınız.<br />

Gelen pencerede video üzerinde değişiklik yapınız. Sonra Next butonuna<br />

tıklayarak bir sonraki adıma geçiniz.<br />

3. Üçüncü pencerede üretilecek videonuzun sahip olacağı özellikler<br />

gösterilmektedir. Bunlardan Profiles kısmında bulunan aşağı açılan menüden hızı<br />

178


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

512Kbps olarak seçebilirsiniz. Diğer seçenekler üzerinde bir değişiklik yapmanıza<br />

gerek yoktur. Sonra Next butonuna tıklayarak bir sonraki adıma geçiniz.<br />

4. Dördüncü pencerede oluşturulacak olan video ve diğer dosyalarla ilgili bilgiler<br />

sorulmaktadır. Bu adım sonunda gerekli seçimler yapıldığında program penceresi<br />

Şekil 8-8’deki gibi gözükür.<br />

a. Öncelikle Output Directory kısmında üretilecek dosyaların konulacağı<br />

dizini seçiniz.<br />

b. Sonra “Generate FLV” seçeneği başındaki radyo düğmesinin seçili<br />

durumda olduğunu kontrol ediniz. Seçili değilse radyo düğmesini seçili<br />

hale getiriniz.<br />

c. “Generate SWF” seçeneği başındaki radyo düğmesinin de seçili olduğunu<br />

kontrol ediniz. Seçili değilse radyo düğmesini seçili hale getiriniz. Bu<br />

seçeneğin altında bulunan “Play the created external FLV file<br />

progressivly” seçeneğini seçiniz.<br />

d. “Generate HTML” seçeneği başındaki radyo düğmesini seçili hale<br />

getiriniz.<br />

e. “Create Thumbnail” seçeneği başındaki radyo düğmesini seçili hale<br />

getiriniz.<br />

5. Beşinci adımda gelen pencerede üretilecek oynatıcı penceresinin şeklinin<br />

seçilmesi istenmektedir. Bunlardan her hangi birisini seçip Next butonuna<br />

tıklayınız. Bu adım sonunda seçtiğimiz dizinde dört farklı dosyanın üretildiğini<br />

göreceksiniz.<br />

Üretilen dört farklı dosyanın hepsinin de ismi aynı olmasına rağmen uzantıları<br />

farklı olacaktır. Bunlardan flv uzantılı dosya video dosyasıdır. Boyu en büyük olan<br />

dosya da budur. İkinci önemli dosya swf uzantılı dosyadır. Bu dosya flash oynatıcısının<br />

görüntü dosyasıdır. Flash oynatıcısının tarayıcı içinde nasıl görünmesi gerektiğini<br />

tanımlar. Üretilen üçüncü dosya htm uzantılıdır ve örnek web sayfası kodu içerir. Bu web<br />

sayfası içine üretilen video yerleştirilmiştir. Üretilen dördüncü dosya ise videonun bir jpg<br />

görüntüsüdür.<br />

179


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Şekil 8-8 Sothink Video Encoder for Adobe Flash programı görüntüsü<br />

Şimdi üretilen HTML dosyasını inceleyelim ve bu videoyu tarayıcı içinde<br />

görüntüleyelim. Üretilen HTML belgesi Tablo 8-6’daki gibidir. Bu HTML belgesinde<br />

sadece video vardır. Başka bir metin yoktur.<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

Tablo 8-6 İçinde Flash videosu bulunan ve otomatik üretilen web sayfası kodu<br />

Bu HTML belgesi tarayıcı içinde Şekil 8-9’daki gibi gözükür.<br />

180


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Şekil 8-9 Web sayfası içine flash videosu yerleştirme örneği<br />

Sothink Video Encoder for Adobe Flash programı hem videoyu flash formatına<br />

çevirir hem de gerekli oynatıcı dosyasını (swf) ve HTML dosyasını oluşturur. Bu yönüyle<br />

kullanımı gayet kolaydır. Diğer bazı flash videosu üreten programlar sadece flash videosu<br />

ürtmektedirler ve oynatıcı dosyası üretmemektedirler. Bu da programcının işini<br />

zorlaştırmaktadır. Ayrıca bir de oynatıcı dosyası oluşturmak için uğraşması<br />

gerekmektedir.<br />

Bu tarayıcı şekli içinde gözüken oynatıcı şekli bizim seçimimizin bir sonucudur.<br />

Flash Video oluşturma adımlarının 5. adımında eğer farklı bir oynatıcı şekli seçseydik, o<br />

durumda ona göre bir swf dosyası üretilecekti ve tarayıcı içinde de farklı bir oynatıcı<br />

şekli gözükecekti.<br />

Flash videosunun web sayfası içine yerleştirilmesini bir önceki bölümde Google<br />

videosunu yerleştirirken görmüştük. Orada web sayfasına video yerleştirmek için embed<br />

imi kullanılmıştı. Burada ise önce object imi kullanılmıştır. Object imi içinde ayrıca<br />

embed imi kullanılmıştır. Sadece embed imi de kulanılabilirdi. Fakat burada üretilen kod<br />

daha fazla tarayıcı tarafından çalıştırılmaktadır. Dolayısıyla bu web sayfası hem object<br />

imini destekleyen hem de embed imini destekleyen tarayıcılar tarafından çalıştırılır.<br />

Sonuç olarak flash videolarını bu şekilde web sayfasına eklemek daha genel bir<br />

çözümdür.<br />

Örnek Uygulama<br />

Sizde kaydetmiş olduğunuz bir videoyu veya fotoğraf makinanızla çekmiş<br />

olduğunuz bir video klibini bu bölümde anlatıldığı şekliyle flash videosuna<br />

dönüştürünüz? Bu videonun web sayfasında görüntülenmesini sağlayınız?<br />

181


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Video dönüştürme işlemini yaparken 5. adımda farklı oynatıcı şekilleri seçerek<br />

oluşturulan oynatıcının farkını gözlemleyiniz. Web sayfası içinde videonuzunun etrafına<br />

başka metinler ve başlıklar yerleştiriniz?<br />

Video dönüştürme işlemini yaparken 3. adımda farklı hızlar seçerek oluşturulan<br />

video dosyasının boyunu kontrol ediniz? Hangi hızlar için dosya boyutunun nasıl<br />

değiştiğini gözlemleyiniz? Ayrıca oluşturulan videolar arasındaki kalite farkını<br />

gözlemlemeye çalışınız?<br />

8.12 Referanslar<br />

[1] Priscilla Oppenheimer, Digitizing Human Vocal Communication,<br />

http://www.troubleshootingnetworks.com/language.html, 7 Ekim 2009.<br />

[2] WAV, http://en.wikipedia.org/wiki/WAV, 7 Ekim 2009.<br />

[3] Audio compression (data), http://en.wikipedia.org/wiki/Audio_compression_(data),<br />

7 Ekim 2009.<br />

[4] MP3, http://en.wikipedia.org/wiki/MP3, 7 Ekim 2009.<br />

[5] Musical Instrument Digital Interface,<br />

http://en.wikipedia.org/wiki/Musical_Instrument_Digital_Interface, 7 Ekim 2009.<br />

[6] Digital video, http://en.wikipedia.org/wiki/Digital_video, 7 Ekşm 2009.<br />

[7] Flash Video, http://en.wikipedia.org/wiki/Flash_Video, 7 Ekim 2009.<br />

182


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Bölüm 9<br />

9.1 Amaç<br />

WEB SAYFASI TASARIMI VE<br />

EDİTÖR KULLANIMI<br />

Bu bölümde amacımız öncelikle web sayfası tasarımının temel prensiplerinin<br />

öğrenilmesi ve web sayfası geliştirme için HTML editörü kullanımının kavranmasıdır.<br />

HTML editörü olarak sık kullanılan editörlerden birisi olan Adobe Dreamweaver CS4<br />

seçilmiştir. Bu editörü kullanarak önce basit sayfalar oluşturulmuştur. Sonra sayfaya<br />

başlık ve liste ekleme, arka plan rengi ayarlama, bağlantı oluşturma, görüntü kullanımı,<br />

tablo kullanımı gibi özellikler işlenmiştir. Daha sonra site oluşturma, şablon oluşturma ve<br />

şablondan sayfa oluşturma anlatılmıştır.<br />

9.2 Giriş<br />

Kaliteli bir web sayfası tasarlamak ve geliştirmek emek ve tecrübe gerektirir.<br />

Teknik bilginin yanında sanatsal kabiliyet de önemlidir. Fakat bu konuda dikkat edilmesi<br />

gereken temel konular bilindiği takdirde ciddi hatalar yapılması engellenebilir. Bu<br />

bölümde önce kaliteli web sayfası tasarımı için dikkat edilmesi gereken konular<br />

anlatılacak. Daha sonra ise web sayfası editörleri kullanımı gösterilecektir. Birçok farklı<br />

kaynakta web sayfası tasarımı için farklı prensipler tavsiye edilmiştir[1, 2, 3]. Biz bu<br />

prensiplerden 6 tanesini aşağıdkai gibi seçtik.<br />

9.3 Web Sayfası Tasarımı Prensipleri<br />

Amaç<br />

183


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Bir web sayfası tasarlanırken öncelikle bu web sayfasının amacı iyi<br />

belirlenmelidir. Bu web sayfasının hedef kitlesi iyi tespit edilmelidir. Bu web sayfası<br />

kimler tarafından kullanılacaktır ve kullanıcılar web sayfasından nasıl faydalanacaktır.<br />

Genellikle amaç çok ziyaret edilen ve hatta ziyaret edenlerin başkalarına da tavsiye ettiği<br />

bir web sayfası tasarlamaktır. Çünkü böyle bir web sayfası, birçok maddi ve manevi<br />

kazanç sağlar.<br />

İçerik<br />

Web sayfalarının çok insan tarafından ziyaret edilmesi öncelikle web sayfalarının<br />

içeriğiyle ilgilidir. Bir web sayfasındaki bilgiler kullanıcıların ihtiyaçlarını görüyorsa,<br />

onları bilgilendiriyor veya eğlendiriyorsa, bu durumda kullanıcılar hem bu sayfayı tekrar<br />

ziyaret edecek hem de başkalarına tavsiye edecektir. Dolayısıyla web sayfalarındaki<br />

içerik mümkün olduğunca anlaşılır, doğru ve doyurucu olmalıdır. Gereksiz ve yanlış<br />

bilgiden kaçınılmalıdır.<br />

Sadelik<br />

Web sayfası tasarımında lüzumsuz karmaşıklıktan kaçınılmalıdır. Web sayfaları<br />

kullanıcılara bilgileri en sade ve öz olarak vermelidir. Web sayfası içeriği hazırlanırken<br />

hedef kullanıcı kitlesinin anlayabilme kapasitesi sürekli göz önünde bulundurulmalıdır.<br />

Kolay Kullanılırlık<br />

Web sayfalarının kullanımı mümkün olduğunca kolay olmalıdır. Bunun için<br />

öncelikle iyi bir menü tasarımı ile web sayfası mantıklı alt bölmelere ayrılmalıdır.<br />

Menülerin isimleri açıklayıcı ve net olmalıdır. Buna ek olarak web sayfasında istenilen<br />

bir bilginin bulunabilmesi için arama hizmeti sağlanmalıdır.<br />

Hız<br />

Web sayfaları hızlı olmalıdır. Bir web sayfası mümkün olan en kısa surede<br />

açılmalıdır. Bu hem web sunucusunun hızı ile hem de web sayfasının içeriği ile ilgilidir.<br />

Web sayfasında gereksiz bilgiler ve özellikle de gereksiz resimler olmamalıdır. Aynı<br />

sayfadan çok fazla resim bulundurmaktan kaçınılmalıdır. Çünkü her bir resim dosyası<br />

ayrı bir http istemiyle sunucudan indirildiği için, aynı sayfadaki fazla sayıdaki resim web<br />

sayfasının performansını ciddi manada azaltabilir.<br />

Fontlar<br />

Web sayfalarında kullanılan fontlar kolay okunabilen türde olmalıdır. Web<br />

sayfasında çok farklı türden fontlar kullanılmamalıdır. Kullanıcı web sayfasını okurken<br />

dikkati dağılmamalıdır. Diğer yandan fontların rengi ile sayfanın arka plan rengi birbirine<br />

184


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

yakın olmamalıdır. Yazının kolay okunabilmesi için yazı arka plan üzerinde net bir<br />

şekilde görülmelidir. Bu da yazının renginin arka plan renginden çok açık veya çok koyu<br />

olmasıyla sağlanabilir.<br />

Hatasız Çalışma<br />

Web sayfalarında hata olmamalıdır. Bir web sayfası içindeki HTML elemanları<br />

HTML kurallarına uygun bir şekilde kullanılmadır. Web sayfaları bütün tarayıcılarda<br />

aynı şekilde çalışmalıdır. Bunu garantilemenin en kolay yolu ise HTML kurallarına<br />

uymaktır. Bir web sayfasının HTML kurallarına uygunluğu bir HTML doğrulayıcı<br />

(validator) ile kontrol edilebilir. W3C kurumu HTML belgelerinin doğruluğunu kontrol<br />

için http://validator.w3.org/ adresinde bir HTML doğrulayıcı sağlamaktadır. Yazılan web<br />

sayfaları web sitelerinde yayınlanmadan önce doğrulanmalıdır.<br />

9.4 HTML Editörleri<br />

HTML belgeleri herhangi bir metin editörüyle yazılabilir. Örneğin en basit metin<br />

editörlerinden biri olan Notepad programı kullanılarak HTML sayfaları oluşturulabilir.<br />

Fakat HTML sayfası oluşturmayı kolaylaştırmak için birçok HTML editörü<br />

geliştirilmiştir. Bu editörler HTML sayfası oluşturmayı kolaylaştırmak için birçok özellik<br />

sunarlar.<br />

9.2.1 HTML Metin Editörü<br />

HTML editörlerinin sunmuş oldukları özelliklerden ilki HTML imleri yazmayı<br />

kolaylaştırmaktır. Bu tip editörlere HTML metin editörü denir. Örneğin bu editörler bir<br />

sayfa içindeki HTML imlerini diğer metinlerden farklı bir renge boyarlar. Böylelikle<br />

sayfadaki HTML imlerinin programcı tarafından kolayca görülmesi sağlanır. Buna ek<br />

olarak birçok HTML metin editöründe kod tamamlama özelliği vardır. Örneğin bir<br />

programcı imini yazınca, daha sonra bu imi kapama noktasına gelinip < işaretçi<br />

yazılınca, HTML metin editörü bu kodu tamamlamak için kullanıcıya yardım eder.<br />

Bunlara ek olarak yazılan bir HTML belgesinin tarayıcıda nasıl gözüktüğünü anlamak<br />

için de sayfamızı ayrı bir tarayıcı penceresinde açmamıza gerek yoktur. HTML editörleri<br />

sayfayı tarayıcı içinde bir tuşa basarak gösterebilir.<br />

9.2.2 WYSIWYG Editörü<br />

HTML editörlerinin sunmuş oldukları ikinci önemli bir özellik ise HTML kodu<br />

üretmektir. Bu durumda kullanıcı web sayfasını tarayıcı içinde nasıl gözükecekse o<br />

şekilde yazar. HTML imlerini yazmaz. Arka planda HTML editörü bu sayfa için HTML<br />

imlerini üretir. Bu şekilde web sayfası geliştirmek çok daha kolaydır. Hatta HTML<br />

imlerini hiç bilmeyen kişiler bile bir web sayfası oluşturabilir. Bu tip editörlere<br />

İngilizcede WYSIWYG editörü denilmiştir [4]. Bu kısaltma İngilizce bir cümlenin<br />

kelimelerin ilk harflerinden oluşmaktadır. Bu cümle şudur: What You See Is What You<br />

185


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Get. Bunun anlamı “ne görüyorsan, onu elde ediyorsun” şeklinde verilebilir. Yani yazım<br />

ekranında gördüğün şey, tarayıcı içinde göreceğin sayfa oluyor. Yazım ekranında HTML<br />

imleri görünmüyor. Sadece sayfanın son hali görünüyor.<br />

Bu iki tip özelliğe ek olarak HTML editörleri web sayfalarının web sunucularına<br />

yüklenmesi için de bazı kolaylıklar sağlarlar. Kullanıcı her bir web sayfasını web<br />

sunucusuna tek tek aktarmak zorunda değildir. Editörler bir sitedeki bütün dosyaları veya<br />

üzerinde değişiklik yapılmış olan dosyaları web sunucusuna aktarırlar.<br />

9.5 HTML Editörü Programları<br />

Şu anda piyasada birçok HTML editörü bulunmaktadır. Bunların farklı özellikleri<br />

ve ücretleri vardır. Bunlardan bedava olan bazıları şunlardır: SeaMonkey, Nvu ve<br />

Amaya. Ücretli olup yaygın olarak kullanılan HTML editörlerinden birisi Adobe<br />

Dreamweaver CS4 editörüdür [5]. Bu bölümde örnek olması acısından bu editörünün<br />

kullanım şeklini ve özelliklerini inceleyeceğiz. Benzer özellikler diğer editörler<br />

tarafından da sunulmaktadır. Fakat, her editörün kendisine göre bazı farkları da vardır.<br />

9.6 Adobe Dreamweaver CS4<br />

Adobe Dreamweaver CS4 editörü Adobe firmasının bir ürünüdür. Şu anda en sık<br />

kullanılar HTML editörlerinden biridir. HTML editörlerinin sağlamış olduğu bütün temel<br />

özellikleri desteklemektedir. HTML kodu yazmanın yanında PHP, ASP, JSP, CSS,<br />

JavaScript, XML gibi web sayfası içinde kullanılabilecek birçok teknolojisi<br />

desteklemektedir. Şu anda bu ürünün en son versiyonu Dreamweaver CS4 versiyonudur.<br />

Bu ürün ücretlidir. Fakat bir aylık deneme süresince bedava kullanılabilir. Bu ürünün web<br />

sayfası http://www.adobe.com/products/dreamweaver/ adresidir. Bu sayfadan ürünün<br />

deneme versiyonu indirilebilir ve bir ay süresince bedava kullanılabilir.<br />

9.7 Dreamweaver CS4 ile bir Sayfa Oluşturma<br />

edilir:<br />

Dreamweaver CS4 ile yeni bir site ve sayfa oluşturmak için şu adımlar takip<br />

1. Dreamweaver CS4 programını çalıştırınız?<br />

2. File (Dosya) menüsünden New (Yeni) seçeneğini seçiniz. Bu durumda Şekil<br />

9-1’deki pencere gelir. Bu pencerenin en solundaki seçeneklerden “Blank page”<br />

yani boş sayfa seçeneğini seçiniz? Ortadaki “Page Type” kısmından en üstteki<br />

“HTML” seçeneğini seçiniz? Layout kısmından ise seçeneğini seçiniz?<br />

Create butonuna tıkladığınızda boş bir HTML sayfası oluşturulur.<br />

186


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Şekil 9-1 Dreamweaver CS4 ile boş bir sayfa oluşturma penceresi<br />

3. Bu noktada bir sayfa oluşturuldu. Ama henüz bu sayfada hiçbir şey yoktur. Bu<br />

durumda Dreamweaver CS4 editörü Şekil 9-2’deki gibi gözükür.<br />

Şekil 9-2 Dreamweaver CS4 ile oluşturulmuş boş bir sayfa<br />

Dreamweaver CS4 Editörü Modları: Design, Split, Code<br />

Dreamweaver CS4 editörünün 3 farklı modu vardır. Bu modların isimleri editör<br />

penceresinin sol üst köşesinde gözükmektedir. Bunlar sırasıyla: Code (HTML Kodu),<br />

Split (Bölmeli) ve Design (Tasarım). Yukarıdaki görünen pencerede editör bölmeli yani<br />

187


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

split modundadır. Bu modlar arasında gidiş geliş yapmak için editör penceresideki mod<br />

isimleri üzerine tıklamak yeterli olur.<br />

HTML Kod (Code) Modu<br />

Bu modda editör HTML kodu yazma modundadır. Sayfadaki bütün HTML imleri<br />

gösterilir. Programcı sayfaya ekleyeceği şeyleri HTML imileriyle birlikte ekler veya<br />

sileceği bilgileri HTML imleriyle birlikte siler. Bu modda iken Dreamweaver editörü<br />

HTML imlerini farklı renkte, sayfadaki metinleri ise farklı bir renkte gösterir. Bu HTML<br />

kodu yazmayı kısmen kolaylaştırır. Ayrıca editörün HTML kodlarını tamamlama özelliği<br />

vardır. Örneğin açılış imini programcı yazdığında, kapanış imini yazarken editör<br />

gerisini tamamlar. Dolayısıyla Dreamweaver editörü HTML kodları yazmak için bu iki<br />

şekilde kolaylıklar sağlar.<br />

Tasarım (Design) Modu<br />

Bu mod Dreamweaver editörünün WYSIWYG modudur. Yani bu modda HTML<br />

imleri yazılmaz. Sadece web sayfası kullanıcıya nasıl gözükmesi gerekiyorsa o şekilde<br />

bir sayfa oluşturulur. Dreamweaver editörünü bu modda kullanmak Microsoft Word ile<br />

tecrübesi olanlar için zor olmaz. Sayfanın alt bölmesindeki menüden fontların tipleri,<br />

büyüklükleri, yatay düzlemdeki pozisyonları, vb. Microsoft Word’de olduğuna benzer<br />

şekilde ayarlanır. Dreamweaver editörü yapılan her işlem için eğer gerekiyorsa arka<br />

planda HTML kodu üretir.<br />

Bölmeli (Split) Modu<br />

Dreamweaver editörü bu modda sayfayı ikiye böler. Üst kısımda sayfanın HTML<br />

kodunu gösterir. Alt kısımda ise sayfayı tasarım modunda gösterir. Programcı her iki<br />

bölmeyi de kullanarak sayfaya ekleme veya çıkarma yapabilir. Şekil 9-2’deki editör bu<br />

moda görünmektedir. Üst tarafta bazı HTML kodları gözükmektedir. Bu kodlar sayfanın<br />

genel yapısıyla ilgili kodlardır. Sayfada henüz hiçbir içerik yoktur. Onun için alt kısımda,<br />

yani tasarım kısmında herhangi bir şey gözükmemektedir. Bu modda programcı alt<br />

kısımda yaptığı değişiklikler için üst tarafta HTML kodu üretildiğini her işlem için görür.<br />

Live View (Canlı Görüntü) Modu<br />

Editör içinde üç tane mod butonunun sağında “Live View” butonu<br />

bulunmaktadır. Bu butona tıklanıldığında editör tasarım modundan görüntü moduna<br />

geçer. Yani sayfa tarayıcı içinde nasıl gözükecekse, tasarım modunda da o şekilde<br />

gösterilir. Bu modda tasarım kısmında sayfa üzerinde değişiklik yapılamaz. Bu mod<br />

sayfayı görüntülemek içindir. Fakat HTML kod kısmında sayfada değişiklik yapılabilir.<br />

Live View butonunun yanında bir de “Live Code” butonu vardır. Bu buton sadece Live<br />

View moduna geçildiğinde aktif olur. Bu butona tıklanıldığında sayfa tamamen<br />

188


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

değişikliklere kapanır. Artık sayfa üzerinde HTML kod kısmında da değişiklik<br />

yapılamaz. Değişiklik yapmak için bu moddan çıkmak gerekir.<br />

9.8 Dreamweaver ile Sayfaya Başlık, Paragraf ve Liste Ekleme<br />

Şimdi bu sayfaya bir başlık ve bir de paragraf ekleyelim. Ekleme işlemini bölmeli<br />

modda yapalım. Bölmeli modda eklemeyi tasarım kısmında yapalım. Böylece bizim<br />

yaptığımız her bir değişiklik için nasıl HTML kodu üretildiğini görelim.<br />

Bunun için şu adımları takip ederiz:<br />

Sayfanın ilk satırına “Mersin” kelimesini yazınız ve enter tuşuna basarak ikinci<br />

satıra geçiniz.<br />

1. İkinci adımda Mersin kelimesini seçiniz. Bu kelime seçili iken editörün alt<br />

kısmında bulunan PROPERTIES bölgesinden Format özelliğinin değerini<br />

“paragraph” yerine “Heading 1” olarak seçiniz. Bu işlemi yaptığınızda Mersin<br />

metninin büyüdüğünü ve HTML kod kısmında Mersin metninin imi içine<br />

konulduğunu göreceksiniz.<br />

2. Bu adımda ise Mersin başlığı altına bir metin ekleyelim. Bu metin şöyle bir metin<br />

olabilir: “Mersin Türkiye’nin güneyinde, Akdeniz sahilinde güzel bir şehirdir.”<br />

Eklediğiniz bu metnin bir paragraf yapıldığını HTML kod kısmında<br />

gözlemleyiniz.<br />

3. Bu adımda alt satıra geçiniz ve “Mersinin İlçeleri” ifadesini yazınız?<br />

4. Sonra her birisi yeni bir satırda olacak şekilde “Silifke”, “Anamur” ve “Tarsus”<br />

yazınız? Bu üç satırı yani Silifke, Anamur ve Tarsus kelimelerinin olduğu satırları<br />

seçiniz ve aşağıdaki PROPERTIES bölgesinde bulunan maddeleme butonuna<br />

basınız. Bu butona basınca her bir ilçe adının bir madde olarak görüntülendiğini<br />

göreceksiniz. Aynı zamanda HTML kod bölümünde bir sırasız liste<br />

oluşturulduğunu göreceksiniz. Bir tane imi ve bu im içinde her bir liste<br />

elemanı için de imleri oluşturulacaktır.<br />

5. “Mersinin İlçeleri” metnini seçiniz ve bu metnin tipini Heading 3 yapınız? Bu<br />

durumda da yine HTML kod kısmında bu metin etrafındaki paragraf imleri gider<br />

ve yerine imleri gelir.<br />

Bu haliye sayfamız Dreamweaver editörü içinde Şekil 9-3’teki gibi gözükür.<br />

189


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Şekil 9-3 Dreamweaver editörü içinde bölmeli modda içerik geliştirme<br />

Web Sayfasını Kaydetme<br />

Artık bu web sayfası kaydedilebilir durumdadır. Dreamweaver editörünün File<br />

(Dosya) kısmından Save (Kaydet) seçeneği seçilerek bu dosya istenilen dizine istenilen<br />

bir isimle kaydedilir.<br />

Sayfa Başlığı<br />

Bu sayfaya henüz bir başlık vermedik. Bunun için editör içinde yukarı menü<br />

kısmında Title özelliğinin yanında “Untitled Document” görünmektedir. Bu kısma<br />

istediğimiz bir metni yazarak sayfa başlığını ayarlayabiliriz. Ayrıca HTML kod kısmında<br />

bulunan imi arasındaki metni değiştirerek sayfa başlığı ayarlanabilir.<br />

Örnek Uygulama<br />

Bu örnekte olduğu gibi bir sayfa geliştiriniz? Sayfanızın içinde başlıklar,<br />

paragraflar ve listeler olsun. Sayfayı geliştiriken değişiklikleri hem tasarım penceresinde<br />

hem de HTML kod penceresinde yaparak deneyiniz? Örneğin bir başlık ekleyecekseniz,<br />

önce HTML kod kısmında HTML imlerini kullanarak ekleyiniz. Sonucu görünüz. Daha<br />

sonra tasarım penceresinde aynı işlemi yapınız. Bu iki kısmı birlikte kullanma konusunda<br />

örnekler yapınız? Ayrıca sıralı liste uygulamaları yapınız? Buna ek olarak iç içe liste<br />

uygulaması yapınız? Eğer editör ekranında bazı seçenekleri bulamazsanız, fareyle sağ<br />

tıklayıp, bu özellikleri bulmayı deneyebilirsiniz. Ayrıca editör penceresinin üst<br />

kısmındaki menü elemanlarını da kullanabilirsiniz.<br />

190


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

9.9 Arka Plan Rengi Ayarlama<br />

Şimdi aynı web sayfasının arka plan rengini ayarlayalım. Bunun için bölmeli<br />

modda devam edelim. Tasarım penceresi kısmından arka plan rengi ayarlamak için şu<br />

adımlar takip edilir:<br />

1. Bu sayfanın alt kısmında bulunan PROPERTIES panelinde Page Properties<br />

(Sayfa Özellikleri) diye bir buton bulunmaktadır. Bu butona tıklayınız?<br />

2. Bu durumda ekrana Şekil 9-4’teki küçük pencere gelir. Bu pencerede sayfa ile<br />

ilgili birçok özellik vardır. Bunlardan birisi de arka plan rengidir. Arka plan rengi<br />

ayarlamanın da iki farklı metodu vardır. Birisi CSS kullanmak, diğeri de HTML<br />

kullanmaktır.<br />

3. CSS kullanarak arka plan rengini ayarlamak için önce pencerenin sol tarafında<br />

bulunan “Category” listesinden “Appearance (CSS)” seçeneği seçilir. Daha<br />

sonra pencerenin orta kısmında bulunan Background color seçeneği yanındaki<br />

küçük ok işaretine tıklanır. Bu durumda kullanıcının seçmesi için Şekil 9-4’teki<br />

gibi bir renk seçme kısmı gelir. Bu alandan istenilen renk seçilir ve OK butonuna<br />

tıklanır. Bu işlem sonunda sayfa kaynak kodunda bir CSS kuralı yazıldığı görülür.<br />

Bu kural sayfanın arka plan rengini ayarlar.<br />

4. Aynı işlem HTML kodu kullanılarak ta yapılabilir. Bu durumda önce Category<br />

listesinden “Appearance (HTML)” seçeneği seçilir. Daha sonra yine benzer<br />

şekilde Background color seçeneği ile arka plan rengi ayarlanır. Bu durumda<br />

sayfanın HTML kodunda CSS kuralı yazılmaz. Sadece body iminin bgcolor<br />

öznitelik değeri ayarlanır.<br />

Şekil 9-4 Arka plan rengi ayarlama penceresi<br />

191


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Diğer bir ihtimal de arka planda bir görüntü dosyası kullanmaktır. Bunun için<br />

yine Page Properties penceresi kullanılır. Görüntü de arka plana hem CSS ile hem de<br />

HTML ile eklenebilir. Bu durumda arka plana eklenilecek dosya Bakground image<br />

seçeneği kısmından seçilerek eklenir.<br />

Arka plan rengi ayarlandıktan sonra web sayfası, editör içinde Şekil 9-5’deki gibi<br />

gözükür. Bu sayfanın HTML kod kısmında body iminin bgcolor özniteliği değerinin<br />

#00CC99 olarak verildiğine dikkat ediniz.<br />

Şekil 9-5 Arka plan rengi ayarlanmış bir sayfa<br />

Page Properties penceresi kullanılarak sayfanın arka plan rengine ek olarak,<br />

CSS veya HTML ile sayfada kullanılan metnin varsayılan font çeşidi, boyu ve rengi<br />

ayarlanabilir. Ayrıca sayfanın etrafında yani solunda, yukarısında, sağında ve aşağısında<br />

bırakılacak boşluk miktarı ayarlanabilir. Bu özellikleri kullanmayı sonraki bölümlerde<br />

inceleyeceğiz.<br />

Örnek Uygulama<br />

Hazrılamış olduğunuz bir sayfanın arka plan rengini hem CSS hem de HTML<br />

kullanarak ayarlayınız? Her iki durumda da üretilen kodu inceleyiniz? Buna ek olarak<br />

arka plan rengini bir görüntü kullanarak ayarlayınız? Görüntüyü de hem HTML hem de<br />

CSS kullanarak arka plana ekleyiniz? Her iki durumda da üretilen kodu inceleyiniz?<br />

9.10 Sayfa Marginini Ayarlama<br />

Şimdi Dreamweaver editörü ile bir sayfanın marginini yani HTML belgesi içindeki<br />

elemanlar ile tarayıcı penceresi duvarları arasındaki boşluk miktarını ayarlamayı görelim.<br />

192


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Öncelikle bir ana başlık, iki paragraf ve bir alt başlıktan oluşan bir sayfa oluşturalım. Bu<br />

sayfa ilk haliyle Şekil 9-6’daki gibi olsun.<br />

Şekil 9-6 Font ayarı yapılmamış örnek sayfa<br />

Bu örnekte sayfa içindeki elemanların sadece sol ve sağ pencere duvarına olan<br />

uzaklıklarını ayarlayalım. Bu düzenleme bütün sayfa için geçerli olacağı için bu işlem<br />

sayfa özellikleri (Page Properties) kısmından yapılır.<br />

Editör tasarım modunda iken Page Properties butonuna tıklayınız. Gelen<br />

pencerede Categories bölümünde Appearance (CSS) seçeneğini seçiniz. Sonra bu<br />

pencerenin sağ tarafında bulunan “Left margin” özelliği değeri olarak “1” yazınız ve<br />

birimi olarak ta “cm” seçeneğini seçiniz. Benzer şekilde “Right margin” özelliği değeri<br />

olarak “1” yazınız ve birimi olarak ta “cm” seçeneğini seçiniz. Böylece bu iki seçenek ile<br />

sayfanın sol ve sağ tarafında bırakılacak boşluk miktarı 1cm olarak belirlenmiş oldu. Bu<br />

ayarlamalardan sonra sayfamız Şekil 9-7’deki gibi gözükür. Artık bu sayfada metinler bir<br />

önceki pencerede olduğu gibi tamamen pencere duvarına soldan ve sağdan yanaşık<br />

değildir. Artık metinler ile pencerenin sol ve sağ duvarları arasında yaklaşık 1cm<br />

miktarında boşluk vardır.<br />

193


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Şekil 9-7 Margin değerleri ayarlanmış bir sayfa<br />

Şimdi bu işlemin kaynak kodunda nasıl gerçekleştirildiğini inceleyelim. Kaynak<br />

kodunu kontrol ettiğimizde şu şeklide bir CSS kodu üretildiğini görürüz:<br />

body {<br />

margin-left: 1cm;<br />

margin-right: 1cm;<br />

}<br />

Bu kod HTML belgesinin gövde kısmının pencerenin solundan ve sağından olan<br />

uzaklığını 1cm olarak ayarlamıştır.<br />

Örnek Uygulama<br />

Hazırlayacağınız bir sayfanın marginlerini ayarlayınız? Sayfanın bütün<br />

marginlerini (sol, sağ, üst ve alt) ayarlamayı deneyiniz? Bu marginleri ayarlarken farklı<br />

büyüklük birimlerini kullanınız? Pixel, inch, cm, mm, pico gibi uzaklık birimlerini<br />

deneyiniz?<br />

9.11 Metin Font Özellikleri Ayarlama<br />

Şimdi Dreamweaver editörü ile bir sayfadaki normal metinlerin varsayılan fontunu,<br />

bazı paragrafların ve başlıkların font özelliklerini ayarlamayı görelim. Bu işlemleri bir<br />

önceki bölümde hazırlamış olduğumuz sayfa üzerinde yapmaya devam edelim.<br />

Bir sayfadaki normal metinlerin font düzenlemesi sayfa özellikleri penceresinden<br />

yapılır. Bunun için Page Properties butonuna tıklayınız. Gelen küçük pencerede CSS<br />

kategorisi seçiniz. Bu pencerenin sağ tarafında bulunan özellik değerlerini ayarlayarak<br />

font ayarı yapılır. Page font özelliği değeri olarak “Tahoma, Geneva, sans-serif”<br />

194


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

seçiniz. Font büyüklüğü için “Size” özelliği değerini “12pt” yapınız? Bu seçimlerden<br />

sonra sayfa Şekil 9-8’deki gibi olur. Görüldüğü gibi artık sayfa içindeki metinlerin fontu<br />

değişmiştir.<br />

Şekil 9-8 Font ayarı yapılmış örnek sayfa<br />

Bu işlem kaynak kodunda yine bir CSS kuralı yazılarak gerçekleştirilmiştir. Bu<br />

kural aşağıdaki gibi üretilmiştir:<br />

body,td,th {<br />

font-family: Tahoma, Geneva, sans-serif;<br />

font-size: 12pt;<br />

color: #000;<br />

}<br />

Bu kod HTML belgesinin gövdesindeki metinlerin ve ayrıca varsa tabloların<br />

içindeki metinlerin fontunu istenilen şekilde ayarlamıştır.<br />

Bir Başlığın Fontunu Değiştirme<br />

Şimdi bu belgedeki alt başlığın fontunu değiştirelim. Bunun için editör tasarım<br />

modunda iken alt başlığı yani “Omurgasızlar” metnini seçiniz. Fare seçili metni<br />

gösterirken sağ tıklayınız ve gelen listeden “Font” seçeneği üzerine geliniz. Bu durumda<br />

yeni bir liste daha gelir. Bu listeden de “Arial, Halvetica, sans-serif” seçeneğini<br />

seçiniz. Bu seçimden sonra yeni bir pencere gelir. Bu pencere yeni CSS kuralı yazma<br />

penceresidir ve Şekil 9-9’daki gibidir.<br />

195


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Şekil 9-9 Yeni CSS kuralı yazma penceresi<br />

CSS kuralı yazma bölümünden de hatırlanacağı gibi CSS kuralı HTML imleri için,<br />

bir sınıfa ait olan HTML elemanları veya id özniteliği olan bir HTML elemanı için<br />

yazılabiliyordu. İşte bu pencerede öncelikle CSS kuralınının ne için yazılacağı<br />

sorulmaktadır. Bu da “Selector Type” olarak ifade edilmiştir. Bu kısımda biz “Tag”<br />

yani im seçeneğini seçebiliriz. Bu seçimi yaptığımız takdirde “Selector Name” olarak<br />

h3 gelir. Çünkü bu alt başlığın imi h3 imidir. Sonra OK butonuna tıklayarak CSS kuralını<br />

oluştururuz. Oluşturulan CSS kuralı kaynak kodunda şu şekilde gözükür:<br />

h3 {<br />

font-family: Arial, Helvetica, sans-serif;<br />

}<br />

Görüldüğü gibi bütün h3 tipi başlıkların fontu ayarlanmıştır. Şimdi aynı font<br />

ayarlama işlemini sadece bu başlık için yapalım. Yani belge içinde başka h3 tipi başlıklar<br />

varsa, onların fontunu değiştirmeyelim. Bu işlem için yine Omurgasızlar metnini seçiniz.<br />

Sonra fare ile sağ tıklayınız ve font seçeneği üzerine geliniz. Daha sonra da açılan<br />

menüden “Georgia, Times New Roman, Times, serif” seçeneğini seçiniz. Bu<br />

durumda yine yeni CSS kuralı yazma penceresi gelecektir. Bu defa “Selector Type”<br />

olarak “ID” seçeneğini seçiniz. Sonra “Selector Name” olarak bu HTML elemanını<br />

tanımlayan bir isim vermemiz gerekir. Bu HTML elemanının ismi olarak “b2”<br />

verebiliriz. Sonra OK butonuna basarak CSS kuralını oluşturunuz. Oluşturulan CSS<br />

kuralı kaynak kodunda şu şekilde gözükür:<br />

#b2 {<br />

font-family: Georgia, Times New Roman, Times, serif;<br />

}<br />

196


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Öncelikle kaynak kodunda bu alt başlığın “Omurgasızlar”<br />

şeklinde tanımlandığını görürüz. Yani bu alt başlığa b2 ismi verilmiştir. Daha sonra da bu<br />

alt başlığa özel CSS kuralı yazılmıştır.<br />

Örnek Uygulama<br />

Hazırlayacağınız bir sayfanın içindeki bir alt başlığın rengini ayarlayınız? Bu işlemi<br />

bir CSS kuralı yazarak gerçekleştiriniz? Renk ayarlamak için önce editör penceresinin en<br />

üstündeki Format menüsüne gidiniz. Bu menüde bulunan Color seçeneğini seçiniz?<br />

Sonra gelen pencerede bir renk seçimi yapınız? Bir sonraki adımda yeni CSS kuralı<br />

yazma penceresi gelecektir. O pencerede gerekli seçimleri yaparak CSS kuarlını<br />

oluşturunuz?<br />

Bu örnekte olduğu gibi renk ayarlama işlemi için CSS oluşturmayı, hem html imi<br />

kullanarak hem de id kullanarak iki farklı şekilde yapınız?<br />

9.12 Bağlantı Oluşturma<br />

Dreamweaver editörü ile bağlantı oluşturmak için editör penceresinin sağ tarafında<br />

bulunan “insert” panelindeki “hyperlink” butonu kullanılır. Bu panel Şekil 9-10’daki<br />

gibidir. Bu panelde web sayfasına eklemek için birçok eklenti vardır. Bunlardan birisi de<br />

Hyperlink nesnesidir. Bu panelde ayrıca sayfaya resim eklemek için image butonu,<br />

video veya flash animasyonu eklemek için media butonu, tablo eklemek için table<br />

butonu, div elemanı eklemek için div butonu, ve diğer bazı eklenti seçenekleri vardır.<br />

İlerleyen bölümlerde bunlardan bazılarının kullanımlarını göreceğiz.<br />

Şekil 9-10 Dreamweaver editorü insert paneli<br />

197


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Şimdi bağlantı oluşturmayı görelim. Bağlantı oluşturmak için önce bağlantının<br />

oluşturulacağı metin seçilir. Sonra insert panelinden hyperlink butonuna tıklanır. Biz bu<br />

sayfadaki işlemleri yapmak için de bir önceki bölümde kullanmış olduğumuz sayfayı<br />

kullanmaya devam edelim. Önce ilk paragraftaki nöron kelimesini seçiyoruz. Sonra<br />

hyperlink butonuna tıklıyoruz. Hyperlink butonuna tıklanınca Şekil 9-11’deki küçük<br />

pencere gelir. Bu penceredeki Text elemanı bağlantının yapılacağı metindir. Bu örnekte<br />

bu metin nöron metnidir. İkinci eleman Link elemanıdır. Bu da bağlantının yapılacağı<br />

adresi gösterir. Bu örnekte bağlantıyı<br />

http://tr.wikipedia.org/wiki/Sinir_hücresi adresine yaptık. Target seçeneği<br />

eğer bağlantı yeni bir tarayıcı penceresinde açılacaksa _blank olarak verilir. Bu örnekte<br />

biz bu değeri boş bırakıyoruz. Title elemanı ise bağlantının üzerine fare ile gelindiğinde<br />

gözükecek metni ayarlar. Bu durumda bir bu metni Sinir Hücresi olarak verdik. Sonra<br />

OK butonuna tılayarak bağlantı oluşturulur.<br />

Şekil 9-11 Bağlantı oluşturma<br />

Bağlantı oluşturulunca sayfa kodunda bu bağlantı için kod üretilir. Sayfa kodunu<br />

incelediğimizde bu bağlantı için şu şekilde bir imi oluşturulduğunu görürüz:<br />

nöron<br />

Bağlantı Kaldırma<br />

Bir bağlantı oluşturulduktan sonra eğer o metinden bağlantı kaldırılmak istenirse,<br />

fare bağlantıyı gösterirken sağ tıklanır. Gelen menüden Remove Link seçeneği seçilir.<br />

Bu işlem o metinden bağlantıyı kaldırır.<br />

Göreli Bağlantı Oluşturma<br />

Bağlantılarla ilgili bir diğer konu da aynı site içindeki sayfalara bağlantı<br />

oluşturmaktır. Bu işlem için bağlantı pencereseinde Link değeri olarak tam bir URL<br />

adresi yazılmaz. Bunun yerine bu özelliğin sağında bulunan dosya işaretine tıklanarak,<br />

dosya sisteminden bağlantı yapılacak dosya seçilir. Bu şekilde site içindeki başka bir<br />

belgeye göreli bir bağlantı oluşturulur.<br />

198


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Properties Paneli<br />

Dreamweaver editöründeki önemli bir diğer paneli Properties panelidir. Bu<br />

panel editörün alt tarafında bulunmaktadır. Bu panel aktif olan HTML elemanının<br />

özelliklerini gösterir ve bu özelliklerin değiştirilmesine imkan verir. Eğer bizim<br />

sayfamızda yeni oluşturmuş olduğumuz bağlantı için nöron kelimesinin üzerine fare ile<br />

gelir ve tıklarsak, bu durumda Properties paneli Şekil 9-12’deki gibi olur. Bu panelde<br />

oluşturmuş olduğumuz bağlantının bütün özellikleri görülmektedir. Bu özellikler bu<br />

panel kullanılarak değiştirilebilir.<br />

Benzer şekilde Properties panel hangi HTML elemanı aktif olursa o elemanın<br />

özelliklerini gösterir ve o elemanın özelliklerinin değiştirilmesine imkan verir. Örneğin<br />

bir başlık elemanı aktif olursa o başlığın özelliklerini gösterir. Ya da bir görüntü aktif<br />

olursa, o görüntünün özelliklerini gösterir.<br />

Örnek Uygulama<br />

Şekil 9-12 Bağlantı hedef adresi ayarlama penceresi<br />

Oluşturmuş olduğunuz web sayfasında iki farklı bağlantı yapınız? Bu<br />

bağlantılardan birisi bir web sitesindeki bir sayfaya olsun. Diğeri ise siteb içindeki başka<br />

bir belgeye göreli bağlantı olsun. Ayrıca bağlantılardan birisine tıklanıldığında hedef<br />

sayfa yeni bir pencerede açılsın. Buna ek olarak bağlantı oluşturduktan sonra bir<br />

bağlantıyı tekrar kaldırmayı deneyiniz. Bu işlemleri yaparken HTML kodunda meydana<br />

gelen değişiklikleri gözlemleyiniz.<br />

9.13 Sayfaya Görüntü Ekleme<br />

Dreamweaver editörü ile bir sayfaya görüntü eklemek için editör penceresinin<br />

sağında bulunan insert panelindeki image butonu kullanılır. Görüntü eklemeye ek<br />

olarak görüntünün boyunu ayarlamak, görüntü etrafındaki tampon bölge büyüklüğüne<br />

belirlemek ve görüntüden bağlantı oluşturmak için de Dreamweaver editörü programcıya<br />

birçok kolaylık sunar.<br />

Şimdi adım adım görüntü eklemenin detaylarını inceleyelim. Bu bölümde de bir<br />

önceki bölümde üzerinde çalışmış olduğumuz sayfayı kullanmaya devam edelim.<br />

Öncelikle eklenecek olan görüntüyü tespit etmemiz gerekmektedir. Sayfaya<br />

199


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

ekleyeceğimiz görüntüyü http://tr.wikipedia.org/wiki/Sinir_hücresi adresinden aldık. Bu<br />

görüntü Şekil 9-13’teki gibidir. Bu bir png dosyasıdır ve boyutları 400 x 215 pixeldir.<br />

Şekil 9-13 Web sayfasına eklemek için örnek görüntü (Sinir hücresi görüntüsü)<br />

Bu görüntüyü web sayfamıza eklemek için önce fare imlecini görüntünün<br />

konulacağı noktaya getiriyoruz. Bizim sayfamızda görüntüyü birinci paragrafın altına, ara<br />

başlığın hemen üstüne koyalım. Bunun için birinci paragrafın sonunda enter tuşuna<br />

basıyoruz ve orada yeni bir paragraf başlatıyoruz. Fare imleci bu noktada dururken<br />

insert panelindeki image butonuna tıklıyoruz. O butona tıklanınca açılan küçük<br />

menüden yine image seçeneğini seçiyoruz. Bu işlem sonunda görüntü kaynağını<br />

seçmemiz için bir pencere geliyor. Bu pencere Şekil 9-14’teki gibidir. Bu pencere<br />

yardımıyla görüntümüzü dosya sisteminden bulup seçiyoruz ve OK butonuna tıklıyoruz.<br />

Şekil 9-14 Dreamweaver editorü insert paneli<br />

Sonra yeni bir pencere daha gelir. Bu pencerede alternatif metin girmemizi ister.<br />

Alternatif metin, eğer görüntü tarayıcı içinde gösterilemezse, kullanıcıya gösterilecek<br />

metindir. Genellikle resmi tanımlayan kısa bir açıklamadır. Bu örnekte biz “Sinir Hücresi<br />

Resmi” metnini alternatif metin olarak koyduk. Bu pencere Şekil 9-15’deki gibidir. Bu<br />

pencerede OK butonuna basılınca görüntü sayfaya yerleştirilir.<br />

200


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Şekil 9-15 Görüntü için alternatif metin ayarlama penceresi<br />

Görüntü sayfaya yerleştirildiğinde sayfa tasarım modunda Şekil 9-16’daki gibi<br />

görünür. Görüntü sayfaya kendi orijinal boyutunda yerleştirilir. Şekil 9-16’daki editör<br />

penceresinde eklenen görüntü seçili durumdadır. Bu yüzden görüntünün etrafında bir<br />

çerçeve gözükmektedir. Ayrıca editörün altındaki Properties panelinde de bu görüntünün<br />

özellikleri gösterilmektedir. Bu özelliklerden birisi W özelliğidir. Bu özellik görüntünün<br />

genişliğini gösterir. Bu örnekte bu özelliğin değeri 400 pixeldir. Benzer şekilde H özelliği<br />

görüntünün yüksekliğini gösterir. Bu özelliğin değeri de 225 pixeldir. Her ikisi de<br />

görüntünün orijinal boyutlarıdır.<br />

Şekil 9-16 Görüntü konulmuş bir sayfa<br />

Şimdi bu görüntü eklenirken kaynak koda nasıl bir ekleme yapıldığını inceleyelim.<br />

Editörün kod kısmına geçip, kaynak kodu incelediğimizde görüntü için şu imin<br />

eklendiğini görürüz:<br />

<br />

201


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Daha önce görüntü ekleme bölümünde gördüğümüz gibi sayfaya görüntü eklemek<br />

için img imi kullanılmıştır. Bu örnekte bu imin src, width, height ve alt öznitelik<br />

değerleri verilmiştir. Biz bu görüntünün üzerinde değişiklikler yaptıkça bu im özellikleri<br />

de uygun şekilde değiştirilecektir.<br />

Görüntü Boyu Değiştirme<br />

Şimdi eklemiş olduğumuz görüntünün boyutunu değiştirelim. Görüntünün<br />

boyutunu değiştirmenin bir yolu Properties panelindeki W ve H özellik değerlerini<br />

değiştirmektdir. Diğer bir yolu ise fare ile görüntüyü büyütüp, küçültmektir. Bu ikinci<br />

metod birçok yönden daha avantajlıdır. Bu yöntemle görüntünün boyunun kaç pixel<br />

olduğundan daha ziyade sayfada nasıl göründüğü üzerinde durulabilir. Bu da sayfa<br />

tasarımını kolaylaştırır. Fare ile görüntü boyunu küçültmenin diğer bir avantajı da hem<br />

genişliğin hem de yüksekliğin aynı oranda kolayca değiştirilmesidir. Görüntünün sağ alt<br />

köşesinden fare ile tutarak genişlik ve yükseklik aynı ordan küçültülebilir veya<br />

büyültülebilir.<br />

Şimdi fare ile görüntünün boyutunu biraz küçültelim. Görüntünün sağ alt<br />

köşesinden tutarak görüntünün boyutunu biraz küçülttük. Bu işlem sounda görüntü sayfa<br />

içinde daha küçük görünür. Sayfa kodunu incelediğimizde img iminin width ve height<br />

öznitelik değerlerinin değiştirilmiş olduğunu görürüz. Bizim yaptığımız değişiklik sonucu<br />

img imi şu şekilde değişmiştir.<br />

<br />

Görüntüler çoğunlukla hem boyundan hem de genişliğinden aynı oranda<br />

küçültülür. Bu görüntünün bozulmaması için en güzel küçültme şeklidir. Fakat bazı<br />

durumlarda küçültme ya da büyütme sadece genişlikten ya da yükseklikten yapılmak<br />

istenebilir. Bu durumda da yine görüntünün sağ tarafından ya da alt tarafından tutularak<br />

görüntü boyu sadece eninden ya da yüksekliğinden değiştirilebilir.<br />

Eğer bir görüntünün boyu değiştirildikten sonra görüntü boyu tekrar ilk haline<br />

getirilmek istenirse, bunun için görüntü seçili iken fare ile sağ tıklanır. Gelen menüden<br />

Reset Size seçeneği seçilir. Bu işlem görüntüyü ilk boyutuna geri döndürür.<br />

Görüntüden Bağlantı Oluşturma<br />

Bir görüntüden bağlantı oluşturmak Dreamweaver editörü ile çok kolaydır.<br />

Görüntü seçili durumda iken Properties panelinde Link özelliği vardır. Bunun değeri<br />

olarak görüntüden bağlantı verilecek web sayfasının adresi yazılır. Böylelikle bu<br />

görüntüden bir bağlantı oluşturulmuş olur. Editör bu işlem sonunda bağlantı için uygun<br />

HTML kodunu kendisi üretir. Eğer biz sayfaya eklediğimiz görüntüden<br />

202


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

http://tr.wikipedia.org/wiki/Sinir_hücresi adresine bir bağlantı oluşturursak.<br />

Bu durumda img imi bir imi içine yerleştirilir ve kaynak kodunda şu şekilde olur:<br />

<br />

Eğer bu görüntüden oluşturulan bağlantı kaldırılmak istenirse, bu durumda görüntü<br />

seçili durumda iken, fare ile sağ tıklanır. Gelen menüden Remove Link seçeneği seçilir.<br />

Böylelikle görüntüden oluşturulan bağlantı kaldırılır.<br />

Örnek Uygulama<br />

Hazırlamış olduğunuz sayfaya iki adet görüntü ekleyiniz? Bunların boylarını fare<br />

ile ayarlayınız? Bir görüntüden site içindeki bir sayfaya, diğerinden ise webdeki bir<br />

sayfaya bağlantı oluşturunuz? Editör tarafından oluşturulan HTML kodunu inceleyiniz?<br />

Görüntünün Etrafında Tampon Boşluk Bırakma<br />

Görüntünün etrafında tampon boşluk bırakmak için img iminin hspace ve vspace<br />

öznitelik değerleri kullanılıyordu. Hspace öznitelik değeri görüntünün sağındaki ve<br />

solundaki boşluk miktarını ayarlıyordu. Vspace öznitelik değeri ise görüntünün üstündeki<br />

ve altındaki boşluk miktarını ayarlıyordu. Şimdi öncelikle bu tampon boşluk miktarını<br />

ayarlamadan önce görüntünün sağ tarafına metin yerleştirelim. Yani görüntüden sonra<br />

gelen ara başlık ve paragraf, hemen görüntünün sağından devam etsin. Bunun için img<br />

iminin align özniteliği kullanılıyordu. Dreamweaver editörünü kullanarak bunu şu<br />

şekilde yapabiliriz. Görüntü seçili durumda iken, Properties panelinde bulunan align<br />

özelliği değerini Left olarak seçeriz. Bu durumda görüntü pencerenin soluna yerleştirilir.<br />

Sağ tarafta da daha önceki altta olan ara başlık ve paragraf devam eder.<br />

align özelliği Left olarak seçildikten sonra şimdi de hspace ve vspace<br />

özelliklerini ayarlayalım. Bu özelliklerin değerleri yine görüntü seçili durumda iken<br />

Properties panelinden ayarlanır. Properties panelinde aynı isimde iki özellik vardır.<br />

Bunlardan hspace değerini 30, vspace değerini de 40 olarak verelim. Bu işlem sonunda<br />

sayfamız Şekil 9-17’deki gibi gözükür. Hem sonraki paragraf görüntünün sağında devam<br />

etmekte hem de paragraf ile görüntü arasında ayarladığımız kadar tampon boşluk<br />

bulunmaktadır.<br />

Bu işlem sonunda HTML kodunda img imine align, hspace ve vspace öznitelik<br />

değerleri eklenmiştir ve son hali şu şekilde olmuştur:<br />

<br />

203


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Şekil 9-17 Tampon boşlukları ayarlanmış ve etrafına metin konulmuş görüntü<br />

Örnek Uygulama<br />

Sayfanıza eklediğiniz görüntülerden birisini pencerenin soluna, diğerini de<br />

pencerenin sağına yerleştiriniz? Bu görüntülerin etrafındaki boşluk miktarını hspace ve<br />

vspace özniteliklerini kullanarak ayarlayınız?<br />

Görüntü Üzerinde Alt Bölgeler Tanımlama<br />

Görüntü üzerindeki alt bölgelerden bağlantı oluşturabilmek için görüntü üzerinde<br />

önce alt bölgeler tanımlanır. Görüntü üzerinde çoğunlukla dairesel veya dikdörgensel alt<br />

bölgeler tanımlanmaktadır. Buna ek olarak çokgen şeklindeki alt bölgeler de<br />

tanımlanabilir. Şimdi Dreamweaver editörünü kullanarak görüntü üzerinde nasıl alt<br />

bölgeler tanımlayabileceğimizi, ve bu alt bölgelerden nasıl bağlantı oluşturabileceğimizi<br />

adım adım görelim. Bu kısımdaki uygulama için de yine aynı görüntüyü ve sayfayı<br />

kullanmaya devam edelim.<br />

Görüntü üzerinde alt bölge tanımlamanın ilk adımı oluşturulacak map elemanına bir<br />

isim vermektir. Bu işlem görüntü seçili durumda iken Properties panelindeki map<br />

özelliği kullanılarak yapılır. Bu özelliğin yanında bulunan metin alanına atanmak istenen<br />

id değeri yazılır. Bu örnekte map elemanının id değerini map1 olarak verelim.<br />

İkinci adımda görüntü seçili iken Properties panelindeki map özelliği yanında<br />

bulunan şekillerden birisi seçilir. Örneğin önce daire şeklini seçelim. Sonra fare ile<br />

görüntü üzerinde bir daire çizilir. Bu çizim tamamlanınca editör penceresi Şekil<br />

9-18’deki gibidir. Görüldüğü gibi görüntünün sol tarafında dairesel bir alt bölge<br />

tanımlanmıştır.<br />

204


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Şekil 9-18 Görüntü üzerinde tanımlanmış bir alt bölge<br />

Daha sonra bu alt bölgeden bağlantı oluşturulur. Bu işlem için önce görüntü<br />

üzerindeki tanımlanmış olan alt bölge fare ile seçilir. Bu seçim yapıldığında Properties<br />

paneli Şekil 9-19’daki gibi görünür. Bu panelde Link değeri olarak bu alt bölgeden<br />

oluşturulacak bağlantının hedef adresi verilir. Alt özelliği olarak ta alternatif metin<br />

verilir. Biz bu örnekte hedef adres olarak<br />

http://tr.wikipedia.org/wiki/Hücre_biyolojisi adresini, alternatif metin olarak ta<br />

Hücre Biyolojisi metnini kullandık.<br />

Şekil 9-19 Görüntü alt bölgesi Properties paneli<br />

Bu işlemler sonunda görüntünün üzerinde dairesel bir alt bölge tanımlanmış oldu<br />

ve bu bölgeden de bir bağlatı oluşturuldu. Oluşturulan map imi kaynak kodunda şu<br />

şekildedir:<br />

<br />

<br />

<br />

Görüldüğü gibi tanımlanan alt bölgenin koordinatları editör tarafından otomatik<br />

olarak tespit edilmiştir. Bizim her bir alt alanın koordinatlarını tespit etmemize gerek<br />

yoktur. Bu yönüyle alt bölge tanımlamada editör kullanmak işimizi epey kolaylaştırır.<br />

205


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Örnek Uygulama<br />

Bulacağınız bir Türkiye ya da dünya haritası üzerinde alt bölgeler tanımlayınız? Bu<br />

alt bölgelerden bağlantılar oluşturunuz?<br />

9.14 Tablo İşlemleri<br />

Dreamweaver editörü web sayfasına tablo koymak ve bu tablo üzerinde<br />

değişiklikler yapmak için birçok kolaylık sunar. İlk olarak web sayfasına tablo ekleme ile<br />

başlayalım. Bu uygulama için yeni bir sayfa oluşturalım ve bu sayfaya tabloyu ekleyelim.<br />

Bir sayfaya tablo eklemek için Dreamweaver editörünün sağ tarafında bulunan<br />

insert panelindeki Table butonu kullanılır. Önce fare imleci sayfa içinde tablonun<br />

konulacağı noktaya getirilir. Sonra insert panelindeki table butonuna tıklanır. Bu<br />

butona tıklanınca Şekil 9-20’deki pencere gelir. Bu pencerede tablonun satır ve sütun<br />

sayısı, genişliği, kenarlıklarının değeri, cell padding ve cell spacing değerlerinden<br />

istenilenler ayarlanır.<br />

Bu penceredeki ilk özellik olan Row, tablodaki satır sayısını belirler. Bu örnekte 4<br />

olarak verilmiştir. Onun hemen yanındaki Columns özelliği tablodaki sütun sayısını<br />

belirler. Bu örnekte 3 olarak verilmiştir. Table width tablo genişliğini belirler. Bu<br />

örnekte 200 pixel olarak verilmiştir. Fakat bu değerler daha sonra editör içinden<br />

değiştirilebilir. Bu pencerenin ortasındaki Header bölümünde, tablonun başlık satırı için<br />

dört farklı seçenek verilmiştir. Bu seçeneklerden bu örnek için başlık satırının yukarda<br />

olanı seçilmiştir.<br />

Şekil 9-20 Tablo oluşturma penceresi<br />

Tablo bu özelliklerle oluşturulduğunda editör içinde boş bir tablo görünür. Bu<br />

tablonun hücrelerine yazı yazılabilir ve boyutları değiştirilebilir. Tablonun boyutu<br />

köşesinden fare ile tutularak büyütülebilir. Veya tablonun sağ duvarından fare ile<br />

206


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

tutularak genişliği değiştirilebilir. Ya da alt duvarından tutularak yüksekliği<br />

değiştirilebilir. Bunlara ek olarak her bir satırın veya sütunun genişlik veya yüksekliği de<br />

ayarlanabilir.<br />

Bu noktada tabloya sıra no, kitap ismi ve yazar adı ekleyelim. Tablonun boyunu<br />

da ihtiyacımıza göre büyütelim. Bu işlemleri yaptığımızda tablomuz editör penceresi<br />

içinde Şekil 9-21’deki gibi görünür.<br />

Şekil 9-21 Editör içinde tablo eklenmiş bir sayfa<br />

Bu tablonun HTML kodu ise Tablo 9-1’deki gibi üretilmiştir. Bu kodda<br />

gözümüze çarpan önemli noktalar, öncelikle tablonun genişlik ve yükseklik değerleridir.<br />

Buna ek olarak ta tablonun ilk satırındaki her bir hücrenin genişlik değerinin ayarlanmış<br />

olmasıdır.<br />

<br />

<br />

Sıra No<br />

Kitap Adı<br />

Yazarı<br />

<br />

<br />

1<br />

C++ ile Nesnel Programlama<br />

Robert Lafore<br />

<br />

<br />

2<br />

Java 2<br />

Herbert Schildt<br />

<br />

<br />

3<br />

207


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Visual Studio.Net <br />

Richard Grimes<br />

<br />

<br />

Örnek Uygulama<br />

Tablo 9-1 Tablo için üretilen HTML kodu<br />

Sizde hazrılayacağınız bir sayfaya bir tablo ekleyiniz? Bu tabloyu verilerinizle<br />

doldurunuz? Tablonuzun büyüklüğünü, her bir sütunun genişliğini verilerinizin<br />

büyüklüğüne göre ayarlayınız?<br />

Tabloya Satır ve Sütun Ekleme/Silme<br />

Bir tablo oluşturulduktan sonra bu tabloya satır veya sütun eklenebilir. Bunun için<br />

önce imleçle satırın veya sütunun ekleneceği pozisyona gelinir. Sonra Şekil 9-22’deki<br />

gibi farenin sağ tuşuna basılır. Gelen menüden Table seçilir. Daha sonra alt menüden<br />

satır eklemek için Insert Row, sütun eklemek için ise Insert Column seçilir. Yeni satır<br />

imlecin bulunduğu hücrenin üst satırına, yeni sütun ise imlecin bulunduğu hücrenin sol<br />

sütununa eklenir. Bu şekilde tabloya istenildiği kadar satır veya sütun eklenebilir.<br />

Şekil 9-22 Tabloya fare ile satır veya sütun ekleme<br />

Tablolara satır veya sütun eklemek mümkün olduğu gibi satır veya sütun silmek<br />

te mümkündür. Bunun için yine fare kullanılır. Bu defa sağ tıklayınca gelen Table<br />

menüsünden Delete Row seçeneği satır silmek için, Delete Column seçeneği ise sütun<br />

silmek için kullanılır. Satır ve sütün silmede imlecin olduğu hücrenin bulunduğu satır<br />

veya sütun silinir.<br />

208


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Hücre Birleştirme ve Ayrıştırma<br />

Tablolarla ilgili yapılan bir diğer işlem hücre birleştirmek veya birleştirilen<br />

hücreleri sonra tekrar ayrıştırmak işlemidir. Birden fazla hücreyi birleştirmek için önce<br />

hücreler seçilir. Sonra fare ile sağ tıklanır ve Şekil 9-22’deki menü gelir. Bu menüden<br />

Table seçilir ve onun alt menüsünden Merge Cells (Hücre Birleştir) seçeneği seçilir. Bu<br />

işlem seçili hücreleri birleştirir ve tek bir hücre haline getirir.<br />

Birleştirilen hücreler daha sonra istenilirse tekrar ayrıştırılabilir. Birleştirilmiş bir<br />

hücre seçilir ve bu hücre üzerinde sağ tıklanır. Bu durumda yine Şekil 9-22’deki menü<br />

gelir. Bu menüden Table seçilir ve onun alt menüsünden Split Cell (Hücre Ayrıştır)<br />

seçeneği seçilir. Bu işlem daha önce birleştirilmiş olan hücreleri tekrar ayrıştırır.<br />

Örnek Uygulama<br />

Hazırladığınız sayfadakli tablonun ilk satırına bir satır ekleyiniz. Bu satırdaki<br />

bütün hücreleri birleştiriniz? Bu hücre tablonun başlığı olsun. Bu işlemi yaptığınızda<br />

üretilen HTML kodunu kontrol ediniz?<br />

9.15 Site Oluşturma<br />

Şimdi Dreamweaver editörü ile bir site oluşturmayı görelim. Dreamweaver editörü<br />

ile bir kurum için web sitesi geliştirilirken öncelikle bir site oluşturulur. Burdaki site<br />

kavramı proje kavramı gibidir. Nasıl birçok programlama dilinde program geliştiriken<br />

önce editör ile bir proje oluşturulur. Bu proje o probleme ait bütün dosyaları içerir. Onun<br />

gibi buradaki site kavramında da bir kurumun web sitesi için gerekli olan bütün dosyalar,<br />

bir site içinde tutulur.<br />

Site oluşturmanın ilk adımı bir dizin oluşturmaktdır. Oluşturacağınız web sitesine<br />

ait bütün dosyaları içinde tutacağınız bir dizini bilgisayarınızda oluşturunuz.<br />

Sonra Dreamweaver editörü üst menüsünden Site | New Site seçeneğini seçiniz.<br />

Bu seçim sonunda Şekil 9-23’deki pencere gelir. Bu pencerede oluşturacağınız siteye bir<br />

isim veriniz. Bu örnekte site ismi olarak site2 verilmiştir. Bu penceredeki ikinci seçenek<br />

web sitesinin adresini sormaktadır. Eğer gerçekten Web’de yayınlayacağınız bir site<br />

yapıyorsanız, bu alana sitenizin adresini yazınız? Bu adres www.google.com gibi tam bir<br />

adres olmalıdır. Oluşturulacak sayfalar webde yayınlanmayacaksa, sadece<br />

bilgisayarınızda deneme çalışması yapıyorsanız, bu durumda ikinci seçeneği boş<br />

bırakabilirsiniz. Next butonuna tıklayınız.<br />

209


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Şekil 9-23 Yeni site oluşturma için ilk adım penceresi<br />

Bir sonraki adımda sunucu tarafı teknolojilerden birisini kullanıp,<br />

kullanmayacağımız soruluyor. Bu pencere Şekil 9-24’deki gibidir. Burada No seçeneğini<br />

seçiniz.<br />

Şekil 9-24 Yeni site oluşturma için ikinci adım penceresi<br />

Üçüncü adımda bu siteye ait dosyaların yerel bilgisayarda mı yoksa sirek olarak<br />

web sunucusunda mı kaydedileceği soruluyor. Bu pencere Şekil 9-25’teki gibidir. Bizim<br />

dosyalarımız yerel bilgisayarımızda tutulacağı için, burada “Edit local copies” diye<br />

başlayan seçeneği seçiniz. Alt tarafta ise daha önce oluşturmuş olduğunuz dizini seçiniz.<br />

210


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Şekil 9-25 Yeni site oluşturma için üçüncü adım penceresi<br />

Dördüncü adımda web sunucusuna nasıl bağlanacağımızı soruyor. Bu pencere<br />

Şekil 9-25’teki gibidir. Burada “None” seçeneğini seçiniz. Eğer sitenizin dosyaları web<br />

sunucusuna gönderilecekse, burada bağlantı şeklinizi seçmelisiniz. Bizim uygulamada<br />

sayfalar sadece kendi bilgisayarımızda olacağı için None seçilmiştir.<br />

Şekil 9-26 Yeni site oluşturma için dördüncü adım penceresi<br />

Bu işlemlerle birlikte site oluşturmak için gerekli bütün seçimler yapılmış olur. En<br />

son bir pencere daha gelir. Bu pencerede oluşturulan siteye dair bilgiler vardır. O<br />

penceredeki Done butonuna tıklanarak site oluşturma işlemi bitirilir.<br />

9.16 Şablon Oluşturma<br />

Web siteleri hazırlanırken her web sitesi için öncelikle bir şablon oluşturulur [6].<br />

Bu şablon sayfada, sitedeki bütün sayfaların sahip olacağı ortak özellikler bulunur.<br />

211


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Sitedeki sayfaların arka plan rengi, sayfaların sahip olacağı ana bölgeler, ortak menüler<br />

ve bağlantılar, kullanılacak ortak fontlar gibi birçok sayfa özelliği bu şablonda belirtilir.<br />

Daha sonra bu siteye bir sayfa ekleneceği zaman, yeni sayfa bu şablona göre oluşturulur.<br />

Bu bölümde, hazırlayacağımız bir site için nasıl şablon oluşturabileceğimizi<br />

görelim. Oluşturacağımız bu şablonu, Dreamweaver editörü ile gelen başka bir şablondan<br />

türeteceğiz. Dreamweaver editörü ile birçok basit sayfa şablonu gelir. Programcılar bu<br />

şablonları kendi ihtiyaçlarına göre değiştirerek yeni şablonlar oluşturur. Şimdi bu<br />

şablonlardan bir tanesini kullanarak yeni bir şablon oluşturalım.<br />

Dreamweaver editörü ile gelen şablonları kullanarak bir şablon oluşturmanın ilk<br />

adımı File menüsünden New seçneğini seçmektir. Bu seçim yapılınca Şekil 9-27’deki<br />

pencere gelir. Bu pencerede en soldaki menüden Blank Template seçeneğini seçiniz.<br />

Ortadaki Template Type listesinden ise HTML Template seçeneğiniz seçiniz. Onun<br />

yanındaki Layout listesinden her hangi bir seçeneği seçebilirsiniz. Her bir seçeneğin<br />

üzerine fare ile tıkladığınızda, şablonun yapısı sağda görünür. Biz bu uygulamada “2<br />

column elestic, left sidebar, header and footer” seçeneğini seçtik. Bu<br />

şablonda sayfada bir üst bölge, bir sol sütun bir de alt bölge vardır. Buna ek olarak bir de<br />

sayfa içeriği için gövde kısmı mevcuttur.<br />

Şekil 9-27 Dreamweaver şablonundan sayfa oluşturma penceresi<br />

Bu seçimler yapıldığında bu şablona göre bir şablon sayfası oluşturulur. Bu sayfa<br />

Şekil 9-28’deki gibidir. Oluşturulan sayfa içinde örnek metinler ve başlıklar vardır. Bu<br />

sayfanın arka plan rengi, ana bölgeleri ve kullanılan fontların özellikleri şablon tarafından<br />

belirlenmiştir. Bu sayfanın HTML kodu kontrol edildiğinde, şablonun CSS kullanılarak<br />

hazırlandığı görülecektir. Her bir bölge bir div elemanı ile tanımlanmıştır. Ayrıca<br />

sayfadaki kullanılacak fontun özellikleri de CSS ile belirlenmiştir.<br />

212


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Şekil 9-28 Şablona göre oluşturulmuş örnek sayfa<br />

Şimdi bu sayfadaki başlığı değiştirelim. Sol taraftaki bölüme ise tek sütunlu bir<br />

tablo ekleyelim. Bu tabloya sayfamızın ana menüsünü ekleyelim. Tablonun her satırında<br />

bir bağlantı olsun. Tablomuzun çizgilerinin kullanıcıya gözükmemesi için border<br />

özniteliği değerini sıfır yapalım. Benzer şekilde sayfanın alt bölgesindeki kısma, sayfa ile<br />

ilgili genel bir bilgi ekleyebilirsiniz.<br />

Gövde kısmı diğer üç bölgeden farklı olacaktır. Çünkü diğer üç bölge, sitemizdeki<br />

bütün sayfalar için aynı olacaktır. Fakat gövde kısmındaki bilgiler her sayfa için farklı<br />

olacaktır. Dolayısıyla gövde kısmı şablonda boş bırakılacaktır. Ayrıca gövde kısmına her<br />

sayfada yazı yazılabilmesi için bir Editable Region nesnesi eklenecektir.<br />

Editable Region (Yazılabilir Bölge)<br />

Bir şablona göre bir sayfa oluşturulduğunda, o sayfanın sadece Editable Region<br />

nesnesi eklenmiş kısımları değiştirilebilir. Diğer bölgeler üzerinde değişiklik yapılamaz.<br />

Bunun amacı şablon ile bir sitenin genel özelliklerini kontrol etme isteğidir. Bir sitenin<br />

şablonu, o sitenin sayfalarının ortak özelliklerini belirler. Bu ortak özelliklerle ilgili bir<br />

değişiklik yapılacaksa, bu değişiklik şablon üzerinde yapılır. Her sayfaya ait değişiklik<br />

ise ancak o sayfanın yazılabilir bölgesinde yapılır. Bir şablonda değişiklik yapıldığında,<br />

editör bu değişikliği otomatik olarak o şablona göre üretilmiş bütün sayfalara yansıtır. Bu<br />

da site geliştirme işlemini ciddi manada kolaylaştırmaktdır.<br />

Şimdi şablonumuzun gövde bölgesine bir Editable Region nesnesi ekleyelim.<br />

Bunun için öncelikle imleci Editable Region nesnesinin konulacağı gövde kısmına<br />

getiriniz. Sonra insert panelindeki Templates | Editable Region butonuna<br />

tıklayınız. Bu işlem yapılınca şablon sayfamız Şekil 9-29’daki gibi olur. Sonra bu<br />

şablonu dwt uzantılı olarak site içine kaydediniz. Şablonlar site dizini altında Templates<br />

dizini içine kaydedilir.<br />

213


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Örnek Uygulama<br />

Şekil 9-29 Editör ile oluşturulmuş örnek şablon<br />

Bu bölümde olduğu gibi düşündüğünüz bir site için bir şablon geliştiriniz?<br />

Şablonu Dreamweaver ile gelen şablonlardan birisine göre yapınız? Oluşturduğunuz<br />

şablona en az bir menü bir de yazılabilir bölge ekleyiniz?<br />

9.17 Şablona Göre Sayfa Oluşturma<br />

Şimdi bir önceki bölümde oluşturmuş olduğumuz şablona göre sitemiz içinde örnek<br />

bir sayfa oluşturalım. Bu sitedeki bütün sayfalar artık bu şablona göre oluşturulmalıdır.<br />

Eğer sitenin genel yapısında bir değişiklik yapmak istersek, bu değişiklik te şablon<br />

üzerinde yapılmalıdır.<br />

Şablona göre bir sayfa oluşturmak için File menüsünden New seçilir. Bu durumda<br />

Şekil 9-30’da görülen yeni belge oluşturma penceresi gelir. Bu pencerede en soldaki<br />

seçeneklerden Page from Template seçilir. Ortadaki Site menüsünden de<br />

şablonumuzun içinde bulunduğu site ismi seçilir. Bizim durumumuzda site ismi<br />

site2‘dir. Onun yanındaki liste, seçilen sitedeki şablonları göstermektedir. Bu sitede<br />

henüz bir tane şablon olduğu için, o şablon seçilir. Create butonuna tıklanarak yeni sayfa<br />

oluşturulur.<br />

214


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Şekil 9-30 Şablona gore sayfa oluşturma penceresi<br />

Oluşturulan sayfanın sadece gövde kısmında görülen Editable Region kısmı<br />

yazılabilir durumdadır. Diğer kısımlar üzerinde bir değişiklik yapılamaz. Eğer diğer<br />

kısımlar üzerinde bir değişiklik yapılmak istenirse, bu değişiklik şablon üzerinde<br />

yapılmalıdır. Gövde kısmında görülen Editable Region kısmına eklemeler yapınız.<br />

Editable Region kısmı gövde içinde istediğiniz kadar büyüyebilir. Bu eklemeler<br />

yapıldıktan sonra sayfa Şekil 9-31’deki gibi olur. Bu sayfa sitemizdeki sayfalardan bir<br />

tanesi olacaktır. Bu sayfayı html uzantısıyla site dizini içine kaydediniz. Bu şekilde<br />

sitedeki diğer sayfalar da bu şablondan üretilir. Gerek olursa site için başka şablonlar da<br />

üretilebilir.<br />

Örnek Uygulama<br />

Şekil 9-31 Şablondan üretilmiş örnek sayfa<br />

215


İ<strong>NTERNET</strong> <strong>PROGRAMCILIĞI</strong> <strong>–</strong> I A.UYAR<br />

Bir önceki bölümde geliştirmiş olduğunuz şablona göre iki farklı sayfa<br />

oluşturunuz? Bu sayfaların yazılabilir bölgelerine o sayfalara ait bilgileri ekleyiniz.<br />

Sayfaların diğer kısımları üzerinde herhangi bir değişiklik yapılamadığını gözlemleyiniz.<br />

Oluşturmuş olduğunuz bu iki sayfaya şablondaki menüden bağlantı veriniz? Daha sonra<br />

şablon ile yaptığınız değişikliğin, oluşturduğunuz sayfalar üzerinde de olduğunu<br />

gözlemleyiniz?<br />

9.18 Özetle<br />

Bu bölümde Adobe Dreamweaver CS4 editörünü kullanarak web sitesi<br />

hazırlamanın temellerini gördük. Web sayfasında metinlerinin tanımlanmasını ve<br />

özelliklerinin değiştirilmesini, listeler oluşturulmasını, bağlantı kullanımını, görüntü<br />

eklemeyi ve özelliklerini değiştirmeyi, tablolarla ilgili işlemler yapmayı gördük. Ayrıca<br />

site oluşturmayı, sayfalar için şablon üretmeyi ve şablonlara göre sayfa oluşturmayı<br />

gördük. Bu bölümde gördüğümüz konular Dreamweaver CS4 editörünün temel<br />

özelliklerini kapsamaktadır. Bu editörün daha biçok özelliği bulunmaktadır. Bu özellikler<br />

buradaki oluşan temel üzerine programcılar tarafından kolayca öğrenilebilir.<br />

9.19 Referanslar<br />

[1] Bonnie Skaalid, "Multimedia and Web Page Design Principles",<br />

http://www.usask.ca/education/coursework/skaalid/page/design/webdsgn.htm, 7<br />

Ekim 2009.<br />

[2] James R. Grunwald, "Six Basic Principles of Web Page Design", http://www2.mlcwels.edu/jgrunwald/page.html,<br />

7 Ekim 2009.<br />

[3] Smashing Editorial, "10 Principles Of Effective Web Design",<br />

http://www.smashingmagazine.com/2008/01/31/10-principles-of-effective-webdesign,<br />

January 31st, 2008, Accessed 7 Ekim 2009.<br />

[4] WYSIWYG, http://en.wikipedia.org/wiki/WYSIWYG, 7 Ekim 2009.<br />

[5] Adobe Dreamweaver CS4, http://www.adobe.com/products/dreamweaver, 7 Ekim<br />

2009.<br />

[6] Christopher Heng, How to Use Dreamweaver CS4's Templates to Manage and Auto-<br />

Update Multiple Pages on Your Website,<br />

http://www.thesitewizard.com/gettingstarted/dreamweaver-cs4-tutorial-7.shtml, 7<br />

Ekim 2009.<br />

216

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!