Aslında algoritma kurmanın temelinde matematik yatıyor diyebiliriz bence. Senin yerinde olsam bol bol matematik problemleri çözerdim. Bildiğimiz düz havuz problemleri falan.
Bu problemleri çözmek sana birkaç şey öğretir. Elinde hangi verilerin olduğunun farkına varırsın önce, daha sonra senden istenen verinin ne olduğunu görürsün. Sonrasında analitik zekanı kullanarak bu eldeki verilerle istenenlere ulaşmak için yollar ararsın. Muhtemelen en başta matematik problemleri de zor gelecektir ancak çözdükçe algoritma kurma yeteneğin oldukça gelişecek. Emin olabilirsin.
Problemler dışında da matematik çalışmanı ve öğrenmeni öneririm. Örneğin koşullu ifadeler yazarken "ve"ler ve "veya"lar havada uçuşuyor. Matematikteki mantık konusunu bilmek, bu konuda alıştırmalar yapmış olmak gerçekten de koşullu ifadeler yazarken çok yardımcı oluyor insana.
Ya da bir diğer konu fonksiyonlar. Matematikteki fonksiyonlarla programlamadaki fonksiyonlar aslında bire bir aynılar temelde.
Velhasıl kelam matematik bilmek ve bol bol problem çözmek bu süreci gerçekten çok hızlandırıyor.
Daha önce hiç kurmadığım bir algoritma kuracağım zaman mutlaka kağıt kalem alırım elime ve bütün akışı çizerim. Elimde şu veriler var, şu verileri şu şekilde işleyip, arkasından şu işlemleri gerçekleştirip şu sonuca varmalıyım şeklinde çizimler yaparım bol bol. Kağıt kalem üzerinde çizmeye çalışmak da gerçekten yardımcı olacaktır diye düşünüyorum.
Ve son olarak hackerrank.com gibi siteler üzerinden de çeşitli challengelara katılıp algoritma kurma yeteneğini geliştirebilirsin.
Ama benim ilk tavsiyem kesinlikle matematik problemleri olacaktır. Hatta matematik problemlerini önce kağıda çözüp daha sonra bilgisayarda çözmeye çalışabilirsin. Gerçekten çok eğlenceli oluyor.
Umarım söylediklerim yardımcı olur. İyi çalışmalar dilerim.
Merhaba Abi,
Öncelikle ellerine sağlık, oldukça hoş ve güzel olmuş sistem. Benim bildirmek istediğim birkaç ufak şey var.
- İleri geri gitme fonksiyonları her zaman düzgün çalışmıyor. Önceki sayfaya gitmek istediğimde link değişiyor ama içerik sabit kalabiliyor. Bunlara bir el atmak lazım.
- Bunun dışında linkleri yeni sekmede açamıyorum maalesef. Sağ tıklayıp yeni sekmede aç demem gerekiyor. Command'a basılı tutarak da açabiliyor olsam çok güzel olur. Bu alışkanlığa bir el atmak lazım.
- Bir de şunun çok önemli olduğunu düşünüyorum, sorulara verilen cevapları yanıtlama özelliği de olmalı bence. Arkadaşın cevabı üzerinde ufak bir düzeltme yapmak istiyorum ancak maalesef yanıtlama yok.
- Yanıtlama dışında bir de cevapta düzenleme özelliği de olursa çok güzel olur. Başkalarının cevaplarını düzenleyebilelim. Kendileri onay verirse bu düzenlenmiş cevap görünebilir. Çok hoş olur bence.
Sistemin backendini de açık kaynak yaparsan çok güzel olur aslında. Böyle ufak tefek düzenlemeleri biz de yapabiliriz. Github'da biraz aradım ancak sanırım sadece dersler kısmındaki içerikler açık kaynak.
Teşekkür ederiz bu güzel iş için. Görüşmek üzere.
Merhabalar,
@smtblt16 hocam cevap vermiş ancak bu çok da uygun bir yöntem olmadığını düşünüyorum bunun. Bunun gibi işlemlerin yapılabilmesi için çok güzel bir fonksiyon var, fonksiyonumuzun ismi IN()
Fonksiyonla ilgili güzel bir kaynak bırakayım şuraya: https://www.w3resource.com/mysql/comparision-functions-and-operators/in-function.php
Örnek bir kullanım da vereyim hemen kısaca. Diyelim ki tablomuzdan 6, 9 ve 8 id'li verileri çekeceğiz. Sorgumuz şu şekilde olacak.
SELECT * FROM items WHERE item_id IN(6, 9, 8)
IN ifadesinden sonra parantez içerisinde verdiğiniz her değeri kontrol ediyor ve bu değerlerden herhangi birisiyle eşleşen bir id değeri olup olmadığına bakıyor. Eşleşen değerleri döndürüyor.
PHP'deki diziyi buraya koymak isterseniz de şu şekilde bir kullanıma gidebilirsiniz.
$array = array('0' => 6, '1' => 9, '2' => 8);
$query = $db -> prepare("SELECT * FROM items WHERE item_id IN (" . implode(",", $array) . ")");
Ancak burada da ufak bir handikap var. Normal şartlar altında kullanıcıdan gelen verileri direkt olarak yazmamız gerekiyor. Direkt yazdığımız zaman prepared statement dediğimiz şeyin çok bir anlamı kalmamış oluyor.
Bunun önüne geçmek için de bu konuyla ilgili olarak Stackoverflow'da sorulan soruya verilen şu cevabı inceleyebilirsiniz: https://stackoverflow.com/questions/14767530/php-using-pdo-with-in-clause-array
Çok uzun zamandır PDO kullanmıyorum. Belki bir şeyleri yanlış söylemiş olabilirim.
Eğer eksik veya yanlış söylediğim bir şey olduğunu düşünüyorsanız lütfen bildirin.
Teşekkür ederim, iyi çalışmalar dilerim.