Etiket Arşivi c

C ile Dosya İçinde Bir Kelimeden Kaç Tane Olduğunu Bulma

Başlık biraz uzun oldu ama aklıma daha kısa ve açıklayıcı bir başlık gelmedi. Bu kod ne işe yarar? Programa arama yapacağınız dosyanın adını ve aramak istediğiniz kelimeyi girdiğinizde, sonuç olarak size o dosya içerisinde, aradığınız kelimeden kaç tane olduğunu döndürür. Kodu aşağıya yazıyorum. Yorum satırlarında kabaca nasıl çalıştığı yazıyor ancak kısaca bir daha açıklayacağım. Sonraki Sayfa »

Share

Computer Programming Çıkmış Sorular – 1 (Trapez)

Mustafa Çakır hocanın çıkmış sorularından, diğerlerine göre geometri kısmı daha basit olanı. En azından sinüs kosinüs yok ama bunun geometri kısmı da bayağı zorladı. 🙂 Soru şöyle:


Sonraki Sayfa »

Share

C ile basit metin şifreleme – şifre çözme uygulaması

Öncelikle uygulamanın ne iş yaptığından biraz bahsedeyim. Bir dosyada şifrelenecek metnimiz var. Programa bu dosyanın adını giriyoruz, ardından bizden üç tane anahtar istiyor. Sırayla anahtarları girdiğimizde dosyadaki metin, anahtarlara bağlı belli bir algoritmaya göre şifreleniyor. Bu programda şifrelemenin nasıl gerçekleştiğini açıklayacak olursak, her karakterin bir ascii kodu vardır. Bu kod bir integerdır. Biz de dosyada bulunan her bir karakterin ascii kodunu, girdiğimiz anahtarlarlara bağlı olarak bir formülle değiştiriyoruz. Sonuç olarak elimizde her karakterin ascii kodu, dolayısıyla kendisi değişmiş olan yeni bir dosya oluyor. Bu şifrelenmiş dosyanın adını da programa biz giriyoruz. Şifre çözme işlemi de benzer şekilde yapılıyor. Şifrelenmiş metnin bulunduğu dosya, şifrelemede kullanılan anahtarlar ve çözülecek metnin bulunacağı dosyanın adını girdiğimizde çözülmüş metnin dosyası oluşturuluyor. Programın kodunu aşağıya ekliyorum, sonrasında da kodu biraz inceleyeceğiz.

Sonraki Sayfa »

Share

C’de Diziler (Array)

C dilinde diziler çok kullanışlıdır. Diziler, aynı isim ve farklı indis numarası ile verileri tutabildiğimiz değişkenlerdir. Aynı tür verilerle çalışırken büyük kolaylık sağlar. Diziyi kaç elemanlı tanımlamışsak, o kadar değişken tanımlamışız gibi düşünülebilir.

Dizileri normal bir değişken gibi tanımlarız. Önce tipini, ardından ismini, son olarak da isminin yanına köşeli parantez içinde eleman sayısını yazarız. Örnek olarak:

int dizi[10]; //10 elemanlı dizi tanımladık.
int dizi[10] = {0}; //10 elemanlı dizi tanımlayıp, tüm elemanlarını "0"a eşitledik.
int dizi[] = {0, 1, 2, 3, 4}; //Dizi tanımlarken eleman sayısını belirtmedik, fakat diziye 5 adet değer atadığımız için dizi otomatik olarak beş elemanlı tanımlandı.

Sonraki Sayfa »

Share

do – while ile girilen beş sayının ortalamasını hesaplama

#include <stdio.h>
#include <conio.h>

int main()
{
    int sayac = 0;
    int toplam = 0;
    int puan = 0;

    do
    {
        printf("Puan girin : ");
        scanf("%d", &puan);

        toplam = toplam + puan;
        sayac++;

        }

        while(sayac < 5);

        printf("\n-------------------\n\nSinif ortalamasi : %.2f", float(toplam)/5.0);

        getch();
        return 0;
}

