10 Mart 2018 Cumartesi

C Notes

 










->                 isaretli olarak ele alirsak 1 in 2 lik sayida tumleyeni -1


->                     1
Hexadecimal sayi sistemi



Token: Kaynak kod derleyici acisindan anlamli en kucuk birimlere ayrilir buna token denir.






bunlara isim verebiliriz, kendi isimleri vardir

anahtar sozcukler isim olarak kullanilamaz.





 10 luk sayi sistemi 16 lik ve 8 lik sayi sistemini burda bu sekilde gosteririz.















local taraftaki degiskenler otomatik omurlu oldugu icin garbage value alir ama globalde baslasaydi direk sifir degeri ile baslayacakti.

Statik omurlu degiskenle e eger bir deger atanmadiysa direk sifir ile baslar.


Global degiskenler statik omurlu oldugu icin direk sifir degeri ile baslarlar

Statik ifadelere deger vermek istiyorsan sabit ifade vebilirsin 
bu olmaz









Burda isim arama biter ama isim fonksiyon oldugundan syntax hatasi verir



C++ da :: scope resolution ile globelde nesne aramasi yapilabilir. Yani + 10 dur ama  de globaldeki tanimlamayi ilk 45 tanimlamasi maskeler bu nedenle C de x degeri 45 tir. Yerel isim global ismi maskeler yani ayni bracelt icinde olmali maskeleme olabilmesi icin.








Fonksiyonun geri donus degeri buradan belirtilir int olabilir double olabilir ne belirlersen o.






C'de kullanilan parametrenin degiskenlerinin degerleri belirtilmelidir, C++ da bu gerekli degildir.





bu syntax hatasi




bu dogru








eger fonksiyonun geri donus degerini belirtmezsen eski C programlama modeline gore orda fonksiyonun geri donus degeri int olarak var sayilirdi ve buna implicint int denirdi.




Eger gercekten geridonus degeri kullanilmak istenmiyorsa function un onune void konulmali.


Eski konulara ornek:


Burda hata var mi



var x degerinin degeri ayni scope da iki kez tanimlanmis yani birden fazla varliga verilmis bu sekilde olmaz.





fonksiyon bittikten sonra a degiskenin isi de sonlanir deger tutmaz yani her fonksiyon cagrildiginda yazilan deger 10 olur.


bunun sebebi degisken local de oldugu icin automatik omurlu degiskendir bu nedenle her fonksiyon basladiginda yeniden degerin uzerine yazilir. ama statik degisken oldugunda degiskenin uzerine yazilmaz hafizada tutulur.













glabalde de yine bu degeri kullanabilirdik ve yine artan deger de bie bir sonuc verirdi, bu sefer digerlerinden farkli olarak a degiskeni globalde tanimlandigi icin tum diger fonksiyonlar bu degiskeni kullanabilirdi.










Fonksiyon icinde fonksiyon tanimlayamazsin, bu kod hatali.
Butun fonksiyonlar global alanda ayri ayri tanimlanir.
Fonksiyon icinde baska fonksiyon cagirabilirsin.
Fonksiyon disinda fonksiyon cagrilmaz.




Fonksiyonlarin geri donus degeri uretmesi ve return deyimi


Return statement


hatirlatma

ifade degimi

Birlesik deyim



bos deyim


control deyimi

onceden belirlenmis dilin kurallarinca saptanmis bir syntax i var, bu syntax geregi en azindan bir keyworde sahip olan ve run time da programin akis yonunu degistirebilen deyimlere kontrol deyimi denir


return deyiminin iki farkli kullanim bicimi var biri cok sik biri az kullanilir.







bu ifadesiz return ifadeydi.

Simdi ifadeli return ifadesi


fonksiyonun geri donus degeri  oalrak fonksiyonu cagiran koda iletilir.


return x + y:





bir programin icinde bir cok return ifadesi olabilir. Bunlar genelde control statement ile kullanilir.










burdaki else silinseydi kodda bir degisiklik olmazdi






burdaki x signed int x ' dir.








ama C dilinde hata degildir. Garbage value ortaya cikar. Bu fonksiyonu kullanmak undefined behavior a sebebiyet verir.




if in icine girmedigi durum yani else durumu belirlenmedigi icin yine undefined behavior






sayinin kac basamakli oldugunu hesaplar






program calisirsa bu yazilim da sifir degeri donucek yani true olacak diger turlu kosulda false yani main fonksiyonu return 1 donecek.
Geri donus degerleri isletim sistemine gider. Bash ile programi yurutup bash ile bu ciktiyi gorerek programin isni yapip yapamadigini anlariz.







Boyke bir fonksiyonda ne eksik?

functionun icine void yazmak her zaman daha iyidir ve fonksiyonlar her zaman bir deger dondururler o nedenle return deyimini kullanmak gerekir.






