27 Şubat 2017 Pazartesi

Bellek ve Adresleme


Bilgisayarın ana belleği (RAM) sıralı kaydetme gözlerinden oluşmuştur.
Her göze bir adres atanmıştır.
Bu adreslerin değerleri 0 ila belleğin sahip olduğu üst değere bağlı olarak değişebilir.
Örneğin 1GB bir bellek,
1024*1024*1024 = 1073741824 adet gözden oluşur.

Bir programlama dillinde, belli bir tipte değişken tanımlanıp ve bir değer atandığında, o değişkene dört temel özellik eşlik eder:

değişkenin adı
değişkenin tipi
değişkenin sahip olduğu değer (içerik)
değişkenin bellekteki adresi






Örnek: Bellek ve Adresleme







Atama deyimlerine göre hücrelerin adreslere yerleşimi otomatik olarak gerçekleşir.
yas değişkeni 5400, 5401, 5402, 5403 adreslerini kapsadığından
boy değişkeni 5404 adresinden başlar ve sırasıyla 5405, 5406 ve 5407 adreslerini işgal eder.
kilo değişkeni bu nedenle 5408  adresinden başlar ve 5409, 5410, 5411 adreslerini kapsar.
cins değişkeni ise 5412 adresini tutar.

Örnekte belirtilen kod bloğundaki değişkenler bilgisayar tarafından belirli bir adreste saklanır. Bu yönteme implicit (örtük) adresleme denir.
İşaretçi değişken kullanılarak, işaretçilere verilerin bellekte saklandığı bellek hücrelerinin başlangıç adresleri atanır. Bu yönteme ise explicit (açık) adresleme denir.


Örnek:
    int tam = 33;

Bu değişken için, int tipinde bellekte (genellikle herbiri 1 bayt olan 4 bayt büyüklüğünde) bir hücre ayrılır ve o hücreye 33 sayısı ikilik (binary) sayı sitemindeki karşılığı olan 4 baytlık (32 bitlik) karşılığı aşağıdaki gibi yazılır.
    00000000 00000000 00000000 00100001


Örnek:
    int tam = 33;




Bellek adresleri genellikle onaltılık (hexadecimal) sayı sisteminde ifade edilir.
0x3fffd14 sayısı onluk (decimal) sayı sisteminde 67108116 sayına karşılık gelir. Bunun anlamı, tam değişkeni, program çalıştığı sürece, bellekte 67108116. - 67108120. numaralı gözler arasındaki 4 baytlık hücreyi işgal edecek olmasıdır.







tam adlı değişkenin bellekteki gerçek konumu ve ikilik düzendeki içeriği aşağıdaki gibidir:







Değişkenin saklı olduğu adres, & karakteri ile tanımlı adres operatörü ile öğrenilebilir.
Bu operatör bir değişkenin önüne konursa, o değişkenin içeriği ile değil adresi ile ilgileniliyor anlamına gelir.








Birlikler (Union)


Birlikler de yapılar gibi sürekli belleğe yerleşen nesnelerdir.
Birlikler yapılara göre daha az kullanılırlar. Bir programda veya fonksiyonda değişkenlerin aynı bellek alanını paylaşması için ortaklık bildirimi union deyimi ile yapılır. Bu yer, birliğin en büyük alanı kadardır.
Bu da belleğin daha verimli kullanılmasına imkan verir.
Bu tipte bildirim yapılırken struct yerine union yazılır.


Örnek:

union test
{
      int x;
      char y[10];
} p

Bu tanıma göre x tamsayısı için bellekte 4 baytlık yer ayrılmaktadır.
Birlik içinde yer alan y değişkeni için 10 baytlık yer ayrılmıştır.
Bu durumda, birlik için en fazla 10 baytlık bir yer ayrılmıştır. Ayrılan bu alan, birliğin her bir alanı tarafından ortak kullanılır.

typedef Kullanımı

