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
Yorum Gönder