Тегін сынақ сабағы: Java Developer
Осы курстың бірнеше нақты сабағын өтіңіз — тіркелудің қажеті жоқ.
Сабақ 1: Айнымалылар, деректер түрлері және операторлар
Java — қарапайым, объектіге бағытталған және өте тиімді бағдарламалау тілі. Оның негізгі мақсаттарының бірі — үйрену процесін жеңілдету және жылдамдату. Java-да бағдарлама жазу үшін негізгі кілт сөздерді есте сақтасаңыз жеткілікті, сонда сіздің кодыңыз дұрыс орындалады.
Осы тақырыпта біз Java-бағдарламасының негізгі құрылымымен, айнымалылармен, деректер түрлерімен, консольден деректер енгізумен және негізгі математикалық операторлармен танысамыз.
Java-дағы алғашқы бағдарлама
Java бағдарламасының алғашқы қарапайым мысалын қарастырайық:
public class Main {
public static void main(String[] args) {
int a = 10;
int b = 20;
System.out.println(a + b);
}
}
30Бұл кодты іске қосқанда, біз екі сан жасаймыз: 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 деп атасаңыз, код мынадай болады:
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() командасын қолданамыз.
public class Main {
public static void main(String[] args) {
System.out.println("Hello BITLAB");
}
}
Hello BITLABӘрбір өрнектің соңына үтірлі нүкте ; қоятынымызға назар аударыңыз. Ол өрнектің аяқталғанын білдіреді.
Айнымалылар және int түрі
Айнымалы — бұл мән сақталатын жады бөлігі. Java-да әрбір айнымалының өз деректер түрі болады.
Мысалы, бүтін сандарды сақтау үшін int түрі қолданылады. Int сөзі integer дегенді білдіреді, яғни бүтін сан.
public class Main {
public static void main(String[] args) {
int age = 22;
System.out.println(age);
}
}
22Бұл мысалда біз age атты айнымалы жасап, оған 22 санын сақтап, осы мәнді консольге шығардық.
double түрі
Java-да бөлшек сандарды сақтау үшін double түрі қолданылады.
public class Main {
public static void main(String[] args) {
double x = 3.4;
double y = 4.5;
double sum = x + y;
System.out.println("Result is: " + sum);
}
}
Result is: 7.9Бұл мысалда біз енді бүтін сандарды емес, бөлшек сандарды жасадық. Ол үшін double деректер түрін қолдандық.
Java-да int түрі арқылы бөлшек айнымалы жасауға болмайды:
int x = 3.4;
int y = 4.5;
Мұндай код қате шығарады, себебі int тек бүтін сандарды сақтайды. Бөлшек сандар үшін double қолдану керек.
Сондай-ақ, мына жолға назар аударыңыз: System.out.println("Result is: " + sum);. Мұнда біз мәтін мен санды + операторы арқылы біріктіреміз.
String түрі
Java-да мәтінді сақтау үшін String түрі қолданылады.
public class Main {
public static void main(String[] args) {
String name = "Ilyas";
String surname = "Zhuanyshev";
String city = "Almaty";
String sentence = "I am " + name + " " + surname + " from " + city;
System.out.println(sentence);
}
}
I am Ilyas Zhuanyshev from AlmatyБұл мысалда біз мәтіндік үш айнымалы жасаймыз: name, surname және city.
Java-да мәтін екі жақты тырнақшамен: " " басталып, аяқталуы керегіне назар аударыңыз.
Дұрысы: String name = "Ilyas";
Кейбір бастаушы әзірлеушілер жиі мынадай қате жібереді:
String name = Ilyas; // Былай болмайды!
String surname = Zhuanyshev; // Былай болмайды!
String city = Almaty; // Былай болмайды!
Мұндай код қате, себебі Java Ilyas, Zhuanyshev және Almaty деген сөздерді мәтін емес, айнымалылардың атаулары деп ойлайды.
Java-дағы негізгі деректер түрлері
Бүтін сандармен жұмыс істеу үшін:
byte— өте кіші бүтін санshort— қысқа бүтін санint— стандартты бүтін санlong— үлкен бүтін сан
Бөлшек сандармен жұмыс істеу үшін:
float— дәлдігі төменірек бөлшек санdouble— дәлдігі жоғарырақ бөлшек сан
Таңбалармен жұмыс істеу үшін:
char— бір таңба
Логикалық мәндер үшін:
boolean— true немесе false
Мәтінмен жұмыс істеу үшін:
String— мәтіндік деректер
Консольден деректер енгізу
Енді сұрақ туындайды: айнымалылардың мәнін әрдайым кодтың өзінде тікелей жариялау керек пе? Ал егер оларды өз қалауымызша енгізгіміз келсе ше?
Ол үшін Java-да дайын Scanner класы бар. Ол java.util кітапханасында орналасқан және консольден деректер оқуға мүмкіндік береді.
Екі бүтін санды қосқан алғашқы мысалымызды өзгертейік:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("Insert first number:");
int a = in.nextInt();
System.out.println("Insert second number:");
int b = in.nextInt();
System.out.println(a + b);
}
}
5
712Бағдарлама іске қосылғанда, консоль екі бүтін санды енгізуді талап етеді. Егер 5 және 7 енгізсек, 12 нәтижесін аламыз.
import java.util.Scanner; коды дайын Scanner класын импорттап жатқанымызды білдіреді.
Scanner in = new Scanner(System.in); коды консольден деректер оқитын Scanner нысанын жасайды.
in.nextInt() әдісі int түріндегі бүтін санды оқиды.
Бөлшек сандарды енгізу
Бөлшек сандарды да консольден өз қалауыңызша енгізуге болады. Ол үшін nextDouble() әдісі қолданылады.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("Insert first number:");
double x = in.nextDouble();
System.out.println("Insert second number:");
double y = in.nextDouble();
double sum = x + y;
System.out.println("Result is: " + sum);
}
}
2.2
4.5Result is: 6.7Бүтін сандарды енгізуден жалғыз айырмашылығы: in.nextInt() орнына in.nextDouble() деп жазамыз.
Жолдарды енгізу
Жолдарды, яғни мәтінді оқу үшін in.next() әдісін қолданамыз.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("Insert name:");
String name = in.next();
System.out.println("Insert surname:");
String surname = in.next();
System.out.println("Insert city:");
String city = in.next();
String sentence = "I am " + name + " " + surname + " from " + city;
System.out.println(sentence);
}
}
Aybek Serikov AktobeI am Aybek Serikov from Aktobenext() әдісі бір сөзді бос орынға дейін оқиды. Сондықтан атын, тегін және қаласын үш бөлек in.next() шақыруымен оқимыз.
Математикалық операторлар
Математикалық операторлар сандармен әрекеттер орындауға мүмкіндік береді. Олар есептерде, есептеулерде және алгоритмдерде жиі қолданылады.
Қосу (+)
int a = 10;
int b = 20;
int sum = a + b; // 30
Азайту (-)
int a = 20;
int b = 15;
int diff = a - b; // 5
Көбейту (*)
int a = 10;
int b = 5;
int result = a * b; // 50
Бөлу (/)
int a = 50;
int b = 5;
int div = a / b; // 10
Бөлуден қалған қалдық (%)
int a = 21;
int b = 6;
int rem = a % b; // 3
Негізгі есептеу тапсырмаларын шешу үшін алдымен осы операторлар жеткілікті.
% қалдық операторы
Сізде қалдық операторы туралы сұрақ туындаған болар. Бұл оператор екі санды бөлгендегі қалдықты қайтарады.
Мысалы, 30-ды 7-ге бөлсек, 7 саны 30-дың ішіне төрт рет сияды:
7 * 4 = 28
30 - 28 = 2
30 % 7 = 2
Мысалы, 40 % 5 нәтижесі 0 болады, себебі 40 саны 5-ке қалдықсыз бөлінеді.
% операторы көбінесе бір санның екінші санға қалдықсыз бөлінетінін, санның жұп немесе тақ екенін тексеру үшін немесе әрбір бірнеше қадам сайын әрекет орындау керек пе, соны анықтау үшін қолданылады.
Қазірше осы материал жеткілікті. Енді айнымалыларды, деректер түрлерін, Scanner-ді және математикалық операторларды бекіту үшін бірнеше тапсырма шығарып жаттығу ұсынылады.
Компанияның орташа айлық табысы
String companyName, int profit, double month) және компанияның атауы мен орташа айлық табысын консольге шығаратын программа жазыңыз.P&G
145900
8Company P&G earns 18237.5 dollars in a monthAirAstana
142854
5.8Company AirAstana earns 24630.0 dollars in a month-
Кіріс:
P&G, 145900, 8 -
Кіріс:
AirAstana, 142854, 5.8 -
Кіріс:
TechCorp, 100000, 4 -
Кіріс:
Kcell, 96000, 12 -
Кіріс:
Halyk, 45000, 9
Пайдаланушы деректерін шығару
Alibek
Maratov
19
KazakhstanName: Alibek
Surname: Maratov
Age: 19
Country: KazakhstanAigerim
Bekova
21
KazakhstanName: Aigerim
Surname: Bekova
Age: 21
Country: Kazakhstan-
Кіріс:
Alibek, Maratov, 19, Kazakhstan -
Кіріс:
Aigerim, Bekova, 21, Kazakhstan -
Кіріс:
John, Smith, 30, USA -
Кіріс:
Marat, Zhaksybekov, 17, Kazakhstan -
Кіріс:
Elena, Petrova, 25, Russia
Санның квадраты мен кубы
24
8636
216-
Кіріс:
2 -
Кіріс:
6 -
Кіріс:
3 -
Кіріс:
10 -
Кіріс:
-2
Формуланы есептеу
x енгізілетін программа жазыңыз. Осы x мәні үшін y = 3x² − 6x − 7 мәнін табыңыз.2-7538-
Кіріс:
2 -
Кіріс:
5 -
Кіріс:
1 -
Кіріс:
3 -
Кіріс:
4
Үш айнымалысы бар формула
x³ + 5xy − 6zy + z³ математикалық формуласының нәтижесін есептеп, консольге шығаратын программа жасаңыз. x, y, z айнымалылары консоль арқылы енгізіледі.1 2 323 3 8440-
Кіріс:
1 2 3 -
Кіріс:
3 3 8 -
Кіріс:
0 0 0 -
Кіріс:
2 1 1 -
Кіріс:
1 1 1
Сабақ 2: Шартты операторлар
Күнделікті өмірде біз шарттарды өте жиі қолданамыз. Мысалы, біз оянып, таңғы асты бастаймыз. Егер шәйнек қайнаса, оны өшіреміз. Егер әлі қайнамаса, қайнағанша күтеміз. Киінуді бастап, жұмысқа барамыз. Егер кешігіп жатсақ, такси шақырамыз; әйтпесе, асықпай, жаяу шамамен 25 минут жүреміз. Егер жұмыстан кейін ашыққан болсақ, кешкі асқа барамыз. Егер үйде тамақ болмаса, тапсырыс береміз. Осылай өмірімізде шарттар алгоритмін шексіз жаза беруге болады.
Бір сөзбен айтқанда, біз әрдайым жағдайға, яғни кіріс деректерге байланысты әрекет етіп, шешім қабылдаймыз. Дәл солай, бағдарламалауда да айнымалылар мен олардың мәндеріне байланысты әрекет шарттарын жасауға болады.
if шарттары
Мысалы, мен сан енгіземін. Егер бұл сан 10-нан үлкен болса, мен "YES" мәтінін шығарамын:
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");
}
}
20YES
Program ended5Program endedБұл код қалай жұмыс істейді?
Біріншіден, біз int a атты бүтін сан жасаймыз, оның мәнін консоль арқылы енгіземіз. Содан кейін әдеттегі > салыстыру операторы арқылы шартты тексереміз, яғни «үлкен».
if кілт сөзі «егер» дегенді білдіреді. Егер a > 10 болса, бағдарлама бұйра жақшалардың ішіндегі код блогына кіреді. Шарт дұрыс болмаса, бағдарлама бұл блокты өткізіп жіберіп, әрі қарай жалғасады.
Байқағаныңыздай, шартты тексеру әрдайым екі нәтиженің бірін береді: true — ақиқат, немесе false — жалған.
Бірнеше тексерісі бар шарттар
Сондай-ақ логикалық операторлар арқылы бірнеше салыстыру жасауға болады. Мысалы, біз сан енгіземіз, және егер бұл сан 10 мен 20 аралығында болса, шарт дұрыс болады. Логикалық ойлансақ, 10 мен 20 аралығындағы сан 20-дан кіші әрі бір мезгілде 10-нан үлкен болуы керек. Осы шарттардың бірі дұрыс болмаса, шарттың бәрі орындалмайды.
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");
}
}
Мысалдан көріп тұрғаныңыздай, біз қос амперсанд таңбасын — && қолданамыз. Бұл таңба логикалық «ЖӘНЕ» дегенді білдіреді.
Егер мен 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 болады |
Логикалық ЖӘНЕ операторы
Логикалық ЖӘНЕ (AND) мына принцип бойынша жұмыс істейді: барлық шарт дұрыс, яғни ақиқат болуы керек. Өмірден қарапайым мысал келтірейін. Мысалы, мен былай десем:
«Ильяс та, Айбек те, Елдар да, Анель де емтиханды өте жақсы тапсырды.»
Осы сөйлемде, аталған балалардың біреуі емтиханды өте жақсы тапсырмаса, менің сөйлемім дұрыс болмай қалады. Менің сөйлемім шын болуы үшін, бәрі де емтиханды өте жақсы тапсыруы керек. Бағдарламалауда да дәл солай.
Логикалық ЖӘНЕ (&&) операторын қолданғанда, барлық шарт дұрыс, яғни true болуы керек.
Логикалық НЕМЕСЕ операторы
Енді логикалық НЕМЕСЕ (OR) операторын қарастырайық. Java тілінде логикалық НЕМЕСЕ || таңбасымен белгіленеді. Логикалық НЕМЕСЕ мына принцип бойынша жұмыс істейді: шарттардың кем дегенде біреуі дұрыс болуы керек.
Мысалы, мен былай десем болады:
«Немесе Ильяс, немесе Айбек, немесе Елдар, немесе Анель емтиханды өте жақсы тапсырды.»
Бұл мысалда, ешкім емтиханды өте жақсы тапсыра алмаса, мен өтірік айтып тұрмын деген сөз. Яғни сөйлем шын болуы үшін, балалардың кем дегенде біреуі емтиханды өте жақсы тапсыруы керек.
Бағдарламалауда мынадай мысал келтіруге болады: біз сан енгіземіз, және егер ол 10-ға немесе 20-ға тең болса, бағдарлама "YES" сөзін шығарады.
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");
}
}
Бұл мысалда, біз 10 немесе 20 санын енгізсек, өрнек дұрыс болады, және бағдарлама "YES" сөзін шығарады. Енді біз ЖӘНЕ және НЕМЕСЕ операторларының қалай жұмыс істейтінін білеміз.
Логикалық ЕМЕС операторы
Енді келесі логикалық ЕМЕС (NOT) операторына көшейік. Бағдарламалауда ЕМЕС операторы қарапайым леп белгісімен — ! белгіленеді. ЕМЕС операторы true өрнегін false-ке немесе керісінше айналдырады:
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");
}
}
Бұл мысалда, 10-нан басқа кез келген санды енгізсек, бағдарлама "YES" сөзін шығарады. Мұнда біз санның 10 емес екенін тексеріп отырмыз.
if-else шарттары
Енді шарт дұрыс болмаған жағдайдағы әрекетті қарастыра аламыз. Мұны else кілт сөзі арқылы іске асыруға болады.
Мысалы, клубқа кіру үшін жасыңызды тексеретін бағдарлама жасайын. Егер жасыңыз 18-ге тең немесе одан үлкен болса, бағдарлама "You can enter" мәтінін, әйтпесе "Sorry, you can't" мәтінін шығарады.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("Insert your age:");
int age = in.nextInt();
if (age >= 18) {
System.out.println("You can enter");
} else {
System.out.println("Sorry, you can't");
}
}
}
if ішіндегі шарт дұрыс болса, бірінші блок орындалады. Шарт дұрыс болмаса, else блогы орындалады.
Осы кодты іске қосқанда, 25 санын енгізсек, бағдарлама "You can enter" мәтінін, әйтпесе "Sorry, you can't" мәтінін шығарады. Дәл else блогының арқасында бағдарламамыздың балама әрекеті болады.
else if шарттары
Мына жағдайды елестетіңіз: біз 1-ден 7-ге дейінгі санды, яғни апта күндерінің нөмірін енгіземіз. Егер мен 1 санын енгізсем, бағдарлама "Monday" мәтінін шығарады. Егер 2 болса — "Tuesday", 3 болса — "Wednesday" және осылай 7-ге дейін — "Sunday".
Ал егер апта күндерінің диапазонына кірмейтін санды, мысалы 15-ті енгізсек, бағдарлама "Error" мәтінін шығарады. Бұл тапсырма оңай емес, бірақ оны else if шарты арқылы оңай шешуге болады:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("Insert day of the week:");
int day = in.nextInt();
if (day == 1) {
System.out.println("Monday");
} else if (day == 2) {
System.out.println("Tuesday");
} else if (day == 3) {
System.out.println("Wednesday");
} else if (day == 4) {
System.out.println("Thursday");
} else if (day == 5) {
System.out.println("Friday");
} else if (day == 6) {
System.out.println("Saturday");
} else if (day == 7) {
System.out.println("Sunday");
} else {
System.out.println("Error");
}
}
}
Кодты іске қосқанда, 1-ден 7-ге дейінгі сандарды енгізсек, бағдарлама сәйкес апта күнін мәтін түрінде шығарады. Ал 1-7 аралығынан тыс санды енгізсек, нәтиже "Error" болады.
else if шарты мына принцип бойынша жұмыс істейді: біз әдеттегі if арқылы тексеру жасаймыз, ал шарт дұрыс болмаса, қайта тексереміз. Соңғы else ешбір нұсқа шартқа сай келмегенде іске қосылады.
Бұл өмірдегідей: сіз электроника дүкеніне үйге теледидар сатып алғыңыз келіп барасыз. Керегін таппайынша барлық нұсқаларды қарай бересіз. Егер сәйкес нұсқа таппасаңыз, басқа дүкенге барасыз немесе үйге қайтасыз.
Құттықтаймыз, енді сіз бағдарламалауда шарттардың қалай жұмыс істейтінін білесіз. Осы сәттен бастап сіз кіріс деректерге байланысты бірнеше нұсқада әрекет ететін бағдарламалар жасай аласыз.
Дәл 10-ға көп пе?
YES шығарыңыз, әйтпесе NO.20
10YES10
75NO-
Кіріс:
20, 10 -
Кіріс:
10, 75 -
Кіріс:
15, 5 -
Кіріс:
8, 8 -
Кіріс:
50, 30
Тең болмаса — қосынды
a және b бүтін сандары енгізілетін программа жазыңыз. Егер олардың мәні тең болмаса, қосындысын консольге шығарыңыз, әйтпесе жай ғана 0.10
203010
100-
Кіріс:
10, 20 -
Кіріс:
10, 10 -
Кіріс:
5, 15 -
Кіріс:
7, 3 -
Кіріс:
-10, 10
Қай мектеп?
Beginners School, 5-тен 9-ға дейін — Middle School, 10-нан 11-ге дейін — High School.2Beginners School10High School-
Кіріс:
2 -
Кіріс:
10 -
Кіріс:
1 -
Кіріс:
9 -
Кіріс:
11
Үш санда бірдей ме?
YES шығарыңыз, әйтпесе NO.15
15
15YES12
37
20NO-
Кіріс:
15, 15, 15 -
Кіріс:
12, 37, 20 -
Кіріс:
0, 0, 0 -
Кіріс:
5, 5, 6 -
Кіріс:
-3, -3, -3
Оң және жұп сан
YES шығаратын, әйтпесе NO шығаратын программа жасаңыз.12YES-5NO-
Кіріс:
12 -
Кіріс:
-5 -
Кіріс:
7 -
Кіріс:
0 -
Кіріс:
100
Сабақ 3: Циклдар: while және for
Бағдарламалауда бір әрекетті бірнеше рет орындау керек болатын жағдайлар өте жиі кездеседі. Мысалы, бір мәтінді көп рет шығару, бірнеше санды өңдеу, студенттер тізімін аралап шығу, шарт ақиқат болып тұрған кезде әрекетті қайталау.
Мұндай тапсырмалар үшін Java-да циклдар қолданылады. Цикл бір кодты қайта-қайта жазбауға, қайталануды бір рет сипаттауға мүмкіндік береді.
Циклдар неге керек?
Мына жағдайды елестетіңіз. Сіз белгілі бір сәтке дейін мезгіл-мезгіл қайталанатын процесті іске қосқыңыз келеді. Мысалы, "Hello BITLAB" сөзін 10 рет шығару.
Циклдарсыз бұл былай көрінер еді:
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");
}
}
Hello BITLAB
Hello BITLAB
Hello BITLAB
Hello BITLAB
Hello BITLAB
Hello BITLAB
Hello BITLAB
Hello BITLAB
Hello BITLAB
Hello BITLABМұндай код жұмыс істейді, бірақ ол ыңғайсыз. Ал енді осы мәтінді 100 рет шығарғымыз келді дейік. Қиынырақ, солай емес пе?
Бұл жағдайда сізге System.out.println("Hello BITLAB"); деп 100 рет жазуға тура келеді. Ал егер мәтінді өзгерткіміз келсе, оны көп жерде өзгертуге тура келеді.
Циклдардың басты идеясы: қайталанатын әрекетті бір рет жазып, Java-ға оны қанша рет немесе қай сәтке дейін қайталау керектігін көрсету.
Циклдармен бәрі өзгереді. Код қысқа, түсінікті және өзгертуге ыңғайлы болады.
while циклі
"Hello BITLAB" мәтінін 10 рет шығару тапсырмасын былай қысқартуға болады:
public class Main {
public static void main(String[] args) {
int i = 0;
while (i < 10) {
System.out.println("Hello BITLAB");
i = i + 1;
}
}
}
Hello BITLAB
Hello BITLAB
Hello BITLAB
Hello BITLAB
Hello BITLAB
Hello BITLAB
Hello BITLAB
Hello BITLAB
Hello BITLAB
Hello BITLABМұндағы мағынасы: 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-нан кіші емес. Осыдан кейін цикл аяқталады.
while туралы маңызды ескерту
while циклінде шартқа қатысатын айнымалыны өзгертуді ұмытпау өте маңызды.
Біздің мысалда бұл — мына жол:
i = i + 1;
Егер бұл жолды алып тастасаңыз, i мәні әрқашан 0 болып қалады. Сонда i < 10 шарты әрдайым дұрыс болады, және бағдарлама "Hello BITLAB" сөзін шексіз шығара береді.
Шексіз цикл — бұл цикл шарты әрдайым дұрыс болып қалатын және цикл ешқашан аяқталмайтын жағдай.
Сондықтан while-мен жұмыс істегенде цикл ішінде ерте ме, кеш пе шартты жалған ететін әрекет бар-жоғын әрдайым тексеріңіз.
for циклі
for циклі бағдарламалауда ең танымал және жиі қолданылатын циклдардың бірі. for құрылымы циклді басқарады және басқарушы логикалық өрнек жалған болғанша орындалады.
for циклінде алдымен инициализация орындалады, содан кейін шарт тексеріледі, одан кейін код блогы орындалады, содан соң итерация, яғни қадам жасалады.
public class Main {
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
System.out.println("Hello BITLAB");
}
}
}
Hello BITLAB
Hello BITLAB
Hello BITLAB
Hello BITLAB
Hello BITLAB
Hello BITLAB
Hello BITLAB
Hello BITLAB
Hello BITLAB
Hello BITLABБұл код while мысалымен дәл бірдей әрекет жасайды: "Hello BITLAB" сөзін 10 рет шығарады.
Бірақ for циклі ықшамырақ көрінеді, себебі инициализация, шарт және қадам бір жолға жазылған.
for циклінің құрылымы
for циклінің жалпы құрылымы мынадай:
for (инициализация; шарт; итерация) {
// for блогы
}
- Инициализация — бастапқы мән жасаймыз, мысалы
int i = 0 - Шарт — циклді жалғастыруға бола ма, соны тексереміз, мысалы
i < 10 - Итерация — әр қайталанудан кейін қадам жасаймыз, мысалы
i++
Біздің мысалда:
int i = 0;— 0-ден бастаймызi < 10;— i 10-нан кіші болғанша орындаймызi++— әр қадамнан кейін i-ді 1-ге арттырамыз
Код блогы шарт дұрыс болып тұрғанша орындала береді. Алдымен инициализация болады, содан кейін шарт тексеріледі, блок орындалады, содан соң итерация қадамы жасалады.
i++ және i = i + 1
while мысалында айнымалыны былай арттырдық:
i = i + 1;
for циклінде оны қысқаша жаздық:
i++;
Бұл екеуі бірдей нәрсе жасайды: i мәнін 1-ге арттырады. Сондықтан циклдерде i++ жиі қолданылады.
for-дегі айнымалының қолданылу аясы
for циклінің басқару айнымалысын циклдің өзінің ішінде жариялағанда, оның қолданылу аясы тек цикл денесімен шектелетінін есте сақтау керек.
Мысалы:
for (int i = 0; i < 10; i++) {
System.out.println("Hello BITLAB");
}
Бұл жағдайда i айнымалысы тек циклдің ішінде ғана өмір сүреді. Цикл шегінен тыс бұл айнымалы жоқ болады.
Ал басқару айнымалысын бағдарламаның басқа бөліктерінде қолдану қажет болса, оны алдын ала, for циклінен тыс жариялау керек.
public class Main {
public static void main(String[] args) {
int i;
for (i = 0; i < 10; i++) {
System.out.println("Hello BITLAB");
}
System.out.println("Loop finished");
}
}
Hello BITLAB
Hello BITLAB
Hello BITLAB
Hello BITLAB
Hello BITLAB
Hello BITLAB
Hello BITLAB
Hello BITLAB
Hello BITLAB
Hello BITLAB
Loop finishedЕгер айнымалы тек цикл үшін керек болса — оны for ішінде жариялаңыз. Егер ол циклден кейін де керек болса — оны алдын ала жариялаңыз.
while және for қашан қолданылады?
Екі цикл де ұқсас тапсырмаларды шеше алады, бірақ әдетте олар әртүрлі жағдайларда қолданылады.
while әрекетті қанша рет қайталау керектігі алдын ала әрдайым белгілі бола бермегенде ыңғайлы.
for қайталану саны алдын ала белгілі болғанда ыңғайлы, мысалы "Hello BITLAB" сөзін 10 рет шығару.
Оқудың басында әрекетті белгілі бір рет қайталау керек болғанда көбіне for қолданған ыңғайлы. Ал while қайталану шартқа байланысты болатын тапсырмаларға жақсы келеді.
Енді while және for циклдерін бекіту үшін бірнеше тапсырма шығарып жаттығу ұсынылады. Осы тақырыптан кейін сіз кодты артық көшірместен әрекеттерді көп рет қайталайтын бағдарламалар жаза аласыз.
n-ге дейін санау
n сұрайтын және 1-ден n-ге дейінгі барлық сандарды экранға шығаратын программа жазыңыз. Кеңес: сандарды бір жолға шығару үшін System.out.println() орнына System.out.print() қолдануға болады.51 2 3 4 5101 2 3 4 5 6 7 8 9 10-
Кіріс:
5 -
Кіріс:
10 -
Кіріс:
1 -
Кіріс:
7 -
Кіріс:
0
n-ден m-ге дейін санау
n және m сұрайтын және n-ден m-ге дейінгі барлық сандарды экранға шығаратын программа жазыңыз. Кеңес: сандарды бір жолға шығару үшін System.out.println() орнына System.out.print() қолдануға болады.5 105 6 7 8 9 102 92 3 4 5 6 7 8 9-
Кіріс:
5 10 -
Кіріс:
2 9 -
Кіріс:
1 3 -
Кіріс:
7 7 -
Кіріс:
4 1
n-ге дейінгі жұп сандар
n сұрайды және 0-ден n-ге дейінгі барлық ЖҰП сандарды экранға шығарады (жұп сан 2-ге қалдықсыз бөлінеді).60 2 4 6100 2 4 6 8 10-
Кіріс:
6 -
Кіріс:
10 -
Кіріс:
0 -
Кіріс:
1 -
Кіріс:
7
for арқылы факториал
n сұрайды және сол санның факториалын for циклін қолданып экранға шығарады.512001-
Кіріс:
5 -
Кіріс:
0 -
Кіріс:
1 -
Кіріс:
3 -
Кіріс:
6
n-ден m-ге дейінгі тақ сандар
n және m сұрайтын және n-ден m-ге дейінгі барлық ТАҚ сандарды экранға шығаратын программа жазыңыз.3 113 5 7 9 1110 2311 13 15 17 19 21 23-
Кіріс:
3 11 -
Кіріс:
10 23 -
Кіріс:
1 5 -
Кіріс:
6 6 -
Кіріс:
0 1
Сабақ 4: Массивтер
Бағдарламалауда жиі бір мән емес, бірден бір типтегі бірнеше мәнді сақтау керек болады. Мысалы, BITLAB ACADEMY-де бізде студенттер тобы болуы мүмкін, және әр студенттің емтихан нәтижесі бар.
Студенттер аз болса, бірнеше жеке айнымалы жасауға болады. Бірақ студенттер көп болса, мұндай тәсіл тез ыңғайсыз бола бастайды. Осындай тапсырмалар үшін Java тілінде массивтер қолданылады.
Массивсіз мәселе
Топтағы 5 студенттің емтихан нәтижелерін сақтап, олардың қосындысы мен орташа мәнін шығарғыңыз келетін жағдайды қарастырайық. Әдетте бағдарламаңызда double типті 5 айнымалы жасап, олармен жұмыс істей аласыз.
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);
}
}
Total score : 440.0
Average score : 88.0Мысалдан көріп тұрғаныңыздай, біз әр студенттің баллы үшін 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]-ке жүгінуге тырыссаңыз, программа қате шығарады, себебі массивте мұндай индексі бар элемент жоқ.
Массив иллюстрациясы
Программа жадында scores[] массиві қалай көрінетінін көрнекі түрде елестетейік:
| Индекс | Мән | Элемент |
|---|---|---|
| 0 | 100 | scores[0] |
| 1 | 90 | scores[1] |
| 2 | 95 | scores[2] |
| 3 | 80 | scores[3] |
| 4 | 75 | scores[4] |
Иллюстрацияда көрсетілгендей, scores массиві 5 элементтен тұрады. Әр элементтің өз индексі бар. Ең бастысы есте сақтау керек: Java тілінде массив индекстелуі әрқашан 0-ден басталады.
Бұл массивтің бірінші элементі — scores[0], ал осы мысалдағы соңғы элемент — scores[4] дегенді білдіреді.
Массив арқылы қосынды және орташа мән
Енді массивтің қосындысы мен орташа мәнін есептейтін программаны қарастырайық:
public class Main {
public static void main(String[] args) {
double scores[] = {100, 90, 95, 80, 75};
double total = 0;
for (int i = 0; i < scores.length; i++) {
total += scores[i];
}
double average = total / scores.length;
System.out.println("Total score : " + total);
System.out.println("Average score : " + average);
}
}
Total score : 440.0
Average score : 88.0Осы кодты талдап көрейік. Біріншіден, біз 5 элементтен тұратын массив жасаймыз:
double scores[] = {100, 90, 95, 80, 75};
Бірінші элементке қол жеткізу үшін scores[0] деп жазуымыз керек, себебі индекс әрқашан 0-ден басталады. Екінші элемент — scores[1] және т.б.
Массивтің соңғы элементін шығарғыңыз келсе, System.out.println(scores[4]); деп жазыңыз.
Массив бойынша цикл қалай жұмыс істейді?
Жоғарыдағы мысалда массивтің барлық элементтерін аралап шығу үшін for циклін қолданамыз.
for (int i = 0; i < scores.length; i++) {
total += scores[i];
}
Осы логика бойынша 0-ден бастап 5-ке дейін (қоспағанда) цикл жасаймыз. Яғни, біздің i әр итерацияда мына мәндерді қабылдайды: 0, 1, 2, 3, 4.
- i = 0 → scores[0] аламыз → 100
- i = 1 → scores[1] аламыз → 90
- i = 2 → scores[2] аламыз → 95
- i = 3 → scores[3] аламыз → 80
- i = 4 → scores[4] аламыз → 75
Массивтің ұзындығын анықтау үшін массивтің length параметрін қолданатынымызға назар аударыңыз.
scores.length массивтегі элементтер санын білдіреді. Біздің мысалда scores.length 5-ке тең.
Демек, біз әр элементті бастапқыда 0-ге тең total айнымалысына қосамыз.
Мына жазба:
total += scores[i];
мынамен бірдей:
total = total + scores[i];
Ал соңында, қосындыны элементтер санына бөліп, орташа мәнді аламыз.
Массивтердің артықшылықтары
Массивтерді қолдану бірнеше артықшылық береді:
- Кодты оңтайландыру, яғни қайталанатын кодтың азаюы
- Индекс арқылы элементтерге еркін қол жеткізу
- Деректерді қарауға ыңғайлылық
- Бір типтегі көп мөлшердегі деректерді басқарудың жеңілдігі
- Деректерді сұрыптау және қосымша есептеулер жүргізудің жеңілдігі
Біздің жағдайда массив студенттердің нәтижелерін ыңғайлы сақтауға, оларды циклмен аралауға, қосынды мен орташа мәнді санауға және қажет болса басқа әрекеттерді орындауға мүмкіндік береді.
Массивті алдын ала жариялау
Массивті кез келген айнымалы сияқты алдын ала жариялап, кейінірек толтыруға болады:
double scores[] = new double[5];
Бұл мысалда біз 5 double типті мән сақтай алатын scores массивін жасаймыз.
Элементтерді кейінірек әр индекске жүгіну арқылы бере аласыз:
double scores[] = new double[5];
scores[0] = 100;
scores[1] = 95;
scores[2] = 90;
scores[3] = 80;
scores[4] = 75;
Мұндай тәсіл массивтің өлшемін алдын ала білгенде, ал мәндерді кейінірек толтырғыңыз келгенде ыңғайлы.
Массивті консольден толтыру
Массивтің өлшемін жариялап, элементтерді консольден қолмен енгізуге болады. Яғни, өлшемді өзіңіз енгізіп, сол өлшемдегі массив жасайсыз.
Төмендегі мысалды қарастырайық:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int size = in.nextInt();
double scores[] = new double[size];
for (int i = 0; i < scores.length; i++) {
scores[i] = in.nextDouble();
}
double total = 0;
for (int i = 0; i < scores.length; i++) {
total += scores[i];
}
double average = total / size;
System.out.println("Total score : " + total);
System.out.println("Average score : " + average);
}
}
5
100 90 95 80 75Total score : 440.0
Average score : 88.0Біз size санын жасап, оның мәнін консольден береміз. Содан кейін size өлшеміндегі массив жариялаймыз.
Цикл көмегімен массивтің әр мәнін ретімен беріп, оны толтырамыз. Ал соңында барлық элементтердің қосындысы мен орташа мәнін де есептейміз.
Мұндай нұсқа әлдеқайда икемді. Енді программа тек 5 студентпен емес, консольге енгізетін кез келген студент санымен жұмыс істей алады.
Қорытынды
- Массив бір типтегі бірнеше мәнді сақтайды.
- Массив индекстері 0-ден басталады.
- Массивтің ұзындығы array.length арқылы қолжетімді.
- Массивтің барлық элементтерін аралап шығу үшін for циклін қолдану ыңғайлы.
- Массив көптеген жеке айнымалыны қолмен жасамауға көмектеседі.
Осы тақырыптан кейін сіз бір типтегі бірнеше мәнді бір айнымалыда сақтап, оларды цикл арқылы өңдей аласыз.
Тек оң сандар
n санын сұрайды. Содан кейін n сан енгіземіз және енгізілген барлық сандарды массивке сақтаймыз. Соңында тек оң элементтерді шығарыңыз.10
6 19 26 -3 46 8 5 -65 90 256 19 26 46 8 5 90 2510
1 2 -3 4 5 -6 7 8 -9 101 2 4 5 7 8 10-
Кіріс:
10, 6 19 26 -3 46 8 5 -65 90 25 -
Кіріс:
10, 1 2 -3 4 5 -6 7 8 -9 10 -
Кіріс:
5, -1 -2 -3 -4 -5 -
Кіріс:
4, 0 5 -5 10 -
Кіріс:
3, 100 -100 50
Массивтегі жұп сандар
n санын сұрайды. Содан кейін n сан енгіземіз және енгізілген барлық сандарды массивке сақтаймыз. Осы массивте бар барлық жұп сандарды шығарыңыз.8
3 8 2 4 6 9 12 158 2 4 6 129
6 0 -3 4 8 0 -6 9 56 0 4 8 0 -6-
Кіріс:
8, 3 8 2 4 6 9 12 15 -
Кіріс:
9, 6 0 -3 4 8 0 -6 9 5 -
Кіріс:
5, 1 3 5 7 9 -
Кіріс:
6, -2 -4 -6 1 3 5 -
Кіріс:
1, 0
Массив элементтерінің квадраттары
n санын сұрайды. Содан кейін n сан енгіземіз және енгізілген барлық сандарды массивке сақтаймыз. Соңында енгізілген барлық сандардың квадраттарын шығарыңыз.6
1 2 3 4 5 61 4 9 16 25 3610
1 2 3 4 5 6 7 8 9 101 4 9 16 25 36 49 64 81 100-
Кіріс:
6, 1 2 3 4 5 6 -
Кіріс:
10, 1 2 3 4 5 6 7 8 9 10 -
Кіріс:
3, -1 -2 -3 -
Кіріс:
1, 0 -
Кіріс:
4, 10 -10 5 -5
Индекстері жұп элементтер
n берілген. Екінші жолда енгізілген n бүтін саннан тұратын массив жасаңыз және цикл көмегімен индекстері жұп барлық элементтерді шығарыңыз.8
-4 9 2 -5 8 7 -11 16-4 2 8 -1110
1 2 3 4 5 6 7 8 9 101 3 5 7 9-
Кіріс:
8, -4 9 2 -5 8 7 -11 16 -
Кіріс:
10, 1 2 3 4 5 6 7 8 9 10 -
Кіріс:
1, 5 -
Кіріс:
2, 7 8 -
Кіріс:
5, 10 20 30 40 50
Индекстері тақ элементтер
n берілген. Екінші жолда енгізілген n бүтін саннан тұратын массив жасаңыз және цикл көмегімен индекстері тақ барлық элементтерді шығарыңыз.8
-4 9 2 -5 8 7 -11 169 -5 7 1610
1 2 3 4 5 6 7 8 9 102 4 6 8 10-
Кіріс:
8, -4 9 2 -5 8 7 -11 16 -
Кіріс:
10, 1 2 3 4 5 6 7 8 9 10 -
Кіріс:
1, 5 -
Кіріс:
2, 7 8 -
Кіріс:
5, 10 20 30 40 50