Yükleniyor...
Softmush.com, teknoloji, yazılım ve dijital dünyaya dair derinlemesine içeriklerle bilgiye ulaşmanın güvenilir adresi. - Softmush.com
“ Söz konusu olan vatansa, gerisi teferruat. ”
Mustafa K. Atatürk
@emin

Emin ALT.
Developer
 Biyografi: Elma veren ağacı taşlarlar.
SQL Dilinde Temel Komutlara Giriş

SQL (Structured Query Language), ilişkisel veritabanlarını yönetmek ve manipüle etmek için kullanılan standart bir programlama dilidir. Veritabanı sistemleriyle etkileşim kurmanın temelini oluşturan bu dil, veri tanımlama (DDL) ve veri işleme (DML) gibi çeşitli görevleri yerine getirmek için güçlü komut setleri sunar. Bu makale, SQL diline yeni başlayanlar için temel veritabanı işlemleri olan tablo oluşturma, veri ekleme, seçme, güncelleme ve silme komutlarının kullanımını adım adım açıklamaktadır.


Temel Sözdizimi


Aşağıda, SQL'de en sık kullanılan ve başlangıç seviyesi için kritik olan temel DDL ve DML komutlarının genel sözdizimleri yer almaktadır. Bu sözdizimleri, veritabanı nesnelerini oluşturmak ve verileri yönetmek için kullanılır.



-- Veritabanı Oluşturma (DDL)
CREATE DATABASE veritabani_adi;

-- Tablo Oluşturma (DDL)
CREATE TABLE tablo_adi (
    sutun1_adi VERI_TIPI [KISITLAMALAR],
    sutun2_adi VERI_TIPI [KISITLAMALAR],
    ...
);

-- Veri Ekleme (DML)
INSERT INTO tablo_adi (sutun1, sutun2, ...)
VALUES (deger1, deger2, ...);

-- Veri Seçme (DML)
SELECT sutun1, sutun2, ...
FROM tablo_adi
WHERE kosul;

-- Veri Güncelleme (DML)
UPDATE tablo_adi
SET sutun1 = yeni_deger1, sutun2 = yeni_deger2, ...
WHERE kosul;

-- Veri Silme (DML)
DELETE FROM tablo_adi
WHERE kosul;

Detaylı Açıklama


Yukarıda belirtilen temel SQL komutlarının her bir bileşeni, belirli bir işlevi yerine getirir:


  • CREATE DATABASE veritabani_adi;: Yeni bir veritabanı oluşturmak için kullanılır. veritabani_adi, oluşturulacak veritabanının adını temsil eder.

  • CREATE TABLE tablo_adi (...): Yeni bir tablo oluşturmak için kullanılır. tablo_adi, oluşturulacak tablonun adıdır. Parantez içindeki kısım, tablonun sütunlarını, veri tiplerini ve kısıtlamalarını tanımlar.

  • sutun_adi VERI_TIPI [KISITLAMALAR]: Bir sütunun adını, saklayacağı veri tipini (örneğin, INT, VARCHAR(255), DATE) ve isteğe bağlı kısıtlamaları (örneğin, PRIMARY KEY, NOT NULL, UNIQUE) belirtir.

  • INSERT INTO tablo_adi (sutun1, sutun2, ...) VALUES (deger1, deger2, ...): Belirtilen tabloya yeni bir satır veri eklemek için kullanılır. Sütun adları listesi, değerlerin hangi sütunlara ekleneceğini belirtir; VALUES anahtar kelimesi ise eklenecek gerçek değerleri içerir.

  • SELECT sutun1, sutun2, ... FROM tablo_adi WHERE kosul: Bir tablodan veri çekmek için kullanılır. SELECT sonrasında belirtilen sütunlar, sorgunun döndüreceği verileri belirler. Tüm sütunları seçmek için * kullanılabilir. FROM, verinin hangi tablodan çekileceğini gösterir. WHERE anahtar kelimesi, belirli koşulları karşılayan satırları filtrelemek için kullanılır.

  • UPDATE tablo_adi SET sutun1 = yeni_deger1, ... WHERE kosul: Bir tablodaki mevcut verileri güncellemek için kullanılır. SET anahtar kelimesi, hangi sütunların hangi yeni değerlerle güncelleneceğini belirtir. WHERE koşulu, hangi satırların etkileneceğini belirler; bu koşul olmadan tüm satırlar güncellenir.

  • DELETE FROM tablo_adi WHERE kosul: Bir tablodan veri silmek için kullanılır. WHERE koşulu, hangi satırların silineceğini belirler; bu koşul olmadan tablodaki tüm satırlar silinir.


Pratik Kullanım Örnekleri


Aşağıdaki örnekler, yukarıda açıklanan temel SQL komutlarının gerçek dünya senaryolarında nasıl kullanıldığını göstermektedir. Bu örnekler, bir "Calisanlar" tablosu üzerinden ilerleyecektir.


Örnek 1: Veritabanı ve Tablo Oluşturma

Öncelikle, bir veritabanı ve içinde çalışan bilgilerini tutacak bir tablo oluşturalım. Bu tablo, çalışan ID'si, adı, soyadı, departmanı ve maaşı gibi temel bilgileri içerecektir.



-- "SirketDB" adında bir veritabanı oluşturma
CREATE DATABASE SirketDB;

-- Oluşturulan veritabanını kullanmak için (çoğu SQL istemcisinde gereklidir)
USE SirketDB;

-- "Calisanlar" tablosunu oluşturma
CREATE TABLE Calisanlar (
    CalisanID INT PRIMARY KEY,
    Ad VARCHAR(50) NOT NULL,
    Soyad VARCHAR(50) NOT NULL,
    Departman VARCHAR(50),
    Maas DECIMAL(10, 2)
);

Örnek 2: Veri Ekleme

Şimdi "Calisanlar" tablosuna birkaç çalışan kaydı ekleyelim.



INSERT INTO Calisanlar (CalisanID, Ad, Soyad, Departman, Maas)
VALUES (101, 'Ahmet', 'Yılmaz', 'IT', 75000.00);

INSERT INTO Calisanlar (CalisanID, Ad, Soyad, Departman, Maas)
VALUES (102, 'Ayşe', 'Demir', 'İK', 60000.00);

INSERT INTO Calisanlar (CalisanID, Ad, Soyad, Departman, Maas)
VALUES (103, 'Mehmet', 'Can', 'IT', 80000.00);

INSERT INTO Calisanlar (CalisanID, Ad, Soyad, Departman, Maas)
VALUES (104, 'Zeynep', 'Kaya', 'Finans', 70000.00);

Örnek 3: Veri Seçme

Tablodaki tüm çalışanları listelemek, belirli bir departmandaki çalışanları veya belirli bir maaşın üzerindeki çalışanları seçmek için SELECT komutunu kullanalım.



-- Tüm çalışanları ve bilgilerini seçme
SELECT *
FROM Calisanlar;

-- Sadece IT departmanındaki çalışanların adını ve soyadını seçme
SELECT Ad, Soyad
FROM Calisanlar
WHERE Departman = 'IT';

-- Maaşı 70000'den yüksek olan çalışanları seçme
SELECT CalisanID, Ad, Maas
FROM Calisanlar
WHERE Maas > 70000;

Örnek 4: Veri Güncelleme

Bir çalışanın maaşını veya departmanını güncellemek için UPDATE komutunu kullanalım.



-- Ahmet Yılmaz'ın maaşını 80000 olarak güncelleme
UPDATE Calisanlar
SET Maas = 80000.00
WHERE CalisanID = 101;

-- Zeynep Kaya'nın departmanını 'Muhasebe' olarak güncelleme
UPDATE Calisanlar
SET Departman = 'Muhasebe'
WHERE CalisanID = 104;

Örnek 5: Veri Silme

Bir çalışanı tablodan silmek için DELETE FROM komutunu kullanalım.



-- Ayşe Demir'i tablodan silme
DELETE FROM Calisanlar
WHERE CalisanID = 102;

-- Tüm IT departmanı çalışanlarını silme (DİKKAT: Bu komut geri alınamaz!)
-- DELETE FROM Calisanlar WHERE Departman = 'IT';

Önemli Notlar


  • Büyük/Küçük Harf Duyarlılığı: SQL komutları genellikle büyük/küçük harfe duyarlı değildir (SELECT, select veya Select aynıdır). Ancak, bazı veritabanı sistemlerinde tablo ve sütun adları büyük/küçük harfe duyarlı olabilir. En iyi uygulama, tutarlı bir adlandırma stratejisi izlemektir.

  • Noktalı Virgül: Çoğu SQL veritabanı yönetim sistemi, her SQL ifadesinin sonunda noktalı virgül (;) kullanılmasını gerektirir veya bunu iyi bir uygulama olarak kabul eder. Bu, birden fazla ifadenin tek bir komut bloğunda çalıştırılmasını sağlar.

  • WHERE Koşulunun Önemi: UPDATE ve DELETE komutlarını kullanırken WHERE koşulunu dikkatlice belirtmek çok önemlidir. WHERE koşulu olmadan bu komutlar, tablodaki tüm satırları etkileyecektir, bu da istenmeyen veri kaybına yol açabilir.

  • Veri Tipleri: Tablo oluştururken doğru veri tiplerini seçmek, verilerin doğru şekilde saklanmasını ve performansın optimize edilmesini sağlar. Örneğin, metin verileri için VARCHAR, tam sayılar için INT, ondalıklı sayılar için DECIMAL veya FLOAT kullanılır.

  • Yorumlar: SQL kodunda yorum satırları eklemek, kodun okunabilirliğini artırır. Tek satırlık yorumlar için --, çok satırlık yorumlar için /* ... */ kullanılır.

9
0
CSS Dilinde CSS Seçicilerin Kullanımı

CSS (Cascading Style Sheets) içerisinde, web sayfalarındaki HTML elementlerini hedeflemek ve bu elementlere stil kuralları uygulamak için kullanılan temel mekanizma seçiciler (selectors) olarak adlandırılır. Seçiciler, belirli bir kritere uyan bir veya daha fazla elementi seçmek için güçlü ve esnek yöntemler sunar. Bu doküman, CSS seçicilerinin sözdizimini, çeşitli türlerini ve pratik kullanım örneklerini detaylı bir şekilde açıklamaktadır.


Temel Sözdizimi


Bir CSS kural seti, bir seçici ve bir bildirim bloğundan oluşur. Temel sözdizimi aşağıdaki gibidir:


selector {
    property: value;
    property: value;
}

Burada;


  • selector: Stil kurallarının uygulanacağı HTML elementini veya elementlerini belirler.

  • property: Uygulanacak stilin özelliğini (örneğin, color, font-size, margin) tanımlar.

  • value: Özelliğe atanacak değeri (örneğin, red, 16px, 10px) belirtir.


Detaylı Açıklama


CSS seçicileri, elementleri farklı kriterlere göre hedeflemek için çeşitli türlerde mevcuttur:


1. Tip (Element) Seçiciler


Belirli bir HTML element tipini seçer. Örneğin, tüm

elementlerini hedeflemek için kullanılır.


p {
    color: blue;
}

2. Kimlik (ID) Seçiciler


Belirli bir elementin id özelliğini kullanarak tek bir elementi hedefler. ID'ler bir sayfada benzersiz olmalıdır ve seçici # karakteri ile başlar.


#ana-baslik {
    font-size: 24px;
}

3. Sınıf (Class) Seçiciler


Birden fazla elemente uygulanabilen bir sınıfı hedefler. Seçici . karakteri ile başlar.


.vurgulu-metin {
    font-weight: bold;
}

4. Evrensel (Universal) Seçici


Sayfadaki tüm HTML elementlerini seçer. * karakteri ile temsil edilir.


* {
    margin: 0;
    padding: 0;
}

5. Nitelik (Attribute) Seçiciler


Belirli bir HTML niteliğine sahip veya belirli bir nitelik değerine sahip elementleri seçer.


  • [attribute]: Belirtilen niteliğe sahip tüm elementleri seçer (örneğin, [title]).

  • [attribute="value"]: Belirtilen niteliğe ve değere sahip elementleri seçer (örneğin, [type="text"]).

  • [attribute~="value"]: Niteliğin değer listesinde belirtilen kelimeyi içeren elementleri seçer (boşlukla ayrılmış kelimeler için).

  • [attribute^="value"]: Niteliğin değeri belirtilen dize ile başlayan elementleri seçer.

  • [attribute$="value"]: Niteliğin değeri belirtilen dize ile biten elementleri seçer.

  • [attribute*="value"]: Niteliğin değeri belirtilen dizeyi herhangi bir yerinde içeren elementleri seçer.


a[target="_blank"] {
    color: green;
}

6. Pseudo-class Seçiciler


Elementlerin belirli bir durumunu veya konumunu hedef alır. Örneğin, bir bağlantının üzerine gelindiğinde (:hover) veya bir listenin ilk elemanı (:first-child).


a:hover {
    text-decoration: underline;
}
li:first-child {
    font-weight: bold;
}

7. Pseudo-element Seçiciler


Bir elementin belirli bir bölümünü stilize etmek için kullanılır. Genellikle :: çift iki nokta üst üste ile belirtilir (örneğin, ::before, ::after, ::first-line, ::first-letter).


p::first-line {
    font-variant: small-caps;
}

8. Kombinatörler (Combinators)


İki veya daha fazla seçiciyi birleştirerek elementler arasındaki ilişkileri (ebeveyn-çocuk, kardeş vb.) temel alarak daha karmaşık seçimler yapmayı sağlar.


  • Torun Seçici (Descendant Selector) (boşluk): Bir elementin içindeki (torunu olan) tüm elementleri seçer. Örnek: div p.

  • Çocuk Seçici (Child Selector) (>): Bir elementin doğrudan çocuğu olan elementleri seçer. Örnek: div > p.

  • Bitişik Kardeş Seçici (Adjacent Sibling Selector) (+): Aynı ebeveyn elementine sahip olan ve ilk elementten hemen sonra gelen ikinci elementi seçer. Örnek: div + p.

  • Genel Kardeş Seçici (General Sibling Selector) (~): Aynı ebeveyn elementine sahip olan ve ilk elementten sonra gelen tüm ikinci elementleri seçer. Örnek: div ~ p.


