İletişim Bilgileri

İletişim Bilgileri

Ferhat DEĞİRMENCİOĞLU

E-mail: fdegirmencioglu@gmail.com


Mantık—-> Giriş–>Mantıkta Kavram Çeşitleri

Kavram; zihnimizde düşünülmüş olan herhangi bir şeye denir. Kavram; nesnelerin insan beynindeki yansıma biçimi, zihindeki genel tasarımıdır.

Kavram ile imge(hayal, imaj) arasında fark vardır. İmge, bir nesnenin uzayda kapladığı yer ve zaman içerisinde algıladığımız tekil izlenim karşılığıdır. Bunu bir örnekle açıklamak gerekirse, her gün kullandığımız bardağı düşünmemiz, onu rengiyle, görünüşüyle canlandırmamız bir imgeyken, ‘bardak’ kavramıysa geneldir ve bütün bardakları kapsayan bir evrensel küme gibidir.

Zihin evrenimizde,  tek tek oluşturduğumuz bardakların ortak yönleriyle birleştirerek genel kavram ‘ı ortaya çıkartırız. Eğer bardak kavramından hareket ederek belirli bir bardağı zihnimizde canlandırırsak buna da özel (tekil) kavram adını veririz.

Terim, zihnimizde tasarladığımız kavramın dilsel işaretidir. Diğer bir değişle kavramların dildeki ifadesidir.

Terimin genel olarak iki görevinden söz edebiliriz. İlk görevi, kavramı dilsel (fonetik) açıdan işaret etmesidir. Bir diğer göreviyse, işaret ettiği obje hakkında bildiklerimizi hatırlatmasıdır. Yani terim aynı zamanda kavramı çağrıştırır. Demek ki terim, kendi başına bir anlam taşıyabilen en küçük birimdir.  Tek başına bir anlam ihtiva etmeyen sözcükler terim değildir. Örn: bu, şu, veya, ya da…

Bir terim tek bir sözcükten oluşabildiği gibi, birden fazla sözcüğün bir araya gelmesiyle de oluşur.

Mantık içerisinde ele alacağımız kavram çeşitleriyse; soyut ve somut kavramlar, tümel ve tikel kavramlar, genel ve tekil kavramlar, kolektif ve distribütif kavramlar, açık ve seçik kavramlar, olumlu ve olumsuz kavramlar olmak üzere altı kısımda incelenir.

1-      Somut ve Soyut Kavramlar:

Somut (concrete) kavram, tek bir nesneye işaret eden, başka bir şeye bağlı olmadan kendi başına var olan bir şeyin kavramıdır. Kitap kavramı somut bir kavramdır. Bu somut kavram tek bir nesneyi işaret ederken, başka bir şeye ihtiyaç duymadan kendi başına var olan bir kavramdır.

Buna karşılık var oluşunu başka bir şeye borçlu olan ve ancak düşünmede ve zihinde bir başka şeyle ilişki içinde, nesne ya da nesnelerin niteliği olarak düşünülen şeyin kavramı soyut (abstract) kavram olarak kabul edilmiştir.

Soyut kavram, tek tek nesneleri değil, bu nesnelerin ilişkisinden ortaya çıkan genel niteliği işaret eder. Örneğin “ak”, tek tek nesnelerin belirtilmesinde kullanılması sebebiyle somut bir kavram olmasına rağmen, “aklık” nesnelerin bir niteliğinin zihinsel platformda  bir soyutlama ile belirtmesi bakımından soyuttur. Yine “insan” kavramı somutken, “insanlık” kavramı soyuttur.

2-      Tümel ve Tikel Kavramlar:

Eğer kavramlar bir önerme içerisinde bir sınıfın tümüne işaret ederse tümel (Universal, külli), bir sınıfın bir kısmına işaret ederse tikel (particular, cüz-i) kavramlar olarak adlandırılır. Örneğin; tüm şehirler tümel, bazı şehirler ise tikeldir. Yine “Tüm hayvanlar canlıdır.” önermesi içerisindeki  ‘Tüm hayvanlar’ kavramı tümel iken, “Bazı hayvanlar eklem bacaklıdır.” önermesindeki  ‘Bazı hayvanlar’ kavramı tikeldir.

Tümel kavramları kullanırken genellikle bütün, tüm, hepsi, her, hiçbir gibi ifadeler kullanılır. Tikel kavramlarda ise bu ifadelerin yerini; bazı, kimi, bir kısım gibi ifadeler devralır.

