Üye ol
Şifremi unuttum | Onay kodum gelmedi
Yardım

C / C++ Programlama Diline Giriş Ders Notları 2 (Switch, Döngüler)
sendetiklat
Sahip
sendetiklat


sendetiklat şu anda çevrimdışı
Gönderilme Tarihi: 23 Kasım 2009 17:45:54

switch - case Yapısı
Bu deyim bir değişkenin içeriğine bakarak, programın akışını bir çok seçenekten birine yönlendirir. case (durum) deyiminden sonra değişkenin durumu belirlenir ve takip eden gelen satırlar (deyimler) işleme konur. Bütün durumların aksi söz konu olduğunda gerçekleştirilmesi istenen deyimler default deyiminden sonraki kısımda bildirilir. Genel yazım biçimi:
switch(değişken) {
case sabit1:
...
deyimler;
...
case sabit2:
...
deyimler;
...
. . . case sabitn:
...
deyimler;
...
default:
... hata deyimleri veya varsayılan deyimler; .
..
} _

Örnek: Klavyeden basılan a ve b harfini ekrana yazan program
#include <stdio.h>
main() {
char kr;
printf("Lutfen bir karakter girin\n");
kr = getchar();
/* tek bir karakterin okunması */
switch (kr) {
case 'a':
printf("a harfine bastınız\n");
break;
case 'b':
printf("b harfine bastınız\n");
break;
default:
printf("a veya b ye basmadınız\n");
break; }
}_

