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

Benzer belgeler
Adı Soyadı Öğrenci No. Toplam (100p) 2 (10p) +10p. 5 (25p) +10p. 3 (20p) 4 (25p) 1 (20p)

void main() { int a[] = {1, 2, 3, 4, 5, 6}; int *p=&a[2]; int **pp=&p; printf("%d", **pp+2); }

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

DOSYA İŞLEMLERİ Programlama dilleri hafta -

PROGRAMLAMAYA GİRİŞ FONKSİYONLAR

Programlama Dilleri 1. Ders 5: Göstericiler

BLM 111 ALGORİTMA VE PROGRAMLAMA I

C++ Dersi: Nesne Tabanlı Programlama

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

Adı Soyadı : Öğrenci No :

8. İŞARETCİLER (POINTERS)

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

C PROGRAMLAMA D İ L İ

10. DOSYA GİRİŞ ÇIKIŞ FONKSİYONLARI

AHMET YESEVİ ÜNİVERSİTESİ BİLİŞİM SİSTEMLERİ VE MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ LİSANS DÖNEM ÖDEVİ

enum, struct, union ve typedef Yapıları

Genel Programlama II

Arasınav Sınavı Soruları Güz 2017 Süre: 90 Dakika

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

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

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

#include<stdio.h> #include<conio.h> #define doktorsayisi 3. typedef struct dr{ int ay1, ay2, ay3, ay4; } doktor; float hesapla(doktor dktr){

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

Yrd. Doç. Dr. Caner ÖZCAN

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

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

BLM 112- Programlama Dilleri II. Hafta 4 İşaretçiler (Pointers)

Sınav tarihi : Süre : 60 dak. a) strstr b) strchr c) strcat d) strcpy e) strlen. a) b) d) e) 0

int main(void) { int num = 0; int input = 1; int retval = 0; struct NODE *nodepointer; nodepointer = (struct NODE *)malloc(sizeof(struct NODE));

MAK 1005 Bilgisayar Programlamaya Giriş. Fonksiyonlar. Prof. Dr. Necmettin Kaya

ALGORİTMA VE PROGRAMLAMA II

elemanlı bir dizide bir sinyalin 1 er saniye aralıklarla ölçülen gerilim değerleri tutulmaktadır. Bu sinyalin tepeden tepeye genliğini,

BİLG Dr. Mustafa T. Babagil 1

Final Sınavı Soruları Bahar 2018

Final Sınavı Soruları Güz, Süre: 90 Dakika

Adı Soyadı : Öğrenci No :

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

BLM-112 PROGRAMLAMA DİLLERİ II. Ders-3 İşaretçiler (Pointer) (Kısım-2)

Yrd. Doç. Dr. Caner ÖZCAN

2) /* Kullanıcıdan alınan iki sayının obebini alt fonksiyon yardımı ile hesaplayan C programı*/

Yrd. Doç. Dr. Caner ÖZCAN

ALGORİTMA VE PROGRAMLAMA II

Yrd. Doç. Dr. Caner ÖZCAN

Pointer Kavramı. Veri Yapıları

Telefon Rehberi Uygulaması

Programlama Dilleri Laboratuvarı

C PROGRAMLAMA D İ L İ

BLM 112- Programlama Dilleri II. Hafta 5 İşaretçiler (Pointers)

BLM 111 ALGORİTMA VE PROGRAMLAMA I

BMB1002 Bilgisayar Programlamaya Giriş. Dosyalar. Prof. Dr. Necmettin Kaya

Yrd. Doç. Dr. Caner ÖZCAN

ALGORİTMA VE PROGRAMLAMA II

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

C++ Dersi: Nesne Tabanlı Programlama

ÇOK BOYUTLU DİZİLER VE DİNAMİK BELLEK YÖNETİMİ İLE İLGİLİ ÖRNEKLER

MAK 1005 Bilgisayar Programlamaya Giriş C DİLİNE GİRİŞ. Prof. Dr. Necmettin Kaya

Adım Adım C. Dr. Hidayet Takcı

Kocaeli Üniversitesi Bilgisayar Mühendisliği Programlama 2 Dersi Final Sınavı. A Grubu

#include <stdio.h> int main(void) { float sayi; float * p; p = &sayi; printf("deger girin:"); scanf("%f", p); printf("girilen deger:%f\n", *p);

YZM 2105 Nesneye Yönelik Programlama

