free counters

 

statcounter free invisible

Banner

Biz indiyə kimi proqramlarada #include<stdio.h>,#include<stdlib.h>,#include<string.h>
kimi sətirlərdən istifadə etdik və qeyd etdik ki proqramın mətninə bu sətirlərin əlavə olunması bizə
printf,malloc,strcpy kimi funksiyalardan istifadə etməyə imkan verir.

Hər-hansı bir funksiyadan proqramda istifadə edə bilmək üçün proqrama bu funksiyanın elanı
(adı və parametrlərinin qeyd edildiyi sətir) və mətni (funksiyanın kod hissəsi) verilməlidir.

Biz öz funksiyalarımızı tərtib edərkən həm elanı, həm də mətni eyni faylda yerləşdirirdik. gcc imkan veriri ki, biz ayrı-ayrı fayllarda elan olunmuş funksiya və dəyişənlərə öz proqramımızdan müraciət edə bilək.

Bunun üçün #include direktivindən istifadə edirlər.

#include<fayl.h> və ya #include"fayl.h" kimi.

Bir qayda olaraq proqrama #include vastəsilə əlavə olunan faylların sonu .h ilə bitir.

Gəlin prog_9_2.c proqramında elan etdiyimiz bəzi dəyişənləri və funksiyaları yeni menim_faylim.h
faylına köçürək. Bu faylı proqrama əlavə edib yerinə yetirək.

Proqramın yeni versiyası belə olacaq: prog_10_1.c

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include "menim_faylim.h"



int main(int argc, char *argv[]){

syh = malloc(sizeof(struct ishci_syh));
memset(syh,0,sizeof(struct ishci_syh));

/*ilk ve son elementleri NULL - a menimsedek*/

syh->ilk_el=NULL;
syh->son_el=NULL;

/*siyahiya obyektler elave edek*/

elave_et(syh,"Ali",45);
elave_et(syh,"Samir",37);
elave_et(syh,"Tahir",40);
elave_et(syh,"Rustam",43);
elave_et(syh,"Hidayet",55);
elave_et(syh,"Tofiq",38);
elave_et(syh,"Ibrahim",24);

/*siyahinin elementlerini cap edek*/

cap_et(syh);

return 0;
}


menim_faylim.h faylinin mətni:

#ifndef MENIM_FAYLIM_H
#define MENIM_FAYLIM_H


/* struct ishciler adli siyahi elan edirik */

struct ishciler{
char ad[20];
int yash;

struct ishciler *novb_el;};

/* cox vaxt siyahinin tipini elan etdikden sonra
ilk ve son elementlerine istinad eden unvan
deyishenlerinden istifade ederek
yeni tip yaradiriq. ashagidaki kimi:*/
struct ishci_syh{
struct ishciler *ilk_el; /*siyahinin ilk elementine istinad eden unvan deyisheni*/
struct ishciler *son_el; /*siyahinin son elementine istinad eden unvan deyisheni*/
};

/*yeni yaratdigimiz tipden deyishen (siyahi) elan edek*/

struct ishci_syh *syh;

/* elave_et funksiyasi*/

void elave_et(struct ishci_syh *syh, char *s, int x){

struct ishciler *dey;

dey=malloc(sizeof(struct ishciler));
memset(dey,0,sizeof(struct ishciler));

strcpy(dey->ad,s);
dey->yash=x;
dey->novb_el=NULL;

/*obyekti yaratdiq, elementlerine qiymetler
menimsetdik. Indi obyekti siyahiya elave edek*/

/*burada ashagidaki qaydadan istifade edeceyik.
eger siyahida obyekt yoxdursa ona ilk ve son element
yeni yaratdigimiz obyekte istinad etmelidir,
eks halda obyekti siyahinin sonuna artiracayiq.
bu cur elave etme meslenin shertinden ve
proqramcinin isteyinden asili olur.*/

/*yoxlayaq eger siyahi boshdursa onda ilk ve son element
yeni obyekte istinad etsin ve dey -in istinadini levg edek.*/

if ((syh->ilk_el==NULL)&&(syh->son_el==NULL)){
syh->ilk_el=dey;
syh->son_el=dey;
dey=NULL; }
else{

/*siyahida artiq obyekt var, yeni obyekti (dey)
siyahinin sonuna elave et ve dey-in istinadini legv et.*/

syh->son_el->novb_el=dey; /*dey-i siyahinin sonuna qoshuruq*/
syh->son_el=dey; /*son_el -i yeni yerine (sona) surushdururuk*/
dey=NULL; /*dey -in siyahiya istinadini levg edirirk*/
}
}


/* cap_et funksiyasi*/


void cap_et(struct ishci_syh *syh){

struct ishciler *dey;

dey=syh->ilk_el;

printf("siyahinin elementleri\n");

while(dey!=NULL){
printf("%s,%d\n",dey->ad,dey->yash);
dey=dey->novb_el;
}
}

#endif

Proqramı kompilyasiya edib, yerinə yetirək.

user@gnu_linux:~/prg#
user@gnu_linux:~/prg# gcc prog_10_1.c -o prog_10_1
user@gnu_linux:~/prg#
user@gnu_linux:~/prg# ./prog_10_1
siyahinin elementleri
Ali,45
Samir,37
Tahir,40
Rustam,43
Hidayet,55
Tofiq,38
Ibrahim,24
user@gnu_linux:~/prg#
user@gnu_linux:~/prg#

menim_faylim.h faylındakı

#ifndef
#define
#endif

makrosları menim_faylim.h faylının bizim proqramam sonsuz əlavə olunmasının qarşısını alır.

Əgər diqqət yetirdinizsə biz stdio.h faylını < və > vastəsilə, menim_faylim.h faylını isə " və " simvolları vastəsilə proqrama əlavə etdik.

Əgər biz faylı < və > vastəsilə proqrama əlavə ediriksə onda gcc həmin faylı /usr/include qovluğunda axtaracaq və bu qovluqda adətən gcc - nin standart faylları olur. stdio.h, string.h v.s.

" və " simvollarından istifadə etdikdə isə gcc həmin faylın bizim tərəfimizdən yaradıldığını bilir və bu faylı bizim proqram yerləşən qovluqda axtarır.

axırıncı dəyişikliklər (18.07.10 20:39)

 

Şərh əlavə et


Təhlükəsizlik şifrəsi
Yenilə

Saytımızda hansı proqram haqda dərslərin olmasını istəyirsiniz?
 
Üzv : 24
Kontent : 1146
Baxılanlar : 511808
 10 qonaq