- Katılım
- 7 Nisan 2019
- Mesajlar
- 12.523
- Makaleler
- 3
- Çözümler
- 58
namespace RecapDemo1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
GenerateButtons();
}
private void GenerateButtons()
{
Button[,] buttons = new Button[8, 8]; // [] arraydır.
int top = 0;
int left = 0;
for (int i = 0; i < buttons.GetUpperBound(0); i++)
{
for (int j = 0; j < buttons.GetUpperBound(1); j++)
{
buttons[i, j] = new Button();
buttons[i, j].Width = 50;
buttons[i, j].Height = 50;
buttons[i, j].Left = left;
buttons[i, j].Top = top;
left += 50;
if ((i + j) % 2 == 0)
{
buttons[i, j].BackColor = Color.Black;
}
else
{
buttons[i, j].BackColor = Color.White;
}
this.Controls.Add(buttons[i, j]);
}
top += 50;
left = 0;
}
}
}
}
Basit matematik parantezi bu ((a+b) x c) gibi. Yani önce a ile b'yi topluyor sonra c ile çarpıyor."if ((i + j) % 2 == 0)" Kısmında neden iki adet "(( ))" parantez kullanıldı ?
Çift parantezin amacı işlem onceligi önce i ve j topla 2ye göre mod al anlamında.
2. Sorun için bence 2 boyutlu dizilere daha çok çalışmalısın.
Merhabalar, altta vereceğim kodla ilgili birkaç sorum var. Daha öğrenciyim ve anlamadığım şeyler var. Bunu az önce yaptık.
"if ((i + j) % 2 == 0)" Kısmında neden iki adet "(( ))" parantez kullanıldı ?
"top += 50; left = 0;" Kısımları neden süslü parantezin "{ }" içine değil de kodların dışına yazılmış ?
Sorularım bu kadar, derste hoca direkt bu konuya geçti. O yüzden pek bir şey anlamadım. Pratiğe ihtiyacım var.
Alt tarafa kodların sonucunu ekledim
C#:namespace RecapDemo1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { GenerateButtons(); } private void GenerateButtons() { Button[,] buttons = new Button[8, 8]; // [] arraydır. int top = 0; int left = 0; for (int i = 0; i < buttons.GetUpperBound(0); i++) { for (int j = 0; j < buttons.GetUpperBound(1); j++) { buttons[i, j] = new Button(); buttons[i, j].Width = 50; buttons[i, j].Height = 50; buttons[i, j].Left = left; buttons[i, j].Top = top; left += 50; if ((i + j) % 2 == 0) { buttons[i, j].BackColor = Color.Black; } else { buttons[i, j].BackColor = Color.White; } this.Controls.Add(buttons[i, j]); } top += 50; left = 0; } } } }
Evet doğrudur. İlk satır bitince for döngüsünden çıkarak top değerine +50 ekliyor ve bir satır aşağı inmiş oluyor. Ve tüm işlem 8 satır olana kadar tekrar ediyor.2 boyutlu diziler nedir ? Tekrar dinledim dersi, kodların diğer kodlardan ayrı yazılmasının sebebi kodu yenilemekmiş. Doğru mudur bu ?
Evet, biraz anladım. Birkaç kez daha baştan yazsam daha iyi anlarım.İlk sorunuzun cevabı;
Eğer iki parantez yerine bir parantez kullanılır ise if (i + j % 2 == 0) şeklinde olacaktı ve i ile j değişkenleri iki ayrı sayı olduğu için ikiye bölebileceğini düşünemeyip hata verecikti. 2 parantez koymamızın nedeni % işaretinden önce 2 sayı değişkenini toplayıp böleceğimiz için parantez içinde öncelikli olarak toplayıp onları 1 değişkenmiş gibi gösteririz(kısaca işlem önceliği).
İkinci sorunuzun cevabı
Eğer top += 50; ve left = 0; değerleri 2. for döngüsünün içine yazılırsa 1. satır bitmeden direk top değerine +50 ekleyerek 2. satıra geçecekti ve sadece 1. sütunu boyamış olacaktı.
Umarım açıklayıcı olmuştur.
Evet doğrudur. İlk sütun bitince for döngüsünden çıkarak top değerine +50 ekliyor ve bir satır aşağı inmiş oluyor. Ve tüm işlem 8 satır olana kadar tekrar ediyor.
Yeni başladıysanız hata yapmanız gayet normal. Yazılım dillerini öğrenmek zaman isteyen bir konudur. Başarılar dilerim.Evet, biraz anladım. Birkaç kez daha baştan yazsam daha iyi anlarım.
Yeni başladıysanız hata yapmanız gayet normal. Yazılım dillerini öğrenmek zaman isteyen bir konudur. Başarılar dilerim.
Maalesef bir bilgim yok. Kendinizi GitHub gibi sitelerde insanların yazmış olduğu kodlara bakarak veya kendiniz yazarak kendinizi geliştirmeye çalışın ve kendinize bir CV oluşturun. codersrank.io sitesinden kendinize bir özgeçmiş oluşturup iş ilanlarına bakabilirsiniz.1 Milyon Istihdam'dan bilginiz var mı? Oradan alıyorum dersi iş bulabilme şansım var mı?