typedef deyimi C dilinde değişken tanımlama yaparken kullanılan int, float, char gibi değişken isimlerini değiştirmeye yarar.
Bu sayede kodlar programcının anadiline daha fazla yaklaşmış olur.
struct deyimi ile beraber kullanıldığında oluşturduğunuz yapıyı bir değişken türü olarak tanımlayıp o yapının çoğaltılmasını sağlar. Bu yapıdan değişken tanımlamak için tekrar struct deyiminin kullanılmasına gerek kalmaz.


Örnek: typedef Kullanımı

struct içerisinde struct Kullanımı

C programlama dili struct içerisindeki bir üyenin yine bir struct olmasına izin verir. Bunu yapmaktaki temel amaç:
Kaynak kodun tekrar kullanılabilirliğini arttırmak
Kaynak kodun okunabilirliğini arttırmak
Kaynak kodu sadeleştirmek

Örnek: struct içerisinde struct Kullanımı


struct (Yapı) Deyimi





Yapılar, farklı veri türlerine sahip değişkenlerin bir grup olarak değerlendirilmesi ve bu grubun bir isimle kullanılması amacıyla tercih edilen kullanıcı tanımlı bir veri türüdür.
Yapılar diziler gibi bellekte sürekli kalır.
Bir yapı içerisindeki elemanlara üye (member) denir.
Üyelerin her biri farklı veri tipine sahip olabilir.
Yapılar sayesinde kendi veri tipinizi üretmeniz mümkündür.
Yapılar farklı programlama dillerinde Record (Kayıt) olarak da geçerler.

Yapılar int, float, char gibi farklı tipteki değişkenleri veya aynı türdeki birden çok değişkeni bir araya getirmeyi sağlar. Nesne tabanlı programlamanın da temelini oluşturan bu oluşumu iyi öğrenmek, ileriki zamanlarda C# ve JAVA gibi tamamen nesneye dayalı programlamayı benimsemiş gelişmiş dilleri öğrenmeye de yardımcı olacaktır.


Yapı gösterimi aşağıdaki gibidir:

struct yapı_adı{
    veri_tipi yapı_değişken_ismi;
     veri_tipi yapı_değişken_ismi;
         ...
       };

Örnek: Bir üniversitedeki öğrencilerin bilgilerini struct kullanarak ifade edelim.
Kullanılacak bilgiler aşağıdaki gibi olsun:
Öğrenci Numarası
Öğrenci Adı
Öğrenci Soyadı
Öğrenci Cinsiyeti
Öğrenci Fakültesi/Bölümü
Öğrenci  Genel Not Ortalaması






Örnek: struct Okuma ve Yazma







struct Değişkenlerini Kopyalama

struct tipindeki bir değişkenin değeri aynı tipteki bir başka struct değişkenine atanabilir.
Atama aşağıdaki şekilde yapılır:

    degisken1 = degisken2;

Örnek: struct Kopyalama





struct Değişkenlerini Karşılaştırma




struct tipindeki bir değişken aynı tipteki bir başka struct değişkeni ile direk karşılaştırılamaz. Ancak sahip olduğu üyelerinin tamamı diğeri ile karşılaştırılır.
Aşağıdaki karşılaştırma yanlıştır:

    if (degisken1 == degisken2) ….

Örnek: struct Değişkenlerini Karşılaştırma

Genellikle yapı değişkeni veya nesne karşılaştırmalarında tek tek üyeleri veya özellikleri karşılaştırmaya gerek yoktur. Çünkü o değişkeni diğer değişkenlerden ayırt edecek benzersiz bir üye mutlaka bulunmaktadır. 





struct Değişkenleri ve Fonksiyonlar

struct tipindeki bir değişken herhangi bir fonksiyona parametre olarak aktarılabilir.
Herhangi bir fonksiyon geri dönüş değeri olarak struct tipinde bir veri türü geriye dönebilir.

Örnek: struct ve Fonksiyonlar









