← Курсқа оралу

Тегін сынақ сабағы: Java Developer

Осы курстың бірнеше нақты сабағын өтіңіз — тіркелудің қажеті жоқ.

01

Сабақ 1: Айнымалылар, деректер түрлері және операторлар

Java — қарапайым, объектіге бағытталған және өте тиімді бағдарламалау тілі. Оның негізгі мақсаттарының бірі — үйрену процесін жеңілдету және жылдамдату. Java-да бағдарлама жазу үшін негізгі кілт сөздерді есте сақтасаңыз жеткілікті, сонда сіздің кодыңыз дұрыс орындалады.

Осы тақырыпта біз Java-бағдарламасының негізгі құрылымымен, айнымалылармен, деректер түрлерімен, консольден деректер енгізумен және негізгі математикалық операторлармен танысамыз.

Java-дағы алғашқы бағдарлама

Java бағдарламасының алғашқы қарапайым мысалын қарастырайық:

Main.java
public class Main {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        System.out.println(a + b);
    }
}
Output:30
JAVA
Нәтиже

Бұл кодты іске қосқанда, біз екі сан жасаймыз: a және b. a айнымалысы 10-ға, ал b айнымалысы 20-ға тең. Содан кейін олардың қосындысын шығарамыз:

a + b = 10 + 20 = 30

System.out.println(a + b); командасы нәтижені консольге шығарады.

Java-бағдарламасының құрылымы

Жоғарыда жазған бағдарламамызды талдасақ, ол public class Main деген кілт сөздерден басталатынын көреміз.

Бұл біз Main атты класс құрып жатырмыз дегенді білдіреді. Класстың атауы бастапқы код файлының атауымен дәл бірдей болуы керек.

Егер файл Main.java деп аталса, класс Main деп аталуы керек. Егер файл Hello.java деп аталса, класс Hello деп аталуы керек.

Мысалы, файлды Hello.java деп атасаңыз, код мынадай болады:

Hello.java
public class Hello {
    public static void main(String[] args) {
        ...
    }
}

Одан әрі бізде { } бұйра жақшалар бар. Олар код блогын ашады және жабады. Java-да әрбір ашылған жақшаның жабылғанына көз жеткізу өте маңызды.

Класстың ішінде бағдарламаның негізгі әдісін жасаймыз: public static void main(String[] args). Java-бағдарламасының орындалуы дәл осы әдістен басталады.

Негізгі құрылым:

public class Main {
    public static void main(String[] args) {

        // Бағдарлама алгоритмі осы жерге жазылады

    }
}

Әдістер тақырыбын кейінірек қарастырамыз. Қазірше ең маңыздысы: кез келген Java-бағдарламасы main әдісінен басталады.

Мәтінді консольге шығару

Деректерді консольге шығару үшін System.out.println() командасын қолданамыз.

Main.java
public class Main {
    public static void main(String[] args) {
        System.out.println("Hello BITLAB");
    }
}
Output:Hello BITLAB
JAVA
Нәтиже

Әрбір өрнектің соңына үтірлі нүкте ; қоятынымызға назар аударыңыз. Ол өрнектің аяқталғанын білдіреді.

02

Сабақ 2: Шартты операторлар

Күнделікті өмірде біз шарттарды өте жиі қолданамыз. Мысалы, біз оянып, таңғы асты бастаймыз. Егер шәйнек қайнаса, оны өшіреміз. Егер әлі қайнамаса, қайнағанша күтеміз. Киінуді бастап, жұмысқа барамыз. Егер кешігіп жатсақ, такси шақырамыз; әйтпесе, асықпай, жаяу шамамен 25 минут жүреміз. Егер жұмыстан кейін ашыққан болсақ, кешкі асқа барамыз. Егер үйде тамақ болмаса, тапсырыс береміз. Осылай өмірімізде шарттар алгоритмін шексіз жаза беруге болады.

Бір сөзбен айтқанда, біз әрдайым жағдайға, яғни кіріс деректерге байланысты әрекет етіп, шешім қабылдаймыз. Дәл солай, бағдарламалауда да айнымалылар мен олардың мәндеріне байланысты әрекет шарттарын жасауға болады.

if шарттары

Мысалы, мен сан енгіземін. Егер бұл сан 10-нан үлкен болса, мен "YES" мәтінін шығарамын:

Main.java
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);

        System.out.println("Insert number:");
        int a = in.nextInt();

        if (a > 10) {
            System.out.println("YES");
        }

        System.out.println("Program ended");
    }
}
Input:20
Output:YES Program ended
Input:5
Output:Program ended
JAVA
Нәтиже

Бұл код қалай жұмыс істейді?

Біріншіден, біз int a атты бүтін сан жасаймыз, оның мәнін консоль арқылы енгіземіз. Содан кейін әдеттегі > салыстыру операторы арқылы шартты тексереміз, яғни «үлкен».

if кілт сөзі «егер» дегенді білдіреді. Егер a > 10 болса, бағдарлама бұйра жақшалардың ішіндегі код блогына кіреді. Шарт дұрыс болмаса, бағдарлама бұл блокты өткізіп жіберіп, әрі қарай жалғасады.