C99 da eger main fonksiyonuna return yazmazsan hata gelmez. Cunku deleyici otomatikmen kendi fonksiyonun icine ' return 0; ' yazar.


4) integer fonksiyonun kullanildigi yontem normalde o bir fonksiyondur ama geri donusdegeri eger senin ihtiyacin varsa kullanabilecegin bir bilgidir.

printf int dondurur ama harf yazar




geri donus degeri yani return value ekrana yazilan toplam karakter sayisini ifade eder.





5) Integer kullanim yontemi; Bazi fonksiyonlarin geri donus degeri yoktur bunun nedeni

mesela ekran silen fonksiyon 




Funtion Call

1) Define a Function
2)Fuction Definition
3) Funtion Call
4) Function Declaration

Fonksiyonu cagirmak demek o fonksiyonu calistirmak demek. 





Mesela burda ndgit teki x degiskenine 10 atansaydi o zaman 100 yani print edilen deger 3 olarak cikardi

Tanimlanan degisken kadar arguman gonderilmeli.




basta ndigit olarak kisimda hata yok cunku tek arguman belirlenmis ve kuallanilmis ama ikici tarafta main fonksiyonunda herhangi bir arguman kullanilmamis bu nedenle program too few argument in funtion call hatasi veriyor. 



syntax hatasi




syntax hatasi degil



C++ da ayni fonksiyon ismini kullanabilirsin yani fuction overloading yapabilirsin ama C de yapamazsin C de her fonksiyonun ismi benzersiz olmali.




C de bu olmaz ama C++ da olur.



Bu sekilde isimlandirilerek C de fonksiyonlar ayristirilabilir ve kullanilabilir.



goruldugu gibi hata var.

default argument (varsayilan arguman)


Eger func fonksiyonuna sadece iki arguman gonderilirse 10, 20 gibi ucuncu arguman daha onceden tanimlandigi icin 0 olarak kullanilir ama istenirse 30 gibi bir argumanla da z argumaninin uzerine yazilabilir.


z burda 6 dir basamak sayisni bulan ndigit programi calistirilmistir






Bu fonksiyonin geri donusumu void oldugundan yeni bir geri donusu olmadigindan statement olarak kullanilir.


Bu syntax hatasi olur.  cunku integer bir degere void bir deger atamaya calisiyoruz.



Eger geri donus degeri olan bir fonksiyonu kallnirken ger donug degeri belirtilmezse integer bool gibi bu o fonksiyonu discarde etmek olur. Herhangi bir syntax hatasi degildir. Eger geri donus degeri varsa yani sadece bir bildirim degilse logic hata vardir. Logic hata olsa yada olmasa yine de legaldir. 





Burdaki max3 gecerlidir ama logic hata vardir. Boyle bu kullanim olmussa;
birinci programci fonksiyonun amacini anlamamistir,
ikincisi geri donus degerini kullanmayi unutmustur.


Fonksiyonun geri donus degeri bir degiskende sakalanarak genellikle geri donus degeri kullanilir.


1. Fonksiyon cagri ifadesi ile bir degiskene ilk deger vermek to initialize variable with a function call expression

2. Ya da fonksiyonun geri donus degerini bir degiskene atamak  to assign return a value of the function



Yada bu bir atama olabilir.

Neden bir fonksiyonun geri donus degerini bir degiskende sakliyoruz.




Ayni fonksiyonu degiskensiz farkli yerlerde yazarsam kafa karisikligina sebebiyet verebilir o nedenle degiskende saklamayi tercih ederiz. Cunku normalde fonksiyon tekrar tekrar yazilmaz degiskende saklanir. 



 Bos yere kaynak kaybi yasanir zaten hesaplanbir fonksiyonu tekrara tekrar hesaplatmak programin kapladigi alani arttirir.

b) bazen degeri hesapladigin yer ile kullanacagin yer farklkidir.



Eger bir fonksiyonun degeri sadece bir kere kullanilacajsa baska bir degiskende saklanmamalidir sebebi cirkin, garip gorunur.


Cok fazla degisken kulsan yanlislikla daha onceden kullandigin bir degiskeni kullanabilirsi ve bu hataya sebep olur.


scope leakage a sebep olabilir. Bir ismi kullanilmadigi yerlerde de kullanabilirsin orda kullanmaman gerekiyordur. Kapsadigi yerde bunu yaparsan syntax hatasi vermez ve yanlis yerde yanlis degisken kullanmis olursun.





bunu yerine 
boyle kullanmak daha iyi



x*y bir ifadedir a*b de ornegin baska bir ifadedir. 

x*y > a*b  bir alt ifadedir. Main Expression ' dir. Digerlerine ise Subs expression denir.


