20
BSM104 Algoritmalar ve Programlama II 1. Hafta - Giri ş Dr. Öğr. Üyesi Nesibe YALÇIN BARTIN ÜNİVERSİTESİ MÜHENDİSLİK, MİMARLIK VE TASARIM FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ

BARTIN ÜNİVERSİTESİ MÜHENDİSLİK, MİMARLIK VE …• C ve C++, Harvey M. Deitel - Paul J. Deitel, Sistem Yayıncılık • C Programlama Dili , Papatya Bilim Yayınevi • C++

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: BARTIN ÜNİVERSİTESİ MÜHENDİSLİK, MİMARLIK VE …• C ve C++, Harvey M. Deitel - Paul J. Deitel, Sistem Yayıncılık • C Programlama Dili , Papatya Bilim Yayınevi • C++

BSM104 Algoritmalar ve Programlama II

1. Hafta - Giriş

Dr. Öğr. Üyesi Nesibe YALÇIN

BARTIN ÜNİVERSİTESİ

MÜHENDİSLİK, MİMARLIK VE TASARIM FAKÜLTESİ

BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ

Page 2: BARTIN ÜNİVERSİTESİ MÜHENDİSLİK, MİMARLIK VE …• C ve C++, Harvey M. Deitel - Paul J. Deitel, Sistem Yayıncılık • C Programlama Dili , Papatya Bilim Yayınevi • C++

2

Ders Planı ― Genel Tekrar ― İki ve Çok Boyutlu Diziler ― Dizgeler (Karakter Dizileri - String) ― Dosya İşlemleri ― Göstericiler (Pointers) ― Dinamik Bellek Yönetimi ― Struct (Yapı), Enum, Union (Birlik) Veri Yapıları ― Struct ve Göstericiler

― C++ ile Programlama

Page 3: BARTIN ÜNİVERSİTESİ MÜHENDİSLİK, MİMARLIK VE …• C ve C++, Harvey M. Deitel - Paul J. Deitel, Sistem Yayıncılık • C Programlama Dili , Papatya Bilim Yayınevi • C++

3

Dersin Öğrenme Çıktıları ― Pointer, diziler, struct, enum, union, vb. gibi programlama kavramlarını öğrenme ve kullanabilme ― Probleme uygun veri yapılarını tanımlayabilme ― Temel dosya işlemlerini program ile gerçekleştirebilme ― C ve C++ programlama dillerini kullanarak bir programlama dilinin yapısını anlama ― Farklı seviyeli programlama dillerini kullanarak kısa programlar yazabilme

Page 4: BARTIN ÜNİVERSİTESİ MÜHENDİSLİK, MİMARLIK VE …• C ve C++, Harvey M. Deitel - Paul J. Deitel, Sistem Yayıncılık • C Programlama Dili , Papatya Bilim Yayınevi • C++

4

Diğer Hususlar ― Ders Sunumları-Kaynakları ve Sınav Notları • https://nesibeyalcin.wordpress.com/bsm104/ • http://ubys.bartin.edu.tr/ (haftalık ders içerikleri) • C ve C++, Harvey M. Deitel - Paul J. Deitel, Sistem Yayıncılık • C Programlama Dili , Papatya Bilim Yayınevi • C++ Programlama Dili, Seçkin Yayıncılık

― İletişim

[email protected] Mühendislik İdari Bina Oda No:328 Ofis Tel: 0378 501 1000 - 1840

Page 5: BARTIN ÜNİVERSİTESİ MÜHENDİSLİK, MİMARLIK VE …• C ve C++, Harvey M. Deitel - Paul J. Deitel, Sistem Yayıncılık • C Programlama Dili , Papatya Bilim Yayınevi • C++

5

Diğer Hususlar ― Değerlendirme Vize (%25) + Uygulama (%10) + Kısa Sınav (%5)+ Final (%60)

― Uygulama Sınavları • Uygulama notları yazılan kodlara göre laboratuvar dersinde

verilecektir.

― Kısa Sınavlar • Laboratuvar dersi başlangıcında kısa sınavlar yapılacaktır. • Kısa sınavların kesinlikle mazereti olmayacaktır. • Kısa sınavda bir önceki haftalarda anlatılan konulardan

sorulacaktır.

Page 6: BARTIN ÜNİVERSİTESİ MÜHENDİSLİK, MİMARLIK VE …• C ve C++, Harvey M. Deitel - Paul J. Deitel, Sistem Yayıncılık • C Programlama Dili , Papatya Bilim Yayınevi • C++

6

Uygulama Örnekleri

10 öğrenci için girilen nota göre geçip kaldığını bulan programın algoritmasını (pseudo kod – kaba kod) yazınız, akış şemasını çiziniz.