Başkent Üniversitesi Mühendislik Fakültesi Güz Yarıyılı BİL 101-Bilgisayar Yazılımı I Arasınavı

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

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

C PROGRAMLAMA D İ L İ

BİLECİK ŞEYH EDEBALİ ÜNİVERSİTESİ, MÜHENDİSLİK FAKÜLTESİ, BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ BAHAR Y.Y. BM106 PROGRAMLAMA DİLLERİ 1, ARA SINAVI

Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : dak.

/ C Bilgisayar Programlama Yıliçi Sınavı Test Soruları. Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : , 60 dak.

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

AHMET YESEVİ ÜNİVERSİTESİ BİLİŞİM SİSTEMLERİ VE MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ LİSANS DÖNEM ÖDEVİ

1 PROGRAMLAMAYA GİRİŞ

Multicore/Multithread Programlama

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

8. Bölüm DİZİLER. tip dizi_ismi[eleman_sayısı]; Bütün diziler 0 ile baţlar.

PROGRAMLAMAYA GİRİŞ DERS 2

Fonksiyonlar -Genel Test- A

Eln 1001 Bilgisayar Programlama I

5. BÖLÜM (10ncu ve 11nci hafta)

STRİNG DİZİLER(KATARLAR)

mod ile açılacak olan dosyanın ne amaçla açılacağı belirlenir. Bunlar:

Diziler (Arrays) Çok Boyutlu Diziler

Hafta 11 Çok Boyutlu Diziler

Diziler. Dizi Tanımı Dizi Elemanlarına Değer Atama Diziler ve Göstergeler 2-Boyutlu Diziler

C Programlama printf() Fonksiyonu

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

Sınav tarihi : Süre : 60 dak.

/ C Bilgisayar Programlama Final Sınavı Test Soruları. Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : , 60 dak.

Qt ile Bir Ağ Uygulaması

printf("\nbilgilerini goruntulemek istediginiz ogrencinin numarasini girin: "); scanf("%d",&no);

Başkent Üniversitesi MühendislikFakültesi BaharYarıyılı YerSıra No BİL 101 Bilgisayar Yazılımı-I Dersi Dönem Sonu MAZERET Sınavı

Programlamaya Giriş. Program : Belirli bir problemi çözmek için bir bilgisayar dili kullanılarak yazılmış deyimler dizisi.

PROGRAMLAMA. Dosyalama İşlemleri. Yrd. Doç. Dr. Bülent Çobanoğlu. Sakarya Üniversitesi Mekatronik Mühendisliği. Yrd.Doç.Dr.

Temel Bilgisayar Bilimleri Ders Notu #4-2. kısım

C de Detaylı Üs Alma Programı. C# Dilinde Metot Tanımlama ve Yazdırma

Temel Bilgisayar Bilimleri Ders Notu #4-1. kısım

ELN1001 BİLGİSAYAR PROGRAMLAMA I

BÖLÜM 4: DEĞİŞKENLER, SABİTLER VE OPERATÖRLER

Temel Dosya İşlemleri. Kütük Organizasyonu 1

BİLGİSAYAR TEMELLERİ VE PROGRAMLAMAYA GİRİŞ

C++ Dersi: Nesne Tabanlı Programlama

C PROGRAMLAMA D İ L İ

Transkript:

BİLECİK ŞEYH EDEBALİ ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ Struct VE GÖSTERİCİLER FONKSİYONLARDA STRUCT KULLANIMI Programlama dilleri 1-14. hafta - Araş. Gör. Nesibe YALÇIN

Struct ve Göstericiler Struct veri yapısında bir gösterici değişken tanımlanabilir. Pointer kullanarak bir structa erişilebilir. struct karmasik_sayi { float gercek; int sanal; }; * ks gercek sanal struct karmasik_sayi * ks; ks: struct karmasik_sayi tipinde bir pointer değişkeni 2

Struct ve Göstericiler struct urun{ int id; char ad[20], marka [20]; float fiyat; }; struct urun * urun1; struct kitap { char ad[50]; char yazar[50]; char tur[10]; int id; }; struct kitap * kitap1, *kitap2; 3

Struct ve Göstericiler struct telefon{ char marka[20], model[30]; char imei_no[16]; char renk[10]; float fiyat; } Ali_phone, *myphone; Değer atama; Ali_phone.fiyat=2000; (*myphone).fiyat=1600; ya da myphone->fiyat=1600; 4