Örnek: Klavyeden girilen 2 sayıyı yine klavyeden girilen seçime göre toplam, çıkarma, çarpma yapıp sonucu ekrana yazan program.
#include <stdio.h>
#include <stdlib.h>
main() {
int secim;
float x,y, sonuc;
printf("Iki sayi girin: ");
scanf("%f %f",&x,&y);
puts("*** Menu ***");
puts("[1] Toplama");
puts("[2] Çıkarma");
puts("[3] Çarpma");
puts("[4] Bölme");
printf("Seciminiz:");
scanf("%d",&secim); _

puts() Fonksiyonu
Ekrana yazdırılacak ifade bir karakter topluluğu ise, printf()'e alternatif olarak puts() fonksiyonu kullanılabilir. Ancak puts(), ekrana bu karakter topluluğu yazdıktan sonra, imleci alt satıra geçirir. Buna göre:
printf(“Deneme yazısı.\n");ile puts(“Deneme yazısı."); kullanımları eşdeğerdir. puts() fonksiyonu kontrol karakterleri ile kullanılabilir.
puts("Bu birinci satır...\nBu ikinci satır.");
Bu birinci satır... Bu ikinci satır.

Döngüler
Döngü (loop) deyimleri, bir kümenin belli bir koşul altında tekrar edilmesi için kullanılır.
C programlama dilinde, while, do...while ve for olmak üzere üç tip döngü deyimi vardır. Diğer programlama dillerinde olduğu gibi, bu deyimlerle istenildiği kadar iç-içe döngü yapısı kullanılabilir.

While Döngüsü

Tekrarlama deyimidir. Bir küme ya da deyim while kullanılarak bir çok kez yinelenebilir. Yinelenmesi için koşul sınaması döngüye girilmeden yapılır. Koşul olumlu olduğu sürece çevrim yinelenir. Genel yazım biçimi:
while(koşul)
{
... döngüdeki deyimler;

} _

Örnek
#include <stdio.h>
main() {
int x=0;
while(x <= 10)
printf("%d\n",x++);
}_

Soru: klavyeden 0 sayısı girilene kadar yine klavyeden girilen tüm sayıları toplayıp ekrana sonucu yazan program.
#include <stdio.h>
#include <conio.h>
main() {
int sayi,toplam=0;
char c;
puts("sayı gir");
scanf("%d",&sayi);
while(sayi!=0)
{
toplam=toplam+sayi;
puts("sayı gir");
scanf("%d",&sayi);
}
printf("Girilen sayıların toplamı: %d\n",toplam);
c=getche();
} _

Soru: 10 tabanlı sistemden 2 li sisteme çevirme
#include <stdio.h>
#include <conio.h>
main()
{
int i,n;
char c;
printf("Sayiyi Girin : ");
scanf("%d",&n);
system("cls");//Ekran temizleme
while(n>0)
{
printf("%d",n%2);
n/=2;
}
c=getch();
}_

do ... while Döngüsü
Bu deyimin while deyiminden farkı, koşulun döngü sonunda sınanmasıdır. Yani koşul sınanmadan döngüye girilir ve döngü kümesi en az bir kez yürütülür. Koşul olumsuz ise döngüden sonraki satıra geçilir. Genel yazım biçimi:
do{
... döngüdeki deyimler; ... }
while(koşul);_

Soru: Klavyeden girilen sayının basamak sayısını bulan program
#include <stdio.h>
//kalvyeden girilen sayının basamak sayısı bulan program
main()
{
long sayi;
int basamak=0;
char devam;
printf("Basamak sayısını bulacak sayıyı girin : ");
scanf("%d",&sayi);
do {
basamak++;
sayi=sayi/10;
}
while (sayi>0);
printf("Basamak sayısı=%d\n",basamak);
devam=getche();
}_


for Döngüsü
Bu deyim, diğer döngü deyimleri gibi bir kümeyi bir çok kez tekrarlamak için kullanılır. Koşul sınaması while da olduğu gibi döngüye girmeden yapılır. Bu döngü deyimin içinde diğerlerinden farklı olarak başlangıç değeri ve döngü sayacına sahip olmasıdır. Genel yazım biçimi:
for ( başlangıç ; koşul ; artım )
{
... döngüdeki deyimler; ...
}_

Örnek: Klavyeden girilen sayının faktoriyelini hesaplayan program
#include <stdio.h>
int main()
{
long i, n, faktor;
char devam;

printf("Faktoriyeli hesaplanacak sayı girin : ");
scanf("%ld",&n);

faktor=1;
for(i=1; i<=n; i++){
faktor *= i; /* n! = 1 x 2 x 3 x ... x n */
}

printf("%ld! = %ld\n", n, faktor);
devam=getche();
}_

Anahtar kelimeler:
, if
, for


sendetiklat
Sahip
sendetiklat


sendetiklat şu anda çevrimdışı
Gönderilme Tarihi: 23 Kasım 2009 17:49:49 | # 1

Dizi Tanımı
Dizi, aynı tipteki verilere tek bir isimle erişmek için kullanılan bir kümedir. Bu küme matematikteki küme kavramından biraz farklıdır. Bir dizi bildirildikten sonra, dizinin bütün elemanları bellekte peşpeşe saklanır .Bu yüzden dizilere tek bir isim altında çok sayıda değişken içeren bellek bölgesi de denir. Buna göre, bir diziyi dizi yapan iki temel özellik vardır:
1- dizi elemanların bellekte (program çalıştığı sürece) sürekli biçimde bulunması,
2- dizi elemanların aynı türden değişkenler olması,

Dizi Tanımlama
Bir dizi çok sayıda değişken barındırdığından, bunları birbirinden ayırdetmek için indis adı verilen bir bilgiye ihtiyaç vardır. C Programlama Dili'nde, bir dizi hangi tipte tanımlanmış olursa olsun başlangıç indisi her zaman 0(sıfır)'dır.
Bir dizinin bildirim işleminin genel biçimi söyledir:
veriTipi dizi_adı[eleman_sayısı];
Örneğin, 5 elemanlı, kütle verilerini bellekte tutmak için, kutle dizisi şöyle tanımlanabilir:
float kutle[5];
Bu dizinin elemanlarına bir değer atama işlemi şöyle yapılabilir:
kutle[0] = 8.471
kutle[1] = 3.683
kutle[2] = 9.107
kutle[3] = 4.739
kutle[4] = 3.918  
NOT 1. elemanın indisi Sıfır,(0), 5. elemanın indisinin 4’dür.

Dizi tanımlama
Örnek-1
int n = 100;
int a[n]; _


Örnek-2
#define n 100
...
int a[n]; _

Dizilere Başlangıç Değeri Verme
Bir diziye başlangıç değerleri aşağıdaki gibi kısa formda atanabilir:
float kutle[5]= { 8.471, 3.683, 9.107, 4.739, 3.918 };
int maliyet[3] = { 25, 72, 94 };
double a[4] = { 10.0, 5.2, 7.5, 0.0};
Bir dizinin uzunluğu belirtilmeden de başlangıç değeri atamak mümkündür.
int a[] = { 100, 200, 300, 400 };
float v[] = { 9.8, 11.0, 7.5, 0.0, 12.5};
Derleyici bu şekilde bir atama ile karşılaştığında, küme parantezi içindeki eleman sayısını hesaplar ve dizinin o uzunlukta açıldığını varsayar. Yukarıdaki örnekte, a dizisinin 4, v dizisinin 5 elemanlı olduğu varsayılır.

Dizileri Yazdırma/Okuma

printf ve scanf fonksiyonları bir dizinin okunması ve yazdırılması için de kullanılır. Örneğin bir A dizisinin aşağıdaki gibi bildirildiğini varsayalım:
int A[10]; Bu dizinin elemanlarını klavyeden okumak için:
for(i=0; i<10; i++)
scanf("%d",&A);
daha sonra bu değerlerini ekrana yazmak için:
for(i=0;i<10;i++)
printf("%d\n",A);
Soru-1
1- Klavyeden girilen n adet sayının ortalamasını bulan C programı
#include<stdio.h>
//n adet sayıyı diziye aktarıp sonra bu dizinin
//elemanlarının toplamını bulan program.
main()
{
int n,toplam=0,i;
puts("Kaç adet sayı gireceksiniz");
scanf("%d",&n);
int dizi[n];
for(i=0;i<n;i++){
printf("%d.sayi:",i+1);
scanf("%d",&dizi);
}
for(i=0;i<n;i++)
toplam=toplam+dizi;
printf("dizi elemanları toplamı:%d",toplam);
getchar();getchar();
}_

Soru-2
10’lu sistemden 2’li sistem çeviren c programı
#include <stdio.h>
//10 ludan 2liye çevirme
main()
{
int ikili[20],sayi,i=0,k;
printf("Sayı gir:");
scanf("%d",&sayi);
while (sayi>0)
{
ikili=sayi%2;
sayi/=2;
i++;
}

for(k=i-1;k>=0;k--)
printf("%d",ikili[k]);

getchar(); getchar();
}_

Soru-3
Klavyeden girilen bir sayıyı tersten yazdıran C programı
#include <stdio.h>
//Klavyeden girilen bir sayıyı tersten yazdırma
main()
{
int sayideger[20],sayi,i=0,k,toplam=0;
printf("Sayı gir:");
scanf("%d",&sayi);
while (sayi>0)
{
sayideger=sayi%10;
sayi/=10;
i++;
}

for(k=0;k<i;k++)
printf("%d",sayideger[k]);

getchar();getchar();
}_

Çalışma Sorusu
10’ar elemanlı 3 diziden 1.dizinin baştan ikinci dizinin sondan elemanlarını toplayarak 3.diziye aktaran programı yazınız.

Dizi içinde en büyük ve en küçük elemanı bulma
10 elemanlı bir dizinin en küçük elemanı ve n büyük elemanını bulan program.
#include <stdio.h>
//10 elemanlı bir dizinin en büyük ve en küçük elemanını bulma
main()
{
int a[10] = {100, -250, 400, 125 ,550, 900, 689, 450, 347, 700};
int k, eb,ek;

/* ilk eleman en büyük kabul ediliyor */
eb = a[0];
ek = a[0];
for(k=1; k<10; k++)
{ if( a[k]>eb ) eb = a[k];
if( a[k]<ek ) ek = a[k];}
printf("En buyuk eleman = %d\n",eb);
printf("En kucuk eleman = %d\n",ek);

getchar();
}_


sendetiklat
Sahip
sendetiklat


sendetiklat şu anda çevrimdışı
Gönderilme Tarihi: 23 Kasım 2009 17:52:55 | # 2

Dizi Elemanlarının Sıralaması
#include <stdio.h>
#define n 10
//10 elemanlı bir dizinin küçükten büyüğe sıralanması
main()
{
int a[n] = {100, -250, 400, 125 ,550, 900, 689, 450, 347, 700};
int i, j, k, temp;

// Dizinin kendisi
printf("Once : ");
for(k=0;k<n;k++)
printf("%d ",a[k]);

// Sırala
for(k=0; k<n-1; k++){
for(j=k+1; j<n; j++){
if(a[k]>a[j] ){
temp=a[j];
a[j]=a[k];
a[k]=temp;_


İki boyutlu diziler
Değişken tipi değişken adı [boyut1][boyut2]
İki boyutlu dizilerde ilk indis satır ,ikinci indis sütun sayısını gösterir.
int m[3][2]={{1,2},{3,4}}

sendetiklat
Sahip
sendetiklat


sendetiklat şu anda çevrimdışı
Gönderilme Tarihi: 23 Kasım 2009 18:08:10 | # 3

Stringler >>
Sayfalar:
[1]
1.3.0
Kullanım Şartları - İletişim - Öner
29 Temmuz 2014 Salı 15:14:23