Kodu inceleyecek olursak, ilk önce değişkenlerimizi tanımladık. “sayac” değişkeni döngünün kaç kez döndüğünü kontrol ediyor. “toplam” değişkeni, girilen sayıların toplamını tutuyor. “puan” değişkeni ise girilen puanları “scanf” ile aldığımız değişken. Sonraki Sayfa »

Share

do – while döngüsü

Bu yazıda do – while döngüsünden bahsetmeye çalışacağım. do – while, while döngüsüne benzer, fakat koşul ile çalışacak kodların yeri farklıdır. Yani yazım şekli şöyledir:

do{
//calisacak kodlar
}
while(kosul);

Burada, dikkat edilmesi gereken while’dan sonra “;”ün unutulmamasıdır. Örneğin girilen beş sayının ortalamasını alan bir kod yazalım:

#include
#include

int main()
{
    int sayac = 0;
    int toplam = 0;
    int puan = 0;

    do
    {
        printf("Puan girin : ");
        scanf("%d", &puan);

        toplam = toplam + puan;
        sayac++;

        }

        while(sayac < 5);

        printf("\n-------------------\n\nSinif ortalamasi : %.2f", float(toplam)/5.0);

        getch();
        return 0;
}

Kodu kısaca inceleyecek olursak, ilk önce değişkenlerimizi tanımladık. “sayac” değişkeni döngünün kaç kez döndüğünü kontrol ediyor. “toplam” değişkeni, girilen sayıların toplamını tutuyor. “puan” değişkeni ise girilen puanları “scanf” ile aldığımız değişken.

do’nun içini incelersek;
İlk önce kullanıcıdan puan girmesi isteniyor. Girilen puan “puan” isimli değişkene aktarılıyor. Ardından, “toplam” değişkenine girilen puan ekleniyor, tekrar “puan” değişkenine atanıyor. “sayac” değeri bir arttırılıyor. Daha sonra koşul kontrol ediliyor. “sayac” değeri 5’ten küçük olduğu sürece, yani “0,1,2,3,4” değerlerinde olmak üzere döngü beş kez dönüyor. Ardından “sayac” değeri 5 olduğunda 5<5 olmadığı için döngüden çıkılıyor.

Sıra geldi sonucu ekrana bastırmaya. “printf”i incelersek; ilk olarak “\n” ile bir satır aşağı indik. “————-” şeklinde girilen değerlerle sonucu ayırmak için bir çizgi çektik. “\n\n” ile iki satır daha aşağı indik. “%.2f” ile, bastırılacak değişkenin “float” tipinde olduğunu, ve “f”ten önce gelen “.2” ile de virgülden sonra iki basamak bastırmak istediğimizi belirttik.

Gelelim bastırılacak değişkenin hesaplanmasına: öncelikle elde etmek istediğimiz sonuç “float” tipinde olduğu için, bu tipi sadece float’u float’a bölerek elde ederiz. Bu nedenle “float(toplam)” ile int tipinde olan “toplam” değişkeni float’a dönüştürüldü. “5.0” yazmamızın nedeni de yine float olması. “5” yazsaydık bu integer olarak kabul edilecekti. Sonuç olarak float’a dönüştürdüğümüz “toplam” değişkenini yine float olan “5.0” a böldüğümüzde sonucumuzu elde ederiz, bunu da “%.2f” ile ekrana basarız.

Share

switch – case yapısı

Merhaba. Uzun bir aradan sonra bloga yazmaya fırsat buldum. Hemen konuya gireyim. Bu yazımda switch – case yapısından bahsedeceğim.
“Switch – case”i, “if – else if – else” yapısına benzetebiliriz. if ile yapacağımız şu işlemi:

if(x == 1)
{
printf("Bir");
}
else if(x == 2)
{
printf("Iki");
}
else
{
printf("Yanlis giris");
}

switch – case ile şu şekilde yazabiliriz: Sonraki Sayfa »

