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.
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
PHP Dilinde Operatörler Kullanımı

PHP, programlama dillerinin temel yapı taşlarından biri olan operatörler aracılığıyla değişkenler ve değerler üzerinde çeşitli işlemler yapmayı sağlar. Operatörler, matematiksel hesaplamalardan mantıksal karşılaştırmalara, değer atamalarından veri manipülasyonlarına kadar geniş bir yelpazede görev alarak kodun işlevselliğini ve dinamizmini artırır. Bu kılavuz, PHP dilindeki farklı operatör türlerini, bunların sözdizimini ve pratik kullanım örneklerini adım adım açıklamaktadır.


Sözdizimi


PHP'deki operatörlerin sözdizimi, operatörün türüne ve aldığı işlenen (operand) sayısına göre değişiklik gösterir. Genellikle bir operatör, bir veya daha fazla değer (işlenen) üzerinde belirli bir işlemi gerçekleştirir ve bir sonuç üretir. Genel yapı aşağıdaki gibidir:


  • Tekli (Unary) Operatörler: Tek bir işlenen üzerinde işlem yaparlar. Örnek: `$a++` (arttırma), `!$b` (mantıksal değil).

  • İkili (Binary) Operatörler: İki işlenen üzerinde işlem yaparlar. Örnek: `$a + $b` (toplama), `$x == $y` (eşitlik karşılaştırması).

  • Üçlü (Ternary) Operatörler: Üç işlenen üzerinde işlem yaparlar. PHP'de koşullu operatör (ternary operator) bu kategoriye girer. Örnek: `$koşul ? $değer1 : $değer2`.


Operatörler, işlenenlerin arasına veya bir işlenenin önüne/arkasına yerleştirilerek kullanılır.


Detaylı Açıklama


PHP, çeşitli işlem türleri için farklı operatör kategorileri sunar:


Aritmetik Operatörler


Matematiksel işlemler için kullanılırlar.


  • + (Toplama): İki sayıyı toplar. Örnek: `$a + $b`.

  • - (Çıkarma): Bir sayıdan diğerini çıkarır. Örnek: `$a - $b`.

  • * (Çarpma): İki sayıyı çarpar. Örnek: `$a * $b`.

  • / (Bölme): Bir sayıyı diğerine böler. Örnek: `$a / $b`.

  • % (Modülüs): Bölme işleminden kalanı verir. Örnek: `$a % $b`.

  • ** (Üs Alma): Bir sayının kuvvetini hesaplar. Örnek: `$a ** $b` ($a üzeri $b).


Atama Operatörleri


Sağdaki işlenenin değerini soldaki işlenene atamak için kullanılırlar.


  • = (Atama): Sağdaki değeri soldaki değişkene atar. Örnek: `$a = 10;`.

  • += (Topla ve Ata): `$a = $a + $b;` ile aynıdır. Örnek: `$a += $b;`.

  • -= (Çıkar ve Ata): `$a = $a - $b;` ile aynıdır. Örnek: `$a -= $b;`.

  • *= (Çarp ve Ata): `$a = $a * $b;` ile aynıdır. Örnek: `$a *= $b;`.

  • /= (Böl ve Ata): `$a = $a / $b;` ile aynıdır. Örnek: `$a /= $b;`.

  • %= (Modülüs ve Ata): `$a = $a % $b;` ile aynıdır. Örnek: `$a %= $b;`.

  • **= (Üs Al ve Ata): `$a = $a ** $b;` ile aynıdır. Örnek: `$a **= $b;`.

  • .= (Birleştir ve Ata - Stringler için): `$a = $a . $b;` ile aynıdır. Örnek: `$a .= $b;`.


Karşılaştırma Operatörleri


İki değeri karşılaştırır ve true veya false döndürürler.


  • == (Eşitlik): İki değerin eşit olup olmadığını kontrol eder (veri türüne bakılmaksızın). Örnek: `$a == $b`.

  • === (Özdeşlik): İki değerin eşit ve aynı veri türünde olup olmadığını kontrol eder. Örnek: `$a === $b`.

  • != veya <> (Eşit Değil): İki değerin eşit olup olmadığını kontrol eder. Örnek: `$a != $b`.

  • !== (Özdeş Değil): İki değerin eşit veya aynı veri türünde olmadığını kontrol eder. Örnek: `$a !== $b`.

  • < (Küçüktür): Soldaki değerin sağdaki değerden küçük olup olmadığını kontrol eder. Örnek: `$a < $b`.

  • > (Büyüktür): Soldaki değerin sağdaki değerden büyük olup olmadığını kontrol eder. Örnek: `$a > $b`.

  • <= (Küçük Eşit): Soldaki değerin sağdaki değerden küçük veya eşit olup olmadığını kontrol eder. Örnek: `$a <= $b`.

  • >= (Büyük Eşit): Soldaki değerin sağdaki değerden büyük veya eşit olup olmadığını kontrol eder. Örnek: `$a >= $b`.

  • <=> (Spaceship Operatörü): PHP 7'den itibaren mevcuttur. İki ifadeyi karşılaştırır. Soldaki değer küçükse -1, eşitse 0, büyükse 1 döndürür. Örnek: `$a <=> $b`.


Mantıksal Operatörler


Koşulları birleştirmek veya tersine çevirmek için kullanılırlar.


  • && veya and (VE): Her iki koşul da doğruysa true döndürür. Örnek: `$a > 0 && $b < 10`.

  • || veya or (VEYA): Koşullardan en az biri doğruysa true döndürür. Örnek: `$a == 5 || $b == 7`.

  • ! (DEĞİL): Koşulun tersini döndürür. Örnek: `!$koşul`.

  • xor (Özel VEYA): Koşullardan sadece biri doğruysa true döndürür. Her ikisi de doğru veya her ikisi de yanlış ise false döndürür.


Arttırma/Azaltma Operatörleri


Sayısal değişkenlerin değerini bir artırmak veya bir azaltmak için kullanılırlar.


  • ++$a (Ön Arttırma): Değeri bir artırır, sonra değişkenin yeni değerini döndürür.

  • $a++ (Son Arttırma): Değişkenin orijinal değerini döndürür, sonra değeri bir artırır.

  • --$a (Ön Azaltma): Değeri bir azaltır, sonra değişkenin yeni değerini döndürür.

  • $a-- (Son Azaltma): Değişkenin orijinal değerini döndürür, sonra değeri bir azaltır.


String Operatörleri


Stringleri birleştirmek için kullanılırlar.


  • . (Birleştirme): İki stringi birleştirir. Örnek: `"Merhaba" . " Dünya"`.

  • .= (Birleştir ve Ata): Bir stringi diğerine ekler ve sonucu değişkene atar. Örnek: `$metin .= " yeni parça";`.


Dizi Operatörleri


Dizileri karşılaştırmak veya birleştirmek için kullanılırlar.


  • + (Birleşim): Sağdaki diziyi soldaki diziye ekler. Aynı anahtarlar varsa soldaki dizinin değeri korunur. Örnek: `$dizi1 + $dizi2`.

  • == (Eşitlik): Anahtar/değer çiftleri aynıysa true döndürür.

  • === (Özdeşlik): Anahtar/değer çiftleri aynıysa ve aynı sırada ve aynı veri türündeyse true döndürür.


Koşullu (Ternary) Operatör


Basit bir if-else yapısını tek bir satırda ifade etmenin kısa yoludur.


  • (koşul) ? (doğru ise) : (yanlış ise): Koşul doğruysa ilk ifadeyi, yanlışsa ikinci ifadeyi döndürür. Örnek: `$durum = ($yas >= 18) ? "Yetişkin" : "Çocuk";`.


Null Coalescing Operatörü


PHP 7'den itibaren mevcuttur. Bir değişkenin tanımlı ve null olmayan bir değere sahip olup olmadığını kontrol etmek için kullanılır.


  • ??: Sol taraftaki işlenen varsa ve NULL değilse onu döndürür; aksi takdirde sağ taraftaki işleneni döndürür. Örnek: `$kullaniciAdi = $_GET['kullanici'] ?? 'Misafir';`.


Örnekler


Aşağıdaki örnekler, farklı operatör türlerinin PHP içindeki pratik uygulamalarını göstermektedir.


Aritmetik ve Atama Operatörleri Örneği";
echo "

Başlangıç Değerleri: \$sayi1 = " . $sayi1 . ", \$sayi2 = " . $sayi2 . "

"; $toplam = $sayi1 + $sayi2; // Toplama echo "

Toplama (\$sayi1 + \$sayi2): " . $toplam . "

"; $fark = $sayi1 - $sayi2; // Çıkarma echo "

Çıkarma (\$sayi1 - \$sayi2): " . $fark . "

"; $carpim = $sayi1 * $sayi2; // Çarpma echo "

Çarpma (\$sayi1 * \$sayi2): " . $carpim . "

"; $bolum = $sayi1 / $sayi2; // Bölme echo "

Bölme (\$sayi1 / \$sayi2): " . $bolum . "

"; $mod = $sayi1 % $sayi2; // Modülüs echo "

Modülüs (\$sayi1 % \$sayi2): " . $mod . "

"; $kuvvet = $sayi1 ** 2; // Üs alma (20^2) echo "

Üs Alma (\$sayi1 ** 2): " . $kuvvet . "

"; $sayi1 += 10; // \$sayi1 = \$sayi1 + 10; echo "

Topla ve Ata (\$sayi1 += 10): " . $sayi1 . "

"; echo "
"; // Örnek 2: Karşılaştırma ve Mantıksal Operatörler $yas = 25; $ehliyetVar = true; echo "

Karşılaştırma ve Mantıksal Operatörler Örneği

"; echo "

Değerler: \$yas = " . $yas . ", \$ehliyetVar = " . ($ehliyetVar ? "true" : "false") . "

