Yazar
Hasan |
Dün, 06:43 PM
Merhaba dostlar,
Genelde bilgisayar başında biraz vakit geçirmiş ve ardından web alemine dalmış bu da yetmemiş web sitesi sahibi olup Elon Musk, Mark Zuckerberg'in ayağını kaydırıp tahtına oturmak gibi hayaller kurulmuş akabinde Vira Bismillah diye web sitesi açan arkadaşlar aramızda vardır. Tabi bu tabirim çok uçuk herkesi kapsamıyor, Ömer eğer sen takip ediyorsan siteyi ve bu konuyu okuyorsan senden bahsediyorum 
Şaka bir yana genelde web sitesi sahibi olmak web aleminde takılan büyük çoğunluğun hayalidir. Ancak kimse nereden ve nasıl başlayacağını bilmez. Hemen Google/Yandex/Bing üzerinden iki üç araştırma yapar. Genelde karşısına ya PHP ya da HTML çıkar bunları öğrenmek ister, 3-5 ders sonra sıkılır ve o dersler orada kalır. Böyle olması ne kodların anlam ne de algoritmanın mantığını bilmemekten olur. Bu sebeple bilgisayarın dilinden nasıl konuşulur ve onun mantığında nasıl düşünülür bilmek gerekir. İşte burada karşımıza "Algoritma ve Programlamaya Giriş" denilen bir ders çıkar.
Bilgisayar Programcılığı, Web Tasarımı ve Kodlama, Matematik ve Bilgisayar, Bilgisayar Mühendisliği, Yazılım Mühendisliği okuyan arkadaşların önemle takip etmesi ve can kulağı ile dinlemesi gereken derstir. Sizler içinse kısa ve öz olarak anlatmayı planladığım ders. Dostlar programlamaya başlamadan önce neler bilmeliyiz, ne yapacağız, nasıl yapacağız, hangi aşamalarda yapacağız, olmazsa hangi yolları deneyeceğiz, herhangi bir problem olmadan hangi çıktıları alacağız; işte bu soruları cevaplayarak programcılığa giriş yapacağız.
Algoritma ve programlamaya giriş dersleri, problemleri mantıksal adımlarla çözme ve bu adımları bilgisayarın anlayabileceği bir dilde ifade etme mantığına dayanır. Bu dersler, teknoloji çağında temel bir yetkinlik olan computational thinking (bilgisayarca düşünme) becerisinin kazanılmasının ilk adımıdır.
Bu derslerin temel mantığı şudur:
- Problemi anlama [siteye gelen üyeye merhaba yazan bir şerit oluşturmak],
- çözüm adımlarını belirleme (Algoritma) [web sayfası açılacak, üye paneline kullanıcılar isim ve şifrelerini yazacak, enter tuşuna basıldığında üye girişi gerçekleşecek ve üye en üstte hoşgeldin sitemize yazısını görecek],
- adımları koda dökmek (programlama) [bir önceki maddede yer alan adımları sırasıyla php ve html dillerinde kodlanacak],
- test etme ve hata ayıklama (bug)[bu kodlarda hata varsa adım adım incelenecek ve hatalar giderilecek]
Peki bu derslerin bize faydası ne olacak (hedeflediğim ya da benim gibi olanların hedeflediği)- Problem çözme yetisi kazandırmak
- Mantıksal düşünme(neden-sonuç ilişkilerini anlama)
- Analitik düşünme (problemleri daha küçük ve yönetilebilir parçalara ayırarak çözüm üretmek)
- Programlama Becerisi Temeli (bir programlama dilini öğrenmek ve kullanmak)
Bu nedenle bu forumda sizlere yararladığım kaynaklardan özetle bir ders anlatısı sunmaktır. Umarım faydalı olurum. Bu arada anlarımlar ders ders burada listelenecektir. Şimdiden iyi çalışmalar...
Bu dersler, bilgisayar bilimlerinin temelini oluşturur ve
problem çözme ve bilgisayarlara talimat verme becerileri kazandırmayı amaçlar.
Algoritma Kavramı ve Temel Yapıları
Algoritma Nedir?- Bir problemi çözmek veya belirli bir görevi yerine getirmek için adım adım talimatlar dizisidir.
- Açık, kesin ve sonlu olmalıdır.
- Günlük hayattan algoritma örnekleri (yemek tarifi, montaj kılavuzu vb.).
Algoritma Geliştirme Süreci:- Problemi anlama ve tanımlama.
- Çözüm için olası adımları belirleme.
- Adımları mantıksal bir sıraya koyma.
- Algoritmayı farklı senaryolarla test etme.
Algoritma Gösterim Şekilleri:- Sözde Kod (Pseudocode): Günlük dile yakın, programlama dilinden bağımsız ifade biçimi.
- Akış Şeması (Flowchart): Algoritmanın adımlarını ve akışını görsel olarak gösteren diyagramlar.
Temel Algoritma Yapıları:- Sıralı Yapı (Sequential Structure): Adımlar sırayla tek tek kontrol edilir.
- Karar Yapısı (Decision Structure / Koşullu İfadeler): Belirli bir koşula göre farklı adımların kontrol edilmesini sağlar (örneğin, if, else).
- Tekrar Yapısı (Repetition Structure / Döngüler): Belirli bir kod bloğunun birden çok kez kontrol edilmesini sağlar (örneğin, for, while).
Programlama Kavramlarına Giriş
Programlama Dili Nedir?
Bilgisayarlara ne yapmaları gerektiğini söylemek için kullanılan biçimsel dillerdir. Python, Java, C++, JavaScript vb.
Derleyici (Compiler) ve Yorumlayıcı (Interpreter)
Derleyici (Compiler) ve yorumlayıcı (Interpreter), yüksek seviyeli programlama dillerinde yazılmış kaynak kodunu bilgisayarın anlayabileceği makine koduna veya ara bir koda çeviren yazılımlardır. Ancak bu çevirme ve çalıştırma süreçleri birbirinden farklıdır.
Derleyici (Compiler)
1. Nasıl Çalışır?
- Tüm Kaynak Kodu Okur: Derleyici, programcının yazdığı tüm kaynak kodunu tek bir seferde okur.
- Analiz Eder ve Hataları Kontrol Eder: Kodun sözdizimini (dilin kuralları) ve semantiğini (anlamını) analiz eder. Bu aşamada, yazım hataları, dilin yanlış kullanımı gibi hataları tespit eder.
- Hedef Kod Oluşturur: Eğer herhangi bir hata bulunmazsa, derleyici kaynak kodu hedef bir koda (genellikle makine kodu veya assembly kodu gibi düşük seviyeli bir dil) çevirir. Bu hedef kod, belirli bir donanım mimarisine (örneğin, x86, ARM) özgüdür. Bazı durumlarda, hedef kod doğrudan makine kodu yerine, sanal bir makine (VM) üzerinde çalıştırılmak üzere tasarlanmış bir ara kod (bytecode gibi) olabilir.
- Çalıştırma: Derleme işlemi tamamlandıktan sonra, elde edilen hedef kod doğrudan işletim sistemi tarafından çalıştırılabilir. Bu çalıştırma, derleme işleminden tamamen ayrı bir aşamadır.
2. Özellikleri:- Tek Bir Çevirme: Kaynak kod sadece bir kez derlenir.
- Hızlı Çalışma: Derlenmiş programlar genellikle daha hızlı çalışır çünkü çevirme işlemi önceden yapılmıştır. Çalıştırma sırasında ek bir çeviriye ihtiyaç duyulmaz.
- Platform Bağımlılığı (Genellikle): Doğrudan makine koduna derlenen programlar, derlendikleri işlemci mimarisine ve işletim sistemine bağımlıdır. Farklı bir platformda çalıştırmak için yeniden derlenmeleri gerekir. Ancak bytecode üreten derleyiciler (örneğin Java), sanal makine sayesinde platform bağımsızlığı sağlayabilir.
- Hata Ayıklama: Hatalar genellikle derleme aşamasında toplu olarak bildirilir. Bu, programcıların tüm hataları görmesini ve düzeltmesini sağlar. Ancak, çalışma zamanı hataları (program çalışırken ortaya çıkan hatalar) yine de oluşabilir.
- Örnek Diller: C, C++, Go, Swift, Rust (genellikle doğrudan makine koduna derlenir). Java ve C# (önce bytecode'a derlenir, sonra sanal makine tarafından çalıştırılır).
Yorumlayıcı (Interpreter)
1. Nasıl Çalışır?
- Kaynak Kodu Satır Satır Okur: Yorumlayıcı, programın kaynak kodunu satır satır (veya bazen bloklar halinde) okur.
- Her Satırı Çevirir ve Anında Çalıştırır: Okuduğu her bir kodu satırını makine koduna veya ara bir koda çevirir ve hemen ardından bu kodu çalıştırır.
- Çalıştırma Anında Çeviri: Çevirme ve çalıştırma işlemi eş zamanlı olarak gerçekleşir. Bir sonraki satıra geçmeden önce mevcut satırın işlemi tamamlanır.
2. Özellikleri:- Satır Satır Çevirme ve Çalıştırma: Kod her çalıştırıldığında yeniden yorumlanır.
- Yavaş Çalışma (Genellikle): Yorumlanan programlar genellikle derlenen programlara göre daha yavaş çalışır çünkü her satırın her çalıştırmada yeniden çevrilmesi gerekir.
- Platform Bağımsızlığı (Daha Kolay): Yorumlayıcılar, yazıldıkları platformda çalıştığı sürece, yorumlanan kodun farklı işletim sistemlerinde veya donanımlarda çalışması daha kolaydır. Kaynak kodun kendisi genellikle platformdan bağımsızdır.
- Anında Geri Bildirim ve Hata Ayıklama: Yorumlayıcılar, bir hatayla karşılaştıklarında genellikle o noktada durur ve hatayı bildirir. Bu, geliştirme sırasında hataları daha hızlı bulmaya yardımcı olabilir. Ancak, kodun ilerleyen kısımlarındaki hatalar ancak o kısımlara gelindiğinde fark edilir.
İlk Programımızı Yazalım
Temel prensiplerin anlaşıldığını düşünüyorum. Şimdi ilk programımızı yazmaya başlayalım (php programlama dili üzerinden örnekler verilecektir.)
PHP'ye Giriş- PHP (Hypertext Preprocessor), özellikle web geliştirme için tasarlanmış, sunucu taraflı bir betik dilidir. HTML içine gömülebilir.
- PHP kodları sunucuda çalışır ve sonuç olarak tarayıcıya HTML çıktısı gönderir.
- PHP'yi çalıştırmak için bir web sunucusuna (örneğin Apache veya Nginx) ve PHP yorumlayıcısına ihtiyacınız vardır (genellikle XAMPP, MAMP veya Docker gibi geliştirme ortamları bu araçları içerir).
"Merhaba Dünya!" çıktısı alacağımız programı yazalım:
İlk basit PHP kodunu yazma ve çalıştırma. Bir
.php uzantılı dosya oluşturun (örneğin
merhaba.php) ve içine aşağıdaki kodu yazın:
[Burada HTML kodları direkt verilecektir. HTML bilmiyorsanız
linkle tıklayarak verdiğim derslere ulaşabilirsiniz

]
Kod:
<!DOCTYPE html>
<html>
<head>
<title>Merhaba Dünya!</title>
</head>
<body>
<?php
echo "Merhaba Dünya!";
?>
</body>
</html>
Bu dosyayı web sunucunuzun kök dizinine (örneğin XAMPP'te htdocs klasörü) kaydedin ve tarayıcınızda
http://localhost/merhaba.php adresini açın. Ekranda "Merhaba Dünya!" çıktısını görmelisiniz.
- <?php ve ?> etiketleri arasına PHP kodu yazılır.
- echo ifadesi, ekrana çıktı vermek için kullanılır.
Değişken Tanımlama ve Kullanma
PHP'de değişkenler
$ işareti ile başlar. Veri tipini belirtmeye gerek yoktur (dinamik tipli bir dildir yani atamayı kendisi yapacak).
Kod:
<?php
$isim = "Ayşe";
$yas = 30;
$boy = 1.75;
echo "Merhaba, benim adım " . $isim . ".";
echo "<br>"; // HTML'de satır atlama
echo "Yaşım: " . $yas;
echo "<br>"; // HTML'de satır atlama
echo "Boyum: " . $boy;
?>
Temel Giriş/Çıkış İşlemleri
PHP genellikle web formları aracılığıyla kullanıcıdan veri alır (
$_GET veya
$_POST süper küresel değişkenleri ile). Çıktı vermek için
echo veya
print ifadeleri kullanılır.
Kod:
<!DOCTYPE html>
<html>
<head>
<title>Kullanıcı Girişi</title>
</head>
<body>
<form method="GET">
Adınız: <input type="text" name="ad"><br><br>
<input type="submit" value="Gönder">
</form>
<?php
if (isset($_GET["ad"])) {
$kullaniciAdi = $_GET["ad"];
echo "Merhaba, " . $kullaniciAdi . "!";
}
?>
</body>
</html>
- Bu örnekte, bir form aracılığıyla kullanıcıdan adını alıyoruz. Form gönderildiğinde, $_GET["ad"] ile alınan değeri bir değişkene atayıp ekrana yazdırıyoruz.
- isset() fonksiyonu, bir değişkenin tanımlı olup olmadığını kontrol eder.
Temel Operatörlerin Kullanımı
PHP'de aritmetik operatörler (+, -, *, /, %, **), karşılaştırma operatörleri (==, !=, >, <, >=, <=) ve atama operatörleri (=, +=, -= vb.) Python'daki gibidir.
Kod:
<?php
$sayi1 = 10;
$sayi2 = 5;
$toplam = $sayi1 + $sayi2;
$fark = $sayi1 - $sayi2;
$carpim = $sayi1 * $sayi2;
$bolum = $sayi1 / $sayi2;
$mod = $sayi1 % $sayi2;
$us = $sayi1 ** $sayi2; // PHP 5.6 ve üzeri
echo "Toplam: " . $toplam . "<br>";
echo "Fark: " . $fark . "<br>";
echo "Çarpım: " . $carpim . "<br>";
echo "Bölüm: " . $bolum . "<br>";
echo "Mod: " . $mod . "<br>";
echo "Üs: " . $us . "<br>";
?>
Karar Yapıları (Koşullu İfadeler)
PHP'de karar yapıları (koşullu ifadeler) bir kod bloğunun belirli bir koşulun doğru (true) veya yanlış (false) olmasına bağlı olarak çalıştırılmasını sağlayan temel programlama yapılarıdır. Bu yapılar sayesinde programlarınız dinamikleşir ve farklı durumlara göre farklı çıktılar verebilir.
if Yapısı:
En temel karar yapısıdır. Belirtilen koşul doğruysa,
if bloğu içindeki kod çalıştırılır.
Kod:
<?php
$yas = 25;
if ($yas >= 18) {
echo "Reşitsiniz.";
}
?>
[Yukarıdaki kod yapısı, yas değişkeni içindeki veriyi incelemekte. yas verisi 18'e eşit veya büyükse ekrana Reşitsiniz yazacak]
if...else Yapısı:
if koşulu yanlış olduğunda çalıştırılacak alternatif bir kod bloğu tanımlamanızı sağlar.
Kod:
<?php
$not = 65;
if ($not >= 70) {
echo "Geçtiniz.";
} else {
echo "Kaldınız.";
}
?>
[Yukarıdaki kod yapısı, not değişkeni içindeki veriyi incelemekte. not verisi 70'e eşit veya büyükse ekrana Geçtiniz, 69 ve aşağısı ise ekrana Kaldınız yazacak]
else:
if koşulu
false olduğunda,
else bloğu içindeki kod çalıştırılır.
if...elseif...else Yapısı:
Birden fazla koşulu kontrol etmek ve farklı koşullara göre farklı kod bloklarını çalıştırmak için kullanılır.
elseif (veya else if) ile istediğiniz kadar ek koşul belirtebilirsiniz.
Kod:
<?php
$ortalama = 55;
if ($ortalama >= 85) {
echo "Pekiyi";
} elseif ($ortalama >= 70) {
echo "İyi";
} elseif ($ortalama >= 50) {
echo "Orta";
} else {
echo "Zayıf";
}
?>
[Yukarıdaki kod yapısı, ortalama değişkeni içindeki veriyi incelemekte. ortalama verisi 85'e eşit veya büyükse ekrana Pekiyi, 70-84 aralığında ise İyi, ortalama verisi 50-69 aralığında ise Orta ve ortalama verisi 49 ve aşağısı ise ekrana Zayıf yazacak]
switch Yapısı:
Bir değişkenin değerini belirli sabit değerlerle karşılaştırmak ve buna göre farklı kod bloklarını çalıştırmak için kullanılır. Özellikle çok sayıda olası duruma sahip olduğunuzda
if...elseif zincirine göre daha okunabilir olabilir.
Kod:
<?php
$gun = "Pazartesi";
switch ($gun) {
case "Pazartesi":
echo "Haftanın ilk günü.";
break;
case "Salı":
case "Çarşamba":
echo "Hafta içi bir gün.";
break;
case "Cumartesi":
case "Pazar":
echo "Hafta sonu.";
break;
default:
echo "Geçersiz gün.";
}
?>
- switch (değişken): Hangi değişkenin değerine göre karar verileceğini belirtir.
- case değer: Değişkenin alabileceği olası sabit değerleri belirtir. Eğer değişkenin değeri bu case'deki değerle eşleşirse, bu case'in altındaki kod çalıştırılır.
- break;: Bir case bloğu çalıştırıldıktan sonra switch yapısından çıkılmasını sağlar. Eğer break unutulursa, sonraki case blokları da koşul kontrolü yapılmaksızın çalıştırılır ("fall-through" davranışı).
- default:: Yukarıdaki hiçbir case ile eşleşme olmadığında çalıştırılacak isteğe bağlı bir bloktur.
Koşullu İfadelerde Kullanılan Operatörler
Koşulları oluştururken çeşitli operatörler kullanılır:
- Karşılaştırma Operatörleri:
== (Eşit): İki değerin eşit olup olmadığını kontrol eder.
=== (Denk): İki değerin hem değerinin hem de tipinin eşit olup olmadığını kontrol eder.
!= veya <> (Eşit Değil): İki değerin eşit olmadığını kontrol eder.
!== (Denk Değil): İki değerin değerinin veya tipinin eşit olmadığını kontrol eder.
> (Büyüktür)
< (Küçüktür)
>= (Büyük Eşittir)
<= (Küçük Eşittir)
- Mantıksal Operatörler:
&& veya and (VE): Her iki koşul da doğruysa true döner.
|| veya or (VEYA): Koşullardan en az biri doğruysa true döner.
! veya not (DEĞİL): Koşulun tersini alır. Doğruysa false, yanlışsa true döner.
Yazarımız Hasan hakkında: Adım Hasan, ama bir dönem MyBB kullananlar beni Yondaime nicki ile tanırdı. 2009 da başladı web maceram, MyBB, Wordpress, Matematik, Adalet, Bilgisayar Programcılığı, derken şimdide burada bir şeyler yapmaya çalışıyorum :)