div p { /* div içindeki tüm p etiketleri */
    margin-bottom: 10px;
}
ul > li { /* ul'nin doğrudan çocukları olan li etiketleri */
    list-style-type: square;
}

Pratik Kullanım Örnekleri


Aşağıdaki örnekler, farklı seçici türlerinin nasıl kullanıldığını göstermektedir:


Örnek 1: Temel Seçicilerin Kullanımı


HTML:


Makale Başlığı

Bu, makalenin giriş paragrafıdır.

Bu ise normal bir paragraftır.

Bu da bir span etiketi.

CSS:


#ana-baslik {
    color: #333;
    text-align: center;
}
.giris-paragrafi {
    font-style: italic;
    color: #555;
}
p {
    line-height: 1.6;
}

Örnek 2: Kombinatörler ve Pseudo-class


HTML:



Bu, container dışındaki bir paragraf.

CSS:


.container p { /* .container içindeki tüm p etiketleri */
    border-left: 3px solid blue;
    padding-left: 10px;
}
.container ul > li:first-child { /* .container içindeki ul'nin ilk li çocuğu */
    background-color: lightyellow;
}
a:hover { /* Tüm a etiketlerinin üzerine gelindiğinde */
    color: red;
    text-decoration: none;
}

Önemli Notlar


  • Özgüllük (Specificity): Birden fazla CSS kuralı aynı elementi hedeflediğinde, daha özgül (specific) olan seçici kazanır. ID seçiciler sınıf seçicilerden, sınıf seçiciler ise tip seçicilerden daha özgüldür.

  • Performans: En performanslı seçiciler ID ve sınıf seçicilerdir. Evrensel seçiciler (*) ve torun seçiciler (div p) tarayıcılar için daha fazla işlem maliyeti getirebilir.

  • Seçici Zincirleme: Aynı elemente birden fazla seçici uygulayabilirsiniz. Örneğin, p.warning hem

    etiketi hem de warning sınıfına sahip elementleri seçer.

  • Grup Seçiciler: Aynı stil kurallarını birden fazla seçiciye uygulamak için virgül (,) kullanarak seçicileri gruplayabilirsiniz. Örnek: h1, h2, h3 { color: navy; }.

  • !important Kullanımından Kaçınma: Özgüllük sorunlarını çözmek için !important kullanmak, CSS kodunuzu yönetmeyi zorlaştırır ve genellikle kötü bir pratik olarak kabul edilir. Daha iyi bir seçici veya daha iyi bir mimari tercih edilmelidir.


12
0
JavaScript Dilinde Değişken (Variable) Kullanımı

JavaScript, dinamik ve esnek bir programlama dili olarak, veri depolama ve işleme yeteneklerini değişkenler aracılığıyla sunar. Bir değişken (variable), bellekte bir değeri tutmak için kullanılan sembolik bir isim veya bir kapsayıcıdır. Bu değer, programın yürütülmesi sırasında değiştirilebilir. JavaScript'te değişkenler, programın karmaşıklığını yönetmek, verileri geçici olarak saklamak ve daha okunabilir kod yazmak için temel bir yapıdır. Bu makale, JavaScript'teki değişkenlerin tanımını, farklı bildirim yöntemlerini ve en iyi uygulama prensiplerini detaylı bir şekilde ele almaktadır.


Değişken Nedir?


Bir değişken, bir programa ait verileri depolamak için kullanılan ve bellekte belirli bir konumu temsil eden bir isimdir. JavaScript'te bir değişken bildirildiğinde, bu değişkene bir değer atanabilir. Atanan değerin türü (sayı, metin, boolean vb.) çalışma zamanında dinamik olarak belirlenir ve aynı değişkenin değeri ve hatta türü programın farklı noktalarında değiştirilebilir.


Temel Değişken Tanımlama Yöntemleri


JavaScript'te değişken tanımlamak için üç anahtar kelime kullanılır:


  • var: ES6 öncesinde kullanılan geleneksel yöntem.

  • let: ES6 ile tanıtılan, blok kapsamlı değişken bildirimi.

  • const: ES6 ile tanıtılan, blok kapsamlı ve sabit (değeri değiştirilemez) değişken bildirimi.


Sözdizimi


JavaScript'te bir değişken bildirmenin genel sözdizimi aşağıdaki gibidir:


anahtar_kelime değişken_adı = değer;

Bu sözdizimindeki her bir parçanın anlamı şunlardır:


  • anahtar_kelime: Değişkenin nasıl davranacağını (kapsam, yeniden atama/bildirim yeteneği) belirleyen var, let veya const anahtar kelimelerinden biridir.

  • değişken_adı: Değişkeni tanımlayan benzersiz bir isimdir. JavaScript değişken adlandırma kurallarına uymalıdır.

  • =: Atama operatörüdür. Değişkenin sağındaki değeri solundaki değişkene atar.

  • değer: Değişkene atanan veridir (sayı, metin, boolean, nesne vb.). Değişken bildirimi sırasında bir değer atanması isteğe bağlıdır, ancak const için zorunludur.

  • ;: İfadenin sonunu belirtir. JavaScript'te genellikle isteğe bağlıdır (otomatik noktalı virgül ekleme - ASI), ancak kodun okunabilirliği ve potansiyel hataları önlemek için kullanılması önerilir.


var Anahtar Kelimesi


var ile bildirilen değişkenler, fonksiyon kapsamlıdır (function-scoped). Bu, değişkenin bildirildiği fonksiyonun tamamında erişilebilir olduğu anlamına gelir. Eğer bir fonksiyon dışında bildirilirse, global kapsamlı olur. var ile bildirilen değişkenler yeniden bildirilebilir ve yeniden atanabilir. Ayrıca, hoisting (yukarı taşınma) özelliğine sahiptirler; yani bildirimleri kodun en üstüne taşınır, ancak değer atamaları yerinde kalır. Bu durum, beklenmedik davranışlara yol açabilir.


function ornekVarKullanimi() {
    var sayi = 10;
    console.log(sayi); // 10

    if (true) {
        var sayi = 20; // Yeniden bildirim ve atama (fonksiyon kapsamlı)
        console.log(sayi); // 20
    }
    console.log(sayi); // 20 (if bloğunun dışından da erişilebilir ve değeri değişmiş)

    var sayi = 30; // Tekrar bildirim yapılabilir
    console.log(sayi); // 30
}
ornekVarKullanimi();

console.log(mesaj); // undefined (hoisting nedeniyle hata vermez, ama değer atanmamış)
var mesaj = "Merhaba Dünya";
console.log(mesaj); // Merhaba Dünya

let Anahtar Kelimesi


let ile bildirilen değişkenler, blok kapsamlıdır (block-scoped). Bu, değişkenin sadece bildirildiği kod bloğu ({} ile tanımlanmış her yer; if, for, while veya fonksiyon bloğu) içinde erişilebilir olduğu anlamına gelir. let ile aynı isimde bir değişkeni aynı kapsamda yeniden bildirmek mümkün değildir, ancak değeri yeniden atanabilir. let de hoisting'e tabidir, ancak "Temporal Dead Zone" (TDZ) adı verilen bir mekanizma nedeniyle bildirimden önce erişilirse hata verir.


function ornekLetKullanimi() {
    let ad = "Ali";
    console.log(ad); // Ali

    if (true) {
        let ad = "Veli"; // Farklı bir 'ad' değişkeni (blok kapsamlı)
        console.log(ad); // Veli
    }
    console.log(ad); // Ali (if bloğunun dışındaki 'ad' değişmedi)

    // let ad = "Ayşe"; // SyntaxError: 'ad' already been declared
    ad = "Ayşe"; // Yeniden atama yapılabilir
    console.log(ad); // Ayşe
}
ornekLetKullanimi();

// console.log(deneme); // ReferenceError: Cannot access 'deneme' before initialization (TDZ nedeniyle)
let deneme = "Test";

const Anahtar Kelimesi


const ile bildirilen değişkenler de let gibi blok kapsamlıdır. En önemli farkı, bir kez değer atandıktan sonra bu değerin değiştirilememesidir. Yani, const ile bildirilen bir değişkene yeniden atama yapılamaz ve aynı isimle yeniden bildirim yapılamaz. const ile bir değişken bildirildiğinde, başlangıç değeri hemen atanmak zorundadır. Nesneler ve diziler için const kullanıldığında, değişkenin referansı sabittir, ancak nesnenin veya dizinin içindeki elemanlar değiştirilebilir.


function ornekConstKullanimi() {
    const PI = 3.14;
    console.log(PI); // 3.14

    // PI = 3.14159; // TypeError: Assignment to constant variable.
    // const PI = 3.0; // SyntaxError: 'PI' has already been declared

    if (true) {
        const SABIT_METIN = "Merhaba";
        console.log(SABIT_METIN); // Merhaba
    }
    // console.log(SABIT_METIN); // ReferenceError: SABIT_METIN is not defined (blok kapsamlı)

    const ayarlar = {
        tema: "koyu"
    };
    ayarlar.tema = "açık"; // Nesnenin içeriği değiştirilebilir
    console.log(ayarlar.tema); // açık

    // ayarlar = { tema: "mavi" }; // TypeError: Assignment to constant variable. (referans değiştirilemez)
}
ornekConstKullanimi();

Pratik Kullanım Örnekleri


Aşağıdaki örnekler, farklı değişken bildirim yöntemlerinin gerçek dünya senaryolarında nasıl kullanılabileceğini göstermektedir.


// Örnek 1: Basit Değişken Atamaları
let kullaniciAdi = "john.doe"; // Değişebilir bir kullanıcı adı
const vergiOrani = 0.18;      // Sabit bir vergi oranı
var eskiSistemID = "A123";    // Eski sistemlerde var kullanımı

console.log(`Kullanıcı Adı: ${kullaniciAdi}`);    // Kullanıcı Adı: john.doe
console.log(`Vergi Oranı: ${vergiOrani}`);        // Vergi Oranı: 0.18

kullaniciAdi = "jane.doe"; // let ile bildirilen değer değiştirilebilir
console.log(`Yeni Kullanıcı Adı: ${kullaniciAdi}`); // Yeni Kullanıcı Adı: jane.doe
// vergiOrani = 0.20; // Hata verir: Assignment to constant variable.


// Örnek 2: Döngülerde let kullanımı
for (let i = 0; i < 3; i++) {
    console.log(`Döngü içindeki i: ${i}`); // 0, 1, 2
}
// console.log(i); // Hata verir: i is not defined (let blok kapsamlıdır)

for (var j = 0; j < 3; j++) {
    console.log(`Döngü içindeki j: ${j}`); // 0, 1, 2
}
console.log(`Döngü dışındaki j: ${j}`); // Döngü dışındaki j: 3 (var fonksiyon/global kapsamlıdır)


// Örnek 3: Nesne ve Dizi ile const
const kullaniciBilgileri = {
    isim: "Mehmet",
    yas: 30,
    aktif: true
};

kullaniciBilgileri.yas = 31; // Nesnenin özelliği değiştirilebilir
kullaniciBilgileri.sehir = "Ankara"; // Yeni özellik eklenebilir
console.log(kullaniciBilgileri); // { isim: 'Mehmet', yas: 31, aktif: true, sehir: 'Ankara' }

// kullaniciBilgileri = { isim: "Ayşe" }; // Hata verir: Assignment to constant variable. (referans değiştirilemez)

const sayilar = [1, 2, 3];
sayilar.push(4); // Diziye eleman eklenebilir
console.log(sayilar); // [1, 2, 3, 4]

// sayilar = [5, 6]; // Hata verir: Assignment to constant variable. (referans değiştirilemez)

Önemli Notlar


  • Adlandırma Kuralları: Değişken adları harf, sayı, alt çizgi (_) veya dolar işareti ($) ile başlayabilir. Sayı ile başlayamazlar. JavaScript anahtar kelimeleri (function, if, for vb.) değişken adı olarak kullanılamaz. Genellikle camelCase (kullaniciAdi) tercih edilir.

  • let ve const Kullanımı: Modern JavaScript geliştirmesinde, var yerine let ve const kullanılması şiddetle tavsiye edilir. Bu, kodun daha öngörülebilir olmasını sağlar, kapsam hatalarını azaltır ve "Temporal Dead Zone" sayesinde bildirim öncesi erişimi engeller.

  • const ile Sabit Referans: Bir değişkeni const ile bildirmek, o değişkenin değerinin sabit olduğu anlamına gelmez, referansının sabit olduğu anlamına gelir. İlkel tipler (sayı, metin, boolean) için bu aynı anlama gelirken, nesne ve diziler için referans sabittir ancak içindeki özellikler veya elemanlar değiştirilebilir.

  • Bildirim Olmadan Atama: Strict mode ("use strict";) kullanılmadığında, bir değişkeni var, let veya const olmadan doğrudan atamak mümkündür (x = 5;). Bu, otomatik olarak global bir değişken oluşturur ve genellikle kötü bir pratiktir, hatalara yol açabilir. Her zaman değişkenlerinizi bildirin.

  • Hoisting ve TDZ: var ile bildirilen değişkenler, kodun en üstüne taşınır ve başlangıç değeri undefined olarak atanır. let ve const de hoisting'e tabidir ancak "Temporal Dead Zone" (TDZ) nedeniyle bildirimden önce erişilemezler, bu da daha güvenli bir kullanım sunar.

12
0
SQL Dilinde Temel Sözdizimi Kullanımı Kılavuzu

SQL (Structured Query Language), veritabanlarını yönetmek ve sorgulamak için kullanılan standart bir dildir. Bu dilin etkin bir şekilde kullanılabilmesi için temel sözdizimi kurallarının anlaşılması kritik öneme sahiptir. Sözdizimi, bir dilin komutlarını, ifadelerini ve yapılarını doğru bir şekilde oluşturmak için izlenmesi gereken kurallar bütünüdür. Bu kılavuz, SQL dilinin temel sözdizimi yapısını, bileşenlerini ve pratik kullanım örneklerini detaylı bir şekilde açıklayacaktır.


Temel SQL Sözdizimi


SQL ifadeleri genellikle bir anahtar kelimeyle başlar, ardından belirli parametreler ve koşullar gelir. En yaygın sözdizimi kalıbı aşağıdaki gibidir:

SELECT [DISTINCT] kolon1, kolon2, ...
FROM tablo_adı
WHERE koşul
GROUP BY kolon
HAVING koşul
ORDER BY kolon [ASC|DESC];

