11. Foydalanuvchidan ma'lumot olish

Oldingi bo‘limda matnlar bilan ishlashni o‘rgandik.

Hozirgacha dasturimizdagi qiymatlarni o‘zimiz yozib keldik.

Masalan:

int yosh = 18;

Lekin haqiqiy dasturlarda ko‘pincha foydalanuvchidan ma'lumot olish kerak bo‘ladi.

Masalan:

Ismingizni kiriting: Ali
Yoshingizni kiriting: 18

C tilida buning uchun scanf() funksiyasidan foydalanishimiz mumkin.


scanf() nima?

scanf() — foydalanuvchi klaviaturadan kiritgan ma'lumotni dasturga olish uchun ishlatiladi.

Masalan:

int yosh;

scanf("%d", &yosh);

Agar foydalanuvchi:

18

kiritsa, 18 qiymati yosh o‘zgaruvchisiga saqlanadi.


Butun son kiritish

Butun son uchun %d ishlatiladi.

To‘liq dastur:

#include <stdio.h>

int main() {
    int yosh;

    printf("Yoshingizni kiriting: ");
    scanf("%d", &yosh);

    printf("Siz %d yoshdasiz.", yosh);

    return 0;
}

Masalan:

Yoshingizni kiriting: 18

Natija:

Siz 18 yoshdasiz.

& belgisi nima?

Quyidagi kodga qarang:

scanf("%d", &yosh);

Bu yerda:

&yosh

yosh o‘zgaruvchisining xotiradagi manzilini bildiradi.

Hozircha & ning xotira bilan bog‘liq barcha tafsilotlarini bilish shart emas.

scanf() bilan oddiy o‘zgaruvchilardan foydalanayotganda ko‘pincha & yozilishini eslab qoling.

Masalan:

scanf("%d", &son);

scanf("%f", &narx);

scanf("%c", &harf);

Keyingi mavzularda & nima uchun kerakligini chuqurroq o‘rganamiz.


float kiritish

Kasr son olish uchun %f ishlatiladi.

Masalan:

#include <stdio.h>

int main() {
    float narx;

    printf("Narxni kiriting: ");
    scanf("%f", &narx);

    printf("Narx: %.2f", narx);

    return 0;
}

Agar foydalanuvchi:

25.5

kiritsa:

Narx: 25.50

natijasi chiqadi.


char kiritish

Bitta belgi olish uchun %c ishlatiladi.

Masalan:

#include <stdio.h>

int main() {
    char harf;

    printf("Biror harf kiriting: ");
    scanf(" %c", &harf);

    printf("Siz %c harfini kiritdingiz.", harf);

    return 0;
}

Agar foydalanuvchi:

A

kiritsa:

Siz A harfini kiritdingiz.

natijasi chiqadi.

%c oldidagi bo‘sh joy oldingi kiritishdan qolgan Enter belgisini o'tkazib yuborishga yordam beradi.


Satr kiritish

Satr uchun %s ishlatiladi.

Masalan:

#include <stdio.h>

int main() {
    char ism[20];

    printf("Ismingizni kiriting: ");
    scanf("%19s", ism);

    printf("Salom, %s!", ism);

    return 0;
}

Agar:

Ali

deb kiritsak:

Salom, Ali!

chiqadi.

Bu yerda ism massiv bo‘lgani uchun scanf() ichida & yozmadik.


Bir nechta ma'lumot kiritish

Bir dasturda bir nechta ma'lumot olish mumkin.

Masalan:

#include <stdio.h>

int main() {
    char ism[20];
    int yosh;

    printf("Ismingiz: ");
    scanf("%19s", ism);

    printf("Yoshingiz: ");
    scanf("%d", &yosh);

    printf("Ism: %s\n", ism);
    printf("Yosh: %d", yosh);

    return 0;
}

Masalan:

Ismingiz: Ali
Yoshingiz: 18

Natija:

Ism: Ali
Yosh: 18

Ikki son kiritish

Ikki sonni alohida olish mumkin:

int a;
int b;

scanf("%d", &a);
scanf("%d", &b);

Yoki ularni bitta scanf() yordamida olish mumkin:

scanf("%d %d", &a, &b);

Masalan, foydalanuvchi:

10 20

deb kiritsa:

a = 10
b = 20

bo‘ladi.


Oddiy kalkulyator

Endi foydalanuvchidan ikkita son olib, ularni qo‘shamiz.

#include <stdio.h>

