Dersler

View on GitHub

EEM-120 Algoritma ve Programlama II Dersi

Local, global, static değişkenler

#include <stdio.h>
int rakam_topla(int sayi){
    // sayi ve toplam degiskeni local degiskendir.
    int toplam=0;
    while(sayi>0){
        toplam += sayi%10;
        sayi /= 10;
    }
    return toplam;
}
int main(){
    //x local degiskendir.
    int x;
    printf("rakamlarini toplamak icin bir sayi giriniz: ");
    scanf("%d",&x);
    printf("rakamlarin toplami: %d\n", rakam_topla(x));
    printf("girilen sayi: %d",x);
}
    rakamlarini toplamak icin bir sayi giriniz: 
     123456

    rakamlarin toplami: 21
    girilen sayi: 123456
#include <stdio.h>
void f1(void){
    int i=0;
    printf("%d ",i++);
}
int main(){
    f1();
    f1();
    f1(); 
}
    0 0 0
#include <stdio.h>
void f1(void){
    static int i=0;
    printf("%d\n",i++);
}
int main(){
    f1();
    f1();
    f1();
    //i degerini korudugu halde i'nin degerine
    // baska fonksiyonda dogrudah ulasilamamaz
    // printf("%d",i);
}
    0 1 2
#include <stdio.h>
void f1(void){
    static int i=0;
    printf("%d ",i++);
}
void f2(void){
    static int i=0;
    printf("%d ",i++);
}
int main() {
    f1();
    f2();
    f1();
    f2();
    return 0;
}
0 0 1 1 
#include <stdio.h>
//i degiskeni global degiskendir.
int i=0;
void f1(void){
    printf("%d ",i++);
}
void f2(void){
    printf("%d ",i++);
}
int main() {
    f1(); //0
    f2(); //1
    f1(); //2
    i++; //i'nin degeri 4 olacak
    f2(); // 4
    return 0;
}
0 1 2 4 
#include <stdio.h>
#define YIGIN_BOYUTU 10
//asagidaki degiskenler global degiskenlerdir.
int yigin[YIGIN_BOYUTU];
int en_ust=0;
void yigini_bosalt(void){
    en_ust=0;
}
int yigin_bosmu(void){
    return en_ust==0;
}
int yigin_tam_dolumu(void){
    return en_ust==YIGIN_BOYUTU;
}
//stack overflow
void yigin_tasmasi(void){
    printf("Yigin  tasmasi, veri eklenemedi");
}
//stack underflow
void yigin_asagi_tasmasi(void){
    printf("Yigin   asagi tasmasi tasmasi, veri dondurulemedi.");
}
void yigina_ekle(int i){
    //if(!yigin_tam_dolumu())
    if(yigin_tam_dolumu()==0){
        yigin[en_ust]=i;
        en_ust++;
    }
    else
        yigin_tasmasi();
}
int yigindan_cek(void){
    if(!yigin_bosmu())
        return yigin[en_ust--];
    else
        yigin_asagi_tasmasi();
    return 0;
}
void yigin_icerigi_goster(void){
    int i;
    for(i=en_ust-1;i>=0;i--)
        printf("%d: %d\n",i,yigin[i]);
}
int main(){
    yigina_ekle(10);
    yigina_ekle(20);
    yigina_ekle(30);
    yigin_icerigi_goster();
    yigindan_cek();
    yigindan_cek();
    yigin_icerigi_goster();
    yigindan_cek();
    yigin_icerigi_goster();
    yigindan_cek();
    yigin_icerigi_goster();
    

}
    2: 30
    1: 20
    0: 10
    0: 10
    Yigin   asagi tasmasi tasmasi, veri dondurulemedi.
#include <stdio.h>
int main(){
   int satir, sutun,i,j;
    printf("dikdortgen icin satir ve sutun sayisini giriniz:");
    scanf("%d%d",&satir,&sutun);
    for(i=0;i<satir;i++){
        for(j=0;j<sutun;j++)
            printf("*");
        printf("\n");
    }
}
    dikdortgen icin satir ve surun sayisini giriniz:

     4 5


    *****
    *****
    *****
    *****

Aşağıdaki program hatalı.

#include <stdio.h>
int i;
void satir_yaz(int n){
    for(i=0;i<n;i++)
        printf("*");
}
void tum_satirlari_yaz(int n){
    for(i=0;i<n;i++){
        satir_yaz(n);
        printf("\n");
    }
}
int main(){
    tum_satirlari_yaz(5);
}
    *****

Programın düzeltilmiş hali

#include <stdio.h>
int i;
void satir_yaz(int n){
    for(i=0;i<n;i++)
        printf("*");
}
void tum_satirlari_yaz(int n){
    int i;
    for(i=0;i<n;i++){
        satir_yaz(n);
        printf("\n");
    }
}
int main(){
    tum_satirlari_yaz(5);
}
    *****
    *****
    *****
    *****
    *****
    1-main fonk icinde inin degeri: 10
    f fonk icinde inin degeri: 11
    2-main fonk icinde inin degeri: 10