Struct ve Göstericiler struct ogrenci{ int no, sinif; char sube; char ad[20],soyad[30]; }; struct ogrenci *ogr; Değer atama; ogr->no=136; ogr->sinif=1; ogr->sube= A ; strcpy(ogr->ad,"melisa"); strcpy(ogr->soyad,"etik"); 5

Struct ve Göstericiler Gösterici vasıtasıyla bir yapıya erişmek iki şekilde olur: 1. Belleğe erişmek için başka bir adresi göstericiye atayarak 2. Dinamik bellek yönetimi kullanarak struct karmasik_sayi { float gercek; int sanal; }*ks1,ks2; ks1=&ks2; 6

#include <stdio.h> #include <conio.h> Örnek - 1 typedef struct karmasik_sayi { float gercek; int sanal; }; void main() { karmasik_sayi *ks1, ks2; ks1 = &ks2; printf("gercek kisim: "); scanf("%f",&(*ks1).gercek); //scanf("%f",&ks1->gercek); printf("sanal Kisim: "); scanf("%d",&(*ks1).sanal); printf("sayi: "); printf("%.2f + %d i",(*ks1).gercek,(*ks1).sanal); getch(); } 7

Struct ve Göstericiler Gösterici kullanarak struct içerisindeki bir elemana erişmek için, malloc() fonksiyonu kullanarak dinamik olarak bellek tahsis edilmelidir. struct karmasik_sayi { float gercek; int sanal; }; struct karmasik_sayi *ptr; ptr = (struct karmasik_sayi*) malloc(sizeof(struct karmasik_sayi)); 8

Struct ve Göstericiler Gösterici kullanarak struct içerisindeki bir elemana erişmek için, malloc() fonksiyonu kullanarak dinamik olarak bellek tahsis edilmelidir. typedef struct karmasik_sayi { float gercek; int sanal; }; karmasik_sayi *ptr; ptr = (karmasik_sayi*) malloc(sizeof(karmasik_sayi)); 9

#include <stdio.h> #include <conio.h> #include <stdlib.h> Örnek - 2 typedef struct karmasik_sayi{ float gercek; int sanal; }; void main() { karmasik_sayi *ks; ks=(karmasik_sayi*)malloc(sizeof(karmasik_sayi)); printf("gercek kisim: "); scanf("%f",&ks->gercek); printf("sanal Kisim: "); scanf("%d",&ks->sanal); printf("sayi: "); printf("%.2f + %d i",ks->gercek,ks->sanal); free(ks); getch(); } 10

Struct ve Göstericiler Gerekli nesne sayısını bilmediğimizde bir dizi tahsis etmemiz doğru olmaz. Maksimum nesne sayısını belirlemek fazla bellek alanı kullanımına neden olabilir. Gösterici yardımıyla kullanıcının istediği sayıda struct nesnesi oluşturabiliriz. typedef struct karmasik_sayi { float gercek; int sanal; }; karmasik_sayi *ptr; ptr = (karmasik_sayi*) malloc(n*sizeof(karmasik_sayi)); 11

#include <stdio.h> #include <conio.h> #include <stdlib.h> Örnek - 3 typedef struct karmasik_sayi{ float gercek; int sanal; }; void main() { int N=2; karmasik_sayi *ks; ks=(karmasik_sayi*)malloc(n*sizeof(karmasik_sayi)); for(int i=0;i<n;i++){ printf("gercek kisim: "); scanf("%f",&(ks+i)->gercek); printf("sanal Kisim: "); scanf("%d",&(ks+i)->sanal); printf("sayi: "); printf("%.2f + %d i\n",(ks+i)->gercek,(ks+i)->sanal); } free(ks); getch(); } 12

#include <stdio.h> #include <conio.h> #include <stdlib.h> Örnek -4 typedef struct ogrenci{ int no; char isim[30]; }; void main() { int N; puts("ogrenci sayisi:"); scanf("%d",&n); ogrenci *liste=(ogrenci*)malloc(n*sizeof(ogrenci)); for(int i=0;i<n;i++){ printf("no: "); scanf("%d",&(liste+i)->no); printf("isim: "); scanf("%s",(liste+i)->isim); } for(int i=0;i<n;i++){ printf("%d.ogrenci: ",i+1); printf("%d - %s\n",(liste+i)->no,(liste+i)->isim); } free(liste); getch(); } 13

