31 Aralık 2016 Cumartesi

Bulut Mesajlaşma (Cloud Messaging)


Bulut Mesajlaşma (Cloud Messaging) Nedir?

Geliştirici tarafından işletilen sunuculardan İşletim Sistemini hedefleyen uygulamalara ve ayrıca uygulamalar için bildirim verileri veya bilgileri göndermesine olanak sağlayan bir mobil bildirim hizmetidir.
Android, IOS veya Blackberry cihazlara yazdığımız uygulamalarda bildirim çubuğuna bildirim bırakmamızı sağlar. Arkaplan servisi (background service) kullanılarak yapılır. Uygulama kapalı olduğunda bile, uygulamanın içeriğine dair kullanıcı bilgilendirmesi yapmak için kullanılır. Örneğin mail geldiğinde telefon titrer, bildirim ışığı yanar ve bildirim çubuğunda 1 yeni posta yazar. Bu, push notification servisi sayesinde yapılır.
Bu servis ile -anlık olarak- yeni veri kullanılabilir olduğunda, sunucudan mobil uygulamanıza istek gönderilir. Böylelikle telefon üzerinde sürekli veri giriş çıkışı kontrolü yapılmaz. Pil, ram, işlemci tasarrufu sağlanır.
                                                  Başlıca Cloud Messaging Sağlayıcıları                                                   
              Google Cloud Messaging                    
 Apple Push Notification Service
                                                           Oracle Cloud Messaging
                                                     Windows Push Notification Service

Google Cloud Messaging (GCM) Nedir ?

Geliştiricilere Google tarafından ücretsiz olarak sunulmaktadır. GCM Hizmeti ilk önce Haziran 2012'de , kimlik doğrulama ve dağıtım, yeni API bitiş noktaları ve mesajlaşma parametrelerinde yapılan iyileştirmeler ve sınırlamaların kaldırılmasını gerekçe göstererek, Google'ın şu an geçmemiş olan Android Cluetooth'dan Bulut'a Aygıt Mesajlaşma (C2DM) hizmetine bir halef olarak ilan edildi. API gönderme oranları ve mesaj boyutları.
2014 yılında ise bunun yerini Google'ın Firebase Cloud Messaging (FCM) aldı.
Geliştirilmesi
Google Cloud Messaging'e geçiş, Android hizmeti 27 Haziran 2012'de Google I / O'da açıldığında ilk açıklandı.Google Bulut Mesajlaşma servisini duyurduktan kısa süre sonra Google, C2DM'den yeni servise geçişle birlikte uygulama geliştiricilere rehberlik edecek belgeler yayınladı. Hizmete geçiş yapmak için SDK ve kod değişikliklerinin yanı sıra, indirmek ve güncellemek için yayın deposu (Google Play gibi) için bir uygulama güncellemesi yayınlaması gerekir.
Chrome hizmeti, Google I/O 2013'ten önce ‘Push mesajıyla etkili uygulamalar ve uzantılar oluşturma' başlıklı bir blog yazısı ile ilan edildi.
I/O 2015'te Google, yeni bir SDK ve iOS desteği verdiğini açıkladı.

Teknik Detayları
Google Cloud Messaging işlevleri, hem sunucu API'larını ve hem de  SDK'lari Google tarafından yapılmaktadır. GCM, push bildirimlerini, derin bağlantı komutlarını ve uygulama verilerini gönderme yeteneğine sahiptir. Daha büyük mesajlar, en fazla 4 KB ‘a kadar gönderilebilir.


İstemci uygulaması, bildirimleri alması ve göstermesi için uygulama iznine izin verdikten sonra, kayıt işlemine başlamak için Google Cloud Messaging arayüzüne bir register API isteği gönderir. GCM Hizmeti, isteği alır ve onaylar ve geliştiricinin daha sonra tek bir aygıta bir bildirim göndermek için kullandığı benzersiz bir tanımlayıcı olan aygıta bir GCM Registration ID vererek yanıt verir. Tanımlayıcı aygıta kaydedilir ve genellikle saklanması için geliştiricinin uygulama sunucusuna gönderilir. GCM Registration ID, bir geliştiricinin kullanıcının kişisel kimliğini keşfetmesine izin verebilecek herhangi bir kişisel veya cihaz bilgisi içermeyen rasgele üretilen bir tanımlayıcıdır. Geliştirici bir aygıta bir bildirim olayı göndermek istediğinde, süreç GCM Kimlik Doğrulama Hizmetine gönderilen bir API POST isteğiyle başlar. POST isteği, GCM Registration ID, önceliği, isteğe bağlı değerleri ve bağlantıları ve varışta cihazda görüntülenmesi gereken bilgileri içerir. GCM Registration ID nin ve diğer kimlik bilgilerinin başarılı bir şekilde doğrulanması üzerine bir kimlik doğrulama işareti döndürülür.Ardından, her iki tanımlayıcı da GCM Hizmetine gönderilip ve sonra cihaza teslim edilir.


 Aşağıdaki tabloda çalışma sistemi anlatılmaktadır
Google Bulut Mesajlaşma Çalışma Sistemi


5 Mayıs 2016 Perşembe

Android | Gecikmeli loop döngüsü oluşturmak

Merhaba arkadaşlar çoğu uygulamada karşıma çıkan ve sizinde karşılacağınızı tahmin ettiğim "ben nasıl 1 saniye gecikmeli döngü döndürüp , kontrol yapabilirim ? " sorusuna cevap olarak kısa bir algoritma hazırladım.Bunu direk kalıp olarak kullanabilirsiniz.

Şimdi benim buradaki amacım bir bluetooth cihaz ile iletişimde her saniye 1 tane logic değer göndermekti.
if(btAdapter.getState() == BluetoothAdapter.STATE_ON) { //btAdapter durumu açık olduğunda koşulu
for (int a = 0; a < 1000; a++) { //1000 e kadar yaptım siz kendinize göre tasarlayın.
Handler handler1 = new Handler(); //Handler hakkında bilginiz yoksa bakabilirsiniz.
handler1.postDelayed(new Runnable() { //şimdi burda handlerimize bir gecikmeli post olacağını bildirdik
@Override
public void run() { //bu kısma yapacağınız işlemleri yazabilirsiniz.
mConnectedThread.write("1"); //Mesela benim işlemim sadece bluetooth ile 1 göndermekti.
}
}, 1000); //Buradaki gecikme süresi ms türünden olduğu için 1000 ms = 1 s gecikmeli kontrol olacaktır.
}
}

 

 

 

 