struct Değişkenleri ve Diziler

struct tipi içerisinde dizi türünde üyeler tanımlamak mümkündür.
Dizileri struct tipinde tanımlamak mümkündür.

Örnek: struct Değişkenleri ve Diziler









Örnek: struct Değişkenleri ve Diziler






Yapılar ve Birlikler (enum Deyimi)


enum Deyimi / Sayma Sabitleri (Enumeration Constants)
struct Deyimi / Yapı (Structures)
typedef Deyimi
union Deyimi / Birlik


enum Deyimi

Sayma tipi olarak adlandırılırlar.
Bir sayma tipi, enum anahtar kelimesiyle tanıtılır ve tanıtıcılar ile temsil edilen tamsayı sabitlerinin kümesidir.
Bu sayma sabitleri, değerleri otomatik olarak belirlenen sembolik sabitlerdir.
enum içindeki değerler aksi belirtilmedikçe 0 ile başlar ve 1 arttırılır.
Bu tip, değişkenin alabileceği değerlerin sabit olduğu durumlarda programı daha okunabilir hale getirmek için kullanılır.


Mantıksal örnekler:
Cinsiyet: Kadın, Erkek
Calisma_Durumu: İssiz, Calisan, Ögrenci, Emekli
Evlilik_Durumu: Evli, Bekar
Egitim_Durumu: İlkokul, Lise, OnLisans, Lisans, LisansUstu

Genel yazım biçimi:
enum tip_adı{değer_1, değer_2, ..., değer_n} değişken_adı;


Örnek:
       enum bolumler {programcilik, donanim, muhasebe, motor};

Tanımı ile derleyici
programcilik için 0,
donanim için 1,
muhasebe için 2 ve
motor için 3 değerini
kabul ederek atamaları buna göre yapar.








Alıştırma: enum Oluşturma

Aşağıdaki bilgileirn enum tiplerini oluşturunuz:
Cinsiyet: Kadın, Erkek
Calisma_Durumu: İssiz, Calisan, Ögrenci, Emekli
Evlilik_Durumu: Evli, Bekar
Egitim_Durumu: İlkokul, Lise, OnLisans, Lisans, LisansUstu

HTML-5 ile ilgili yardımcı web adresleri

http://openhtml5games.com/
http://www.html5quintus.com/
http://codecanyon.net/category/html5/games
http://blog.lessmilk.com/how-to-make-flappy-bird-in-html5-1/
http://www.html5gamedevelopment.com/html5-game-tutorials
http://www.playmycode.com/
http://cssdeck.com/labs/classic-snake-game-with-html5-canvas

Php Kodları

Php Define