x*y > a*b  asgidaki fonksiyonlara bakiniz:

double sin(double);
double cos(double):

if(sin(a) + cos(b ) > sqrt(x))
++cnt;





C de butun fonksiyon cagrilari call by value dur. 






Burda X degerinin degeri her zaman 23 dur. Fonksiyon cagrilari call by value dur x degiskenin kendi degerine erismez.
Bir fonksiyon baska bir fonksiyonun yerel degiskenine ancak o diger fonksiyonun adresi belirtilirse gerceklestirilebilir.




Referans sembolunu kullandigimiz anda fonksiyon cagrisi call by reference olur bu neden le x in degeri degisir.


 
Referans almasaydik o atana degiskeni fonksiyona yazma imkanimiz olmayacakti.


burda const char *p bir pointer degisken ama geri kalan , ... variedik bir degiskendir.




bu 3 noktali tokenin yani karakterin yani atomun adina elipsis denir ... . Variedik fonksiyon olabilmesi icin son parametre degiskeni elipsis olmasi gerekiyor.

 


printf in en sonundaki f  formated output function i sembolize eder.
Burda printf e bir argumanla cagri yapabiliriz sadece.


syntax hatasi


syntax hatasi yok.




Sabit lerin turlerin de char short float gibi turleri yoktur.





tam sayi sabitleri ve gercek sayi sabitleri olarak ikiye ayrilir.



bu degisken ler decimal oktan ve hexadecimal seklinde yazilmistir.



gecerli

Compiler extantion, derleyici eklentisi




derleyiciye gore o zaman int turu degil cunku benim derleyicimde int 2 byte ama baskasinda 4 byte olabilir. O nedenle bu duruma implimentation defined diyebiliriz.

hexadeceimal sekilde yazilmis olmasi burda int olarak tanimlamayacagimiz anlamina gelmiyor cunku 2 byte lik int sinirini gecmiyor.


Oktanda da yine bu ayni



Sadece tek kural unsigned int olabilmesi icin yine int eger sinirinda kalmasi lazim ama bir de sonunda U olmasi gerekiyor.


Long olabilmesi icn de sonuna L koyacaksin




bu kod hic bisey dondurmez disari bisey cikmaz




Bu unsigned  long demek


bunlarda syntax hatasi yok


bu da unsigned long long





 

boyle bir durumda her zaman unsigned uzerinden ilerler



float i kullanabilmen icin hem nokta hem de F harfi olmali lazim sonda




longun gosterimi











Control caracteri ilk 32 karakter ve 127 sayisidir yani toplamda 33 karakter vardir.








 

Bir karakterin anlami disinda baska bir anlamda kullanilmasina escape denir.

3 farkli escape sequence var 


diger son iki kensini verir yani cift tirnek ve ters bolu










bu sekilde ters bolulu yazarsan bu deger derleyicix ile yazilirsa hexadecimal ifade olarak degerleri alir x yoksa oktan deger olarak alir, bu nedenle integer degeri decimal cinsinden farklidir.


bosluk ascii de 32 degerini verir char olarak bunu derleyici aldigi icin




Standart Kutuphaneye Giris


Standart kutuphave ve standart C fonksiyonlarinin olmasinin sebebinin 3 tane varlik nedeni var.

1- Common interface  (Kolay algilamayi saglar)
2- Yeniden fonksiyon olusturmaya gerek yok kutuphanede varsa standart bir fonksiyuonsa hemen ordan kolaylikla kullaniriz.
3-  Isletim sisteminden bagimsiz olarak calisabilmesini saglar
 variedik paremetre istedigin kadar gonderirsin print f i en azindan bir arguman ile cagirmak gerekiyor

Giris Cikis islemleri 1

Input output operations.
Calisir programam process diyoruz.

formatli giris cikis fonksiyonlarinin sonunda f var 

output width sinirlama icin kullanilir
bosluk olan yerleri istege gore doldurulan formatlama ozelligine fill character denir.
gercek sayi fixed olarak mi yoksa scientific notasyonla mi gosterilcek tercih edilmesi lazim


noktadan sonra ne kadar sayi yazilacak o da tercih edileblir.

printf in variadik fonksiyon oldugunu sondaki 3 nokta yani elipsis sembolu olmasindan dolayi oyle oldugunu anliyoruz.




pointer konusu: adres ile birlikte calisir. Bir fonksiyonun degiskeni pointer ise onun anlami o bizden bir referans ariyor.

diziler call by reference ile cagrilmali yani adres gondererek cagrilmali. Bir fonksiyona bir dizi gondermek gerekiyorsa tek yolu C de adress gondermektir.

