Yrd. Doç. Dr. Caner ÖZCAN

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

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

Yrd. Doç. Dr. Caner ÖZCAN

Yrd. Doç. Dr. Caner ÖZCAN

Yrd. Doç. Dr. Caner ÖZCAN

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

Yrd. Doç. Dr. Caner ÖZCAN

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-11 Karakter Diziler. Yrd. Doç. Dr. Ümit ATİLA

Yrd. Doç. Dr. Caner ÖZCAN

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

Hafta 12 Karakter Tutan Diziler

Yrd. Doç. Dr. Caner ÖZCAN

Yrd. Doç. Dr. Caner ÖZCAN

Yrd. Doç. Dr. Caner ÖZCAN

Hafta 13 Fonksiyonlar

Hafta 7 C Programlama Diline Giriş ve C Derleyicisi

Hafta 4 Döngü Yapıları

Yrd. Doç. Dr. Caner ÖZCAN

ALGORİTMA VE PROGRAMLAMA II

Hafta 5 Algoritma Örnekleri ve Analizi

BLM111 Programlama Dilleri I. Hafta 10 Diziler. Yrd. Doç. Dr. Caner ÖZCAN

BLM 112- Programlama Dilleri II. Hafta 2 C Programlarının Bellek Düzeni ve Rekürsif (Özyinelemeli) Fonksiyonlar

ELN1001 BİLGİSAYAR PROGRAMLAMA I

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

Hafta 9 C Dilinde Kontrol ve Döngü Yapıları

Hafta 11 Çok Boyutlu Diziler

ALGORİTMA VE PROGRAMLAMA II

Dizgiler. C dilinde karakter m şeklinde tek tırnak içerisinde yazılan ifadelerdir. Bu karakterlerin her biri aslında bir tamsayı ile ifade edilir.

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

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

BLM-112 PROGRAMLAMA DİLLERİ II. Ders-8 Dosya İşlemleri-1. Yrd. Doç. Dr. Ümit ATİLA

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-2 Değişken Kavramı ve Temel Operatörler

Hafta 8 C Dilinde Değişken Tipleri ve Temel Giriş/Çıkış İşlemleri

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

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

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-4 Döngü Yapıları. Yrd. Doç. Dr. Ümit ATİLA

ALGORİTMA VE PROGRAMLAMA II

Genel Programlama II

Pointer Kavramı. Veri Yapıları

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

BIL1202 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-7 C Programlama Diline Giriş

ALGORİTMA VE PROGRAMLAMA I

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

Week 5 Examples and Analysis of Algorithms

Genel Programlama II

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

BLM-112 PROGRAMLAMA DİLLERİ II. Ders-1 Kapsama Kuralları & Rasgele Sayı Üretimi & Rekürsif (Özyinelemeli) Fonksiyonlar

Veri Yapıları Laboratuvarı

BLM-112 PROGRAMLAMA DİLLERİ II. Ders-7 Sıralama Algoritmaları

ALGORİTMA VE PROGRAMLAMA I

8. İŞARETCİLER (POINTERS)

BLM 111 ALGORİTMA VE PROGRAMLAMA I

Göstericiler (Pointers)

ALGORİTMA VE PROGRAMLAMA II

String ve Karakter Dizileri. Yrd. Doç. Dr. Fehim KÖYLÜ Erciyes Üniversitesi Bilgisayar Mühendisliği Bölümü

Bilgisayar Programlama. 1.Hafta

Malloc () ve Free() fonksiyonları

ALGORİTMA VE PROGRAMLAMA II

ALGORİTMA VE PROGRAMLAMA II

ALGORİTMA VE PROGRAMLAMA I DERS NOTU#8

Yrd. Doç. Dr. Caner ÖZCAN

ALGORİTMA VE PROGRAMLAMA I

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

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

BÖLÜM 9: POINTERLER (İŞARETÇİLER)

ALGORİTMA VE PROGRAMLAMA I

Pointers (İşaretçiler)

Diziler (Arrays) Çok Boyutlu Diziler

Programlama Dilleri 1. Ders 5: Göstericiler

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

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

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

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

Programlama Dilleri Laboratuvarı

Temel Bilgisayar Programlama

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

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

Hafta 1 Programlamaya Giriş

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İ

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

ALGORİTMA VE PROGRAMLAMA II

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

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

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

YZM 2105 Nesneye Yönelik Programlama

PROGRAMLAMAYA GİRİŞ DERS 2

HSancak Nesne Tabanlı Programlama I Ders Notları

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

C Dosyalama. Öğr. Gör. M. Ozan AKI. Rev 1.0

ALGORİTMA VE PROGRAMLAMA I DERS#1

C Programlama Dilininin Basit Yapıları

Nesneye Yönelik Programlama (OOP) 7.Hafta

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İ

Diziler & Karakter Katarı (String)

PROGRAMLAMAYA GİRİŞ FONKSİYONLAR

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

C#(Sharp) Programlama Dili

C Konsol Giriş Çıkış Fonksiyonları

YZM 2116 Veri Yapıları

Transkript:

Yrd. Doç. Dr. Caner ÖZCAN