23 Nisan 2016 Cumartesi

C# Market Otomasyonu

C# Market Otomasyonu


C# Market Otomasyonu

Sizden Şekil 1 de verilen form application’ın gerçekleştirilmesi beklenmektedir.
Uygulamada ürün ismi ve ürün miktarını kullanıcıdan alan 2 adet TextBox, Ürün ekleme, ürün çıkartma veya alışverişi iptal etmek için kullanılacak Butonlar bulunacaktır. Ayrıca kullanıcı ürün ekleyip çıkarttıkça yada alışverişini iptal ettiği durumda, Form application üretinde bulunan ListBox ve altında bulunan toplam bilgiyi veren TextBox güncellenecektir.
Uygulamanız arka planda Dictionary<String, double> tipinde 2 tane container bulunduracaktır. Bunlardan 1 tanesi constProductList, alışveriş listesine eklenebilecek ürünlerin isimlerini(String) ve ilgili ürünün birim fiyatını(double) tutmaktadır. Diğeri ise currentBuyList, anlık olaran kullanıcının eklediği ürünleri barındırmaktadır.

C# Market Otomasyonu Çözüm:

 

Directory kategorize etme yapısını kullanarak çözüm yapıldı key,value yapısı ile daha kolay bir çözüm oldu ...

 

C# Market Otomasyonu

Proje dosyası  :  https://www.dropbox.com/s/ep585grxs5h3rs3/MarketOtomation%20%281%29.rar?dl=0

 

 

 

 

28 Mart 2016 Pazartesi

C# Bileşik,Basit Faiz hesaplama

C# Bileşik , Basit Faiz Hesaplama


faiz lab


Sizden bileşik faizi hesaplayan bir program yapmanız isteniyor. Bildiğiniz gibi Bileşik faiz, bir birim dönemde elde edilen anapara ve faiz toplamının sonraki birim dönemlerde hesaba anapara olarak katılarak bu yeni tutar üzerinden faiz hesaplanmasıdır. Bu şekilde birinci dönemden sonra faizin de faizi ödenmektedir. Aşağıdaki formüle göre hesaplanabilir. Not birim süre yıl temellidir.


Formülü;

Buna göre

a: ana para
i: faiz
n: süre

Faiz Tutarı = a * (1 + i)^n

ana para: 10.000 (a)

faiz: %10 (i)

süre: 2 yıl (n)

ilk yıl sonundaki ana para + faiz;

10.000*0,1 + 10.000 = 11.000

ilk yılın sonundaki ana para + faiz tutarını yine aynı faiz oranından bir yıl daha faize yatırırsak ikinci yıl sonunda;

11.000*0,1 + 11.000 = 12.100

Sizden basit faizi hesaplayan bir program yapmanız isteniyor. Bildiğiniz gibi basit faiz, belli bir paranın belli bir dönem kullandırılması sonucu elde edilen normal faizi ifade eder. Not birim süre yıl temellidir.

Basit faiz aşağıdaki formüle göre hesaplanır;

Faiz Tutarı = Anapara x Faiz Oranı x Birim Süre

10.000,00 x 0,02 x 3 = 600,00 TL  olacaktır.

Förmülde bulunan parametrelere göre arayüzünüzü ve isimlendirmelerinizi yapınız. Program içerisine gerekli “Exception Handling” mekanizmalarını koyunuz.  Süre Ay yada Yıl olarak seçilebilir. Program şu şekilde çıktı vermelidir.

XXX.XXX,XX TL  ana para, yıllık % Y faiz oranıyla, N Yıl dönemlerle faiz hesaplanarak N Yıl sonunda toplam GGG.GGG,GG TL faiz getirir.
Toplam ele geçecek miktar ZZZ.ZZZ,ZZ TL olur.

c# bileşik,basit faiz hesaplama

Çözüm :

faiz lab

 

Saf kod

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using static System.Windows.Forms.MessageBox;

namespace _152120121048_OZANMANAV_FaizLab
{
public partial class Form1 : Form
{
private InterestCalculator intCalculator;
public Form1()
{
InitializeComponent();
intCalculator=new InterestCalculator();
}
private void btnHesapla_Click(object sender, EventArgs e)
{
try
{
double a = Double.Parse(txtAnaPara.Text);
double i = Double.Parse(txtFaiz.Text);
double n = Double.Parse(txtSure.Text);
if (a < 0 || i < 0 || n < 0)
{
throw new Exception();
}
double faiztutari = 0;
double sontoplam = 0;

if (rbBilesikFaiz.Checked == true)
{
faiztutari = intCalculator.BilesikFaizHesapla(a, i, n);
txtSonuc.Text = a + @" TL ana para, yıllık % " + i + @" faiz oranıyla, " + n +
@" Yıl dönemlerle faiz hesaplanarak " +
n + @" Yıl sonunda toplam" + (faiztutari - a) + @" TL faiz getirir." +
@" Toplam ele geçecek miktar " + faiztutari;
}

if (rbBasitFaiz.Checked == true)
{
faiztutari = intCalculator.BasitFaizHesapla(a, i, n);
txtSonuc.Text = a + @" TL ana para, yıllık % " + i + @" faiz oranıyla, " + n +
@" Yıl dönemlerle faiz hesaplanarak " +
n + @" Yıl sonunda toplam " + faiztutari + @" TL faiz getirir." +
@" Toplam ele geçecek miktar " + (faiztutari + a);
}

}
catch (FormatException)
{
MessageBox.Show("Lütfen Boş bırakmayınız veya Karakter girmeyiniz");
}
catch(Exception)
{
MessageBox.Show("Lütfen negatif değer girmeyiniz");
}
}
}
}

 

