BİLG Dr. Mustafa T. Babagil 1

Benzer belgeler
BİLG Dr. Mustafa T. Babagil 1

Eastern Mediterranean University Faculty of Arts & Sciences -- Department Of Mathematics BİLG213 BİLGİSAYAR PROGRAMLAMAYA GİRİŞ

Programlama Dilleri. C Dili. Programlama Dilleri-ders08/ 1

Örnek: İki fonksiyondan oluşan bir program. Fonksiyon Tanımı

C++ Dersi: Nesne Tabanlı Programlama

Örnek1: #include <iostream> #include <string> using namespace std;

2 ALGORİTMA VE AKIŞ DİYAGRAMLARI

Diziler. Yrd.Doç.Dr.Bülent ÇOBANOĞLU

Fonksiyonlar. C++ ve NESNEYE DAYALI PROGRAMLAMA 51. /* Fonksiyon: kup Bir tamsayının küpünü hesaplar */ long int kup(int x) {

C++ Dersi: Nesne Tabanlı Programlama

Diziler (Arrays) Çok Boyutlu Diziler

NESNEYE YÖNELİK PROGRAMLAMA C++ a Giriş

Jval tipi. Genel veri yapılarını kullanacağımız zaman Jval den faydalanırız.önemli olanlar aşağıda mevcuttur:

Veri Yapıları. Amaçlar: Temel Veri Yapılarını Tanımlamalı Veri Yapılarını Veri Modeli ve Türlerini Öğreneceksiniz. İçindekiler:

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Fall Object-Oriented Programming Laboratory 02 - Structures

BİL1001 Bilgisayar Bilimlerine Giriş 1

BİLGİSAYAR MÜHENDİSLİĞİ ALGORİTMA VE PROGRAMLAMA II 2.HAFTA SWİTCH (CASE), SAYAÇLAR, DÖNGÜLER,

BÖLÜM 11: YAPISAL VERİ TİPLERİ

ALGORİTMA VE PROGRAMLAMA II

C++ Dersi: Nesne Tabanlı Programlama

BLM 111 ALGORİTMA VE PROGRAMLAMA I

Göstericiler (Pointers)

Deney 7: Fonksiyon Tanımlama ve Parametre Aktarım Yöntemleri

#ifndef VEKTOR_H #define VEKTOR_H. struct vektor_s { double x; double y; double z; }; typedef struct vektor_s vektor_t;

ALGORİTMA VE PROGRAMLAMA II

3/7/2011. ENF-102 Jeoloji 1. Tekrar -- Değişken Tanımlamaları (Definition) ve Veri Türleri (Data Type) Veri Tanımları ve Mantıksal Đşlemler

Karakter katarları ile ilgili fonksiyonlar içerir Yerel kayan noktalı sayılar tanımlanır

YAPILAR BİRLİKLER SAYMA SABİTLERİ/KÜMELERİ. 3. Hafta

BĠLGĠSAYAR PROGRAMLAMA II C++ Programlamaya GiriĢ Published by Juan Soulié

Pointer Kavramı. Veri Yapıları

DİZİLER-KATARLAR ALGORİTMA VE PROGRAMLAMA II

PROGRAMLAMA TEMELLERİ DERSİ ÖZETİ

C++ Giriş Ders 1 MSGSU Fizik Bölümü Ferhat ÖZOK Kullanılacak kaynak: Published by Juan Soulié

Değişkenler. Geçerli değişken isimleri : baslamazamani, ad_soyad, x5 Geçersiz değişken isimleri : 3x, while

TEMPLATES. Binnur Kurt Bilgisayar Mühendisliği Bölümü İstanbul Teknik Üniversitesi. C++ ile Nesneye Dayalı Programlama 1

Fall Object-Oriented Programming Laboratory 03

ALGORİTMA VE PROGRAMLAMA I

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Adım Adım C-II. Eksik kalmış konular

enum bolumler{elektronik, insaat, bilgisayar, makine, gida};

ALGORİTMA VE PROGRAMLAMA I

C#(Sharp) Programlama Dili

BM102 BİLGİSAYAR PROGRAMLAMA II LABORATUVAR UYGULAMALARI. 3Hafta

C++ Dersi: Nesne Tabanlı Programlama

enum, struct, union ve typedef Yapıları

PROGRAMLAMAYA GİRİŞ FONKSİYONLAR

Görsel Programlama DERS 03. Görsel Programlama - Ders03/ 1

Karabük Üniversitesi, Mühendislik Fakültesi... WEB TEKNOLOJİLERİ

/*int sayi1, sayi2,toplam=0;

BLM 111 ALGORİTMA VE PROGRAMLAMA I

şeklinde tanımlanmıştır. O halde, dosyaları daha önceki bilgilerimizi kullanarak FILE *Dosya1, *Dosya2;

Görsel Programlama 1

YAPILAR (STRUCTURES)

elemanlarının gezilmesine yönelik bir örnek sunulmuştur, inceleyiniz.

PROGRAMLAMAYA GİRİŞ DERS 2

Algoritma ve Programlama: Karar Yapıları ve Döngüler

Özyineleme (Recursion)

C Programlama Dilininin Basit Yapıları

ALGORİTMA VE PROGRAMLAMA I DERS NOTU#10

int printf (const char *format [, argument,...]);

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-12 Fonksiyonlar. Yrd. Doç. Dr. Ümit ATİLA

8. İŞARETCİLER (POINTERS)

Giriş. ENF102 Jeoloji

BİL-142 Bilgisayar Programlama II

Bil101 Bilgisayar Yazılımı I. M. Erdem ÇORAPÇIOĞLU Bilgisayar Yüksek Mühendisi

İstanbul Teknik Üniversitesi IEEE Öğrenci Kolu DİZİLER

C++ Dersi: Nesne Tabanlı Programlama

while(), do-while(), for() M.İLKUÇAR 2010 MAKU-MYO

Dizi nin Önemi. Telefon rehberindeki numaralar, haftanın günleri gibi v.b.

Temel Bilgisayar Programlama Final Sınavı Çalışma Notları

Mühendislik Fakültesi Elektrik-Elektronik Mühendisliği C Programlama 3. Bölüm Veri Tipleri ve Değişkenler

Döngü Komutları. Komutu. while Komutu Diğer Operatörler Bileşik Komut for Komutu. İçiçe Döngüler break ve continue Komutları

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

GENEL GĐRĐŞ-ÇIKIŞ FONKSĐYONLARI. ENF102 Jeoloji 1. #include <stdio.h> printf Fonksiyonu ÖRNEK. printf

11- FONKSİYONLAR (FUNCTIONS)

EBG101 PROGRAMLAMA TEMELLERİ VE ALGORİTMA

Struct VE GÖSTERİCİLER FONKSİYONLARDA STRUCT KULLANIMI Programlama dilleri hafta -

NESNE TABANLI PROGRAMLAMA Final Sınavı Cevapları

1 RUBY HAKINDA 1 Ruby nin Gelişim Hikayesi 1 Neden Ruby? 1 Neden Bu Kadar Popüler? 2

SAKARYA ÜNİVERSİTESİ BİLGİSAYAR VE BİLİŞİM BİLİMLERİ FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ GÜZ DÖNEMİ PROGRAMLAMAYA GİRİŞ DERSİ

Yrd. Doç. Dr. Caner ÖZCAN

BMT 101 Algoritma ve Programlama I 6. Hafta. Yük. Müh. Köksal Gündoğdu 1

Fonksiyonlar (Altprogram)

Sınav tarihi : Süre : 60 dak. a) ABCDE b) BCDE c) ABCD d) kod hatalı e) BCD

C++ Dersi: Nesne Tabanlı Programlama 2. Baskı

KOCAELİ ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ. BİLGİSAYAR LABORATUVARI II FİNAL SINAVI SORU ve CEVAPLARI(I. ogr)

sayi=3 harf=a reelsayi=8.72 Bellek durumu 5. İşaretç iler (pointers)

Hafta 13 Fonksiyonlar

Programlama Dilleri 1. Ders 4: Diziler

SAKARYA ÜNİVERSİTESİ BİLGİSAYAR VE BİLİŞİM BİLİMLERİ FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ GÜZ DÖNEMİ PROGRAMLAMAYA GİRİŞ DERSİ

İçerik. Temel Kavramlar. Nesne Nedir? 1. Nesne : Örnek. Nesne Nedir? 2. Geçen hafta: Bu hafta: BBS-515 Nesneye Yönelik Programlama

5.HAFTA. Sınıf ve Nesne Kavramı, Metot Oluşturma, Kurucu Metot, this Deyimi

Değişkenler, içerisinde tek bir değer tutabilen yapılardır. Örneğin haftanın günlerini değişkenlerde tutmak istersek, her bir gün adı için bir

Temel Kavramlar BBS-515 Nesneye Yönelik Programlama

Pointers (İşaretçiler)

1. Aşağıdaki program parçacığını çalıştırdığınızda result ve param değişkenlerinin aldığı en son değerleri ve programın çıktısını yazınız.

HSancak Nesne Tabanlı Programlama I Ders Notları

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-8 Değişken Tipleri ve Temel Giriş/Çıkış İşlemleri

Transkript:

BİLG214 20.10.2009 Dr. Mustafa T. Babagil 1

Yapısal bilgi türlerinin tanımlanması. (C++ daki struct yapısı. ) Daha önce öğrenmiş olduğumuz bilgi tipleri char, int ve float v.b. değişkenler ile dizi (array) tanımı idi. Şimdi artık bu temel bilgi tipleri üzerine kendi tanımlayacağımız bilgi tiplerini de ekleyebiliriz. Aslında yapacağımız, bir grup değişkeni tek bir değişkenmiş gibi tanımlamaktır. Bu amaç için de C++ programlama dili bize struct yapısını sunmaktadır. 23.02.2010 Dr. Mustafa T. Babagil 2

STRUCT yapısı Bilgi tiplerini birleştirerek yeni bilgi tipleri oluşturmak için struct yapısını kullanacağız. Bu yapı sayesinde C++ birden fazla değişken türünü gruplayarak kullanma olanağı sunar. Genel yapısı; struct <stuctisim> ; değişkentipi1 değişkentipi2... alan1; alan2; 23.02.2010 Dr. Mustafa T. Babagil 3

struct yapısı örneği!.. struct ogrenci int ogrencinumarasi; string isim; short okuldakikacinciyili; double gpa; double cgpa; ; Yapı ismi Yapı elemanları ; her yapının sonunda mutlaka olmalıdır!... 23.02.2009 Dr. Mustafa T. Babagil 4

Struct yapısı yalnız başına bellekte bir yer tutamaz. Struct yapısı ile oluşturmuş olduğunuz yeni yapının ismini kullanarak bellekte bir yer tutabilirsiniz. Bundan dolayı, struct yapısı kullanarak oluşturmuş olduğunuz yeni yapının ismini amacınıza göre adlandırınız ve bu ismi bir değişken tipi gibi kullanınız. Bir sonraki salytta bir örnek olarak, öğrencitipi yapısı olarak yeni bir yapı oluşturuldu. Bu yapıda bir dizi bilgi tutulması öngörülmüştür. Birden fazla öğrenci için bunu yapıyoruz ve sonuç olarak da sadece en büyük öğrenci numaralı öğrencinin bilgisini ekrana 23.02.2009 çıktı olarak Dr. aldık... Mustafa T. Babagil 5

#include <iostream.h> struct ogrencitipi char isim[20]; double ogrno; char cinsiyet; char bolum[20]; float GPA; float CGPA; double telno; char adres[20]; ; const max=10; int main() ogrencitipi ogrenci[max]; int i,yer; // yer değişkeni, en büyük numaralı öğrencinin dizi içerisindeki yerini tutmak için tanımlandı. double enbuyuknumara; for (i=0;i<5;i++) cout << "isim gir--->"; cin>> ogrenci[i].isim; cout << "ogrenci no gir--->"; cin>> ogrenci[i].ogrno; cout << "cinsiyet gir E/K--->"; cin>> ogrenci[i].cinsiyet; cout << "bolum gir--->"; cin>> ogrenci[i].bolum; cout << "GPA gir--->"; cin>> ogrenci[i].gpa; cout << "CGPA gir--->"; cin>> ogrenci[i].cgpa; cout << "telno gir--->"; cin>> ogrenci[i].telno; cout << "Adres gir---> \n"; cin>> ogrenci[i].adres; 23.02.2009 Dr. Mustafa T. Babagil 6

enbuyuknumara=ogrenci[0].ogrno;i=1; while (i < 5 ) if (enbuyuknumara <= ogrenci[i].ogrno) enbuyuknumara=ogrenci[i].ogrno; yer=i; i++; cout << "en buyuk ogrenci numarali ogrenci bilgileri \n"; cout << "isim --->" << ogrenci[yer].isim << "\n"; cout << "ogrenci no --->" << ogrenci[yer].ogrno << "\n"; cout << "cinsiyet --->" << ogrenci[yer].cinsiyet << "\n"; cout << "bolum --->" << ogrenci[yer].bolum << "\n"; cout << "GPA --->" << ogrenci[yer].gpa << "\n"; cout << "CGPA --->" << ogrenci[yer].cgpa << "\n"; cout << "telno --->" << ogrenci[yer].telno << "\n"; cout << "Adres --->" << ogrenci[yer].adres << "\n"; return 0; 23.02.2009 Dr. Mustafa T. Babagil 7

ÖDEV 1 Struct yapısını kullanarak kendinize ait yeni bir yapı oluşturunuz. En az 4 alan ve 4 çeşit değişken tipi içersin. Bu değişken tiplerinden birisi sayısal bir değişken olsun. En az 10 tane yeni yapı ile ilgili bilgi tutacak bir dizi tanımlayınız. Program çalıştığı zaman bilgi girişlerini yapınız ve çıktı olarak da bu girilen yeni yapıdaki bilgilerinizi sayısal alan dikkate alarak sıralayıp (büyükten küçüğe doğu) ekrana yansıtsın. 23.02.2009 Dr. Mustafa T. Babagil 8

Fonksiyonlarda Struct yapısının kullanılması ve Uygulamaları Fonksiyonlarda daha önceden de anlatmış olduğum gibi, main modülünden yazmış olduğunuz yeni fonksiyona bilgi gönderilmesi işlemi yapılabildiği gibi, yazılan yeni fonksiyon modülüne hiç bilgi gönderilmeden de bu modülü kullanabileceğimizi belirtmiştim. 20.10.2009 Dr. Mustafa T. Babagil 9

Fonksiyon kullanımı ile ilgili bilinmesi gereken 2 temel şey ise, Fonksiyona bilgi gönderilip (değişken göndermek), o bilgiyi kullanarak fonksiyonun işlem yapmasını sağlamak; (pass by value!..) Fonksiyona gönderilen değişken üzerinden işlem yapıp, o değişkenin değerinin değişmesini sağlayan yapıdaki fonksiyon tanımlamalarıdır. (pass by reference!..) Bu yapıdaki fonksiyonları kullanırken sonuç olarak ne istediğimize dikkat etmeliyiz ve bu doğrultuda fonksiyonları kullanmalıyız.

Bulunduğumuz seviye itibarı ile şu anda 1. tipteki fonksiyon kullanımı ile ilgili uygulamalar yapacağız. Yeni bir fonksiyon yazıp bilgi girişi yaptırıp, sıralama işlemi yapan programımızı hatırlıyorsunuz. Bununla ilgili fonksiyonlu bir örnek aşağıda verilmiştir. Herkes bu programı yazıp, F7 tuşu ile adım adım denemelidir.

#include <iostream.h> struct ogrencitipi char isim[20]; double ogrno; char cinsiyet; char bolum[20]; float GPA; float CGPA; double telno; char adres[20]; ; const max=10; ogrencitipi ogrenci[max]; // GLOBAL DEGISKEN TANIMI!.. int i,yer; // BU DEGISKENLER TUM PROGRAM ICIN 1 DEFA TANIMLANIR!.. double enbuyuknumara; // yer değişkeni, en büyük numaralı öğrencinin dizi içerisindeki yerini tutmak için tanımlandı. void bilgigiris(); void enbuyuk_numarali_ogrenciyi_bul(); void enbuyuk_numarali_ogrenciyi_ekrana_yansit();

void bilgigiris() for (i=0;i<max;i++) cout << "isim gir--->"; cin>> ogrenci[i].isim; cout << "ogrenci no gir--->"; cin>> ogrenci[i].ogrno; cout << "cinsiyet gir E/K--->"; cin>> ogrenci[i].cinsiyet; cout << "bolum gir--->"; cin>> ogrenci[i].bolum; cout << "GPA gir--->"; cin>> ogrenci[i].gpa; cout << "CGPA gir--->"; cin>> ogrenci[i].cgpa; cout << "telno gir--->"; cin>> ogrenci[i].telno; cout << "Adres gir---> \n"; cin>> ogrenci[i].adres; void enbuyuk_numarali_ogrenciyi_bul() enbuyuknumara=ogrenci[0].ogrno;i=1; while (i < max ) if (enbuyuknumara <= ogrenci[i].ogrno) enbuyuknumara=ogrenci[i].ogrno; yer=i; i++;

void enbuyuk_numarali_ogrenciyi_ekrana_yansit() cout << "en buyuk ogrenci numarali ogrenci bilgileri \n"; cout << "isim --->" << ogrenci[yer].isim << "\n"; cout << "ogrenci no --->" << ogrenci[yer].ogrno << "\n"; cout << "cinsiyet --->" << ogrenci[yer].cinsiyet << "\n"; cout << "bolum --->" << ogrenci[yer].bolum << "\n"; cout << "GPA --->" << ogrenci[yer].gpa << "\n"; cout << "CGPA --->" << ogrenci[yer].cgpa << "\n"; cout << "telno --->" << ogrenci[yer].telno << "\n"; cout << "Adres --->" << ogrenci[yer].adres << "\n"; int main() bilgigiris(); enbuyuk_numarali_ogrenciyi_bul(); enbuyuk_numarali_ogrenciyi_ekrana_yansit(); return 0;