malloc Malloc fonksiyonu bir değişken için hafızadan bir blok yer ayrılması için kullanılır. Eğer hafızada yeterli alan yoksa fonksiyon NULL döndürür. int *ptr; ptr = (int *) malloc(n*sizeof(int)); 2

calloc Calloc fonksiyonu da hafıza bloğu almak için kullanılabilir. Eğer hafızada yeterli alan yoksa fonksiyon NULL döndürür. Malloc fonksiyonundan farklı olarak ilk değer ataması yapar char *ptr; ptr = (char *)calloc(10, sizeof(char)); 3

realloc Realloc fonksiyonu hafızadan ayrılan bir alanı yeniden boyutlandırmak için kullanılır. Tekrar ayarlanacak hafıza alanının başlangıcını işaret edecek bir pointer ve yeni boyut bilgisini parametre olarak alır. void *realloc(void *ptr, size_t size); Realloc fonksiyonu daha önce tahsis edilen bloğun hemen altında sürekliliği bozmayacak şekilde tahsisat yapar. Eğer daha önce tahsis edilen bloğun altında yeterli alan yoksa bellekte bloğun tamamı için yer arar. Yeterli hafıza alanı bulursa bloğun tamamını hafızada o bölgeye taşır. Eskisini siler. Yeterli alan bulamaz ise NULL döndürür. 4

realloc(!) Eğer realloc fonksiyonu yeterli yer bulamayıp bloğu başka yere taşırsa bu durumda geri dönüş değerini aynı işaretçiye atamak gerekir. Çünkü bu durumda bloğun başlangıç adresi değişmektedir. char *ptr; ptr = (char *)calloc(10, sizeof(char)); ptr = realloc (ptr, 20*sizeof(char)); 5

free Büyük boyutta ve kapsamlı bir program söz konusuysa, efektif bellek yönetiminin ne kadar önemli olduğunu daha iyi anlarsınız. Gereksiz tüketilen bellekten kaçınmak gerekmektedir. alloc ve malloc fonksiyonlarıyla her hafızadan ayrılan alanın tekrar heap alanına serbest bırakılması için free fonksiyonu çağırılır. int *ptr; ptr = (int *) malloc(n*sizeof(int)); free(ptr); 6

Dizilerde Dinamik Bellek Kullanımı 7

Dizilerde Dinamik Bellek Kullanımı 8

Fonksiyon Pointer lar Pointer lar bir fonksiyonun tutulduğu adresi gösterebilir. Normal pointer gibi fonksiyonun adresini içeren değişken tanımı yapılmalıdır. int (*fptr) (int,int) Bu tanımda fptr değişkeni iki tane int tipinde parametre alan ve geriye int tipinde değer döndüren bir fonksiyonun adresini içerir. int *fptr (int,int) Bu tanımda ise iki tane int tipinde parametre alan ve geriye int pointer döndüren bir fonksiyon tanımlanmıştır. 9

Fonksiyon Pointer lar 10

Fonksiyon Pointer lar 11

Void Pointer lar Pointer lar void olarak tanımlanabilir. Bu şekilde tanımlanan pointerların gösterdiği adresteki değere erişmek için veri tipi belirtilmelidir. 12

Örnek-3 ENTER tuşuna basılana kadar sürekli olarak klavyeden girilen karakterleri alan ve her bir karakter için ekrana * basan bir program yazınız. Kullanıcı ENTER tuşuna bastığı zaman girilen karakterleri girildiği sırada ekrana yazdırınız. ENTER için karakter kodu 13 tür. 13

Örnek-3 14

Örnek-3 15

Örnek-4 Aşağıda verilen prototipi kullanarak iki değişkenin değerini yer değiştiren bir fonksiyon yazınız. void swap (int *, int *) 16

Örnek-4 17

Örnek-5 Aşağıda verilen prototipi kullanarak bir dikdörtgenin çevresi ve alanını hesaplayan bir fonksiyon yazınız. void rectangle(int a,int b, int *area, int *perimeter) 18

Örnek-5 19

Örnek-6 Aşağıda verilen prototipi kullanarak strlen fonksiyonuna benzer bir fonksiyon yazınız. int uzunluk(char *) 20

Örnek-7 Aşağıda verilen prototipi kullanarak verilen bir katarda bir karakter arayan bir fonksiyon yazınız. char * ara (char *, char) 21

Örnek-7 Aşağıda verilen prototipi kullanarak verilen bir katarda bir karakter arayan bir fonksiyon yazınız. char * ara (char *, int) 22

Örnek-8 Unsigned interger değeri binary değere çeviren bir fonksiyon yazınız. 23

Örnek-8 24

Örnek-8 25

26

Dip not.. 27

28

Kaynaklar Doç. Dr. Fahri Vatansever, Algoritma Geliştirme ve Programlamaya Giriş, Seçkin Yayıncılık, 12. Baskı, 2015. J. G. Brookshear, Computer Science: An Overview 10th Ed., Addison Wisley, 2009. Kaan Aslan, A dan Z ye C Klavuzu 8. Basım, Pusula Yayıncılık, 2002. Paul J. Deitel, C How to Program, Harvey Deitel. google.com for all images. 29