varlik nedeni yazi tutmak isteyen degiskenler array ile bu degiskenleri tutar array i kullanmak icin de adres gondermesi gerekir. C++ da ama bu degiskenler arraylerde tutulmaz.


yaziinin sonuna geldigimizi gostermek icin en sonda sifir tutar.
setter getter  adres gonderir digeri adres alir.
printf kullandigin andda aslinda array decay yapiyorsun.





geri donus degerinden donen degeri kullanmamak ona discard etmek denir.


 bunlari kullanarak printf icinde formatlama tercihlerini belirtiriz.











4 Haziran 2017 Pazar

HTML ve CSS

Androide çok benzer bir yapıda çalışırlar. HTML sisteme javadaki gibi komutlar verir, CSS ise main activity de yer alan kısıma benzer bir görünüm düzenlemesi gerçekleştirir.
Öncelikle işlem yapılması istenen dosya kısmına yeni bir klasör açılır. Brackets programıyla burada yeni bir proje açılır ve içine html ve css


<!DOCType html>

<html>

<head>
    <title>My first blog post</title>
    <link rel="stylesheet" type="text/css" href="style.css">      
    </head>

<body>
    <h1>My first blog post</h1>
    <h2>This is my first blog post</h2>
    <p class="main-text">
        Bu <strong>sert</strong> bir <strong>cümle</strong> çünkü sert.I would likt to <em>emphasize</em> how importnt it is to follow this course until the end!
       
        This is some <u>underlined</u>text.<br>
        <br>
       
       
    <br>Lorem ipsum dolor sit amet, consectetuer adipiscing elit.<br>
        Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo. Nullam dictum felis eu pede mollis pretium. Integer tincidunt. Cras dapibus. Vivamus elementum semper nisi. Aenean vulputate eleifend tellus. Aenean leo ligula, porttitor eu, consequat vitae, eleifend ac, enim. Aliquam lorem ante, dapibus in, viverra quis, feugiat a, tellus. Phasellus viverra nulla ut metus varius laoreet. Quisque rutrum. Aenean imperdiet. Etiam ultricies nisi vel augue. Curabitur ullamcorper ultricies nisi. Nam eget dui. Etiam rhoncus. Maecenas tempus, tellus eget condimentum rhoncus, sem quam semper libero, sit amet adipiscing sem neque sed ipsum. Nam quam nunc, blandit vel, luctus pulvinar, hendrerit id, lorem. Maecenas nec odio et ante tincidunt tempus. Donec vitae sapien ut libero venenatis faucibus. Nullam quis ante. Etiam sit amet orci eget eros faucibus tincidunt. Duis leo.    
    </p>
   
     <img src="author.jpg" alt="Author photo">
   
   
    <p id="author-text">Caner Ezeroglu</p>
   
 
    <a href="http://canerezeroglu48.blogspot.com.tr/" target="_blank">Link to blog</a>
    <a href="author.jpg" target="_blank">HTML logo</a>
   
    <h2>HTML is amazing.</h2>
    <p class="main-text">
    Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo. Nullam dictum felis eu pede mollis pretium. Integer tincidunt. Cras dapibus. Vivamus elementum semper nisi. Aenean vulputate eleifend tellus. Aenean leo ligula, porttitor eu, consequat vitae, eleifend ac, enim. Aliquam lorem ante, dapibus in, viverra quis, feugiat a, tellus. Phasellus viverra nulla ut metus varius laoreet. Quisque rutrum. Aenean imperdiet. Etiam ultricies nisi vel augue. Curabitur ullamcorper ultricies nisi. Nam eget dui. Etiam rhoncus. Maecenas tempus, tellus eget condimentum rhoncus, sem quam semper libero, sit amet adipiscing sem neque sed ipsum. Nam quam nunc, blandit vel, luctus pulvinar, hendrerit id, lorem. Maecenas nec odio et ante tincidunt tempus. Donec vitae sapien ut libero venenatis faucibus. Nullam quis ante. Etiam sit amet orci eget eros faucibus tincidunt. Duis leo. Sed fringilla mauris sit amet nibh. Donec sodales sagittis magna. Sed consequat, leo eget bibendum sodales, augue velit cursus nunc,
   
    </p>
   
    <img src="logo.png" alt="The HTML logo">
    </body>

</html>


css**********
body{
    font-family: Helvetica Neue, Arial;
    font-size: 18px;
}

h1, h2{
    color:#00b200;
 
    font-family: Helvetica Neue, Arial;

}


h1{
    font-size: 40px;
}

h2{
    font-size: 25px;
  }

.main-text{
    text-align: justify
}

#author-text{
    font-size: 45px;
}

html**************



Programming Logic Controllers (SPS), TIA Portal

  INTRODUCTION   This report provides an overview of the TIA (Totally Integrated Automation) Portal software from Siemens. The TIA wh...