Bu genel yapı, çoğu SQL sorgusunun temelini oluşturur. Her bir bileşen, belirli bir amaca hizmet eder ve sorgunun nasıl yürütüleceğini belirler.


Sözdizimi Bileşenlerinin Detaylı Açıklaması


  • SELECT: SELECT ifadesi, veritabanından veri almak için kullanılır. Hangi sütunların döndürüleceğini belirtirsiniz.

  • [DISTINCT]: DISTINCT anahtar kelimesi, seçilen sütunlardaki yinelenen değerleri ortadan kaldırarak yalnızca benzersiz değerlerin döndürülmesini sağlar. Köşeli parantezler, bu kısmın isteğe bağlı olduğunu gösterir.

  • kolon1, kolon2, ...: Seçilecek sütunların adlarıdır. Tüm sütunları seçmek için * karakteri kullanılabilir.

  • FROM tablo_adı: FROM ifadesi, verilerin hangi tablodan çekileceğini belirtir.

  • WHERE koşul: WHERE yan tümcesi, belirli bir koşulu karşılayan satırları filtrelemek için kullanılır. Bu, sorgunun döndüreceği veri kümesini daraltır.

  • GROUP BY kolon: GROUP BY yan tümcesi, aynı değere sahip satırları belirtilen sütunlara göre gruplar. Genellikle toplama fonksiyonlarıyla (COUNT, SUM, AVG vb.) birlikte kullanılır.

  • HAVING koşul: HAVING yan tümcesi, GROUP BY ile oluşturulan grupları filtrelemek için kullanılır. WHERE koşuluna benzer, ancak gruplar üzerinde çalışır.

  • ORDER BY kolon [ASC|DESC]: ORDER BY yan tümcesi, sonuç kümesini belirtilen sütuna göre artan (ASC - varsayılan) veya azalan (DESC) sırada sıralar.

  • ;: Çoğu SQL veritabanında, bir SQL ifadesinin sonunu belirtmek için noktalı virgül (;) kullanılır. Bu, birden fazla ifadenin aynı anda çalıştırılmasını kolaylaştırır ve iyi bir pratiktir.


Pratik Kullanım Örnekleri


Aşağıdaki örnekler, yukarıda açıklanan sözdizimi bileşenlerinin nasıl kullanıldığını göstermektedir:


Örnek 1: Tüm Verileri Seçme

Bir tablodaki tüm sütunları ve satırları seçmek için SELECT * kullanılır.

SELECT *
FROM Calisanlar;

Örnek 2: Belirli Sütunları Seçme

Yalnızca belirli sütunları seçmek için sütun adlarını virgülle ayırarak belirtin.

SELECT Ad, Soyad, Maas
FROM Calisanlar;

Örnek 3: Koşullu Veri Seçimi (WHERE)

WHERE yan tümcesini kullanarak belirli bir koşulu karşılayan satırları filtreleyebilirsiniz.

SELECT Ad, Soyad
FROM Calisanlar
WHERE DepartmanID = 3;

Örnek 4: Gruplama ve Toplama (GROUP BY, COUNT)

Departmanlara göre çalışan sayısını bulmak için GROUP BY ve COUNT fonksiyonunu kullanın.

SELECT DepartmanID, COUNT(CalisanID) AS ToplamCalisan
FROM Calisanlar
GROUP BY DepartmanID;

Örnek 5: Grupları Filtreleme (HAVING)

Yukarıdaki örnekte, sadece 2'den fazla çalışanı olan departmanları listelemek için HAVING kullanılır.

SELECT DepartmanID, COUNT(CalisanID) AS ToplamCalisan
FROM Calisanlar
GROUP BY DepartmanID
HAVING COUNT(CalisanID) > 2;

Örnek 6: Sıralama (ORDER BY)

Çalışanları maaşlarına göre azalan sırada sıralamak için ORDER BY kullanın.

SELECT Ad, Soyad, Maas
FROM Calisanlar
ORDER BY Maas DESC;