Proje Olarak İndir

İndir

 

 

22 Mart 2016 Salı

C# Maclaurin Series Calculator

C# Maclaurin Series Calculator 


Maclaurin serileri günümüz, fonksiyon sonuçlarına yaklaşımda bulunmak amacıyla yoğun olarak kullanılmaktadır. Sizden istenen aşağıdaki resimde verilen form uygulamasını gerçekleştirmenizdir.

[caption id="attachment_177" align="aligncenter" width="272"]C# Maclaurin Series Calculator C# Maclaurin Series Calculator[/caption]

Bu uygulama kullanıcıdan:
1. Yaklaşımda bulunulması istenen fonksiyonu seçmesini (Equation: ComboBox)
2. İstenilen input değerinin (x) girilmesini (Input: TextBox)
3. Eğer kullanılacak olan fonksiyon trigonometrik bir fonksiyon ise, input olarak girilen değerin
derece olarak mı, yoksa radyan olarak mı verildiğinin belirtilmesini (RadioButtons)
4. Hesaplama sırasında maximum kaç iterasyando tamamlanması gerektiğini (Max Iteration
CheckBox & TextBox)
5. Hesaplama sırasında göz önünde bulundurulması gereken eşik değerini (Thresshold CheckBox
& TextBox)
Alacak ve Calculate butonuna basıldığında verilen parametrelere uygun olan sonucu oluşturacak ve
sonucu bir MessageBox da gösterecektir.
Equation ComboBox:
Bu ComboBox hesaplanacak fonksiyonun seçilmesinde kullanılır. Sizden istenen fonksiyonlar şu
şekildedir.
 exp(x)
 1/(1-x)
 1/((1-x)^2)
 sin(x)
 cos(x)
 arcsin(x)
 arccos(x)
 sinh(x)
 cosh(x)
Kullanıcı bu ComboBox ın içeriğini her değiştirdiğinde, derece/radyan seçimi yapılan radio Buttonların
Enable durumu güncellenecektir.
Max Iteration:
Max iteration hesaplama sırasında kullanılacak olan terim sayısını göstermektedir. Örneğin 5 girilen
max iteration değeri için exponential fonksiyonuna yaklaşılmak isteniyorsa. Maclaurin serisinin ilk 5
terimi toplama dahil edilip sonuç oluşturulacaktır. Bu TextBox ın Enable durumu yanındaki CheckBox
ın Check olma durumuna bağlıdır.
Thresshold:
Thresshold değeri hesaplamanın sonlanmasını belirleyen bir başka parametredir. Eğer herhangi bir
iterasyonda, ilgili iterasyona ait elemanın değeri Thresshold değerinin altındaysa, hesaplamaya devam
etmenin gerek olmadığı anlamına gelir. Mevcut sonuç geri döndürülür. Bu TextBox ın Enable olma
durumu yanındaki CheckBox ın Check olma durumuna bağlıdır.

In English :
C# Maclaurin Series Calculator
Maclaurin series today, the function has been used extensively in order to approach the problem. You is your realization of the desired application form given in the picture below.
This application user to:
1 to select the desired function in the presence of Approach (Equation: ComboBox)
2. Select the desired input value (x) to be entered (Input: TextBox)
3. The function of a trigonometric function which will be used if the value entered as input
Have a degree, or to specify that it be given in radians (RadioButtons)
4. During my maximum number of calculations that need to be completed iterasyando (Max Iteration
CheckBox & TextBox)
5. the threshold that must be taken into account during the calculation (Thresshold checkbox
& TextBox)
Receivables and create the results will conform to the parameters and pressing the button Calculator
the results will show a MessageBox.
Equation ComboBox:
The ComboBox is used to select the function to be calculated. You requested the following functions
It is such.
 exp (x)
 1 / (1-x)
 1 / ((1-x) ^ 2)
 sin (x)
 cos (x)
 arcsin (x)
 arccos (x)
 sinh (x)
 cosh (x)
When the user ComboBox The contents of each change, degrees / radians selection has been made of the radio Button
Enable status will be updated.
Max Iteration:
Max shows iteration of the number of terms that will be used during the calculation. For example, 5 entered
If asked to approach the exponential function for maximum iteration value. The first of the series of Maclaurin 5
Term results are included collection will be created. This TextBox checkbox next to Enable status
s depends on the status check.
Thresshold:
Thresshold value is another parameter that determines the ending of the calculation. If you have any
In iteration, Thresshold value is below the value of the related elements of the iteration continues computing
It means that there is no need of transport. The present result is returned. Enable the fact that this TextBox
status depends on the status check checkbox next to s.

[caption id="attachment_178" align="alignnone" width="399"]C# Maclaurin Series Calculator C# Maclaurin Series Calculator[/caption]

ÇÖZÜM/Solution:

Proje indir / Project Download: https://www.dropbox.com/s/bj551w6531ll5sd/SeriesCalculatorProject.rar?dl=0

c# Maclaurin Series Calculator

