ccs’de if deyimi kullanımı

16F84A PIC mikrodenetleyicisinde  ccs derleyicisi ile if deyiminin kullanımı ile ilgili değişik uygulamalar.

02.a.if deyimi ile sağdan sola dönen ledler  (sola döndürme operatörü)

02.b.if deyimi ile  soldan sağa dönen ledler (sağa döndürme operatörü)

02.c.if deyimi ile sağdan sola donen ledler

02.c.1.bit dizi

02.c.2.desimal dizi

02.c.3.matematiksel

02.d.if deyimi ile soldan sağa dönen ledler

02.d.1.bit dizi

02.d.2.desimal dizi

02.d.3.matematiksel

02.e.if deyimi ile sağdan sola toplayarak yanan ledler

02.e.1.bit dizi

02.e.2.desimal dizi

02.e.3.matematiksel

02.f.if deyimi ile soldan sağa toplayarak yanan ledler

02.f.1.bit dizi

02.f.2.desimal dizi

02.f.3.matematiksel

02.g.if deyimi ile soldan sağa azalarak sonen ledler

02.g.1.bit dizi

02.g.2.desimal dizi

02.g.3.matematiksel

02.h.if deyimi ile sağdan sola azalarak sonen ledler

02.h.1.bit dizi

02.h.2.desimal dizi

02.h.3.matematiksel

02.i.if deyimi ile karaşimşek

02.i.1.sola ve sağa döndürme operatörleri ile

02.i.2.bit dizi

02.i.3.desimal dizi

02.i.4.matematiksel

02.j.if deyimi ile sağdan sola toplayarak yanan sonra soldan sağa azaltarak sönen ledler

02.j.1.bit dizi

02.j.2.desimal dizi

02.j.3.matematiksel

02.k.if deyimi ile soldan sağa toplayarak yanan sonra sağdan sola sonen ledler

02.k.1.bit dizi

02.k.2.desimal dizi

02.k.3.matematiksel

02.l.if deyimi ile dıştan içe kapanan ardından içten dışarı açılan ledler

02.l.1.bit dizi

02.l.2.desimal dizi

02.l.3.matematiksel

02.m.if deyimi ile içten dışarı açılan ardından dıştan içeri kapan ledler

02.m.1.bit dizi

02.m.2.desimal dizi

02.mj.3.matematiksel

CCS ile yapılan programları ve Proteus 7.10 ile yapılan simülasyon dosyalarına buradan erişebilirsiniz.

PIC pinlerini çıkış olarak kullanmak

Değişik PIC’lere ait portları döngü komuları kullanmadan nasıl çıkış yaptıracağımıza dair değişik programları ekte sunuyorum.

  1. 16f84a pinlerini çıkış olarak kullanmak
  2. 16f628a pinlerini çıkış olarak kullanmak
  3. 16f877a pinlerini çıkış olarak kullanmak
  4. 18f452 pinlerini çıkış olarak kullanmak
  5. 18f2550 pinlerini çıkış olarak kullanmak
  6. 18f4550 pinlerini çıkış olarak kullanmak

B.29.ln(1+x)=x-x2/2+x3/3-x4/4+x5/5-… olduğuna göre kullanıcının belirliyeceği terim adeti kadar girilen sayı kadar hesaplama yapar.

Program: ln(1+x)=x-x2/2+x3/3-x4/4+x5/5-… olduğuna göre  kullanıcının belirliyeceği  terim adeti kadar girilen sayı kadar hesaplama yapar.

 

a-1) C çözümü

 

/* ln(1+x)=x-(x^2)/2+(x^3)/3-(x^4)/4+(x^5)/5-.. olduguna gore  kullanicinin

belirliyecegi terim adeti kadar girilen sayi kadar hesaplama

yapar. while solution in C by Kamil Bala */

#include<stdio.h>

#include<math.h>

float x,Terim,Carp,Sayac,Sonuc,Cift;

main()

{

printf(“ln(1+x) denkleminde “);

printf(“x sarti -1<x ve x<=1 olmalidir.\n\n x:”); scanf(“%f”,&x);

 

printf(“\nDenklemi kac terimle hesapliyacaksiniz:”);scanf(“%f”,&Terim);

 

Sayac=0;

Sonuc=0;

 

while(Sayac<Terim)

{

Sayac++;

Cift=2*floor(Sayac / 2);

/* Sayi cift ise -1 ile tek ise 1 ile carp */

if (Cift==Sayac) Carp=-1; else Carp=1;

/* Denklem */

Sonuc=Sonuc+Carp* pow(x,Sayac)/Sayac;

/* Her bir adimda sonucun gorulmesi icin */

printf(“Sonuc:%f\n”,Sonuc);

}

 

return 0;

}

 

 