"; if ($yas >= 18 && $ehliyetVar) { // Mantıksal VE echo "

Ehliyet alabilir ve araba kullanabilir.

"; } else { echo "

Ehliyet alamaz veya araba kullanamaz.

"; } $puan = 85; if ($puan > 90 || $puan == 85) { // Mantıksal VEYA echo "

Tebrikler, yüksek puan aldınız!

"; } else { echo "

Daha fazla çalışmanız gerekiyor.

"; } $aktif = false; if (!$aktif) { // Mantıksal DEĞİL echo "

Kullanıcı pasif durumda.

"; } echo "
"; // Örnek 3: Arttırma/Azaltma Operatörleri $sayac = 10; echo "

Arttırma/Azaltma Operatörleri Örneği

"; echo "

Başlangıç Değeri: \$sayac = " . $sayac . "

"; echo "

Ön Arttırma (++\$sayac): " . (++$sayac) . ", \$sayac'ın yeni değeri: " . $sayac . "

"; // 11, 11 echo "

Son Arttırma (\$sayac++): " . ($sayac++) . ", \$sayac'ın yeni değeri: " . $sayac . "

"; // 11, 12 echo "

Ön Azaltma (--\$sayac): " . (--$sayac) . ", \$sayac'ın yeni değeri: " . $sayac . "

"; // 11, 11 echo "

Son Azaltma (\$sayac--): " . ($sayac--) . ", \$sayac'ın yeni değeri: " . $sayac . "

"; // 11, 10 echo "
"; // Örnek 4: String ve Koşullu Operatörler $ad = "Ahmet"; $soyad = "Yılmaz"; $tamAd = $ad . " " . $soyad; // String birleştirme echo "

String ve Koşullu Operatörler Örneği

"; echo "

Tam Ad: " . $tamAd . "

"; $mesaj = "Hoşgeldin "; $mesaj .= $ad; // String birleştir ve ata echo "

Mesaj: " . $mesaj . "

"; $kullaniciDurumu = ($yas >= 18) ? "Yetişkin" : "Çocuk"; // Koşullu operatör echo "

Kullanıcı Durumu: " . $kullaniciDurumu . "

"; echo "
"; // Örnek 5: Null Coalescing Operatörü // $_GET['kullanici'] tanımlı değilse 'Misafir' kullan $kullaniciAdi = $_GET['kullanici'] ?? 'Misafir'; echo "

Null Coalescing Operatörü Örneği

"; echo "

Kullanıcı Adı (varsayılan değer ile): " . $kullaniciAdi . "

"; // Diyelim ki $_GET['kullanici'] 'Can' olarak ayarlandı $_GET['kullanici'] = 'Can'; $kullaniciAdi2 = $_GET['kullanici'] ?? 'Misafir'; echo "

Kullanıcı Adı (belirlenmiş değer ile): " . $kullaniciAdi2 . "

"; ?>

Önemli Notlar


  • Operatör Önceliği: Farklı operatörlerin farklı öncelik seviyeleri vardır. Matematikteki işlem sırası gibi, PHP de belirli operatörleri diğerlerinden önce yürütür (örn. çarpma ve bölme toplamadan önce). Karmaşık ifadelerde belirsizliği önlemek için parantez () kullanmak iyi bir uygulamadır.

  • Veri Tipi Juggling: PHP, zayıf tipli bir dil olduğu için karşılaştırma veya aritmetik işlemlerde farklı veri tiplerini otomatik olarak dönüştürmeye çalışabilir. Bu, bazen beklenmedik sonuçlara yol açabilir. Kesin tip karşılaştırması için === (özdeşlik) ve !== (özdeş değil) operatörlerini tercih edin.

  • Kısa Devre Değerlendirme (Short-Circuit Evaluation): Mantıksal operatörler (&&, ||) kısa devre değerlendirme yapar. Örneğin, $koşul1 && $koşul2 ifadesinde, $koşul1 yanlışsa, $koşul2 asla değerlendirilmez çünkü sonuç zaten false olacaktır. Bu durum, performans ve hata önleme açısından önemlidir.

  • Aynı Anda Hem Okuma Hem Yazma: Arttırma/azaltma operatörlerini (++, --) kullanırken, özellikle karmaşık ifadelerde veya bir değişkene aynı anda hem atama hem de işlem yaparken dikkatli olun. Ön ve son arttırma/azaltma arasındaki farkı anlamak önemlidir.

  • Bölme Sıfıra: Bir sayıyı sıfıra bölmek ($a / 0) bir uyarıya (Warning) neden olur ve sonuç olarak INF (sonsuz) veya NAN (sayı değil) döndürebilir. Uygulamalarınızda sıfıra bölme durumlarını kontrol etmeniz önerilir.

11
0
CSS Dilinde Renk (Colors) Kullanımı

Cascading Style Sheets (CSS), web sayfalarının görsel sunumunu kontrol eden bir stil sayfası dilidir. Bu sunumun temel bileşenlerinden biri de renklerdir. CSS, öğelere metin rengi, arka plan rengi, kenarlık rengi gibi çeşitli görsel özellikler atamak için kapsamlı bir dizi renk değeri ve yöntemi sunar. Bu kılavuz, CSS dilinde renklerin nasıl tanımlanacağını ve etkin bir şekilde nasıl kullanılacağını teknik ayrıntılarla açıklamaktadır.


Temel Sözdizimi


CSS'te bir öğenin rengini belirlemek için genel sözdizimi aşağıdaki gibidir. Burada , rengin uygulanacağı CSS özelliğini (örneğin, color, background-color, border-color) temsil ederken, ise rengi tanımlayan spesifik değeri ifade eder.


selector {
    : ;
}

Detaylı Açıklama