Saf Kod / Pure Codes:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SeriesCalculatorProject
{
public class SeriesCalculatorHelper
{

private const String EXP = "exp(x)";
private const String POLY1 = "1/(1-x)";
private const String POLY2 = "1/((1-x)^2)";
private const String SIN= "sin(x)";
private const String COS = "cos(x)";
private const String ARCSIN = "arcsin(x)";
private const String ARCCOS = "arccos(x)";
private const String SINH = "sinh(x)";
private const String COSH = "cosh(x)";

public SeriesCalculatorHelper()
{
}

public bool IsTrigonometric(string funcText)
{
return funcText.Equals(SIN) || funcText.Equals(COS) || funcText.Equals(SINH) || funcText.Equals(COSH);
}

public Double CalculateResult(string equationType, double x, int maxIteration, double thressHold)
{
Double result = 0;
switch (equationType)
{
case EXP:
result = CalculateExponential(x, maxIteration, thressHold);
break;
case POLY1:
result = CalculatePoly1(x, maxIteration, thressHold);
break;
case POLY2:
result = CalculatePoly2(x, maxIteration, thressHold);
break;
case SIN:
result = CalculateSin(x, maxIteration, thressHold);
break;
case COS:
result = CalculateCos(x, maxIteration, thressHold);
break;
case ARCSIN:
result = CalculateArcSin(x, maxIteration, thressHold);
break;
case ARCCOS:
result = CalculateArcCos(x, maxIteration, thressHold);
break;
case SINH:
result = CalculateSinH(x, maxIteration, thressHold);
break;
case COSH:
result = CalculateCosH(x, maxIteration, thressHold);
break;
default:
break;
}

return result;
}

private double CalculateExponential(double x, int maxIteration, double thressHold)
{
double result = 0;

for (int n = 0; n < maxIteration; n++)
{
double currentValue = Power(x, n) / Factorial(n);
result += currentValue;

if (Math.Abs(currentValue) < thressHold) break;
}

return result;

}
private double CalculatePoly1(double x, int maxIteration, double thressHold)
{
double result = 0;

for (int n = 0; n < maxIteration; n++)
{
double currentValue = Power(x, n);
result += currentValue;

if (Math.Abs(currentValue) < thressHold) break;
}

return result;
}

private double CalculatePoly2(double x, int maxIteration, double thressHold)
{
double result = 0;

for (int n = 1; n <= maxIteration; n++)
{
double currentValue = n * Power(x, n - 1);
result += currentValue;

if (Math.Abs(currentValue) < thressHold) break;
}

return result;
}

private double CalculateSin(double x, int maxIteration, double thressHold)
{
double result = 0;

for (int n = 0; n < maxIteration; n++)
{
double currentValue = ( Power(-1, n) / Factorial(2*n + 1) ) * Power(x, 2*n + 1);
result += currentValue;

if (Math.Abs(currentValue) < thressHold) break;
}

return result;
}

private double CalculateCos(double x, int maxIteration, double thressHold)
{
double result = 0;

for (int n = 0; n < maxIteration; n++)
{
double currentValue = (Power(-1, n) / Factorial(2 * n)) * Power(x, 2 * n);
result += currentValue;

if (Math.Abs(currentValue) < thressHold) break;
}

return result;
}

private double CalculateArcSin(double x, int maxIteration, double thressHold)
{
double result = 0;

for (int n = 0; n < maxIteration; n++)
{
double currentValue = ((Factorial(2*n))/(Power(4, n)*Power(Factorial(n), 2)*(2*n + 1)))*
Power(x, 2*n + 1);
result += currentValue;

if (Math.Abs(currentValue) < thressHold) break;
}

return result;
}

private double CalculateArcCos(double x, int maxIteration, double thressHold)
{
return (Math.PI/2) - CalculateArcSin(x, maxIteration, thressHold);
}

private double CalculateSinH(double x, int maxIteration, double thressHold)
{
double result = 0;

for (int n = 0; n < maxIteration; n++)
{
double currentValue = Power(x, 2*n + 1)/Factorial(2*n + 1);
result += currentValue;

if (Math.Abs(currentValue) < thressHold) break;
}

return result;
}

private double CalculateCosH(double x, int maxIteration, double thressHold)
{
double result = 0;

for (int n = 0; n < maxIteration; n++)
{
double currentValue = Power(x, 2 * n) / Factorial(2 * n);
result += currentValue;

if (Math.Abs(currentValue) < thressHold) break;
}

return result;
}

private int Factorial(int number)
{
if (number <= 1) return 1;

int result = 1;

for (int i = 2; i <= number; i++)
{
result *= i;
}

return result;

}

private Double Power(double x, double n)
{
return Math.Pow(x, n);
}

}
}

c# Maclaurin Series Calculator
c# Maclaurin Series Calculator

 

 

14 Mart 2016 Pazartesi

C# Dizi sıralama (TextBox'a girilen değerlere göre)

C# Dizi sıralama


c# dizi sıralama


Sizden bir method ve bu methoduun kullanıldığı bir program yazmanız isteniyor.Method parametre olarak aldığı diziyi küçükten büyüğe yada büyükten küçüğe sıralayıp sıralı diziyi geri döndürecek.  Yazacağınız program sıralanmış diziyi ekranda gösterecek. Herhangi bir sıralama algoritması kullanılabilirsiniz.Burada girilen dizi karakterleri arasında 1 space boşluk bırakılarak giriş sağlanmıştır bu girişler kullanıcıdan alınıp trim ve split komutu ile bir string arraya geçirilip oradan number array e geçirilmiştir ve daha sonra sort ve reverse fonksiyonu ile sıralanmıştır.sort fonksiyonu küçükten büyüğe , reverse ise büyükten küçüğe sıralama yapar

 

Çözüm:

Önce kullandığımı methodları açıklayalım  :

Trim metodu karakterin başındaki ve sonundaki boşlukları atmak için kullanılır. Eğer ki sadece kelimelerin başındaki ya da sonundaki boşlukları aşmak istiyorsak TrimEnd ve TrimStart metotlarını da kullanabiliriz.

Bu metotların yapmış olduğu işlemlere örnek verecek olursak hazırladığımız programda kullanıcının mailden gelen güvenlik kodunu gireceği bir alan var. Genelde mailimizden direkt kopyala yapıştır yaparız ve kimi zaman karakter topluluğunun başında veya sonundaki fazladan boşlukları da alırız. Bu da programın güvenlik kodunu yanlış algılamasına neden olacaktır. Bu gibi durumları engellemek için Trim metotunu kullanabiliriz.

Split Metodu Kelime veya kelime gruplarında belirlenen karakterden sonrasını bölmek için kullanılır. Bu işlem sırasında belirlenen karakteri kaldıracaktır.c# dizi sıralama

 

[caption id="attachment_171" align="alignnone" width="647"]c# dizi sıralama c# dizi sıralama[/caption]

Saf Kod text hali :