1. Başla 2. i=1 3. Öğrencinin adını, puanını gir 4. Eğer öğrencinin puanı <=50 ise “kaldı” yaz 5. Değilse “geçti” yaz 6. i=i+1 7. Eğer i<=10 ise 3. adıma git 8. Bitir

Page 7: BARTIN ÜNİVERSİTESİ MÜHENDİSLİK, MİMARLIK VE …• C ve C++, Harvey M. Deitel - Paul J. Deitel, Sistem Yayıncılık • C Programlama Dili , Papatya Bilim Yayınevi • C++

7

10 öğrenci için girilen nota göre geçip kaldığını bulan programın akış şeması

Page 8: BARTIN ÜNİVERSİTESİ MÜHENDİSLİK, MİMARLIK VE …• C ve C++, Harvey M. Deitel - Paul J. Deitel, Sistem Yayıncılık • C Programlama Dili , Papatya Bilim Yayınevi • C++

8

Uygulama Örnekleri

#include <stdio.h> #include <conio.h> #include <stdlib.h> #include <time.h> main(){ srand(time(0)); int x= 20+rand()%21; printf("Uretilen sayi=%d",x); getch(); }

Page 9: BARTIN ÜNİVERSİTESİ MÜHENDİSLİK, MİMARLIK VE …• C ve C++, Harvey M. Deitel - Paul J. Deitel, Sistem Yayıncılık • C Programlama Dili , Papatya Bilim Yayınevi • C++

9

Uygulama Örnekleri

#include <stdio.h> int main( ){ int i = 0; while (i < 2) { if (i == 1) break; i++; if (i == 1) continue; printf("Guzeli guzel yapan edeptir.\n"); } printf("Edep ise guzeli sevmeye sebeptir.\n"); }

Ekran çıktısı: ?

Page 10: BARTIN ÜNİVERSİTESİ MÜHENDİSLİK, MİMARLIK VE …• C ve C++, Harvey M. Deitel - Paul J. Deitel, Sistem Yayıncılık • C Programlama Dili , Papatya Bilim Yayınevi • C++

10

Uygulama Örnekleri

Klavyeden girilen vize ve final notlarına göre alınan harf notunu ekrana basan program kodunu C dilinde yazınız. (Vize:%40, Final:%60, AA:09, BB:70, CC:50, FF<50)

Page 11: BARTIN ÜNİVERSİTESİ MÜHENDİSLİK, MİMARLIK VE …• C ve C++, Harvey M. Deitel - Paul J. Deitel, Sistem Yayıncılık • C Programlama Dili , Papatya Bilim Yayınevi • C++

11

Uygulama Örnekleri

#include<stdio.h> #include<conio.h> int main(){ int vize, final, secim; float sonuc; printf("Vize notunu giriniz:"); scanf("%d",&vize); printf("Final notunu giriniz:"); scanf("%d",&final); printf("Harf Notu:"); sonuc=0.4*vize+0.6*final; if(sonuc>=90) secim=1; else if (sonuc>=70) secim=2; else if (sonuc>=50) secim=3; else secim=4;

switch(secim) { case 1: printf("AA"); break; case 2: printf("BB"); break; case 3: printf("CC"); break; case 4: printf("FF"); break; } getch(); return 0; }

Page 12: BARTIN ÜNİVERSİTESİ MÜHENDİSLİK, MİMARLIK VE …• C ve C++, Harvey M. Deitel - Paul J. Deitel, Sistem Yayıncılık • C Programlama Dili , Papatya Bilim Yayınevi • C++

12

Uygulama Örnekleri

4,5,6,1,0 değerleri giriliyor kabul edilsin. #include <stdio.h> #include <conio.h> int main(){ int a=0,sayi; do { printf("Sayi gir:"); scanf("%d",&sayi); a+=sayi; } while(sayi!=0); printf("T(a)=%d",a); getch(); }

Ekran çıktısı: ?

Page 13: BARTIN ÜNİVERSİTESİ MÜHENDİSLİK, MİMARLIK VE …• C ve C++, Harvey M. Deitel - Paul J. Deitel, Sistem Yayıncılık • C Programlama Dili , Papatya Bilim Yayınevi • C++

13

Uygulama Örnekleri

#include <stdio.h> #include <conio.h> int alan_hesapla(int kenar1, int kenar2) { int alan=kenar1*kenar2; return alan; } int cevre_hesapla(int kenar1, int kenar2) { int cevre=2*(kenar1+kenar2); return cevre; } int main() { int a,b; printf("Dortgenin kenar uzunluklari:"); scanf("%d %d",&a,&b); printf("Dortgenin alani:%d\n",alan_hesapla(a,b)); printf("Dortgenin cevresi:%d",cevre_hesapla(a,b)); getch(); return 0; }