a-2) C++ çözümü

 

/* ln(1+x)=x-(x^2)/2+(x^3)/3-(x^4)/4+(x^5)/5-.. olduguna gore  kullanicinin

belirliyecegi terim adeti kadar girilen sayi kadar hesaplama

yapar. while solution in C++ by Kamil Bala */

#include<iostream.h>

#include<math.h>

float x,Terim,Carp,Sayac,Sonuc,Cift;

main()

{

cout<<“ln(1+x) denkleminde “;

cout<<“x sarti -1<x ve x<=1 olmalidir.\n\n x:”;cin>>x;

 

cout<<“\nDenklemi kac terimle hesapliyacaksiniz:”;cin>>Terim;

 

Sayac=0;

Sonuc=0;

 

while(Sayac<Terim)

{

Sayac++;

Cift=2*floor(Sayac / 2);

/* Sayi cift ise -1 ile tek ise 1 ile carp */

if (Cift==Sayac) Carp=-1; else Carp=1;

/* Denklem */

Sonuc=Sonuc+Carp* pow(x,Sayac)/Sayac;

/* Her bir adimda sonucun gorulmesi icin */

cout<<“\nSonuc:”<<Sonuc;

}

cout<<“\n\n”;

return 0;

}

B.28.ex sayısını Taylor serisi ile açılımı ex =1+x+x2/2!+x3/3!+… olduğuna göre kullanıcının belirliyeceği terim adeti kadar girilen sayı kadar hesaplama yapar.

Program: ex sayısını Taylor serisi ile  açılımı ex =1+x+x2/2!+x3/3!+… olduğuna göre  kullanıcının belirliyeceği  terim adeti kadar girilen sayı kadar hesaplama yapar.

 

a-1) C çözümü

 

/* Program e ussu x degerini Taylor serisi

yardimi ile istenen adet terimle hesaplar

while solution in C by Kamil Bala */

#include<stdio.h>

float X,X_Kuvvet,Fakt,Adet;

float Sayac,e,y;

main()

{

Sayac=0;

X_Kuvvet=1;Fakt=1; e=1;

printf(“e ussu kac hesaplayacaksiniz:”);scanf(“%f”,&X);

printf(“Kac terimle hesaplamak istersiniz:”);scanf(“%f”,&Adet);

 

for(int OnSayac=1;OnSayac<=Adet;OnSayac++)

{

Sayac++;

X_Kuvvet=X_Kuvvet*X;

Fakt=Fakt*Sayac;

e=e+X_Kuvvet/Fakt;

/* Her adim sonunda ki islem gorunmesi icin

asagida ki satir hazirlanmistir */

printf(“Sayac:%0.f X_Kuvvet:%0.f Fakt:%f e ussu x:%f\n”,Sayac, X_Kuvvet,Fakt,e);

}

 

/* Sonuc */

printf(“\n\n%0.f terimle e ussu %0.f = %f\n\n”,Adet, X,e);

 

/* Sonucun dogrulugu terimi sayisini arttirdikca artacaktir. */

return 0;

}

 

 

a-2) C++ çözümü

 

/* Program e ussu x degerini Taylor serisi

yardimi ile istenen adet terimle hesaplar

while solution in C by Kamil Bala */

#include<iostream.h>

float X,X_Kuvvet,Fakt,Adet;

float Sayac,e,y;

main()

{

Sayac=0;

X_Kuvvet=1;Fakt=1; e=1;

cout<<“e ussu kac hesaplayacaksiniz:”;cin>>X;

cout<<“Kac terimle hesaplamak istersiniz:”;cin>>Adet;

 

//OnSayac yalnizca for dongusu icindir

for(int OnSayac=1;OnSayac<=Adet;OnSayac++)

{

// Sayac float islemlere katilmasi icin ayri sayac olarak dusunulmustur

Sayac++;

X_Kuvvet=X_Kuvvet*X;

Fakt=Fakt*Sayac;

e=e+X_Kuvvet/Fakt;

/* Her adim sonunda ki islem gorunmesi icin

asagida ki satir hazirlanmistir */

cout<<“Sayac:”<<Sayac<<” X_Kuvvet:”<<X_Kuvvet;

cout<<” Fakt:”<<Fakt<<” e ussu x:”<<e<<“\n”;

}

 

/* Sonuc */

cout<<“\n”<<Adet<<” terimle e ussu “<<X<<“=”<<e<<“\n\n”;

 

/* Sonucun dogrulugu terimi sayisini arttirdikca artacaktir. */

return 0;

}