#include <stdio.h>
int i=15;
void f(int i){
    i++;
    printf("f fonk icinde inin degeri: %d\n",i);
}
int main(){
    printf("1-main fonk icinde inin degeri: %d\n",i);
    f(i);
    printf("2-main fonk icinde inin degeri: %d\n",i);
}
    1-main fonk icinde inin degeri: 15
    f fonk icinde inin degeri: 16
    2-main fonk icinde inin degeri: 15
#include <stdio.h>
int i=15;
void f(){
    i++;
    printf("f fonk icinde inin degeri: %d\n",i);
}
int main(){
    printf("1-main fonk icinde inin degeri: %d\n",i);
    f();
    printf("2-main fonk icinde inin degeri: %d\n",i);
}
    1-main fonk icinde inin degeri: 15
    f fonk icinde inin degeri: 16
    2-main fonk icinde inin degeri: 16
#include <stdio.h>
int i=15;
void f(){
    i++;
    printf("f fonk icinde inin degeri: %d\n",i);
}
int main(){
    int i=20;
    printf("1-main fonk icinde inin degeri: %d\n",i);
    f();
    printf("2-main fonk icinde inin degeri: %d\n",i);
}
    1-main fonk icinde inin degeri: 20
    f fonk icinde inin degeri: 16
    2-main fonk icinde inin degeri: 20
#include <stdio.h>
int i=20;
void f(void){
    static i = 15;
    i++;
    printf("f fonk icinde inin degeri: %d\n",i);
}
int main(){
    printf("1-main fonk icinde inin degeri: %d\n",i);
    f();
    printf("2-main fonk icinde inin degeri: %d\n",i);
    f();
    printf("3-main fonk icinde inin degeri: %d\n",i);
}
    1-main fonk icinde inin degeri: 20
    f fonk icinde inin degeri: 16
    2-main fonk icinde inin degeri: 20
    f fonk icinde inin degeri: 17
    3-main fonk icinde inin degeri: 20
#include <stdio.h>

int main() {
    int x=10;
    for(int i=0;i<10;i++)
        printf("%d ",i);
    printf("\n");
    printf("x:%d",x);
    //asagidaki satir hataya sebep olur.
    //printf("%d",i);
    return 0;
}
0 1 2 3 4 5 6 7 8 9 
x:10
#include <stdio.h>

int main() {
    int x=10;
    if(x==10){
        int i=5;
        printf("%d\n",i);
    }
//     printf("%d\n",i);
    return 0;
}
#include <stdio.h>
int main(){
    int i=10, j=20;
    printf("i: %d j:%d\n",i, j);
    if(j>i){
       int temp;
        temp = i;
        i=j;
        j=temp;
        printf("1-temp: %d\n",temp);
    }
    printf("i: %d j:%d\n",i, j);
    // asagidaki satirhataya sebep olur.
    //printf("temp: %d",temp);  
}
    i: 10 j:20
    1-temp: 10
    i: 20 j:10
#include <stdio.h>
#include <time.h>
int main(){
    unsigned long saniye;
    //1970 1 Ocak 00:00'dan beri gecen saniye sayisi
    saniye=time(NULL);
    printf("%ld",saniye);   
}
    1671692515
#include <stdio.h>
#include <stdlib.h>
int main(){
    int i,n=10;
    srand(1000);
    for(i=0;i<n;i++)
        printf("%d ",rand()%100);
    printf("\n");
    srand(1001);
    for(i=0;i<n;i++)
        printf("%d ",rand()%100);
}
    90 79 13 98 4 41 3 70 68 55 
    32 51 51 92 54 90 13 69 20 6 
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(){
    int i,n=10;
    
    unsigned long saniye;
    saniye=time(NULL);
    
    srand(saniye);
    for(i=0;i<n;i++)
        printf("%d ",rand()%100);
    
}
    25 68 73 82 74 77 87 84 76 93 
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
//sayı  tahmin oyunu
#define MAX_SAYI 100
int gizli_sayi;
void rastgele_sayi_uret(void){
    unsigned long saniye;
    saniye=time(NULL);
    srand(saniye);
    gizli_sayi=rand()%MAX_SAYI;
}
void sayi_tahmin_et(void){
    int tahmin, tahmin_sayisi=0;
    for(;;){
        tahmin_sayisi++;
        printf("Tahmininizi giriniz: ");
        scanf("%d",&tahmin);
        if(tahmin==gizli_sayi){
            printf("%d. tahmininizde gizli sayiyi buldunuz.", tahmin_sayisi);
            break;
            }
        else
            if(tahmin < gizli_sayi)
                printf("tahmini arttir.\n");
            else
                printf("tahmini azalt.\n");
    }
}
int main(){
    rastgele_sayi_uret();
    sayi_tahmin_et();
}