3-      Genel ve Tekil Kavramlar:

Gerçekte tümellik ve tikellik kavramların değil, önermelerin özellikleridir. Bu yüzden mantık kavram çeşitleri başlığı altında genel (general) ve tekil (singular) kavramlardan bahsetmek uygun olur.

Mantık açısından önemli olan genellik (generality, umumiyet) ve tekillik (singularity, ferdiyet) ’tir. Özdeşlik ilkesinden bahsederken -bir şeyin kendisi olması ve kendisi dışında bir şey olmaması- tanımını yapmıştık. Leibniz’in belirttiği gibi ancak tek olanların özdeşliğinden söz edebiliriz. Tekil kavram, tek tek nesnelerin varlığını ifade eder.

Tekil kavramı veya teklik kavramları mantıksal düşünmenin ilk ürünleridir. Daha sonra ise bu tek olanlar arasında bir ilişki kurarız. Zihnimizde oluşan kavramları ‘bir tek olan’ olarak bakmaktan çıkartır ve diğer teklerle ortak özellikleri taşıyan bir küme içerisine koyarız. Mantıktaki tanımları ile bunları bir cins veya sınıf altında toplarız. Bu zihinsel işlem sonucunda da bir sonuca ulaşırız. Böylece tek tek nesnelerin ortak yönlerinden hareketle, artık genel kavram haline gelmiş  bir nesne kavramı oluşmuştur. Buradan yola çıkarak genel kavram, aynı türe ait nesnelerin ortak özelliklerini içeren kavramdır diyebiliriz.

Kaynak: Doğan ÖZLEM, Mantık (klasik / sembolik mantık, mantık felsefesi) 9.baskı, inkılap yayınları

14- C PROGRAMLAMAYA GİRİŞ: DİZİLER –> ÇOK BOYUTLU DİZİLER

Çok boyutlu bilgileri veya veri tablolarını saklamak için kullanılırlar.

Tanımlama biçimi: Tip Değişken_adı [Boyut1] [Boyut2] [Boyut3]…

Tip: Değişken türü

Değişken adı: Dizinin adı

[Boyut1]: Birinci boyut

[Boyut2]: İkinci boyut

Dizimiz iki boyutlu ise bir tabloya benzer. Bu durumda birinci boyut satırları, ikinci boyut ise sütunları gösterecektir. Bunun gösterim şekli ise;

Tip_adı Değişken_adı [Satır_sayisi][Sütun_sayısı];

Şeklinde olur. Tip_adı ile değişken türünü(int, float, char,..) belirleriz. Değişken_adı ise dizimizin adını içerir. Satır_sayısı kaç satırdan oluşacağını, Sütun_sayısı ise kaç sütundan oluşacağını belirler.

Örn: int dizi[4][7];

Dizi isimli değişkenimiz 4 satır ve 7 sütundan oluşmaktadır. i=satır sayısı, j=sütun sayısı olmak üzere dizi[i][j] değişkeni ile; i. satır, j. sütun elemanı tanımlanır.

Yukarıdaki tabloda da görüldüğü gibi 4 satır ve 7 sütundan oluşan 28 eleman (4×7=28) i ve j ye bağlı olarak yerleştirilmiştir. İki indisi(i ve j) birlikte tanıtmakla bir matris elde edilir. Satır ve sütun kavramı programcının isteğine göre şekillenmektedir. Eğer ilk boyut satırı ikinci boyut sütunu oluşturuyorsa programın sonuna kadar böyle kullanılması gerekmektedir. Bir matrisi oluşturmada da iç içe iki for döngüsü kullanılarak indislere değer ataması yapılabilir.

3×4 boyutunda 12 elemanlı bir matris aşağıdaki gibi tanımlanabilir;

int matris[3][4] = {3, 5, 0, 1, 8, 12, 9, 125, 0, 2, 4, 6 };

int matris[3][4] = {{3, 5, 0,1}, {8, 12, 9, 125}, {0, 2, 4, 6}};

3 5 0 1
8 12 9 125
0 2 4 6

matris[0][0]=3

matris[0][1]=5

matris[0][2]=0

matris[0][3]=1

matris[1][0]=8

matris[1][1]=12

matris[1][2]=9

matris[1][3]=125

……

……

Şimdi matris ile ilgili kısa bir program çalıştırıp bunu anlamaya çalışalım.