Page 14: BARTIN ÜNİVERSİTESİ MÜHENDİSLİK, MİMARLIK VE …• C ve C++, Harvey M. Deitel - Paul J. Deitel, Sistem Yayıncılık • C Programlama Dili , Papatya Bilim Yayınevi • C++

14

Uygulama Örnekleri

Üç kenar uzunluğu verilen üçgenin çizilip çizilemeyeceğini sınayan, eğer çizilebiliyorsa 1 değeri, çizilemiyorsa 0 değeri döndüren, int ucgen_mi(int a, int b, int c) isimli fonksiyonu yazınız.

NOT: üçgenin bir kenarı diğer iki kenarın farkından büyük, toplamından küçük olmalıdır. Üç kenar içinde bu şart geçerlidir.

Page 15: BARTIN ÜNİVERSİTESİ MÜHENDİSLİK, MİMARLIK VE …• C ve C++, Harvey M. Deitel - Paul J. Deitel, Sistem Yayıncılık • C Programlama Dili , Papatya Bilim Yayınevi • C++

15

Uygulama Örnekleri

#include<stdio.h> #include<conio.h> int ucgen_mi(int a, int b, int c); int main() { int sayi1,sayi2,sayi3,sonuc; printf("1.Kenari Giriniz=>"); scanf("%d",&sayi1); printf("2.Kenari Giriniz=>"); scanf("%d",&sayi2); printf("3.Kenari Giriniz=>"); scanf("%d",&sayi3); sonuc=ucgen_mi(sayi1, sayi2, sayi3); printf("Sonuc=>%d",sonuc); getch(); }

int ucgen_mi(int a, int b, int c) { if ((a + b) > c) if ((b + c) > a) if ((a + c) > b) return 1; return 0; }

Page 16: BARTIN ÜNİVERSİTESİ MÜHENDİSLİK, MİMARLIK VE …• C ve C++, Harvey M. Deitel - Paul J. Deitel, Sistem Yayıncılık • C Programlama Dili , Papatya Bilim Yayınevi • C++

16

Diziler

― Dizi, aynı tip verilerin birbiri arkasına tanımlanmasıdır.

― Diziler, sadece aynı veri türünden değişken değerleri alabilir.

― Diziler kullanılarak, aynı isimle birden fazla değişkene erişilebilir ve işlem yapılabilir.

― Diziler kullanılarak işlem sayısı azaltılır, zaman ve karmaşıklıktan kazanç sağlanır.

Page 17: BARTIN ÜNİVERSİTESİ MÜHENDİSLİK, MİMARLIK VE …• C ve C++, Harvey M. Deitel - Paul J. Deitel, Sistem Yayıncılık • C Programlama Dili , Papatya Bilim Yayınevi • C++

17

Tek Boyutlu Diziler

Dizinin_türü Dizinin_ismi [Eleman_sayısı] int a[4] char x[2]

Page 18: BARTIN ÜNİVERSİTESİ MÜHENDİSLİK, MİMARLIK VE …• C ve C++, Harvey M. Deitel - Paul J. Deitel, Sistem Yayıncılık • C Programlama Dili , Papatya Bilim Yayınevi • C++

18

int a[4]; a[0] = 8; a[1] = 22; a[2] = -3; a[3] = 49; char x[2]; x[0] = ‘?’; x[1] = ‘k’;

a[4] =5;

x[2] =‘n’

a[0] a[1]

a[2] a[3] x[0] x[1]

Tek Boyutlu Diziler

Page 19: BARTIN ÜNİVERSİTESİ MÜHENDİSLİK, MİMARLIK VE …• C ve C++, Harvey M. Deitel - Paul J. Deitel, Sistem Yayıncılık • C Programlama Dili , Papatya Bilim Yayınevi • C++

19

Tek Boyutlu Diziler

int a[4] = {8, 22, -3, 49}; int a[] = {8, 22, -3, 49}; char x[2] = {‘?’, ‘k’}; int b[5] = {1, 2, 3, 4, 5, 6}; //hatalı – eleman sayısı float a[-6]={1.1,2.7,3.3,4.0}; //hatalı – negatif boyut int a[2.2]={11,22,33,44,55,66}; //hatalı – boyut tam sayı olmalı int x[5]={ };

Page 20: BARTIN ÜNİVERSİTESİ MÜHENDİSLİK, MİMARLIK VE …• C ve C++, Harvey M. Deitel - Paul J. Deitel, Sistem Yayıncılık • C Programlama Dili , Papatya Bilim Yayınevi • C++

20

Uygulama Örnekleri

#include <stdio.h> #include <conio.h> int main(){

char str[50] = "afzrbei"; int i, u=7; for(i=3;i<13;i+=3) {

if(i > u) printf("%c",str[i%u]); else printf("%c",str[i]);

} getch(); return 0;

}

Ekran çıktısı: ?