using System;
using System.Windows.Forms;
namespace _152120121048_OZANMANAV_1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnSirala_Click(object sender, EventArgs e)
{
String text = txtSiralanmamisDizi.Text;
text = text.Trim(' ');
String[] textArray = text.Split(' ');

double[] numberArray = new double[textArray.Length];

for (int i = 0; i < textArray.Length; i++)
{
numberArray[i] = Double.Parse(textArray[i]);

}

if (rbKucuktenBuyuge.Checked)
{
txtSiralanmisDizi.Clear();
Array.Sort(numberArray);
for (int i = 0; i < numberArray.Length; i++)
{
txtSiralanmisDizi.Text += numberArray[i].ToString()+' ';
}
}

else
{
txtSiralanmisDizi.Clear();
Array.Reverse(numberArray);
for (int i = 0; i < numberArray.Length; i++)
{
txtSiralanmisDizi.Text += numberArray[i].ToString() + ' ';
}
}
}
}
}

c# dizi sıralama , c# textbox dizi sıralama , dizi sıralama , c# textbox'a girilen değerleri sıralama

7 Mart 2016 Pazartesi

C# Geometrik Dizi Yazdırma

c# geometrik dizi yazdırma


3

Bildiğiniz üzere Bir sayı dizisindeki ardışık iki terim arasındaki oran sabit bir sayı ise bu diziye geometrik dizi denir. Geometrik dizide ardışık iki terim arasındaki orana dizinin ortak çarpanı denir. Aşağıdaki dizinin ortak çarpanı 3 ve  2 'dir. Ortak çarpan bulunurken herhangi bir terim bir önceki terime bölünür.

Sizden İlk terimi a1 olan ve ortak çarpanı r olan bir geometrik dizinin genel terimi: an = a1 . r(n−1)  olacak bir serinin ilk n elemanının listeleyen bir program yazmanız öneriliyor.Kullanıcıdan ilk eleman  a1ortak çarpanı r ve eleman sayısını girmesini isteyecektir eğer kullanıcı değerleri boş girmişse program mesaj kutusu ( messagebox ) ile uyarı verecektir.

Çözüm:

c# geometrik dizi yazdırma




[caption id="attachment_164" align="aligncenter" width="410"]c# geometrik dizi yazdırma c# geometrik dizi yazdırma[/caption]

4

Saf kod hali kopyalamak için :
namespace _152120121048_OZAN_MANAV_LAB4
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void btnHesapla_Click(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(txtIlkEleman.Text)) //Boş bırakıldıysa messagebox göster
{
MessageBox.Show("Lütfen Boş bırakmayınız : İlk Eleman");
return; //boş bırakılmış demekki döndür
}
if (string.IsNullOrEmpty(txtOrtakCarpan.Text)) //Boş bırakıldıysa messagebox göster
{
MessageBox.Show("Lütfen Boş bırakmayınız : Ortak Çarpan");
return; //boş bırakılmış demekki döndür
}
if (string.IsNullOrEmpty(txtElemanSayisi.Text)) //Boş bırakıldıysa messagebox göster
{
MessageBox.Show("Lütfen Boş bırakmayınız : Eleman Sayisi");
return; //boş bırakılmış demekki döndür
}

int IlkEleman = Convert.ToInt32(txtIlkEleman.Text);
int OrtakCarpan = Convert.ToInt32(txtOrtakCarpan.Text);
int ElemanSayisi = Convert.ToInt32(txtElemanSayisi.Text);

int[] dizi = new int[ElemanSayisi+1];

dizi[1] = IlkEleman;

for(int i=2;i<ElemanSayisi+1;i++)
{
dizi[i] = dizi[1] * (int)Math.Pow(OrtakCarpan,i-1) ;
}

for (int i = 1; i < ElemanSayisi+1; i++)
{
txtDiziGoster.Text = txtDiziGoster.Text + dizi[i]+Environment.NewLine;
}
}
}
}

 

 

 

C# Mouse Sayacı

[caption id="attachment_157" align="aligncenter" width="306"]C# Mouse Sayacı (Örnek Uygulama) C# Mouse Sayacı (Örnek Uygulama)[/caption]

C# Mouse Sayacı (Örnek Uygulama)


Sizden textbox üzerinden mouse kaç defa geçtiğini sayan bir program yazmanız isteniyor. Programda bir checkbox ve bir adet multiline özelliği true olan bir textbox olacak. Eğer checkbox (text: Saydır) seçili ise kullanıcı mouse ı her textbox üzerinden geçtiğinde geçiş sayısı bir artacaktır, eğer checkbox  seçili değilse sayma işlemi olmayacaktır. Her 5 sayımda toplam geçiş sayısı messagebox ile ekranda gösterilecektir.

Çözüm:

İhtiyacımız olanlar  : CheckBox , TextBox , Label, TextBox'un MouseEnter eventi

Untitled

Saf kod halinde kopyalabilmek için :
namespace _152120121048_OZAN_MANAV_LAB3
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
int counter = 0;
public void MesajGoster()
{
MessageBox.Show(counter.ToString());
}
private void txt_YaziKutusu1_MouseEnter(object sender, EventArgs e)
{
if (chk_Saydir.Checked)
{
counter++;
txt_YaziKutusu1.Text = counter.ToString();
if (counter%5==0)
{
MesajGoster();
}
}
else { }
}
}
}

C# MessageBox Kullanımı

C#'ta MessageBox'ın en basit kullanım şekli aşağıdaki gibidir. Bu kullanım şeklinde kullanıcıya sadece Mesaj İçeriği'ni gösteriyoruz:

[caption id="attachment_154" align="aligncenter" width="186"]C# MessageBox Kullanımı C# MessageBox Kullanımı[/caption]

 

 
MessageBox.Show("Hello World!");

 

Bundan sonraki kullanımlarında yavaş yavaş kullanıcılara daha ayrıntılı bir pencere sunabileceğiz.
Bu kullanımda kullanıcıya hem Mesaj İçeri'ğini gösterebileceğiz hem de pencere başlığına bir Başlık yazabileceğiz:
MessageBox.Show("Hello World", "Başlık");

