get char yani ‘KARAKTER AL’ C İLE PROGRAMLAMA DEVC

25 MAYIS ALGORİTMA DERSİ ÖĞRENDİKLERİM: Karakter Dizisi,Matrisler

KAZANIMLAR:

Kullanıcının girdiği bir kelimeyi karakter dizisine atar ve ekrana yazdırır.

ASCII Karakter Tablosu

Girilen bir kelimenin uzunluğunu bulur ve tersten yazdırır

Girilen bir kelimedeki büyük harfleri küçük harfe,küçük harfleri ise büyük harfe dönüştür.

Girilen kelimenin harflerinden oluşan bir dik üçgen figürü oluşturur.

 

BÖLÜM 1 KARAKTER DİZİLERİ VE UYGULAMALARI

Kelime (string) char olarak karakter dizisi şeklinde tanımlanmalıdır boyutu 100 girmek yeterlidir çekoslavakyalaştırılamadıklarımızdanmısın bile 100 harfli olmadığından bu boyut yeterlidir.

Yani kullanıcıdan bir kelime girmesini istediysek bunu

1.       Adım TANIMLAMA:   char kelime[100]

şeklinde tanımlamalıyız.

Karakter grubuna string adı verilir ve s ile gösterilir.

Kelimeler birden çok karakterden oluştuğundan stringdir.

2.       Adım KULLANICININ KELİME GİRMESİ:    

scanf(“%s”, kelime);

3.       Adım KONTROL:    

Kullanıcını girdiği kelimeyi bilgisayar algıladımı?

 

printf(“%s”, kelime);

4.       Adım GİRİLEN KELİMENİN UZUNLUĞUNU BULMA

Uzunluk bir tam sayı olduğundan integer olarak tanımlanır:

 İnt uzunluk

For döngüsü yardımıyla karakter dizisinde null yani ‘\0’ karakterine kadar gidilir.

Örnegin gamze 5 harfli bir isimdir karakterleri ‘g’ ‘a’ ‘m’ ‘z’ ‘e’ ve ‘\0’dır bu ‘\0’ kelimenin bittiğini bize gösterdiğinden uzunluk nulla kadar artar.

Yani kelime[0] = ‘g’ …..kelime[5] = ‘\0’ dır  

 for(uzunluk=0;kelime[uzunluk] != '\0';uzunluk++);

0,1,2,3,4 à 5 adet karakter var demekki uzunluk 5miş.

  printf("%d",uzunluk);

5.       adım Kelimeyi tersten yazdırma

gamze kelimesindeki harfler karakter dizisinde sırasıyla 0 1 2 3 4 olarak saklanmakta ancak uzunluk 5 olduğundan uzunluk=5ti (bkz 4.adım).Biz kelime[4] olan g harfinden başlamak istiyoruz.Bu nedenle uzunluk-1 den başlıyoruz 0 dan büyük eşit olduğu sürece i yi azaltıyoruz.

 

for(i=uzunluk-1;i>=0;i--)

printf("%c",kelime[i]);

6.       adım Harfleri bir dik üçgene atamak

önce uzunluk bulma kodu yazılır

for(uzunluk=0;kelime[uzunluk] != '\0';uzunluk++);

sonra dik üçgen kodu yazılır

for(i=0;i<uzunluk;i++){

printf(“\n”);

for (j=0; j<=i; j++)

 

eğer

g

a a

m m m

şeklinde yazdırmak istersek dış döngünün değişkenini kelime[i] şeklinde yazdırırız.

Eğer

g

g a

g a m

g a m z

g a m z e

şeklinde yazdırmak istersek iç döngü baz alınır kelime[j]

 

BÖLÜM 2 ASCII KARAKTER TABLOSU UYGULAMALARI

 

Aşağıdaki inputta output neden 65?

#include <stdio.h>

main(){

       printf("%d",'A');

       getch();

       }

 

Çünkü ‘A’ yani büyük A harfi karakterinin ASCII tablosundaki decimal karılığı 65.

Ascıı tablosunu ezberlemek zorunda değiliz bu şekilde karakterimizin decimal karşılığını öğrenebiliriz.

 

printf("%c",65);  ise bize A çıktısını verir.

65-90 arası büyük harfler 97-122 arası küçük harflerdir.

Bir i değişkeni atayarak for döngüsüyle bu başlangıç bitiş değerlerini printf("%c",i);  şeklinde alfabeyi yazdırabiliriz.

BÜYÜK KÜÇÜK HARF DÖNÜŞÜMÜ

A’yı a ya dönüştürmek istiyorsam aslında 65’i 97’ye dönüştürmek istiyorum.

97-65=32 yani 65-90 arasındaki büyük harflerin her birini 32 arttırmam lazımki büyük harf karşılıklarını elde ediyim.Tam tersini yapmak için ise yani büyük harfi küçük harfe çevirmek için

if (kelime[i] >= 65 && kelime[i] <= 90)  

printf ("%c", kelime[i]+32);

else

printf ("%c", kelime[i]-32);

BÖLÜM 3 YUTAN FONKSİYON GETCH FONKSİYONU;

ENTERE GEREK YOK SONUÇ HAZIR;

#include <stdio.h>

 

main(){

       int sayi;

      

       sayi=getch();

       printf("%d",sayi);

 

       getch();

       }

 

Bu kodu yazarak çalıştıralım.

Aslında bu kodu ASCII tablosunu unuttuğumuzda da kullanabiliriz.

Çünkü 0’a basınca 48 5’e basınca 53 A’ya basınca 65 A’ya basınca ise 97 yanıtını vs. veriyor.

Yani bize karakterlerin ASCI standardındaki decimal sayısal değerleri gösteriyor.

Anlamlı gelmesi için:

getch aslında bir kısaltma açılımı get char yani ‘KARAKTER AL’

scanf fonksiyonunda yazdığımız şeyleri görebiliyor ve  sonuç almak için entere basmak gerekiyordu.

Entere basmadan belli bir değer girdiğimizde sonuç almak istiyorsak getch() kullanmalıyız.Ancak getch fonksiyonu yazdıklarımızı algılayıp kaydetse hatta sonucu versede biz ne yazdığımızı göremiyoruz örneğin a tuşuna basıyorum program bunu algılıyor ve hafızasına alıyor ancak a tuşuna bastığım ekranda görünmüyor (scanf te görünüyordu) ne yazdığımı görmek için printf ekleyerek yazdırmam gerekiyor.

Ancak bu fonksiyonun 0’a basınca 48 yazdırdığını biliyoruz ancak biz 0 yazınca ekrandada 0 görmek istiyoruz bunun için ne yapabiliriz?

Sayi bir integer olmak üzere Sayi=getch() yerine sayi=getch()-48 kullanmamız gerekir.

 

Yorumlar

Bu blogdaki popüler yayınlar

İNSANA İLİŞKİN BAKIŞ AÇILARI VE SINIF YÖNETİMİ

Eğitimde Ahlak ve Etik ders notları