You are on page 1of 26

Įvadas į C kalbą

Juozas Kamarauskas
Įvadas
• C kalba sukurta 1972 metais Bell Labs Dennis
M. Richie
• Jos tikslas Unix operacinių sistemų vystymas
• Tai yra procedūrinio programavimo kalba,
plačiai naudojama kuriant šiuolaikines
“galingas” programas, operacines sistemas
(Windows, Unix, Linux, Android ir t.t.) ir
sistemines programas
• Tai yra galinga programavimo kalba, kuria
galima kurti labai efektyvias programas, ji gali
valdyti žemo lygio procesus, jei tai konsolinė
programa, ją galima sukompiliuoti daugeliui
platformų.
• Su C kalba parašyta labai daug populiarios
programinės įrangos (OS, teksto redaktoriai,
draiveriai, PHP interpretatorius, JVM, MySQL
RDBMS ir t.t.)
C programos struktūra
• C programos susideda
– Preprocesoriaus direktyvų
– Kintamųjų ir funkcijų
– Teiginių ir išraiškų
– Komentarų

#include <stdio.h>
int main() {
/* pirmoji C programa*/
printf(“Mano pirmoji programa \n");
return 0;
}
• Pradžioje nurodome preprocesoriui įtraukti įvairias
reikiamas bibliotekas (pvz. #include <stdio.h>)
• Toliau eina main funkcija, kuri yra pagrindinė
programos funkcija, nuo jos būtent programa ir yra
pradedama vykdyti)
• Tarp /* */ galime rašytis sau įvairius komentarus, juos
kompiliatorius praleidžia
• printf(“tekstas”) išveda tekstą į ekraną
• return baigia main() funkcijos darbą ir funkcija grąžina
0
Bazinė sintaksė
• Kiekvienas teiginys baigiasi kabliataškiu;
• C kalbos identifikatoriai yra kintamieji arba
funkcijos arba vartotojo aprašyti tipai, kurie
identifikuojami pavadinimu. Identifikatoriai
turi prasidėti raide arba _ simboliu
• C yra skirtumas tarp didžiųjų ir mažųjų raidžių
• Tarpai kompiliatoriaus yra praleidžiami
Rezervuoti raktažodžiai

auto else long switch


break enum register typedef
case extern return union
char float short unsigned
const for signed void
continue goto sizeof volatile
default if static while
do int struct _Packed
double
Duomenų tipai
• Baziniai tipai. Tai yra aritmetiniai tipai, skirstomi į
sveikus (integer) ir slankaus kablelio (float)
• Išvardinti tipai. Vartotojas pats gali susikurti savo
duomenų tipą, kur kintamieji įgyja diskretines
reikšmes
• Tuščias tipas (void). Nėra jokių kintmųjų reikšmių
• Išvestiniai tipai. Tai rodyklės, masyvai, struktūros,
funkcijos ir t.t.
Sveikas tipas
Tipas Atminties dydis Reikšmių intervalas
char 1 baitas -128 iki 127 arba 0 iki 255
unsigned char 1 baitas 0 iki 255
signed char 1 baitas -128 iki 127
-32,768 iki 32,767 arba -
int 2 ar 4 baitai 2,147,483,648 iki
2,147,483,647
0 iki 65,535 arba 0 iki
unsigned int 2 ar 4 baitai 4,294,967,295
short 2 baitai -32,768 iki 32,767
unsigned short 2 baitai 0 iki 65,535

long 4 baitai -2,147,483,648 iki


2,147,483,647
unsigned long 4 baitai 0 iki 4,294,967,295
Slankaus kablelio tipas
Tipas Atminties dydis Reikšmių intervalas Tikslumas

float 4 baitai 1.2E-38 iki 3.4E+38 6 skaitmenys po


kablelio
2.3E-308 iki 15 skaitmenų po
double 8 baitai 1.7E+308 kablelio
long double 10 baitų 3.4E-4932 iki 19 skaitmenų po
1.1E+4932 kablelio
C kintamieji
• Kintamasis tai yra tam tikrai atminties vietai
suteiktas vardas
• Kiekvienas kintamasis turi savo tipą, kur
kompiliatorius žino kiek paskirti atminties,
kokius leisti aritmetinius veiksmus, kokia
maksimali reikšmė
• Kintamųjų vardai gali susidaryti iš raidžių ir
skaičių bei _ simbolio, bet turi prasidėti raide
arba _
Kintamųjų paskelbimas
• Kintamieji skelbiami
<tipas> kintamųjų sarašas;
• Kintamuosius galima iš karto inicializuoti:
<tipas> kintamojo_vardas=reiksme;

int i=5, j, k=0;


char c;
float f, rezultatas;
double d;
char c1=‘a’;
Konstantos
• Konstantos yra panašiai kaip ir paprasti
kintamieji, tik skirtumas tas, kad jų reikšmių
negalima keisti
• C kalboje yra du būdai kaip deklaruoti
konstantas
– Naudojant #define direktyvą
– Naudojant const žodelį
#include <stdio.h> #include <stdio.h>

#define ILGIS 100 int main() {


#define PLOTIS 20
#define TEKSTAS "Staciakampio plotas" const int ILGIS = 100;
const int PLOTIS = 20;
int main() { const char* TEKSTAS = "Staciakampio plotas";

int plotas; int plotas;

plotas = ILGIS * PLOTIS; plotas = ILGIS * PLOTIS;


printf("%s %d\n", TEKSTAS, plotas); printf("%s %d\n", TEKSTAS, plotas);

return 0; return 0;
} }
Operatoriai
• Tai yra simbolis, kuris nurodo kompiliatoriui atlikti
vienus ar kitus veiksmus
• Visus C kalbos operatorius galima dalinti į šis dalis:
– Aritmetiniai operatoriai
– Palyginimo operatoriai
– Loginiai operatoriai
– Bitiniai operatoriai
– Priskyrimo operatoriai
– Kiti operatoriai
Aritmetiniai operatoriai
Operatorius Aprašymas Pavyzdys (A=10,B=5)
+ Sudeda du operandus A + B = 15
− Atima antrą iš pirmo A−B=5
* Sudaugina du operandus A * B = 50
/ Dalina pirmą iš antro A/B=2
% Liekanos dalinimas (randa liekaną) A%B=0
++ Sveiką skaičių padidina vienetu A++ = 11
-- Sveiką skaičių sumažina vienetu A-- = 9
Palyginimo operatoriai
Operatorius Aprašymas Pavyzdys (A=10,B=5)

