Klavyeden Hangi Tuşa Basıldığını Kontrol Etmek

C’de string ifadelerle çalışılırken genellikle ASCII kodlarına başvurulur. Harfler ya da simgeler yerine klavyede yer alan Home, Insert, Del, Fonksiyon tuşları gibi kısayollar için ise genişletilmiş ASCII kod listesinden yararlanılır.

Burada iki fonksiyondan yararlanılır. Birincisi kbhit() fonksiyonudur. Bir tuşa basıldıysa 1, basılmadıysa 0 değeri döndürür. Döngü içi kontrollerde kullanılabilir. Diğeri olan getch(void) fonksiyonu da herhangi bir karakter alabilir. Alınan tuş kullanılmak istenirse girdi değişkeninde olduğu gibi atama işleminde kullanılabilir.

char girdi;                  
    while (1==1){
          girdi = getch();
		if (kbhit()) { 
                girdi = getch();
				switch (girdi) {

		case 77: 
			printf("Sag ok tusuna bastiniz.\n");	
                        break;

				case 27:
                         printf("Esc tusuna bastiniz.\n");
                         break;

                case 83:
                         printf("Delete tusuna bastiniz.\n");
                         break;

                case 073:
                         printf("F1  tusuna bastiniz.\n");
                         break;

                case 71:
                         printf("Home tusuna bastiniz.\n");
                         break;	

                case 79:
                         printf("End tusuna bastiniz.\n");
                         break;	
				}
		}
    }
	return 0;
}

Diğer kısayol tuşları için genişletilmiş listeye ve tüm listeye buradan ulaşabilirsiniz.

Yeni Moda Kendi İnternetini Kurmak

Kuzey Kore’nin yıllardır sürdürdüğü İnternete kapalı sosyal hayatı bugün İran deneyecek. Küba, Çin, Myanmar gibi bir çok ülkede yapılan yaptırımlar neden artış gösterdi?

Globalizmin dijital ağı internet, bireysel kullanıcılarına olan etkileri kadar, hükümetlerin politikalarına da etki ediyor. ÇinKuzey Kore gibi ülkeler, bu etkileri en aza indirmekle büyük mücadele eden ülkeler arasında. Öyleyse dünyanın İnternetle derdi ne?

Okumaya devam et “Yeni Moda Kendi İnternetini Kurmak”

Dijkstra Algoritması ile En Kısa Yol Bulma

Dijkstra Algoritması, graflar içinde birbirine bağlı düğümler arasında gidilebilen en kısa yolu bulmayı amaçlar. Algoritma, İnternet ağ trafiği protokolünü yönlendiren OSPF (Open Shortest Path First) protokolünde, oyun programlamada, ulaşım ağlarında kullanılır.

Algoritmanın Çalışması

1. Kaynak düğüm belirlenir. Kaynak düğümden gidilebilen diğer diğer düğümler seçilir.

2. Bu düğümlerden en az maliyete sahip olan işaretlenir, diğerleri aynı bilgiyle devam eder. Seçilmemiş düğümler için maliyet sonsuz olarak işaretlenir.

3. İkinci adımda seçilen maliyeti en az olan düğümden gidilebilen düğümler arasında aynı işlem uygulanır. Sonsuz işaretlenen düğümler bitinceye kadar devam edilir.

Bu grafta A düğümünden diğer düğümlere giden en kısa yolu Dijkstra algoritmasıyla bulalım. Dikkat edilecek nokta; önceden işaretlenmiş düğümler için daha kısa mesafeye bakılmaz. Seçim her zaman işaretlenmemiş düğümler arasında yapılır. Örneğin K’ya giden yol J ve I düğümlerinden daha kısa görünürken önceden işaretlenmediği için değiştirilmiştir.

AA

Bu tabloyu çıkardıktan sonra A ve düğümler arası gidilen en kısa yol bulunabilir. Örneğin A – H arası gidilebilecek en kısa yol, tabloya göre A-C-F-E-H yolu izlenerek toplamda 2+1+1+2 olmak üzere 6 birim olduğu görülür.

İnsancıklar – Dostoyevski

 

“Kafamda tuhaf düşünceler. Sanki ağrıyan kafam değil de bu düşünceler.”

“İnsanı değerli ve üstün kılan fiziki güç değildir. Fiziki güç      ve gençlik, insanın hayvan boyutudur ve geçicidir. Asıl değerli olan insanın yaptığı faydalı işlerdir.”

“Fakirlikle sefilliği birbirinden ayırmamız lazım. Sefil insanın kaybedecek bir şeyi kalmamıştır. Yaşamaktan başka düşüncesi yoktur. Utanmayı bile unutmuştur. Ancak fakir insan öyle değildir. Çarşıda dolaşırken sokakta yürürken evine girerken yanından geçen insanlara ürkekçe bakar. ‘Benden mi söz ediyorlar’ diye kulak asar.”