Gelelim üçüncü kullanım şeklimize MessageBox pencereleri sadece mesaj vermek için kullanılmıyor. Ayrıca mesaj sonucunda da kullanıcıya işlem yaptırabiliyoruz. Aşağıdaki kullanım şekliyle kullanıcıya gösterdiğimiz pencerede MessageBox fonksiyonunun standart Tamam butonunun dışına çıkarak Tamam ve İptal butonlarını kullanabileceğiz:
MessageBox.Show("Mesaj içeriği", "Başlık", MessageBoxButtons.OKCancel);

MessageBoxButtons ile sadece Tamam ve İptal butonları değil ayrıca aşağıdaki butonları da kullanabiliriz:

MessageBoxButtons.AbortRetryIgnore: Bu komut pencerede Durdur, Yeniden Dene, Yoksay butonlarını göstermemizi sağlar.

MessageBoxButtons.OK: Bu komut pencerede Tamam butonunu göstermemizi sağlar.

MessageBoxButtons.OKCancel: Bu komut pencerede Tamam ve İptal butonlarını göstermemizi sağlar.

MessageBoxButtons.RetryCancel: Bu komut pencerede Yeniden Dene ve İptal butonlarını göstermemizi sağlar.

MessageBoxButtons.YesNo: Bu komut pencerede Evet ve Hayır butonlarını göstermemizi sağlar.

MessageBoxButtons.YesNoCancel: Bu komut pencerede Evet, Hayır ve İptal butonlarını göstermemizi sağlar.

Gördüğümüz gibi MessageBox fonksiyonumuz giderek renkli bir görünüm alıyor. Bu kullanım şeklinde de MessageBox'ımıza bir ikon resmi koyabiliyoruz:

MessageBox.Show("Mesaj içeriği", "Başlık", MessageBoxButtons.OKCancel, MessageBoxIcon.Information);

Yukarıdaki örnek ile kullanıcıya bilgi ikonunun olduğu bir pencere gösteriyoruz. Ayrıya bu parametrede sadece bilgi ikonu ile sınırlı değil;

MessageBoxIcon.Asterisk: Bu komut pencerede genellikle bilgi mesajı vermede kullanılan "i" ikonunu göstermemizi sağlar.

MessageBoxIcon.Error: Bu komut pencerede genellikle hata mesajı vermede kullanılan kırmızı "X" ikonunu göstermemizi sağlar.

MessageBoxIcon.Exclamation: Bu komut pencerede genellikle hata mesajı vermede kullanılan sarı "!" ikonunu göstermemizi sağlar.

MessageBoxIcon.Hand: Bu komutta Error komutu ile aynı işlevdedir.
MessageBoxIcon.Information: Bu komutta Asterisk komutu ile aynı işlevdedir.

MessageBoxIcon.None: Bu komut ile herhangi bir ikon gösterilmez.

MessageBoxIcon.Question: Bu komut pencerede genellikle soru sorma işlemlerinde kullanılan "?" ikonunu göstermemizi sağlar.

MessageBoxIcon.Stop: Bu komutta Error komutu ile aynı işlevdedir.

MessageBoxIcon.Warning: Bu komut Exclamation komutu ile aynı işlevdedir.

Evet gelelim en son parametremize bu parametrede eklediğimiz butonlardan hangisinin aktif olacağını seçebileceğimiz 3 adet seçenek var. Button1, Button2 ve Button3:

MessageBox.Show("Mesaj içeriği", "Başlık", MessageBoxButtons.OKCancel, MessageBoxIcon.Information, MessageBoxDefaultButton.Button2);

Yukarıda gösterdiğim kullanımda kullanıcıya gösterilen pencerede İptal butonu aktif olacaktır.

MessageBoxDefaultButton.Button1: Bu komut penceredeki butonlardan ilkini aktif eder.

MessageBoxDefaultButton.Button2: Bu komut penceredeki butonlardan ikincisini aktif eder.

MessageBoxDefaultButton.Button3: Bu komut penceredeki butonlardan üçüncüsünü aktif eder.Aktif derken pencere gösterildiğinde seçili butondur.




 

 

4 Mart 2016 Cuma

Android Uygulama Bileşenleri

Bu yazımda Android altyapısını oluşturan bileşenlerden bahsedeceğim.Bir çok kaynakta farklı şekilde kategorize edilen bu bileşenleri ben 5 başlık altında topladım.

[caption id="attachment_147" align="aligncenter" width="429"]componentsOfAndroid Android Compenents[/caption]

-Aktivite
-Intent
-Servis
-İçerik Sağlayıcı
-Broadcast Receiver

İlk olarak bazı kitaplardan okuduğum kadarıyla aktivite bileşeninden bahsedeceğim Activity sınıfı tarafından oluşturulan nesneler uygulama içinde kullanılan ekranları temsil ederler.Örneğin bir e-posta uygulaması düşünün.E-postaların listesini göstermek için bir Activity'e sahiptir.Başka bir activity ise e-postayı okumak için , diğer bir Activity ise e-posta yazmak için var olmalıdır.Yani her ekran için ayrı ayrı Activity'ler olması gerekir.
Activity'ler iyi bir kullanıcı deneyimi oluşturmak için birlikte çalışmasına rağmen, her birini diğerinden bağımsız şekilde başlatabilirsiniz.Örneğin bir kamera uygulaması fotoğrafı paylaşmak için whatsapp uygulamasını başlatabilir.

İkinci olarak intent nesnesinden bahsedecek olursak , uygulamadaki diğer sınıfların çalıştırılmasına olanak veren bir nesne olarak çıkıyor karşımıza.Bu nesne sayesinde başka bir sınıf aracılığı ile yeni bir görünüm , yani yeni bir sayfaya geçiş yapabiliyoruz.

Üçüncü olarak Content Providers yani içerik sağlayıcılardan bahsedersek bu bileşen bir uygulamanın ortak veri kümesini yönetir.Bu sayede SQLite veritabanı oluşturabilirsiniz yada web üzerinde kalıcı olarak veri depolayıp sonradan erişebilirsiniz.İçerik sağlayıcılar ile diğer uygulamalar ile verileri değiştebilir ve sorgu yapabilirsiniz(Tabi eğer gerekli izinler verilmiş ise)