, CSS'te bir rengi tanımlamak için kullanılabilecek çeşitli formatlara sahiptir. Bu formatlar, geliştiricilere esneklik ve hassasiyet sağlar. Başlıca renk tanımlama yöntemleri şunlardır:


  • İsimlendirilmiş Renkler (Named Colors): CSS, belirli anahtar kelimelerle tanımlanmış standart renk isimleri sunar. Örneğin, red, blue, green, black, white gibi isimler doğrudan kullanılabilir. Toplamda 140'tan fazla standart renk adı bulunmaktadır.

  • Hexadecimal Renkler (Hex Colors): Bu format, bir rengi altı haneli onaltılık bir değerle (#RRGGBB) tanımlar. İlk iki hane kırmızı (Red), sonraki iki hane yeşil (Green) ve son iki hane mavi (Blue) bileşenini temsil eder. Her bir bileşen 00 (en az yoğunluk) ile FF (en yüksek yoğunluk) arasında değer alır. Kısa gösterim olarak #RGB de kullanılabilir (örneğin, #FFF, #FFFFFF ile aynıdır).

  • RGB Fonksiyonu (Red, Green, Blue): rgb(R, G, B) formatı, rengi kırmızı, yeşil ve mavi bileşenlerinin desimal değerleri (0-255 arası) ile tanımlar. Örneğin, rgb(255, 0, 0) kırmızı rengi temsil eder.

  • RGBA Fonksiyonu (Red, Green, Blue, Alpha): rgba(R, G, B, A) formatı, RGB'ye ek olarak bir alfa (Alpha) kanalı ekler. Alfa değeri, rengin şeffaflık seviyesini (opaklığını) 0.0 (tamamen şeffaf) ile 1.0 (tamamen opak) arasında bir ondalık sayı ile belirler.

  • HSL Fonksiyonu (Hue, Saturation, Lightness): hsl(H, S, L) formatı, rengi ton (Hue), doygunluk (Saturation) ve açıklık (Lightness) değerleriyle tanımlar.

    • Hue (Ton): Renk çarkındaki açıyı (0-360 derece) temsil eder. 0 veya 360 kırmızı, 120 yeşil, 240 mavidir.

    • Saturation (Doygunluk): Rengin canlılığını veya yoğunluğunu yüzde olarak (0% ile 100% arası) belirler. 0% gri ton, 100% ise tam renktir.

    • Lightness (Açıklık): Rengin açıklığını veya koyuluğunu yüzde olarak (0% ile 100% arası) belirler. 0% siyah, 100% beyaz, 50% normal renktir.

  • HSLA Fonksiyonu (Hue, Saturation, Lightness, Alpha): hsla(H, S, L, A) formatı, HSL'ye ek olarak bir alfa (Alpha) kanalı ekler. Alfa değeri, rengin şeffaflığını 0.0 (tamamen şeffaf) ile 1.0 (tamamen opak) arasında bir ondalık sayı ile belirler.


Pratik Kullanım Örnekleri


Aşağıdaki örnekler, farklı renk tanımlama yöntemlerinin CSS kurallarında nasıl kullanıldığını göstermektedir.


/* İsimlendirilmiş Renk Kullanımı */
.header {
    background-color: navy;
    color: white;
}

/* Hexadecimal Renk Kullanımı */
.main-content {
    background-color: #F0F8FF; /* AliceBlue */
    border-color: #333; /* Koyu gri */
    color: #0A0A0A; /* Çok koyu gri */
}

/* RGB Fonksiyonu Kullanımı */
.success-message {
    background-color: rgb(212, 237, 218); /* Açık yeşil */
    color: rgb(60, 118, 61); /* Koyu yeşil */
}

/* RGBA Fonksiyonu Kullanımı (yarı şeffaf arka plan) */
.overlay {
    background-color: rgba(0, 0, 0, 0.7); /* %70 opak siyah */
    color: white;
}

/* HSL Fonksiyonu Kullanımı */
.accent-button {
    background-color: hsl(200, 70%, 50%); /* Orta mavi ton */
    color: hsl(0, 0%, 100%); /* Beyaz */
}

/* HSLA Fonksiyonu Kullanımı (yarı şeffaf kenarlık) */
.card {
    border: 2px solid hsla(240, 100%, 50%, 0.5); /* Yarı şeffaf mavi kenarlık */
    background-color: white;
    padding: 15px;
}

Bu örnekler, farklı renk değerlerinin farklı CSS özelliklerine nasıl atandığını ve belirli görsel efektlerin nasıl elde edilebileceğini göstermektedir.


Önemli Notlar


CSS'te renklerle çalışırken dikkate alınması gereken bazı önemli noktalar şunlardır:


  • Erişilebilirlik (Accessibility): Metin ve arka plan renkleri arasında yeterli kontrast oranının sağlanması, görme engelli veya renk körü kullanıcılar için içeriğin okunabilirliğini artırır. Web Content Accessibility Guidelines (WCAG) bu konuda standartlar belirler.

  • Tarayıcı Desteği: Modern tarayıcılar tüm belirtilen renk formatlarını destekler. Ancak, eski tarayıcılar için uyumluluk endişesi varsa, yaygın formatlar (hex veya RGB) tercih edilebilir.

  • Tutarlılık: Bir projede belirli bir renk paleti kullanıldığında, bu renklerin değişkenler (CSS Custom Properties) aracılığıyla tanımlanması, kodun daha yönetilebilir ve tutarlı olmasını sağlar. Örneğin: --primary-color: #007bff;.

  • Şeffaflık Kullanımı: rgba() ve hsla() fonksiyonlarındaki alfa kanalı, katmanlı tasarımlarda veya arka plan resimleri üzerinde renk tonlamaları oluşturmak için oldukça faydalıdır.

  • Gelecek Renk Modelleri: CSS'in yeni sürümleri, lch(), lab() gibi daha gelişmiş renk modellerini ve color-mix() gibi renk manipülasyon fonksiyonlarını tanıtmaktadır. Bu özellikler daha geniş bir renk gamı ve daha hassas kontrol imkanı sunar.

11
0
SQL Dilinde SQL ORDER BY Kullanımı

SQL (Yapısal Sorgu Dili), veritabanlarından veri almak ve manipüle etmek için kullanılan temel bir dildir. Veri kümelerini belirli bir düzene göre sıralamak, analiz ve raporlama süreçlerinde kritik öneme sahiptir. SQL'deki ORDER BY yan tümcesi, bir SELECT ifadesinden dönen sonuç kümesini bir veya daha fazla sütuna göre artan veya azalan sırada sıralamak için kullanılır. Bu kılavuz, ORDER BY ifadesinin sözdizimini, detaylı açıklamalarını ve pratik kullanım örneklerini adım adım ele alacaktır.


Sözdizimi


Aşağıdaki yapı, ORDER BY ifadesinin genel kullanım şeklini göstermektedir:

SELECT column1, column2, ...
FROM table_name
WHERE condition
ORDER BY column1 [ASC|DESC] [, column2 [ASC|DESC], ...];

Detaylı Açıklama


ORDER BY ifadesinin her bir bileşeni, sorgu sonuçlarının nasıl sıralanacağını belirler:


  • SELECT column1, column2, ...: Sorgu tarafından döndürülecek sütunları belirtir.

  • FROM table_name: Verilerin çekileceği tabloyu belirtir.

  • WHERE condition: İsteğe bağlıdır. Sonuç kümesini filtrelemek için kullanılır.

  • ORDER BY: Sonuç kümesinin sıralanacağı sütunları veya ifadeleri belirtmek için kullanılan anahtar kelimedir.

  • column1, column2, ...: Sıralama işleminin uygulanacağı bir veya daha fazla sütunun adıdır. Birden fazla sütun belirtilirse, sıralama ilk sütuna göre yapılır, ardından aynı değerlere sahip satırlar için ikinci sütuna göre sıralama devam eder ve bu böylece devam eder.

  • [ASC|DESC]: Sıralama yönünü belirten isteğe bağlı bir anahtar kelimedir:

    • ASC: Artan sıralama (ascending) için kullanılır. Varsayılan sıralama yönüdür, belirtilmese bile uygulanır.

    • DESC: Azalan sıralama (descending) için kullanılır.

  • NULLS FIRST|NULLS LAST: (Bazı veritabanı sistemlerine özeldir, örneğin Oracle, PostgreSQL) NULL değerlerinin sıralamada nerede yer alacağını belirler:

    • NULLS FIRST: NULL değerlerini en başa yerleştirir.

    • NULLS LAST: NULL değerlerini en sona yerleştirir.

    Çoğu veritabanı sisteminde, ASC ile NULL'lar sona, DESC ile başa gelir. Bu anahtar kelimeler, bu davranışı açıkça kontrol etme imkanı sunar.

Örnekler


Aşağıdaki örnekler, bir Personel tablosu üzerinden ORDER BY ifadesinin farklı kullanım senaryolarını göstermektedir:


Örnek 1: Tek Bir Sütuna Göre Artan Sıralama


Bu örnek, Personel tablosundaki tüm personeli Ad sütununa göre alfabetik olarak artan sırada (ASC) sıralar. ASC varsayılan olduğu için açıkça belirtilmesine gerek yoktur.


SELECT PersonelID, Ad, Soyad, Maas
FROM Personel
ORDER BY Ad ASC;

Örnek 2: Tek Bir Sütuna Göre Azalan Sıralama


Bu örnek, personeli Maas sütununa göre en yüksek maaştan en düşüğe doğru azalan sırada (DESC) sıralar.


SELECT PersonelID, Ad, Soyad, Maas
FROM Personel
ORDER BY Maas DESC;

Örnek 3: Birden Fazla Sütuna Göre Sıralama


Bu örnek, personeli önce Soyad'a göre artan sırada, ardından aynı soyada sahip olanları Ad'a göre artan sırada sıralar.


SELECT PersonelID, Ad, Soyad, Maas
FROM Personel
ORDER BY Soyad ASC, Ad ASC;

Örnek 4: Farklı Yönlerde Birden Fazla Sütuna Göre Sıralama


Bu örnek, personeli önce Maas'a göre azalan sırada, ardından aynı maaşa sahip olanları Soyad'a göre artan sırada sıralar.


SELECT PersonelID, Ad, Soyad, Maas
FROM Personel
ORDER BY Maas DESC, Soyad ASC;

Örnek 5: NULL Değerlerini Yönetme (PostgreSQL/Oracle Örneği)


Varsayalım ki Personel tablosunda DepartmanID sütunu NULL değerler içerebilir. Bu örnek, DepartmanID'si NULL olanları en başa getirirken diğerlerini DepartmanID'ye göre artan sırada sıralar.


SELECT PersonelID, Ad, Soyad, DepartmanID
FROM Personel
ORDER BY DepartmanID NULLS FIRST, Ad ASC;

Örnek 6: İfadeye Göre Sıralama


Sıralama için bir sütun adı yerine bir ifade de kullanabilirsiniz. Bu örnek, Maas ve Prim sütunlarının toplamına göre azalan sırada sıralar.


SELECT PersonelID, Ad, Soyad, Maas, Prim, (Maas + Prim) AS ToplamKazanc
FROM Personel
ORDER BY (Maas + Prim) DESC;

Önemli Notlar


  • Sıralama Yönü Varsayılanı: ORDER BY ifadesinde sıralama yönü belirtilmezse, varsayılan olarak ASC (artan) kullanılır.

  • Performans: Büyük veri kümelerinde sıralama işlemi maliyetli olabilir. Sıkça sıralama yapılan sütunlara indeks eklemek, sorgu performansını önemli ölçüde artırabilir.

  • NULL Değerlerinin Konumu: Çoğu veritabanı sisteminde, NULL değerler ASC sıralamasında en sona, DESC sıralamasında ise en başa yerleştirilir. Ancak Oracle ve PostgreSQL gibi bazı sistemler, NULLS FIRST veya NULLS LAST anahtar kelimeleriyle bu davranışı açıkça kontrol etme imkanı sunar.

  • Sütun Numaralarıyla Sıralama: Bazı SQL standartları ve veritabanı sistemleri (örneğin MySQL), ORDER BY ifadesinde SELECT listesindeki sütunların sırasını belirten sayısal indeksleri kullanmaya izin verir (örneğin, ORDER BY 2 DESC ikinci sütuna göre sıralar). Ancak bu kullanım, sorgu okunabilirliğini azalttığı ve sütun sırası değiştiğinde hataya açık olduğu için genellikle önerilmez.

  • Yerleşim: ORDER BY yan tümcesi, bir SQL sorgusunda genellikle en sona yerleştirilir. Yalnızca LIMIT veya FETCH NEXT gibi yan tümceler ORDER BY'dan sonra gelebilir.

  • İfadelere Göre Sıralama: Yalnızca sütun adları değil, aritmetik işlemler, fonksiyon çağrıları veya diğer ifadeler de ORDER BY ifadesi içinde kullanılabilir. Bu, sonuç kümesini daha karmaşık kriterlere göre sıralama esnekliği sağlar.

12
0
Python Dilinde Sayılar (Numbers) Kullanımı

Python programlamanın temel yapı taşlarından biri olan sayılar (numbers), verileri niceliksel olarak ifade etmemizi sağlar. Bu veri tipleri, değişkenlerin değerlerini depolamak, matematiksel işlemler gerçekleştirmek ve algoritmik çözümler üretmek için vazgeçilmezdir. Python, tam sayılar, ondalıklı sayılar ve karmaşık sayılar olmak üzere üç ana sayı türünü destekler. Bu kılavuz, Python'da sayıların nasıl tanımlandığını, kullanıldığını ve yönetildiğini ayrıntılı olarak ele alacaktır.


Temel Sözdizimi


Python'da bir sayı tanımlamak oldukça basittir. Değişkenlere doğrudan sayısal değerler atayarak bu işlemi gerçekleştirebilirsiniz. Python'ın dinamik tipleme yapısı sayesinde, bir sayının türünü açıkça belirtmenize gerek yoktur; yorumlayıcı atanan değere göre türü otomatik olarak belirler.


Aşağıdaki örnekler, farklı sayı türlerinin temel atama sözdizimini göstermektedir:


# Tam sayı (Integer) ataması
tam_sayi = 100

# Ondalıklı sayı (Float) ataması
ondalikli_sayi = 3.14

# Karmaşık sayı (Complex) ataması
karma_sayi = 2 + 3j

Detaylı Açıklama


Python, üç temel sayı türü sunar:


  • Tam Sayılar (int): Pozitif veya negatif, tam sayı değerlerini temsil ederler. Python 3'te tam sayıların boyutu yalnızca sistemin belleğiyle sınırlıdır, yani istediğiniz kadar büyük tam sayılarla çalışabilirsiniz. Örnekler: 5, -100, 12345678901234567890. Tam sayılar ayrıca ikili (0b), sekizli (0o) ve onaltılı (0x) tabanlarda da temsil edilebilir.

  • Ondalıklı Sayılar (float): Ondalık noktası içeren veya bilimsel gösterimle ifade edilen gerçek sayıları temsil ederler. Çift duyarlıklı (double-precision) kayan noktalı sayılar olarak uygulanırlar ve genellikle 64-bit IEEE 754 standardına uygundurlar. Örnekler: 3.14, -0.001, 2.5e-3 (yani 2.5 * 10^-3).

  • Karmaşık Sayılar (complex): Gerçel ve sanal kısımları olan sayıları temsil ederler. Sanal kısım, bir sayının sonuna j veya J eklenerek belirtilir. Örnekler: 1 + 2j, -5j, 3.14 + 2.71j. Gerçel kısma .real, sanal kısma ise .imag nitelikleri ile erişilebilir.


Her bir sayı türü, belirli matematiksel ve mantıksal işlemler için optimize edilmiştir. Örneğin, tam sayılar genellikle kesin sayımlar için kullanılırken, ondalıklı sayılar ölçümler ve bilimsel hesaplamalar için tercih edilir.


Pratik Kullanım Örnekleri


Aşağıdaki örnekler, Python'da farklı sayı türlerinin tanımlanmasını, türlerinin kontrol edilmesini ve temel aritmetik işlemlerin yapılmasını göstermektedir.


Örnek 1: Temel Sayı Atamaları ve Tür Kontrolü


# Tam sayı ataması
sayi1 = 42
print(f"sayi1 değeri: {sayi1}, Türü: {type(sayi1)}")
print("
") # Çıktıda boş satır için # Ondalıklı sayı ataması sayi2 = 3.14159 print(f"sayi2 değeri: {sayi2}, Türü: {type(sayi2)}") print("
") # Çıktıda boş satır için # Karmaşık sayı ataması sayi3 = -1 + 2.5j print(f"sayi3 değeri: {sayi3}, Türü: {type(sayi3)}") print(f"sayi3'ün gerçek kısmı: {sayi3.real}") print(f"sayi3'ün sanal kısmı: {sayi3.imag}")

Örnek 2: Aritmetik İşlemler


a = 15
b = 4

# Toplama
toplam = a + b
print(f"{a} + {b} = {toplam}")
print("
") # Çıkarma fark = a - b print(f"{a} - {b} = {fark}") print("
") # Çarpma carpim = a * b print(f"{a} * {b} = {carpim}") print("
") # Bölme (Sonuç her zaman float döner) bolum = a / b print(f"{a} / {b} = {bolum}") print("
") # Tam Bölme (Sonuç tam sayı döner, ondalık kısım atılır) tam_bolum = a // b print(f"{a} // {b} = {tam_bolum}") print("
") # Modulo (Kalanı verir) kalan = a % b print(f"{a} % {b} = {kalan}") print("
") # Üs alma us_alma = a ** b print(f"{a} ** {b} = {us_alma}")

Örnek 3: Tür Dönüşümleri (Type Casting)


x = 7.89
y = 10
z = "25"

# Float'tan int'e dönüşüm (ondalık kısım atılır)
int_x = int(x)
print(f"{x} (float) -> {int_x} (int), Türü: {type(int_x)}")
print("
") # Int'ten float'a dönüşüm float_y = float(y) print(f"{y} (int) -> {float_y} (float), Türü: {type(float_y)}") print("
") # String'ten int'e dönüşüm int_z = int(z) print(f"'{z}' (str) -> {int_z} (int), Türü: {type(int_z)}") print("
") # String'ten float'a dönüşüm float_z = float(z) print(f"'{z}' (str) -> {float_z} (float), Türü: {type(float_z)}")

Önemli Notlar


  • Ondalıklı Sayı Hassasiyeti: Ondalıklı sayılar (float), ikili (binary) tabanda tam olarak temsil edilemeyebilir. Bu durum, beklenenden farklı sonuçlara yol açabilen hassasiyet sorunlarına neden olabilir. Finansal veya yüksek hassasiyet gerektiren hesaplamalar için decimal modülünü kullanmak daha doğru bir yaklaşım olabilir.

  • Tam Sayı Boyutu: Python'da tam sayıların boyutu sınırsızdır. Bu, diğer bazı programlama dillerinde olduğu gibi taşma (overflow) sorunları yaşanmadığı anlamına gelir.

  • Tür Dönüşümleri: Bir sayı türünü başka bir türe dönüştürürken (örneğin, float'tan int'e), veri kaybı yaşanabileceğini unutmayın. Örneğin, int(3.9) sonucu 3 olacaktır.

  • Bölme Operatörleri: Tek eğik çizgi (/) operatörü her zaman bir float sonuç döndürürken, çift eğik çizgi (//) operatörü tam bölme yapar ve sonuç int (her iki işlenen de int ise) veya float (işlenenlerden biri float ise) olarak döner.

  • Karmaşık Sayı Kullanımı: Karmaşık sayılar daha çok bilimsel ve mühendislik uygulamalarında kullanılır. Normal iş uygulamalarında nadiren karşılaşılırlar.

  • Operatör Önceliği: Matematiksel işlemlerde standart operatör önceliği (parantez, üs, çarpma/bölme, toplama/çıkarma) geçerlidir. İşlem sırasını açıkça belirtmek için parantezler kullanın.

9
0
PHP Dilinde Denetim Yapıları Kullanımı

PHP, sunucu taraflı betik dili olarak, program akışını yönetmek için çeşitli denetim yapıları sunar. Bu yapılar, belirli koşullara bağlı olarak kod bloklarının yürütülmesini veya belirli işlemlerin tekrar tekrar gerçekleştirilmesini sağlar. Denetim yapıları, herhangi bir programlama dilinin temelini oluşturur ve uygulamanızın mantıksal akışını şekillendirmenize olanak tanır. Bu makale, PHP'deki temel denetim yapılarının nasıl kullanılacağını, sözdiziminden pratik örneklere kadar adım adım açıklayacaktır.


Temel Sözdizimi


PHP'de yaygın olarak kullanılan denetim yapılarının temel sözdizimi aşağıda listelenmiştir:



// If-Else If-Else Yapısı
if (koşul_1) {
    // koşul_1 doğru ise çalışacak kod bloğu
} elseif (koşul_2) {
    // koşul_1 yanlış ve koşul_2 doğru ise çalışacak kod bloğu
} else {
    // tüm koşullar yanlış ise çalışacak kod bloğu
}

// Switch Yapısı
switch (ifade) {
    case değer_1:
        // ifade, değer_1'e eşit ise çalışacak kod bloğu
        break;
    case değer_2:
        // ifade, değer_2'ye eşit ise çalışacak kod bloğu
        break;
    default:
        // hiçbir case ile eşleşmezse çalışacak kod bloğu
        break;
}

// While Döngüsü
while (koşul) {
    // koşul doğru olduğu sürece çalışacak kod bloğu
}

// Do-While Döngüsü
do {
    // kod bloğu en az bir kez çalışır, sonra koşul kontrol edilir
} while (koşul);

// For Döngüsü
for (başlangıç; koşul; artırma/azaltma) {
    // koşul doğru olduğu sürece ve her döngüde artırma/azaltma ile çalışacak kod bloğu
}

// Foreach Döngüsü
foreach ($dizi as $değer) {
    // her dizi elemanı için çalışacak kod bloğu
}

// Foreach Döngüsü (Anahtar ve Değer ile)
foreach ($dizi as $anahtar => $değer) {
    // her dizi elemanı için anahtar ve değer ile çalışacak kod bloğu
}

// Döngü Kontrol Anahtar Kelimeleri
// break: mevcut döngüyü tamamen sonlandırır
// continue: mevcut iterasyonu atlar ve bir sonraki iterasyona geçer

Detaylı Açıklama


Her bir denetim yapısı, belirli bir amaca hizmet eder ve programınızın mantıksal akışını farklı şekillerde yönetir:


  • if, else if, else: Bu yapılar, belirli bir koşulun doğruluğuna göre farklı kod bloklarını çalıştırmak için kullanılır. if ifadesi, ana koşulu kontrol eder. Eğer bu koşul yanlışsa, isteğe bağlı olarak bir veya daha fazla else if ifadesi ek koşulları kontrol eder. Hiçbir koşul doğru olmazsa, isteğe bağlı else bloğu yürütülür.

  • switch: Tek bir ifadenin farklı olası değerlerine göre farklı kod bloklarını yürütmek için kullanılır. Her bir case bloğu, ifadenin belirli bir değerle eşleşip eşleşmediğini kontrol eder. break anahtar kelimesi, eşleşen bir case bulunduğunda switch bloğundan çıkılmasını sağlar. default bloğu, hiçbir case ile eşleşme olmadığında çalışır.

  • while: Belirtilen bir koşul doğru olduğu sürece bir kod bloğunu tekrarlamak için kullanılır. Koşul, döngü bloğu yürütülmeden önce kontrol edilir. Eğer koşul başlangıçta yanlışsa, döngü bloğu hiç çalışmayabilir.

  • do-while: while döngüsüne benzer, ancak kod bloğu en az bir kez yürütülür, ardından koşul kontrol edilir. Bu, kod bloğunun her zaman en az bir kez çalışmasını garanti eder.

  • for: Belirli sayıda tekrar yapılması gereken durumlarda kullanılır. Üç bölümden oluşur: başlangıç ifadesi (döngü başlamadan önce bir kez çalışır), koşul ifadesi (her iterasyon öncesi kontrol edilir) ve artırma/azaltma ifadesi (her iterasyon sonrası çalışır).

  • foreach: Özellikle diziler ve nesneler üzerinde kolayca yineleme yapmak için tasarlanmıştır. Dizinin her elemanı için bir kez döngü yapar, elemanın değerini (ve isteğe bağlı olarak anahtarını) bir değişkene atar.

  • break: İçinde bulunduğu döngüyü (for, while, do-while, foreach) veya switch ifadesini anında sonlandırır ve kontrolü döngüden veya switch bloğundan sonraki ifadeye aktarır.

  • continue: İçinde bulunduğu döngünün mevcut iterasyonunu atlar ve döngünün bir sonraki iterasyonuna geçer. Koşul kontrolü veya artırma/azaltma işlemi normal şekilde devam eder.

Pratik Kullanım Örnekleri


Aşağıdaki örnekler, PHP denetim yapılarının gerçek senaryolarda nasıl kullanılabileceğini göstermektedir:


Örnek 1: Notlandırma Sistemi (if-else if-else)


= 90) {
    echo "Harf Notu: AA
"; } elseif ($not >= 80) { echo "Harf Notu: BA
"; } elseif ($not >= 70) { echo "Harf Notu: BB
"; } elseif ($not >= 60) { echo "Harf Notu: CB
"; } else { echo "Harf Notu: FF
"; } ?>

Örnek 2: Haftanın Günü Kontrolü (switch)


";
        break;
    case "Cumartesi":
    case "Pazar":
        echo "Bugün hafta sonu.
"; break; default: echo "Geçersiz gün adı.
"; break; } ?>

Örnek 3: Sayı Sayma (for Döngüsü)


";
for ($i = 1; $i <= 5; $i++) {
    echo $i . "
"; } ?>

Örnek 4: Koşul Doğru Olduğu Sürece Çalışma (while Döngüsü)


";
$sayac = 0;
while ($sayac < 4) {
    echo $sayac . "
"; $sayac++; } ?>

Örnek 5: Dizi Elemanlarını Listeleme (foreach Döngüsü)


";
foreach ($meyveler as $meyve) {
    echo "- " . $meyve . "
"; } $kullanici = [ "ad" => "Ahmet", "soyad" => "Yılmaz", "yas" => 30 ]; echo "
Kullanıcı Bilgileri:
"; foreach ($kullanici as $anahtar => $deger) { echo $anahtar . ": " . $deger . "
"; } ?>

Örnek 6: Döngü Kontrol Anahtar Kelimeleri (break ve continue)


";
for ($i = 1; $i <= 10; $i++) {
    if ($i == 3) {
        // 3'ü atla
        continue;
    }
    if ($i == 8) {
        // 8'e gelince döngüyü sonlandır
        break;
    }
    echo $i . "
"; } // Çıktı: 1, 2, 4, 5, 6, 7 ?>

Önemli Notlar


  • break Kullanımı: switch yapısında her case bloğunun sonunda break kullanmak önemlidir. Aksi takdirde, eşleşen case'den sonraki case'ler de koşulsuz olarak çalışmaya devam eder (fall-through davranışı).

  • Sonsuz Döngülerden Kaçınma: while ve for döngülerinde, koşulun bir noktada yanlış olmasını sağlayacak bir mekanizma (örneğin, bir sayacın artırılması/azaltılması) bulunduğundan emin olun. Aksi takdirde, programınız sonsuz bir döngüye girer ve kaynakları tüketir.

  • Üçlü Operatör (Ternary Operator): Basit if-else ifadeleri için PHP'nin üçlü operatörü (koşul ? doğru_ise_değer : yanlış_ise_değer) kullanılabilir. Bu, kodu daha kısa ve okunabilir hale getirebilir.

  • Doğru Yapıyı Seçmek: Hangi denetim yapısının kullanılacağına karar verirken, ihtiyacınız olan işlevselliği göz önünde bulundurun. Örneğin, belirli sayıda tekrar için for, koşul doğru olduğu sürece tekrar için while, dizi veya nesne yinelemesi için foreach daha uygundur.

  • Kod Girintileme: Denetim yapılarının içindeki kod bloklarını düzenli bir şekilde girintilemek, kodunuzun okunabilirliğini ve anlaşılırlığını önemli ölçüde artırır.

10
0
CSS Dilinde CSS Backgrounds Kullanımı

CSS (Basamaklı Stil Sayfaları), web sayfalarının görsel sunumunu kontrol eden temel bir dildir. Bir HTML öğesinin arka planını tanımlamak, genel kullanıcı deneyimini ve estetiği büyük ölçüde etkileyen kritik bir tasarım öğesidir. Bu kılavuz, CSS'in arka plan özelliklerinin kapsamlı kullanımını, sözdizimini, detaylı açıklamalarını ve pratik örneklerini adım adım sunarak, web geliştiricilerinin bu güçlü aracı etkili bir şekilde kullanmalarını sağlamayı amaçlamaktadır.


Temel Sözdizimi


CSS arka plan özellikleri, bireysel olarak veya birleşik bir background kısaltma özelliği aracılığıyla tanımlanabilir. Kısaltma özelliği, birden fazla arka plan özelliğini tek bir bildirimde birleştirerek kodun daha okunabilir ve yönetilebilir olmasını sağlar.



.element {
    background:      /   ;
}

Detaylı Açıklama


background kısaltma özelliği, aşağıdaki alt özelliklerin bir kombinasyonunu alabilir:


  • background-color: Bir öğenin arka plan rengini ayarlar. Geçerli değerler arasında renk anahtar kelimeleri (red), onaltılık kodlar (#FF0000), RGB/RGBA (rgb(255,0,0)) veya HSL/HSLA (hsl(0, 100%, 50%)) bulunur.


  • background-image: Bir öğenin arka plan görselini ayarlar. Genellikle url() fonksiyonu ile bir görselin yolunu belirtir veya linear-gradient(), radial-gradient() gibi CSS gradyan fonksiyonlarını kullanır.


  • background-repeat: Arka plan görselinin nasıl tekrar edeceğini belirler. Yaygın değerler repeat (varsayılan), repeat-x, repeat-y, no-repeat, space ve round'dur.


  • background-position: Arka plan görselinin başlangıç konumunu ayarlar. Anahtar kelimeler (top, center, bottom, left, right), yüzdeler (50% 50%) veya uzunluk birimleri (10px 20px) ile belirtilebilir.


  • background-size: Arka plan görselinin boyutunu ayarlar. Anahtar kelimeler (auto, cover, contain), yüzdeler veya uzunluk birimleri ile belirtilir. background-position özelliğinden sonra bir eğik çizgi (/) ile ayrılır.


  • background-attachment: Arka plan görselinin belge kaydırıldığında nasıl davranacağını belirler. scroll (varsayılan, öğe ile birlikte kayar), fixed (pencereye sabit kalır) ve local (öğe içeriği ile birlikte kayar) değerlerini alır.


  • background-origin: Arka plan görselinin konumlandırma alanını belirler. padding-box (varsayılan), border-box ve content-box değerlerini alır. Genellikle background-position ve background-repeat ile etkileşime girer.


  • background-clip: Arka planın (rengi veya görseli) nerede kırpılacağını belirler. border-box (varsayılan), padding-box, content-box ve text değerlerini alır. text değeri, arka planı metnin içine kırparak ilgi çekici görsel efektler oluşturabilir.


Pratik Kullanım Örnekleri


Aşağıdaki örnekler, farklı arka plan özelliklerinin nasıl kullanılabileceğini göstermektedir.


Örnek 1: Basit Arka Plan Rengi ve Görseli


Bir öğeye düz bir arka plan rengi ve tekrarlamayan bir görsel atama.



.container-1 {
    background-color: #f0f0f0;
    background-image: url('images/pattern.png');
    background-repeat: no-repeat;
    background-position: center center;
    padding: 20px;
    border: 1px solid #ccc;
    height: 150px;
}

Örnek 2: Kısaltma Özelliği ve Görsel Boyutlandırma


background kısaltma özelliğini kullanarak bir görseli tüm alanı kaplayacak şekilde ayarlama.



.container-2 {
    background: url('images/hero.jpg') no-repeat center center / cover;
    height: 300px;
    color: white;
    text-align: center;
    display: flex;
    align-items: center;
    justify-content: center;
}

Örnek 3: Gradyan Arka Plan


CSS linear-gradient() fonksiyonunu kullanarak bir gradyan arka plan oluşturma.



.container-3 {
    background: linear-gradient(to right, #4CAF50, #8BC34A);
    height: 100px;
    padding: 15px;
    color: white;
    text-align: center;
}

Örnek 4: Çoklu Arka Planlar


Birden fazla arka plan görselini üst üste kullanma.



.container-4 {
    background: 
        url('images/overlay.png') no-repeat top left, /* En üstteki görsel */
        url('images/background-texture.jpg') repeat; /* Alttaki görsel */
    background-size: 50% auto, auto;
    height: 250px;
    padding: 20px;
    color: #333;
}

Örnek 5: Sabit Arka Plan (Paralaks Etkisi)


background-attachment: fixed; kullanarak kaydırmada sabit kalan bir arka plan oluşturma.



.container-5 {
    background-image: url('images/parallax.jpg');
    background-attachment: fixed;
    background-position: center;
    background-repeat: no-repeat;
    background-size: cover;
    height: 400px;
    display: flex;
    align-items: center;
    justify-content: center;
    color: white;
    font-size: 2em;
    text-shadow: 2px 2px 4px rgba(0,0,0,0.5);
}

Önemli Notlar


  • Kısaltma Sırası: background kısaltma özelliği kullanılırken, özelliklerin sırası genellikle esnektir. Ancak, background-position ve background-size birlikte kullanıldığında, position önce gelir ve / ile size'dan ayrılır (örn: center / cover).


  • Çoklu Arka Planlar: Birden fazla background-image kullanırken, ilk belirtilen görsel en üstte, son belirtilen görsel ise en altta katmanlanır. Bu sıralamayı tasarıma göre ayarlamak önemlidir.


  • Performans: Büyük boyutlu veya çok sayıda arka plan görseli kullanmak sayfa yükleme sürelerini olumsuz etkileyebilir. Görselleri optimize etmek (sıkıştırma, doğru format kullanma) her zaman önerilir.


  • Erişilebilirlik: Arka plan görselleri veya renkleri üzerine metin yerleştirirken, yeterli kontrast olduğundan emin olun. Metnin okunabilirliğini sağlamak için color özelliği ile metin rengini doğru ayarlamak kritik öneme sahiptir.


  • background-clip: text: Bu özellik, arka planı yalnızca metnin kapladığı alana kırparak metnin içini bir görsel veya gradyanla doldurmanızı sağlar. Genellikle -webkit-background-clip: text; ve -webkit-text-fill-color: transparent; ile birlikte kullanılır.


15
0
JavaScript Dilinde JS Numbers Kullanımı

JavaScript, web geliştirmenin temelini oluşturan dinamik bir programlama dilidir. Bu dilin en temel ve sıkça kullanılan veri tiplerinden biri de sayılardır (Numbers). JavaScript'teki sayılar, hem tam sayıları (integer) hem de ondalıklı sayıları (floating-point) temsil edebilir ve esnek yapısıyla matematiksel işlemler için güçlü bir temel sunar.


Sözdizimi


JavaScript'te sayıları tanımlamak son derece basittir. Değişkenlere doğrudan sayısal değerler atayarak veya Number objesini kullanarak sayıları oluşturabilirsiniz.


const tamSayi = 42;
const ondalikliSayi = 3.14;
const negatifSayi = -5;
const bilimselSayi = 1.23e5; // 123000
const hexadecimalSayi = 0xFF; // 255
const octalSayi = 0o377; // 255 (modern JS'te 0o öneki ile)
const binarySayi = 0b11111111; // 255
const numberObjesi = new Number(100); // Nesne olarak sayı oluşturma (nadiren kullanılır)

Yukarıdaki örnekler, JavaScript'te sayıların nasıl farklı şekillerde tanımlanabileceğini göstermektedir. Çoğu durumda, doğrudan sayısal değer ataması tercih edilir.


JavaScript'teki sayılar, 64-bit çift duyarlıklı kayan nokta sayıları (double-precision floating-point numbers) olarak IEEE 754 standardına göre saklanır. Bu, hem tam sayıları hem de ondalıklı sayıları temsil edebildikleri anlamına gelir. Belirli sınırlar dahilinde, tam sayı değerleri de bu kayan nokta formatında hassasiyet kaybı olmadan saklanabilir.


Sayılar, decimal (onluk), hexadecimal (onaltılık, 0x öneki), octal (sekizlik, 0o öneki) ve binary (ikilik, 0b öneki) formatlarında ifade edilebilir. Ayrıca, çok büyük veya çok küçük sayıları bilimsel gösterim (örneğin, 1.23e-5) kullanarak da tanımlamak mümkündür.


JavaScript'in sayıları ayrıca bazı özel değerlere sahiptir: NaN (Not-a-Number), geçersiz veya tanımsız matematiksel işlemlerin sonucunu temsil eder. Infinity ve -Infinity ise sıfıra bölme veya sayısal limitlerin aşılması gibi durumlarda ortaya çıkan sonsuz pozitif ve negatif değerlerdir.


Pratik Kullanım Örnekleri


Sayı tanımlamaları ve aritmetik işlemler, JavaScript'te sıkça karşılaşılan senaryolardır.

// Örnek 1: Temel Sayı Tanımlamaları ve İşlemler
const sayi1 = 10;
const sayi2 = 5;

console.log(sayi1 + sayi2); // Çıktı: 15
console.log(sayi1 - sayi2); // Çıktı: 5
console.log(sayi1 * sayi2); // Çıktı: 50
console.log(sayi1 / sayi2); // Çıktı: 2
console.log(sayi1 % sayi2); // Çıktı: 0 (Modül operatörü)

Kayan noktalı sayılarla çalışırken hassasiyetin önemli olduğu durumlar olabilir.

// Örnek 2: Kayan Noktalı Sayılar ve Hassasiyet
const fiyat1 = 0.1;
const fiyat2 = 0.2;

console.log(fiyat1 + fiyat2); // Çıktı: 0.30000000000000004 (Kayan nokta hassasiyeti)

// Hassasiyet sorununu aşmak için bir yöntem (örneğin, tam sayılarla çalışıp sonra bölme)
console.log((fiyat1 * 10 + fiyat2 * 10) / 10); // Çıktı: 0.3

Özel sayı değerleri olan NaN ve Infinity, belirli durumlarda matematiksel işlemlerin sonucunu belirtmek için kullanılır.

// Örnek 3: Özel Sayı Değerleri (NaN, Infinity)
console.log(0 / 0); // Çıktı: NaN (Tanımsız işlem)
console.log(10 / 0); // Çıktı: Infinity (Pozitif sonsuz)
console.log(-10 / 0); // Çıktı: -Infinity (Negatif sonsuz)

console.log(isNaN(0 / 0)); // Çıktı: true (Bir değerin NaN olup olmadığını kontrol eder)
console.log(isFinite(10 / 0)); // Çıktı: false (Bir değerin sonlu olup olmadığını kontrol eder)

Farklı sayı tabanlarında değer tanımlama ve bilimsel gösterim, özel durumlar için kullanışlıdır.

// Örnek 4: Sayı Tabanları ve Bilimsel Gösterim
const hexValue = 0xA; // Onaltılık 10
const binValue = 0b1010; // İkilik 10
const sciValue = 2.5e3; // 2.5 * 10^3 = 2500

console.log(hexValue); // Çıktı: 10
console.log(binValue); // Çıktı: 10
console.log(sciValue); // Çıktı: 2500

Önemli Notlar


  • JavaScript'teki tüm sayılar 64-bit kayan nokta (double-precision floating-point) formatında saklanır. Bu, tam sayılar için bile geçerlidir ve belirli büyük tam sayılarda hassasiyet kaybına yol açabilir (Number.MAX_SAFE_INTEGER ve Number.MIN_SAFE_INTEGER dışındaki değerler için).

  • Kayan nokta aritmetiği nedeniyle, bazı ondalıklı sayı işlemleri beklenen kesin sonucu vermeyebilir (örneğin, 0.1 + 0.2). Finansal hesaplamalar gibi hassasiyet gerektiren durumlarda bu durum göz önünde bulundurulmalıdır.

  • NaN (Not-a-Number), kendisiyle bile eşit değildir (NaN === NaN ifadesi false döner). Bir değerin NaN olup olmadığını kontrol etmek için Number.isNaN() veya global isNaN() fonksiyonlarını kullanın.

  • BigInt veri tipi, JavaScript'in standart Number tipinin ötesindeki çok büyük tam sayıları güvenli bir şekilde temsil etmek için kullanılır. Eğer Number.MAX_SAFE_INTEGER'dan büyük tam sayılarla çalışmanız gerekiyorsa BigInt düşünülmelidir.

  • Sayıları string'e dönüştürmek için String() fonksiyonu, .toString() metodu veya şablon değişmezleri (template literals) kullanılabilir. String'leri sayıya dönüştürmek için ise Number(), parseInt() veya parseFloat() fonksiyonları mevcuttur.

8
0
SQL Dilinde `AND` Operatörünün Kullanımı

SQL (Yapılandırılmış Sorgu Dili), veritabanlarından veri almak ve manipüle etmek için kullanılan standart dildir. Veri sorgularken, belirli kriterlere uyan kayıtları filtrelemek sıkça karşılaşılan bir gereksinimdir. Bu filtreleme işlemlerinde, birden fazla koşulu aynı anda değerlendirmek için mantıksal operatörler kullanılır. AND operatörü, bu mantıksal operatörlerden biridir ve WHERE cümleciği içinde iki veya daha fazla koşulun tümünün doğru olması durumunda kayıtları döndürmek için elzemdir. Bu makalede, SQL AND operatörünün detaylı kullanımını, sözdizimini ve pratik örneklerini inceleyeceğiz.


Sözdizimi


AND operatörünün temel sözdizimi, bir SELECT ifadesi içindeki WHERE cümleciğinde aşağıdaki gibi yapılandırılır:


SELECT kolon1, kolon2, ...
FROM tablo_adi
WHERE kosul1 AND kosul2 AND kosul3 ...;

Detaylı Açıklama


SELECT kolon1, kolon2, ...:
Bu kısım, sorgu sonucunda görmek istediğiniz sütunları belirtir. Tüm sütunları seçmek için * karakterini kullanabilirsiniz.


FROM tablo_adi:
Veri çekmek istediğiniz tabloyu belirtir.


WHERE kosul1 AND kosul2 AND kosul3 ...:
Bu kısım, AND operatörünün kalbidir. WHERE cümleciği, belirtilen koşulların doğru olduğu satırları filtreler. AND operatörü, kendisinden önce ve sonra gelen koşulların (kosul1, kosul2, kosul3 vb.) tümünün aynı anda doğru (TRUE) olması durumunda o satırı sonuç kümesine dahil eder. Eğer koşullardan herhangi biri yanlış (FALSE) ise, o satır sonuç kümesine dahil edilmez. Birden fazla AND operatörü kullanarak istediğiniz kadar koşulu birleştirebilirsiniz. Her kosul, karşılaştırma operatörleri (=, <, >, <=, >=, <> veya !=) veya diğer mantıksal operatörler (LIKE, IN, BETWEEN vb.) ile oluşturulabilir.


Pratik Kullanım Örnekleri


Aşağıdaki örnekler, bir Personel tablosu üzerinden AND operatörünün farklı senaryolarda nasıl kullanıldığını göstermektedir. Personel tablosunun PersonelID, Ad, Soyad, Departman, Maas ve DogumTarihi sütunlarına sahip olduğunu varsayalım.


Örnek 1: İki Basit Koşulu Birleştirme


Departmanı 'Satış' olan ve maaşı 5000'den yüksek olan tüm personelin adını ve soyadını listeleyelim.


SELECT Ad, Soyad
FROM Personel
WHERE Departman = 'Satış' AND Maas > 5000;

Açıklama: Bu sorgu, Departman sütununun değeri 'Satış' olan VE Maas sütununun değeri 5000'den büyük olan satırları getirir. Her iki koşul da aynı anda sağlanmalıdır.


Örnek 2: Üç Koşulu Birleştirme


Departmanı 'Muhasebe' olan, maaşı 6000 ile 8000 arasında olan ve 1990 yılından sonra doğmuş personeli listeleyelim.


SELECT Ad, Soyad, Maas, DogumTarihi
FROM Personel
WHERE Departman = 'Muhasebe'
  AND Maas BETWEEN 6000 AND 8000
  AND DogumTarihi > '1990-01-01';

Açıklama: Burada üç koşul AND ile birleştirilmiştir: Departman 'Muhasebe' olacak, Maas 6000 ile 8000 (dahil) arasında olacak VE DogumTarihi 1990'ın ilk gününden sonra olacak. Tüm bu koşullar doğru olduğunda satır sonuç kümesine dahil edilir.


Örnek 3: `AND` ve `OR` Operatörlerini Birlikte Kullanma


Parantez kullanımı, mantıksal operatörlerin değerlendirme sırasını belirlemek için kritik öneme sahiptir. Departmanı 'İnsan Kaynakları' olan VE (maaşı 7000'den az VEYA 1985'ten önce doğmuş) personeli listeleyelim.


SELECT Ad, Soyad, Departman, Maas, DogumTarihi
FROM Personel
WHERE Departman = 'İnsan Kaynakları'
  AND (Maas < 7000 OR DogumTarihi < '1985-01-01');

Açıklama: Bu sorguda, parantezler içindeki OR koşulu önce değerlendirilir. Yani, departman 'İnsan Kaynakları' olacak VE (maaş 7000'den az olacak VEYA doğum tarihi 1985'ten önce olacak) koşulu sağlanacak. Parantezler olmasaydı, AND operatörü OR operatöründen daha yüksek önceliğe sahip olduğu için sorgu farklı bir sonuç verebilirdi.


Önemli Notlar


  • Mantıksal Öncelik: SQL'de mantıksal operatörlerin belirli bir öncelik sırası vardır. NOT en yüksek önceliğe sahipken, onu AND ve ardından OR takip eder. Bu, AND operatörlerinin OR operatörlerinden önce değerlendirileceği anlamına gelir. Karmaşık koşullarda beklenen sonucu almak için parantez () kullanmak her zaman iyi bir uygulamadır.

  • Performans: WHERE cümleciğindeki koşulların sırası, bazı veritabanı sistemlerinde sorgu performansını etkileyebilir. Genellikle, en kısıtlayıcı koşulu (en az sayıda satırı eleyecek koşulu) ilk sıraya koymak veya dizinli (indexlenmiş) sütunlar üzerindeki koşulları öne almak performansı artırabilir. Ancak modern veritabanı optimizatörleri bu tür durumları genellikle iyi yönetir.

  • Boş Değerler (NULL): NULL değerleri ile karşılaştırma yaparken dikkatli olun. NULL AND TRUE veya NULL AND FALSE ifadelerinin sonucu NULL olur. WHERE cümleciği yalnızca TRUE sonuçlarını döndürdüğü için, NULL sonuçlar elenir. NULL değerleri kontrol etmek için IS NULL veya IS NOT NULL operatörlerini kullanmalısınız.

  • Okunabilirlik: Birden fazla AND koşulu kullanırken, sorgunuzu satırlara ayırarak ve girinti kullanarak daha okunaklı hale getirin.

13
0
Python Dilinde Konsola Çıktı Vermek: `print()` Fonksiyonunun Kapsamlı Rehberi

Python programlama dilinde, geliştiricilerin kodlarının ilerleyişini izlemeleri, kullanıcıya bilgi sağlamaları veya hata ayıklama süreçlerini yönetmeleri için çıktılar üretmek temel bir gerekliliktir. Bu çıktılar genellikle standart çıktı akımına, yani konsola yönlendirilir. Python'ın yerleşik print() fonksiyonu, bu tür çıktı işlemlerini kolay ve etkili bir şekilde gerçekleştirmek için tasarlanmıştır. Bu makale, print() fonksiyonunun detaylı kullanımını, sözdizimini ve çeşitli senaryolardaki pratik uygulamalarını kapsamlı bir şekilde ele alacaktır.


Sözdizimi


Python'da print() fonksiyonunun genel sözdizimi aşağıdaki gibidir:


print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)

Bu sözdizimi, fonksiyonun alabileceği tüm parametreleri ve varsayılan değerlerini göstermektedir. Her bir parametrenin özel bir amacı vardır ve çıktının nasıl biçimlendirileceğini veya nereye yönlendirileceğini kontrol etmek için kullanılabilir.


Detaylı Açıklama


  • *objects: Fonksiyona virgülle ayrılmış olarak geçirilen sıfır veya daha fazla nesneyi temsil eder. Bu nesneler sayısal değerler, dizeler (string), listeler veya diğer Python veri yapıları olabilir. print() fonksiyonu, bu nesnelerin her birini string'e dönüştürür ve belirlenen sıra ile çıktı verir.

  • sep=' ' (separator): Çıktı verilecek nesneler arasına yerleştirilecek ayırıcı dizeyi belirtir. Varsayılan olarak, nesneler arasında tek bir boşluk karakteri kullanılır. Bu parametre, nesneler arasına farklı bir karakter veya karakter dizisi eklemek için değiştirilebilir.

  • end='\n' (end): Çıktı tamamlandıktan sonra eklenecek dizeyi belirtir. Varsayılan olarak, çıktının sonuna bir yeni satır karakteri (\n) eklenir, bu da sonraki print() çağrısının çıktısının yeni bir satırdan başlamasına neden olur. Bu parametre, çıktının aynı satırda devam etmesini sağlamak veya farklı bir son karakter eklemek için kullanılabilir.

  • file=sys.stdout: Çıktının yazılacağı dosya benzeri nesneyi belirtir. Varsayılan değer sys.stdout'dur, bu da çıktının standart konsola gönderildiği anlamına gelir. Bu parametreyi değiştirerek çıktıyı bir metin dosyasına veya başka bir akışa yönlendirmek mümkündür.

  • flush=False: Bu parametre, tamponlanmış çıktının anında temizlenip temizlenmeyeceğini kontrol eder. Varsayılan olarak False'tur, bu da çıktının dahili bir tamponda biriktirildiği ve belirli aralıklarla veya tampon dolduğunda yazıldığı anlamına gelir. True olarak ayarlandığında, çıktı anında tampondan boşaltılır ve hedef cihaza (örneğin konsola) yazılır. Bu, özellikle gerçek zamanlı izleme veya belirli durumlarda çıktıların hemen görünmesi gerektiğinde faydalıdır.


Pratik Kullanım Örnekleri


Aşağıdaki örnekler, print() fonksiyonunun farklı senaryolarda nasıl kullanılabileceğini göstermektedir.


1. Temel Çıktı

print("Merhaba Dünya!")
print(123)
print(3.14)
print(True)

Çıktı:

Merhaba Dünya!
123
3.14
True

2. Birden Fazla Nesne ile Çıktı

ad = "Ayşe"
yas = 30
print("Ad:", ad, "Yaş:", yas)

Çıktı:

Ad: Ayşe Yaş: 30

3. sep Parametresi Kullanımı

print("elma", "armut", "kiraz", sep="-")
print("www", "softmush", "com", sep=".")

Çıktı:

elma-armut-kiraz
www.softmush.com

4. end Parametresi Kullanımı

print("Bu birinci satır.", end=" ")
print("Bu ise aynı satırda devam ediyor.")
print("Bu da yeni bir satır.")

Çıktı:

Bu birinci satır. Bu ise aynı satırda devam ediyor.
Bu da yeni bir satır.

5. Dosyaya Çıktı Yazma (file Parametresi)

Bu örnek için önce bir dosya nesnesi oluşturulması gerekir.


import sys

# Dosyayı yazma modunda aç
with open("log.txt", "w") as f:
    print("Bu metin dosyaya yazılacak.", file=f)
    print("Bu da ikinci satır.", file=f)

# Konsola yazma (varsayılan)
print("Bu metin konsola yazılacak.")

Çıktı (log.txt dosyasında):

Bu metin dosyaya yazılacak.
Bu da ikinci satır.

Çıktı (Konsolda):

Bu metin konsola yazılacak.

6. String Formatlama ile Çıktı

print() fonksiyonu genellikle f-string'ler (biçimlendirilmiş dize değişmezleri) veya str.format() metodu ile birlikte kullanılır, bu da çıktıların daha okunabilir ve düzenli olmasını sağlar.


isim = "Can"
yas = 25

# f-string kullanımı (Python 3.6+)
print(f"Merhaba, benim adım {isim} ve {yas} yaşındayım.")

# str.format() metodu kullanımı
print("Merhaba, benim adım {} ve {} yaşındayım.".format(isim, yas))

# Eski stil % formatlama
print("Merhaba, benim adım %s ve %d yaşındayım." % (isim, yas))

Çıktı:

Merhaba, benim adım Can ve 25 yaşındayım.
Merhaba, benim adım Can ve 25 yaşındayım.
Merhaba, benim adım Can ve 25 yaşındayım.

Önemli Notlar


  • Fonksiyon Olarak Kullanım: Python 3 ve sonraki sürümlerinde print, bir fonksiyondur ve parantezlerle çağrılmalıdır (örneğin print("...")). Python 2'de ise bir ifadeydi (statement) ve parantez kullanmak zorunlu değildi (örneğin print "...").

  • Hata Ayıklamada Önemi: print() fonksiyonu, bir programın farklı noktalarındaki değişken değerlerini veya program akışını gözlemlemek için hızlı ve etkili bir hata ayıklama aracıdır.

  • Performans Etkileri: Özellikle büyük döngüler içinde veya yüksek performans gerektiren uygulamalarda aşırı print() kullanımı programın performansını olumsuz etkileyebilir, çünkü her çıktı işlemi I/O (Giriş/Çıkış) maliyeti taşır.

  • sys.stdout ve sys.stderr: Standart çıktı (sys.stdout) genellikle normal program mesajları için kullanılırken, hata mesajları ve uyarılar için standart hata akımı (sys.stderr) kullanılması iyi bir pratiktir. print() fonksiyonunu file=sys.stderr ile kullanarak hata mesajlarını ayrı bir akıma yönlendirebilirsiniz.

  • flush=True Kullanımı: Ağ iletişimi, interaktif uygulamalar veya uzun süreli işlemler gibi durumlarda, çıktının anında görünmesi kritik olabilir. Bu tür senaryolarda flush=True parametresi, tampondaki verilerin hemen gönderilmesini sağlar.

8
0
JavaScript Dilinde Fonksiyon Kullanımı: Kapsamlı Bir Rehber

JavaScript, web uygulamalarının etkileşimli ve dinamik olmasını sağlayan temel bir programlama dilidir. Bu dilin en güçlü ve esnek yapılarından biri de fonksiyonlardır. Fonksiyonlar, belirli bir görevi yerine getiren yeniden kullanılabilir kod bloklarıdır. Bu yapılar, kodunuzu daha modüler, okunabilir ve bakımı kolay hale getirir. Bu makale, JavaScript fonksiyonlarının temel kullanımını, sözdizimini ve pratik uygulamalarını detaylı bir şekilde ele almaktadır.


Sözdizimi


JavaScript'te bir fonksiyon tanımlamanın çeşitli yolları vardır. En yaygın olanı, function anahtar kelimesini kullanarak bir fonksiyon bildirimi (function declaration) yapmaktır:


function fonksiyonAdi(parametre1, parametre2) {
    // Fonksiyonun çalıştıracağı kod bloğu
    // return deger; (İsteğe bağlı: bir değer döndürür)
}

Bu temel yapı, çoğu fonksiyonel ihtiyacınızı karşılayacaktır. Fonksiyonlar ayrıca bir değişkene atanan ifadeler (function expressions) veya modern JavaScript'in getirdiği ok fonksiyonları (arrow functions) olarak da tanımlanabilir.


Detaylı Açıklama


Yukarıdaki sözdiziminde yer alan her bir bileşen, fonksiyonun çalışma şeklini belirler:


  • function: Bu anahtar kelime, bir fonksiyon tanımladığınızı belirtir.

  • fonksiyonAdi: Fonksiyonunuzu tanımlayan benzersiz bir isimdir. Bu isim aracılığıyla fonksiyona çağrı yaparsınız. Fonksiyon isimleri genellikle camelCase formatında yazılır (örn: hesaplaToplam).

  • (parametre1, parametre2, ...): Parantezler içinde, fonksiyona dışarıdan gönderilebilecek giriş değerlerini temsil eden virgülle ayrılmış parametreler bulunur. Bu parametreler isteğe bağlıdır; bir fonksiyon hiç parametre almayabilir. Fonksiyon çağrıldığında gönderilen değerlere argümanlar denir.

  • { ... }: Küme parantezleri, fonksiyonun çalıştıracağı kod bloğunu içerir. Fonksiyon çağrıldığında bu blok içindeki tüm ifadeler sırayla yürütülür.

  • return deger;: return ifadesi, fonksiyonun çalışmasını durdurur ve belirtilen değeri fonksiyonun çağrıldığı yere geri döndürür. Eğer bir return ifadesi belirtilmezse veya boş bırakılırsa, fonksiyon varsayılan olarak undefined döndürür.


Pratik Kullanım Örnekleri


Fonksiyonların nasıl çalıştığını daha iyi anlamak için çeşitli kullanım senaryolarını inceleyelim:


Örnek 1: Parametresiz Basit Bir Fonksiyon

function selamVer() {
    console.log("Merhaba, JavaScript!");
}

// Fonksiyonu çağırma
selamVer(); // Konsola "Merhaba, JavaScript!" yazdırır

Bu örnekte, selamVer adında parametre almayan bir fonksiyon tanımlanmış ve çağrılmıştır. Fonksiyon çağrıldığında, içindeki console.log ifadesi çalışır.


Örnek 2: Parametre Alan ve Değer Döndüren Fonksiyon

function toplamaYap(sayi1, sayi2) {
    const toplam = sayi1 + sayi2;
    return toplam;
}

// Fonksiyonu argümanlarla çağırma ve değeri kullanma
let sonuc = toplamaYap(5, 3);
console.log("Toplam: " + sonuc); // Konsola "Toplam: 8" yazdırır

let baskaSonuc = toplamaYap(10, 20);
console.log("Başka Toplam: " + baskaSonuc); // Konsola "Başka Toplam: 30" yazdırır

toplamaYap fonksiyonu iki sayısal parametre alır, bu sayıları toplar ve sonucu return ifadesiyle geri döndürür. Döndürülen değer bir değişkene atanabilir veya doğrudan kullanılabilir.


Örnek 3: Fonksiyon İfadeleri (Function Expressions)

const carpmaYap = function(a, b) {
    return a * b;
};

// Fonksiyon ifadesini çağırma
let carpimSonucu = carpmaYap(4, 6);
console.log("Çarpım: " + carpimSonucu); // Konsola "Çarpım: 24" yazdırır

Bu örnekte, bir fonksiyon bir değişkene atanmıştır. Fonksiyon ifadeleri, özellikle bir fonksiyona başka bir argüman olarak geçirilmesi gereken durumlarda (callback fonksiyonları gibi) kullanışlıdır.


Örnek 4: Ok Fonksiyonları (Arrow Functions)

const kareAl = (sayi) => {
    return sayi * sayi;
};

// Tek parametreli ve tek satırlık fonksiyonlar için daha kısa yazım
const kareAlKisa = sayi => sayi * sayi;

// Ok fonksiyonlarını çağırma
console.log("5'in karesi: " + kareAl(5)); // Konsola "5'in karesi: 25" yazdırır
console.log("7'nin karesi (kısa): " + kareAlKisa(7)); // Konsola "7'nin karesi (kısa): 49" yazdırır

ES6 ile tanıtılan ok fonksiyonları, daha kısa ve daha okunaklı fonksiyon tanımlamaları sağlar. Özellikle tek ifadeli fonksiyonlar için return anahtar kelimesi ve küme parantezleri atlanabilir. Ok fonksiyonlarının this anahtar kelimesini ele alış biçimleri de geleneksel fonksiyonlardan farklıdır.


Önemli Notlar


  • Fonksiyon Bildirimlerinin Hoisting'i: Fonksiyon bildirimleri (function fonksiyonAdi() { ... } şeklinde tanımlananlar) JavaScript'te hoisting özelliğine sahiptir. Bu, fonksiyonun kod içinde tanımlandığı yerden önce çağrılabileceği anlamına gelir. Ancak, fonksiyon ifadeleri ve ok fonksiyonları hoisting'e tabi değildir; yalnızca tanımlandıkları yerden sonra çağrılabilirler.

  • Parametre Sayısı ve Argümanlar: Bir fonksiyon tanımlarken belirtilen parametre sayısı ile çağrılırken gönderilen argüman sayısı eşleşmek zorunda değildir. Fazla argümanlar göz ardı edilirken, eksik argümanlar undefined değeri alır. Modern JavaScript'te varsayılan parametre değerleri tanımlayarak bu durumu yönetmek mümkündür.

  • return İfadesinin Önemi: return ifadesi, fonksiyonun bir değer üretmesini ve bu değeri dış dünyaya aktarmasını sağlar. Bir fonksiyonun içinde return ifadesine ulaşıldığında, fonksiyonun yürütülmesi anında durur ve kontrolü çağrı yapan koda geri verir.

  • Kapsam (Scope): Fonksiyonlar kendi içlerinde ayrı bir yerel kapsam (local scope) oluşturur. Bir fonksiyon içinde tanımlanan değişkenler (let veya const ile), yalnızca o fonksiyon içinde erişilebilir. Bu, değişken çakışmalarını önlemeye yardımcı olur ve kodun izolasyonunu artırır.

  • Yan Etkilerden Kaçının: Özellikle büyük uygulamalarda, fonksiyonların mümkün olduğunca saf (pure) olmasına özen gösterin. Saf fonksiyonlar, aynı argümanlarla her zaman aynı çıktıyı verir ve dış dünyayı (global değişkenler, DOM vb.) değiştirmez. Bu, kodun test edilebilirliğini ve öngörülebilirliğini artırır.

8
0