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.