“Kendini beğenmiş zenginlerin, arsız alaycıların, fakir edebiyatı yaparak para kazanan yazarların bakışları hep üzerimizdeler. Benim delik ayakkabımdan, yamalı elbisemden, akşam yediğim yağsız bulgurdan ve lahana turşusundan kime ne?”

“Diyeceğim o ki; insanların çoğu kendileri için değil de başkaları için giyinir. Daireye gelen pasaklı bir köylü ile iyi giyimli bir çiftlik ağası aynı muameleyi görmez. Bir general, kişiliğinden dolayı mı yoksa omzundaki yıldızlardan dolayımı itibar görür?”

 

ABAP 4 Data Dictionary ile Çalışmak

ABAP Data Dictionary veri ögeleri ve veritabanı tablolarını kullanabileceğimiz sözlüktür. ABAP geliştirilmeye başlandığı zamanlarda veritabanı tablolarını kullanmak ve görüntülemek için tasarlanmıştır. Bu yüzden SAP’nin önemli konuları arasında yer alır. ABAP DDIC ile çalışmak için SE11 işlem kodu kullanılır. Bu kod kullanıldığında ekrana şöyle bir menü gelir;

Okumaya devam et “ABAP 4 Data Dictionary ile Çalışmak”

ABAP 4’te Alt Program(Subroutine) Kavramı

Alt programlar, program içinde kullanılacak işlemleri defalarca yazmanın önüne geçmek için kullanılır. Değişik parametrelerle istendiği kadar kullanılabilir. Alt programın içinde parametre tanımlanmışsa bunlara formal parametreler denir. Yinelemeli olarak da kullanılabilir. Aşağıda bir alt program kullanımının örneği verilmiştir.

tecrube_hesapla adlı form, doğum yılı 1985’ten büyük kayıtları yazdırırken, tablo_doldur formu oyuncu_kaydı tablosunu dolduruyor.

Created with colorer-take5 library. Type 'abap4'

TYPES: yil TYPE n LENGTH 4,
tecrube TYPE c,
adsoyad TYPE c LENGTH 15.

TYPES: BEGIN OF oyuncu,
  ad TYPE adsoyad,
  soyad TYPE adsoyad,
  dogum_yili TYPE yil,
  o_tecrube TYPE tecrube,
  END OF oyuncu.

data: t_oyuncu TYPE STANDARD TABLE OF oyuncu.

DATA: oyuncu_kaydi TyPE oyuncu,
      oyuncu_kaydi_tablosu like t_oyuncu.

PERFORM tablo_doldur USING 'Isil' 'Alben' '1986' CHANGING oyuncu_kaydi_tablosu. 
PERFORM tablo_doldur USING 'Nevriye' 'Yilmaz' '1980' CHANGING oyuncu_kaydi_tablosu. 
PERFORM tablo_doldur USING 'Tugba' 'Palazoglu' '1980' CHANGING oyuncu_kaydi_tablosu.
PERFORM tablo_doldur USING 'Yasemin' 'Horasan' '1983' CHANGING oyuncu_kaydi_tablosu.
PERFORM tablo_doldur USING 'Nilay' 'Yigit' '1979' CHANGING oyuncu_kaydi_tablosu.
 LOOP AT oyuncu_kaydi_tablosu INTO oyuncu_kaydi.
 IF sy-tabix = 1. WRITE :/5 'Ad', 15 'Soyad' , 40 'Dogum Yili'. 
 ULINE. 
 ENDIF. 
 PERFORM tecrube_hesapla USING oyuncu_kaydi-dogum_yili 
 CHANGING oyuncu_kaydi-o_tecrube. 
 MODIFY oyuncu_kaydi_tablosu from oyuncu_kaydi TRANSPORTING o_tecrube.
 CLEAR oyuncu_kaydi.
 ENDLOOP.

LOOP AT oyuncu_kaydi_tablosu INTO oyuncu_kaydi where o_tecrube = 't'.
  WRITE :/ oyuncu_kaydi-ad UNDER 'Ad',
  oyuncu_kaydi-soyad UNDER 'Soyad',
  oyuncu_kaydi-dogum_yili UNDER 'Dogum Yili'.

ENDLOOP.
 FORM tecrube_hesapla USING p_dogum_yili TYPE yil
 CHANGING p_tecrube TYPE tecrube.
 IF p_dogum_yili <= 1988. p_tecrube = 't'.
 ELSE. p_tecrube = 'g'. 
 ENDIF.
 ENDFORM.
 FORM tablo_doldur USING p_ad p_soyad p_dogum_yili
 CHANGING p_oyuncu_tablosu like t_oyuncu.
 DATA: oyuncu_kaydi_form TYPE oyuncu.
 oyuncu_kaydi_form-ad = p_ad.
 oyuncu_kaydi_form-soyad = p_soyad.
 oyuncu_kaydi_form-dogum_yili = p_dogum_yili.
 APPEND oyuncu_kaydi_form to p_oyuncu_tablosu.
 ENDFORM.