#include <stdio.h>
int main()
{ //main bloğu başlangıcı
    int matris[3][4] = {3, 5, 0, 1, 8, 12, 9, 125, 0, 2, 4, 6};
    int i, j;
    for(i=0; i<3; i++)
    { //for döngü bloğunun i için başlangıcı
        for(j=0; j<4; j++)
        {//for döngü bloğunun j için başlangıcı
            printf("%4d ", matris[i][j]);
        }//for döngü bloğunun j için sonu
        printf("\n");
    }//for döngü bloğunun i için sonu
    return 0;
}//main bloğu sonu

int matris[3][4] = {3, 5, 0, 1, 8, 12, 9, 125, 0, 2, 4, 6};

3×4 boyutunda bir matris değişkeni tanımladık. Bu matrise 3×4=12 eleman atadık.

int i, j;

integer tipinde i ve j değişkenlerimizi tanıttık.

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

    {

Döngümüz ile ilk önce satıra ait indis değerini atadık. Matrisimizi matris[i][j] olarak düşündüğümüzde; i=0 için matris[0][j] değerini alır ve ardından sütun indisi için diğer döngüye girer.

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

        {

Burada da j(sütun) indisi için bir değer ataması yapıldı.  j=0 için matris[0][j] değişkeni matris[0][0] durumuna gelir.

printf(“%4d “, matris[i][j]); ile  %4d ile 4 karakter uzunluğunda bir yazma alanı ayırıp sona dayalı olarak d tipinde(integer), matris[0][0]  elemanı yazdırıyoruz. (matris[0][0]=3)

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

        {

            printf(“%4d “, matris[i][j]);

        }

İlk döngüde i=0 değerini alarak yukardaki döngü içerisine giren programımız, sırasıyla j=0, j=1, j=2, ve j=3 için döngüyü sürdürecektir. Bunun karşılığı olarak matrisimizin indisleri şu şekilde olacaktır.

matris[i][j];

matris[0][0] , matris[0][1], matris[0][2], matris[0][3]

j(sütun) için oluşturduğumuz for döngüsü sıfırdan başlayarak, her seferinde döngü bloğu içerisinde bulunan printf fonksiyonunu kullanarak devam edecektir.

j=4 için döngüdeki j<4 sorgusuna gelindiğinde j değişkeni 4 den küçük olmadığından, j döngü bloğunu terk ederek program bir alt satırı okumaya devam eder.

printf(“\n”);

Burada bir alt satıra geçilir ve i değişkeni 1 artarak döngü devam eder. matris[i][j], i=1 için; matris[1][j] durumuna dönüşür. i=1 için tekrar program j değişkenine ait döngü içerisine girer.

matris[i][j];

matris[1][0] , matris[1][1], matris[1][2], matris[1][3]

Tekrar her j(sütun) değeri değiştiğinde, j döngüsüne ait bloğu işleten programımız, i<3 sorgusu sağlandığı sürece bu işlemi tekrar eder.

Bir matrisin indislerinin kullanıcı tarafından girilmesini istediğimizde ise aşağıdaki kodu kullanabiliriz.

printf("Matrisin satir sayisini gir > ");
    scanf("%d",&satir);
    printf("Matrisin sutun sayisini gir > ");
    scanf("%d",&sutun);
    printf("Matrisin degerlerini gir > ");
    for(i=0; i<satir; i++)
    {
        for(j=0; j<sutun; j++)
        {
            printf("\n Deger [%d] [%d] --> ", i+1, j+1);
            scanf("%d", &matris[i][j]);
        }
    }

Yukarıdaki kodda scanf(“%d”,&satir); ve scanf(“%d”,&sutun); ile matrisimizin kaç satır ve sütundan oluşacağını klavyeden giriyoruz. Daha sonraki kısım ise matrisin ekrana yazdırılmasıyla aynı mantık üzerinden işliyor. scanf(“%d”, &matris[i][j]); koduyla matrisin i. satır ve j. sütun değerlerini giriyoruz.

Aşağıdaki örnekleri derleyicide çalıştırarak çok boyutlu dizileri daha iyi kavrayabiliriz.

ÖRNEK: Kullanıcı tarafından bir matris oluşturan program.

#include <stdio.h>
#include <conio.h>
int main()
{
    int matris[100][100];
    int satir, sutun, i, j;
    printf("Matrisin satir sayisini gir > ");
    scanf("%d",&satir);
    printf("Matrisin sutun sayisini gir > ");
    scanf("%d",&sutun);
    printf("Matrisin degerlerini gir > ");
    for(i=0; i<satir; i++)
    {
        for(j=0; j<sutun; j++)
        {
            printf("\n Deger [%u] [%u] --> ", i+1, j+1);
            scanf("%u", &matris[i][j]);
        }
    }
    printf("\nolusturulan matris:\n\n");
    for(i=0; i<satir; i++)
    {
        for(j=0; j<sutun; j++)
        {
            printf("%3u ", matris[i][j]);
        }
        printf("\n");
    }
    return 0;
}

ÖRNEK: İki matrisin toplamını bulan program.

#include<stdio.h>
int main()
{
    int a[3][3];
    int b[3][3];
    int c[3][3];
    int i,j;
    for(i=0; i<3; i++)
    {
        for(j=0; j<3; j++)
        {
            printf("\nA[%d][%d] matrisinin degerlerini giriniz> ",i+1,j+1);
            scanf("%d",& a[i][j]);
        }
    }
    for(i=0; i<3; i++)
    {
        for(j=0; j<3; j++)
        {
            printf("\nB[%d][%d] matrisinin degerleri giriniz>",i+1,j+1);
            scanf("%d",& b[i][j]);
        }
    }
    printf("\nA matrisi:\n\n");
    for(i=0; i<3; i++)
    {
        for(j=0; j<3; j++)
            printf("%d\t",a[i][j]);
        printf("\n");
    }
    printf("\nB matrisi:\n\n");
    for(i=0; i<3; i++)
    {
        for(j=0; j<3; j++)
            printf("%d\t",b[i][j]);
        printf("\n");
    }
    {
        for(i=0; i<3; i++)
        {
            for(j=0; j<3; j++)
                c[i][j]=a[i][j]+b[i][j];
        }
    }
    printf("\nGirmis oldugunuz matrislerin toplami asagidadir.\n\n");
    for(i=0; i<3; i++)
    {
        for(j=0; j<3; j++)
            printf("%d\t",c[i][j]);
        printf("\n");
    }
    return 0;
}

ÖRNEK: Kullanıcının oluşturduğu matrisin simetrik olup olmadığını bulan program.

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

int main()
{

    int a[100][100];
    int simetri=1;
    int x, y, i, j;

    printf("Matrisin satir sayisini gir > ");
    scanf("%d",&x);
    printf("Matrisin sutun sayisini gir > ");
    scanf("%d",&y);

    printf("Matrisin degerlerini gir > ");

    for(i=0; i<x; i++)
    {
        for(j=0; j<y; j++)
        {
            printf("\n Deger [%d] [%d] --> ", i+1, j+1);
            scanf("%d", &a[i][j]);
        }
    }

    printf("\nolusturulan matris:\n\n");
    for(i=0; i<x; i++)
    {
        for(j=0; j<y; j++)
        {
            printf("%2d ", a[i][j]);
        }
        printf("\n");
    }

    /*NOT: a[i][j]==a[j][i] ise
    bu matris simetridir.*/

    for(i=0; i<x; i++)
    {
        for(j=0; j<y; j++)
        {
            {
                if(a[i][j]!=a[j][i])
                    simetri=0;

                break;
            }
        }
    }

    if(simetri==1)
        printf("\nMatris Simetriktir.\n");

    else
        printf("\nMatris Simetrik Degildir\n");

    return 0;

}

ÖRNEK: Tek boyutlu bir diziyi iki boyutlu (matrise) çeviren program.

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int dizi[100];
    int a[100][100];
    int i, j, n, x, sat, sut;

    printf("Diziniz kac elemandan olusacak? > ");
    scanf("%d",&n);

    for(x=0; x<n; x++)
    {
        printf("Dizinin [%d] . elemanini gir > ",x+1);
        scanf("%d",&dizi[x]);
    }

    printf("\nDizi elemanlari -->\n" );
    for(x=0; x<n; x++)
    {
        printf("%3d",dizi[x]);

    }

    printf("\nMatrisin Satir sayisini gir > ");
    scanf("%d",&sat);

    printf("matrisin sutun sayisini gir > ");
    scanf("%d",&sut);

    if(n%sat==0 && n%sut==0)
    {

        x=0;
        for(i=0; i<sat; i++)
        {
            for (j=0; j<sut; j++)
            {
                a[i][j]=dizi[x];
                x++;
            }
        }

        printf("\n\nMATRIS > \n");
        for(i=0; i<sat; i++)
        {
            for(j=0; j<sut; j++)
            {
                printf("%3d", a[i][j]);
            }
            printf("\n");
        }
    }

    else
        printf("HATA! Dizi Eleman Sayisi Satir veya Sutuna Tam bolunmelidir");

    return 0;
}

ÖRNEK: NxM Matrisi bir boyutlu P elemanlı diziye dönüştüren program (p=NxM).

#include<stdio.h>

int cizgi()
{
    int x;
    for(x=0; x<30; x++)
        printf("_");
    printf("\n");
}

int main()
{
    int matris[100][100];
    int dizi[100];

    int i, j, k=0, satir, sutun;

    printf("Matrisin satir sayisini gir > ");
    scanf("%u",&satir);
    printf("Matrisin sutun sayisini gir > ");
    scanf("%u",&sutun);
    printf("\n");
    cizgi();

    for(i=0; i<satir; i++)
    {
        for(j=0; j<sutun; j++)
        {
            printf("matrisin [%u][%u] elemnini gir > ",i+1 ,j+1);
            scanf("%d", &matris[i][j]);
        }
    }

    cizgi();
    printf("\nOlusturulan matris\n");

    for(i=0; i<satir; i++)
    {
        for(j=0; j<sutun; j++)
        {
            printf("%3d",matris[i][j]);
        }
        printf("\n\n");
    }

    cizgi();
      cizgi();

    printf("\nMatrisin diziye aktarilmis hali\n");

    for(i=0; i<satir; i++)
    {
        for(j=0; j<sutun; j++)
        {
            dizi[k]=matris[i][j];
            k++;
        }
    }

    for(k=0; k<satir*sutun; k++)
    {
        printf("%d ",dizi[k]);
    }
    printf("\n");
    cizgi();
    cizgi();

    return 0;
}

ÖRNEK: 3×3 kare matrisin transpozesi ( devriği) ‘ni bulan program.

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int a[3][3] = {2, 4, 4, 2, 1, 0, 1, 2, 3,};
    int i, j, m;

    printf("MATRIS :\n\n");

    for (i = 0; i < 3; i++)
    {
        for (j = 0; j < 3; j++)
        {
            printf("%3d", a[i][j]);
        }
        printf("\n\n");
    }

    for (i = 0; i < 3; i++)
    {
        for (j = i; j < 3; j++)
        {
            m = a[i][j];
            a[i][j] = a[j][i];
            a[j][i] = a[i][j];
            a[j][i] = m;
        }
    }

    printf("\n\nMatrisin Transpozesi :\n\n");
    for (i = 0; i < 3; i++)
    {
        for (j = 0; j < 3; j++)
        {
            printf("%3d", a[i][j]);
        }
        printf("\n\n");
    }

    return 0;
}