Share

for

C dilinde kullanılan bir diğer döngü for döngüsüdür. Mantık olarak while’dan hiçbir farkı yoktur. Sadece yazılış şekli biraz değişiktir. Kod yazana kolaylık sağlar while’a göre. Pekçok kişi for’u öğrendiğinde sevmez, while kullanmaya devam eder. Fakat bir süre sonra alışınca while’ın yüzüne bile bakmaz. (Buna ben de dahilim.) Yazım şekli genel olarak şöyledir:

for(kontrol edilecek değişken ve başlangıç değeri ; koşul ; değişkenin artış/azalış miktarı)
{…}

for(i = 0 ; i <= 10 ; i++)
printf("%d", i * i);

şeklinde bir kod, while’da yaptığımız örneğin for ile yazılmış şeklidir. i değişkenini tanımlarken 0 ile ilklendirmeme gerek kalmaz. While’dan çıkmadan hemen önce i’yi arttırmama da gerek kalmamış olur, çünkü hepsini for’un içinde hallediyorum.

for’un üç tane bileşeni var: ilk değer, koşul, artış miktarı. Bunlardan koşul dışındakileri yazmak zorunda değiliz. Şöyle ki;

for( ; i <= 10 ; )
printf("%d", i * i);

Bu durumda for’umuz while gibi işlem yapar. Yine if ve while’da olduğu gibi altta çalışacak kod birden fazla satırdan oluşuyorsa süslü parantez kullanmak durumundayız.

Share

Döngüler – while

Döngüler C programlama dilinin vazgeçilmezlerinden biridir. If ile, bir koşul sağlandığında alttaki kodların çalışması sağlanıyordu. Döngülerde if’ten farklı olarak koşulu sürekli kontrol ederek koşul sağlandığı sürece alttaki kod çalışır. If’te ise bu bir kere olur. Koşul sağlanırsa kod çalışır, koşul tekrar kontrol edilmez. Döngülerde while, for ve do-while döngülerine göz atacağız. Bu yazıda while döngüsünden bahsedeceğim. While’ı, Türkçe’ye “-dığında”  şeklinde çevirebiliriz. Yazım şekli if’e benzer. while(koşul) şeklinde yazılır. If’te olduğu gibi altta çalışacak kod tek satırsa süslü parantez kullanmaya gerek yoktur. Ama birden fazla satır varsa parantezleri kullanmak zorundayız. Örnek olarak 1’den 10’a kadar olan sayıların karelerini yazdıran bir kod yazalım. Döngülerin kontrolü için genelde i, j, k gibi değişken isimleri kullanılır. Ben de öyle kullanacağım.


int i=1;

while(i <= 10)
{
printf("%d uzeri 2 = %d \n", i, i*i);
i++;
}

Gördüğünüz gibi i’yi 1 olarak tanımladım. Ardından koşul kontrol edildi, i <= 10 sağlandı. Altta 1 üzeri 2 = 1 yazdırıldı, i++ ile i 1 arttırıldı, koşul tekrar kontrol edildi. 2 <= 10 sağlandığı için alttaki kodlar tekrar çalıştı. Ta ki i = 11 olup koşul sağlanmayıncaya kadar sayıların kareleri ekrana bastırılır.

Share

if

C’de sıkça kullanılan “statement”lardandır. if komutu, bir koşulun gerçekleşip gerçekleşmediğine bağlı olarak birtakım kodların çalışmasını sağlar. Yazım şekli şöyledir:

if(koşul)
{koşul gerçekleştiğinde çalışacak kodlar}
else
{koşul gerçekleşmediğinde çalışcak kodlar}

Koşulu kontrol etmek için bazı matematiksel semboller kullanmamız gerekir.

==     Eşittir
!=      Eşit değil
<       Küçüktür
>       Büyüktür
<=    Küçük veya eşit
>=    Büyük veya eşit

Sonraki Sayfa »

Share