<!DOCTYPE html> <html> <body> <?php define("GREETING", «hELLO!"); function myTest() {      echo GREETING; }   myTest(); ?>  </body> </html>


Php If

<!DOCTYPE html> <html> <body> <?php $t = date("H"); echo "<p>The hour (of the server) is " . $t; echo ", and will give the following message:</p>"; if ($t <  "10") {      echo "Have a good morning!"; } elseif ($t <  "20") {      echo "Have a good day!"; } else {      echo "Have a good night!"; } ?>   </body> </html>


Php Switch



<!DOCTYPE html> <html> <body> <?php $favcolor = "red"; switch ($favcolor) {      case "red":          echo "Your favorite color is red!";          break;      case "blue":          echo "Your favorite color is blue!";          break;      case "green":          echo "Your favorite color is green!";          break;      default:          echo "Your favorite color is neither red, blue, or green!"; } ?>   </body> </html>


Php While do While


<!DOCTYPE html> <html> <body> <?php $x = 1;   while($x <= 5) {    echo "The number is: $x <br>";    $x++; } ?>   </body> </html>


<!DOCTYPE html> <html> <body> <?php $x = 1; do {      echo "The number is: $x <br>";      $x++; } while ($x <= 5); ?> </body> </html>

Php For ve ForEach


<!DOCTYPE html> <html> <body> <?php for ($x = 0; $x <= 10; $x++) {    echo "The number is: $x <br>"; } ?>   </body> </html>


<!DOCTYPE html> <html> <body> <?php $colors = array("red", "green", "blue", "yellow"); foreach ($colors as $value) {    echo "$value <br>"; } ?>   </body> </html>


Php Fonksiyon

<!DOCTYPE html> <html> <body> <?php function sum($x, $y) {      $z = $x + $y;      return $z; } echo "5 + 10 = " . sum(5,10) . "<br>"; echo "7 + 13 = " . sum(7,13) . "<br>"; echo "2 + 4 = " . sum(2,4); ?> </body> </html>

<!DOCTYPE html> <html> <body> <?php function familyName($fname, $year) {      echo "$fname Refsnes. Born in $year <br>"; } familyName("Hege","1975"); familyName("Stale","1978"); familyName("Kai Jim","1983"); ?> </body> </html>

Php Dizler

<!DOCTYPE html> <html> <body> <?php $cars = array("Volvo", "BMW", "Toyota"); echo "I like " . $cars[0] . ", " . $cars[1] . " and " . $cars[2] . "."; ?> </body> </html>

<!DOCTYPE html> <html> <body> <?php $cars = array("Volvo", "BMW", "Toyota"); $arrlength = count($cars); for($x = 0; $x <  $arrlength; $x++) {      echo $cars[$x];      echo "<br>"; } ?> </body> </html>


Php Hazır Fonksiyonlar



<!DOCTYPE html> <html> <body> <?php $cars = array("Volvo", "BMW", "Toyota"); sort($cars); $clength = count($cars); for($x = 0; $x <  $clength; $x++) {      echo $cars[$x];      echo "<br>"; } ?> </body> </html>


<!DOCTYPE html> <html> <body> <?php $numbers = array(4, 6, 2, 22, 11); rsort($numbers); $arrlength = count($numbers); for($x = 0; $x <  $arrlength; $x++) {      echo $numbers[$x];      echo "<br>"; } ?> </body> </html>

Php Super Global


<!DOCTYPE html> <html> <body> <?php echo $_SERVER['PHP_SELF']; echo "<br>"; echo $_SERVER['SERVER_NAME']; echo "<br>"; echo $_SERVER['HTTP_HOST']; echo "<br>"; echo $_SERVER['HTTP_REFERER']; echo "<br>"; echo $_SERVER['HTTP_USER_AGENT']; echo "<br>"; echo $_SERVER['SCRIPT_NAME']; ?> </body> </html>


Php Dosya Yazma


<!DOCTYPE html> <html> <body> <?php $myfile = fopen("webdictionary.txt", "r") or die("Unable to open file!"); echo fread($myfile,filesize("webdictionary.txt")); fclose($myfile); ?> </body> </html>


Diğer Php Konuları…


PHP Advanced
PHP Arrays Multi
PHP Date and Time
PHP Include
PHP File Handling
PHP File Open/Read
PHP File Create/Write
PHP File Upload
PHP Cookies
PHP Sessions
PHP Filters
PHP Filters Advanced
PHP Error Handling
PHP Exception
PHP - XML
PHP XML Parsers
PHP SimpleXML Parser
PHP SimpleXML - Get
PHP XML Expat
PHP XML DOM

PHP - AJAX
AJAX Intro
AJAX PHP
AJAX Database
AJAX XML
AJAX Live Search
AJAX RSS Reader
AJAX Poll

PHP Examples
PHP Examples
PHP Quiz
PHP Certificate
PHP Reference
PHP Array
PHP Calendar
PHP Date
PHP Directory
PHP Error
PHP Filesystem
PHP Filter
PHP FTP
PHP HTTP
PHP Libxml
PHP Mail
PHP Math
PHP Misc
PHP MySQLi
PHP SimpleXML
PHP String
PHP XML
PHP Zip
PHP Timezones