Örnek olarak Android işletim sistemi içerik sağlayıcı olarak bize kullanıcının kişiler listesini vermektedir.Uygun izinlere sahip bir uygulama içerik sağlayıcıyı ( Örneğin Contacts.Data ) kullanarak cihazın rehberine erişebilir.Mesela bir uygulama yazdınız ve rehbere erişmek istediğinizde bir içerik sağlayıcı kullanmanız gerekecektir.

Dördüncü olarak servisler , arkaplanda kullanıcıyı rahatsız etmeden gerekli olan işlemleri yapan bileşenlerdir mesela arkada müzik çalması veya ağ üzerine veri transferi gibi. Bir activity bir servisi tetikleyebilir ve onunla iletişime geçebilir.

Beşinci ve son olarak Broadcast Receiver işletim sistemi tarfından uygulamalara gönderilen sinyalleri dinlemek ve takip etmekle görevlidir.Yani uygulamamız telefona gelen çağrılardan sms lerden haberdar olabilir bunlar bu bileşen ile sağlanır.

Bu yazımda bazı kaynaklardan derlediğim bileşenlerden bahsetmeye çalıştım başka bir yazıda görüşmek dileği ile ....

3 Şubat 2016 Çarşamba

Android Geliştirme Özet Anlatım-2

Merhaba arkadaşlar bugün Buton,TextView oluşturup yazıyı nasıl görünmez yapabiliriz ve Button a tıklandığında aksiyon oluşturmayı göreceğiz.

Öncelikle main.xml , activity_main.xml  oluşturduğunuz projeye göre değişir ama ilk olarak gui arayüzü oluşturarak almaktansa xml dosyasına kodunu yazarak oluşturmak bana daha akılda kalıcı geliyor o yüzden oluştururken xml dosyasında kodlarını yazarak oluşturacağım.

İlk olarak TextView oluşturalım.

<TextView android:text="@string/string1"   android:id="@+id/string1TextView" android:layout_width="match_parent" android:layout_height="wrap_content"    />
İsterseniz alttaki satırı eklersiniz böylelikle invisible bir textviewniz olmuş olur ve herhangi bir aksiyon ile onu visible yapabilirsiniz.İlerde göstereceğim.
android:visibility="visible" 
Alltaki satır ise textview veya herhangi bir compenent e id verip daha sonra çağırmamızda sadece bu id yi kullanmamazı sağlar bir nevi relation id .
android:id="@+id/string1TextView"

android:text kısmına direk " " arasına text yazabilirsiniz ama daha sonra sürekli yeniden yazmak istemiyorsanız strings.xml kısmına tanımlayıp main.xmlde o tanımlı şekli ile kullanabilirsiniz.Örneğin string1 adında bir key oluşturdum ben orada içersinde "Merhaba ben prefix string" yazan string1 çağırdığım her yerde o yazı gözükecektir.Bunun için strings.xml dosyasına resources arasına şu alttaki satırı eklemeniz yeterlidir.
<string name="string1">merhaba ben prefix string</string>
Şimdide Button oluşturalım bunun içinde main.xml dosyamıza alttaki satırları giriyoruz.

<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/Button1" android:text="@string/text_button1"/>

burada yine TextView 'de olduğu gibi string xml dosyasına text_button1 adında key oluşturdum onuda şu alttaki satırla yapıp burada sadece text_button1 yazarak çağırıyorum.
<string name="text_button1">Buraya Bas</string> 

Şimdi ise butonumuza basıldığı zaman çağıralacak bir method ekleyeceğiz.

android:onClick="onButtonClicked"
Yukarıdaki satırı <Button ... içerisine eklediğimiz takdirde button a basıldığı zaman onButtonClicked methodu çağıralacaktır.
Peki ama neyin nesi bu onButtonClicked ? Biz bunu biyerde napacağını söylememiz lazım ismi var implementasyonu yok .Bunun için hemen src klasörünün altında bulunan MainActivity.Java size göre değişr ama buradaki .java uzantılı dosyamıza geliyoruz.

public class MainActivity extends AppCompatActivity {
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
} 
Yukarıdaki satırların bulunduğu .java uzantılı dosyamızı bulduktan sonra Methodumuzu burada tanımlayıp ne yapacağını söyleceğiniz.( Unutmayın method burada tanımlanmaz ise butona basıldığında öyle bir method bulunmadığından dolayı program kapanacaktır.)

public void onButtonClicked(View view)
{
} 
 Satırını MainActivity classı içinde eklediğimizde şimdi ise onButtonClicked methodumuzu tanımlamış olduk şimdi butona basıldığında program hata vermez kapanmaz fakat boş bi fonksiyon gibi düşünün o haliyle kalacaktır hiç bir işlem yapmadan sadece içi boş olan methodu çağıracaktır.

Şimdi ise bu methodu impleme etmeye bir gözatalım.
"Bu methodumuz invisible yaptığımız textView mizi visible hale getirsin"
Peki bunu nasıl yapacağız ? Bir sonraki blog yazımda bunu anlatacağım.İyi Çalışmalar.

Android Geliştirme Özet Anlatım-2

Merhaba arkadaşlar bugün Buton,TextView oluşturup yazıyı nasıl görünmez yapabiliriz ve Button a tıklandığında aksiyon oluşturmayı göreceğiz.

Öncelikle main.xml , activity_main.xml  oluşturduğunuz projeye göre değişir ama ilk olarak gui arayüzü oluşturarak almaktansa xml dosyasına kodunu yazarak oluşturmak bana daha akılda kalıcı geliyor o yüzden oluştururken xml dosyasında kodlarını yazarak oluşturacağım.

İlk olarak TextView oluşturalım.

<TextView android:text="@string/string1"   android:id="@+id/string1TextView" android:layout_width="match_parent" android:layout_height="wrap_content"    />
İsterseniz alttaki satırı eklersiniz böylelikle invisible bir textviewniz olmuş olur ve herhangi bir aksiyon ile onu visible yapabilirsiniz.İlerde göstereceğim.
android:visibility="visible" 
Alltaki satır ise textview veya herhangi bir compenent e id verip daha sonra çağırmamızda sadece bu id yi kullanmamazı sağlar bir nevi relation id .
android:id="@+id/string1TextView"