ÖRNEK: 2×2 kare matrisin tersini bulan program.

#include <stdio.h>
#include <stdlib.h>

int main()
{
    float a[2][2] = {2, 4, 4, 2};
    float b[2][2], c[2][2];
    int i, j, m;
    float p, r;

    printf("MATRIS :\n\n");

    for (i = 0; i < 2; i++)
    {
        for (j = 0; j < 2; j++)
        {
            printf("%3.0f", a[i][j]);
        }
        printf("\n");
    }

    for (i = 0; i < 2; i++)
    {
        for (j = 0; j < 2; j++)
        {
            if (i == j)
                b[i][j] = 1;
            else
                b[i][j] = 0;
        }
    }

    for (i = 0; i < 2; i++)
    {
        p = a[i][i];
        for (j = 0; j < 2; j++)
        {
            a[i][j] = a[i][j] / p;
            b[i][j] = b[i][j] / p;
        }

        for (m = 0; m < 2; m++)
        {
            if (m != i)
            {
                r = a[m][i];
                for (j = 0; j < 2; j++)
                {
                    a[m][j] = a[m][j] - (a[i][j] * r);
                    b[m][j] = b[m][j] - (a[i][j] * r);

                }
            }

        }
    }

    printf("\n\n\nMatrisin Tersi : \n\n");

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

            printf(" %f ", b[i][j]);
        printf("\n");

    }

    return 0;
}
Follow

Get every new post delivered to your Inbox.