Байқағаныңыздай, шартты тексеру әрдайым екі нәтиженің бірін береді: true — ақиқат, немесе false — жалған.

Бірнеше тексерісі бар шарттар

Сондай-ақ логикалық операторлар арқылы бірнеше салыстыру жасауға болады. Мысалы, біз сан енгіземіз, және егер бұл сан 10 мен 20 аралығында болса, шарт дұрыс болады. Логикалық ойлансақ, 10 мен 20 аралығындағы сан 20-дан кіші әрі бір мезгілде 10-нан үлкен болуы керек. Осы шарттардың бірі дұрыс болмаса, шарттың бәрі орындалмайды.

Main.java
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);

        System.out.println("Insert number:");
        int a = in.nextInt();

        if (a > 10 && a < 20) {
            System.out.println("YES");
        }

        System.out.println("Program ended");
    }
}
JAVA
Нәтиже

Мысалдан көріп тұрғаныңыздай, біз қос амперсанд таңбасын — && қолданамыз. Бұл таңба логикалық «ЖӘНЕ» дегенді білдіреді.

Егер мен 15 санын енгізсем, ол 10 мен 20 аралығында болады, себебі 15 саны 20-дан кіші әрі 10-нан үлкен. Ал егер мен 25 санын енгізсем, «10-нан үлкен» шарты true береді, бірақ «20-дан кіші» шарты false береді, себебі 25 саны 20-дан кіші емес. Сондықтан 25 санын енгізсем, шарт блогынан өтіп кетемін.

Төменде логикалық операторлардың кестесі, түсіндірмелерімен берілген:

Оператор Сипаттамасы Мысал
&& Логикалық ЖӘНЕ 10 > 5 && 20 <= 40 нәтижесі TRUE болады
|| Логикалық НЕМЕСЕ 5 == 3 || 30 < 20 нәтижесі FALSE болады
! Логикалық ЕМЕС 5 != 5 нәтижесі FALSE болады
03

Сабақ 3: Циклдар: while және for

Бағдарламалауда бір әрекетті бірнеше рет орындау керек болатын жағдайлар өте жиі кездеседі. Мысалы, бір мәтінді көп рет шығару, бірнеше санды өңдеу, студенттер тізімін аралап шығу, шарт ақиқат болып тұрған кезде әрекетті қайталау.

Мұндай тапсырмалар үшін Java-да циклдар қолданылады. Цикл бір кодты қайта-қайта жазбауға, қайталануды бір рет сипаттауға мүмкіндік береді.

Циклдар неге керек?

Мына жағдайды елестетіңіз. Сіз белгілі бір сәтке дейін мезгіл-мезгіл қайталанатын процесті іске қосқыңыз келеді. Мысалы, "Hello BITLAB" сөзін 10 рет шығару.

Циклдарсыз бұл былай көрінер еді:

Main.java
public class Main {
    public static void main(String[] args) {
        System.out.println("Hello BITLAB");
        System.out.println("Hello BITLAB");
        System.out.println("Hello BITLAB");
        System.out.println("Hello BITLAB");
        System.out.println("Hello BITLAB");
        System.out.println("Hello BITLAB");
        System.out.println("Hello BITLAB");
        System.out.println("Hello BITLAB");
        System.out.println("Hello BITLAB");
        System.out.println("Hello BITLAB");
    }
}
Output:Hello BITLAB Hello BITLAB Hello BITLAB Hello BITLAB Hello BITLAB Hello BITLAB Hello BITLAB Hello BITLAB Hello BITLAB Hello BITLAB
JAVA
Нәтиже

Мұндай код жұмыс істейді, бірақ ол ыңғайсыз. Ал енді осы мәтінді 100 рет шығарғымыз келді дейік. Қиынырақ, солай емес пе?

Бұл жағдайда сізге System.out.println("Hello BITLAB"); деп 100 рет жазуға тура келеді. Ал егер мәтінді өзгерткіміз келсе, оны көп жерде өзгертуге тура келеді.

Циклдардың басты идеясы: қайталанатын әрекетті бір рет жазып, Java-ға оны қанша рет немесе қай сәтке дейін қайталау керектігін көрсету.

Циклдармен бәрі өзгереді. Код қысқа, түсінікті және өзгертуге ыңғайлы болады.

while циклі

"Hello BITLAB" мәтінін 10 рет шығару тапсырмасын былай қысқартуға болады:

Main.java
public class Main {
    public static void main(String[] args) {
        int i = 0;

        while (i < 10) {
            System.out.println("Hello BITLAB");
            i = i + 1;
        }
    }
}
Output:Hello BITLAB Hello BITLAB Hello BITLAB Hello BITLAB Hello BITLAB Hello BITLAB Hello BITLAB Hello BITLAB Hello BITLAB Hello BITLAB
JAVA
Нәтиже

Мұндағы мағынасы: while циклі әдеттегі if шарты сияқты тексеру жасайды.