Önemli Notlar ve İpuçları


  • Büyük/Küçük Harf Duyarlılığı: SQL anahtar kelimeleri genellikle büyük/küçük harf duyarlı değildir (örneğin, SELECT ve select aynıdır). Ancak, tablo ve sütun adları, kullandığınız veritabanı sistemine (örneğin, MySQL varsayılan olarak Linux'ta duyarlıdır) ve yapılandırmasına göre duyarlı olabilir. En iyi uygulama, tutarlı bir adlandırma stratejisi izlemektir.

  • Noktalı Virgül Kullanımı: Birçok veritabanı yönetim sistemi (DBMS), her SQL ifadesinin sonunda noktalı virgül (;) kullanılmasını gerektirir veya bunu iyi bir uygulama olarak teşvik eder. Bu, birden fazla ifadeyi tek bir sorguda çalıştırmanıza olanak tanır.

  • Okunabilirlik: Büyük ve karmaşık sorguları daha anlaşılır hale getirmek için girintileme ve boşluk kullanımı önemlidir. Ayrıca, sorgularınıza açıklama eklemek için -- Bu bir yorumdur (tek satır) veya /* Bu birden fazla satırlık bir yorumdur */ (çoklu satır) kullanabilirsiniz.

  • Güvenlik (SQL Injection): Kullanıcı girdilerini doğrudan SQL sorgularına eklemek yerine, parametreli sorgular veya hazır ifadeler (prepared statements) kullanarak SQL injection saldırılarına karşı önlem alın. Bu, veritabanı güvenliği için kritik bir adımdır.

  • Performans: Büyük veritabanlarında sorgu performansını optimize etmek için doğru indeksleme, sorgu planlarını anlama ve gereksiz veri çekmekten kaçınma gibi konulara dikkat edin. WHERE ve JOIN koşullarının etkinliği performansı doğrudan etkiler.

16
0
İnternetten Anket Doldurarak Para Kazanma Yolları 2025: Ek Gelir Elde Etmenin En Kolay Yolu Mu?

Günümüz dijital dünyasında, evden veya istediğiniz yerden ek gelir elde etmenin pek çok yolu var. Bu yollardan biri de, belki de en kolay ve risksiz olanı: internetten anket doldurarak para kazanmak. "Anket doldurarak mı?" diye şaşırmış olabilirsiniz. Evet, doğru duydunuz! Piyasada ürün ve hizmetlerini geliştirmek isteyen şirketler, sizin gibi gerçek tüketicilerin fikirlerine paha biçilmez değer veriyor. Peki, 2025 yılında bu sistem gerçekten işe yarıyor mu? Ne kadar kazanabilirsiniz? Hangi platformlar güvenilir?


Bu makalede, internetten anket doldurarak para kazanma konusundaki tüm merak ettiklerinizi giderecek, size bu alandaki en güncel ve doğru bilgileri sunacağım. Hazırsanız, gelin birlikte bu ek gelir kapısını aralayalım!


Online Anketler Nedir ve Neden Para Öderler?


Online anketler, pazar araştırma şirketleri tarafından tüketicilerin belirli ürünler, hizmetler veya genel konulardaki görüşlerini toplamak amacıyla oluşturulan dijital soru setleridir. Şirketler, yeni bir ürün piyasaya sürmeden önce veya mevcut bir ürününü geliştirirken, hedef kitlelerinin ne düşündüğünü bilmek isterler. İşte burada devreye siz giriyorsunuz!


Sizin değerli geri bildirimleriniz, şirketlerin stratejik kararlar almasına yardımcı olur. Bu bilgilerin değeri o kadar büyüktür ki, şirketler bu geri bildirimleri toplamak için pazar araştırma firmalarına ödeme yapar. Pazar araştırma firmaları da, anketleri dolduran kişilere (yani size) belirli bir miktar para veya hediye kartı şeklinde bir teşvik sunar. Kısacası, fikirleriniz şirketler için altın değerindedir ve bu değeri size geri ödemeye hazırdırlar.


Ne Kadar Kazanabilirsiniz? Gerçekçi Beklentiler Nelerdir?


Anket doldurarak zengin olacağınızı söylemek gerçekçi olmaz. Ancak, düzenli ve stratejik bir yaklaşımla, aylık cebinize hatırı sayılır bir ek gelir koyabilirsiniz. Kazancınız, katıldığınız anketlerin sayısına, süresine, karmaşıklığına ve tabii ki kullandığınız platformlara göre değişiklik gösterir.


Genel olarak, bir anketten kazanacağınız miktar 0.50$ ile 5$ arasında değişebilir. Bazı özel veya uzun anketler 10$ veya daha fazla ödeme yapabilir. Günde birkaç anket doldurarak ayda 50$ ile 200$ arasında bir ek gelir elde etmek oldukça mümkündür. Bu, faturalara destek olmak, küçük harcamaları karşılamak veya birikim yapmak için harika bir yoldur.


2025 Yılında Güvenilir ve Popüler Anket Siteleri


Piyasada yüzlerce anket sitesi bulunuyor, ancak hepsi güvenilir veya kazançlı değil. İşte size 2025 yılında öne çıkan, kullanıcılar tarafından beğenilen ve ödeme konusunda sorun yaşatmayan bazı güvenilir platformlar:


  • Swagbucks: Sadece anket doldurarak değil, video izleyerek, oyun oynayarak, online alışveriş yaparak da puan kazanabileceğiniz çok yönlü bir platformdur. Kazandığınız puanları nakit (PayPal) veya hediye kartlarına çevirebilirsiniz. Minimum ödeme eşiği oldukça düşüktür.

  • Toluna Influencers: Küresel çapta tanınan bir pazar araştırma şirketidir. Çeşitli konularda anketler sunar ve ödemeleri PayPal veya hediye kartları aracılığıyla yapar. Sık sık anket gönderir ve kullanıcı dostu bir arayüze sahiptir.

  • Survey Junkie: Basit ve anlaşılır arayüzü sayesinde özellikle yeni başlayanlar için idealdir. Sadece anket odaklıdır ve puanlarınızı PayPal veya e-hediye kartlarına dönüştürme seçeneği sunar. Anket başına ortalama kazançları tatmin edicidir.

  • LifePoints: Eski GlobalTestMarket ve MySurvey sitelerinin birleşmesiyle oluşmuştur. Geniş bir anket yelpazesi sunar ve puanlarınızı PayPal, hediye kartları veya bağış yoluyla kullanmanıza olanak tanır. Düzenli olarak anket davetleri gönderir.

  • MyPoints: Swagbucks gibi, sadece anketlerle sınırlı kalmayan bir platformdur. Online alışveriş, video izleme, e-posta okuma gibi farklı yollarla da puan kazanabilirsiniz. Ödemeleri hediye kartları veya PayPal üzerinden yapar.

  • PrizeRebel: Anket doldurmanın yanı sıra, küçük görevler yaparak, video izleyerek ve arkadaşlarını davet ederek puan kazanabileceğiniz popüler bir sitedir. Ödemeler hızlıdır ve PayPal, hediye kartları gibi seçenekler sunar.

  • InboxDollars (veya Avrupa'da InboxPounds): Anketlerin yanı sıra, e-posta okuma, oyun oynama ve teklifleri tamamlama gibi görevlerle para kazandıran bir platformdur. Ödemeler nakit olarak yapılır ve minimum ödeme eşiği biraz daha yüksek olabilir.

  • YouGov: Özellikle kamuoyu ve sosyal konular üzerine anketler sunan saygın bir platformdur. Anketleri genellikle daha bilgilendirici ve düşündürücüdür. Ödemeleri nakit (banka transferi veya PayPal) veya hediye kartları şeklinde yapar.

Anket Doldurarak Kazancınızı En Üst Düzeye Çıkarma İpuçları


Sadece kaydolmak yeterli değil. İşte kazancınızı artırmak için uygulayabileceğiniz bazı stratejiler:


  • Profilinizi Eksiksiz Doldurun: Kaydolduğunuzda profil anketlerini detaylı ve doğru bir şekilde doldurun. Bu, size uygun anketlerin gelme olasılığını artırır ve anketlerden elenme riskinizi azaltır. Demografik bilgileriniz, ilgi alanlarınız, alışveriş alışkanlıklarınız gibi bilgiler, doğru hedef kitleye ulaşmak isteyen şirketler için çok önemlidir.



  • Birden Fazla Platforma Kaydolun: Tek bir siteye bağlı kalmak yerine, yukarıda belirtilen gibi birkaç güvenilir platforma birden kaydolun. Bu, size daha fazla anket daveti gelmesini sağlar ve kazanç potansiyelinizi artırır.



  • E-postalarınızı Düzenli Kontrol Edin: Anket siteleri genellikle yeni anket davetlerini e-posta yoluyla gönderir. Fırsatları kaçırmamak için e-postalarınızı sık sık kontrol edin ve spam klasörünü de gözden geçirin. Anketler genellikle kota dolana kadar açık kalır, bu yüzden hızlı olmak önemlidir.



  • Dürüst ve Tutarlı Olun: Anket sorularına her zaman dürüst ve tutarlı cevaplar verin. Pazar araştırma şirketleri, tutarsız cevapları kolayca tespit edebilir ve bu durum hesabınızın askıya alınmasına yol açabilir. Aceleci veya düşüncesiz cevaplardan kaçının.



  • Minimum Ödeme Eşiğine Dikkat Edin: Her platformun bir minimum ödeme eşiği vardır (örn. 10$ veya 25$). Paranızı çekebilmek için bu eşiğe ulaşmanız gerekir. Bu eşiği düşük olan platformları tercih etmek, kazancınıza daha hızlı ulaşmanızı sağlar.



  • Zaman Yönetimi Yapın: Anket doldurmayı günlük rutininize entegre edin. Sabah kahvenizi içerken, öğle molasında veya akşam televizyon izlerken birkaç anket doldurmak, zamanınızı verimli kullanmanıza yardımcı olur. Boş zamanlarınızı değerlendirmenin harika bir yoludur.



  • Dolandırıcılık ve Sahte Sitelerden Sakının: Ne yazık ki, bu alanda da dolandırıcılar mevcut. Kaydolmadan önce her zaman sitenin güvenilirliğini araştırın. Şunlara dikkat edin: Asla sizden para talep eden bir siteye güvenmeyin. Aşırı yüksek kazanç vaat eden sitelerden uzak durun. Bilgilerinizi paylaşmadan önce sitenin SSL sertifikası (adres çubuğunda kilit simgesi) olup olmadığını kontrol edin.


Anket Doldurarak Para Kazanmanın Artıları ve Eksileri


Her ek gelir yönteminde olduğu gibi, anket doldurmanın da kendine göre avantajları ve dezavantajları vardır:


Artıları:


  • Esneklik: İstediğiniz zaman, istediğiniz yerden çalışabilirsiniz. Sabit bir mesai saatiniz yoktur.

  • Ek Gelir: Düzenli bir ek gelir elde etmenizi sağlar.

  • Kolaylık: Özel bir yetenek veya deneyim gerektirmez, herkes yapabilir.

  • Çeşitlilik: Farklı konular hakkında bilgi edinirken, yeni ürünler ve hizmetler hakkında fikir sahibi olursunuz.

  • Etki Etme: Fikirlerinizle şirketlerin ürün ve hizmetlerini şekillendirmeye yardımcı olursunuz.

Eksileri:


  • Düşük Kazanç Potansiyeli: Tam zamanlı bir işin yerini tutmaz, sadece ek gelir için uygundur.

  • Elenme Riski: Bazen anketin ortasında demografik veya ilgi alanı kriterlerine uymadığınız için elenebilirsiniz.

  • Monotonluk: Uzun süre anket doldurmak bazıları için sıkıcı olabilir.

  • Güvenilirlik Sorunları: Güvenilir olmayan sitelerle karşılaşma riski vardır.

Peki, Anket Doldurarak Para Kazanmak Gerçekten Değer Mi?


Bu sorunun cevabı, beklentilerinize ve ne kadar zaman ayırmak istediğinize bağlıdır. Eğer amacınız hızlı ve kolay yoldan zengin olmaksa, online anketler sizin için doğru adres değildir. Ancak, ayda birkaç yüz liralık ek gelir elde etmek, boş zamanlarınızı verimli değerlendirmek ve fikirlerinizle katkıda bulunmak istiyorsanız, evet, kesinlikle değer!


Unutmayın, bu bir maraton değil, sprint. Düzenli ve sabırlı bir yaklaşımla, internetten anket doldurarak cebinize anlamlı bir katkı sağlayabilirsiniz. 2024 yılında da bu yöntem, dijital ek gelir kapıları arasında sağlam bir yerini koruyor. Başarılar dilerim!


9
0
Python Dilinde Temel Sözdizimi (Syntax) Kullanımı

Python, yüksek okunabilirliği ve basit sözdizimi sayesinde dünya genelinde en popüler programlama dillerinden biri haline gelmiştir. Yazılım geliştirmeden veri analizine, yapay zekadan web uygulamalarına kadar geniş bir yelpazede kullanılmaktadır. Python'ın bu kadar yaygın olmasının temel nedenlerinden biri, doğal dil benzeri yapısıyla öğrenmesinin ve uygulamasının kolay olmasıdır. Ancak, bir programlama dilini etkili bir şekilde kullanabilmek için onun temel sözdizimi kurallarını eksiksiz kavramak zorunludur. Bu makale, Python dilinde kullanılan temel sözdizimini (syntax) adım adım açıklayarak, sağlam bir programlama temeli oluşturmanıza yardımcı olmayı hedeflemektedir.


Temel Sözdizimi Kuralları


Python sözdizimi, kodun nasıl yazılması gerektiğini belirleyen kurallar bütünüdür. Bu kurallar, Python yorumlayıcısının yazdığınız kodu doğru bir şekilde anlamasını ve çalıştırmasını sağlar. Temel Python sözdizimi öğeleri şunlardır:


  • Girintileme (Indentation): Python'ın en belirgin ve önemli sözdizimi özelliğidir. Diğer dillerde genellikle süslü parantezler veya anahtar kelimelerle belirtilen kod blokları, Python'da girintileme ile tanımlanır. Bir kod bloğunun (örneğin bir if ifadesi, bir for döngüsü veya bir fonksiyon tanımı) tüm satırları aynı seviyede girintili olmalıdır. Genellikle dört boşluk kullanılır.

  • Yorum Satırları (Comments): Kodun okunabilirliğini artırmak ve işlevini açıklamak için kullanılır. Python, tek satırlık yorumlar için # karakterini, çok satırlık yorumlar (veya docstring'ler) için ise üçlü tırnak işaretlerini ("""...""" veya '''...''') kullanır. Yorumlar, yorumlayıcı tarafından göz ardı edilir.

  • Değişkenler ve Atama: Değişkenler, veri depolamak için kullanılan adlandırılmış bellek konumlarıdır. Python'da değişken tanımlamak için belirli bir veri tipi belirtmeye gerek yoktur; tip atanan değere göre otomatik olarak belirlenir. Atama işlemi = operatörü ile yapılır.

  • Operatörler: Değişkenler ve değerler üzerinde işlemler yapmak için kullanılır. Python'da aritmetik (+, -, *, /), karşılaştırma (==, !=, <, >), mantıksal (and, or, not) ve atama (=, +=, -=) gibi çeşitli operatörler bulunur.

  • Anahtar Kelimeler (Keywords): Python dili tarafından özel anlamı olan ve değişken veya fonksiyon adı olarak kullanılamayan rezerv kelimelerdir (örn. if, else, for, while, def, class, import).

  • Kolon (:) Kullanımı: Koşullu ifadeler (if), döngüler (for, while), fonksiyon tanımları (def) ve sınıf tanımları (class) gibi kod bloklarını başlatan satırların sonunda bir kolon (:) bulunur. Bu kolondan sonraki satırlar girintili olmalıdır.


Detaylı Açıklama


Her bir temel sözdizimi öğesini daha yakından inceleyelim:


  • Girintileme: Python, kod bloklarını ayırmak için girintilemeyi kullanır. Bu, kodun okunabilirliğini artırsa da, yanlış girintileme IndentationError hatalarına yol açar. Bir if ifadesinin veya for döngüsünün kapsamındaki tüm satırlar aynı miktarda girintili olmalıdır.

  • Yorum Satırları:

    # Bu tek satırlık bir yorumdur.
    print("Merhaba, Python!") # Bu da aynı satırdaki bir yorumdur.
    
    """
    Bu, birden fazla satıra yayılan
    çok satırlı bir yorum örneğidir.
    Genellikle fonksiyonların veya sınıfların başında docstring olarak kullanılır.
    """
    

  • Değişkenler ve Atama: Değişken adları harf veya alt çizgi ile başlamalıdır, sayılarla başlayamaz. Harf, sayı ve alt çizgi içerebilirler. Python büyük/küçük harfe duyarlıdır (sayi ve Sayi farklı değişkenlerdir).

    sayi = 10              # Integer (tam sayı)
    isim = "Alice"         # String (metin)
    pi_degeri = 3.14       # Float (ondalıklı sayı)
    aktif_mi = True        # Boolean (mantıksal değer)
    

  • Operatörler: Operatörler, değerler üzerinde çeşitli işlemler gerçekleştirmek için kullanılır.

    • Aritmetik: + (toplama), - (çıkarma), * (çarpma), / (bölme), % (modülüs), ** (üs alma), // (tam sayı bölme).

    • Karşılaştırma: == (eşit mi), != (eşit değil mi), < (küçük mü), > (büyük mü), <= (küçük veya eşit mi), >= (büyük veya eşit mi).

    • Mantıksal: and (ve), or (veya), not (değil).

  • Fonksiyon Tanımlama: Fonksiyonlar, belirli bir görevi yerine getiren kod bloklarıdır. def anahtar kelimesi ile tanımlanır ve bir veya daha fazla parametre alabilirler. Fonksiyon bloğu girintili olmalıdır.

    def selamlama(ad):
        print(f"Merhaba, {ad}!")
    

  • Kontrol Akışı: if, elif, else ifadeleri ile koşullu dallanma, for ve while döngüleri ile tekrarlı işlemler yapılır. Bu yapıların her biri kolon (:) ile biter ve sonraki kod blokları girintili olmalıdır.

    # if-elif-else örneği
    sayi = 15
    if sayi > 0:
        print("Sayı pozitif.")
    elif sayi == 0:
        print("Sayı sıfır.")
    else:
        print("Sayı negatif.")
    
    # for döngüsü örneği
    for i in range(5):
        print(i)
    


Pratik Kullanım Örnekleri


Aşağıdaki örnekler, yukarıda açıklanan sözdizimi kurallarının birleşimini göstermektedir.


Örnek 1: Değişken Tanımlama ve Aritmetik İşlemler

# İki sayı tanımlama
sayi1 = 25
sayi2 = 7

# Aritmetik işlemler
toplam = sayi1 + sayi2
fark = sayi1 - sayi2
carpim = sayi1 * sayi2
bolum = sayi1 / sayi2 # Float sonuç verir
tam_bolum = sayi1 // sayi2 # Tam sayı sonuç verir
modulus = sayi1 % sayi2

# Sonuçları yazdırma
print(f"Sayı 1: {sayi1}")
print(f"Sayı 2: {sayi2}")
print(f"Toplam: {toplam}")
print(f"Fark: {fark}")
print(f"Çarpım: {carpim}")
print(f"Bölüm: {bolum}")
print(f"Tam Bölüm: {tam_bolum}")
print(f"Modülüs: {modulus}")

Örnek 2: Koşullu İfadeler (if-elif-else) ve Karşılaştırma Operatörleri

# Kullanıcıdan bir sayı girişi alma
girilen_sayi = int(input("Bir sayı giriniz: "))

# Sayının pozitif, negatif veya sıfır olduğunu kontrol etme
if girilen_sayi > 0:
    print("Girilen sayı pozitiftir.")
elif girilen_sayi < 0:
    print("Girilen sayı negatiftir.")
else:
    print("Girilen sayı sıfırdır.")

Örnek 3: Döngü Kullanımı (for) ve Liste İşlemleri

# Bir meyve listesi tanımlama
meyveler = ["elma", "muz", "çilek", "kiraz"]

# Liste üzerinde döngü yapma ve her meyveyi yazdırma
print("Meyveler:")
for meyve in meyveler:
    print(meyve)

# Liste uzunluğunu kontrol etme
print(f"Listedeki meyve sayısı: {len(meyveler)}")

Örnek 4: Fonksiyon Tanımlama ve Kullanımı

# İki sayının toplamını döndüren bir fonksiyon tanımlama
def sayilari_topla(a, b):
    """
    Bu fonksiyon, iki tam sayıyı alır ve toplamlarını döndürür.
    """
    toplam = a + b
    return toplam

# Fonksiyonu çağırma ve sonucu bir değişkene atama
sonuc = sayilari_topla(10, 20)
print(f"10 ve 20'nin toplamı: {sonuc}")

# Başka değerlerle fonksiyonu çağırma
sonuc2 = sayilari_topla(5, 8)
print(f"5 ve 8'in toplamı: {sonuc2}")

Önemli Notlar ve İpuçları


  • Girinti Tutarlılığı: Python'da girintiler çok önemlidir. Ya sadece boşluk (genellikle 4 boşluk) ya da sadece tab kullanın, ancak ikisini karıştırmaktan kaçının. Çoğu Python geliştirme ortamı (IDE) boşluk kullanımını otomatik olarak ayarlar.

  • Büyük/Küçük Harf Duyarlılığı: Python, değişken adları, fonksiyon adları ve anahtar kelimeler konusunda büyük/küçük harfe duyarlıdır. Örneğin, Degisken ve degisken iki farklı değişkendir.

  • Anlamlı Adlandırma: Değişkenlerinize, fonksiyonlarınıza ve sınıflarınıza amaçlarını açıkça belirten anlamlı adlar verin. Bu, kodunuzu daha okunabilir ve sürdürülebilir hale getirir.

  • Yorumları Etkin Kullanın: Özellikle karmaşık mantık içeren bölümlerde kodunuzu açıklamak için yorumları kullanmaktan çekinmeyin. Bu, hem sizin hem de diğer geliştiricilerin kodu daha kolay anlamasına yardımcı olur.

  • PEP 8 Kuralları: Python topluluğu tarafından kabul edilen resmi stil rehberi olan PEP 8'i takip etmeye çalışın. Bu, kodunuzun tutarlı, okunabilir ve standartlara uygun olmasını sağlar. PEP 8, değişken adlandırma kurallarından (örn. snake_case), satır uzunluklarına ve boşluk kullanımına kadar birçok kuralı içerir.

  • Hata Mesajlarını Okuyun: Bir hata (özellikle SyntaxError veya IndentationError) aldığınızda, Python yorumlayıcısının verdiği hata mesajını dikkatlice okuyun. Bu mesajlar genellikle hatanın türü ve nerede oluştuğu hakkında değerli bilgiler içerir.

12
0
CSS Dilinde Yorum (Comments) Kullanımı

CSS (Cascading Style Sheets) kodlama pratiklerinde, kodun okunabilirliğini ve bakımını kolaylaştırmak amacıyla yorumlar (comments) kritik bir rol oynar. Yorumlar, geliştiricilerin kodun belirli bölümleri hakkında notlar almasına, açıklamalar eklemesine veya geçici olarak belirli CSS kurallarını devre dışı bırakmasına olanak tanır. Bu kılavuz, CSS yorumlarının temel sözdizimini, detaylı kullanımını ve pratik örneklerini sunarak, daha düzenli ve anlaşılır stil sayfaları oluşturmanıza yardımcı olmayı hedeflemektedir.


Sözdizimi


CSS dilinde yorumlar, /* karakter dizisi ile başlar ve */ karakter dizisi ile sona erer. Bu yapı, hem tek satırlık hem de çok satırlık yorumlar için kullanılır.

/* Bu bir CSS yorumudur. */
/*
  Bu birden fazla satıra yayılmış
  bir CSS yorum bloğudur.
*/

Yukarıdaki örnekte görüldüğü gibi, yorumlar /* ile başlayıp */ ile biten bloklar halinde yazılır. Bu bloklar içine yazılan her şey, CSS derleyicisi ve tarayıcılar tarafından tamamen yok sayılır.


Detaylı Açıklama


CSS yorumlarının yapısı oldukça basittir ancak her bir bileşenin belirli bir anlamı vardır:


  • /* (Yorum Başlangıcı): Bu karakter dizisi, bir yorum bloğunun başladığını belirtir. Tarayıcı, bu noktadan itibaren gelen tüm metni bir yorum olarak değerlendirmeye başlar.

  • Yorum Metni: /* ve */ arasına yazılan tüm karakterler yorum metnini oluşturur. Bu metin, kod hakkında açıklamalar, notlar, uyarılar veya herhangi bir bilgi içerebilir. Geliştiricilerin kodu anlamasına ve sürdürmesine yardımcı olur.

  • */ (Yorum Sonu): Bu karakter dizisi, bir yorum bloğunun sona erdiğini gösterir. Tarayıcı, bu noktadan sonra gelen metni tekrar CSS kodu olarak işlemeye başlar.


Bu yapı sayesinde, CSS yorumları hem kısa, satır içi açıklamalar için hem de daha uzun, detaylı blok açıklamaları için esneklik sunar.


Pratik Kullanım Örnekleri


Aşağıdaki örnekler, CSS yorumlarının farklı senaryolarda nasıl kullanılabileceğini göstermektedir:


1. Basit Açıklama Ekleme


Belirli bir CSS kuralının amacını veya işlevini açıklamak için yorumlar kullanılabilir.

/* Ana başlık stili */
h1 {
  color: #333; /* Başlık rengi */
  font-size: 2em;
}

2. Çok Satırlı Blok Yorumları


Daha uzun açıklamalar veya bir kod bloğunun genel amacını belirtmek için çok satırlı yorumlar tercih edilebilir.

/*
  --------------------------------------------------
  Genel Sayfa Düzeni Stilleri
  Bu bölüm, sayfanın ana yapısı ve konteynerleri
  için temel stilleri içerir.
  --------------------------------------------------
*/
body {
  font-family: Arial, sans-serif;
  line-height: 1.6;
}

.container {
  max-width: 960px;
  margin: 0 auto;
  padding: 20px;
}

3. Geçici Olarak Kod Devre Dışı Bırakma


Hata ayıklama (debugging) sırasında veya belirli bir kuralı test etmek için, CSS kodunu yorum içine alarak geçici olarak devre dışı bırakabilirsiniz.

.button {
  background-color: blue;
  color: white;
  /* border: 1px solid black; */ /* Geçici olarak devre dışı bırakıldı */
  padding: 10px 15px;
}

4. CSS Bölümlerini Belirleme


Büyük stil sayfalarında, farklı bölümleri belirlemek ve gezinmeyi kolaylaştırmak için yorumlar kullanılabilir.

/* ===== NAVİGASYON BÖLÜMÜ ===== */
nav {
  /* ... */
}

/* ===== İÇERİK BÖLÜMÜ ===== */
.content {
  /* ... */
}

/* ===== ALT BİLGİ BÖLÜMÜ ===== */
footer {
  /* ... */
}

Önemli Notlar


  • Tarayıcı Tarafından Yok Sayılma: CSS yorumları, tarayıcı tarafından okunmaz ve son kullanıcının web sayfasında görünmez. Yalnızca geliştiriciler içindir.

  • Performans ve Üretim Ortamı: Üretim ortamına dağıtılacak CSS dosyaları genellikle "minify" (küçültme) işleminden geçirilir. Bu işlem sırasında, dosya boyutunu azaltmak ve yükleme süresini hızlandırmak amacıyla yorumlar genellikle kaldırılır.

  • İç İçe Yorumlama: CSS'te iç içe yorum yapmak mümkün değildir. Yani, bir yorum bloğu içinde başka bir yorum bloğu başlatılamaz. İlk karşılaşılan */ karakteri, yorumu sonlandırır.

  • Sass/SCSS Yorumları: Sass veya SCSS gibi CSS ön işlemcilerinde // ile başlayan tek satırlık yorumlar bulunsa da, bu yorumlar saf CSS'te geçerli değildir. // yorumları, derleme sırasında genellikle tamamen kaldırılırken, /* */ yorumları derlenmiş CSS çıktısında kalır (minify edilmediği sürece).

  • `*` Kullanımı: Yorum karakterleri içinde * kullanmak sorun teşkil etmez, ancak */ karakter dizisinin yorumu sonlandıracağını unutmamak gerekir. Bu nedenle, yorum metninizde */ gibi bir dizilim kullanmaktan kaçınmalısınız.

10
0
SQL Dilinde `SELECT DISTINCT` Kullanımı

Veritabanı yönetim sistemlerinde, sorgulama işlemleri sırasında sonuç kümesindeki yinelenen (duplicate) satırları ortadan kaldırmak, veri analizi ve raporlama için kritik bir gerekliliktir. SQL'de bu ihtiyacı karşılamak için kullanılan temel anahtar kelimelerden biri DISTINCT'tir. Bu rehber, SELECT DISTINCT ifadesinin sözdizimini, işleyişini ve pratik kullanım senaryolarını adım adım açıklamaktadır. Amacımız, veritabanınızdan yalnızca benzersiz değerleri nasıl alacağınızı teknik ve anlaşılır bir dille sunmaktır.


Sözdizimi


SELECT DISTINCT ifadesinin genel sözdizimi aşağıdaki gibidir:


SELECT DISTINCT sütun1, sütun2, ...
FROM tablo_adı;

Alternatif olarak, tüm sütunlar için tekil kombinasyonları almak isterseniz, * karakterini de kullanabilirsiniz. Ancak bu kullanım, genellikle spesifik sütunlar için tekillik arandığında daha az tercih edilir.


SELECT DISTINCT *
FROM tablo_adı;

Detaylı Açıklama


Sözdizimindeki her bir bileşen aşağıdaki anlamlara gelmektedir:


  • SELECT: Veritabanından veri almak için kullanılan temel SQL komutudur.

  • DISTINCT: SELECT komutundan sonra kullanılan bu anahtar kelime, sorgu sonucunda yinelenen satırların elenmesini sağlar. Yalnızca benzersiz satırlar sonuç kümesine dahil edilir.

  • sütun1, sütun2, ...: Benzersiz değerlerini almak istediğiniz bir veya daha fazla sütunun adlarıdır. Eğer birden fazla sütun belirtilirse, DISTINCT bu sütunların tümünün kombinasyonuna bakar. Yani, belirtilen tüm sütunlardaki değerlerin aynı olduğu satırlar yinelenen kabul edilir.

  • FROM tablo_adı: Verilerin çekileceği veritabanı tablosunun adını belirtir.


Özetle, DISTINCT anahtar kelimesi, SELECT ifadesi tarafından döndürülen satırlar arasında, belirtilen sütunların veya tüm sütunların kombinasyonunda tamamen aynı olanları eleyerek, her bir benzersiz kombinasyondan yalnızca bir satır döndürür.


Pratik Kullanım Örnekleri


Aşağıdaki örneklerde, bir Calisanlar tablosunu kullanarak SELECT DISTINCT ifadesinin farklı senaryolarda nasıl kullanıldığını inceleyeceğiz.


Calisanlar Tablosu Örneği:


CalisanID | Ad     | Soyad  | Departman          | Sehir
----------|--------|--------|--------------------|--------
1         | Ali    | Yılmaz | Muhasebe           | İstanbul
2         | Ayşe   | Demir  | İnsan Kaynakları   | Ankara
3         | Can    | Kara   | Muhasebe           | İstanbul
4         | Elif   | Can    | Pazarlama          | İzmir
5         | Burak  | Akın   | Pazarlama          | Ankara
6         | Zeynep | Tekin  | Muhasebe           | Ankara
7         | Deniz  | Güneş  | İnsan Kaynakları   | İstanbul
8         | Mert   | Yıldız | Pazarlama          | İzmir

Örnek 1: Tek Bir Sütundaki Tekil Değerler


Bu örnek, Calisanlar tablosundaki tüm benzersiz departman isimlerini listeler.


SELECT DISTINCT Departman
FROM Calisanlar;

Sonuç:


Departman
--------------------
Muhasebe
İnsan Kaynakları
Pazarlama

Örnek 2: Birden Fazla Sütundaki Tekil Değerler


Bu örnek, Calisanlar tablosundaki departman ve şehir kombinasyonlarının her birinin yalnızca bir kez görünmesini sağlar. Yani, hem departman hem de şehir aynı olduğunda bir satır yinelenen kabul edilir.


SELECT DISTINCT Departman, Sehir
FROM Calisanlar;

Sonuç:


Departman          | Sehir
-------------------|--------
Muhasebe           | İstanbul
İnsan Kaynakları   | Ankara
Pazarlama          | İzmir
Muhasebe           | Ankara
İnsan Kaynakları   | İstanbul
Pazarlama          | Ankara

Örnek 3: COUNT Fonksiyonu ile Birlikte Kullanım


DISTINCT, genellikle COUNT() gibi bir toplama fonksiyonu içinde kullanılarak tekil değerlerin sayısını bulmak için de kullanılır.


SELECT COUNT(DISTINCT Departman) AS ToplamTekilDepartman
FROM Calisanlar;

Sonuç:


ToplamTekilDepartman
--------------------
3

Önemli Notlar


  • Tüm Sütunlara Uygulama: DISTINCT anahtar kelimesi, SELECT ifadesinde belirtilen tüm sütunlara uygulanır. Örneğin, SELECT DISTINCT SütunA, SütunB yazdığınızda, sonuç kümesinde hem SütunA hem de SütunB değerlerinin aynı olduğu satırlar tekilleştirilir. Sadece SütunA'nın tekil olması yeterli değildir.

  • Performans Etkisi: Büyük veri kümelerinde DISTINCT kullanmak, veritabanının sonuçları sıralamasını ve karşılaştırmasını gerektirdiğinden sorgu performansını olumsuz etkileyebilir. Gereksiz kullanımdan kaçınılmalı veya indeksleme stratejileri ile desteklenmelidir.

  • NULL Değerler: DISTINCT, NULL değerleri birbirine eşdeğer olarak kabul eder. Yani, bir sütunda birden fazla NULL değeri varsa, sonuç kümesinde yalnızca bir NULL değeri döner.

  • ORDER BY ile Birlikte Kullanım: DISTINCT ile elde edilen sonuç kümesini sıralamak için ORDER BY ifadesi kullanılabilir. Ancak ORDER BY, DISTINCT işleminin kendisini etkilemez, yalnızca sonucun sunum sırasını belirler.

8
0
Python Dilinde Açıklama Satırları (Comments) Kullanımı
Python programlama dilinde, kodun okunabilirliğini artırmak ve işlevselliğini belgelemek amacıyla açıklama satırları (comments) kullanılır. Bu satırlar, programın çalışması sırasında Python yorumlayıcısı tarafından göz ardı edilir ve yalnızca geliştiricilere yönelik notlar, açıklamalar veya geçici olarak devre dışı bırakılan kod parçalarını içerir. Etkili yorum kullanımı, kodun anlaşılabilirliğini ve sürdürülebilirliğini önemli ölçüde artırır.

Sözdizimi


Python'da açıklama satırları iki ana şekilde tanımlanır: tek satırlık yorumlar ve çok satırlık yorumlar olarak da bilinen docstring'ler.
# Bu tek satırlık bir yorumdur.
print("Merhaba, Dünya!")  # Bu da satır sonu yorumudur.

"""
Bu bir docstring'dir.
Genellikle fonksiyon, sınıf veya modül tanımlarında
açıklama yapmak için kullanılır.
"""
def topla(a, b):
    """
    İki sayıyı toplayan bir fonksiyon.
    Argümanlar:
        a (int): İlk sayı.
        b (int): İkinci sayı.
    Dönüş:
        int: İki sayının toplamı.
    """
    return a + b

Detaylı Açıklama


Python'da açıklama satırları, kodun amacını ve işleyişini açıklamak için kritik öneme sahiptir.

Tek Satırlık Yorumlar: Tek satırlık yorumlar, # karakteri ile başlar ve o satırın sonuna kadar devam eder. # karakterinden sonra yazılan her şey Python yorumlayıcısı tarafından yürütülmez. Bu tür yorumlar, belirli bir kod satırının ne yaptığını açıklamak, bir değişkenin amacını belirtmek veya geçici olarak bir kod parçasını devre dışı bırakmak için idealdir.


Çok Satırlık Yorumlar (Docstring'ler): Python'da resmi olarak çok satırlık bir yorum sözdizimi bulunmamaktadır. Ancak, üçlü tırnak işaretleri (tek veya çift tırnak olabilir) arasına alınan metinler, bir değişkene atanmadığı sürece Python yorumlayıcısı tarafından göz ardı edilir. Bu yapıya genellikle docstring adı verilir ve fonksiyonların, sınıfların, modüllerin veya metotların hemen altına yerleştirilerek onların işlevselliğini belgelemek için kullanılır. Docstring'ler, kodun otomatik belgelendirme araçları tarafından okunabilir olması nedeniyle tek satırlık yorumlardan farklı bir amaca hizmet eder.


Pratik Kullanım Örnekleri


Aşağıdaki örnekler, açıklama satırlarının çeşitli kullanım senaryolarını göstermektedir.

**Örnek 1: Temel Tek Satırlık Yorum Kullanımı** Bu örnek, bir kod satırının amacını açıklamak için tek satırlık bir yorumun nasıl kullanıldığını gösterir.

# Kullanıcının adını saklayacak bir değişken tanımla
kullanici_adi = "softmush"
print(f"Hoş geldin, {kullanici_adi}!") # Kullanıcıya özel karşılama mesajı göster

**Örnek 2: Geçici Kod Devre Dışı Bırakma** Bir kod parçasını test amacıyla veya gelecekteki kullanım için geçici olarak devre dışı bırakmak için yorum satırları kullanılabilir.

def hesaplama_yap(x, y):
    sonuc = x * y
    # print(f"Ara sonuç: {sonuc}") # Bu satır şu anda devre dışı
    return sonuc + 10

print(hesaplama_yap(5, 3))

**Örnek 3: Docstring Kullanımı (Fonksiyon Belgelendirme)** Fonksiyonların ne iş yaptığını, aldığı argümanları ve döndürdüğü değeri açıklamak için docstring'ler yaygın olarak kullanılır.

def daire_alani_hesapla(yaricap):
    """
    Verilen yarıçap ile bir dairenin alanını hesaplar.

    Argümanlar:
        yaricap (float veya int): Dairenin yarıçapı.

    Dönüş:
        float: Hesaplanan daire alanı.
    """
    PI = 3.14159
    return PI * yaricap * yaricap

print(daire_alani_hesapla(5))

Önemli Notlar


8
0
PHP Dilinde Değişkenler Kullanımı: Kapsamlı Kılavuz

Her programlama dilinin temel yapı taşlarından biri olan değişkenler, verileri depolamak ve yönetmek için kullanılır. PHP'de değişkenler, metin, sayılar, diziler veya nesneler gibi farklı türdeki bilgileri bellekte geçici olarak tutmanıza olanak tanır. Bu kılavuz, PHP dilinde değişkenlerin nasıl tanımlandığını, kullanıldığını ve bunlarla ilgili önemli kavramları adım adım açıklayacaktır.


Sözdizimi


PHP'de bir değişken tanımlamak için $ (dolar) işareti kullanılır, ardından değişkenin adı gelir. Değişkene bir değer atamak için atama operatörü (=) kullanılır.

Genel sözdizimi aşağıdaki gibidir:

$degiskenAdi = deger;

Detaylı Açıklama


Yukarıdaki sözdizimindeki her bir bileşen, değişkenin doğru şekilde tanımlanması için kritik öneme sahiptir:


  • $: PHP'de bir ifadenin değişken olduğunu belirtmek için kullanılan zorunlu bir önektir. Her değişken adı bu karakterle başlamalıdır.

  • degiskenAdi: Değişkenin benzersiz adıdır. PHP'de değişken adları harfle veya alt çizgi (_) ile başlamalıdır. Rakamlarla başlayamaz. Harf, rakam ve alt çizgi içerebilir. Değişken adları büyük/küçük harf duyarlıdır (örneğin, $ad ve $Ad farklı değişkenlerdir).

  • =: Atama operatörüdür. Sağındaki değeri solundaki değişkene atar.

  • deger: Değişkene atanacak olan veri. Bu bir metin (string), sayı (integer, float), doğru/yanlış değeri (boolean), dizi (array), nesne (object), veya özel bir değer (NULL) olabilir.

  • ;: Her PHP ifadesinin sonuna konulması gereken bir ifade sonlandırma karakteridir.

Pratik Kullanım Örnekleri


Aşağıdaki örnekler, farklı veri türlerindeki değişkenlerin nasıl tanımlandığını ve kullanıldığını göstermektedir:


Örnek 1: Metin (String) Değişkeni

Örnek 2: Sayı (Integer ve Float) Değişkenleri

";
echo "Fiyat: " . $fiyat . "
"; echo "Toplam Değer: " . $toplam . "
"; ?>

Örnek 3: Boolean (Mantıksal) Değişkeni

";
} else {
    echo "Kullanıcı pasif.
"; } ?>

Örnek 4: Dizi (Array) Değişkeni

"; // Dizinin ilk elemanına erişim
?>

Önemli Notlar


  • Değişken Adlandırma Kuralları: Değişken adları her zaman bir harf veya alt çizgi ile başlamalıdır. Rakamlarla başlayamaz. Boşluk veya özel karakterler ($, -, +, # vb.) içeremez.

  • Büyük/Küçük Harf Duyarlılığı: PHP'de değişken adları büyük/küçük harf duyarlıdır. $isim ile $Isim iki farklı değişkendir.

  • Veri Türleri: PHP, dinamik olarak tipleştirilmiş bir dildir, yani bir değişkenin veri türünü belirtmeniz gerekmez. PHP, atanana değere göre veri türünü otomatik olarak belirler. Bu, aynı değişkenin farklı zamanlarda farklı türde değerler barındırabileceği anlamına gelir.

  • Değişken Kapsamı (Scope): Değişkenlerin nerede tanımlandığına bağlı olarak farklı kapsamlara sahip olabilirler (yerel, küresel, statik). Bu, değişkenlerin programın hangi bölümlerinden erişilebilir olduğunu belirler.

  • Referans ile Atama: Normalde değişkenler değer kopyası ile atanır. Ancak, bir değişkeni referans ile atamak isterseniz, & operatörünü kullanmanız gerekir ($yeniDegisken = &$orjinalDegisken;). Bu durumda, iki değişken aynı bellek konumunu işaret eder.

11
0
CSS Dilinde Hata Tespiti ve Giderme

Web tasarımının temelini oluşturan CSS (Basamaklı Stil Sayfaları), bir belgenin görsel sunumunu tanımlamak için güçlü bir araçtır. Ancak, her programlama dilinde olduğu gibi, CSS kodunda da hatalar meydana gelebilir. Bu hatalar, web sayfalarının beklenen şekilde görünmemesine, düzensiz render edilmesine veya tamamen stil kaybına neden olabilir. Bu makale, CSS dilinde karşılaşılabilecek yaygın hata türlerini, bu hataların nasıl tespit edileceğini ve düzeltileceğini teknik bir yaklaşımla ele alarak, sağlam ve bakımı kolay stil sayfaları oluşturmanıza yardımcı olmayı amaçlamaktadır.


Temel Sözdizimi


CSS kodunun temel yapı taşı, bir seçici ve bir bildirim bloğundan oluşan kural kümesidir. Bir seçici, HTML belgesindeki hangi öğelerin stilize edileceğini belirtirken, bildirim bloğu süslü parantezler { } içine alınmış bir veya daha fazla bildirim içerir. Her bildirim, bir özellik ve bir değerden oluşur ve iki nokta üst üste : ile ayrılır. Her bildirim noktalı virgül ; ile sonlandırılmalıdır.


Örnek bir doğru CSS kural kümesi aşağıdaki gibidir:


seçici {
    özellik: değer;
    özellik-iki: değer-iki;
}

Bu yapıdan sapmalar, CSS hatalarına yol açar. Hataların çoğu, bu temel sözdizimi kurallarına uymamaktan kaynaklanır.

Detaylı Açıklama


CSS hataları genellikle üç ana kategoriye ayrılır:


  • Sözdizimi Hataları (Syntax Errors): Bunlar, CSS kurallarının yazımında yapılan temel hatalardır. Eksik noktalı virgüller, kapanış süslü parantezlerin olmaması, yanlış yazılmış özellik adları, geçersiz değerler veya iki nokta üst üste işaretinin eksikliği gibi durumları içerir. Tarayıcılar, sözdizimi hatalarını genellikle tamamen göz ardı eder veya hatanın olduğu kuralı ve bazen sonraki kuralları işlemez.

  • Mantıksal Hatalar (Logical Errors): Kodun sözdizimsel olarak doğru olmasına rağmen, beklenen görsel çıktıyı vermemesi durumudur. Bu tür hatalar genellikle seçici özgüllüğü (specificity), kaskat (cascade) sırası, kalıtım (inheritance) veya yanlış seçici kullanımı gibi CSS'in temel mekanizmalarının yanlış anlaşılmasından kaynaklanır. Örneğin, daha az özgül bir kuralın, daha özgül bir kuralı yanlışlıkla geçersiz kılması bir mantıksal hatadır.

  • Tarayıcı Uyumluluk Hataları (Browser Compatibility Errors): Belirli CSS özellikleri veya değerlerinin farklı tarayıcılarda veya tarayıcı sürümlerinde farklı şekilde yorumlanması veya hiç desteklenmemesi durumudur. Bu hatalar genellikle deneysel özellikler, eski tarayıcılar için gerekli olan tedarikçi öneklerinin (vendor prefixes) eksikliği veya standartlaşmamış CSS kullanımlarından kaynaklanır.


Pratik Kullanım Örnekleri


Aşağıdaki örnekler, yaygın CSS hata türlerini ve bunların nasıl düzeltileceğini göstermektedir:


Örnek 1: Sözdizimi Hatası (Eksik Noktalı Virgül)


Bu örnekte, color özelliğinin sonunda noktalı virgül unutulmuştur. Bu durum, font-size özelliğinin de doğru şekilde uygulanmamasına neden olabilir.


/* Hatalı Kod */
.hatali-div {
    color: red /* Noktalı virgül eksik */
    font-size: 16px;
}

/* Doğru Kod */
.dogru-div {
    color: red;
    font-size: 16px;
}

Örnek 2: Mantıksal Hata (Özgüllük Sorunu)


Burada, p etiketi için iki farklı renk tanımlanmıştır. Beklentiniz p elementinin kırmızı olması olsa da, #ana-div p seçicisi daha yüksek bir özgüllüğe sahip olduğu için paragraf mavi renkte görünecektir.


/* Hatalı Mantık - Özgüllük */
#ana-div p {
    color: blue; /* ID seçici daha yüksek özgüllüğe sahiptir */
}
p {
    color: red; /* Bu kural geçersiz kılınır */
}

/* HTML yapısı */

Bu paragraf mavi renkte görünecektir.

Örnek 3: Sözdizimi Hatası (Geçersiz Değer Birimi)


width özelliği için geçersiz bir birim (pix yerine px) kullanılmıştır. Tarayıcı bu kuralı tamamen göz ardı edecektir.


/* Hatalı Kod */
.gecersiz-deger {
    width: 100pix; /* 'pix' geçersiz bir birimdir */
}

/* Doğru Kod */
.gecerli-deger {
    width: 100px; /* Doğru birim 'px' */
}

Örnek 4: Tarayıcı Uyumluluk Hatası (Tedarikçi Öneki Eksikliği)


flexbox gibi modern CSS özelliklerini eski tarayıcılarda desteklemek için tedarikçi önekleri kullanmak gerekebilir. Öneklerin eksikliği, bazı tarayıcılarda stilin uygulanmamasına neden olur.


/* Potansiyel Hata - Eski tarayıcılar için önekler eksik */
.flex-kapsayici {
    display: flex; /* Sadece modern tarayıcılarda çalışır */
}

/* Doğru Kod - Çapraz tarayıcı uyumluluğu için önekler */
.flex-kapsayici {
    display: -webkit-box;    /* Eski Safari ve Chrome */
    display: -ms-flexbox;    /* Internet Explorer 10 */
    display: flex;           /* Standart ve modern tarayıcılar */
}

Önemli Notlar


  • Geliştirici Araçları Kullanımı: Modern web tarayıcılarında (Chrome DevTools, Firefox Developer Tools vb.) bulunan geliştirici araçları, CSS hatalarını tespit etmede en güçlü yardımcıdır. Eleman denetçisi (Elements panel) aracılığıyla bir öğeye uygulanan CSS kurallarını inceleyebilir, geçersiz kılınan veya uygulanmayan stilleri görebilirsiniz. Konsol (Console) panelinde bazı sözdizimi hataları raporlanabilir.

  • CSS Doğrulayıcıları: W3C CSS Validator gibi çevrimiçi araçlar, CSS kodunuzdaki sözdizimi hatalarını otomatik olarak kontrol eder ve raporlar. Bu, özellikle büyük projelerde veya birden fazla geliştiricinin çalıştığı durumlarda faydalıdır.

  • Cascade ve Özgüllük Anlayışı: CSS'in kaskat mekanizması ve özgüllük kuralları, mantıksal hataları önlemek için kritik öneme sahiptir. Hangi stilin ne zaman uygulanacağını anlamak, istenmeyen geçersiz kılmaları engeller. Genellikle daha az özgül seçicilerle başlayıp, gerektiğinde özgüllüğü artırmak iyi bir pratiktir.

  • Çapraz Tarayıcı Testi: Uygulamanızı farklı tarayıcılarda ve cihazlarda test etmek, tarayıcı uyumluluk hatalarını erken aşamada tespit etmenize yardımcı olur. BrowserStack veya LambdaTest gibi araçlar bu süreci kolaylaştırabilir.

  • Pre-processor Kullanımı: Sass, Less veya Stylus gibi CSS ön işlemcileri, değişkenler, iç içe kurallar ve mixin'ler gibi özellikler sunarak daha düzenli ve hataya daha az açık CSS kodu yazmanıza olanak tanır. Ayrıca, derleme sırasında bazı sözdizimi hatalarını yakalayabilirler.

15
0
Komplo Teorilerinin Büyülü Çekim Gücü: Neden Onlara İnanmayı Seviyoruz?

Karanlıkta fısıldanan sırlar, gölgelerin arkasına saklanmış güçlü figürler ve dünyayı sarsan olayların perde arkasındaki gizli planlar… Komplo teorileri, insanlık tarihi boyunca hep var oldu ve modern çağda, özellikle dijital dünyanın sunduğu sonsuz bağlantılarla birlikte, çok daha güçlü bir şekilde hayatımızın merkezine oturdu. Peki, neden bu kadar çok insan bu tür anlatılara inanmaya meyilli? Neden bilimsel gerçekler ve resmi açıklamalar yerine, çoğu zaman kanıtlardan yoksun, fantastik senaryolar bize daha çekici geliyor?


Bir SEO yazarı ve gazeteci olarak, bu konuda yapılan araştırmaları ve insan psikolojisinin derinliklerini incelediğimde, komplo teorilerine olan düşkünlüğümüzün tek bir nedene bağlı olmadığını, aksine çok katmanlı psikolojik, sosyolojik ve bilişsel ihtiyaçlardan beslendiğini görüyorum. Gelin, bu karmaşık çekim gücünü adım adım irdeleyelim.


Belirsizliği Giderme İsteği: Kaosun Anlamı


Dünya karmaşık ve çoğu zaman öngörülemez bir yerdir. Büyük felaketler, ekonomik krizler, küresel salgınlar veya siyasi çalkantılar gibi olaylar karşısında kendimizi çaresiz ve belirsizlik içinde hissedebiliriz. İşte bu noktada komplo teorileri devreye girer. Karmaşık ve açıklanması güç olaylara basit, tutarlı ve çoğu zaman dramatik bir açıklama sunarlar.


Korkunç bir olayın sadece "kötü şans" veya "doğal bir felaket" olması, insan zihni için kabul edilmesi zor olabilir. Birilerinin bu olayın arkasında olduğuna inanmak, kaotik bir dünyaya düzen getirme, en azından bir anlamlandırma çabasıdır. Her ne kadar bu açıklama korkutucu olsa da, belirsizliğin kendisinden daha az rahatsız edici olabilir. Çünkü bir düşman varsa, ona karşı bir şeyler yapılabilir; ama anlamsız bir kaos karşısında sadece beklemek zorunda kalırız.


Kontrol Duygusu Arayışı: Bilmek ve Özel Olmak


Hayatımızdaki kontrol eksikliği, komplo teorilerine olan ilgimizi artıran önemli bir faktördür. Büyük kurumlar, hükümetler veya küresel güçler karşısında kendimizi küçük ve etkisiz hissedebiliriz. Komplo teorileri ise bize, gizli bir bilginin taşıyıcısı olma ve "gerçeği" diğerlerinden önce görme fırsatı sunar.


Bu, bireye bir tür güç ve kontrol duygusu verir. Sanki "perdenin arkasına" bakabilmiş, "uyuyan" kitlelerden farklı bir aydınlanma yaşamışız gibi hissederiz. Bu özel bilgiye sahip olmak, hem kendimizi daha akıllı ve dikkatli hissetmemizi sağlar hem de bize bir üstünlük hissi verir. Dünyanın nasıl işlediğine dair yeni bir çerçeve sunarak, pasif bir gözlemci olmaktan çıkıp, olayın içindeki bir aktör gibi hissetmemizi sağlar.


Topluluk ve Aidiyet İhtiyacı: Ortak Bir Düşman


İnsan sosyal bir varlıktır ve aidiyet duygusu temel ihtiyaçlarımızdan biridir. Komplo teorileri, bireyleri ortak bir inanç ve düşman etrafında birleştirerek güçlü topluluklar oluşturabilir. Bu gruplar içinde, dışarıdan gelen eleştirilere karşı bir "biz" ve "onlar" ayrımı oluşur.


  • Ortak Kimlik: Komplo teorilerine inanan kişiler, genellikle kendilerini ana akım medyadan veya resmi açıklamalardan şüphe duyan, gerçeği arayan bir grup olarak tanımlarlar. Bu ortak kimlik, birbirlerine bağlanmalarını kolaylaştırır.

  • Sosyal Destek: Bu gruplar içinde, inançlar pekiştirilir ve desteklenir. Dışarıdan gelen eleştiriler, grubun üyeleri tarafından "gerçeği bilmeyenlerin" veya "komplonun bir parçası olanların" sözleri olarak algılanır, bu da grubun iç bağlarını daha da güçlendirir.

  • Anlam ve Amaç: Bir komployu ortaya çıkarma veya ona karşı savaşma misyonu, bireylere bir amaç ve anlam duygusu verebilir. Bu, özellikle hayatında boşluk hisseden kişiler için cazip olabilir.


Otoriteye Güvensizlik: Tarihsel Deneyimler ve Medya Etkisi


Devletler, büyük şirketler veya medya kuruluşları zaman zaman yanlış bilgi yaymış, gerçekleri çarpıtmış veya halkı yanıltmıştır. Watergate skandalı, MKUltra projesi gibi gerçek komplo örnekleri, insanların otoriteye olan güvenini sarsmıştır. Bu tür olaylar, haklı bir şüphecilik tohumu ekerek, gelecekteki komplo teorilerine zemin hazırlar.


Günümüzde, ana akım medyaya olan güvenin azalması da komplo teorilerinin yükselişinde önemli bir rol oynamaktadır. İnsanlar, haber kaynaklarının taraflı olduğunu veya belirli bir gündemi olduğunu düşündüğünde, alternatif açıklamalara yönelme eğilimi gösterirler. Bu durum, özellikle sosyal medyada, her türlü bilginin hızla yayıldığı bir ortamda daha da belirginleşir.


Bilişsel Yanılgılar ve İnsan Zihni: Kendi Tuzaklarımız


İnsan zihni kusursuz değildir; belirli bilişsel yanılgılara (cognitive biases) eğilimlidir. Bu yanılgılar, komplo teorilerine inanma eğilimimizi güçlendirebilir:


  • Onay Yanılgısı (Confirmation Bias): Zihnimiz, mevcut inançlarımızı destekleyen bilgileri aramaya ve yorumlamaya meyillidir. Bir komplo teorisine inanmaya başladığımızda, onu destekleyen her türlü kanıtı (ne kadar zayıf olursa olsun) daha kolay kabul ederiz ve çürüten kanıtları göz ardı ederiz.

  • Ajan Tespiti (Agent Detection): İnsanlar olarak, olayların arkasında bir fail veya amaç arama eğilimindeyizdir. Rastgele olaylarda bile bir düzen veya kasıt aramak, evrimsel bir adaptasyonun yan etkisi olabilir. Bir felaketin arkasında "kötü adamlar" olması, anlamsız bir rastgelelikten daha anlaşılır gelir.

  • Orantısallık Yanılgısı (Proportionality Bias): Büyük olayların büyük ve önemli nedenleri olması gerektiğine inanırız. Örneğin, bir devlet başkanının ölümü gibi büyük bir olayın basit bir kazadan ziyade, büyük bir komplo sonucu gerçekleştiğine inanmak daha "mantıklı" gelebilir.

  • Yanlış Korelasyon (Illusory Correlation): İki olay arasında aslında hiçbir bağlantı olmamasına rağmen, bir ilişki olduğunu varsayma eğilimimiz vardır. Bu, komplo teorisyenlerinin farklı olayları birleştirerek "büyük resmi" görmelerine neden olabilir.


Dijital Çağın Etkisi: Yankı Odaları ve Algoritmalar


İnternet ve sosyal medya, komplo teorilerinin yayılma hızını ve etkinliğini inanılmaz derecede artırdı. Artık dünyanın dört bir yanındaki benzer inançlara sahip insanlarla anında bağlantı kurmak mümkün. Bu durum, "yankı odaları" ve "filtre baloncukları" oluşumuna yol açar.


Sosyal medya algoritmaları, kullanıcıların ilgisini çeken içeriği daha fazla gösterme eğilimindedir. Eğer bir kişi komplo teorileriyle ilgili içeriklere tıklıyorsa, algoritma ona daha fazlasını sunar. Bu döngü, bireyin yalnızca kendi inançlarını doğrulayan bilgilerle karşılaşmasına neden olurken, farklı görüşlere veya bilimsel kanıtlara maruz kalmasını engeller. Yanlış bilginin doğrulanmamış bir şekilde hızla yayılması, artık bir e-posta zinciriyle değil, küresel bir ağ üzerinden saniyeler içinde gerçekleşiyor.


Özetle, komplo teorilerine olan çekim gücümüz, insan doğasının derinliklerine kök salmış çok sayıda ihtiyacın bir yansımasıdır. Belirsizlikten kaçma, kontrol hissi arayışı, özel bilgiye sahip olma arzusu, bir topluluğa ait olma ihtiyacı ve otoriteye duyulan güvensizlik gibi faktörler, bilişsel yanılgılarımız ve dijital çağın sunduğu imkanlarla birleştiğinde, komplo teorilerinin neden bu kadar cazip ve yaygın olduğunu açıklıyor. Bu durum, eleştirel düşünme ve bilgi okuryazarlığının önemini her zamankinden daha fazla ortaya koymaktadır.


15
0
JavaScript Dilinde JS Loops Kullanımı

JavaScript'te döngüler (loops), belirli bir kod bloğunu tekrarlayan görevleri otomatikleştirmek için kullanılan temel programlama yapılarıdır. Bu yapılar, diziler, nesneler veya diğer yinelenebilir veri türleri üzerinde işlem yaparken veya belirli bir koşul karşılanana kadar bir işlemi tekrarlarken büyük önem taşır. JavaScript, programcılara farklı senaryolara uygun çeşitli döngü türleri sunar.


Sözdizimi


JavaScript'teki ana döngü türleri ve bunların genel sözdizimleri aşağıda belirtilmiştir:


1. for Döngüsü


for (başlangıç; koşul; artırma/azaltma) {
    // Çalıştırılacak kod bloğu
}

2. while Döngüsü


while (koşul) {
    // Çalıştırılacak kod bloğu
}

3. do...while Döngüsü


do {
    // Çalıştırılacak kod bloğu
} while (koşul);

4. for...in Döngüsü


for (değişken in nesne) {
    // Nesnenin numaralandırılabilir özelliklerine erişim
}

5. for...of Döngüsü


for (değişken of yinelenebilir) {
    // Yinelenebilir nesnenin değerlerine erişim
}

Detaylı Açıklama


  • for Döngüsü: Belirli sayıda tekrar edilmesi gereken durumlar için idealdir. Üç ana bileşeni vardır:


    • Başlangıç (Initialization): Döngü başlamadan önce bir kez yürütülen ifadedir. Genellikle bir sayıcı değişkeni burada tanımlanır ve başlatılır.

    • Koşul (Condition): Her döngü tekrarından önce değerlendirilen ifadedir. Koşul true olduğu sürece döngü devam eder. false olduğunda döngü sonlanır.

    • Artırma/Azaltma (Increment/Decrement): Her döngü tekrarından sonra yürütülen ifadedir. Genellikle sayıcı değişkenini günceller.


  • while Döngüsü: Belirli bir koşul true olduğu sürece kod bloğunu yürütür. Koşul, döngü başlamadan önce ve her tekrarın başında kontrol edilir. Koşulun döngü içinde bir noktada false olmaması durumunda sonsuz döngüye yol açabilir.


  • do...while Döngüsü: while döngüsüne benzer, ancak kod bloğunu koşul kontrol edilmeden önce en az bir kez yürütmeyi garanti eder. Koşul, kod bloğu yürütüldükten sonra kontrol edilir.


  • for...in Döngüsü: Bir nesnenin numaralandırılabilir özellik adları (anahtarları) üzerinde döngü yapmak için kullanılır. Genellikle nesnelerin özelliklerini iterasyonla elde etmek için tercih edilir. Ancak, dizi elemanlarını yinelemek için kullanıldığında beklenmedik sonuçlar verebilir çünkü dizi anahtarlarını (indekslerini) string olarak döndürür ve prototip zincirindeki özellikleri de dahil edebilir.


  • for...of Döngüsü: Yinelenebilir nesneler (diziler, stringler, Map'ler, Set'ler vb.) üzerinde döngü yapmak için kullanılır. Her yinelemede, yinelenebilir nesnenin bir sonraki değerini doğrudan döndürür. Bu, for...in döngüsünün aksine, dizilerin elemanlarına doğrudan erişmek için daha güvenli ve daha yaygın bir yöntemdir.


Pratik Kullanım Örnekleri


1. for Döngüsü ile Sayı Sayma ve Dizi Elemanlarına Erişim


Bu örnek, 0'dan 4'e kadar sayıları konsola yazdırır ve bir dizinin elemanlarını iterasyonla gösterir.

// 0'dan 4'e kadar sayıları yazdırma
for (let i = 0; i < 5; i++) {
    console.log("Sayı: " + i);
}

// Bir dizinin elemanlarını yazdırma
const meyveler = ["Elma", "Armut", "Kiraz"];
for (let i = 0; i < meyveler.length; i++) {
    console.log("Meyve: " + meyveler[i]);
}

2. while Döngüsü ile Koşullu Tekrar


Bu örnek, bir sayacın değeri 3'ten küçük olduğu sürece konsola mesaj yazdırır.

let sayac = 0;
while (sayac < 3) {
    console.log("While döngüsü çalışıyor, sayaç: " + sayac);
    sayac++;
}

3. do...while Döngüsü ile En Az Bir Kez Çalışma Garantisi


Bu örnek, koşul başlangıçta false olsa bile kod bloğunu en az bir kez yürütür.

let x = 5;
do {
    console.log("Do...while döngüsü çalıştı, x: " + x);
    x++;
} while (x < 5); // Koşul false, ancak döngü bir kez çalıştı.

4. for...in Döngüsü ile Nesne Özelliklerini Yineleme


Bu örnek, bir nesnenin anahtarları ve değerleri üzerinde döngü yapar.

const kisi = { ad: "Ahmet", soyad: "Yılmaz", yas: 30 };
for (let anahtar in kisi) {
    console.log(anahtar + ": " + kisi[anahtar]);
}

5. for...of Döngüsü ile Dizi ve String Değerlerini Yineleme


Bu örnek, bir dizinin elemanlarını ve bir stringin karakterlerini doğrudan değerleriyle birlikte iterasyonla gösterir.

// Dizi elemanları üzerinde döngü
const renkler = ["Kırmızı", "Mavi", "Yeşil"];
for (let renk of renkler) {
    console.log("Renk: " + renk);
}

// String karakterleri üzerinde döngü
const metin = "Merhaba";
for (let karakter of metin) {
    console.log("Karakter: " + karakter);
}

6. break ve continue Kullanımı


break anahtar kelimesi döngüyü tamamen sonlandırırken, continue anahtar kelimesi mevcut yinelemeyi atlar ve döngünün bir sonraki yinelemesine geçer.

for (let i = 0; i < 10; i++) {
    if (i === 3) {
        continue; // 3'ü atla
    }
    if (i === 7) {
        break; // 7'ye gelince döngüyü durdur
    }
    console.log("Sayı (break/continue): " + i);
}
// Çıktı: 0, 1, 2, 4, 5, 6

Önemli Notlar


  • Sonsuz Döngüler: while veya for döngülerinde koşulun hiçbir zaman false olmaması durumunda sonsuz döngüler oluşabilir. Bu durum, uygulamanın donmasına veya kilitlenmesine neden olabilir. Döngü koşullarını dikkatlice tanımlamak esastır.


  • Doğru Döngü Türünü Seçme: Görevinizin doğasına göre en uygun döngü türünü seçmek önemlidir:


    • Belirli sayıda tekrar için for döngüsü.

    • Bir koşul true olduğu sürece devam etmek için while döngüsü.

    • En az bir kez çalışması gereken durumlar için do...while döngüsü.

    • Nesne özelliklerini yinelemek için for...in döngüsü.

    • Yinelenebilir nesnelerin (diziler, stringler vb.) değerleri üzerinde döngü yapmak için for...of döngüsü.


  • for...in vs. for...of: for...in nesne anahtarlarını/indekslerini döndürürken, for...of doğrudan değerleri döndürür. Dizilerle çalışırken genellikle for...of tercih edilir.


  • break ve continue Anahtar Kelimeleri: Bu anahtar kelimeler, döngünün akışını kontrol etmek için kullanılır. break döngüyü tamamen sonlandırır, continue ise mevcut iterasyonu atlayıp bir sonraki iterasyona geçer.


  • let ve const ile Değişken Tanımlama: Döngü içerisinde tanımlanan değişkenler için let veya const kullanmak, değişkenlerin kapsamını (scope) doğru bir şekilde yönetmenizi sağlar ve potansiyel hataları önler.


9
0
SQL Dilinde WHERE Kullanımı: Detaylı Rehber

SQL'de WHERE yan tümcesi, bir veri kümesinden belirli kriterlere uyan kayıtları seçmek, güncellemek veya silmek için kullanılan temel bir bileşendir. Bu yan tümce, sorgularınıza güçlü bir filtreleme yeteneği kazandırarak, büyük veri tabanlarından yalnızca ihtiyacınız olan bilgileri verimli bir şekilde almanızı sağlar. Doğru kullanımı, veritabanı yönetiminde performansı ve doğruluğu doğrudan etkiler.

Sözdizimi


WHERE yan tümcesinin SELECT deyimiyle genel kullanım yapısı aşağıdaki gibidir:

SELECT kolon1, kolon2, ...
FROM tablo_adı
WHERE koşul;

Detaylı Açıklama


  • SELECT kolon1, kolon2, ...: Bu kısım, sonuç kümesinde görüntülenmesini istediğiniz sütunları belirtir. Tüm sütunları seçmek için * karakteri kullanılabilir.

  • FROM tablo_adı: Verilerin çekileceği tablonun adını belirtir.

  • WHERE koşul: Bu, WHERE yan tümcesinin çekirdeğidir. Belirtilen koşul doğru (TRUE) olan her satır sonuç kümesine dahil edilir. koşul bir veya daha fazla karşılaştırma operatörü (=, <>, >, <, >=, <=), mantıksal operatörler (AND, OR, NOT) ve diğer SQL fonksiyonlarını içerebilir.

Pratik Kullanım Örnekleri


Aşağıda, WHERE yan tümcesinin farklı senaryolarda nasıl kullanıldığını gösteren pratik örnekler bulunmaktadır.

1. Eşitlik Kontrolü (=): Belirli bir değere eşit olan kayıtları seçmek için kullanılır.

SELECT UrunAdi, Fiyat
FROM Urunler
WHERE Kategori = 'Elektronik';

Açıklama: Bu sorgu, Urunler tablosundan Kategori sütunu 'Elektronik' olan tüm ürünlerin adını ve fiyatını getirir.

2. Büyüktür/Küçüktür (>, <): Sayısal veya tarihsel değerleri karşılaştırmak için kullanılır.

SELECT SiparisID, ToplamTutar
FROM Siparisler
WHERE ToplamTutar > 100;

Açıklama: Bu sorgu, Siparisler tablosundan ToplamTutar sütunu 100'den büyük olan tüm siparişleri getirir.

3. AND Operatörü: Birden fazla koşulun aynı anda doğru olmasını gerektirir.

SELECT MusteriAdi, Sehir, Yas
FROM Musteriler
WHERE Sehir = 'Ankara' AND Yas > 30;

Açıklama: Bu sorgu, Musteriler tablosundan Sehir sütunu 'Ankara' olan VE Yas sütunu 30'dan büyük olan müşterileri getirir.

4. OR Operatörü: Belirtilen koşullardan en az birinin doğru olmasını gerektirir.

SELECT CalisanAdi, Departman
FROM Calisanlar
WHERE Departman = 'IT' OR Departman = 'IK';

Açıklama: Bu sorgu, Calisanlar tablosundan Departman sütunu 'IT' VEYA 'IK' olan çalışanları getirir.

5. LIKE Operatörü: Belirli bir desene uyan string değerlerini aramak için kullanılır. % joker karakteri herhangi bir sayıda karakteri, _ joker karakteri ise tek bir karakteri temsil eder.

SELECT UrunAdi
FROM Urunler
WHERE UrunAdi LIKE 'Bilgisayar%';

Açıklama: Bu sorgu, Urunler tablosundan UrunAdi sütunu 'Bilgisayar' ile başlayan tüm ürünleri getirir.

6. IN Operatörü: Bir sütunun belirtilen değerler listesi içinde olup olmadığını kontrol eder.

SELECT MusteriAdi, Sehir
FROM Musteriler
WHERE Sehir IN ('İstanbul', 'İzmir', 'Bursa');

Açıklama: Bu sorgu, Musteriler tablosundan Sehir sütunu 'İstanbul', 'İzmir' veya 'Bursa' olan müşterileri getirir.

7. BETWEEN Operatörü: Bir değerin belirli bir aralıkta (dahil) olup olmadığını kontrol eder.

SELECT UrunAdi, Fiyat
FROM Urunler
WHERE Fiyat BETWEEN 50 AND 150;

Açıklama: Bu sorgu, Urunler tablosundan Fiyat sütunu 50 ile 150 arasında olan (50 ve 150 dahil) tüm ürünleri getirir.

8. IS NULL / IS NOT NULL: Bir sütunun NULL değer içerip içermediğini kontrol eder.

SELECT CalisanAdi
FROM Calisanlar
WHERE Telefon IS NULL;

Açıklama: Bu sorgu, Calisanlar tablosundan Telefon numarası boş (NULL) olan çalışanları getirir.

Önemli Notlar


  • Veritabanı sistemine bağlı olarak, string karşılaştırmaları büyük/küçük harf duyarlı olabilir. Hassas aramalarda LOWER() veya UPPER() fonksiyonlarını kullanmayı düşünebilirsiniz.

  • WHERE yan tümcesinde kullanılan sütunlara indeks eklemek, sorgu performansını önemli ölçüde artırabilir. Özellikle büyük tablolar üzerinde sıkça filtrelenen sütunlar için indeksleme kritik öneme sahiptir.

  • NULL değerler özel bir durumdur ve eşitlik operatörü (=) ile karşılaştırılamaz. Bunun yerine IS NULL veya IS NOT NULL kullanılmalıdır. Örneğin, WHERE kolon = NULL beklenen sonucu vermeyecektir.

  • Karmaşık koşulları gruplamak için parantezler () kullanılabilir. Bu, mantıksal operatörlerin (AND, OR) işlem önceliğini açıkça belirtmenize yardımcı olur ve sorgunun okunabilirliğini artırır.

  • WHERE yan tümcesi yalnızca SELECT değil, aynı zamanda UPDATE ve DELETE deyimleriyle de kullanılarak belirli kayıtların güncellenmesini veya silinmesini sağlar.

14
0
Python Dilinde Veri Tipleri (Data Types) Kullanımı

Python programlama dili, verileri depolamak ve işlemek için çeşitli yerleşik veri tipleri sunar. Her veri tipi, belirli bir türdeki bilgiyi temsil etmek üzere tasarlanmıştır ve bu, Python'ın esnek ve güçlü yapısının temelini oluşturur. Değişkenler aracılığıyla atanan değerlerin tiplerini anlamak, etkili ve hatasız kod yazmak için kritik öneme sahiptir. Bu makalede, Python'daki temel veri tipleri detaylı bir şekilde incelenecek ve pratik kullanım örnekleriyle pekiştirilecektir.


Sözdizimi


Python, dinamik tipli bir dildir; bu, bir değişkenin veri tipini açıkça belirtmenize gerek olmadığı anlamına gelir. Değişkene bir değer atandığında, Python yorumlayıcısı değeri analiz eder ve otomatik olarak uygun veri tipini belirler. Bir değişkenin tipini öğrenmek için yerleşik type() fonksiyonu kullanılır.


# Genel atama sözdizimi
degisken_adi = deger

# Tip kontrolü
print(type(degisken_adi))

Python'daki temel veri tipleri aşağıdaki kategorilere ayrılabilir:


  • Sayısal Tipler: int (tam sayı), float (ondalıklı sayı), complex (karmaşık sayı).

  • Metin Tipi: str (string).

  • Dizi Tipleri (Sequence Types): list (liste), tuple (demet), range (aralık).

  • Eşleme Tipi (Mapping Type): dict (sözlük).

  • Küme Tipleri (Set Types): set (küme), frozenset (dondurulmuş küme).

  • Mantıksal Tip (Boolean Type): bool (boolean).

Bu tiplerin her biri, farklı kullanım senaryolarına uygun özelliklere sahiptir:


Sayısal Tipler:
Sayısal değerleri depolamak için kullanılırlar.


  • int: Tam sayıları temsil eder (örn. 10, -5, 1000000).

  • float: Ondalıklı sayıları temsil eder (örn. 3.14, -0.5, 2.0).

  • complex: Karmaşık sayıları temsil eder (örn. 1+2j).

Metin Tipi:
Karakter dizilerini depolamak için kullanılır.


  • str: Tek veya çift tırnak arasına yazılan karakter dizileridir (örn. "Merhaba Dünya", 'Python'). Metinler değiştirilemez (immutable) yapıdadır.

Dizi Tipleri:
Birden fazla değeri sıralı bir şekilde depolamak için kullanılırlar.


  • list: Köşeli parantezler içine alınan, sıralı, değiştirilebilir (mutable) ve farklı veri tiplerinden elemanlar içerebilen bir koleksiyondur (örn. [1, "elma", 3.14]).

  • tuple: Parantez içine alınan, sıralı, değiştirilemez (immutable) ve farklı veri tiplerinden elemanlar içerebilen bir koleksiyondur (örn. (1, "armut", 2.71)).

Eşleme Tipi:
Anahtar-değer çiftlerini depolamak için kullanılır.


  • dict: Süslü parantezler içine alınan, anahtar-değer çiftlerinden oluşan, sırasız (Python 3.7+ sürümlerinde ekleme sırasını korur) ve değiştirilebilir bir koleksiyondur. Anahtarlar benzersiz olmalıdır (örn. {'isim': 'Ali', 'yas': 30}).

Küme Tipleri:
Benzersiz elemanlardan oluşan koleksiyonları depolamak için kullanılır.


  • set: Süslü parantezler içine alınan (veya set() fonksiyonu ile oluşturulan), sırasız, benzersiz elemanlar içeren ve değiştirilebilir bir koleksiyondur (örn. {1, 2, 3}).

Mantıksal Tip:
Doğruluk değerlerini temsil eder.


  • bool: İki değerden birini alabilir: True (doğru) veya False (yanlış). Genellikle koşullu ifadelerde kullanılır.

Örnekler


Aşağıdaki örnekler, Python'daki temel veri tiplerinin nasıl tanımlandığını ve type() fonksiyonu ile nasıl kontrol edildiğini göstermektedir.


# Sayısal Tipler
sayi_tam = 10
sayi_ondalikli = 20.5
sayi_kompleks = 3 + 4j

print(f"sayi_tam: {sayi_tam}, Tipi: {type(sayi_tam)}")
print(f"sayi_ondalikli: {sayi_ondalikli}, Tipi: {type(sayi_ondalikli)}")
print(f"sayi_kompleks: {sayi_kompleks}, Tipi: {type(sayi_kompleks)}")

# Metin Tipi
metin = "Python Programlama"
print(f"metin: '{metin}', Tipi: {type(metin)}")

# Dizi Tipleri
liste_ornek = [1, "iki", 3.0, True]
demet_ornek = (10, "yirmi", False)

print(f"liste_ornek: {liste_ornek}, Tipi: {type(liste_ornek)}")
print(f"demet_ornek: {demet_ornek}, Tipi: {type(demet_ornek)}")

# Eşleme Tipi
sozluk_ornek = {"ad": "Mehmet", "yas": 25, "sehir": "Ankara"}
print(f"sozluk_ornek: {sozluk_ornek}, Tipi: {type(sozluk_ornek)}")

# Küme Tipi
kume_ornek = {1, 2, 3, 2} # Tekrar eden '2' otomatik olarak kaldırılır
print(f"kume_ornek: {kume_ornek}, Tipi: {type(kume_ornek)}")

# Mantıksal Tip
dogru_deger = True
yanlis_deger = False

print(f"dogru_deger: {dogru_deger}, Tipi: {type(dogru_deger)}")
print(f"yanlis_deger: {yanlis_deger}, Tipi: {type(yanlis_deger)}")

Çıktı:


sayi_tam: 10, Tipi: 
sayi_ondalikli: 20.5, Tipi: 
sayi_kompleks: (3+4j), Tipi: 
metin: 'Python Programlama', Tipi: 
liste_ornek: [1, 'iki', 3.0, True], Tipi: 
demet_ornek: (10, 'yirmi', False), Tipi: 
sozluk_ornek: {'ad': 'Mehmet', 'yas': 25, 'sehir': 'Ankara'}, Tipi: 
kume_ornek: {1, 2, 3}, Tipi: 
dogru_deger: True, Tipi: 
yanlis_deger: False, Tipi: 

Listelerin değiştirilebilirliği ve demetlerin değiştirilemezliği:


# Liste örneği - Değiştirilebilir
my_list = [1, 2, 3]
my_list[0] = 100 # İlk elemanı değiştir
print(f"Değiştirilmiş liste: {my_list}")

# Demet örneği - Değiştirilemez
my_tuple = (1, 2, 3)
# my_tuple[0] = 100 # Bu satır hata verir: TypeError: 'tuple' object does not support item assignment
print(f"Demet: {my_tuple}")

Çıktı (demet satırı yorum satırı yapıldığında):


Değiştirilmiş liste: [100, 2, 3]
Demet: (1, 2, 3)

Önemli Notlar


  • Dinamik Tiplendirme: Python, değişkenlerin veri tipini atama anında belirler. Bu, tip deklarasyonu yapma zorunluluğunu ortadan kaldırır ancak değişkenin o anki tipini takip etmeyi gerektirir.

  • Değiştirilebilir (Mutable) ve Değiştirilemez (Immutable) Tipler: Veri tipleri bellekteki değerlerinin değiştirilip değiştirilemeyeceğine göre ikiye ayrılır. int, float, str, tuple, frozenset değiştirilemezken; list, dict, set değiştirilebilir tiplerdir. Bu ayrım, performans ve programlama mantığı açısından önemlidir.

  • Tip Dönüşümü (Casting): Bir veri tipini başka bir tipe dönüştürmek için int(), float(), str(), list() gibi fonksiyonlar kullanılabilir. Ancak, dönüşüm her zaman mümkün veya anlamlı olmayabilir (örn. "abc" stringini int'e dönüştürmek).

  • None Tipi: Python'da özel bir değer olan None, bir değerin yokluğunu veya boş olduğunu belirtmek için kullanılır. None'un tipi NoneType'tır.

  • type() Fonksiyonu: Geliştirme ve hata ayıklama süreçlerinde bir değişkenin mevcut veri tipini doğrulamak için sıkça kullanılan bir araçtır.

10
0