== Tikrina ar du operandai lygūs, jei taip, (A == B) bus ne true.


gražina true
Tikrina ar du operandai yra nelygūs, jei
!= taip, gražina true (A != B) bus true.

> Tikrina ar pirmas operandas yra didesnis (A > B) bus true.


už antrą, jei taip, gražina true.
Tikrina ar pirmas operandaas yra
< (A < B) bus ne true.
mažesnis už antrą, jei taip, gražina true.
Tikrina ar pirmas operandas yra didesnis
>= (A >= B) bus true.
arba lygus už antrą, jei taip, gražina true.
<= Tikrina ar pirmas operandas yra mažesnis (A <= B) bus ne true.
arba lygus už antrą, jei taip, gražina true.
Loginiai operatoriai
Operatorius Aprašymas Pavyzdys (A=1,B=0)

&& Loginis IR (AND) operatorius. Grąžins (A && B) bus false.


true, jei abu operandai ne nuliniai
Loginis ARBA (OR) operatorius. Gražins
|| true, jei bent vienas operandas bus ne (A || B) bus true.
nulinis
Loginis NE (NOT) operatorius. Pakeis
! !(A && B) bus true.
esamą teiginį priešingu
Priskyrimo operatoriai
Operatorius Ką daro Pavyzdys
= Priskyrimas Reikšmės ar kintamojo priskyrimas
+= Sudėtis a+=b bus tas pats kas a=a+b
-= Atimtis a-=b bus tas pats kas a=a-b
*= Daugyba a*=b bus tas pats kas a=a*b
/= Dalyba a/=b bus tas pats kas a=a/b
%= Liekanos dalyba a%=b bus tas pats kas a=a%b
<<= Bitų postūmis į kairę a<<=b bus tas pats kas a=a<<b
>>= Bitų postūmis į dešinę a>>=b bus tas pats kas a=a>>b
&= Bitinė ir operacija a&=b bus tas pats kas a=a&b
^= Bitinė išskirtinio arba a^=b bus tas pats kas a=a^b
operacija
~= Bitinio neigimo operacija a~=b bus tas pats kas a=a~b
Sąlygų valdymas
• Kartais tam tikrą programos
kodą reikia vykdyti
priklausomai nuo tam tikrų
salygų, t.y. vykdyti arba ne;
• Pavyzdžiui jei failas sėkmingai
atidarytas, tai atlikti jo
skaitymo veiksmus, jei ne,
pranešti vartotojui apie klaidą
Sąlygų valdymas
• C kalboj sąlygų valdymui naudojamos
naudojamos šios konstrukcijos:
– if sakinys
– if ... else sakinys
– Įdėti if sakiniai
– switch sakinys
– Įdėti switch sakiniai
– ? : operatorius
If sakinys
if(logine israiska) {
/* kodas, vykdomas jei logine israiska yra true */
}

Pavyzdys

#include <stdio.h>

int main () {
int x = 5;

if( x < 10 ) {
printf("x maziau uz 10\n" );
}
printf("x reiksme= %d\n", x);
return 0;
}
If-else sakinys
if(logine israiska) {
/* kodas, vykdomas jei logine israiska yra true */
} else {
/* kodas, vykdomas jei logine israiska yra false */
}

#include <stdio.h>

int main () {
int x = 5;
if( x < 10 ) {
printf("x maziau uz 10\n" );
} else{
printf("x daugiau uz 10\n" );
}
printf("x reiksme= %d\n", x);

return 0;
}
if(logine israiska 1) {
/* Vykdomas kodas jei logine israiska 1 yra true */
}
else if(logine israiska 2) {
/* Vykdomas kodas jei logine israiska 2 yra true */
}
else if(logine israiska 3) {
/* Vykdomas kodas jei logine israiska 3 yra true */
}
else {
/* Vykdomas kodas jei nei viena aukstesne logine israiska nera true */
}
• Kad nereikėtų rašyti ilgų else if sakinių, galima
panaudoti switch
switch(kintamasis) {

case reiksme 1 :
//kodas, jei kintamasis lygus reiksmei 1
break;

case reiksme 2 :
//kodas, jei kintamasis lygus reiksmei 2
break;

/* galime tureti bet kiek case reiksmiu */


default :
//kodas vykdomas jei nei viena reiksme netiko
}
? : operatorius
• Israiska1? Israiska2: israiska3
int pazymys=8;
char* ivertinimas=pazymys>5 ?
“teigiamas”:”neigiamas”;

You might also like