Fonksiyonlarda Struct Kullanımı Structları diğer değişkenler gibi fonksiyona parametre olarak gönderebilir fonksiyonun dönüş değerini struct olarak belirleyebiliriz. FonksiyonTipi FonksiyonAdı(parametreler) {... işlemler... return geri dönüş değeri; } 14

#include <stdio.h> #include <conio.h> typedef struct zaman { int saat; int dakika; int saniye; }; Örnek -1 int hesapla(zaman x) { return (x.saat*3600+x.dakika*60+x.saniye); } void main() { zaman t; printf("saat:"); scanf("%d",&t.saat); printf("dakika:"); scanf("%d",&t.dakika); printf("saniye:"); scanf("%d",&t.saniye); int sure=hesapla(t); printf("%d saniye eder",sure); getch(); } 15

#include <stdio.h> #include <conio.h> Örnek -2 struct kayit{ char ad[20]; char soyad[30]; char tel[10]; }rehber[10]; void dosyadan_oku(file *fptr, struct kayit a[]){ int i=0; while(!feof(fptr) && i<10){ fscanf(fptr,"%s %s %s\n", a[i].ad,a[i].soyad,a[i].tel); printf("%s %s %s\n",a[i].ad,a[i].soyad,a[i].tel); i++; } fclose(fptr); } void main() { FILE * dosya=fopen("rehberim.txt","r"); dosyadan_oku(dosya,rehber); getch(); } 16

#include <stdio.h> #include <conio.h> #include <stdlib.h> struct kayit{ char ad[20]; char soyad[30]; char tel[10]; }*rehber; Örnek -3 void dosyadan_oku(file *fptr, struct kayit *a){ int i=0; while(!feof(fptr) && i<10){ fscanf(fptr,"%s %s %s\n", a[i].ad,a[i].soyad,a[i].tel); printf("%s %s %s\n",a[i].ad,a[i].soyad,a[i].tel); i++; } fclose(fptr);} void main() { FILE * dosya=fopen("rehberim.txt","r"); rehber=(kayit*)malloc(10*sizeof(kayit)); dosyadan_oku(dosya,rehber); getch(); } 17

#include <stdio.h> #include <conio.h> #include <math.h> struct nokta { float x; float y; }; Örnek -4 struct nokta veri_al(){ struct nokta yeni; puts("noktanin koordinatlari:"); scanf("%f %f",&yeni.x,&yeni.y); return yeni; } void main() { float uzaklik; struct nokta A=veri_al(); struct nokta B=veri_al(); uzaklik=sqrt(((a.x-b.x)*(a.x-b.x))+((a.y-b.y)*(a.y-b.y))); printf("noktalar arasi uzaklik: %.2f",uzaklik); getch(); } 18

#include <stdio.h> #include <conio.h> #include <math.h> struct nokta { float x; float y; }; Örnek -5 struct nokta veri_al() { struct nokta yeni; puts("noktanin koordinatlari:"); scanf("%f %f",&yeni.x,&yeni.y); return yeni; } float h_uzaklik (struct nokta *A, struct nokta *B) { return sqrt(((a->x-b->x)*(a->x-b->x))+ ((A->y-B->y)*(A->y-B->y))); } void main() { struct nokta A=veri_al(); struct nokta B=veri_al(); printf("noktalar arasi uzaklik: %.2f",h_uzaklik(&A,&B)); getch(); } 19

Uygulamalar Kisi adında bir struct oluşturun. Bu struct, kişinin adı, yaşı, boyu, cinsiyeti, kilosu, ideal kilosu değerlerini tutsun. Kişinin ideal kilo hesabı için formül: İdeal kilo = (Boy - 100 + Yaş / 10) * K Kadınlar için K=0.8, erkekler için ise K=0.9'dur. Kişinin ideal kilosunu hesaplayan fonksiyonu ve gerekli ana program kodunu C dilinde yazınız. 20

Uygulamalar Depo sorumlusu, depoda yer alan elektronik ürünleri «urun_liste.txt» dosyasına kaydetmek istemektedir. Bunun için gerekli programı C dilinde yazınız. Dosyaya yazma işlemini fonksiyon kullanarak gerçekleştiriniz. NOT: Depodaki toplam ürün sayısı depo sorumlusunun girdiği miktara göre değişebileceğinden pointer kullanmanız gerekmektedir. typedef struct urun{ int id; char ad[20], tip [10], marka[30]; float fiyat; }; 21