android:text kısmına direk " " arasına text yazabilirsiniz ama daha sonra sürekli yeniden yazmak istemiyorsanız strings.xml kısmına tanımlayıp main.xmlde o tanımlı şekli ile kullanabilirsiniz.Örneğin string1 adında bir key oluşturdum ben orada içersinde "Merhaba ben prefix string" yazan string1 çağırdığım her yerde o yazı gözükecektir.Bunun için strings.xml dosyasına resources arasına şu alttaki satırı eklemeniz yeterlidir.
<string name="string1">merhaba ben prefix string</string>
Şimdide Button oluşturalım bunun içinde main.xml dosyamıza alttaki satırları giriyoruz.

<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/Button1" android:text="@string/text_button1"/>

burada yine TextView 'de olduğu gibi string xml dosyasına text_button1 adında key oluşturdum onuda şu alttaki satırla yapıp burada sadece text_button1 yazarak çağırıyorum.
<string name="text_button1">Buraya Bas</string> 

Şimdi ise butonumuza basıldığı zaman çağıralacak bir method ekleyeceğiz.

android:onClick="onButtonClicked"
Yukarıdaki satırı <Button ... içerisine eklediğimiz takdirde button a basıldığı zaman onButtonClicked methodu çağıralacaktır.
Peki ama neyin nesi bu onButtonClicked ? Biz bunu biyerde napacağını söylememiz lazım ismi var implementasyonu yok .Bunun için hemen src klasörünün altında bulunan MainActivity.Java size göre değişr ama buradaki .java uzantılı dosyamıza geliyoruz.

public class MainActivity extends AppCompatActivity {
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
} 
Yukarıdaki satırların bulunduğu .java uzantılı dosyamızı bulduktan sonra Methodumuzu burada tanımlayıp ne yapacağını söyleceğiniz.( Unutmayın method burada tanımlanmaz ise butona basıldığında öyle bir method bulunmadığından dolayı program kapanacaktır.)

public void onButtonClicked(View view)
{
} 
 Satırını MainActivity classı içinde eklediğimizde şimdi ise onButtonClicked methodumuzu tanımlamış olduk şimdi butona basıldığında program hata vermez kapanmaz fakat boş bi fonksiyon gibi düşünün o haliyle kalacaktır hiç bir işlem yapmadan sadece içi boş olan methodu çağıracaktır.

Şimdi ise bu methodu impleme etmeye bir gözatalım.
"Bu methodumuz invisible yaptığımız textView mizi visible hale getirsin"
Peki bunu nasıl yapacağız ? Bir sonraki blog yazımda bunu anlatacağım.İyi Çalışmalar.

30 Ocak 2016 Cumartesi

Android Geliştirme Özet Anlatım

Merhaba arkadaşlar bildiğim ve öğrendiğim kadarı ile hergün özet bir anlatım gerçekleştirmeye karar verdim.Anlatımlar özet olacaktır bilgi hatırlamaya yönelik veya temel oluşturma nitelikle de düşünülebilir.

Bugün ilk olarak ıvır zıvır kısımları geçerek ( ide kurma ,jdk indirme gibi) programlama kısmından başlayacağım.
Android Studio ile oluşturduğumuz blank activity projemizde bulunan  activity_main.xml içerisinde 2 adet text ve 1 adet buton bulunacak şekilde oluşturdum.İster gui kısmından butonu eklersiniz istersenizde xml kısmından kodunu yazarsanız ads otomatik renderleyip gui kısmında size sunacaktır.
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent"
tools:context="com.example.ozan3.myapplication.MainActivity">
<TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Hello World!" android:id="@+id/textView" />
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/hello" android:layout_below="@+id/textView"
android:id="@+id/textView2" />
<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/hello" android:id="@+id/button" />
</RelativeLayout>
Burada iki türlü text girişi yapılabilir ister dont prefix olarak android:text="...." kısmında yazabilirsiniz istersenizde strings.xml dosyasında ( <strings name="hello"> .....</string> şeklinde ) bir string kaydı oluşturarak istediğiniz main xml de @string/hello şeklinde çağırabilirsiniz. Hız ve zaman olarak size katkı sağlayacaktır.Tabi bunu aynı şekilde button kısmındada kullanabilirsiniz.

Android Geliştirme Özet Anlatım

Merhaba arkadaşlar bildiğim ve öğrendiğim kadarı ile hergün özet bir anlatım gerçekleştirmeye karar verdim.Anlatımlar özet olacaktır bilgi hatırlamaya yönelik veya temel oluşturma nitelikle de düşünülebilir.

Bugün ilk olarak ıvır zıvır kısımları geçerek ( ide kurma ,jdk indirme gibi) programlama kısmından başlayacağım.
Android Studio ile oluşturduğumuz blank activity projemizde bulunan  activity_main.xml içerisinde 2 adet text ve 1 adet buton bulunacak şekilde oluşturdum.İster gui kısmından butonu eklersiniz istersenizde xml kısmından kodunu yazarsanız ads otomatik renderleyip gui kısmında size sunacaktır.
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent"
tools:context="com.example.ozan3.myapplication.MainActivity">
<TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Hello World!" android:id="@+id/textView" />
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/hello" android:layout_below="@+id/textView"
android:id="@+id/textView2" />
<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/hello" android:id="@+id/button" />
</RelativeLayout>
Burada iki türlü text girişi yapılabilir ister dont prefix olarak android:text="...." kısmında yazabilirsiniz istersenizde strings.xml dosyasında ( <strings name="hello"> .....</string> şeklinde ) bir string kaydı oluşturarak istediğiniz main xml de @string/hello şeklinde çağırabilirsiniz. Hız ve zaman olarak size katkı sağlayacaktır.Tabi bunu aynı şekilde button kısmındada kullanabilirsiniz.