TÜRKİYE CUMHURİYETİ
DUMLUPINAR ÜNİVERSİTESİ
MÜHENDİSLİK FAKÜLTESİ
İNŞAAT MÜHENDİSLİĞİ BÖLÜMÜ
YAPI MÜHENDİSLİĞİNDE BİLGİSAYAR UYGULAMALARI
( Teknik Seçmeli Ders VII )
06
Yrd. Doç. Dr. Mustafa Halûk SARAÇOĞLU
İnşaat Mühendisliği Bölümü
2014 – 2015 GÜZ
SINIRLI KARŞILAŞTIRMA İŞLEMİ
?:
Belirli bir koşulun sağlanması durumunda ilk seçimi,
sağlanmaması durumunda ise diğer seçimi
gerçekleştiren bir işlemdir.
Örnek 2.
Hesaplanan donatı alanı;
Minimum donatı alanından küçükse,
donatı değerini minimum donatı alanına eşitleyen,
değilse,
hesaplanan donatı alanını esas alan bir program geliştiriniz.
Örneğin algoritması şu şekilde oluşturulabilir:
1. Başla
2. Giriş bilgilerini (hesaplanan donatı alanı, kesit genişliği, kesit yüksekliği)
tanımla
3. Minimum donatı alanını hesapla (0.01*b*h)
4. Hesaplanan donatı alanı minimum donatı alanından küçük ise donatı
değerini minimum donatı alanına eşitle 6. adıma git
5. Hesaplanan donatı alanı minimum donatı alanından küçük değil ise
donatı değerini hesaplanan donatı alanına eşitle
6. Donatı değerini yazdır
7. Bitiş
Örneğin akış diyagramı şu şekilde olabilir:
Başla
hesaplanan donatı alanı (As),
kesit genişliği (b), kesit yüksekliği (h)
Minimum donatı alanını hesapla
Asmin=0.01*b*h
Evet
As=Asmin
As<Asmin
As
Bitir
Hayır
As=As
#include <iostream>
using namespace std;
satırları ile başlık dosyası programa eklenir.
int main()
ile programın ana fonksiyonun tanımlanması yapılır.
{
ile ana fonksiyonun, diğer bir deyişle programın başladığı belirtilir.
Programın sonu da kapanan küme parantez “}” ile olmalıdır.
double b,h,As,Asmin;
satırında değişkenlerin türleri ve adları tanımlanır.
As
b
h
: hesaplanan donatı alanı
: kesit genişliği
: kesit yüksekliği
Asmin
: minimum donatı alanı
olacak şekilde birden çok değişken aralarında “,” kullanılarak tanımlanmaktadır.
cout << “Hesaplanan Donati Alani:"; cin >> As;
satırı ile ekrana “Hesaplanan Donatı Alani:” yazılması sağlanır.
cout <<
ekrana yazma işlemini sağlar.
cin >> klavyeden bir değer girilmesini ve bu değerin
değişkene atanmasını sağlar.
Benzer şekilde diğer değerler alınır:
cout << "Kesit genisligi:"; cin >> b;
cout << "Kesit yuksekligi:"; cin >> h;
Daha sonra minimum donatı alanının değeri hesaplanır.
Asmin=0.01*b*h;
SINIRLI KARŞILAŞTIRMA İŞLEMİ yapılır
As= (As<Asmin) ? Asmin : As;
Evet
As=Asmin
As<Asmin
Hayır
As=As
As<Asmin
=>
As=Asmin
As>=Asmin
=>
As=As
cout<<"\n\nAs:"<<As<<endl;
satırında cout ile ekrana önce yazı ile As: ve daha sonra
hesaplanan As değerinin yazılması sağlanır.
return 0;
}
ile ana fonksiyonun, diğer bir deyişle programın bittiği belirtilir.
// ORNEK 2 //
#include <iostream>
using namespace std;
int main()
{
double b,h,As,Asmin;
cout << "Hesaplanan Donati Alani :"; cin >> As;
cout << "Kesit genisligi :"; cin >> b;
cout << "Kesit yuksekligi :"; cin >> h;
Asmin=0.01*b*h;
As= (As<Asmin) ? Asmin : As;
cout<<"\n\nAs:"<<As<<endl;
return 0;
}
PROGRAM DENETİMİ
if-else Denetimi
if(koşul)
{ koşulun sağlanması durumunda yapılacaklar;}
else
{koşulun sağlanmaması durumunda yapılacaklar;}
Birden çok koşul tek bir if deyiminde
ve (&&), veya (| |) gibi mantıksal işlemler ile birleştirilerek kullanılabilir:
if(koşul1 && koşul2)
{
koşul1 ve koşul2 sağlandığında yapılacaklar;
}
Karar verilecek durum sayısı birden fazla olduğunda;
if-else deyimleri art arda sıralanarak farklı durumlardan bir tanesine belirli
bir koşulun sağlanması durumunda yönlenme sağlanabilir:
if(koşul_1)
{yapılacaklar_1;}
else if(koşul_2)
{yapılacaklar_2;}
...
else if(koşul_n-1)
{yapılacaklar_n-1;}
else
{yapılacaklar_n;}
Örnek 3.
Hesaplanan donatı alanı; minimum donatı alanından küçükse,donatı
değerini minimum donatı alanına eşitleyen,değilse, hesaplanan donatı
alanını esas alan bir program geliştirilmişti.
Bu duruma ek olarak hesaplanan donatı alanını maksimum donatı alanı
ile kıyaslayan; eğer maksimum donatı alanından büyükse kesitin
yetersiz olduğunu, küçükse yeterli olduğunu ekrana yazdıran bir
program geliştiriniz.
Örneğin algoritması şu şekilde oluşturulabilir:
1. Başla
2. Giriş bilgilerini (hesaplanan donatı alanı, kesit genişliği, kesit yüksekliği)
tanımla
3. Minimum donatı alanını hesapla (0.01*b*h)
4. Maksimum donatı alanını hesapla (0.04*b*h)
5. Hesaplanan donatı alanı minimum donatı alanından küçük ise donatı
değerini minimum donatı alanına eşitle
6. Hesaplanan donatı alanı minimum donatı alanından küçük değil ise
maksimum donatı alanından büyük ise kesit boyutlarının yetersiz
olduğunu ekrana yaz
7. Hesaplanan donatı alanı minimum donatı alanından küçük değil ise
maksimum donatı alanından büyük değil ise kesit boyutlarının yeterli
olduğunu ekrana yaz
8. Bitiş
//ORNEK 3//
#include <iostream>
using namespace std;
int main()
{
double b,h,As,Asmin,Asmax;
cout << "Hesaplanan Donati Alani :"; cin >> As;
cout << "Kesit genisligi :"; cin >> b;
cout << "Kesit yuksekligi :"; cin >> h;
Asmin=0.01*b*h;
Asmax=0.04*b*h;
if(As<Asmin)
{
As=Asmin;
cout <<"As=Asmin oldu...";
cout <<"\nAs:"<<As;
}
else if(As>Asmax)
{
cout <<"Kesit boyutlari yetersiz";
}
else
{
cout <<"Kesit boyutlari yeterli";
cout <<"\n As:"<<As;
}
cout <<endl<<endl;
return 0;
}
DÖNGÜLER
for
C++ ‘da en çok kullanılan ve en güçlü döngü türüdür.
for(başlangıç tanımları; devam koşulu; değişim komutları)
{
yapılacak işlemler;
}
Örnek 4.
Çapı 6 mm ile 32 mm arasındaki donatıların kesit
alanlarını hesaplayıp ekrana çap ve alan biçiminde
yazan bir bilgisayar programını for döngüsü
kullanarak geliştiriniz.
Algoritma :
1. Başla
2. Donatı çapı = 6 ile başla
3. Donatı çapını ve alanını yazdır
4. Donatı çapını 2 artır
5. Donatı çapı 34’ten küçük ise 3. adıma git
6. Bitir
//ORNEK 4//
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
int cap;
cout << "CAP\tALAN";
for ( cap=6; cap < 34; cap=cap+2 )
{
cout << "\n" << cap << "\t" << cap*cap*M_PI/4;
}
cout << endl << endl;
return 0;
}
PROGRAM DENETİMİ
switch
Verilen bir bağıntının veya değişkenin aldığı değere göre
yapılacakların belirlenmesini sağlayan karşılaştırma deyimidir.
switch(değişken){
case sabit_1 :
{yapılacaklar_1;
break;}
case sabit_2 :
{yapılacaklar_2;
break;}
. . .
case sabit_n-1 :
{yapılacaklar_n-1;
break;}
default:
{yapılacaklar_n;
break;}
}
Örnek 5.
TS500’de bulunan Beton Sınıfları ve Dayanımları tablosundan faydalanarak
kullanıcıdan beton sınıfını isteyen ve ekrana beton ile ilgili dayanımları ve
elastisite modülünü yazdıran bir bilgisayar programını switch-case denetimini
kullanarak geliştiriniz.
Algoritma :
1. Başla
2. . . .
3. . . .
4. . . .
. . . Bitir
//ORNEK 5//
#include <iostream>
using namespace std;
int main()
{
double silindir,kup,cekme,elastisite;
int beton_sinifi,kukla;
cout << "Beton sinifini giriniz: C";
cin>>beton_sinifi;
//ORNEK 5 devam//
switch(beton_sinifi)
{
case 16 :
{silindir=16.0; kup=20.0;
cekme=1.4;
elastisite=27000.0;
break;}
case 20 :
{silindir=20.0; kup=25.0;
cekme=1.6;
elastisite=28000.0;
break;}
case 30 :
{silindir=30.0; kup=37.0;
cekme=1.9;
elastisite=32000.0;
break;}
case 40 :
{silindir=40.0; kup=50.0;
cekme=2.2;
elastisite=34000.0;
break;}
case 50 :
{silindir=50.0; kup=60.0;
cekme=2.5;
elastisite=37000.0;
break;}
default :
{cout<<"\n\nUygun beton sinifi girmediniz!...";
kukla=0;
break;}
}
//ORNEK 5 devam//
if(kukla!=0)
{
cout<<"\n\nBeton sinifi C"<<beton_sinifi<<" icin dayanimlar ve
Elastisite Modulu:\n";
cout<<"\nSilindir basinc dayanimi fck : "<<silindir<<" MPa";
cout<<"\n(200mm)Kup basinc dayanimi : "<<kup<<" MPa";
cout<<"\nSilindir cekme dayanimi fctk : "<<cekme<<" MPa";
cout<<"\nElastisite modulu Ec
: "<<elastisite<<" MPa";
}
cout << endl << endl;
return 0;
}
SON TESLİM TARİHİ
ÖDEV 1.
10 EKİM 2014
Bir cismin A noktasına tesir eden, aralarında α açısı bulunan
ve bir noktada kesişen P ve Q kuvvetlerinin;
P
 R bileşke kuvvetinin şiddetini,
A
 R ile P kuvvetleri arasındaki β açısını,
γ
 R ile Q kuvvetleri arasındaki γ açısını
hesaplayıp ekrana yazan bir bilgisayar programı geliştiriniz.
a. Algoritmasını yazınız.
b. Akış diyagramını çiziniz.
c. C++ Program kodlarını yazınız.
d. Örnek problemi çözerek ekran görüntüsünü bastırınız.
Örnek Öğrenci No: 199413111042
Q = 10 [kN]
R
Q
Örnek problem:
P = öğrenci no son iki hane [kN]
Q = 10 [kN]
α = öğrenci no son hanenin 10 katı [
Geliştirdiğiniz programın;
P = 42 [kN]
β
α
α = 2 x 10 = 200
0]
Download

yambu06