Шарт дұрыс болса, код блогы орындалады. Шарт дұрыс болмаса, код блогы өткізіп жіберіледі. while циклінің басты айырмашылығы — блок орындалғаннан кейін ол қайтадан шартты тексеруге оралады.

while циклі былай оқылады: шарт дұрыс болғанша — осы код блогын орында.

Осылайша, while циклі i < 10 шарты дұрыс болып тұрғанша жұмыс істей береді.

while қадам сайын қалай жұмыс істейді?

Циклді толығырақ талдап көрейік. Мысалымызда i айнымалысы бар. Ол қайталану санын санау үшін керек.

  • int i = 0; айнымалысын жасаймыз
  • i < 10 шартын тексереміз
  • Шарт дұрыс болса, "Hello BITLAB" шығарамыз
  • i-ді 1-ге арттырамыз
  • Қайтадан шартты тексеруге ораламыз

Әр қадамда i айнымалысының мәні артады:

i = 0 → i = 1 → i = 2 → i = 3 → ... → i = 10

i саны 10-ға тең болғанда, i < 10 шарты жалған болады, себебі 10 енді 10-нан кіші емес. Осыдан кейін цикл аяқталады.

04

Сабақ 4: Массивтер

Бағдарламалауда жиі бір мән емес, бірден бір типтегі бірнеше мәнді сақтау керек болады. Мысалы, BITLAB ACADEMY-де бізде студенттер тобы болуы мүмкін, және әр студенттің емтихан нәтижесі бар.

Студенттер аз болса, бірнеше жеке айнымалы жасауға болады. Бірақ студенттер көп болса, мұндай тәсіл тез ыңғайсыз бола бастайды. Осындай тапсырмалар үшін Java тілінде массивтер қолданылады.

Массивсіз мәселе

Топтағы 5 студенттің емтихан нәтижелерін сақтап, олардың қосындысы мен орташа мәнін шығарғыңыз келетін жағдайды қарастырайық. Әдетте бағдарламаңызда double типті 5 айнымалы жасап, олармен жұмыс істей аласыз.

Main.java
public class Main {
    public static void main(String[] args) {
        double sc1 = 100;
        double sc2 = 90;
        double sc3 = 95;
        double sc4 = 80;
        double sc5 = 75;

        double total = sc1 + sc2 + sc3 + sc4 + sc5;
        double average = total / 5;

        System.out.println("Total score : " + total);
        System.out.println("Average score : " + average);
    }
}
Output:Total score : 440.0 Average score : 88.0
JAVA
Нәтиже

Мысалдан көріп тұрғаныңыздай, біз әр студенттің баллы үшін 5 double айнымалысын жасадық және қосындысы мен орташа мәнін есептедік.

Бірақ бұл өте тиімсіз, себебі мұндай тәсіл статикалық. Егер маған кенеттен тағы 5 студент қосу керек десе, оларға үнемі жеке айнымалы жасай беру ақымақтық болар еді.

Ал егер топта 5 студент емес, 100 студент болса ше? Онда sc1, sc2, sc3 және т.б. айнымалыларды қолмен жасау өте ыңғайсыз болады.

Мұндай мәселелерді шешу үшін бізге студенттердің баллдары туралы деректерді бір құрылымда сақтау керек. Міне, осы жерде бізге массивтер ойымызға келеді.

Массив дегеніміз не?

Массив — жадыда бірінен соң бірі орналасқан компоненттер, яғни массив элементтерінің жиынтығы түріндегі деректер типі немесе құрылымы.

Бұл ретте массивтің жеке элементтеріне қол жеткізу индекстеу арқылы, яғни қажетті элементтің нөмірін, немесе индексін көрсете отырып, массивке сілтеме жасау арқылы жүзеге асады.

Java тілінде массив бір типтегі көп мөлшердегі деректермен жұмыс істеу үшін ыңғайлы. Мысалы, барлық мәндер студенттердің бағалары болса, оларды double типті бір массивте сақтай аламыз.

Бір сөзбен айтқанда, айнымалы — бір орындық мотоцикл болса, массив — бір автобус, оған көптеген айнымалыны, яғни жолаушыларды сыйғызуға болады.

Мысалымызға қайта оралсақ, студенттеріміздің баллдары бар массив жасадық деп елестетейік:

double scores[] = {100, 90, 95, 80, 75};

Енді барлық 5 нәтиже жеке айнымалыларда емес, scores деп аталатын бір массивтің ішінде орналасқан.

Массив ішінде қалай көрінеді?

Массивтің әр элементінің индекс деп аталатын өз нөмірі бар. Ең маңызды ереже: Java тілінде массив индекстері 0-ден басталады.

  • scores[0] = 100
  • scores[1] = 90
  • scores[2] = 95
  • scores[3] = 80
  • scores[4] = 75

Демек, массивте 5 элемент болса, индекстер 1-ден 5-ке дейін емес, 0-ден 4-ке дейін болады.

Массивтің бірінші элементі — scores[0]. 5 элементтен тұратын массивтің соңғы элементі — scores[4].

Егер scores[5]-ке жүгінуге тырыссаңыз, программа қате шығарады, себебі массивте мұндай индексі бар элемент жоқ.