Pamoka 2

Kintamieji ir duomenys

~30 min · 1 žingsnis · 2 / 6 pamokų
Ką pastatysi
Kintamasis — vieta duomenims

Kintamasis yra pavadinta vieta atmintyje, kurioje laikoma reikšmė. C kalboje prieš naudodamas kintamąjį turi nurodyti jo tipą:

int amzius = 25;        // sveikas skaičius
double kaina = 3.99;    // trupmeninis skaičius
char raide = 'A';       // vienas simbolis
  • int — sveiki skaičiai (1, 42, -7).
  • double — skaičiai su kableliu (3.14, -0.5).
  • char — vienas simbolis, rašomas viengubose kabutėse.

Spausdinimas su formatais

printf naudoja formato žymeklius, kad įterptų kintamųjų reikšmes:

#include <stdio.h>

int main(void) {
    int amzius = 25;
    double kaina = 3.99;
    printf("Amzius: %d\n", amzius);
    printf("Kaina: %.2f\n", kaina);
    return 0;
}
  • %d — sveikas skaičius (int).
  • %f — trupmeninis skaičius (double); %.2f rodo du skaičius po kablelio.
  • %c — simbolis, %s — tekstas (eilutė).

Aritmetika

int a = 7, b = 3;
printf("Suma: %d\n", a + b);     // 10
printf("Skirtumas: %d\n", a - b); // 4
printf("Sandauga: %d\n", a * b);  // 21
printf("Dalmuo: %d\n", a / b);    // 2  (!)
printf("Liekana: %d\n", a % b);   // 1

Dėmesio. 7 / 3 lygu 2, ne 2.33. Kai abu skaičiai yra int, dalyba nukerta trupmeną. Jei nori tikslaus rezultato, naudok double:

double tikslus = 7.0 / 3.0;  // 2.333...

Naudotojo įvestis su scanf

scanf perskaito reikšmę iš klaviatūros ir įrašo į kintamąjį. Atkreipk dėmesį į & ženklą prieš kintamojo vardą:

#include <stdio.h>

int main(void) {
    int amzius;
    printf("Kiek tau metu? ");
    scanf("%d", &amzius);
    printf("Po 10 metu tau bus %d.\n", amzius + 10);
    return 0;
}

&amzius reiškia „kintamojo amzius adresą" — tai pasako scanf, kur įrašyti reikšmę. Apie tai gilintis nereikia; tiesiog atmink dėti & prieš kintamąjį.


Trikčių sprendimas

Skaičiai dalijant „dingsta" — naudoji int ten, kur reikia double. Žiūrėk įspėjimą aukščiau.

scanf neveikia — patikrink, ar nepamiršai & prieš kintamąjį.

Keista išvestis su %d — galbūt spausdini double su %d formatu. Tipas turi atitikti žymeklį.


Projektas CLion

Šios pamokos kodą įdėk į savo CLion projektą StructuredC. Žingsnis žemiau rodo pilną main.c turinį po pakeitimo — gali kopijuoti tiesiogiai į CLion ir paspausti žalią ▶ mygtuką.


Apibendrinimas

Išmokai saugoti duomenis su int, double ir char, atlikti aritmetiką ir perskaityti įvestį su scanf. Supratai sveikųjų skaičių dalybos spąstus.

Kitoje pamokoje programa pradės priimti sprendimus su if.

main.c modify

Pakeisk main.c — kintamieji ir įvestis

#include <stdio.h>

int main(void) {
    int amzius;
    printf("Kiek tau metu? ");
    scanf("%d", &amzius);

    int po10 = amzius + 10;
    double pusmetis = amzius / 2.0;

    printf("Po 10 metu tau bus %d.\n", po10);
    printf("Puse tavo amziaus: %.1f\n", pusmetis);
    return 0;
}

Pakeisk visą main.c turinį šiuo kodu. Programa paklaus tavo amžiaus ir atliks porą skaičiavimų.

Ką šis kodas daro:

  • int amzius; — paskelbia sveiką kintamąjį (kol kas be reikšmės).
  • scanf("%d", &amzius) — perskaito skaičių iš klaviatūros į amzius. Nepamiršk &.
  • double pusmetis = amzius / 2.0; — dalyba iš 2.0 (ne 2) duoda trupmeninį rezultatą.
  • %.1f — spausdina double su vienu skaičiumi po kablelio.

Svarbu: jei dalytum iš 2 (sveiko), rezultatas būtų nukirstas. 2.0 priverčia trupmeninę dalybą.