
იმისთვის, რომ ჩვენი შემდეგი გაკვეთილები მეტად ინტერაქციული იყოს, აუცილებელია ვისწავლოთ თუ როგორ მუშაობს C-ში შეტანის და გამოტანის ფუნქციები (input, output).
გაკვეთილის თემები:
მოცემული გაკვეთილის ფარგლებში გავივლით <stdio.h> ბიბლიოთეკის ორ ფუნქციას, printf() და scanf()
printf() ფუნქცია (ინფორმაციის გამოტანა).მოცემული ფუნქცია გვეხმარება ინფორმაციის ეკრანზე გამოტანაში, მაგალითისთვის გვინდა დავბეჭდოთ "Hello, world".
#include <stdio.h>
int main() {
printf("Hello, World!");
return 0;
}
როგორც ზემოთ მაგალითშია ახსნილი printf() ფუნქციას გადაცემული აქვს ე.წ. string ორმაგი ბრჭყალებით, რის შედეგადაც შეგვიძლია ეკრანზე გამოვიტანოთ ტექსტი "Hello, world!".
იმ შემთხვევაში თუ გვჭირდება ტექსტში რაიმე ცვლადის ჩასმა, printf ფუნქცია გვაძლევს ამის საშუალებასაც, უბრალოდ ამისთვის საჭიროა სპეციალური ე.წ. placeholder-ების გამოყენება, მოციყვანოთ შემდეგი მაგალითი.
#include <stdio.h>
int main() {
int i, j;
float x, y;
i = 10;
j = 20;
x = 43.2892f;
y = 5527.0f;
printf("i = %d, j = %d, x = %f, y = %f\n", i, j, x, y);
// დაიბეჭდება: i = 10, j = 20, x = 43.289200, y = 5527.000000
return 0;
}
თუ ზემოთ მოყვანილ მაგალითს გავარჩევთ დავინახავთ, რომ %d-ის ადგილას ჩაჯდება i ცვლადის მნიშვნელობა, %d-ის ადგილას ჩაჯდება j ცვლადის მნიშვნელობა, %f-ის ადგილას ჩაჯდება x ცვლადის მნიშვნელობა, ხოლო ბოლო %f-ის ადგილას y ცვლადის მნიშვნელობა.
printf() ფუნქციის ლოგიკა მდგომარეობს შემდეგში:
printf(string, expr1, expr2, …);
ფუნქციას პირველ არგუმენტად გადაეცემა string, ხოლო შემდეგ არგუმენტებად გადაეცემა ე.წ. expressions, მაგალითად ცვლადი და ა.შ. იმ შემთხვევაში თუ პირველი არგუმენტში გვსურს ცვლადის ან რაიმე expression-ის დაბეჭვდა ამისთვის არსებობს ე.წ. placeholder-ები რომლებიც იწყება % სიმბოლოთი და მოსდევს d, ან ფორმატის შესაბამისი სიმბოლო, რომელიც წინასწარაა განსაზღვრული.
%d წარმოადგენს ფორმატის მიმთითებელს (format specifier).
როგორც მეორე მაგალითიდან ჩანს, გამოყენებული გვაქვს 2 ტიპის ფორმატის მიმთითებელი, ესენია:
printf() ფუნქციაში ფორმატის მიმთითებლები (format specifiers) მუშავდება მარცხნიდან მარჯვნივ, ზუსტად იმ თანმიმდევრობით, როგორც ისინი წერია ტექსტში.
ამავე თანმიმდევრობით printf() იღებს მასთან გადაცემულ მნიშვნელობებს.
ეს ნიშნავს, რომ პირველი ფორმატის მიმთითებელი შეესაბამება პირველ არგუმენტს, მეორე — მეორე არგუმენტს და ასე შემდეგ.
თუ ფორმატის მიმთითებლების რაოდენობა ან მათი რიგი არ ემთხვევა გადაცემულ მნიშვნელობებს, პროგრამა არასწორ შედეგს დაბეჭდავს ან შეიძლება შეცდომაც გამოიწვიოს.
int age = 25;
float height = 1.75;
printf("ასაკი: %d, სიმაღლე: %.2f", age, height);
ამ მაგალითს თუ დავაკვირდებით შეგვხვდება შემდეგი ფორმატის მიმთითებელი %.2f, ეს ნიშნავს რომ მძიმის შემდეგ დაიბეჭდება 2 სიმბოლო ანუ 75
იმ შემთხვევაში თუ ფორმატის მიმთითებელი არ დაემთხვევა არგუმენტის ტიპს, ან მდებარეობას (მაგალითად %d float-ისთვის), შესაძლოა შედეგი გაუთვალისწინებელი იყოს, ან კომპილაციისას მივიღოთ შეცდომა, შესაბამისად აუცილებელია ყურადღება.
C-ში გარდა int da float რიცხვებისა გვაქვს კიდევ მრავალი ფორმატის მიმთითებლები, რომლებიც ქვემოთ ცხრილშია მოცემული თავისი დეტალური აღწერით
|
ფორმატის მიმთითებელი |
მონაცემთა ტიპი |
აღწერა |
მაგალითი |
|---|---|---|---|
|
|
|
მთელი რიცხვი |
25, -10 |
|
|
|
მთელი რიცხვი (იგივე რაც %d) |
100 |
|
|
|
უღნიშნო მთელი რიცხვი |
42 |
|
|
|
ერთი სიმბოლო |
'A' |
|
|
|
ათწილადი რიცხვი |
3.14 |
|
|
|
ათწილადი რიცხვი 2 ციფრით მძიმის შემდეგ |
3.14 |
|
|
|
ორმაგი სიზუსტის ათწილადი |
3.14159 |
|
|
|
ტექსტი (სტრიქონი) |
"Hello" |
|
|
|
მეხსიერების მისამართი |
0x7ffee3a1 |
|
|
|
მთელი რიცხვი თექვსმეტობით სისტემაში |
ff |
|
|
|
მთელი რიცხვი რვაობით სისტემაში |
77 |
|
|
— |
% სიმბოლოს დაბეჭდვა |
% |
როგორც ზემოთ ერთ-ერთ მაგალითშია მოყვანილი printf ფუნქციას ასევე აქვს \n სიმბოლოთა თანმიმდევრობა, რომელსაც ეგრედ წოდებული გამქცევი სიმბოლოები ეწოდება, კი ვიცი ქართულად არც ისე ლოგიკურად ჟღერს, მაგრამ ყოველთვის ვცდილობ დამწყებებისთვის გადავთარგმნო.
\n სიმბოლო ნიშნავს ახალ ხაზს, ანუ \n-ს შემდეგ არსებული ტექსტი დაიწყება ახალი ხაზიდან
printf("Hello,\nWorld!");
// დაიბეჭდება:
// Hello,
// World!
C-ში გვაქვს რამდენიმე escape sequences, რომელსაც ქვემოთ ცხრილის სახით გთავაზობთ თავისი აღწერებით.
პრაქტიკისთვის კარგი იქნება თუ თითეულ მათგანს ერთხელ, ან რამდენჯერმე გამოიყენბთ
|
Escape sequence |
განმარტება |
|---|---|
|
|
ახალი ხაზი |
|
|
ტაბულაცია |
|
|
უკუშტრიხი (\) |
|
|
ბრჭყალი (") |
|
|
ხაზის დასაწყისში დაბრუნება |
|
|
სტრიქონის დასასრული |
scanf() ფუნქცია (ინფორმაციის შეტანა)იმისთვის, რომ ჩვენს პროგრამაში ინფორმაცია შევიტანოთ, გვჭირდება scanf() ფუნქცია, რომლის დახმარებითაც შევძლებთ ჩვენი პორგრამა მეტად ინტერაქციული გავხადოთ.
scanf() ფუნქციას გადაეცემა 2 არგუმენტი, პირველი არგუმენტია ე.წ. ფორმატის მიმთითებელი(ები), ხოლო მეორე ე.წ. reference ოპერატორი.
#include <stdio.h>
int main() {
int age;
printf("შეიყვანეთ თქვენი ასაკი: ");
scanf("%d", &age);
printf("თქვენი ასაკი არის: %d\n", age);
return 0;
}
გავარჩიოთ არსებული მაგალითი, scanf("%d", &age); %d წარმოადგენს int რიცხვის ფორმატის მიმთითებელს (placeholder-ს), ხოლო &age წარმოადგენს ე.წ. reference-ს.
აუცილებელია გავითვალისწინოთ, რომ ფორმატის მიმთითებლის ტიპი უნდა ემთხვეოდეს შეყვანილი ინფორმაციის ტიპს, ანუ age უნდა იყოს მთელი რიცხვი და არა ათწილადი ან სიმბოლო.
რაც შეეხება & სიმბოლოს, მას აუცილებლად გავივლით მომავალ გაკვეთილში pointer-ების შესახებ.
ასევე შეგვიძლია, scanf() ფუნქციას გადავცეთ მრავალი არგუმენტი.
#include <stdio.h>
int main() {
int x, y;
printf("შეიყვანეთ ორი მთელი რიცხვი: ");
scanf("%d %d", &x, &y);
printf("თქვენ შეიყვანეთ: x = %d, y = %d\n", x, y);
return 0;
}
ფორმატის მიმთითებლები printf()-სგან განსხვავებით სხვანაირად მუშაობს scanf() ფუნქციაში, რომელის ცხრილსაც გთავაზობთ ქვემოთ
|
ფორმატის მიმთითებელი |
ტიპი |
|---|---|
|
|
int |
|
|
int (base ავტომატურად) |
|
|
unsigned int |
|
|
unsigned int (octal) |
|
|
unsigned int (hex, lowercase) |
|
|
unsigned int (hex, uppercase) |
|
|
short |
|
|
unsigned short |
|
|
long |
|
|
unsigned long |
|
|
long long |
|
|
unsigned long long |
|
|
float |
|
|
double |
|
|
long double |
|
|
float (scientific) |
|
|
double |
|
|
float (shortest form) |
|
|
double |
შეისწავლეთ ვებდეველოპმენტის ენები სრულიად უფასოდ, ისეთები როგორებიცაა Javascript, HTML, CSS და კიდევ სხვა მრავალი ენა











ქვემოთ მოცემულია უახლესი 3 ბლოგი პროგრამირების თემატიკასთან დაკავშირებით