int main() {
    int a;
    int b;

    printf("Birinchi sonni kiriting: ");
    scanf("%d", &a);

    printf("Ikkinchi sonni kiriting: ");
    scanf("%d", &b);

    printf("Yig'indi: %d", a + b);

    return 0;
}

Masalan:

Birinchi sonni kiriting: 10
Ikkinchi sonni kiriting: 20

Natija:

Yig'indi: 30

Foydalanuvchi ma'lumoti bilan if

Kiritilgan ma'lumotni shart bilan tekshirish ham mumkin.

Masalan:

#include <stdio.h>

int main() {
    int yosh;

    printf("Yoshingizni kiriting: ");
    scanf("%d", &yosh);

    if (yosh >= 18) {
        printf("Siz voyaga yetgansiz.");
    } else {
        printf("Siz hali voyaga yetmagansiz.");
    }

    return 0;
}

Agar foydalanuvchi:

20

kiritsa:

Siz voyaga yetgansiz.

chiqadi.


Foydalanuvchi ma'lumoti bilan for

Kiritilgan son yordamida sikl ham ishlatish mumkin.

Masalan, foydalanuvchi nechta son chiqarishni belgilaydi:

#include <stdio.h>

int main() {
    int n;

    printf("Nechta son chiqaramiz? ");
    scanf("%d", &n);

    for (int i = 1; i <= n; i++) {
        printf("%d\n", i);
    }

    return 0;
}

Agar foydalanuvchi:

5

kiritsa:

1
2
3
4
5

chiqadi.


scanf() formatlari

Hozircha quyidagi formatlarni bilish kifoya:

Ma'lumot turi scanf() formati
int %d
float %f
char %c
Satr %s

Misollar:

int yosh;
scanf("%d", &yosh);

float narx;
scanf("%f", &narx);

char harf;
scanf(" %c", &harf);

char ism[20];
scanf("%19s", ism);

scanf() bilan ehtiyot bo‘lish

scanf() kiritilgan ma'lumot turi bilan mos kelishi kerak.

Masalan:

int yosh;

uchun:

scanf("%d", &yosh);

ishlatamiz.

int uchun %f ishlatish noto‘g‘ri:

scanf("%f", &yosh);

Shuning uchun o‘zgaruvchi turiga mos formatdan foydalaning.


scanf() ning cheklovi

scanf("%s", ...) bo‘sh joyli matnni to‘liq o‘qimaydi.

Masalan:

Ali Valiyev

kiritilsa, faqat:

Ali

qismi olinishi mumkin.

To‘liq qatorni o‘qish uchun fgets() funksiyasi qulayroq.

Hozircha scanf() bilan oddiy kiritishlarni o‘rganish kifoya.

fgets() bilan keyinroq batafsil tanishamiz.


Amaliy mashqlar

1-mashq

Foydalanuvchidan yoshini so‘rang va ekranga chiqaring.

Masalan:

Yoshingiz: 16

Natija:

Siz 16 yoshdasiz.

2-mashq

Foydalanuvchidan ikkita son oling va ularning yig‘indisini chiqaring.

Masalan:

10
20

Natija:

30

3-mashq

Foydalanuvchidan bitta son oling.

Agar son musbat bo‘lsa:

Musbat son

aks holda:

Manfiy yoki nol

chiqaring.


4-mashq

Foydalanuvchidan son oling va 1 dan shu songacha bo‘lgan sonlarni chiqaring.

Masalan:

Son: 5

Natija:

1
2
3
4
5

5-mashq

Foydalanuvchidan ism va yoshini oling.

Masalan:

Ism: Ali
Yosh: 17

Natijani:

Salom Ali! Siz 17 yoshdasiz.

ko‘rinishida chiqaring.


Muhim narsalarni eslab qoling

Foydalanuvchidan ma'lumot olish uchun scanf() ishlatiladi.

Butun son:

scanf("%d", &son);

Kasr son:

scanf("%f", &son);

Bitta belgi:

scanf(" %c", &harf);

Satr:

scanf("%19s", ism);

scanf() yordamida olingan ma'lumotni keyin if, for, while va funksiyalar bilan ishlatish mumkin.


Xulosa

Dastur foydalanuvchidan ma'lumot olganda ancha foydali bo‘ladi.

Masalan:

printf("Yoshingizni kiriting: ");
scanf("%d", &yosh);

Endi yosh qiymati foydalanuvchi tomonidan belgilanadi.