B.27.ln2=1-1/2+1/3-1/4+1/5-… şeklindedir. Bu sayının ilk 10 terimini alarak bu sayıyı hesaplayan programı yazın.

Program: ln2=1-1/2+1/3-1/4+1/5-…  şeklindedir. Bu sayının ilk 10 terimini alarak bu sayıyı hesaplayan programı yazın.

 

a-1) C çözümü

 

/* ln2’nin taylor serisine acilimi ln2=1-1/2+1/3-1/4+1/5-..

seklindedir. Bu sayinin istenen terim kadar hesaplayan

program. for solution by Kamil Bala */

#include<stdio.h>

int Sinir,Cift,Carp;

float ln2,Terim,Sayac;

main()

{

printf(“\nln2 sayisini kacinci terime kadar hesaplamak istersiniz:”);

scanf(“%d”,&Sinir);

ln2=1; Sayac=2;

for(int Sira=2;Sira<=Sinir;Sira++)

{

Cift=Sira%2;

if (Cift==0) Carp=-1;

else Carp=1;

Terim=(Carp*(1/Sayac));

ln2=ln2+Terim;

printf(“\n%d . terim:%f sonunda ln2:%f\n”,Sira,Terim,ln2);

Sayac++;

}

printf(“\n\nln2 degeri %d terim ile ln2=%f\n\n”,Sinir,ln2);

return 0;

}

 

 

a-2) C++ çözümü

 

/* ln2’nin taylor serisine acilimi ln2=1-1/2+1/3-1/4+1/5-..

seklindedir. Bu sayinin istenen terim kadar hesaplayan

program. for solution by Kamil Bala */

#include<iostream.h>

int Sinir,Cift,Carp;

float ln2,Terim,Sayac;

main()

{

cout<<“\nln2 sayisini kacinci terime kadar hesaplamak istersiniz:”;

cin>>Sinir;

ln2=1; Sayac=2;

for(int Sira=2;Sira<=Sinir;Sira++)

{

Cift=Sira%2;

if (Cift==0) Carp=-1;

else Carp=1;

Terim=(Carp*(1/Sayac));

ln2=ln2+Terim;

cout<<“\n”<<Sira<<“. terim:”<<” sonunda ln2:”<< ln2;

Sayac++;

}

cout<<“\n\nln2 degeri “<<Sinir<<” terim ile ln2=”<<ln2<<“\n\n”;

return 0;

}

B.26. Başlangıç olarak ilk iki elemanı verilen Fibonacci dizisinin istenen elemanına kadar yazdıran program.

Program: Başlangıç olarak ilk iki elemanı verilen Fibonacci  dizisinin istenen elemanına kadar yazdıran program.

 

 

a-1) C çözümü

 

/* Baslangic olarak ilk iki elemani verilen Fibonacci

dizisinin istenen elemanina kadar yazdiran program.

if solution in C by Kamil Bala */

#include<stdio.h>

int Birinci,Ikinci,Yeni,Sayi,Sayac;

main()

{

printf(“Birinci elemani girin:”);scanf(“%d”,&Birinci);

printf(“\nIkinci elemani girin:”);scanf(“%d”,&Ikinci);

Sayac=3;

printf(“\nFiboncci dizisinin kacinci elemanina\n”);

printf(“kadar hesaplamak istersiniz:”);scanf(“%d”,&Sayi);

printf(“\n\n”);

printf(“%d  %d”,Birinci,Ikinci);

Artim:

Yeni=Birinci+Ikinci;

printf(” %d”,Yeni);

Birinci=Ikinci;

Ikinci=Yeni;

if (Sayi!=Sayac)

{

Sayac++;

goto Artim;

}

printf(“\n\n”);

return 0;

}

 

 

 

a-2) C++ çözümü

 

/* Baslangic olarak ilk iki elemani verilen Fibonacci

dizisinin istenen elemanina kadar yazdiran program.

if solution in C++ by Kamil Bala */

#include<iostream.h>

int Birinci,Ikinci,Yeni,Sayi,Sayac;

main()

{

cout<<“Birinci elemani girin:”;cin>>Birinci;

cout<<“\nIkinci elemani girin:”;cin>>Ikinci;

Sayac=3;

cout<<“\nFiboncci dizisinin kacinci elemanina\n”;

cout<<“kadar hesaplamak istersiniz:”;cin>>Sayi;

cout<<“\n\n”;

cout<<Birinci<<” “<<Ikinci<<” “;

Artim:

Yeni=Birinci+Ikinci;

cout<<Yeni<<” “;

Birinci=Ikinci;

Ikinci=Yeni;

if (Sayi!=Sayac)

{

Sayac++;

goto Artim;

}

cout<<“\n\n”;

return 0;

}